PageSourceSearch

https://yano.ai/assets/application-8d58e5a4.js

js yano.ai collected 2026-10-05 14:47:42 UTC 2,498,122 bytes, 50,654 lines download raw bytes

1var __create = Object.create;
2var __defProp = Object.defineProperty;
3var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4var __getOwnPropNames = Object.getOwnPropertyNames;
5var __getProtoOf = Object.getPrototypeOf;
6var __hasOwnProp = Object.prototype.hasOwnProperty;
7var __esm = (fn3, res) => function __init() {
8  return fn3 && (res = (0, fn3[__getOwnPropNames(fn3)[0]])(fn3 = 0)), res;
9};
10var __commonJS = (cb, mod) => function __require() {
11  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
12};
13var __export = (target, all) => {
14  for (var name in all)
15    __defProp(target, name, { get: all[name], enumerable: true });
16};
17var __copyProps = (to3, from, except, desc) => {
18  if (from && typeof from === "object" || typeof from === "function") {
19    for (let key of __getOwnPropNames(from))
20      if (!__hasOwnProp.call(to3, key) && key !== except)
21        __defProp(to3, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
22  }
23  return to3;
24};
25var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
26  // If the importer is in node compatibility mode or this is not an ESM
27  // file that has been converted to a CommonJS file using a Babel-
28  // compatible transform (i.e. "__esModule" has not been set), then set
29  // "default" to the CommonJS "module.exports" for node compatibility.
30  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
31  mod
32));
33
vendor: 334 bytes, lines 34-44
34// node_modules/@rails/actioncable/src/adapters.js
35var adapters_default;
36var init_adapters = __esm({
37  "node_modules/@rails/actioncable/src/adapters.js"() {
38    adapters_default = {
39      logger: typeof console !== "undefined" ? console : void 0,
40      WebSocket: typeof WebSocket !== "undefined" ? WebSocket : void 0
41    };
42  }
43});
44
vendor: 386 bytes, lines 45-60
45// node_modules/@rails/actioncable/src/logger.js
46var logger_default;
47var init_logger = __esm({
48  "node_modules/@rails/actioncable/src/logger.js"() {
49    init_adapters();
50    logger_default = {
51      log(...messages) {
52        if (this.enabled) {
53          messages.push(Date.now());
54          adapters_default.logger.log("[ActionCable]", ...messages);
55        }
56      }
57    };
58  }
59});
60
vendor: 4,101 bytes, lines 61-170
61// node_modules/@rails/actioncable/src/connection_monitor.js
62var now, secondsSince, ConnectionMonitor, connection_monitor_default;
63var init_connection_monitor = __esm({
64  "node_modules/@rails/actioncable/src/connection_monitor.js"() {
65    init_logger();
66    now = () => (/* @__PURE__ */ new Date()).getTime();
67    secondsSince = (time) => (now() - time) / 1e3;
68    ConnectionMonitor = class {
69      constructor(connection) {
70        this.visibilityDidChange = this.visibilityDidChange.bind(this);
71        this.connection = connection;
72        this.reconnectAttempts = 0;
73      }
74      start() {
75        if (!this.isRunning()) {
76          this.startedAt = now();
77          delete this.stoppedAt;
78          this.startPolling();
79          addEventListener("visibilitychange", this.visibilityDidChange);
80          logger_default.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`);
81        }
82      }
83      stop() {
84        if (this.isRunning()) {
85          this.stoppedAt = now();
86          this.stopPolling();
87          removeEventListener("visibilitychange", this.visibilityDidChange);
88          logger_default.log("ConnectionMonitor stopped");
89        }
90      }
91      isRunning() {
92        return this.startedAt && !this.stoppedAt;
93      }
94      recordMessage() {
95        this.pingedAt = now();
96      }
97      recordConnect() {
98        this.reconnectAttempts = 0;
99        delete this.disconnectedAt;
100        logger_default.log("ConnectionMonitor recorded connect");
101      }
102      recordDisconnect() {
103        this.disconnectedAt = now();
104        logger_default.log("ConnectionMonitor recorded disconnect");
105      }
106      // Private
107      startPolling() {
108        this.stopPolling();
109        this.poll();
110      }
111      stopPolling() {
112        clearTimeout(this.pollTimeout);
113      }
114      poll() {
115        this.pollTimeout = setTimeout(
116          () => {
117            this.reconnectIfStale();
118            this.poll();
119          },
120          this.getPollInterval()
121        );
122      }
123      getPollInterval() {
124        const { staleThreshold, reconnectionBackoffRate } = this.constructor;
125        const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));
126        const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate;
127        const jitter = jitterMax * Math.random();
128        return staleThreshold * 1e3 * backoff * (1 + jitter);
129      }
130      reconnectIfStale() {
131        if (this.connectionIsStale()) {
132          logger_default.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`);
133          this.reconnectAttempts++;
134          if (this.disconnectedRecently()) {
135            logger_default.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`);
136          } else {
137            logger_default.log("ConnectionMonitor reopening");
138            this.connection.reopen();
139          }
140        }
141      }
142      get refreshedAt() {
143        return this.pingedAt ? this.pingedAt : this.startedAt;
144      }
145      connectionIsStale() {
146        return secondsSince(this.refreshedAt) > this.constructor.staleThreshold;
147      }
148      disconnectedRecently() {
149        return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;
150      }
151      visibilityDidChange() {
152        if (document.visibilityState === "visible") {
153          setTimeout(
154            () => {
155              if (this.connectionIsStale() || !this.connection.isOpen()) {
156                logger_default.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`);
157                this.connection.reopen();
158              }
159            },
160            200
161          );
162        }
163      }
164    };
165    ConnectionMonitor.staleThreshold = 6;
166    ConnectionMonitor.reconnectionBackoffRate = 0.15;
167    connection_monitor_default = ConnectionMonitor;
168  }
169});
170
vendor: 741 bytes, lines 171-197
171// node_modules/@rails/actioncable/src/internal.js
172var internal_default;
173var init_internal = __esm({
174  "node_modules/@rails/actioncable/src/internal.js"() {
175    internal_default = {
176      "message_types": {
177        "welcome": "welcome",
178        "disconnect": "disconnect",
179        "ping": "ping",
180        "confirmation": "confirm_subscription",
181        "rejection": "reject_subscription"
182      },
183      "disconnect_reasons": {
184        "unauthorized": "unauthorized",
185        "invalid_request": "invalid_request",
186        "server_restart": "server_restart",
187        "remote": "remote"
188      },
189      "default_mount_path": "/cable",
190      "protocols": [
191        "actioncable-v1-json",
192        "actioncable-unsupported"
193      ]
194    };
195  }
196});
197
vendor: 5,887 bytes, lines 198-366
198// node_modules/@rails/actioncable/src/connection.js
199var message_types, protocols, supportedProtocols, indexOf, Connection, connection_default;
200var init_connection = __esm({
201  "node_modules/@rails/actioncable/src/connection.js"() {
202    init_adapters();
203    init_connection_monitor();
204    init_internal();
205    init_logger();
206    ({ message_types, protocols } = internal_default);
207    supportedProtocols = protocols.slice(0, protocols.length - 1);
208    indexOf = [].indexOf;
209    Connection = class {
210      constructor(consumer2) {
211        this.open = this.open.bind(this);
212        this.consumer = consumer2;
213        this.subscriptions = this.consumer.subscriptions;
214        this.monitor = new connection_monitor_default(this);
215        this.disconnected = true;
216      }
217      send(data) {
218        if (this.isOpen()) {
219          this.webSocket.send(JSON.stringify(data));
220          return true;
221        } else {
222          return false;
223        }
224      }
225      open() {
226        if (this.isActive()) {
227          logger_default.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`);
228          return false;
229        } else {
230          const socketProtocols = [...protocols, ...this.consumer.subprotocols || []];
231          logger_default.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${socketProtocols}`);
232          if (this.webSocket) {
233            this.uninstallEventHandlers();
234          }
235          this.webSocket = new adapters_default.WebSocket(this.consumer.url, socketProtocols);
236          this.installEventHandlers();
237          this.monitor.start();
238          return true;
239        }
240      }
241      close({ allowReconnect } = { allowReconnect: true }) {
242        if (!allowReconnect) {
243          this.monitor.stop();
244        }
245        if (this.isOpen()) {
246          return this.webSocket.close();
247        }
248      }
249      reopen() {
250        logger_default.log(`Reopening WebSocket, current state is ${this.getState()}`);
251        if (this.isActive()) {
252          try {
253            return this.close();
254          } catch (error2) {
255            logger_default.log("Failed to reopen WebSocket", error2);
256          } finally {
257            logger_default.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`);
258            setTimeout(this.open, this.constructor.reopenDelay);
259          }
260        } else {
261          return this.open();
262        }
263      }
264      getProtocol() {
265        if (this.webSocket) {
266          return this.webSocket.protocol;
267        }
268      }
269      isOpen() {
270        return this.isState("open");
271      }
272      isActive() {
273        return this.isState("open", "connecting");
274      }
275      triedToReconnect() {
276        return this.monitor.reconnectAttempts > 0;
277      }
278      // Private
279      isProtocolSupported() {
280        return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;
281      }
282      isState(...states) {
283        return indexOf.call(states, this.getState()) >= 0;
284      }
285      getState() {
286        if (this.webSocket) {
287          for (let state in adapters_default.WebSocket) {
288            if (adapters_default.WebSocket[state] === this.webSocket.readyState) {
289              return state.toLowerCase();
290            }
291          }
292        }
293        return null;
294      }
295      installEventHandlers() {
296        for (let eventName in this.events) {
297          const handler = this.events[eventName].bind(this);
298          this.webSocket[`on${eventName}`] = handler;
299        }
300      }
301      uninstallEventHandlers() {
302        for (let eventName in this.events) {
303          this.webSocket[`on${eventName}`] = function() {
304          };
305        }
306      }
307    };
308    Connection.reopenDelay = 500;
309    Connection.prototype.events = {
310      message(event) {
311        if (!this.isProtocolSupported()) {
312          return;
313        }
314        const { identifier, message, reason, reconnect, type } = JSON.parse(event.data);
315        this.monitor.recordMessage();
316        switch (type) {
317          case message_types.welcome:
318            if (this.triedToReconnect()) {
319              this.reconnectAttempted = true;
320            }
321            this.monitor.recordConnect();
322            return this.subscriptions.reload();
323          case message_types.disconnect:
324            logger_default.log(`Disconnecting. Reason: ${reason}`);
325            return this.close({ allowReconnect: reconnect });
326          case message_types.ping:
327            return null;
328          case message_types.confirmation:
329            this.subscriptions.confirmSubscription(identifier);
330            if (this.reconnectAttempted) {
331              this.reconnectAttempted = false;
332              return this.subscriptions.notify(identifier, "connected", { reconnected: true });
333            } else {
334              return this.subscriptions.notify(identifier, "connected", { reconnected: false });
335            }
336          case message_types.rejection:
337            return this.subscriptions.reject(identifier);
338          default:
339            return this.subscriptions.notify(identifier, "received", message);
340        }
341      },
342      open() {
343        logger_default.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`);
344        this.disconnected = false;
345        if (!this.isProtocolSupported()) {
346          logger_default.log("Protocol is unsupported. Stopping monitor and disconnecting.");
347          return this.close({ allowReconnect: false });
348        }
349      },
350      close(event) {
351        logger_default.log("WebSocket onclose event");
352        if (this.disconnected) {
353          return;
354        }
355        this.disconnected = true;
356        this.monitor.recordDisconnect();
357        return this.subscriptions.notifyAll("disconnected", { willAttemptReconnect: this.monitor.isRunning() });
358      },
359      error() {
360        logger_default.log("WebSocket onerror event");
361      }
362    };
363    connection_default = Connection;
364  }
365});
366
vendor: 1,036 bytes, lines 367-400
367// node_modules/@rails/actioncable/src/subscription.js
368var extend, Subscription;
369var init_subscription = __esm({
370  "node_modules/@rails/actioncable/src/subscription.js"() {
371    extend = function(object, properties) {
372      if (properties != null) {
373        for (let key in properties) {
374          const value = properties[key];
375          object[key] = value;
376        }
377      }
378      return object;
379    };
380    Subscription = class {
381      constructor(consumer2, params = {}, mixin) {
382        this.consumer = consumer2;
383        this.identifier = JSON.stringify(params);
384        extend(this, mixin);
385      }
386      // Perform a channel action with the optional data passed as an attribute
387      perform(action, data = {}) {
388        data.action = action;
389        return this.send(data);
390      }
391      send(data) {
392        return this.consumer.send({ command: "message", identifier: this.identifier, data: JSON.stringify(data) });
393      }
394      unsubscribe() {
395        return this.consumer.subscriptions.remove(this);
396      }
397    };
398  }
399});
400
vendor: 1,804 bytes, lines 401-448
401// node_modules/@rails/actioncable/src/subscription_guarantor.js
402var SubscriptionGuarantor, subscription_guarantor_default;
403var init_subscription_guarantor = __esm({
404  "node_modules/@rails/actioncable/src/subscription_guarantor.js"() {
405    init_logger();
406    SubscriptionGuarantor = class {
407      constructor(subscriptions) {
408        this.subscriptions = subscriptions;
409        this.pendingSubscriptions = [];
410      }
411      guarantee(subscription) {
412        if (this.pendingSubscriptions.indexOf(subscription) == -1) {
413          logger_default.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`);
414          this.pendingSubscriptions.push(subscription);
415        } else {
416          logger_default.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`);
417        }
418        this.startGuaranteeing();
419      }
420      forget(subscription) {
421        logger_default.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`);
422        this.pendingSubscriptions = this.pendingSubscriptions.filter((s3) => s3 !== subscription);
423      }
424      startGuaranteeing() {
425        this.stopGuaranteeing();
426        this.retrySubscribing();
427      }
428      stopGuaranteeing() {
429        clearTimeout(this.retryTimeout);
430      }
431      retrySubscribing() {
432        this.retryTimeout = setTimeout(
433          () => {
434            if (this.subscriptions && typeof this.subscriptions.subscribe === "function") {
435              this.pendingSubscriptions.map((subscription) => {
436                logger_default.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`);
437                this.subscriptions.subscribe(subscription);
438              });
439            }
440          },
441          500
442        );
443      }
444    };
445    subscription_guarantor_default = SubscriptionGuarantor;
446  }
447});
448
vendor: 2,972 bytes, lines 449-529
449// node_modules/@rails/actioncable/src/subscriptions.js
450var Subscriptions;
451var init_subscriptions = __esm({
452  "node_modules/@rails/actioncable/src/subscriptions.js"() {
453    init_logger();
454    init_subscription();
455    init_subscription_guarantor();
456    Subscriptions = class {
457      constructor(consumer2) {
458        this.consumer = consumer2;
459        this.guarantor = new subscription_guarantor_default(this);
460        this.subscriptions = [];
461      }
462      create(channelName, mixin) {
463        const channel = channelName;
464        const params = typeof channel === "object" ? channel : { channel };
465        const subscription = new Subscription(this.consumer, params, mixin);
466        return this.add(subscription);
467      }
468      // Private
469      add(subscription) {
470        this.subscriptions.push(subscription);
471        this.consumer.ensureActiveConnection();
472        this.notify(subscription, "initialized");
473        this.subscribe(subscription);
474        return subscription;
475      }
476      remove(subscription) {
477        this.forget(subscription);
478        if (!this.findAll(subscription.identifier).length) {
479          this.sendCommand(subscription, "unsubscribe");
480        }
481        return subscription;
482      }
483      reject(identifier) {
484        return this.findAll(identifier).map((subscription) => {
485          this.forget(subscription);
486          this.notify(subscription, "rejected");
487          return subscription;
488        });
489      }
490      forget(subscription) {
491        this.guarantor.forget(subscription);
492        this.subscriptions = this.subscriptions.filter((s3) => s3 !== subscription);
493        return subscription;
494      }
495      findAll(identifier) {
496        return this.subscriptions.filter((s3) => s3.identifier === identifier);
497      }
498      reload() {
499        return this.subscriptions.map((subscription) => this.subscribe(subscription));
500      }
501      notifyAll(callbackName, ...args) {
502        return this.subscriptions.map((subscription) => this.notify(subscription, callbackName, ...args));
503      }
504      notify(subscription, callbackName, ...args) {
505        let subscriptions;
506        if (typeof subscription === "string") {
507          subscriptions = this.findAll(subscription);
508        } else {
509          subscriptions = [subscription];
510        }
511        return subscriptions.map((subscription2) => typeof subscription2[callbackName] === "function" ? subscription2[callbackName](...args) : void 0);
512      }
513      subscribe(subscription) {
514        if (this.sendCommand(subscription, "subscribe")) {
515          this.guarantor.guarantee(subscription);
516        }
517      }
518      confirmSubscription(identifier) {
519        logger_default.log(`Subscription confirmed ${identifier}`);
520        this.findAll(identifier).map((subscription) => this.guarantor.forget(subscription));
521      }
522      sendCommand(subscription, command) {
523        const { identifier } = subscription;
524        return this.consumer.send({ command, identifier });
525      }
526    };
527  }
528});
529
vendor: 1,302 bytes, lines 530-580
530// node_modules/@rails/actioncable/src/consumer.js
531function createWebSocketURL(url) {
532  if (typeof url === "function") {
533    url = url();
534  }
535  if (url && !/^wss?:/i.test(url)) {
536    const a3 = document.createElement("a");
537    a3.href = url;
538    a3.href = a3.href;
539    a3.protocol = a3.protocol.replace("http", "ws");
540    return a3.href;
541  } else {
542    return url;
543  }
544}
545var Consumer;
546var init_consumer = __esm({
547  "node_modules/@rails/actioncable/src/consumer.js"() {
548    init_connection();
549    init_subscriptions();
550    Consumer = class {
551      constructor(url) {
552        this._url = url;
553        this.subscriptions = new Subscriptions(this);
554        this.connection = new connection_default(this);
555        this.subprotocols = [];
556      }
557      get url() {
558        return createWebSocketURL(this._url);
559      }
560      send(data) {
561        return this.connection.send(data);
562      }
563      connect() {
564        return this.connection.open();
565      }
566      disconnect() {
567        return this.connection.close({ allowReconnect: false });
568      }
569      ensureActiveConnection() {
570        if (!this.connection.isActive()) {
571          return this.connection.open();
572        }
573      }
574      addSubProtocol(subprotocol) {
575        this.subprotocols = [...this.subprotocols, subprotocol];
576      }
577    };
578  }
579});
580
vendor: 1,183 bytes, lines 581-619
581// node_modules/@rails/actioncable/src/index.js
582var src_exports = {};
583__export(src_exports, {
584  Connection: () => connection_default,
585  ConnectionMonitor: () => connection_monitor_default,
586  Consumer: () => Consumer,
587  INTERNAL: () => internal_default,
588  Subscription: () => Subscription,
589  SubscriptionGuarantor: () => subscription_guarantor_default,
590  Subscriptions: () => Subscriptions,
591  adapters: () => adapters_default,
592  createConsumer: () => createConsumer,
593  createWebSocketURL: () => createWebSocketURL,
594  getConfig: () => getConfig,
595  logger: () => logger_default
596});
597function createConsumer(url = getConfig("url") || internal_default.default_mount_path) {
598  return new Consumer(url);
599}
600function getConfig(name) {
601  const element = document.head.querySelector(`meta[name='action-cable-${name}']`);
602  if (element) {
603    return element.getAttribute("content");
604  }
605}
606var init_src = __esm({
607  "node_modules/@rails/actioncable/src/index.js"() {
608    init_adapters();
609    init_connection();
610    init_connection_monitor();
611    init_consumer();
612    init_internal();
613    init_logger();
614    init_subscription();
615    init_subscription_guarantor();
616    init_subscriptions();
617  }
618});
619
vendor: 45,280 bytes, lines 620-1591
620// node_modules/react/cjs/react.development.js
621var require_react_development = __commonJS({
622  "node_modules/react/cjs/react.development.js"(exports, module) {
623    "use strict";
624    (function() {
625      function defineDeprecationWarning(methodName, info) {
626        Object.defineProperty(Component.prototype, methodName, {
627          get: function() {
628            console.warn(
629              "%s(...) is deprecated in plain JavaScript React classes. %s",
630              info[0],
631              info[1]
632            );
633          }
634        });
635      }
636      function getIteratorFn(maybeIterable) {
637        if (null === maybeIterable || "object" !== typeof maybeIterable)
638          return null;
639        maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable["@@iterator"];
640        return "function" === typeof maybeIterable ? maybeIterable : null;
641      }
642      function warnNoop(publicInstance, callerName) {
643        publicInstance = (publicInstance = publicInstance.constructor) && (publicInstance.displayName || publicInstance.name) || "ReactClass";
644        var warningKey = publicInstance + "." + callerName;
645        didWarnStateUpdateForUnmountedComponent[warningKey] || (console.error(
646          "Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",
647          callerName,
648          publicInstance
649        ), didWarnStateUpdateForUnmountedComponent[warningKey] = true);
650      }
651      function Component(props, context, updater) {
652        this.props = props;
653        this.context = context;
654        this.refs = emptyObject;
655        this.updater = updater || ReactNoopUpdateQueue;
656      }
657      function ComponentDummy() {
658      }
659      function PureComponent(props, context, updater) {
660        this.props = props;
661        this.context = context;
662        this.refs = emptyObject;
663        this.updater = updater || ReactNoopUpdateQueue;
664      }
665      function noop() {
666      }
667      function testStringCoercion(value) {
668        return "" + value;
669      }
670      function checkKeyStringCoercion(value) {
671        try {
672          testStringCoercion(value);
673          var JSCompiler_inline_result = false;
674        } catch (e3) {
675          JSCompiler_inline_result = true;
676        }
677        if (JSCompiler_inline_result) {
678          JSCompiler_inline_result = console;
679          var JSCompiler_temp_const = JSCompiler_inline_result.error;
680          var JSCompiler_inline_result$jscomp$0 = "function" === typeof Symbol && Symbol.toStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object";
681          JSCompiler_temp_const.call(
682            JSCompiler_inline_result,
683            "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
684            JSCompiler_inline_result$jscomp$0
685          );
686          return testStringCoercion(value);
687        }
688      }
689      function getComponentNameFromType(type) {
690        if (null == type) return null;
691        if ("function" === typeof type)
692          return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null;
693        if ("string" === typeof type) return type;
694        switch (type) {
695          case REACT_FRAGMENT_TYPE:
696            return "Fragment";
697          case REACT_PROFILER_TYPE:
698            return "Profiler";
699          case REACT_STRICT_MODE_TYPE:
700            return "StrictMode";
701          case REACT_SUSPENSE_TYPE:
702            return "Suspense";
703          case REACT_SUSPENSE_LIST_TYPE:
704            return "SuspenseList";
705          case REACT_ACTIVITY_TYPE:
706            return "Activity";
707        }
708        if ("object" === typeof type)
709          switch ("number" === typeof type.tag && console.error(
710            "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
711          ), type.$$typeof) {
712            case REACT_PORTAL_TYPE:
713              return "Portal";
714            case REACT_CONTEXT_TYPE:
715              return type.displayName || "Context";
716            case REACT_CONSUMER_TYPE:
717              return (type._context.displayName || "Context") + ".Consumer";
718            case REACT_FORWARD_REF_TYPE:
719              var innerType = type.render;
720              type = type.displayName;
721              type || (type = innerType.displayName || innerType.name || "", type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef");
722              return type;
723            case REACT_MEMO_TYPE:
724              return innerType = type.displayName || null, null !== innerType ? innerType : getComponentNameFromType(type.type) || "Memo";
725            case REACT_LAZY_TYPE:
726              innerType = type._payload;
727              type = type._init;
728              try {
729                return getComponentNameFromType(type(innerType));
730              } catch (x3) {
731              }
732          }
733        return null;
734      }
735      function getTaskName(type) {
736        if (type === REACT_FRAGMENT_TYPE) return "<>";
737        if ("object" === typeof type && null !== type && type.$$typeof === REACT_LAZY_TYPE)
738          return "<...>";
739        try {
740          var name = getComponentNameFromType(type);
741          return name ? "<" + name + ">" : "<...>";
742        } catch (x3) {
743          return "<...>";
744        }
745      }
746      function getOwner() {
747        var dispatcher = ReactSharedInternals.A;
748        return null === dispatcher ? null : dispatcher.getOwner();
749      }
750      function UnknownOwner() {
751        return Error("react-stack-top-frame");
752      }
753      function hasValidKey(config2) {
754        if (hasOwnProperty.call(config2, "key")) {
755          var getter = Object.getOwnPropertyDescriptor(config2, "key").get;
756          if (getter && getter.isReactWarning) return false;
757        }
758        return void 0 !== config2.key;
759      }
760      function defineKeyPropWarningGetter(props, displayName) {
761        function warnAboutAccessingKey() {
762          specialPropKeyWarningShown || (specialPropKeyWarningShown = true, console.error(
763            "%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
764            displayName
765          ));
766        }
767        warnAboutAccessingKey.isReactWarning = true;
768        Object.defineProperty(props, "key", {
769          get: warnAboutAccessingKey,
770          configurable: true
771        });
772      }
773      function elementRefGetterWithDeprecationWarning() {
774        var componentName = getComponentNameFromType(this.type);
775        didWarnAboutElementRef[componentName] || (didWarnAboutElementRef[componentName] = true, console.error(
776          "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
777        ));
778        componentName = this.props.ref;
779        return void 0 !== componentName ? componentName : null;
780      }
781      function ReactElement(type, key, props, owner, debugStack, debugTask) {
782        var refProp = props.ref;
783        type = {
784          $$typeof: REACT_ELEMENT_TYPE,
785          type,
786          key,
787          props,
788          _owner: owner
789        };
790        null !== (void 0 !== refProp ? refProp : null) ? Object.defineProperty(type, "ref", {
791          enumerable: false,
792          get: elementRefGetterWithDeprecationWarning
793        }) : Object.defineProperty(type, "ref", { enumerable: false, value: null });
794        type._store = {};
795        Object.defineProperty(type._store, "validated", {
796          configurable: false,
797          enumerable: false,
798          writable: true,
799          value: 0
800        });
801        Object.defineProperty(type, "_debugInfo", {
802          configurable: false,
803          enumerable: false,
804          writable: true,
805          value: null
806        });
807        Object.defineProperty(type, "_debugStack", {
808          configurable: false,
809          enumerable: false,
810          writable: true,
811          value: debugStack
812        });
813        Object.defineProperty(type, "_debugTask", {
814          configurable: false,
815          enumerable: false,
816          writable: true,
817          value: debugTask
818        });
819        Object.freeze && (Object.freeze(type.props), Object.freeze(type));
820        return type;
821      }
822      function cloneAndReplaceKey(oldElement, newKey) {
823        newKey = ReactElement(
824          oldElement.type,
825          newKey,
826          oldElement.props,
827          oldElement._owner,
828          oldElement._debugStack,
829          oldElement._debugTask
830        );
831        oldElement._store && (newKey._store.validated = oldElement._store.validated);
832        return newKey;
833      }
834      function validateChildKeys(node) {
835        isValidElement(node) ? node._store && (node._store.validated = 1) : "object" === typeof node && null !== node && node.$$typeof === REACT_LAZY_TYPE && ("fulfilled" === node._payload.status ? isValidElement(node._payload.value) && node._payload.value._store && (node._payload.value._store.validated = 1) : node._store && (node._store.validated = 1));
836      }
837      function isValidElement(object) {
838        return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;
839      }
840      function escape(key) {
841        var escaperLookup = { "=": "=0", ":": "=2" };
842        return "$" + key.replace(/[=:]/g, function(match) {
843          return escaperLookup[match];
844        });
845      }
846      function getElementKey(element, index) {
847        return "object" === typeof element && null !== element && null != element.key ? (checkKeyStringCoercion(element.key), escape("" + element.key)) : index.toString(36);
848      }
849      function resolveThenable(thenable) {
850        switch (thenable.status) {
851          case "fulfilled":
852            return thenable.value;
853          case "rejected":
854            throw thenable.reason;
855          default:
856            switch ("string" === typeof thenable.status ? thenable.then(noop, noop) : (thenable.status = "pending", thenable.then(
857              function(fulfilledValue) {
858                "pending" === thenable.status && (thenable.status = "fulfilled", thenable.value = fulfilledValue);
859              },
860              function(error2) {
861                "pending" === thenable.status && (thenable.status = "rejected", thenable.reason = error2);
862              }
863            )), thenable.status) {
864              case "fulfilled":
865                return thenable.value;
866              case "rejected":
867                throw thenable.reason;
868            }
869        }
870        throw thenable;
871      }
872      function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {
873        var type = typeof children;
874        if ("undefined" === type || "boolean" === type) children = null;
875        var invokeCallback = false;
876        if (null === children) invokeCallback = true;
877        else
878          switch (type) {
879            case "bigint":
880            case "string":
881            case "number":
882              invokeCallback = true;
883              break;
884            case "object":
885              switch (children.$$typeof) {
886                case REACT_ELEMENT_TYPE:
887                case REACT_PORTAL_TYPE:
888                  invokeCallback = true;
889                  break;
890                case REACT_LAZY_TYPE:
891                  return invokeCallback = children._init, mapIntoArray(
892                    invokeCallback(children._payload),
893                    array,
894                    escapedPrefix,
895                    nameSoFar,
896                    callback
897                  );
898              }
899          }
900        if (invokeCallback) {
901          invokeCallback = children;
902          callback = callback(invokeCallback);
903          var childKey = "" === nameSoFar ? "." + getElementKey(invokeCallback, 0) : nameSoFar;
904          isArrayImpl(callback) ? (escapedPrefix = "", null != childKey && (escapedPrefix = childKey.replace(userProvidedKeyEscapeRegex, "$&/") + "/"), mapIntoArray(callback, array, escapedPrefix, "", function(c3) {
905            return c3;
906          })) : null != callback && (isValidElement(callback) && (null != callback.key && (invokeCallback && invokeCallback.key === callback.key || checkKeyStringCoercion(callback.key)), escapedPrefix = cloneAndReplaceKey(
907            callback,
908            escapedPrefix + (null == callback.key || invokeCallback && invokeCallback.key === callback.key ? "" : ("" + callback.key).replace(
909              userProvidedKeyEscapeRegex,
910              "$&/"
911            ) + "/") + childKey
912          ), "" !== nameSoFar && null != invokeCallback && isValidElement(invokeCallback) && null == invokeCallback.key && invokeCallback._store && !invokeCallback._store.validated && (escapedPrefix._store.validated = 2), callback = escapedPrefix), array.push(callback));
913          return 1;
914        }
915        invokeCallback = 0;
916        childKey = "" === nameSoFar ? "." : nameSoFar + ":";
917        if (isArrayImpl(children))
918          for (var i3 = 0; i3 < children.length; i3++)
919            nameSoFar = children[i3], type = childKey + getElementKey(nameSoFar, i3), invokeCallback += mapIntoArray(
920              nameSoFar,
921              array,
922              escapedPrefix,
923              type,
924              callback
925            );
926        else if (i3 = getIteratorFn(children), "function" === typeof i3)
927          for (i3 === children.entries && (didWarnAboutMaps || console.warn(
928            "Using Maps as children is not supported. Use an array of keyed ReactElements instead."
929          ), didWarnAboutMaps = true), children = i3.call(children), i3 = 0; !(nameSoFar = children.next()).done; )
930            nameSoFar = nameSoFar.value, type = childKey + getElementKey(nameSoFar, i3++), invokeCallback += mapIntoArray(
931              nameSoFar,
932              array,
933              escapedPrefix,
934              type,
935              callback
936            );
937        else if ("object" === type) {
938          if ("function" === typeof children.then)
939            return mapIntoArray(
940              resolveThenable(children),
941              array,
942              escapedPrefix,
943              nameSoFar,
944              callback
945            );
946          array = String(children);
947          throw Error(
948            "Objects are not valid as a React child (found: " + ("[object Object]" === array ? "object with keys {" + Object.keys(children).join(", ") + "}" : array) + "). If you meant to render a collection of children, use an array instead."
949          );
950        }
951        return invokeCallback;
952      }
953      function mapChildren(children, func, context) {
954        if (null == children) return children;
955        var result = [], count = 0;
956        mapIntoArray(children, result, "", "", function(child) {
957          return func.call(context, child, count++);
958        });
959        return result;
960      }
961      function lazyInitializer(payload) {
962        if (-1 === payload._status) {
963          var ioInfo = payload._ioInfo;
964          null != ioInfo && (ioInfo.start = ioInfo.end = performance.now());
965          ioInfo = payload._result;
966          var thenable = ioInfo();
967          thenable.then(
968            function(moduleObject) {
969              if (0 === payload._status || -1 === payload._status) {
970                payload._status = 1;
971                payload._result = moduleObject;
972                var _ioInfo = payload._ioInfo;
973                null != _ioInfo && (_ioInfo.end = performance.now());
974                void 0 === thenable.status && (thenable.status = "fulfilled", thenable.value = moduleObject);
975              }
976            },
977            function(error2) {
978              if (0 === payload._status || -1 === payload._status) {
979                payload._status = 2;
980                payload._result = error2;
981                var _ioInfo2 = payload._ioInfo;
982                null != _ioInfo2 && (_ioInfo2.end = performance.now());
983                void 0 === thenable.status && (thenable.status = "rejected", thenable.reason = error2);
984              }
985            }
986          );
987          ioInfo = payload._ioInfo;
988          if (null != ioInfo) {
989            ioInfo.value = thenable;
990            var displayName = thenable.displayName;
991            "string" === typeof displayName && (ioInfo.name = displayName);
992          }
993          -1 === payload._status && (payload._status = 0, payload._result = thenable);
994        }
995        if (1 === payload._status)
996          return ioInfo = payload._result, void 0 === ioInfo && console.error(
997            "lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n  const MyComponent = lazy(() => import('./MyComponent'))\n\nDid you accidentally put curly braces around the import?",
998            ioInfo
999          ), "default" in ioInfo || console.error(
1000            "lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n  const MyComponent = lazy(() => import('./MyComponent'))",
1001            ioInfo
1002          ), ioInfo.default;
1003        throw payload._result;
1004      }
1005      function resolveDispatcher() {
1006        var dispatcher = ReactSharedInternals.H;
1007        null === dispatcher && console.error(
1008          "Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem."
1009        );
1010        return dispatcher;
1011      }
1012      function releaseAsyncTransition() {
1013        ReactSharedInternals.asyncTransitions--;
1014      }
1015      function enqueueTask(task) {
1016        if (null === enqueueTaskImpl)
1017          try {
1018            var requireString = ("require" + Math.random()).slice(0, 7);
1019            enqueueTaskImpl = (module && module[requireString]).call(
1020              module,
1021              "timers"
1022            ).setImmediate;
1023          } catch (_err) {
1024            enqueueTaskImpl = function(callback) {
1025              false === didWarnAboutMessageChannel && (didWarnAboutMessageChannel = true, "undefined" === typeof MessageChannel && console.error(
1026                "This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."
1027              ));
1028              var channel = new MessageChannel();
1029              channel.port1.onmessage = callback;
1030              channel.port2.postMessage(void 0);
1031            };
1032          }
1033        return enqueueTaskImpl(task);
1034      }
1035      function aggregateErrors(errors) {
1036        return 1 < errors.length && "function" === typeof AggregateError ? new AggregateError(errors) : errors[0];
1037      }
1038      function popActScope(prevActQueue, prevActScopeDepth) {
1039        prevActScopeDepth !== actScopeDepth - 1 && console.error(
1040          "You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. "
1041        );
1042        actScopeDepth = prevActScopeDepth;
1043      }
1044      function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {
1045        var queue = ReactSharedInternals.actQueue;
1046        if (null !== queue)
1047          if (0 !== queue.length)
1048            try {
1049              flushActQueue(queue);
1050              enqueueTask(function() {
1051                return recursivelyFlushAsyncActWork(returnValue, resolve, reject);
1052              });
1053              return;
1054            } catch (error2) {
1055              ReactSharedInternals.thrownErrors.push(error2);
1056            }
1057          else ReactSharedInternals.actQueue = null;
1058        0 < ReactSharedInternals.thrownErrors.length ? (queue = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, reject(queue)) : resolve(returnValue);
1059      }
1060      function flushActQueue(queue) {
1061        if (!isFlushing) {
1062          isFlushing = true;
1063          var i3 = 0;
1064          try {
1065            for (; i3 < queue.length; i3++) {
1066              var callback = queue[i3];
1067              do {
1068                ReactSharedInternals.didUsePromise = false;
1069                var continuation = callback(false);
1070                if (null !== continuation) {
1071                  if (ReactSharedInternals.didUsePromise) {
1072                    queue[i3] = callback;
1073                    queue.splice(0, i3);
1074                    return;
1075                  }
1076                  callback = continuation;
1077                } else break;
1078              } while (1);
1079            }
1080            queue.length = 0;
1081          } catch (error2) {
1082            queue.splice(0, i3 + 1), ReactSharedInternals.thrownErrors.push(error2);
1083          } finally {
1084            isFlushing = false;
1085          }
1086        }
1087      }
1088      "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
1089      var REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = /* @__PURE__ */ Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = /* @__PURE__ */ Symbol.for("react.memo"), REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = /* @__PURE__ */ Symbol.for("react.activity"), MAYBE_ITERATOR_SYMBOL = Symbol.iterator, didWarnStateUpdateForUnmountedComponent = {}, ReactNoopUpdateQueue = {
1090        isMounted: function() {
1091          return false;
1092        },
1093        enqueueForceUpdate: function(publicInstance) {
1094          warnNoop(publicInstance, "forceUpdate");
1095        },
1096        enqueueReplaceState: function(publicInstance) {
1097          warnNoop(publicInstance, "replaceState");
1098        },
1099        enqueueSetState: function(publicInstance) {
1100          warnNoop(publicInstance, "setState");
1101        }
1102      }, assign = Object.assign, emptyObject = {};
1103      Object.freeze(emptyObject);
1104      Component.prototype.isReactComponent = {};
1105      Component.prototype.setState = function(partialState, callback) {
1106        if ("object" !== typeof partialState && "function" !== typeof partialState && null != partialState)
1107          throw Error(
1108            "takes an object of state variables to update or a function which returns an object of state variables."
1109          );
1110        this.updater.enqueueSetState(this, partialState, callback, "setState");
1111      };
1112      Component.prototype.forceUpdate = function(callback) {
1113        this.updater.enqueueForceUpdate(this, callback, "forceUpdate");
1114      };
1115      var deprecatedAPIs = {
1116        isMounted: [
1117          "isMounted",
1118          "Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."
1119        ],
1120        replaceState: [
1121          "replaceState",
1122          "Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."
1123        ]
1124      };
1125      for (fnName in deprecatedAPIs)
1126        deprecatedAPIs.hasOwnProperty(fnName) && defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
1127      ComponentDummy.prototype = Component.prototype;
1128      deprecatedAPIs = PureComponent.prototype = new ComponentDummy();
1129      deprecatedAPIs.constructor = PureComponent;
1130      assign(deprecatedAPIs, Component.prototype);
1131      deprecatedAPIs.isPureReactComponent = true;
1132      var isArrayImpl = Array.isArray, REACT_CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for("react.client.reference"), ReactSharedInternals = {
1133        H: null,
1134        A: null,
1135        T: null,
1136        S: null,
1137        actQueue: null,
1138        asyncTransitions: 0,
1139        isBatchingLegacy: false,
1140        didScheduleLegacyUpdate: false,
1141        didUsePromise: false,
1142        thrownErrors: [],
1143        getCurrentStack: null,
1144        recentlyCreatedOwnerStacks: 0
1145      }, hasOwnProperty = Object.prototype.hasOwnProperty, createTask = console.createTask ? console.createTask : function() {
1146        return null;
1147      };
1148      deprecatedAPIs = {
1149        react_stack_bottom_frame: function(callStackForError) {
1150          return callStackForError();
1151        }
1152      };
1153      var specialPropKeyWarningShown, didWarnAboutOldJSXRuntime;
1154      var didWarnAboutElementRef = {};
1155      var unknownOwnerDebugStack = deprecatedAPIs.react_stack_bottom_frame.bind(
1156        deprecatedAPIs,
1157        UnknownOwner
1158      )();
1159      var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
1160      var didWarnAboutMaps = false, userProvidedKeyEscapeRegex = /\/+/g, reportGlobalError = "function" === typeof reportError ? reportError : function(error2) {
1161        if ("object" === typeof window && "function" === typeof window.ErrorEvent) {
1162          var event = new window.ErrorEvent("error", {
1163            bubbles: true,
1164            cancelable: true,
1165            message: "object" === typeof error2 && null !== error2 && "string" === typeof error2.message ? String(error2.message) : String(error2),
1166            error: error2
1167          });
1168          if (!window.dispatchEvent(event)) return;
1169        } else if ("object" === typeof process && "function" === typeof process.emit) {
1170          process.emit("uncaughtException", error2);
1171          return;
1172        }
1173        console.error(error2);
1174      }, didWarnAboutMessageChannel = false, enqueueTaskImpl = null, actScopeDepth = 0, didWarnNoAwaitAct = false, isFlushing = false, queueSeveralMicrotasks = "function" === typeof queueMicrotask ? function(callback) {
1175        queueMicrotask(function() {
1176          return queueMicrotask(callback);
1177        });
1178      } : enqueueTask;
1179      deprecatedAPIs = Object.freeze({
1180        __proto__: null,
1181        c: function(size) {
1182          return resolveDispatcher().useMemoCache(size);
1183        }
1184      });
1185      var fnName = {
1186        map: mapChildren,
1187        forEach: function(children, forEachFunc, forEachContext) {
1188          mapChildren(
1189            children,
1190            function() {
1191              forEachFunc.apply(this, arguments);
1192            },
1193            forEachContext
1194          );
1195        },
1196        count: function(children) {
1197          var n3 = 0;
1198          mapChildren(children, function() {
1199            n3++;
1200          });
1201          return n3;
1202        },
1203        toArray: function(children) {
1204          return mapChildren(children, function(child) {
1205            return child;
1206          }) || [];
1207        },
1208        only: function(children) {
1209          if (!isValidElement(children))
1210            throw Error(
1211              "React.Children.only expected to receive a single React element child."
1212            );
1213          return children;
1214        }
1215      };
1216      exports.Activity = REACT_ACTIVITY_TYPE;
1217      exports.Children = fnName;
1218      exports.Component = Component;
1219      exports.Fragment = REACT_FRAGMENT_TYPE;
1220      exports.Profiler = REACT_PROFILER_TYPE;
1221      exports.PureComponent = PureComponent;
1222      exports.StrictMode = REACT_STRICT_MODE_TYPE;
1223      exports.Suspense = REACT_SUSPENSE_TYPE;
1224      exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = ReactSharedInternals;
1225      exports.__COMPILER_RUNTIME = deprecatedAPIs;
1226      exports.act = function(callback) {
1227        var prevActQueue = ReactSharedInternals.actQueue, prevActScopeDepth = actScopeDepth;
1228        actScopeDepth++;
1229        var queue = ReactSharedInternals.actQueue = null !== prevActQueue ? prevActQueue : [], didAwaitActCall = false;
1230        try {
1231          var result = callback();
1232        } catch (error2) {
1233          ReactSharedInternals.thrownErrors.push(error2);
1234        }
1235        if (0 < ReactSharedInternals.thrownErrors.length)
1236          throw popActScope(prevActQueue, prevActScopeDepth), callback = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, callback;
1237        if (null !== result && "object" === typeof result && "function" === typeof result.then) {
1238          var thenable = result;
1239          queueSeveralMicrotasks(function() {
1240            didAwaitActCall || didWarnNoAwaitAct || (didWarnNoAwaitAct = true, console.error(
1241              "You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"
1242            ));
1243          });
1244          return {
1245            then: function(resolve, reject) {
1246              didAwaitActCall = true;
1247              thenable.then(
1248                function(returnValue) {
1249                  popActScope(prevActQueue, prevActScopeDepth);
1250                  if (0 === prevActScopeDepth) {
1251                    try {
1252                      flushActQueue(queue), enqueueTask(function() {
1253                        return recursivelyFlushAsyncActWork(
1254                          returnValue,
1255                          resolve,
1256                          reject
1257                        );
1258                      });
1259                    } catch (error$0) {
1260                      ReactSharedInternals.thrownErrors.push(error$0);
1261                    }
1262                    if (0 < ReactSharedInternals.thrownErrors.length) {
1263                      var _thrownError = aggregateErrors(
1264                        ReactSharedInternals.thrownErrors
1265                      );
1266                      ReactSharedInternals.thrownErrors.length = 0;
1267                      reject(_thrownError);
1268                    }
1269                  } else resolve(returnValue);
1270                },
1271                function(error2) {
1272                  popActScope(prevActQueue, prevActScopeDepth);
1273                  0 < ReactSharedInternals.thrownErrors.length ? (error2 = aggregateErrors(
1274                    ReactSharedInternals.thrownErrors
1275                  ), ReactSharedInternals.thrownErrors.length = 0, reject(error2)) : reject(error2);
1276                }
1277              );
1278            }
1279          };
1280        }
1281        var returnValue$jscomp$0 = result;
1282        popActScope(prevActQueue, prevActScopeDepth);
1283        0 === prevActScopeDepth && (flushActQueue(queue), 0 !== queue.length && queueSeveralMicrotasks(function() {
1284          didAwaitActCall || didWarnNoAwaitAct || (didWarnNoAwaitAct = true, console.error(
1285            "A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\n\nawait act(() => ...)"
1286          ));
1287        }), ReactSharedInternals.actQueue = null);
1288        if (0 < ReactSharedInternals.thrownErrors.length)
1289          throw callback = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, callback;
1290        return {
1291          then: function(resolve, reject) {
1292            didAwaitActCall = true;
1293            0 === prevActScopeDepth ? (ReactSharedInternals.actQueue = queue, enqueueTask(function() {
1294              return recursivelyFlushAsyncActWork(
1295                returnValue$jscomp$0,
1296                resolve,
1297                reject
1298              );
1299            })) : resolve(returnValue$jscomp$0);
1300          }
1301        };
1302      };
1303      exports.cache = function(fn3) {
1304        return function() {
1305          return fn3.apply(null, arguments);
1306        };
1307      };
1308      exports.cacheSignal = function() {
1309        return null;
1310      };
1311      exports.captureOwnerStack = function() {
1312        var getCurrentStack = ReactSharedInternals.getCurrentStack;
1313        return null === getCurrentStack ? null : getCurrentStack();
1314      };
1315      exports.cloneElement = function(element, config2, children) {
1316        if (null === element || void 0 === element)
1317          throw Error(
1318            "The argument must be a React element, but you passed " + element + "."
1319          );
1320        var props = assign({}, element.props), key = element.key, owner = element._owner;
1321        if (null != config2) {
1322          var JSCompiler_inline_result;
1323          a: {
1324            if (hasOwnProperty.call(config2, "ref") && (JSCompiler_inline_result = Object.getOwnPropertyDescriptor(
1325              config2,
1326              "ref"
1327            ).get) && JSCompiler_inline_result.isReactWarning) {
1328              JSCompiler_inline_result = false;
1329              break a;
1330            }
1331            JSCompiler_inline_result = void 0 !== config2.ref;
1332          }
1333          JSCompiler_inline_result && (owner = getOwner());
1334          hasValidKey(config2) && (checkKeyStringCoercion(config2.key), key = "" + config2.key);
1335          for (propName in config2)
1336            !hasOwnProperty.call(config2, propName) || "key" === propName || "__self" === propName || "__source" === propName || "ref" === propName && void 0 === config2.ref || (props[propName] = config2[propName]);
1337        }
1338        var propName = arguments.length - 2;
1339        if (1 === propName) props.children = children;
1340        else if (1 < propName) {
1341          JSCompiler_inline_result = Array(propName);
1342          for (var i3 = 0; i3 < propName; i3++)
1343            JSCompiler_inline_result[i3] = arguments[i3 + 2];
1344          props.children = JSCompiler_inline_result;
1345        }
1346        props = ReactElement(
1347          element.type,
1348          key,
1349          props,
1350          owner,
1351          element._debugStack,
1352          element._debugTask
1353        );
1354        for (key = 2; key < arguments.length; key++)
1355          validateChildKeys(arguments[key]);
1356        return props;
1357      };
1358      exports.createContext = function(defaultValue) {
1359        defaultValue = {
1360          $$typeof: REACT_CONTEXT_TYPE,
1361          _currentValue: defaultValue,
1362          _currentValue2: defaultValue,
1363          _threadCount: 0,
1364          Provider: null,
1365          Consumer: null
1366        };
1367        defaultValue.Provider = defaultValue;
1368        defaultValue.Consumer = {
1369          $$typeof: REACT_CONSUMER_TYPE,
1370          _context: defaultValue
1371        };
1372        defaultValue._currentRenderer = null;
1373        defaultValue._currentRenderer2 = null;
1374        return defaultValue;
1375      };
1376      exports.createElement = function(type, config2, children) {
1377        for (var i3 = 2; i3 < arguments.length; i3++)
1378          validateChildKeys(arguments[i3]);
1379        i3 = {};
1380        var key = null;
1381        if (null != config2)
1382          for (propName in didWarnAboutOldJSXRuntime || !("__self" in config2) || "key" in config2 || (didWarnAboutOldJSXRuntime = true, console.warn(
1383            "Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform"
1384          )), hasValidKey(config2) && (checkKeyStringCoercion(config2.key), key = "" + config2.key), config2)
1385            hasOwnProperty.call(config2, propName) && "key" !== propName && "__self" !== propName && "__source" !== propName && (i3[propName] = config2[propName]);
1386        var childrenLength = arguments.length - 2;
1387        if (1 === childrenLength) i3.children = children;
1388        else if (1 < childrenLength) {
1389          for (var childArray = Array(childrenLength), _i3 = 0; _i3 < childrenLength; _i3++)
1390            childArray[_i3] = arguments[_i3 + 2];
1391          Object.freeze && Object.freeze(childArray);
1392          i3.children = childArray;
1393        }
1394        if (type && type.defaultProps)
1395          for (propName in childrenLength = type.defaultProps, childrenLength)
1396            void 0 === i3[propName] && (i3[propName] = childrenLength[propName]);
1397        key && defineKeyPropWarningGetter(
1398          i3,
1399          "function" === typeof type ? type.displayName || type.name || "Unknown" : type
1400        );
1401        var propName = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
1402        return ReactElement(
1403          type,
1404          key,
1405          i3,
1406          getOwner(),
1407          propName ? Error("react-stack-top-frame") : unknownOwnerDebugStack,
1408          propName ? createTask(getTaskName(type)) : unknownOwnerDebugTask
1409        );
1410      };
1411      exports.createRef = function() {
1412        var refObject = { current: null };
1413        Object.seal(refObject);
1414        return refObject;
1415      };
1416      exports.forwardRef = function(render) {
1417        null != render && render.$$typeof === REACT_MEMO_TYPE ? console.error(
1418          "forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."
1419        ) : "function" !== typeof render ? console.error(
1420          "forwardRef requires a render function but was given %s.",
1421          null === render ? "null" : typeof render
1422        ) : 0 !== render.length && 2 !== render.length && console.error(
1423          "forwardRef render functions accept exactly two parameters: props and ref. %s",
1424          1 === render.length ? "Did you forget to use the ref parameter?" : "Any additional parameter will be undefined."
1425        );
1426        null != render && null != render.defaultProps && console.error(
1427          "forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?"
1428        );
1429        var elementType2 = { $$typeof: REACT_FORWARD_REF_TYPE, render }, ownName;
1430        Object.defineProperty(elementType2, "displayName", {
1431          enumerable: false,
1432          configurable: true,
1433          get: function() {
1434            return ownName;
1435          },
1436          set: function(name) {
1437            ownName = name;
1438            render.name || render.displayName || (Object.defineProperty(render, "name", { value: name }), render.displayName = name);
1439          }
1440        });
1441        return elementType2;
1442      };
1443      exports.isValidElement = isValidElement;
1444      exports.lazy = function(ctor) {
1445        ctor = { _status: -1, _result: ctor };
1446        var lazyType = {
1447          $$typeof: REACT_LAZY_TYPE,
1448          _payload: ctor,
1449          _init: lazyInitializer
1450        }, ioInfo = {
1451          name: "lazy",
1452          start: -1,
1453          end: -1,
1454          value: null,
1455          owner: null,
1456          debugStack: Error("react-stack-top-frame"),
1457          debugTask: console.createTask ? console.createTask("lazy()") : null
1458        };
1459        ctor._ioInfo = ioInfo;
1460        lazyType._debugInfo = [{ awaited: ioInfo }];
1461        return lazyType;
1462      };
1463      exports.memo = function(type, compare) {
1464        null == type && console.error(
1465          "memo: The first argument must be a component. Instead received: %s",
1466          null === type ? "null" : typeof type
1467        );
1468        compare = {
1469          $$typeof: REACT_MEMO_TYPE,
1470          type,
1471          compare: void 0 === compare ? null : compare
1472        };
1473        var ownName;
1474        Object.defineProperty(compare, "displayName", {
1475          enumerable: false,
1476          configurable: true,
1477          get: function() {
1478            return ownName;
1479          },
1480          set: function(name) {
1481            ownName = name;
1482            type.name || type.displayName || (Object.defineProperty(type, "name", { value: name }), type.displayName = name);
1483          }
1484        });
1485        return compare;
1486      };
1487      exports.startTransition = function(scope) {
1488        var prevTransition = ReactSharedInternals.T, currentTransition = {};
1489        currentTransition._updatedFibers = /* @__PURE__ */ new Set();
1490        ReactSharedInternals.T = currentTransition;
1491        try {
1492          var returnValue = scope(), onStartTransitionFinish = ReactSharedInternals.S;
1493          null !== onStartTransitionFinish && onStartTransitionFinish(currentTransition, returnValue);
1494          "object" === typeof returnValue && null !== returnValue && "function" === typeof returnValue.then && (ReactSharedInternals.asyncTransitions++, returnValue.then(releaseAsyncTransition, releaseAsyncTransition), returnValue.then(noop, reportGlobalError));
1495        } catch (error2) {
1496          reportGlobalError(error2);
1497        } finally {
1498          null === prevTransition && currentTransition._updatedFibers && (scope = currentTransition._updatedFibers.size, currentTransition._updatedFibers.clear(), 10 < scope && console.warn(
1499            "Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table."
1500          )), null !== prevTransition && null !== currentTransition.types && (null !== prevTransition.types && prevTransition.types !== currentTransition.types && console.error(
1501            "We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React."
1502          ), prevTransition.types = currentTransition.types), ReactSharedInternals.T = prevTransition;
1503        }
1504      };
1505      exports.unstable_useCacheRefresh = function() {
1506        return resolveDispatcher().useCacheRefresh();
1507      };
1508      exports.use = function(usable) {
1509        return resolveDispatcher().use(usable);
1510      };
1511      exports.useActionState = function(action, initialState, permalink) {
1512        return resolveDispatcher().useActionState(
1513          action,
1514          initialState,
1515          permalink
1516        );
1517      };
1518      exports.useCallback = function(callback, deps) {
1519        return resolveDispatcher().useCallback(callback, deps);
1520      };
1521      exports.useContext = function(Context2) {
1522        var dispatcher = resolveDispatcher();
1523        Context2.$$typeof === REACT_CONSUMER_TYPE && console.error(
1524          "Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?"
1525        );
1526        return dispatcher.useContext(Context2);
1527      };
1528      exports.useDebugValue = function(value, formatterFn) {
1529        return resolveDispatcher().useDebugValue(value, formatterFn);
1530      };
1531      exports.useDeferredValue = function(value, initialValue) {
1532        return resolveDispatcher().useDeferredValue(value, initialValue);
1533      };
1534      exports.useEffect = function(create, deps) {
1535        null == create && console.warn(
1536          "React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?"
1537        );
1538        return resolveDispatcher().useEffect(create, deps);
1539      };
1540      exports.useEffectEvent = function(callback) {
1541        return resolveDispatcher().useEffectEvent(callback);
1542      };
1543      exports.useId = function() {
1544        return resolveDispatcher().useId();
1545      };
1546      exports.useImperativeHandle = function(ref, create, deps) {
1547        return resolveDispatcher().useImperativeHandle(ref, create, deps);
1548      };
1549      exports.useInsertionEffect = function(create, deps) {
1550        null == create && console.warn(
1551          "React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?"
1552        );
1553        return resolveDispatcher().useInsertionEffect(create, deps);
1554      };
1555      exports.useLayoutEffect = function(create, deps) {
1556        null == create && console.warn(
1557          "React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?"
1558        );
1559        return resolveDispatcher().useLayoutEffect(create, deps);
1560      };
1561      exports.useMemo = function(create, deps) {
1562        return resolveDispatcher().useMemo(create, deps);
1563      };
1564      exports.useOptimistic = function(passthrough, reducer) {
1565        return resolveDispatcher().useOptimistic(passthrough, reducer);
1566      };
1567      exports.useReducer = function(reducer, initialArg, init) {
1568        return resolveDispatcher().useReducer(reducer, initialArg, init);
1569      };
1570      exports.useRef = function(initialValue) {
1571        return resolveDispatcher().useRef(initialValue);
1572      };
1573      exports.useState = function(initialState) {
1574        return resolveDispatcher().useState(initialState);
1575      };
1576      exports.useSyncExternalStore = function(subscribe, getSnapshot, getServerSnapshot) {
1577        return resolveDispatcher().useSyncExternalStore(
1578          subscribe,
1579          getSnapshot,
1580          getServerSnapshot
1581        );
1582      };
1583      exports.useTransition = function() {
1584        return resolveDispatcher().useTransition();
1585      };
1586      exports.version = "19.2.4";
1587      "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
1588    })();
1589  }
1590});
1591
vendor: 259 bytes, lines 1592-1603
1592// node_modules/react/index.js
1593var require_react = __commonJS({
1594  "node_modules/react/index.js"(exports, module) {
1595    "use strict";
1596    if (false) {
1597      module.exports = null;
1598    } else {
1599      module.exports = require_react_development();
1600    }
1601  }
1602});
1603
vendor: 11,450 bytes, lines 1604-1862
1604// node_modules/scheduler/cjs/scheduler.development.js
1605var require_scheduler_development = __commonJS({
1606  "node_modules/scheduler/cjs/scheduler.development.js"(exports) {
1607    "use strict";
1608    (function() {
1609      function performWorkUntilDeadline() {
1610        needsPaint = false;
1611        if (isMessageLoopRunning) {
1612          var currentTime = exports.unstable_now();
1613          startTime = currentTime;
1614          var hasMoreWork = true;
1615          try {
1616            a: {
1617              isHostCallbackScheduled = false;
1618              isHostTimeoutScheduled && (isHostTimeoutScheduled = false, localClearTimeout(taskTimeoutID), taskTimeoutID = -1);
1619              isPerformingWork = true;
1620              var previousPriorityLevel = currentPriorityLevel;
1621              try {
1622                b: {
1623                  advanceTimers(currentTime);
1624                  for (currentTask = peek(taskQueue); null !== currentTask && !(currentTask.expirationTime > currentTime && shouldYieldToHost()); ) {
1625                    var callback = currentTask.callback;
1626                    if ("function" === typeof callback) {
1627                      currentTask.callback = null;
1628                      currentPriorityLevel = currentTask.priorityLevel;
1629                      var continuationCallback = callback(
1630                        currentTask.expirationTime <= currentTime
1631                      );
1632                      currentTime = exports.unstable_now();
1633                      if ("function" === typeof continuationCallback) {
1634                        currentTask.callback = continuationCallback;
1635                        advanceTimers(currentTime);
1636                        hasMoreWork = true;
1637                        break b;
1638                      }
1639                      currentTask === peek(taskQueue) && pop(taskQueue);
1640                      advanceTimers(currentTime);
1641                    } else pop(taskQueue);
1642                    currentTask = peek(taskQueue);
1643                  }
1644                  if (null !== currentTask) hasMoreWork = true;
1645                  else {
1646                    var firstTimer = peek(timerQueue);
1647                    null !== firstTimer && requestHostTimeout(
1648                      handleTimeout,
1649                      firstTimer.startTime - currentTime
1650                    );
1651                    hasMoreWork = false;
1652                  }
1653                }
1654                break a;
1655              } finally {
1656                currentTask = null, currentPriorityLevel = previousPriorityLevel, isPerformingWork = false;
1657              }
1658              hasMoreWork = void 0;
1659            }
1660          } finally {
1661            hasMoreWork ? schedulePerformWorkUntilDeadline() : isMessageLoopRunning = false;
1662          }
1663        }
1664      }
1665      function push(heap, node) {
1666        var index = heap.length;
1667        heap.push(node);
1668        a: for (; 0 < index; ) {
1669          var parentIndex = index - 1 >>> 1, parent = heap[parentIndex];
1670          if (0 < compare(parent, node))
1671            heap[parentIndex] = node, heap[index] = parent, index = parentIndex;
1672          else break a;
1673        }
1674      }
1675      function peek(heap) {
1676        return 0 === heap.length ? null : heap[0];
1677      }
1678      function pop(heap) {
1679        if (0 === heap.length) return null;
1680        var first = heap[0], last = heap.pop();
1681        if (last !== first) {
1682          heap[0] = last;
1683          a: for (var index = 0, length = heap.length, halfLength = length >>> 1; index < halfLength; ) {
1684            var leftIndex = 2 * (index + 1) - 1, left = heap[leftIndex], rightIndex = leftIndex + 1, right = heap[rightIndex];
1685            if (0 > compare(left, last))
1686              rightIndex < length && 0 > compare(right, left) ? (heap[index] = right, heap[rightIndex] = last, index = rightIndex) : (heap[index] = left, heap[leftIndex] = last, index = leftIndex);
1687            else if (rightIndex < length && 0 > compare(right, last))
1688              heap[index] = right, heap[rightIndex] = last, index = rightIndex;
1689            else break a;
1690          }
1691        }
1692        return first;
1693      }
1694      function compare(a3, b3) {
1695        var diff = a3.sortIndex - b3.sortIndex;
1696        return 0 !== diff ? diff : a3.id - b3.id;
1697      }
1698      function advanceTimers(currentTime) {
1699        for (var timer = peek(timerQueue); null !== timer; ) {
1700          if (null === timer.callback) pop(timerQueue);
1701          else if (timer.startTime <= currentTime)
1702            pop(timerQueue), timer.sortIndex = timer.expirationTime, push(taskQueue, timer);
1703          else break;
1704          timer = peek(timerQueue);
1705        }
1706      }
1707      function handleTimeout(currentTime) {
1708        isHostTimeoutScheduled = false;
1709        advanceTimers(currentTime);
1710        if (!isHostCallbackScheduled)
1711          if (null !== peek(taskQueue))
1712            isHostCallbackScheduled = true, isMessageLoopRunning || (isMessageLoopRunning = true, schedulePerformWorkUntilDeadline());
1713          else {
1714            var firstTimer = peek(timerQueue);
1715            null !== firstTimer && requestHostTimeout(
1716              handleTimeout,
1717              firstTimer.startTime - currentTime
1718            );
1719          }
1720      }
1721      function shouldYieldToHost() {
1722        return needsPaint ? true : exports.unstable_now() - startTime < frameInterval ? false : true;
1723      }
1724      function requestHostTimeout(callback, ms3) {
1725        taskTimeoutID = localSetTimeout(function() {
1726          callback(exports.unstable_now());
1727        }, ms3);
1728      }
1729      "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
1730      exports.unstable_now = void 0;
1731      if ("object" === typeof performance && "function" === typeof performance.now) {
1732        var localPerformance = performance;
1733        exports.unstable_now = function() {
1734          return localPerformance.now();
1735        };
1736      } else {
1737        var localDate = Date, initialTime = localDate.now();
1738        exports.unstable_now = function() {
1739          return localDate.now() - initialTime;
1740        };
1741      }
1742      var taskQueue = [], timerQueue = [], taskIdCounter = 1, currentTask = null, currentPriorityLevel = 3, isPerformingWork = false, isHostCallbackScheduled = false, isHostTimeoutScheduled = false, needsPaint = false, localSetTimeout = "function" === typeof setTimeout ? setTimeout : null, localClearTimeout = "function" === typeof clearTimeout ? clearTimeout : null, localSetImmediate = "undefined" !== typeof setImmediate ? setImmediate : null, isMessageLoopRunning = false, taskTimeoutID = -1, frameInterval = 5, startTime = -1;
1743      if ("function" === typeof localSetImmediate)
1744        var schedulePerformWorkUntilDeadline = function() {
1745          localSetImmediate(performWorkUntilDeadline);
1746        };
1747      else if ("undefined" !== typeof MessageChannel) {
1748        var channel = new MessageChannel(), port = channel.port2;
1749        channel.port1.onmessage = performWorkUntilDeadline;
1750        schedulePerformWorkUntilDeadline = function() {
1751          port.postMessage(null);
1752        };
1753      } else
1754        schedulePerformWorkUntilDeadline = function() {
1755          localSetTimeout(performWorkUntilDeadline, 0);
1756        };
1757      exports.unstable_IdlePriority = 5;
1758      exports.unstable_ImmediatePriority = 1;
1759      exports.unstable_LowPriority = 4;
1760      exports.unstable_NormalPriority = 3;
1761      exports.unstable_Profiling = null;
1762      exports.unstable_UserBlockingPriority = 2;
1763      exports.unstable_cancelCallback = function(task) {
1764        task.callback = null;
1765      };
1766      exports.unstable_forceFrameRate = function(fps) {
1767        0 > fps || 125 < fps ? console.error(
1768          "forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"
1769        ) : frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5;
1770      };
1771      exports.unstable_getCurrentPriorityLevel = function() {
1772        return currentPriorityLevel;
1773      };
1774      exports.unstable_next = function(eventHandler) {
1775        switch (currentPriorityLevel) {
1776          case 1:
1777          case 2:
1778          case 3:
1779            var priorityLevel = 3;
1780            break;
1781          default:
1782            priorityLevel = currentPriorityLevel;
1783        }
1784        var previousPriorityLevel = currentPriorityLevel;
1785        currentPriorityLevel = priorityLevel;
1786        try {
1787          return eventHandler();
1788        } finally {
1789          currentPriorityLevel = previousPriorityLevel;
1790        }
1791      };
1792      exports.unstable_requestPaint = function() {
1793        needsPaint = true;
1794      };
1795      exports.unstable_runWithPriority = function(priorityLevel, eventHandler) {
1796        switch (priorityLevel) {
1797          case 1:
1798          case 2:
1799          case 3:
1800          case 4:
1801          case 5:
1802            break;
1803          default:
1804            priorityLevel = 3;
1805        }
1806        var previousPriorityLevel = currentPriorityLevel;
1807        currentPriorityLevel = priorityLevel;
1808        try {
1809          return eventHandler();
1810        } finally {
1811          currentPriorityLevel = previousPriorityLevel;
1812        }
1813      };
1814      exports.unstable_scheduleCallback = function(priorityLevel, callback, options) {
1815        var currentTime = exports.unstable_now();
1816        "object" === typeof options && null !== options ? (options = options.delay, options = "number" === typeof options && 0 < options ? currentTime + options : currentTime) : options = currentTime;
1817        switch (priorityLevel) {
1818          case 1:
1819            var timeout = -1;
1820            break;
1821          case 2:
1822            timeout = 250;
1823            break;
1824          case 5:
1825            timeout = 1073741823;
1826            break;
1827          case 4:
1828            timeout = 1e4;
1829            break;
1830          default:
1831            timeout = 5e3;
1832        }
1833        timeout = options + timeout;
1834        priorityLevel = {
1835          id: taskIdCounter++,
1836          callback,
1837          priorityLevel,
1838          startTime: options,
1839          expirationTime: timeout,
1840          sortIndex: -1
1841        };
1842        options > currentTime ? (priorityLevel.sortIndex = options, push(timerQueue, priorityLevel), null === peek(taskQueue) && priorityLevel === peek(timerQueue) && (isHostTimeoutScheduled ? (localClearTimeout(taskTimeoutID), taskTimeoutID = -1) : isHostTimeoutScheduled = true, requestHostTimeout(handleTimeout, options - currentTime))) : (priorityLevel.sortIndex = timeout, push(taskQueue, priorityLevel), isHostCallbackScheduled || isPerformingWork || (isHostCallbackScheduled = true, isMessageLoopRunning || (isMessageLoopRunning = true, schedulePerformWorkUntilDeadline())));
1843        return priorityLevel;
1844      };
1845      exports.unstable_shouldYield = shouldYieldToHost;
1846      exports.unstable_wrapCallback = function(callback) {
1847        var parentPriorityLevel = currentPriorityLevel;
1848        return function() {
1849          var previousPriorityLevel = currentPriorityLevel;
1850          currentPriorityLevel = parentPriorityLevel;
1851          try {
1852            return callback.apply(this, arguments);
1853          } finally {
1854            currentPriorityLevel = previousPriorityLevel;
1855          }
1856        };
1857      };
1858      "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
1859    })();
1860  }
1861});
1862
vendor: 275 bytes, lines 1863-1874
1863// node_modules/scheduler/index.js
1864var require_scheduler = __commonJS({
1865  "node_modules/scheduler/index.js"(exports, module) {
1866    "use strict";
1867    if (false) {
1868      module.exports = null;
1869    } else {
1870      module.exports = require_scheduler_development();
1871    }
1872  }
1873});
1874
vendor: 15,706 bytes, lines 1875-2118
1875// node_modules/react-dom/cjs/react-dom.development.js
1876var require_react_dom_development = __commonJS({
1877  "node_modules/react-dom/cjs/react-dom.development.js"(exports) {
1878    "use strict";
1879    (function() {
1880      function noop() {
1881      }
1882      function testStringCoercion(value) {
1883        return "" + value;
1884      }
1885      function createPortal$1(children, containerInfo, implementation) {
1886        var key = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;
1887        try {
1888          testStringCoercion(key);
1889          var JSCompiler_inline_result = false;
1890        } catch (e3) {
1891          JSCompiler_inline_result = true;
1892        }
1893        JSCompiler_inline_result && (console.error(
1894          "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
1895          "function" === typeof Symbol && Symbol.toStringTag && key[Symbol.toStringTag] || key.constructor.name || "Object"
1896        ), testStringCoercion(key));
1897        return {
1898          $$typeof: REACT_PORTAL_TYPE,
1899          key: null == key ? null : "" + key,
1900          children,
1901          containerInfo,
1902          implementation
1903        };
1904      }
1905      function getCrossOriginStringAs(as3, input) {
1906        if ("font" === as3) return "";
1907        if ("string" === typeof input)
1908          return "use-credentials" === input ? input : "";
1909      }
1910      function getValueDescriptorExpectingObjectForWarning(thing) {
1911        return null === thing ? "`null`" : void 0 === thing ? "`undefined`" : "" === thing ? "an empty string" : 'something with type "' + typeof thing + '"';
1912      }
1913      function getValueDescriptorExpectingEnumForWarning(thing) {
1914        return null === thing ? "`null`" : void 0 === thing ? "`undefined`" : "" === thing ? "an empty string" : "string" === typeof thing ? JSON.stringify(thing) : "number" === typeof thing ? "`" + thing + "`" : 'something with type "' + typeof thing + '"';
1915      }
1916      function resolveDispatcher() {
1917        var dispatcher = ReactSharedInternals.H;
1918        null === dispatcher && console.error(
1919          "Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem."
1920        );
1921        return dispatcher;
1922      }
1923      "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
1924      var React19 = require_react(), Internals = {
1925        d: {
1926          f: noop,
1927          r: function() {
1928            throw Error(
1929              "Invalid form element. requestFormReset must be passed a form that was rendered by React."
1930            );
1931          },
1932          D: noop,
1933          C: noop,
1934          L: noop,
1935          m: noop,
1936          X: noop,
1937          S: noop,
1938          M: noop
1939        },
1940        p: 0,
1941        findDOMNode: null
1942      }, REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for("react.portal"), ReactSharedInternals = React19.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
1943      "function" === typeof Map && null != Map.prototype && "function" === typeof Map.prototype.forEach && "function" === typeof Set && null != Set.prototype && "function" === typeof Set.prototype.clear && "function" === typeof Set.prototype.forEach || console.error(
1944        "React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"
1945      );
1946      exports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = Internals;
1947      exports.createPortal = function(children, container) {
1948        var key = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;
1949        if (!container || 1 !== container.nodeType && 9 !== container.nodeType && 11 !== container.nodeType)
1950          throw Error("Target container is not a DOM element.");
1951        return createPortal$1(children, container, null, key);
1952      };
1953      exports.flushSync = function(fn3) {
1954        var previousTransition = ReactSharedInternals.T, previousUpdatePriority = Internals.p;
1955        try {
1956          if (ReactSharedInternals.T = null, Internals.p = 2, fn3)
1957            return fn3();
1958        } finally {
1959          ReactSharedInternals.T = previousTransition, Internals.p = previousUpdatePriority, Internals.d.f() && console.error(
1960            "flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task."
1961          );
1962        }
1963      };
1964      exports.preconnect = function(href, options) {
1965        "string" === typeof href && href ? null != options && "object" !== typeof options ? console.error(
1966          "ReactDOM.preconnect(): Expected the `options` argument (second) to be an object but encountered %s instead. The only supported option at this time is `crossOrigin` which accepts a string.",
1967          getValueDescriptorExpectingEnumForWarning(options)
1968        ) : null != options && "string" !== typeof options.crossOrigin && console.error(
1969          "ReactDOM.preconnect(): Expected the `crossOrigin` option (second argument) to be a string but encountered %s instead. Try removing this option or passing a string value instead.",
1970          getValueDescriptorExpectingObjectForWarning(options.crossOrigin)
1971        ) : console.error(
1972          "ReactDOM.preconnect(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",
1973          getValueDescriptorExpectingObjectForWarning(href)
1974        );
1975        "string" === typeof href && (options ? (options = options.crossOrigin, options = "string" === typeof options ? "use-credentials" === options ? options : "" : void 0) : options = null, Internals.d.C(href, options));
1976      };
1977      exports.prefetchDNS = function(href) {
1978        if ("string" !== typeof href || !href)
1979          console.error(
1980            "ReactDOM.prefetchDNS(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",
1981            getValueDescriptorExpectingObjectForWarning(href)
1982          );
1983        else if (1 < arguments.length) {
1984          var options = arguments[1];
1985          "object" === typeof options && options.hasOwnProperty("crossOrigin") ? console.error(
1986            "ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. It looks like the you are attempting to set a crossOrigin property for this DNS lookup hint. Browsers do not perform DNS queries using CORS and setting this attribute on the resource hint has no effect. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.",
1987            getValueDescriptorExpectingEnumForWarning(options)
1988          ) : console.error(
1989            "ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.",
1990            getValueDescriptorExpectingEnumForWarning(options)
1991          );
1992        }
1993        "string" === typeof href && Internals.d.D(href);
1994      };
1995      exports.preinit = function(href, options) {
1996        "string" === typeof href && href ? null == options || "object" !== typeof options ? console.error(
1997          "ReactDOM.preinit(): Expected the `options` argument (second) to be an object with an `as` property describing the type of resource to be preinitialized but encountered %s instead.",
1998          getValueDescriptorExpectingEnumForWarning(options)
1999        ) : "style" !== options.as && "script" !== options.as && console.error(
2000          'ReactDOM.preinit(): Expected the `as` property in the `options` argument (second) to contain a valid value describing the type of resource to be preinitialized but encountered %s instead. Valid values for `as` are "style" and "script".',
2001          getValueDescriptorExpectingEnumForWarning(options.as)
2002        ) : console.error(
2003          "ReactDOM.preinit(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",
2004          getValueDescriptorExpectingObjectForWarning(href)
2005        );
2006        if ("string" === typeof href && options && "string" === typeof options.as) {
2007          var as3 = options.as, crossOrigin = getCrossOriginStringAs(as3, options.crossOrigin), integrity = "string" === typeof options.integrity ? options.integrity : void 0, fetchPriority = "string" === typeof options.fetchPriority ? options.fetchPriority : void 0;
2008          "style" === as3 ? Internals.d.S(
2009            href,
2010            "string" === typeof options.precedence ? options.precedence : void 0,
2011            {
2012              crossOrigin,
2013              integrity,
2014              fetchPriority
2015            }
2016          ) : "script" === as3 && Internals.d.X(href, {
2017            crossOrigin,
2018            integrity,
2019            fetchPriority,
2020            nonce: "string" === typeof options.nonce ? options.nonce : void 0
2021          });
2022        }
2023      };
2024      exports.preinitModule = function(href, options) {
2025        var encountered = "";
2026        "string" === typeof href && href || (encountered += " The `href` argument encountered was " + getValueDescriptorExpectingObjectForWarning(href) + ".");
2027        void 0 !== options && "object" !== typeof options ? encountered += " The `options` argument encountered was " + getValueDescriptorExpectingObjectForWarning(options) + "." : options && "as" in options && "script" !== options.as && (encountered += " The `as` option encountered was " + getValueDescriptorExpectingEnumForWarning(options.as) + ".");
2028        if (encountered)
2029          console.error(
2030            "ReactDOM.preinitModule(): Expected up to two arguments, a non-empty `href` string and, optionally, an `options` object with a valid `as` property.%s",
2031            encountered
2032          );
2033        else
2034          switch (encountered = options && "string" === typeof options.as ? options.as : "script", encountered) {
2035            case "script":
2036              break;
2037            default:
2038              encountered = getValueDescriptorExpectingEnumForWarning(encountered), console.error(
2039                'ReactDOM.preinitModule(): Currently the only supported "as" type for this function is "script" but received "%s" instead. This warning was generated for `href` "%s". In the future other module types will be supported, aligning with the import-attributes proposal. Learn more here: (https://github.com/tc39/proposal-import-attributes)',
2040                encountered,
2041                href
2042              );
2043          }
2044        if ("string" === typeof href)
2045          if ("object" === typeof options && null !== options) {
2046            if (null == options.as || "script" === options.as)
2047              encountered = getCrossOriginStringAs(
2048                options.as,
2049                options.crossOrigin
2050              ), Internals.d.M(href, {
2051                crossOrigin: encountered,
2052                integrity: "string" === typeof options.integrity ? options.integrity : void 0,
2053                nonce: "string" === typeof options.nonce ? options.nonce : void 0
2054              });
2055          } else null == options && Internals.d.M(href);
2056      };
2057      exports.preload = function(href, options) {
2058        var encountered = "";
2059        "string" === typeof href && href || (encountered += " The `href` argument encountered was " + getValueDescriptorExpectingObjectForWarning(href) + ".");
2060        null == options || "object" !== typeof options ? encountered += " The `options` argument encountered was " + getValueDescriptorExpectingObjectForWarning(options) + "." : "string" === typeof options.as && options.as || (encountered += " The `as` option encountered was " + getValueDescriptorExpectingObjectForWarning(options.as) + ".");
2061        encountered && console.error(
2062          'ReactDOM.preload(): Expected two arguments, a non-empty `href` string and an `options` object with an `as` property valid for a `<link rel="preload" as="..." />` tag.%s',
2063          encountered
2064        );
2065        if ("string" === typeof href && "object" === typeof options && null !== options && "string" === typeof options.as) {
2066          encountered = options.as;
2067          var crossOrigin = getCrossOriginStringAs(
2068            encountered,
2069            options.crossOrigin
2070          );
2071          Internals.d.L(href, encountered, {
2072            crossOrigin,
2073            integrity: "string" === typeof options.integrity ? options.integrity : void 0,
2074            nonce: "string" === typeof options.nonce ? options.nonce : void 0,
2075            type: "string" === typeof options.type ? options.type : void 0,
2076            fetchPriority: "string" === typeof options.fetchPriority ? options.fetchPriority : void 0,
2077            referrerPolicy: "string" === typeof options.referrerPolicy ? options.referrerPolicy : void 0,
2078            imageSrcSet: "string" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,
2079            imageSizes: "string" === typeof options.imageSizes ? options.imageSizes : void 0,
2080            media: "string" === typeof options.media ? options.media : void 0
2081          });
2082        }
2083      };
2084      exports.preloadModule = function(href, options) {
2085        var encountered = "";
2086        "string" === typeof href && href || (encountered += " The `href` argument encountered was " + getValueDescriptorExpectingObjectForWarning(href) + ".");
2087        void 0 !== options && "object" !== typeof options ? encountered += " The `options` argument encountered was " + getValueDescriptorExpectingObjectForWarning(options) + "." : options && "as" in options && "string" !== typeof options.as && (encountered += " The `as` option encountered was " + getValueDescriptorExpectingObjectForWarning(options.as) + ".");
2088        encountered && console.error(
2089          'ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `<link rel="modulepreload" as="..." />` tag.%s',
2090          encountered
2091        );
2092        "string" === typeof href && (options ? (encountered = getCrossOriginStringAs(
2093          options.as,
2094          options.crossOrigin
2095        ), Internals.d.m(href, {
2096          as: "string" === typeof options.as && "script" !== options.as ? options.as : void 0,
2097          crossOrigin: encountered,
2098          integrity: "string" === typeof options.integrity ? options.integrity : void 0
2099        })) : Internals.d.m(href));
2100      };
2101      exports.requestFormReset = function(form) {
2102        Internals.d.r(form);
2103      };
2104      exports.unstable_batchedUpdates = function(fn3, a3) {
2105        return fn3(a3);
2106      };
2107      exports.useFormState = function(action, initialState, permalink) {
2108        return resolveDispatcher().useFormState(action, initialState, permalink);
2109      };
2110      exports.useFormStatus = function() {
2111        return resolveDispatcher().useHostTransitionStatus();
2112      };
2113      exports.version = "19.2.4";
2114      "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
2115    })();
2116  }
2117});
2118
vendor: 293 bytes, lines 2119-2131
2119// node_modules/react-dom/index.js
2120var require_react_dom = __commonJS({
2121  "node_modules/react-dom/index.js"(exports, module) {
2122    "use strict";
2123    if (false) {
2124      checkDCE();
2125      module.exports = null;
2126    } else {
2127      module.exports = require_react_dom_development();
2128    }
2129  }
2130});
2131
vendor: 993,841 bytes, lines 2132-22030
2132// node_modules/react-dom/cjs/react-dom-client.development.js
2133var require_react_dom_client_development = __commonJS({
2134  "node_modules/react-dom/cjs/react-dom-client.development.js"(exports) {
2135    "use strict";
2136    (function() {
2137      function findHook(fiber, id) {
2138        for (fiber = fiber.memoizedState; null !== fiber && 0 < id; )
2139          fiber = fiber.next, id--;
2140        return fiber;
2141      }
2142      function copyWithSetImpl(obj, path, index, value) {
2143        if (index >= path.length) return value;
2144        var key = path[index], updated = isArrayImpl(obj) ? obj.slice() : assign({}, obj);
2145        updated[key] = copyWithSetImpl(obj[key], path, index + 1, value);
2146        return updated;
2147      }
2148      function copyWithRename(obj, oldPath, newPath) {
2149        if (oldPath.length !== newPath.length)
2150          console.warn("copyWithRename() expects paths of the same length");
2151        else {
2152          for (var i3 = 0; i3 < newPath.length - 1; i3++)
2153            if (oldPath[i3] !== newPath[i3]) {
2154              console.warn(
2155                "copyWithRename() expects paths to be the same except for the deepest key"
2156              );
2157              return;
2158            }
2159          return copyWithRenameImpl(obj, oldPath, newPath, 0);
2160        }
2161      }
2162      function copyWithRenameImpl(obj, oldPath, newPath, index) {
2163        var oldKey = oldPath[index], updated = isArrayImpl(obj) ? obj.slice() : assign({}, obj);
2164        index + 1 === oldPath.length ? (updated[newPath[index]] = updated[oldKey], isArrayImpl(updated) ? updated.splice(oldKey, 1) : delete updated[oldKey]) : updated[oldKey] = copyWithRenameImpl(
2165          obj[oldKey],
2166          oldPath,
2167          newPath,
2168          index + 1
2169        );
2170        return updated;
2171      }
2172      function copyWithDeleteImpl(obj, path, index) {
2173        var key = path[index], updated = isArrayImpl(obj) ? obj.slice() : assign({}, obj);
2174        if (index + 1 === path.length)
2175          return isArrayImpl(updated) ? updated.splice(key, 1) : delete updated[key], updated;
2176        updated[key] = copyWithDeleteImpl(obj[key], path, index + 1);
2177        return updated;
2178      }
2179      function shouldSuspendImpl() {
2180        return false;
2181      }
2182      function shouldErrorImpl() {
2183        return null;
2184      }
2185      function warnInvalidHookAccess() {
2186        console.error(
2187          "Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. You can only call Hooks at the top level of your React function. For more information, see https://react.dev/link/rules-of-hooks"
2188        );
2189      }
2190      function warnInvalidContextAccess() {
2191        console.error(
2192          "Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo()."
2193        );
2194      }
2195      function noop() {
2196      }
2197      function warnForMissingKey() {
2198      }
2199      function setToSortedString(set) {
2200        var array = [];
2201        set.forEach(function(value) {
2202          array.push(value);
2203        });
2204        return array.sort().join(", ");
2205      }
2206      function createFiber(tag, pendingProps, key, mode2) {
2207        return new FiberNode(tag, pendingProps, key, mode2);
2208      }
2209      function scheduleRoot(root3, element) {
2210        root3.context === emptyContextObject && (updateContainerImpl(root3.current, 2, element, root3, null, null), flushSyncWork$1());
2211      }
2212      function scheduleRefresh(root3, update) {
2213        if (null !== resolveFamily) {
2214          var staleFamilies = update.staleFamilies;
2215          update = update.updatedFamilies;
2216          flushPendingEffects();
2217          scheduleFibersWithFamiliesRecursively(
2218            root3.current,
2219            update,
2220            staleFamilies
2221          );
2222          flushSyncWork$1();
2223        }
2224      }
2225      function setRefreshHandler(handler) {
2226        resolveFamily = handler;
2227      }
2228      function isValidContainer(node) {
2229        return !(!node || 1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType);
2230      }
2231      function getNearestMountedFiber(fiber) {
2232        var node = fiber, nearestMounted = fiber;
2233        if (fiber.alternate) for (; node.return; ) node = node.return;
2234        else {
2235          fiber = node;
2236          do
2237            node = fiber, 0 !== (node.flags & 4098) && (nearestMounted = node.return), fiber = node.return;
2238          while (fiber);
2239        }
2240        return 3 === node.tag ? nearestMounted : null;
2241      }
2242      function getSuspenseInstanceFromFiber(fiber) {
2243        if (13 === fiber.tag) {
2244          var suspenseState = fiber.memoizedState;
2245          null === suspenseState && (fiber = fiber.alternate, null !== fiber && (suspenseState = fiber.memoizedState));
2246          if (null !== suspenseState) return suspenseState.dehydrated;
2247        }
2248        return null;
2249      }
2250      function getActivityInstanceFromFiber(fiber) {
2251        if (31 === fiber.tag) {
2252          var activityState = fiber.memoizedState;
2253          null === activityState && (fiber = fiber.alternate, null !== fiber && (activityState = fiber.memoizedState));
2254          if (null !== activityState) return activityState.dehydrated;
2255        }
2256        return null;
2257      }
2258      function assertIsMounted(fiber) {
2259        if (getNearestMountedFiber(fiber) !== fiber)
2260          throw Error("Unable to find node on an unmounted component.");
2261      }
2262      function findCurrentFiberUsingSlowPath(fiber) {
2263        var alternate = fiber.alternate;
2264        if (!alternate) {
2265          alternate = getNearestMountedFiber(fiber);
2266          if (null === alternate)
2267            throw Error("Unable to find node on an unmounted component.");
2268          return alternate !== fiber ? null : fiber;
2269        }
2270        for (var a3 = fiber, b3 = alternate; ; ) {
2271          var parentA = a3.return;
2272          if (null === parentA) break;
2273          var parentB = parentA.alternate;
2274          if (null === parentB) {
2275            b3 = parentA.return;
2276            if (null !== b3) {
2277              a3 = b3;
2278              continue;
2279            }
2280            break;
2281          }
2282          if (parentA.child === parentB.child) {
2283            for (parentB = parentA.child; parentB; ) {
2284              if (parentB === a3) return assertIsMounted(parentA), fiber;
2285              if (parentB === b3) return assertIsMounted(parentA), alternate;
2286              parentB = parentB.sibling;
2287            }
2288            throw Error("Unable to find node on an unmounted component.");
2289          }
2290          if (a3.return !== b3.return) a3 = parentA, b3 = parentB;
2291          else {
2292            for (var didFindChild = false, _child = parentA.child; _child; ) {
2293              if (_child === a3) {
2294                didFindChild = true;
2295                a3 = parentA;
2296                b3 = parentB;
2297                break;
2298              }
2299              if (_child === b3) {
2300                didFindChild = true;
2301                b3 = parentA;
2302                a3 = parentB;
2303                break;
2304              }
2305              _child = _child.sibling;
2306            }
2307            if (!didFindChild) {
2308              for (_child = parentB.child; _child; ) {
2309                if (_child === a3) {
2310                  didFindChild = true;
2311                  a3 = parentB;
2312                  b3 = parentA;
2313                  break;
2314                }
2315                if (_child === b3) {
2316                  didFindChild = true;
2317                  b3 = parentB;
2318                  a3 = parentA;
2319                  break;
2320                }
2321                _child = _child.sibling;
2322              }
2323              if (!didFindChild)
2324                throw Error(
2325                  "Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue."
2326                );
2327            }
2328          }
2329          if (a3.alternate !== b3)
2330            throw Error(
2331              "Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue."
2332            );
2333        }
2334        if (3 !== a3.tag)
2335          throw Error("Unable to find node on an unmounted component.");
2336        return a3.stateNode.current === a3 ? fiber : alternate;
2337      }
2338      function findCurrentHostFiberImpl(node) {
2339        var tag = node.tag;
2340        if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;
2341        for (node = node.child; null !== node; ) {
2342          tag = findCurrentHostFiberImpl(node);
2343          if (null !== tag) return tag;
2344          node = node.sibling;
2345        }
2346        return null;
2347      }
2348      function getIteratorFn(maybeIterable) {
2349        if (null === maybeIterable || "object" !== typeof maybeIterable)
2350          return null;
2351        maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable["@@iterator"];
2352        return "function" === typeof maybeIterable ? maybeIterable : null;
2353      }
2354      function getComponentNameFromType(type) {
2355        if (null == type) return null;
2356        if ("function" === typeof type)
2357          return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null;
2358        if ("string" === typeof type) return type;
2359        switch (type) {
2360          case REACT_FRAGMENT_TYPE:
2361            return "Fragment";
2362          case REACT_PROFILER_TYPE:
2363            return "Profiler";
2364          case REACT_STRICT_MODE_TYPE:
2365            return "StrictMode";
2366          case REACT_SUSPENSE_TYPE:
2367            return "Suspense";
2368          case REACT_SUSPENSE_LIST_TYPE:
2369            return "SuspenseList";
2370          case REACT_ACTIVITY_TYPE:
2371            return "Activity";
2372        }
2373        if ("object" === typeof type)
2374          switch ("number" === typeof type.tag && console.error(
2375            "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
2376          ), type.$$typeof) {
2377            case REACT_PORTAL_TYPE:
2378              return "Portal";
2379            case REACT_CONTEXT_TYPE:
2380              return type.displayName || "Context";
2381            case REACT_CONSUMER_TYPE:
2382              return (type._context.displayName || "Context") + ".Consumer";
2383            case REACT_FORWARD_REF_TYPE:
2384              var innerType = type.render;
2385              type = type.displayName;
2386              type || (type = innerType.displayName || innerType.name || "", type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef");
2387              return type;
2388            case REACT_MEMO_TYPE:
2389              return innerType = type.displayName || null, null !== innerType ? innerType : getComponentNameFromType(type.type) || "Memo";
2390            case REACT_LAZY_TYPE:
2391              innerType = type._payload;
2392              type = type._init;
2393              try {
2394                return getComponentNameFromType(type(innerType));
2395              } catch (x3) {
2396              }
2397          }
2398        return null;
2399      }
2400      function getComponentNameFromOwner(owner) {
2401        return "number" === typeof owner.tag ? getComponentNameFromFiber(owner) : "string" === typeof owner.name ? owner.name : null;
2402      }
2403      function getComponentNameFromFiber(fiber) {
2404        var type = fiber.type;
2405        switch (fiber.tag) {
2406          case 31:
2407            return "Activity";
2408          case 24:
2409            return "Cache";
2410          case 9:
2411            return (type._context.displayName || "Context") + ".Consumer";
2412          case 10:
2413            return type.displayName || "Context";
2414          case 18:
2415            return "DehydratedFragment";
2416          case 11:
2417            return fiber = type.render, fiber = fiber.displayName || fiber.name || "", type.displayName || ("" !== fiber ? "ForwardRef(" + fiber + ")" : "ForwardRef");
2418          case 7:
2419            return "Fragment";
2420          case 26:
2421          case 27:
2422          case 5:
2423            return type;
2424          case 4:
2425            return "Portal";
2426          case 3:
2427            return "Root";
2428          case 6:
2429            return "Text";
2430          case 16:
2431            return getComponentNameFromType(type);
2432          case 8:
2433            return type === REACT_STRICT_MODE_TYPE ? "StrictMode" : "Mode";
2434          case 22:
2435            return "Offscreen";
2436          case 12:
2437            return "Profiler";
2438          case 21:
2439            return "Scope";
2440          case 13:
2441            return "Suspense";
2442          case 19:
2443            return "SuspenseList";
2444          case 25:
2445            return "TracingMarker";
2446          case 1:
2447          case 0:
2448          case 14:
2449          case 15:
2450            if ("function" === typeof type)
2451              return type.displayName || type.name || null;
2452            if ("string" === typeof type) return type;
2453            break;
2454          case 29:
2455            type = fiber._debugInfo;
2456            if (null != type) {
2457              for (var i3 = type.length - 1; 0 <= i3; i3--)
2458                if ("string" === typeof type[i3].name) return type[i3].name;
2459            }
2460            if (null !== fiber.return)
2461              return getComponentNameFromFiber(fiber.return);
2462        }
2463        return null;
2464      }
2465      function createCursor(defaultValue) {
2466        return { current: defaultValue };
2467      }
2468      function pop(cursor, fiber) {
2469        0 > index$jscomp$0 ? console.error("Unexpected pop.") : (fiber !== fiberStack[index$jscomp$0] && console.error("Unexpected Fiber popped."), cursor.current = valueStack[index$jscomp$0], valueStack[index$jscomp$0] = null, fiberStack[index$jscomp$0] = null, index$jscomp$0--);
2470      }
2471      function push(cursor, value, fiber) {
2472        index$jscomp$0++;
2473        valueStack[index$jscomp$0] = cursor.current;
2474        fiberStack[index$jscomp$0] = fiber;
2475        cursor.current = value;
2476      }
2477      function requiredContext(c3) {
2478        null === c3 && console.error(
2479          "Expected host context to exist. This error is likely caused by a bug in React. Please file an issue."
2480        );
2481        return c3;
2482      }
2483      function pushHostContainer(fiber, nextRootInstance) {
2484        push(rootInstanceStackCursor, nextRootInstance, fiber);
2485        push(contextFiberStackCursor, fiber, fiber);
2486        push(contextStackCursor, null, fiber);
2487        var nextRootContext = nextRootInstance.nodeType;
2488        switch (nextRootContext) {
2489          case 9:
2490          case 11:
2491            nextRootContext = 9 === nextRootContext ? "#document" : "#fragment";
2492            nextRootInstance = (nextRootInstance = nextRootInstance.documentElement) ? (nextRootInstance = nextRootInstance.namespaceURI) ? getOwnHostContext(nextRootInstance) : HostContextNamespaceNone : HostContextNamespaceNone;
2493            break;
2494          default:
2495            if (nextRootContext = nextRootInstance.tagName, nextRootInstance = nextRootInstance.namespaceURI)
2496              nextRootInstance = getOwnHostContext(nextRootInstance), nextRootInstance = getChildHostContextProd(
2497                nextRootInstance,
2498                nextRootContext
2499              );
2500            else
2501              switch (nextRootContext) {
2502                case "svg":
2503                  nextRootInstance = HostContextNamespaceSvg;
2504                  break;
2505                case "math":
2506                  nextRootInstance = HostContextNamespaceMath;
2507                  break;
2508                default:
2509                  nextRootInstance = HostContextNamespaceNone;
2510              }
2511        }
2512        nextRootContext = nextRootContext.toLowerCase();
2513        nextRootContext = updatedAncestorInfoDev(null, nextRootContext);
2514        nextRootContext = {
2515          context: nextRootInstance,
2516          ancestorInfo: nextRootContext
2517        };
2518        pop(contextStackCursor, fiber);
2519        push(contextStackCursor, nextRootContext, fiber);
2520      }
2521      function popHostContainer(fiber) {
2522        pop(contextStackCursor, fiber);
2523        pop(contextFiberStackCursor, fiber);
2524        pop(rootInstanceStackCursor, fiber);
2525      }
2526      function getHostContext() {
2527        return requiredContext(contextStackCursor.current);
2528      }
2529      function pushHostContext(fiber) {
2530        null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber, fiber);
2531        var context = requiredContext(contextStackCursor.current);
2532        var type = fiber.type;
2533        var nextContext = getChildHostContextProd(context.context, type);
2534        type = updatedAncestorInfoDev(context.ancestorInfo, type);
2535        nextContext = { context: nextContext, ancestorInfo: type };
2536        context !== nextContext && (push(contextFiberStackCursor, fiber, fiber), push(contextStackCursor, nextContext, fiber));
2537      }
2538      function popHostContext(fiber) {
2539        contextFiberStackCursor.current === fiber && (pop(contextStackCursor, fiber), pop(contextFiberStackCursor, fiber));
2540        hostTransitionProviderCursor.current === fiber && (pop(hostTransitionProviderCursor, fiber), HostTransitionContext._currentValue = NotPendingTransition);
2541      }
2542      function disabledLog() {
2543      }
2544      function disableLogs() {
2545        if (0 === disabledDepth) {
2546          prevLog = console.log;
2547          prevInfo = console.info;
2548          prevWarn = console.warn;
2549          prevError = console.error;
2550          prevGroup = console.group;
2551          prevGroupCollapsed = console.groupCollapsed;
2552          prevGroupEnd = console.groupEnd;
2553          var props = {
2554            configurable: true,
2555            enumerable: true,
2556            value: disabledLog,
2557            writable: true
2558          };
2559          Object.defineProperties(console, {
2560            info: props,
2561            log: props,
2562            warn: props,
2563            error: props,
2564            group: props,
2565            groupCollapsed: props,
2566            groupEnd: props
2567          });
2568        }
2569        disabledDepth++;
2570      }
2571      function reenableLogs() {
2572        disabledDepth--;
2573        if (0 === disabledDepth) {
2574          var props = { configurable: true, enumerable: true, writable: true };
2575          Object.defineProperties(console, {
2576            log: assign({}, props, { value: prevLog }),
2577            info: assign({}, props, { value: prevInfo }),
2578            warn: assign({}, props, { value: prevWarn }),
2579            error: assign({}, props, { value: prevError }),
2580            group: assign({}, props, { value: prevGroup }),
2581            groupCollapsed: assign({}, props, { value: prevGroupCollapsed }),
2582            groupEnd: assign({}, props, { value: prevGroupEnd })
2583          });
2584        }
2585        0 > disabledDepth && console.error(
2586          "disabledDepth fell below zero. This is a bug in React. Please file an issue."
2587        );
2588      }
2589      function formatOwnerStack(error2) {
2590        var prevPrepareStackTrace = Error.prepareStackTrace;
2591        Error.prepareStackTrace = void 0;
2592        error2 = error2.stack;
2593        Error.prepareStackTrace = prevPrepareStackTrace;
2594        error2.startsWith("Error: react-stack-top-frame\n") && (error2 = error2.slice(29));
2595        prevPrepareStackTrace = error2.indexOf("\n");
2596        -1 !== prevPrepareStackTrace && (error2 = error2.slice(prevPrepareStackTrace + 1));
2597        prevPrepareStackTrace = error2.indexOf("react_stack_bottom_frame");
2598        -1 !== prevPrepareStackTrace && (prevPrepareStackTrace = error2.lastIndexOf(
2599          "\n",
2600          prevPrepareStackTrace
2601        ));
2602        if (-1 !== prevPrepareStackTrace)
2603          error2 = error2.slice(0, prevPrepareStackTrace);
2604        else return "";
2605        return error2;
2606      }
2607      function describeBuiltInComponentFrame(name) {
2608        if (void 0 === prefix)
2609          try {
2610            throw Error();
2611          } catch (x3) {
2612            var match = x3.stack.trim().match(/\n( *(at )?)/);
2613            prefix = match && match[1] || "";
2614            suffix = -1 < x3.stack.indexOf("\n    at") ? " (<anonymous>)" : -1 < x3.stack.indexOf("@") ? "@unknown:0:0" : "";
2615          }
2616        return "\n" + prefix + name + suffix;
2617      }
2618      function describeNativeComponentFrame(fn3, construct) {
2619        if (!fn3 || reentry) return "";
2620        var frame = componentFrameCache.get(fn3);
2621        if (void 0 !== frame) return frame;
2622        reentry = true;
2623        frame = Error.prepareStackTrace;
2624        Error.prepareStackTrace = void 0;
2625        var previousDispatcher2 = null;
2626        previousDispatcher2 = ReactSharedInternals.H;
2627        ReactSharedInternals.H = null;
2628        disableLogs();
2629        try {
2630          var RunInRootFrame = {
2631            DetermineComponentFrameRoot: function() {
2632              try {
2633                if (construct) {
2634                  var Fake = function() {
2635                    throw Error();
2636                  };
2637                  Object.defineProperty(Fake.prototype, "props", {
2638                    set: function() {
2639                      throw Error();
2640                    }
2641                  });
2642                  if ("object" === typeof Reflect && Reflect.construct) {
2643                    try {
2644                      Reflect.construct(Fake, []);
2645                    } catch (x3) {
2646                      var control = x3;
2647                    }
2648                    Reflect.construct(fn3, [], Fake);
2649                  } else {
2650                    try {
2651                      Fake.call();
2652                    } catch (x$0) {
2653                      control = x$0;
2654                    }
2655                    fn3.call(Fake.prototype);
2656                  }
2657                } else {
2658                  try {
2659                    throw Error();
2660                  } catch (x$1) {
2661                    control = x$1;
2662                  }
2663                  (Fake = fn3()) && "function" === typeof Fake.catch && Fake.catch(function() {
2664                  });
2665                }
2666              } catch (sample) {
2667                if (sample && control && "string" === typeof sample.stack)
2668                  return [sample.stack, control.stack];
2669              }
2670              return [null, null];
2671            }
2672          };
2673          RunInRootFrame.DetermineComponentFrameRoot.displayName = "DetermineComponentFrameRoot";
2674          var namePropDescriptor = Object.getOwnPropertyDescriptor(
2675            RunInRootFrame.DetermineComponentFrameRoot,
2676            "name"
2677          );
2678          namePropDescriptor && namePropDescriptor.configurable && Object.defineProperty(
2679            RunInRootFrame.DetermineComponentFrameRoot,
2680            "name",
2681            { value: "DetermineComponentFrameRoot" }
2682          );
2683          var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(), sampleStack = _RunInRootFrame$Deter[0], controlStack = _RunInRootFrame$Deter[1];
2684          if (sampleStack && controlStack) {
2685            var sampleLines = sampleStack.split("\n"), controlLines = controlStack.split("\n");
2686            for (_RunInRootFrame$Deter = namePropDescriptor = 0; namePropDescriptor < sampleLines.length && !sampleLines[namePropDescriptor].includes(
2687              "DetermineComponentFrameRoot"
2688            ); )
2689              namePropDescriptor++;
2690            for (; _RunInRootFrame$Deter < controlLines.length && !controlLines[_RunInRootFrame$Deter].includes(
2691              "DetermineComponentFrameRoot"
2692            ); )
2693              _RunInRootFrame$Deter++;
2694            if (namePropDescriptor === sampleLines.length || _RunInRootFrame$Deter === controlLines.length)
2695              for (namePropDescriptor = sampleLines.length - 1, _RunInRootFrame$Deter = controlLines.length - 1; 1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter && sampleLines[namePropDescriptor] !== controlLines[_RunInRootFrame$Deter]; )
2696                _RunInRootFrame$Deter--;
2697            for (; 1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter; namePropDescriptor--, _RunInRootFrame$Deter--)
2698              if (sampleLines[namePropDescriptor] !== controlLines[_RunInRootFrame$Deter]) {
2699                if (1 !== namePropDescriptor || 1 !== _RunInRootFrame$Deter) {
2700                  do
2701                    if (namePropDescriptor--, _RunInRootFrame$Deter--, 0 > _RunInRootFrame$Deter || sampleLines[namePropDescriptor] !== controlLines[_RunInRootFrame$Deter]) {
2702                      var _frame = "\n" + sampleLines[namePropDescriptor].replace(
2703                        " at new ",
2704                        " at "
2705                      );
2706                      fn3.displayName && _frame.includes("<anonymous>") && (_frame = _frame.replace("<anonymous>", fn3.displayName));
2707                      "function" === typeof fn3 && componentFrameCache.set(fn3, _frame);
2708                      return _frame;
2709                    }
2710                  while (1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter);
2711                }
2712                break;
2713              }
2714          }
2715        } finally {
2716          reentry = false, ReactSharedInternals.H = previousDispatcher2, reenableLogs(), Error.prepareStackTrace = frame;
2717        }
2718        sampleLines = (sampleLines = fn3 ? fn3.displayName || fn3.name : "") ? describeBuiltInComponentFrame(sampleLines) : "";
2719        "function" === typeof fn3 && componentFrameCache.set(fn3, sampleLines);
2720        return sampleLines;
2721      }
2722      function describeFiber(fiber, childFiber) {
2723        switch (fiber.tag) {
2724          case 26:
2725          case 27:
2726          case 5:
2727            return describeBuiltInComponentFrame(fiber.type);
2728          case 16:
2729            return describeBuiltInComponentFrame("Lazy");
2730          case 13:
2731            return fiber.child !== childFiber && null !== childFiber ? describeBuiltInComponentFrame("Suspense Fallback") : describeBuiltInComponentFrame("Suspense");
2732          case 19:
2733            return describeBuiltInComponentFrame("SuspenseList");
2734          case 0:
2735          case 15:
2736            return describeNativeComponentFrame(fiber.type, false);
2737          case 11:
2738            return describeNativeComponentFrame(fiber.type.render, false);
2739          case 1:
2740            return describeNativeComponentFrame(fiber.type, true);
2741          case 31:
2742            return describeBuiltInComponentFrame("Activity");
2743          default:
2744            return "";
2745        }
2746      }
2747      function getStackByFiberInDevAndProd(workInProgress2) {
2748        try {
2749          var info = "", previous = null;
2750          do {
2751            info += describeFiber(workInProgress2, previous);
2752            var debugInfo = workInProgress2._debugInfo;
2753            if (debugInfo)
2754              for (var i3 = debugInfo.length - 1; 0 <= i3; i3--) {
2755                var entry = debugInfo[i3];
2756                if ("string" === typeof entry.name) {
2757                  var JSCompiler_temp_const = info;
2758                  a: {
2759                    var name = entry.name, env = entry.env, location2 = entry.debugLocation;
2760                    if (null != location2) {
2761                      var childStack = formatOwnerStack(location2), idx = childStack.lastIndexOf("\n"), lastLine = -1 === idx ? childStack : childStack.slice(idx + 1);
2762                      if (-1 !== lastLine.indexOf(name)) {
2763                        var JSCompiler_inline_result = "\n" + lastLine;
2764                        break a;
2765                      }
2766                    }
2767                    JSCompiler_inline_result = describeBuiltInComponentFrame(
2768                      name + (env ? " [" + env + "]" : "")
2769                    );
2770                  }
2771                  info = JSCompiler_temp_const + JSCompiler_inline_result;
2772                }
2773              }
2774            previous = workInProgress2;
2775            workInProgress2 = workInProgress2.return;
2776          } while (workInProgress2);
2777          return info;
2778        } catch (x3) {
2779          return "\nError generating stack: " + x3.message + "\n" + x3.stack;
2780        }
2781      }
2782      function describeFunctionComponentFrameWithoutLineNumber(fn3) {
2783        return (fn3 = fn3 ? fn3.displayName || fn3.name : "") ? describeBuiltInComponentFrame(fn3) : "";
2784      }
2785      function getCurrentFiberOwnerNameInDevOrNull() {
2786        if (null === current) return null;
2787        var owner = current._debugOwner;
2788        return null != owner ? getComponentNameFromOwner(owner) : null;
2789      }
2790      function getCurrentFiberStackInDev() {
2791        if (null === current) return "";
2792        var workInProgress2 = current;
2793        try {
2794          var info = "";
2795          6 === workInProgress2.tag && (workInProgress2 = workInProgress2.return);
2796          switch (workInProgress2.tag) {
2797            case 26:
2798            case 27:
2799            case 5:
2800              info += describeBuiltInComponentFrame(workInProgress2.type);
2801              break;
2802            case 13:
2803              info += describeBuiltInComponentFrame("Suspense");
2804              break;
2805            case 19:
2806              info += describeBuiltInComponentFrame("SuspenseList");
2807              break;
2808            case 31:
2809              info += describeBuiltInComponentFrame("Activity");
2810              break;
2811            case 30:
2812            case 0:
2813            case 15:
2814            case 1:
2815              workInProgress2._debugOwner || "" !== info || (info += describeFunctionComponentFrameWithoutLineNumber(
2816                workInProgress2.type
2817              ));
2818              break;
2819            case 11:
2820              workInProgress2._debugOwner || "" !== info || (info += describeFunctionComponentFrameWithoutLineNumber(
2821                workInProgress2.type.render
2822              ));
2823          }
2824          for (; workInProgress2; )
2825            if ("number" === typeof workInProgress2.tag) {
2826              var fiber = workInProgress2;
2827              workInProgress2 = fiber._debugOwner;
2828              var debugStack = fiber._debugStack;
2829              if (workInProgress2 && debugStack) {
2830                var formattedStack = formatOwnerStack(debugStack);
2831                "" !== formattedStack && (info += "\n" + formattedStack);
2832              }
2833            } else if (null != workInProgress2.debugStack) {
2834              var ownerStack = workInProgress2.debugStack;
2835              (workInProgress2 = workInProgress2.owner) && ownerStack && (info += "\n" + formatOwnerStack(ownerStack));
2836            } else break;
2837          var JSCompiler_inline_result = info;
2838        } catch (x3) {
2839          JSCompiler_inline_result = "\nError generating stack: " + x3.message + "\n" + x3.stack;
2840        }
2841        return JSCompiler_inline_result;
2842      }
2843      function runWithFiberInDEV(fiber, callback, arg0, arg1, arg2, arg3, arg4) {
2844        var previousFiber = current;
2845        setCurrentFiber(fiber);
2846        try {
2847          return null !== fiber && fiber._debugTask ? fiber._debugTask.run(
2848            callback.bind(null, arg0, arg1, arg2, arg3, arg4)
2849          ) : callback(arg0, arg1, arg2, arg3, arg4);
2850        } finally {
2851          setCurrentFiber(previousFiber);
2852        }
2853        throw Error(
2854          "runWithFiberInDEV should never be called in production. This is a bug in React."
2855        );
2856      }
2857      function setCurrentFiber(fiber) {
2858        ReactSharedInternals.getCurrentStack = null === fiber ? null : getCurrentFiberStackInDev;
2859        isRendering = false;
2860        current = fiber;
2861      }
2862      function typeName(value) {
2863        return "function" === typeof Symbol && Symbol.toStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object";
2864      }
2865      function willCoercionThrow(value) {
2866        try {
2867          return testStringCoercion(value), false;
2868        } catch (e3) {
2869          return true;
2870        }
2871      }
2872      function testStringCoercion(value) {
2873        return "" + value;
2874      }
2875      function checkAttributeStringCoercion(value, attributeName) {
2876        if (willCoercionThrow(value))
2877          return console.error(
2878            "The provided `%s` attribute is an unsupported type %s. This value must be coerced to a string before using it here.",
2879            attributeName,
2880            typeName(value)
2881          ), testStringCoercion(value);
2882      }
2883      function checkCSSPropertyStringCoercion(value, propName) {
2884        if (willCoercionThrow(value))
2885          return console.error(
2886            "The provided `%s` CSS property is an unsupported type %s. This value must be coerced to a string before using it here.",
2887            propName,
2888            typeName(value)
2889          ), testStringCoercion(value);
2890      }
2891      function checkFormFieldValueStringCoercion(value) {
2892        if (willCoercionThrow(value))
2893          return console.error(
2894            "Form field values (value, checked, defaultValue, or defaultChecked props) must be strings, not %s. This value must be coerced to a string before using it here.",
2895            typeName(value)
2896          ), testStringCoercion(value);
2897      }
2898      function injectInternals(internals) {
2899        if ("undefined" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) return false;
2900        var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;
2901        if (hook.isDisabled) return true;
2902        if (!hook.supportsFiber)
2903          return console.error(
2904            "The installed version of React DevTools is too old and will not work with the current version of React. Please update React DevTools. https://react.dev/link/react-devtools"
2905          ), true;
2906        try {
2907          rendererID = hook.inject(internals), injectedHook = hook;
2908        } catch (err) {
2909          console.error("React instrumentation encountered an error: %o.", err);
2910        }
2911        return hook.checkDCE ? true : false;
2912      }
2913      function setIsStrictModeForDevtools(newIsStrictMode) {
2914        "function" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);
2915        if (injectedHook && "function" === typeof injectedHook.setStrictMode)
2916          try {
2917            injectedHook.setStrictMode(rendererID, newIsStrictMode);
2918          } catch (err) {
2919            hasLoggedError || (hasLoggedError = true, console.error(
2920              "React instrumentation encountered an error: %o",
2921              err
2922            ));
2923          }
2924      }
2925      function clz32Fallback(x3) {
2926        x3 >>>= 0;
2927        return 0 === x3 ? 32 : 31 - (log(x3) / LN2 | 0) | 0;
2928      }
2929      function getHighestPriorityLanes(lanes) {
2930        var pendingSyncLanes = lanes & 42;
2931        if (0 !== pendingSyncLanes) return pendingSyncLanes;
2932        switch (lanes & -lanes) {
2933          case 1:
2934            return 1;
2935          case 2:
2936            return 2;
2937          case 4:
2938            return 4;
2939          case 8:
2940            return 8;
2941          case 16:
2942            return 16;
2943          case 32:
2944            return 32;
2945          case 64:
2946            return 64;
2947          case 128:
2948            return 128;
2949          case 256:
2950          case 512:
2951          case 1024:
2952          case 2048:
2953          case 4096:
2954          case 8192:
2955          case 16384:
2956          case 32768:
2957          case 65536:
2958          case 131072:
2959            return lanes & 261888;
2960          case 262144:
2961          case 524288:
2962          case 1048576:
2963          case 2097152:
2964            return lanes & 3932160;
2965          case 4194304:
2966          case 8388608:
2967          case 16777216:
2968          case 33554432:
2969            return lanes & 62914560;
2970          case 67108864:
2971            return 67108864;
2972          case 134217728:
2973            return 134217728;
2974          case 268435456:
2975            return 268435456;
2976          case 536870912:
2977            return 536870912;
2978          case 1073741824:
2979            return 0;
2980          default:
2981            return console.error(
2982              "Should have found matching lanes. This is a bug in React."
2983            ), lanes;
2984        }
2985      }
2986      function getNextLanes(root3, wipLanes, rootHasPendingCommit) {
2987        var pendingLanes = root3.pendingLanes;
2988        if (0 === pendingLanes) return 0;
2989        var nextLanes = 0, suspendedLanes = root3.suspendedLanes, pingedLanes = root3.pingedLanes;
2990        root3 = root3.warmLanes;
2991        var nonIdlePendingLanes = pendingLanes & 134217727;
2992        0 !== nonIdlePendingLanes ? (pendingLanes = nonIdlePendingLanes & ~suspendedLanes, 0 !== pendingLanes ? nextLanes = getHighestPriorityLanes(pendingLanes) : (pingedLanes &= nonIdlePendingLanes, 0 !== pingedLanes ? nextLanes = getHighestPriorityLanes(pingedLanes) : rootHasPendingCommit || (rootHasPendingCommit = nonIdlePendingLanes & ~root3, 0 !== rootHasPendingCommit && (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))))) : (nonIdlePendingLanes = pendingLanes & ~suspendedLanes, 0 !== nonIdlePendingLanes ? nextLanes = getHighestPriorityLanes(nonIdlePendingLanes) : 0 !== pingedLanes ? nextLanes = getHighestPriorityLanes(pingedLanes) : rootHasPendingCommit || (rootHasPendingCommit = pendingLanes & ~root3, 0 !== rootHasPendingCommit && (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));
2993        return 0 === nextLanes ? 0 : 0 !== wipLanes && wipLanes !== nextLanes && 0 === (wipLanes & suspendedLanes) && (suspendedLanes = nextLanes & -nextLanes, rootHasPendingCommit = wipLanes & -wipLanes, suspendedLanes >= rootHasPendingCommit || 32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)) ? wipLanes : nextLanes;
2994      }
2995      function checkIfRootIsPrerendering(root3, renderLanes2) {
2996        return 0 === (root3.pendingLanes & ~(root3.suspendedLanes & ~root3.pingedLanes) & renderLanes2);
2997      }
2998      function computeExpirationTime(lane, currentTime) {
2999        switch (lane) {
3000          case 1:
3001          case 2:
3002          case 4:
3003          case 8:
3004          case 64:
3005            return currentTime + 250;
3006          case 16:
3007          case 32:
3008          case 128:
3009          case 256:
3010          case 512:
3011          case 1024:
3012          case 2048:
3013          case 4096:
3014          case 8192:
3015          case 16384:
3016          case 32768:
3017          case 65536:
3018          case 131072:
3019          case 262144:
3020          case 524288:
3021          case 1048576:
3022          case 2097152:
3023            return currentTime + 5e3;
3024          case 4194304:
3025          case 8388608:
3026          case 16777216:
3027          case 33554432:
3028            return -1;
3029          case 67108864:
3030          case 134217728:
3031          case 268435456:
3032          case 536870912:
3033          case 1073741824:
3034            return -1;
3035          default:
3036            return console.error(
3037              "Should have found matching lanes. This is a bug in React."
3038            ), -1;
3039        }
3040      }
3041      function claimNextRetryLane() {
3042        var lane = nextRetryLane;
3043        nextRetryLane <<= 1;
3044        0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);
3045        return lane;
3046      }
3047      function createLaneMap(initial) {
3048        for (var laneMap = [], i3 = 0; 31 > i3; i3++) laneMap.push(initial);
3049        return laneMap;
3050      }
3051      function markRootUpdated$1(root3, updateLane) {
3052        root3.pendingLanes |= updateLane;
3053        268435456 !== updateLane && (root3.suspendedLanes = 0, root3.pingedLanes = 0, root3.warmLanes = 0);
3054      }
3055      function markRootFinished(root3, finishedLanes, remainingLanes, spawnedLane, updatedLanes, suspendedRetryLanes) {
3056        var previouslyPendingLanes = root3.pendingLanes;
3057        root3.pendingLanes = remainingLanes;
3058        root3.suspendedLanes = 0;
3059        root3.pingedLanes = 0;
3060        root3.warmLanes = 0;
3061        root3.expiredLanes &= remainingLanes;
3062        root3.entangledLanes &= remainingLanes;
3063        root3.errorRecoveryDisabledLanes &= remainingLanes;
3064        root3.shellSuspendCounter = 0;
3065        var entanglements = root3.entanglements, expirationTimes = root3.expirationTimes, hiddenUpdates = root3.hiddenUpdates;
3066        for (remainingLanes = previouslyPendingLanes & ~remainingLanes; 0 < remainingLanes; ) {
3067          var index = 31 - clz32(remainingLanes), lane = 1 << index;
3068          entanglements[index] = 0;
3069          expirationTimes[index] = -1;
3070          var hiddenUpdatesForLane = hiddenUpdates[index];
3071          if (null !== hiddenUpdatesForLane)
3072            for (hiddenUpdates[index] = null, index = 0; index < hiddenUpdatesForLane.length; index++) {
3073              var update = hiddenUpdatesForLane[index];
3074              null !== update && (update.lane &= -536870913);
3075            }
3076          remainingLanes &= ~lane;
3077        }
3078        0 !== spawnedLane && markSpawnedDeferredLane(root3, spawnedLane, 0);
3079        0 !== suspendedRetryLanes && 0 === updatedLanes && 0 !== root3.tag && (root3.suspendedLanes |= suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));
3080      }
3081      function markSpawnedDeferredLane(root3, spawnedLane, entangledLanes) {
3082        root3.pendingLanes |= spawnedLane;
3083        root3.suspendedLanes &= ~spawnedLane;
3084        var spawnedLaneIndex = 31 - clz32(spawnedLane);
3085        root3.entangledLanes |= spawnedLane;
3086        root3.entanglements[spawnedLaneIndex] = root3.entanglements[spawnedLaneIndex] | 1073741824 | entangledLanes & 261930;
3087      }
3088      function markRootEntangled(root3, entangledLanes) {
3089        var rootEntangledLanes = root3.entangledLanes |= entangledLanes;
3090        for (root3 = root3.entanglements; rootEntangledLanes; ) {
3091          var index = 31 - clz32(rootEntangledLanes), lane = 1 << index;
3092          lane & entangledLanes | root3[index] & entangledLanes && (root3[index] |= entangledLanes);
3093          rootEntangledLanes &= ~lane;
3094        }
3095      }
3096      function getBumpedLaneForHydration(root3, renderLanes2) {
3097        var renderLane = renderLanes2 & -renderLanes2;
3098        renderLane = 0 !== (renderLane & 42) ? 1 : getBumpedLaneForHydrationByLane(renderLane);
3099        return 0 !== (renderLane & (root3.suspendedLanes | renderLanes2)) ? 0 : renderLane;
3100      }
3101      function getBumpedLaneForHydrationByLane(lane) {
3102        switch (lane) {
3103          case 2:
3104            lane = 1;
3105            break;
3106          case 8:
3107            lane = 4;
3108            break;
3109          case 32:
3110            lane = 16;
3111            break;
3112          case 256:
3113          case 512:
3114          case 1024:
3115          case 2048:
3116          case 4096:
3117          case 8192:
3118          case 16384:
3119          case 32768:
3120          case 65536:
3121          case 131072:
3122          case 262144:
3123          case 524288:
3124          case 1048576:
3125          case 2097152:
3126          case 4194304:
3127          case 8388608:
3128          case 16777216:
3129          case 33554432:
3130            lane = 128;
3131            break;
3132          case 268435456:
3133            lane = 134217728;
3134            break;
3135          default:
3136            lane = 0;
3137        }
3138        return lane;
3139      }
3140      function addFiberToLanesMap(root3, fiber, lanes) {
3141        if (isDevToolsPresent)
3142          for (root3 = root3.pendingUpdatersLaneMap; 0 < lanes; ) {
3143            var index = 31 - clz32(lanes), lane = 1 << index;
3144            root3[index].add(fiber);
3145            lanes &= ~lane;
3146          }
3147      }
3148      function movePendingFibersToMemoized(root3, lanes) {
3149        if (isDevToolsPresent)
3150          for (var pendingUpdatersLaneMap = root3.pendingUpdatersLaneMap, memoizedUpdaters = root3.memoizedUpdaters; 0 < lanes; ) {
3151            var index = 31 - clz32(lanes);
3152            root3 = 1 << index;
3153            index = pendingUpdatersLaneMap[index];
3154            0 < index.size && (index.forEach(function(fiber) {
3155              var alternate = fiber.alternate;
3156              null !== alternate && memoizedUpdaters.has(alternate) || memoizedUpdaters.add(fiber);
3157            }), index.clear());
3158            lanes &= ~root3;
3159          }
3160      }
3161      function lanesToEventPriority(lanes) {
3162        lanes &= -lanes;
3163        return 0 !== DiscreteEventPriority && DiscreteEventPriority < lanes ? 0 !== ContinuousEventPriority && ContinuousEventPriority < lanes ? 0 !== (lanes & 134217727) ? DefaultEventPriority : IdleEventPriority : ContinuousEventPriority : DiscreteEventPriority;
3164      }
3165      function resolveUpdatePriority() {
3166        var updatePriority = ReactDOMSharedInternals.p;
3167        if (0 !== updatePriority) return updatePriority;
3168        updatePriority = window.event;
3169        return void 0 === updatePriority ? DefaultEventPriority : getEventPriority(updatePriority.type);
3170      }
3171      function runWithPriority(priority, fn3) {
3172        var previousPriority = ReactDOMSharedInternals.p;
3173        try {
3174          return ReactDOMSharedInternals.p = priority, fn3();
3175        } finally {
3176          ReactDOMSharedInternals.p = previousPriority;
3177        }
3178      }
3179      function detachDeletedInstance(node) {
3180        delete node[internalInstanceKey];
3181        delete node[internalPropsKey];
3182        delete node[internalEventHandlersKey];
3183        delete node[internalEventHandlerListenersKey];
3184        delete node[internalEventHandlesSetKey];
3185      }
3186      function getClosestInstanceFromNode(targetNode) {
3187        var targetInst = targetNode[internalInstanceKey];
3188        if (targetInst) return targetInst;
3189        for (var parentNode = targetNode.parentNode; parentNode; ) {
3190          if (targetInst = parentNode[internalContainerInstanceKey] || parentNode[internalInstanceKey]) {
3191            parentNode = targetInst.alternate;
3192            if (null !== targetInst.child || null !== parentNode && null !== parentNode.child)
3193              for (targetNode = getParentHydrationBoundary(targetNode); null !== targetNode; ) {
3194                if (parentNode = targetNode[internalInstanceKey])
3195                  return parentNode;
3196                targetNode = getParentHydrationBoundary(targetNode);
3197              }
3198            return targetInst;
3199          }
3200          targetNode = parentNode;
3201          parentNode = targetNode.parentNode;
3202        }
3203        return null;
3204      }
3205      function getInstanceFromNode(node) {
3206        if (node = node[internalInstanceKey] || node[internalContainerInstanceKey]) {
3207          var tag = node.tag;
3208          if (5 === tag || 6 === tag || 13 === tag || 31 === tag || 26 === tag || 27 === tag || 3 === tag)
3209            return node;
3210        }
3211        return null;
3212      }
3213      function getNodeFromInstance(inst) {
3214        var tag = inst.tag;
3215        if (5 === tag || 26 === tag || 27 === tag || 6 === tag)
3216          return inst.stateNode;
3217        throw Error("getNodeFromInstance: Invalid argument.");
3218      }
3219      function getResourcesFromRoot(root3) {
3220        var resources = root3[internalRootNodeResourcesKey];
3221        resources || (resources = root3[internalRootNodeResourcesKey] = { hoistableStyles: /* @__PURE__ */ new Map(), hoistableScripts: /* @__PURE__ */ new Map() });
3222        return resources;
3223      }
3224      function markNodeAsHoistable(node) {
3225        node[internalHoistableMarker] = true;
3226      }
3227      function registerTwoPhaseEvent(registrationName, dependencies) {
3228        registerDirectEvent(registrationName, dependencies);
3229        registerDirectEvent(registrationName + "Capture", dependencies);
3230      }
3231      function registerDirectEvent(registrationName, dependencies) {
3232        registrationNameDependencies[registrationName] && console.error(
3233          "EventRegistry: More than one plugin attempted to publish the same registration name, `%s`.",
3234          registrationName
3235        );
3236        registrationNameDependencies[registrationName] = dependencies;
3237        var lowerCasedName = registrationName.toLowerCase();
3238        possibleRegistrationNames[lowerCasedName] = registrationName;
3239        "onDoubleClick" === registrationName && (possibleRegistrationNames.ondblclick = registrationName);
3240        for (registrationName = 0; registrationName < dependencies.length; registrationName++)
3241          allNativeEvents.add(dependencies[registrationName]);
3242      }
3243      function checkControlledValueProps(tagName, props) {
3244        hasReadOnlyValue[props.type] || props.onChange || props.onInput || props.readOnly || props.disabled || null == props.value || ("select" === tagName ? console.error(
3245          "You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set `onChange`."
3246        ) : console.error(
3247          "You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`."
3248        ));
3249        props.onChange || props.readOnly || props.disabled || null == props.checked || console.error(
3250          "You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`."
3251        );
3252      }
3253      function isAttributeNameSafe(attributeName) {
3254        if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))
3255          return true;
3256        if (hasOwnProperty.call(illegalAttributeNameCache, attributeName))
3257          return false;
3258        if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))
3259          return validatedAttributeNameCache[attributeName] = true;
3260        illegalAttributeNameCache[attributeName] = true;
3261        console.error("Invalid attribute name: `%s`", attributeName);
3262        return false;
3263      }
3264      function getValueForAttributeOnCustomComponent(node, name, expected) {
3265        if (isAttributeNameSafe(name)) {
3266          if (!node.hasAttribute(name)) {
3267            switch (typeof expected) {
3268              case "symbol":
3269              case "object":
3270                return expected;
3271              case "function":
3272                return expected;
3273              case "boolean":
3274                if (false === expected) return expected;
3275            }
3276            return void 0 === expected ? void 0 : null;
3277          }
3278          node = node.getAttribute(name);
3279          if ("" === node && true === expected) return true;
3280          checkAttributeStringCoercion(expected, name);
3281          return node === "" + expected ? expected : node;
3282        }
3283      }
3284      function setValueForAttribute(node, name, value) {
3285        if (isAttributeNameSafe(name))
3286          if (null === value) node.removeAttribute(name);
3287          else {
3288            switch (typeof value) {
3289              case "undefined":
3290              case "function":
3291              case "symbol":
3292                node.removeAttribute(name);
3293                return;
3294              case "boolean":
3295                var prefix2 = name.toLowerCase().slice(0, 5);
3296                if ("data-" !== prefix2 && "aria-" !== prefix2) {
3297                  node.removeAttribute(name);
3298                  return;
3299                }
3300            }
3301            checkAttributeStringCoercion(value, name);
3302            node.setAttribute(name, "" + value);
3303          }
3304      }
3305      function setValueForKnownAttribute(node, name, value) {
3306        if (null === value) node.removeAttribute(name);
3307        else {
3308          switch (typeof value) {
3309            case "undefined":
3310            case "function":
3311            case "symbol":
3312            case "boolean":
3313              node.removeAttribute(name);
3314              return;
3315          }
3316          checkAttributeStringCoercion(value, name);
3317          node.setAttribute(name, "" + value);
3318        }
3319      }
3320      function setValueForNamespacedAttribute(node, namespace, name, value) {
3321        if (null === value) node.removeAttribute(name);
3322        else {
3323          switch (typeof value) {
3324            case "undefined":
3325            case "function":
3326            case "symbol":
3327            case "boolean":
3328              node.removeAttribute(name);
3329              return;
3330          }
3331          checkAttributeStringCoercion(value, name);
3332          node.setAttributeNS(namespace, name, "" + value);
3333        }
3334      }
3335      function getToStringValue(value) {
3336        switch (typeof value) {
3337          case "bigint":
3338          case "boolean":
3339          case "number":
3340          case "string":
3341          case "undefined":
3342            return value;
3343          case "object":
3344            return checkFormFieldValueStringCoercion(value), value;
3345          default:
3346            return "";
3347        }
3348      }
3349      function isCheckable(elem) {
3350        var type = elem.type;
3351        return (elem = elem.nodeName) && "input" === elem.toLowerCase() && ("checkbox" === type || "radio" === type);
3352      }
3353      function trackValueOnNode(node, valueField, currentValue) {
3354        var descriptor = Object.getOwnPropertyDescriptor(
3355          node.constructor.prototype,
3356          valueField
3357        );
3358        if (!node.hasOwnProperty(valueField) && "undefined" !== typeof descriptor && "function" === typeof descriptor.get && "function" === typeof descriptor.set) {
3359          var get = descriptor.get, set = descriptor.set;
3360          Object.defineProperty(node, valueField, {
3361            configurable: true,
3362            get: function() {
3363              return get.call(this);
3364            },
3365            set: function(value) {
3366              checkFormFieldValueStringCoercion(value);
3367              currentValue = "" + value;
3368              set.call(this, value);
3369            }
3370          });
3371          Object.defineProperty(node, valueField, {
3372            enumerable: descriptor.enumerable
3373          });
3374          return {
3375            getValue: function() {
3376              return currentValue;
3377            },
3378            setValue: function(value) {
3379              checkFormFieldValueStringCoercion(value);
3380              currentValue = "" + value;
3381            },
3382            stopTracking: function() {
3383              node._valueTracker = null;
3384              delete node[valueField];
3385            }
3386          };
3387        }
3388      }
3389      function track2(node) {
3390        if (!node._valueTracker) {
3391          var valueField = isCheckable(node) ? "checked" : "value";
3392          node._valueTracker = trackValueOnNode(
3393            node,
3394            valueField,
3395            "" + node[valueField]
3396          );
3397        }
3398      }
3399      function updateValueIfChanged(node) {
3400        if (!node) return false;
3401        var tracker = node._valueTracker;
3402        if (!tracker) return true;
3403        var lastValue = tracker.getValue();
3404        var value = "";
3405        node && (value = isCheckable(node) ? node.checked ? "true" : "false" : node.value);
3406        node = value;
3407        return node !== lastValue ? (tracker.setValue(node), true) : false;
3408      }
3409      function getActiveElement(doc) {
3410        doc = doc || ("undefined" !== typeof document ? document : void 0);
3411        if ("undefined" === typeof doc) return null;
3412        try {
3413          return doc.activeElement || doc.body;
3414        } catch (e3) {
3415          return doc.body;
3416        }
3417      }
3418      function escapeSelectorAttributeValueInsideDoubleQuotes(value) {
3419        return value.replace(
3420          escapeSelectorAttributeValueInsideDoubleQuotesRegex,
3421          function(ch) {
3422            return "\\" + ch.charCodeAt(0).toString(16) + " ";
3423          }
3424        );
3425      }
3426      function validateInputProps(element, props) {
3427        void 0 === props.checked || void 0 === props.defaultChecked || didWarnCheckedDefaultChecked || (console.error(
3428          "%s contains an input of type %s with both checked and defaultChecked props. Input elements must be either controlled or uncontrolled (specify either the checked prop, or the defaultChecked prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components",
3429          getCurrentFiberOwnerNameInDevOrNull() || "A component",
3430          props.type
3431        ), didWarnCheckedDefaultChecked = true);
3432        void 0 === props.value || void 0 === props.defaultValue || didWarnValueDefaultValue$1 || (console.error(
3433          "%s contains an input of type %s with both value and defaultValue props. Input elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components",
3434          getCurrentFiberOwnerNameInDevOrNull() || "A component",
3435          props.type
3436        ), didWarnValueDefaultValue$1 = true);
3437      }
3438      function updateInput(element, value, defaultValue, lastDefaultValue, checked, defaultChecked, type, name) {
3439        element.name = "";
3440        null != type && "function" !== typeof type && "symbol" !== typeof type && "boolean" !== typeof type ? (checkAttributeStringCoercion(type, "type"), element.type = type) : element.removeAttribute("type");
3441        if (null != value)
3442          if ("number" === type) {
3443            if (0 === value && "" === element.value || element.value != value)
3444              element.value = "" + getToStringValue(value);
3445          } else
3446            element.value !== "" + getToStringValue(value) && (element.value = "" + getToStringValue(value));
3447        else
3448          "submit" !== type && "reset" !== type || element.removeAttribute("value");
3449        null != value ? setDefaultValue(element, type, getToStringValue(value)) : null != defaultValue ? setDefaultValue(element, type, getToStringValue(defaultValue)) : null != lastDefaultValue && element.removeAttribute("value");
3450        null == checked && null != defaultChecked && (element.defaultChecked = !!defaultChecked);
3451        null != checked && (element.checked = checked && "function" !== typeof checked && "symbol" !== typeof checked);
3452        null != name && "function" !== typeof name && "symbol" !== typeof name && "boolean" !== typeof name ? (checkAttributeStringCoercion(name, "name"), element.name = "" + getToStringValue(name)) : element.removeAttribute("name");
3453      }
3454      function initInput(element, value, defaultValue, checked, defaultChecked, type, name, isHydrating2) {
3455        null != type && "function" !== typeof type && "symbol" !== typeof type && "boolean" !== typeof type && (checkAttributeStringCoercion(type, "type"), element.type = type);
3456        if (null != value || null != defaultValue) {
3457          if (!("submit" !== type && "reset" !== type || void 0 !== value && null !== value)) {
3458            track2(element);
3459            return;
3460          }
3461          defaultValue = null != defaultValue ? "" + getToStringValue(defaultValue) : "";
3462          value = null != value ? "" + getToStringValue(value) : defaultValue;
3463          isHydrating2 || value === element.value || (element.value = value);
3464          element.defaultValue = value;
3465        }
3466        checked = null != checked ? checked : defaultChecked;
3467        checked = "function" !== typeof checked && "symbol" !== typeof checked && !!checked;
3468        element.checked = isHydrating2 ? element.checked : !!checked;
3469        element.defaultChecked = !!checked;
3470        null != name && "function" !== typeof name && "symbol" !== typeof name && "boolean" !== typeof name && (checkAttributeStringCoercion(name, "name"), element.name = name);
3471        track2(element);
3472      }
3473      function setDefaultValue(node, type, value) {
3474        "number" === type && getActiveElement(node.ownerDocument) === node || node.defaultValue === "" + value || (node.defaultValue = "" + value);
3475      }
3476      function validateOptionProps(element, props) {
3477        null == props.value && ("object" === typeof props.children && null !== props.children ? React19.Children.forEach(props.children, function(child) {
3478          null == child || "string" === typeof child || "number" === typeof child || "bigint" === typeof child || didWarnInvalidChild || (didWarnInvalidChild = true, console.error(
3479            "Cannot infer the option value of complex children. Pass a `value` prop or use a plain string as children to <option>."
3480          ));
3481        }) : null == props.dangerouslySetInnerHTML || didWarnInvalidInnerHTML || (didWarnInvalidInnerHTML = true, console.error(
3482          "Pass a `value` prop if you set dangerouslyInnerHTML so React knows which value should be selected."
3483        )));
3484        null == props.selected || didWarnSelectedSetOnOption || (console.error(
3485          "Use the `defaultValue` or `value` props on <select> instead of setting `selected` on <option>."
3486        ), didWarnSelectedSetOnOption = true);
3487      }
3488      function getDeclarationErrorAddendum() {
3489        var ownerName = getCurrentFiberOwnerNameInDevOrNull();
3490        return ownerName ? "\n\nCheck the render method of `" + ownerName + "`." : "";
3491      }
3492      function updateOptions(node, multiple, propValue, setDefaultSelected) {
3493        node = node.options;
3494        if (multiple) {
3495          multiple = {};
3496          for (var i3 = 0; i3 < propValue.length; i3++)
3497            multiple["$" + propValue[i3]] = true;
3498          for (propValue = 0; propValue < node.length; propValue++)
3499            i3 = multiple.hasOwnProperty("$" + node[propValue].value), node[propValue].selected !== i3 && (node[propValue].selected = i3), i3 && setDefaultSelected && (node[propValue].defaultSelected = true);
3500        } else {
3501          propValue = "" + getToStringValue(propValue);
3502          multiple = null;
3503          for (i3 = 0; i3 < node.length; i3++) {
3504            if (node[i3].value === propValue) {
3505              node[i3].selected = true;
3506              setDefaultSelected && (node[i3].defaultSelected = true);
3507              return;
3508            }
3509            null !== multiple || node[i3].disabled || (multiple = node[i3]);
3510          }
3511          null !== multiple && (multiple.selected = true);
3512        }
3513      }
3514      function validateSelectProps(element, props) {
3515        for (element = 0; element < valuePropNames.length; element++) {
3516          var propName = valuePropNames[element];
3517          if (null != props[propName]) {
3518            var propNameIsArray = isArrayImpl(props[propName]);
3519            props.multiple && !propNameIsArray ? console.error(
3520              "The `%s` prop supplied to <select> must be an array if `multiple` is true.%s",
3521              propName,
3522              getDeclarationErrorAddendum()
3523            ) : !props.multiple && propNameIsArray && console.error(
3524              "The `%s` prop supplied to <select> must be a scalar value if `multiple` is false.%s",
3525              propName,
3526              getDeclarationErrorAddendum()
3527            );
3528          }
3529        }
3530        void 0 === props.value || void 0 === props.defaultValue || didWarnValueDefaultValue || (console.error(
3531          "Select elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled select element and remove one of these props. More info: https://react.dev/link/controlled-components"
3532        ), didWarnValueDefaultValue = true);
3533      }
3534      function validateTextareaProps(element, props) {
3535        void 0 === props.value || void 0 === props.defaultValue || didWarnValDefaultVal || (console.error(
3536          "%s contains a textarea with both value and defaultValue props. Textarea elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled textarea and remove one of these props. More info: https://react.dev/link/controlled-components",
3537          getCurrentFiberOwnerNameInDevOrNull() || "A component"
3538        ), didWarnValDefaultVal = true);
3539        null != props.children && null == props.value && console.error(
3540          "Use the `defaultValue` or `value` props instead of setting children on <textarea>."
3541        );
3542      }
3543      function updateTextarea(element, value, defaultValue) {
3544        if (null != value && (value = "" + getToStringValue(value), value !== element.value && (element.value = value), null == defaultValue)) {
3545          element.defaultValue !== value && (element.defaultValue = value);
3546          return;
3547        }
3548        element.defaultValue = null != defaultValue ? "" + getToStringValue(defaultValue) : "";
3549      }
3550      function initTextarea(element, value, defaultValue, children) {
3551        if (null == value) {
3552          if (null != children) {
3553            if (null != defaultValue)
3554              throw Error(
3555                "If you supply `defaultValue` on a <textarea>, do not pass children."
3556              );
3557            if (isArrayImpl(children)) {
3558              if (1 < children.length)
3559                throw Error("<textarea> can only have at most one child.");
3560              children = children[0];
3561            }
3562            defaultValue = children;
3563          }
3564          null == defaultValue && (defaultValue = "");
3565          value = defaultValue;
3566        }
3567        defaultValue = getToStringValue(value);
3568        element.defaultValue = defaultValue;
3569        children = element.textContent;
3570        children === defaultValue && "" !== children && null !== children && (element.value = children);
3571        track2(element);
3572      }
3573      function findNotableNode(node, indent) {
3574        return void 0 === node.serverProps && 0 === node.serverTail.length && 1 === node.children.length && 3 < node.distanceFromLeaf && node.distanceFromLeaf > 15 - indent ? findNotableNode(node.children[0], indent) : node;
3575      }
3576      function indentation(indent) {
3577        return "  " + "  ".repeat(indent);
3578      }
3579      function added(indent) {
3580        return "+ " + "  ".repeat(indent);
3581      }
3582      function removed(indent) {
3583        return "- " + "  ".repeat(indent);
3584      }
3585      function describeFiberType(fiber) {
3586        switch (fiber.tag) {
3587          case 26:
3588          case 27:
3589          case 5:
3590            return fiber.type;
3591          case 16:
3592            return "Lazy";
3593          case 31:
3594            return "Activity";
3595          case 13:
3596            return "Suspense";
3597          case 19:
3598            return "SuspenseList";
3599          case 0:
3600          case 15:
3601            return fiber = fiber.type, fiber.displayName || fiber.name || null;
3602          case 11:
3603            return fiber = fiber.type.render, fiber.displayName || fiber.name || null;
3604          case 1:
3605            return fiber = fiber.type, fiber.displayName || fiber.name || null;
3606          default:
3607            return null;
3608        }
3609      }
3610      function describeTextNode(content, maxLength) {
3611        return needsEscaping.test(content) ? (content = JSON.stringify(content), content.length > maxLength - 2 ? 8 > maxLength ? '{"..."}' : "{" + content.slice(0, maxLength - 7) + '..."}' : "{" + content + "}") : content.length > maxLength ? 5 > maxLength ? '{"..."}' : content.slice(0, maxLength - 3) + "..." : content;
3612      }
3613      function describeTextDiff(clientText, serverProps, indent) {
3614        var maxLength = 120 - 2 * indent;
3615        if (null === serverProps)
3616          return added(indent) + describeTextNode(clientText, maxLength) + "\n";
3617        if ("string" === typeof serverProps) {
3618          for (var firstDiff = 0; firstDiff < serverProps.length && firstDiff < clientText.length && serverProps.charCodeAt(firstDiff) === clientText.charCodeAt(firstDiff); firstDiff++) ;
3619          firstDiff > maxLength - 8 && 10 < firstDiff && (clientText = "..." + clientText.slice(firstDiff - 8), serverProps = "..." + serverProps.slice(firstDiff - 8));
3620          return added(indent) + describeTextNode(clientText, maxLength) + "\n" + removed(indent) + describeTextNode(serverProps, maxLength) + "\n";
3621        }
3622        return indentation(indent) + describeTextNode(clientText, maxLength) + "\n";
3623      }
3624      function objectName(object) {
3625        return Object.prototype.toString.call(object).replace(/^\[object (.*)\]$/, function(m3, p0) {
3626          return p0;
3627        });
3628      }
3629      function describeValue(value, maxLength) {
3630        switch (typeof value) {
3631          case "string":
3632            return value = JSON.stringify(value), value.length > maxLength ? 5 > maxLength ? '"..."' : value.slice(0, maxLength - 4) + '..."' : value;
3633          case "object":
3634            if (null === value) return "null";
3635            if (isArrayImpl(value)) return "[...]";
3636            if (value.$$typeof === REACT_ELEMENT_TYPE)
3637              return (maxLength = getComponentNameFromType(value.type)) ? "<" + maxLength + ">" : "<...>";
3638            var name = objectName(value);
3639            if ("Object" === name) {
3640              name = "";
3641              maxLength -= 2;
3642              for (var propName in value)
3643                if (value.hasOwnProperty(propName)) {
3644                  var jsonPropName = JSON.stringify(propName);
3645                  jsonPropName !== '"' + propName + '"' && (propName = jsonPropName);
3646                  maxLength -= propName.length - 2;
3647                  jsonPropName = describeValue(
3648                    value[propName],
3649                    15 > maxLength ? maxLength : 15
3650                  );
3651                  maxLength -= jsonPropName.length;
3652                  if (0 > maxLength) {
3653                    name += "" === name ? "..." : ", ...";
3654                    break;
3655                  }
3656                  name += ("" === name ? "" : ",") + propName + ":" + jsonPropName;
3657                }
3658              return "{" + name + "}";
3659            }
3660            return name;
3661          case "function":
3662            return (maxLength = value.displayName || value.name) ? "function " + maxLength : "function";
3663          default:
3664            return String(value);
3665        }
3666      }
3667      function describePropValue(value, maxLength) {
3668        return "string" !== typeof value || needsEscaping.test(value) ? "{" + describeValue(value, maxLength - 2) + "}" : value.length > maxLength - 2 ? 5 > maxLength ? '"..."' : '"' + value.slice(0, maxLength - 5) + '..."' : '"' + value + '"';
3669      }
3670      function describeExpandedElement(type, props, rowPrefix) {
3671        var remainingRowLength = 120 - rowPrefix.length - type.length, properties = [], propName;
3672        for (propName in props)
3673          if (props.hasOwnProperty(propName) && "children" !== propName) {
3674            var propValue = describePropValue(
3675              props[propName],
3676              120 - rowPrefix.length - propName.length - 1
3677            );
3678            remainingRowLength -= propName.length + propValue.length + 2;
3679            properties.push(propName + "=" + propValue);
3680          }
3681        return 0 === properties.length ? rowPrefix + "<" + type + ">\n" : 0 < remainingRowLength ? rowPrefix + "<" + type + " " + properties.join(" ") + ">\n" : rowPrefix + "<" + type + "\n" + rowPrefix + "  " + properties.join("\n" + rowPrefix + "  ") + "\n" + rowPrefix + ">\n";
3682      }
3683      function describePropertiesDiff(clientObject, serverObject, indent) {
3684        var properties = "", remainingServerProperties = assign({}, serverObject), propName;
3685        for (propName in clientObject)
3686          if (clientObject.hasOwnProperty(propName)) {
3687            delete remainingServerProperties[propName];
3688            var maxLength = 120 - 2 * indent - propName.length - 2, clientPropValue = describeValue(clientObject[propName], maxLength);
3689            serverObject.hasOwnProperty(propName) ? (maxLength = describeValue(serverObject[propName], maxLength), properties += added(indent) + propName + ": " + clientPropValue + "\n", properties += removed(indent) + propName + ": " + maxLength + "\n") : properties += added(indent) + propName + ": " + clientPropValue + "\n";
3690          }
3691        for (var _propName in remainingServerProperties)
3692          remainingServerProperties.hasOwnProperty(_propName) && (clientObject = describeValue(
3693            remainingServerProperties[_propName],
3694            120 - 2 * indent - _propName.length - 2
3695          ), properties += removed(indent) + _propName + ": " + clientObject + "\n");
3696        return properties;
3697      }
3698      function describeElementDiff(type, clientProps, serverProps, indent) {
3699        var content = "", serverPropNames = /* @__PURE__ */ new Map();
3700        for (propName$jscomp$0 in serverProps)
3701          serverProps.hasOwnProperty(propName$jscomp$0) && serverPropNames.set(
3702            propName$jscomp$0.toLowerCase(),
3703            propName$jscomp$0
3704          );
3705        if (1 === serverPropNames.size && serverPropNames.has("children"))
3706          content += describeExpandedElement(
3707            type,
3708            clientProps,
3709            indentation(indent)
3710          );
3711        else {
3712          for (var _propName2 in clientProps)
3713            if (clientProps.hasOwnProperty(_propName2) && "children" !== _propName2) {
3714              var maxLength$jscomp$0 = 120 - 2 * (indent + 1) - _propName2.length - 1, serverPropName = serverPropNames.get(_propName2.toLowerCase());
3715              if (void 0 !== serverPropName) {
3716                serverPropNames.delete(_propName2.toLowerCase());
3717                var propName$jscomp$0 = clientProps[_propName2];
3718                serverPropName = serverProps[serverPropName];
3719                var clientPropValue = describePropValue(
3720                  propName$jscomp$0,
3721                  maxLength$jscomp$0
3722                );
3723                maxLength$jscomp$0 = describePropValue(
3724                  serverPropName,
3725                  maxLength$jscomp$0
3726                );
3727                "object" === typeof propName$jscomp$0 && null !== propName$jscomp$0 && "object" === typeof serverPropName && null !== serverPropName && "Object" === objectName(propName$jscomp$0) && "Object" === objectName(serverPropName) && (2 < Object.keys(propName$jscomp$0).length || 2 < Object.keys(serverPropName).length || -1 < clientPropValue.indexOf("...") || -1 < maxLength$jscomp$0.indexOf("...")) ? content += indentation(indent + 1) + _propName2 + "={{\n" + describePropertiesDiff(
3728                  propName$jscomp$0,
3729                  serverPropName,
3730                  indent + 2
3731                ) + indentation(indent + 1) + "}}\n" : (content += added(indent + 1) + _propName2 + "=" + clientPropValue + "\n", content += removed(indent + 1) + _propName2 + "=" + maxLength$jscomp$0 + "\n");
3732              } else
3733                content += indentation(indent + 1) + _propName2 + "=" + describePropValue(clientProps[_propName2], maxLength$jscomp$0) + "\n";
3734            }
3735          serverPropNames.forEach(function(propName) {
3736            if ("children" !== propName) {
3737              var maxLength = 120 - 2 * (indent + 1) - propName.length - 1;
3738              content += removed(indent + 1) + propName + "=" + describePropValue(serverProps[propName], maxLength) + "\n";
3739            }
3740          });
3741          content = "" === content ? indentation(indent) + "<" + type + ">\n" : indentation(indent) + "<" + type + "\n" + content + indentation(indent) + ">\n";
3742        }
3743        type = serverProps.children;
3744        clientProps = clientProps.children;
3745        if ("string" === typeof type || "number" === typeof type || "bigint" === typeof type) {
3746          serverPropNames = "";
3747          if ("string" === typeof clientProps || "number" === typeof clientProps || "bigint" === typeof clientProps)
3748            serverPropNames = "" + clientProps;
3749          content += describeTextDiff(serverPropNames, "" + type, indent + 1);
3750        } else if ("string" === typeof clientProps || "number" === typeof clientProps || "bigint" === typeof clientProps)
3751          content = null == type ? content + describeTextDiff("" + clientProps, null, indent + 1) : content + describeTextDiff("" + clientProps, void 0, indent + 1);
3752        return content;
3753      }
3754      function describeSiblingFiber(fiber, indent) {
3755        var type = describeFiberType(fiber);
3756        if (null === type) {
3757          type = "";
3758          for (fiber = fiber.child; fiber; )
3759            type += describeSiblingFiber(fiber, indent), fiber = fiber.sibling;
3760          return type;
3761        }
3762        return indentation(indent) + "<" + type + ">\n";
3763      }
3764      function describeNode(node, indent) {
3765        var skipToNode = findNotableNode(node, indent);
3766        if (skipToNode !== node && (1 !== node.children.length || node.children[0] !== skipToNode))
3767          return indentation(indent) + "...\n" + describeNode(skipToNode, indent + 1);
3768        skipToNode = "";
3769        var debugInfo = node.fiber._debugInfo;
3770        if (debugInfo)
3771          for (var i3 = 0; i3 < debugInfo.length; i3++) {
3772            var serverComponentName = debugInfo[i3].name;
3773            "string" === typeof serverComponentName && (skipToNode += indentation(indent) + "<" + serverComponentName + ">\n", indent++);
3774          }
3775        debugInfo = "";
3776        i3 = node.fiber.pendingProps;
3777        if (6 === node.fiber.tag)
3778          debugInfo = describeTextDiff(i3, node.serverProps, indent), indent++;
3779        else if (serverComponentName = describeFiberType(node.fiber), null !== serverComponentName)
3780          if (void 0 === node.serverProps) {
3781            debugInfo = indent;
3782            var maxLength = 120 - 2 * debugInfo - serverComponentName.length - 2, content = "";
3783            for (propName in i3)
3784              if (i3.hasOwnProperty(propName) && "children" !== propName) {
3785                var propValue = describePropValue(i3[propName], 15);
3786                maxLength -= propName.length + propValue.length + 2;
3787                if (0 > maxLength) {
3788                  content += " ...";
3789                  break;
3790                }
3791                content += " " + propName + "=" + propValue;
3792              }
3793            debugInfo = indentation(debugInfo) + "<" + serverComponentName + content + ">\n";
3794            indent++;
3795          } else
3796            null === node.serverProps ? (debugInfo = describeExpandedElement(
3797              serverComponentName,
3798              i3,
3799              added(indent)
3800            ), indent++) : "string" === typeof node.serverProps ? console.error(
3801              "Should not have matched a non HostText fiber to a Text node. This is a bug in React."
3802            ) : (debugInfo = describeElementDiff(
3803              serverComponentName,
3804              i3,
3805              node.serverProps,
3806              indent
3807            ), indent++);
3808        var propName = "";
3809        i3 = node.fiber.child;
3810        for (serverComponentName = 0; i3 && serverComponentName < node.children.length; )
3811          maxLength = node.children[serverComponentName], maxLength.fiber === i3 ? (propName += describeNode(maxLength, indent), serverComponentName++) : propName += describeSiblingFiber(i3, indent), i3 = i3.sibling;
3812        i3 && 0 < node.children.length && (propName += indentation(indent) + "...\n");
3813        i3 = node.serverTail;
3814        null === node.serverProps && indent--;
3815        for (node = 0; node < i3.length; node++)
3816          serverComponentName = i3[node], propName = "string" === typeof serverComponentName ? propName + (removed(indent) + describeTextNode(serverComponentName, 120 - 2 * indent) + "\n") : propName + describeExpandedElement(
3817            serverComponentName.type,
3818            serverComponentName.props,
3819            removed(indent)
3820          );
3821        return skipToNode + debugInfo + propName;
3822      }
3823      function describeDiff(rootNode) {
3824        try {
3825          return "\n\n" + describeNode(rootNode, 0);
3826        } catch (x3) {
3827          return "";
3828        }
3829      }
3830      function describeAncestors(ancestor, child, props) {
3831        for (var fiber = child, node = null, distanceFromLeaf = 0; fiber; )
3832          fiber === ancestor && (distanceFromLeaf = 0), node = {
3833            fiber,
3834            children: null !== node ? [node] : [],
3835            serverProps: fiber === child ? props : fiber === ancestor ? null : void 0,
3836            serverTail: [],
3837            distanceFromLeaf
3838          }, distanceFromLeaf++, fiber = fiber.return;
3839        return null !== node ? describeDiff(node).replaceAll(/^[+-]/gm, ">") : "";
3840      }
3841      function updatedAncestorInfoDev(oldInfo, tag) {
3842        var ancestorInfo = assign({}, oldInfo || emptyAncestorInfoDev), info = { tag };
3843        -1 !== inScopeTags.indexOf(tag) && (ancestorInfo.aTagInScope = null, ancestorInfo.buttonTagInScope = null, ancestorInfo.nobrTagInScope = null);
3844        -1 !== buttonScopeTags.indexOf(tag) && (ancestorInfo.pTagInButtonScope = null);
3845        -1 !== specialTags.indexOf(tag) && "address" !== tag && "div" !== tag && "p" !== tag && (ancestorInfo.listItemTagAutoclosing = null, ancestorInfo.dlItemTagAutoclosing = null);
3846        ancestorInfo.current = info;
3847        "form" === tag && (ancestorInfo.formTag = info);
3848        "a" === tag && (ancestorInfo.aTagInScope = info);
3849        "button" === tag && (ancestorInfo.buttonTagInScope = info);
3850        "nobr" === tag && (ancestorInfo.nobrTagInScope = info);
3851        "p" === tag && (ancestorInfo.pTagInButtonScope = info);
3852        "li" === tag && (ancestorInfo.listItemTagAutoclosing = info);
3853        if ("dd" === tag || "dt" === tag)
3854          ancestorInfo.dlItemTagAutoclosing = info;
3855        "#document" === tag || "html" === tag ? ancestorInfo.containerTagInScope = null : ancestorInfo.containerTagInScope || (ancestorInfo.containerTagInScope = info);
3856        null !== oldInfo || "#document" !== tag && "html" !== tag && "body" !== tag ? true === ancestorInfo.implicitRootScope && (ancestorInfo.implicitRootScope = false) : ancestorInfo.implicitRootScope = true;
3857        return ancestorInfo;
3858      }
3859      function isTagValidWithParent(tag, parentTag, implicitRootScope) {
3860        switch (parentTag) {
3861          case "select":
3862            return "hr" === tag || "option" === tag || "optgroup" === tag || "script" === tag || "template" === tag || "#text" === tag;
3863          case "optgroup":
3864            return "option" === tag || "#text" === tag;
3865          case "option":
3866            return "#text" === tag;
3867          case "tr":
3868            return "th" === tag || "td" === tag || "style" === tag || "script" === tag || "template" === tag;
3869          case "tbody":
3870          case "thead":
3871          case "tfoot":
3872            return "tr" === tag || "style" === tag || "script" === tag || "template" === tag;
3873          case "colgroup":
3874            return "col" === tag || "template" === tag;
3875          case "table":
3876            return "caption" === tag || "colgroup" === tag || "tbody" === tag || "tfoot" === tag || "thead" === tag || "style" === tag || "script" === tag || "template" === tag;
3877          case "head":
3878            return "base" === tag || "basefont" === tag || "bgsound" === tag || "link" === tag || "meta" === tag || "title" === tag || "noscript" === tag || "noframes" === tag || "style" === tag || "script" === tag || "template" === tag;
3879          case "html":
3880            if (implicitRootScope) break;
3881            return "head" === tag || "body" === tag || "frameset" === tag;
3882          case "frameset":
3883            return "frame" === tag;
3884          case "#document":
3885            if (!implicitRootScope) return "html" === tag;
3886        }
3887        switch (tag) {
3888          case "h1":
3889          case "h2":
3890          case "h3":
3891          case "h4":
3892          case "h5":
3893          case "h6":
3894            return "h1" !== parentTag && "h2" !== parentTag && "h3" !== parentTag && "h4" !== parentTag && "h5" !== parentTag && "h6" !== parentTag;
3895          case "rp":
3896          case "rt":
3897            return -1 === impliedEndTags.indexOf(parentTag);
3898          case "caption":
3899          case "col":
3900          case "colgroup":
3901          case "frameset":
3902          case "frame":
3903          case "tbody":
3904          case "td":
3905          case "tfoot":
3906          case "th":
3907          case "thead":
3908          case "tr":
3909            return null == parentTag;
3910          case "head":
3911            return implicitRootScope || null === parentTag;
3912          case "html":
3913            return implicitRootScope && "#document" === parentTag || null === parentTag;
3914          case "body":
3915            return implicitRootScope && ("#document" === parentTag || "html" === parentTag) || null === parentTag;
3916        }
3917        return true;
3918      }
3919      function findInvalidAncestorForTag(tag, ancestorInfo) {
3920        switch (tag) {
3921          case "address":
3922          case "article":
3923          case "aside":
3924          case "blockquote":
3925          case "center":
3926          case "details":
3927          case "dialog":
3928          case "dir":
3929          case "div":
3930          case "dl":
3931          case "fieldset":
3932          case "figcaption":
3933          case "figure":
3934          case "footer":
3935          case "header":
3936          case "hgroup":
3937          case "main":
3938          case "menu":
3939          case "nav":
3940          case "ol":
3941          case "p":
3942          case "section":
3943          case "summary":
3944          case "ul":
3945          case "pre":
3946          case "listing":
3947          case "table":
3948          case "hr":
3949          case "xmp":
3950          case "h1":
3951          case "h2":
3952          case "h3":
3953          case "h4":
3954          case "h5":
3955          case "h6":
3956            return ancestorInfo.pTagInButtonScope;
3957          case "form":
3958            return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;
3959          case "li":
3960            return ancestorInfo.listItemTagAutoclosing;
3961          case "dd":
3962          case "dt":
3963            return ancestorInfo.dlItemTagAutoclosing;
3964          case "button":
3965            return ancestorInfo.buttonTagInScope;
3966          case "a":
3967            return ancestorInfo.aTagInScope;
3968          case "nobr":
3969            return ancestorInfo.nobrTagInScope;
3970        }
3971        return null;
3972      }
3973      function findAncestor(parent, tagName) {
3974        for (; parent; ) {
3975          switch (parent.tag) {
3976            case 5:
3977            case 26:
3978            case 27:
3979              if (parent.type === tagName) return parent;
3980          }
3981          parent = parent.return;
3982        }
3983        return null;
3984      }
3985      function validateDOMNesting(childTag, ancestorInfo) {
3986        ancestorInfo = ancestorInfo || emptyAncestorInfoDev;
3987        var parentInfo = ancestorInfo.current;
3988        ancestorInfo = (parentInfo = isTagValidWithParent(
3989          childTag,
3990          parentInfo && parentInfo.tag,
3991          ancestorInfo.implicitRootScope
3992        ) ? null : parentInfo) ? null : findInvalidAncestorForTag(childTag, ancestorInfo);
3993        ancestorInfo = parentInfo || ancestorInfo;
3994        if (!ancestorInfo) return true;
3995        var ancestorTag = ancestorInfo.tag;
3996        ancestorInfo = String(!!parentInfo) + "|" + childTag + "|" + ancestorTag;
3997        if (didWarn[ancestorInfo]) return false;
3998        didWarn[ancestorInfo] = true;
3999        var ancestor = (ancestorInfo = current) ? findAncestor(ancestorInfo.return, ancestorTag) : null, ancestorDescription = null !== ancestorInfo && null !== ancestor ? describeAncestors(ancestor, ancestorInfo, null) : "", tagDisplayName = "<" + childTag + ">";
4000        parentInfo ? (parentInfo = "", "table" === ancestorTag && "tr" === childTag && (parentInfo += " Add a <tbody>, <thead> or <tfoot> to your code to match the DOM tree generated by the browser."), console.error(
4001          "In HTML, %s cannot be a child of <%s>.%s\nThis will cause a hydration error.%s",
4002          tagDisplayName,
4003          ancestorTag,
4004          parentInfo,
4005          ancestorDescription
4006        )) : console.error(
4007          "In HTML, %s cannot be a descendant of <%s>.\nThis will cause a hydration error.%s",
4008          tagDisplayName,
4009          ancestorTag,
4010          ancestorDescription
4011        );
4012        ancestorInfo && (childTag = ancestorInfo.return, null === ancestor || null === childTag || ancestor === childTag && childTag._debugOwner === ancestorInfo._debugOwner || runWithFiberInDEV(ancestor, function() {
4013          console.error(
4014            "<%s> cannot contain a nested %s.\nSee this log for the ancestor stack trace.",
4015            ancestorTag,
4016            tagDisplayName
4017          );
4018        }));
4019        return false;
4020      }
4021      function validateTextNesting(childText, parentTag, implicitRootScope) {
4022        if (implicitRootScope || isTagValidWithParent("#text", parentTag, false))
4023          return true;
4024        implicitRootScope = "#text|" + parentTag;
4025        if (didWarn[implicitRootScope]) return false;
4026        didWarn[implicitRootScope] = true;
4027        var ancestor = (implicitRootScope = current) ? findAncestor(implicitRootScope, parentTag) : null;
4028        implicitRootScope = null !== implicitRootScope && null !== ancestor ? describeAncestors(
4029          ancestor,
4030          implicitRootScope,
4031          6 !== implicitRootScope.tag ? { children: null } : null
4032        ) : "";
4033        /\S/.test(childText) ? console.error(
4034          "In HTML, text nodes cannot be a child of <%s>.\nThis will cause a hydration error.%s",
4035          parentTag,
4036          implicitRootScope
4037        ) : console.error(
4038          "In HTML, whitespace text nodes cannot be a child of <%s>. Make sure you don't have any extra whitespace between tags on each line of your source code.\nThis will cause a hydration error.%s",
4039          parentTag,
4040          implicitRootScope
4041        );
4042        return false;
4043      }
4044      function setTextContent(node, text) {
4045        if (text) {
4046          var firstChild = node.firstChild;
4047          if (firstChild && firstChild === node.lastChild && 3 === firstChild.nodeType) {
4048            firstChild.nodeValue = text;
4049            return;
4050          }
4051        }
4052        node.textContent = text;
4053      }
4054      function camelize2(string) {
4055        return string.replace(hyphenPattern, function(_3, character) {
4056          return character.toUpperCase();
4057        });
4058      }
4059      function setValueForStyle(style2, styleName, value) {
4060        var isCustomProperty = 0 === styleName.indexOf("--");
4061        isCustomProperty || (-1 < styleName.indexOf("-") ? warnedStyleNames.hasOwnProperty(styleName) && warnedStyleNames[styleName] || (warnedStyleNames[styleName] = true, console.error(
4062          "Unsupported style property %s. Did you mean %s?",
4063          styleName,
4064          camelize2(styleName.replace(msPattern, "ms-"))
4065        )) : badVendoredStyleNamePattern.test(styleName) ? warnedStyleNames.hasOwnProperty(styleName) && warnedStyleNames[styleName] || (warnedStyleNames[styleName] = true, console.error(
4066          "Unsupported vendor-prefixed style property %s. Did you mean %s?",
4067          styleName,
4068          styleName.charAt(0).toUpperCase() + styleName.slice(1)
4069        )) : !badStyleValueWithSemicolonPattern.test(value) || warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value] || (warnedStyleValues[value] = true, console.error(
4070          `Style property values shouldn't contain a semicolon. Try "%s: %s" instead.`,
4071          styleName,
4072          value.replace(badStyleValueWithSemicolonPattern, "")
4073        )), "number" === typeof value && (isNaN(value) ? warnedForNaNValue || (warnedForNaNValue = true, console.error(
4074          "`NaN` is an invalid value for the `%s` css style property.",
4075          styleName
4076        )) : isFinite(value) || warnedForInfinityValue || (warnedForInfinityValue = true, console.error(
4077          "`Infinity` is an invalid value for the `%s` css style property.",
4078          styleName
4079        ))));
4080        null == value || "boolean" === typeof value || "" === value ? isCustomProperty ? style2.setProperty(styleName, "") : "float" === styleName ? style2.cssFloat = "" : style2[styleName] = "" : isCustomProperty ? style2.setProperty(styleName, value) : "number" !== typeof value || 0 === value || unitlessNumbers.has(styleName) ? "float" === styleName ? style2.cssFloat = value : (checkCSSPropertyStringCoercion(value, styleName), style2[styleName] = ("" + value).trim()) : style2[styleName] = value + "px";
4081      }
4082      function setValueForStyles(node, styles, prevStyles) {
4083        if (null != styles && "object" !== typeof styles)
4084          throw Error(
4085            "The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX."
4086          );
4087        styles && Object.freeze(styles);
4088        node = node.style;
4089        if (null != prevStyles) {
4090          if (styles) {
4091            var expandedUpdates = {};
4092            if (prevStyles) {
4093              for (var key in prevStyles)
4094                if (prevStyles.hasOwnProperty(key) && !styles.hasOwnProperty(key))
4095                  for (var longhands = shorthandToLonghand[key] || [key], i3 = 0; i3 < longhands.length; i3++)
4096                    expandedUpdates[longhands[i3]] = key;
4097            }
4098            for (var _key in styles)
4099              if (styles.hasOwnProperty(_key) && (!prevStyles || prevStyles[_key] !== styles[_key]))
4100                for (key = shorthandToLonghand[_key] || [_key], longhands = 0; longhands < key.length; longhands++)
4101                  expandedUpdates[key[longhands]] = _key;
4102            _key = {};
4103            for (var key$jscomp$0 in styles)
4104              for (key = shorthandToLonghand[key$jscomp$0] || [key$jscomp$0], longhands = 0; longhands < key.length; longhands++)
4105                _key[key[longhands]] = key$jscomp$0;
4106            key$jscomp$0 = {};
4107            for (var _key2 in expandedUpdates)
4108              if (key = expandedUpdates[_key2], (longhands = _key[_key2]) && key !== longhands && (i3 = key + "," + longhands, !key$jscomp$0[i3])) {
4109                key$jscomp$0[i3] = true;
4110                i3 = console;
4111                var value = styles[key];
4112                i3.error.call(
4113                  i3,
4114                  "%s a style property during rerender (%s) when a conflicting property is set (%s) can lead to styling bugs. To avoid this, don't mix shorthand and non-shorthand properties for the same value; instead, replace the shorthand with separate values.",
4115                  null == value || "boolean" === typeof value || "" === value ? "Removing" : "Updating",
4116                  key,
4117                  longhands
4118                );
4119              }
4120          }
4121          for (var styleName in prevStyles)
4122            !prevStyles.hasOwnProperty(styleName) || null != styles && styles.hasOwnProperty(styleName) || (0 === styleName.indexOf("--") ? node.setProperty(styleName, "") : "float" === styleName ? node.cssFloat = "" : node[styleName] = "");
4123          for (var _styleName in styles)
4124            _key2 = styles[_styleName], styles.hasOwnProperty(_styleName) && prevStyles[_styleName] !== _key2 && setValueForStyle(node, _styleName, _key2);
4125        } else
4126          for (expandedUpdates in styles)
4127            styles.hasOwnProperty(expandedUpdates) && setValueForStyle(node, expandedUpdates, styles[expandedUpdates]);
4128      }
4129      function isCustomElement(tagName) {
4130        if (-1 === tagName.indexOf("-")) return false;
4131        switch (tagName) {
4132          case "annotation-xml":
4133          case "color-profile":
4134          case "font-face":
4135          case "font-face-src":
4136          case "font-face-uri":
4137          case "font-face-format":
4138          case "font-face-name":
4139          case "missing-glyph":
4140            return false;
4141          default:
4142            return true;
4143        }
4144      }
4145      function getAttributeAlias(name) {
4146        return aliases.get(name) || name;
4147      }
4148      function validateProperty$1(tagName, name) {
4149        if (hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name])
4150          return true;
4151        if (rARIACamel$1.test(name)) {
4152          tagName = "aria-" + name.slice(4).toLowerCase();
4153          tagName = ariaProperties.hasOwnProperty(tagName) ? tagName : null;
4154          if (null == tagName)
4155            return console.error(
4156              "Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.",
4157              name
4158            ), warnedProperties$1[name] = true;
4159          if (name !== tagName)
4160            return console.error(
4161              "Invalid ARIA attribute `%s`. Did you mean `%s`?",
4162              name,
4163              tagName
4164            ), warnedProperties$1[name] = true;
4165        }
4166        if (rARIA$1.test(name)) {
4167          tagName = name.toLowerCase();
4168          tagName = ariaProperties.hasOwnProperty(tagName) ? tagName : null;
4169          if (null == tagName) return warnedProperties$1[name] = true, false;
4170          name !== tagName && (console.error(
4171            "Unknown ARIA attribute `%s`. Did you mean `%s`?",
4172            name,
4173            tagName
4174          ), warnedProperties$1[name] = true);
4175        }
4176        return true;
4177      }
4178      function validateProperties$2(type, props) {
4179        var invalidProps = [], key;
4180        for (key in props)
4181          validateProperty$1(type, key) || invalidProps.push(key);
4182        props = invalidProps.map(function(prop) {
4183          return "`" + prop + "`";
4184        }).join(", ");
4185        1 === invalidProps.length ? console.error(
4186          "Invalid aria prop %s on <%s> tag. For details, see https://react.dev/link/invalid-aria-props",
4187          props,
4188          type
4189        ) : 1 < invalidProps.length && console.error(
4190          "Invalid aria props %s on <%s> tag. For details, see https://react.dev/link/invalid-aria-props",
4191          props,
4192          type
4193        );
4194      }
4195      function validateProperty(tagName, name, value, eventRegistry) {
4196        if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name])
4197          return true;
4198        var lowerCasedName = name.toLowerCase();
4199        if ("onfocusin" === lowerCasedName || "onfocusout" === lowerCasedName)
4200          return console.error(
4201            "React uses onFocus and onBlur instead of onFocusIn and onFocusOut. All React events are normalized to bubble, so onFocusIn and onFocusOut are not needed/supported by React."
4202          ), warnedProperties[name] = true;
4203        if ("function" === typeof value && ("form" === tagName && "action" === name || "input" === tagName && "formAction" === name || "button" === tagName && "formAction" === name))
4204          return true;
4205        if (null != eventRegistry) {
4206          tagName = eventRegistry.possibleRegistrationNames;
4207          if (eventRegistry.registrationNameDependencies.hasOwnProperty(name))
4208            return true;
4209          eventRegistry = tagName.hasOwnProperty(lowerCasedName) ? tagName[lowerCasedName] : null;
4210          if (null != eventRegistry)
4211            return console.error(
4212              "Invalid event handler property `%s`. Did you mean `%s`?",
4213              name,
4214              eventRegistry
4215            ), warnedProperties[name] = true;
4216          if (EVENT_NAME_REGEX.test(name))
4217            return console.error(
4218              "Unknown event handler property `%s`. It will be ignored.",
4219              name
4220            ), warnedProperties[name] = true;
4221        } else if (EVENT_NAME_REGEX.test(name))
4222          return INVALID_EVENT_NAME_REGEX.test(name) && console.error(
4223            "Invalid event handler property `%s`. React events use the camelCase naming convention, for example `onClick`.",
4224            name
4225          ), warnedProperties[name] = true;
4226        if (rARIA.test(name) || rARIACamel.test(name)) return true;
4227        if ("innerhtml" === lowerCasedName)
4228          return console.error(
4229            "Directly setting property `innerHTML` is not permitted. For more information, lookup documentation on `dangerouslySetInnerHTML`."
4230          ), warnedProperties[name] = true;
4231        if ("aria" === lowerCasedName)
4232          return console.error(
4233            "The `aria` attribute is reserved for future use in React. Pass individual `aria-` attributes instead."
4234          ), warnedProperties[name] = true;
4235        if ("is" === lowerCasedName && null !== value && void 0 !== value && "string" !== typeof value)
4236          return console.error(
4237            "Received a `%s` for a string attribute `is`. If this is expected, cast the value to a string.",
4238            typeof value
4239          ), warnedProperties[name] = true;
4240        if ("number" === typeof value && isNaN(value))
4241          return console.error(
4242            "Received NaN for the `%s` attribute. If this is expected, cast the value to a string.",
4243            name
4244          ), warnedProperties[name] = true;
4245        if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {
4246          if (lowerCasedName = possibleStandardNames[lowerCasedName], lowerCasedName !== name)
4247            return console.error(
4248              "Invalid DOM property `%s`. Did you mean `%s`?",
4249              name,
4250              lowerCasedName
4251            ), warnedProperties[name] = true;
4252        } else if (name !== lowerCasedName)
4253          return console.error(
4254            "React does not recognize the `%s` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `%s` instead. If you accidentally passed it from a parent component, remove it from the DOM element.",
4255            name,
4256            lowerCasedName
4257          ), warnedProperties[name] = true;
4258        switch (name) {
4259          case "dangerouslySetInnerHTML":
4260          case "children":
4261          case "style":
4262          case "suppressContentEditableWarning":
4263          case "suppressHydrationWarning":
4264          case "defaultValue":
4265          case "defaultChecked":
4266          case "innerHTML":
4267          case "ref":
4268            return true;
4269          case "innerText":
4270          case "textContent":
4271            return true;
4272        }
4273        switch (typeof value) {
4274          case "boolean":
4275            switch (name) {
4276              case "autoFocus":
4277              case "checked":
4278              case "multiple":
4279              case "muted":
4280              case "selected":
4281              case "contentEditable":
4282              case "spellCheck":
4283              case "draggable":
4284              case "value":
4285              case "autoReverse":
4286              case "externalResourcesRequired":
4287              case "focusable":
4288              case "preserveAlpha":
4289              case "allowFullScreen":
4290              case "async":
4291              case "autoPlay":
4292              case "controls":
4293              case "default":
4294              case "defer":
4295              case "disabled":
4296              case "disablePictureInPicture":
4297              case "disableRemotePlayback":
4298              case "formNoValidate":
4299              case "hidden":
4300              case "loop":
4301              case "noModule":
4302              case "noValidate":
4303              case "open":
4304              case "playsInline":
4305              case "readOnly":
4306              case "required":
4307              case "reversed":
4308              case "scoped":
4309              case "seamless":
4310              case "itemScope":
4311              case "capture":
4312              case "download":
4313              case "inert":
4314                return true;
4315              default:
4316                lowerCasedName = name.toLowerCase().slice(0, 5);
4317                if ("data-" === lowerCasedName || "aria-" === lowerCasedName)
4318                  return true;
4319                value ? console.error(
4320                  'Received `%s` for a non-boolean attribute `%s`.\n\nIf you want to write it to the DOM, pass a string instead: %s="%s" or %s={value.toString()}.',
4321                  value,
4322                  name,
4323                  name,
4324                  value,
4325                  name
4326                ) : console.error(
4327                  'Received `%s` for a non-boolean attribute `%s`.\n\nIf you want to write it to the DOM, pass a string instead: %s="%s" or %s={value.toString()}.\n\nIf you used to conditionally omit it with %s={condition && value}, pass %s={condition ? value : undefined} instead.',
4328                  value,
4329                  name,
4330                  name,
4331                  value,
4332                  name,
4333                  name,
4334                  name
4335                );
4336                return warnedProperties[name] = true;
4337            }
4338          case "function":
4339          case "symbol":
4340            return warnedProperties[name] = true, false;
4341          case "string":
4342            if ("false" === value || "true" === value) {
4343              switch (name) {
4344                case "checked":
4345                case "selected":
4346                case "multiple":
4347                case "muted":
4348                case "allowFullScreen":
4349                case "async":
4350                case "autoPlay":
4351                case "controls":
4352                case "default":
4353                case "defer":
4354                case "disabled":
4355                case "disablePictureInPicture":
4356                case "disableRemotePlayback":
4357                case "formNoValidate":
4358                case "hidden":
4359                case "loop":
4360                case "noModule":
4361                case "noValidate":
4362                case "open":
4363                case "playsInline":
4364                case "readOnly":
4365                case "required":
4366                case "reversed":
4367                case "scoped":
4368                case "seamless":
4369                case "itemScope":
4370                case "inert":
4371                  break;
4372                default:
4373                  return true;
4374              }
4375              console.error(
4376                "Received the string `%s` for the boolean attribute `%s`. %s Did you mean %s={%s}?",
4377                value,
4378                name,
4379                "false" === value ? "The browser will interpret it as a truthy value." : 'Although this works, it will not work as expected if you pass the string "false".',
4380                name,
4381                value
4382              );
4383              warnedProperties[name] = true;
4384            }
4385        }
4386        return true;
4387      }
4388      function warnUnknownProperties(type, props, eventRegistry) {
4389        var unknownProps = [], key;
4390        for (key in props)
4391          validateProperty(type, key, props[key], eventRegistry) || unknownProps.push(key);
4392        props = unknownProps.map(function(prop) {
4393          return "`" + prop + "`";
4394        }).join(", ");
4395        1 === unknownProps.length ? console.error(
4396          "Invalid value for prop %s on <%s> tag. Either remove it from the element, or pass a string or number value to keep it in the DOM. For details, see https://react.dev/link/attribute-behavior ",
4397          props,
4398          type
4399        ) : 1 < unknownProps.length && console.error(
4400          "Invalid values for props %s on <%s> tag. Either remove them from the element, or pass a string or number value to keep them in the DOM. For details, see https://react.dev/link/attribute-behavior ",
4401          props,
4402          type
4403        );
4404      }
4405      function sanitizeURL(url) {
4406        return isJavaScriptProtocol.test("" + url) ? "javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')" : url;
4407      }
4408      function noop$1() {
4409      }
4410      function getEventTarget(nativeEvent) {
4411        nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;
4412        nativeEvent.correspondingUseElement && (nativeEvent = nativeEvent.correspondingUseElement);
4413        return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;
4414      }
4415      function restoreStateOfTarget(target) {
4416        var internalInstance = getInstanceFromNode(target);
4417        if (internalInstance && (target = internalInstance.stateNode)) {
4418          var props = target[internalPropsKey] || null;
4419          a: switch (target = internalInstance.stateNode, internalInstance.type) {
4420            case "input":
4421              updateInput(
4422                target,
4423                props.value,
4424                props.defaultValue,
4425                props.defaultValue,
4426                props.checked,
4427                props.defaultChecked,
4428                props.type,
4429                props.name
4430              );
4431              internalInstance = props.name;
4432              if ("radio" === props.type && null != internalInstance) {
4433                for (props = target; props.parentNode; ) props = props.parentNode;
4434                checkAttributeStringCoercion(internalInstance, "name");
4435                props = props.querySelectorAll(
4436                  'input[name="' + escapeSelectorAttributeValueInsideDoubleQuotes(
4437                    "" + internalInstance
4438                  ) + '"][type="radio"]'
4439                );
4440                for (internalInstance = 0; internalInstance < props.length; internalInstance++) {
4441                  var otherNode = props[internalInstance];
4442                  if (otherNode !== target && otherNode.form === target.form) {
4443                    var otherProps = otherNode[internalPropsKey] || null;
4444                    if (!otherProps)
4445                      throw Error(
4446                        "ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported."
4447                      );
4448                    updateInput(
4449                      otherNode,
4450                      otherProps.value,
4451                      otherProps.defaultValue,
4452                      otherProps.defaultValue,
4453                      otherProps.checked,
4454                      otherProps.defaultChecked,
4455                      otherProps.type,
4456                      otherProps.name
4457                    );
4458                  }
4459                }
4460                for (internalInstance = 0; internalInstance < props.length; internalInstance++)
4461                  otherNode = props[internalInstance], otherNode.form === target.form && updateValueIfChanged(otherNode);
4462              }
4463              break a;
4464            case "textarea":
4465              updateTextarea(target, props.value, props.defaultValue);
4466              break a;
4467            case "select":
4468              internalInstance = props.value, null != internalInstance && updateOptions(target, !!props.multiple, internalInstance, false);
4469          }
4470        }
4471      }
4472      function batchedUpdates$1(fn3, a3, b3) {
4473        if (isInsideEventHandler) return fn3(a3, b3);
4474        isInsideEventHandler = true;
4475        try {
4476          var JSCompiler_inline_result = fn3(a3);
4477          return JSCompiler_inline_result;
4478        } finally {
4479          if (isInsideEventHandler = false, null !== restoreTarget || null !== restoreQueue) {
4480            if (flushSyncWork$1(), restoreTarget && (a3 = restoreTarget, fn3 = restoreQueue, restoreQueue = restoreTarget = null, restoreStateOfTarget(a3), fn3))
4481              for (a3 = 0; a3 < fn3.length; a3++) restoreStateOfTarget(fn3[a3]);
4482          }
4483        }
4484      }
4485      function getListener(inst, registrationName) {
4486        var stateNode = inst.stateNode;
4487        if (null === stateNode) return null;
4488        var props = stateNode[internalPropsKey] || null;
4489        if (null === props) return null;
4490        stateNode = props[registrationName];
4491        a: switch (registrationName) {
4492          case "onClick":
4493          case "onClickCapture":
4494          case "onDoubleClick":
4495          case "onDoubleClickCapture":
4496          case "onMouseDown":
4497          case "onMouseDownCapture":
4498          case "onMouseMove":
4499          case "onMouseMoveCapture":
4500          case "onMouseUp":
4501          case "onMouseUpCapture":
4502          case "onMouseEnter":
4503            (props = !props.disabled) || (inst = inst.type, props = !("button" === inst || "input" === inst || "select" === inst || "textarea" === inst));
4504            inst = !props;
4505            break a;
4506          default:
4507            inst = false;
4508        }
4509        if (inst) return null;
4510        if (stateNode && "function" !== typeof stateNode)
4511          throw Error(
4512            "Expected `" + registrationName + "` listener to be a function, instead got a value of `" + typeof stateNode + "` type."
4513          );
4514        return stateNode;
4515      }
4516      function getData() {
4517        if (fallbackText) return fallbackText;
4518        var start2, startValue = startText, startLength = startValue.length, end, endValue = "value" in root2 ? root2.value : root2.textContent, endLength = endValue.length;
4519        for (start2 = 0; start2 < startLength && startValue[start2] === endValue[start2]; start2++) ;
4520        var minEnd = startLength - start2;
4521        for (end = 1; end <= minEnd && startValue[startLength - end] === endValue[endLength - end]; end++) ;
4522        return fallbackText = endValue.slice(start2, 1 < end ? 1 - end : void 0);
4523      }
4524      function getEventCharCode(nativeEvent) {
4525        var keyCode = nativeEvent.keyCode;
4526        "charCode" in nativeEvent ? (nativeEvent = nativeEvent.charCode, 0 === nativeEvent && 13 === keyCode && (nativeEvent = 13)) : nativeEvent = keyCode;
4527        10 === nativeEvent && (nativeEvent = 13);
4528        return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;
4529      }
4530      function functionThatReturnsTrue() {
4531        return true;
4532      }
4533      function functionThatReturnsFalse() {
4534        return false;
4535      }
4536      function createSyntheticEvent(Interface) {
4537        function SyntheticBaseEvent(reactName, reactEventType, targetInst, nativeEvent, nativeEventTarget) {
4538          this._reactName = reactName;
4539          this._targetInst = targetInst;
4540          this.type = reactEventType;
4541          this.nativeEvent = nativeEvent;
4542          this.target = nativeEventTarget;
4543          this.currentTarget = null;
4544          for (var propName in Interface)
4545            Interface.hasOwnProperty(propName) && (reactName = Interface[propName], this[propName] = reactName ? reactName(nativeEvent) : nativeEvent[propName]);
4546          this.isDefaultPrevented = (null != nativeEvent.defaultPrevented ? nativeEvent.defaultPrevented : false === nativeEvent.returnValue) ? functionThatReturnsTrue : functionThatReturnsFalse;
4547          this.isPropagationStopped = functionThatReturnsFalse;
4548          return this;
4549        }
4550        assign(SyntheticBaseEvent.prototype, {
4551          preventDefault: function() {
4552            this.defaultPrevented = true;
4553            var event = this.nativeEvent;
4554            event && (event.preventDefault ? event.preventDefault() : "unknown" !== typeof event.returnValue && (event.returnValue = false), this.isDefaultPrevented = functionThatReturnsTrue);
4555          },
4556          stopPropagation: function() {
4557            var event = this.nativeEvent;
4558            event && (event.stopPropagation ? event.stopPropagation() : "unknown" !== typeof event.cancelBubble && (event.cancelBubble = true), this.isPropagationStopped = functionThatReturnsTrue);
4559          },
4560          persist: function() {
4561          },
4562          isPersistent: functionThatReturnsTrue
4563        });
4564        return SyntheticBaseEvent;
4565      }
4566      function modifierStateGetter(keyArg) {
4567        var nativeEvent = this.nativeEvent;
4568        return nativeEvent.getModifierState ? nativeEvent.getModifierState(keyArg) : (keyArg = modifierKeyToProp[keyArg]) ? !!nativeEvent[keyArg] : false;
4569      }
4570      function getEventModifierState() {
4571        return modifierStateGetter;
4572      }
4573      function isFallbackCompositionEnd(domEventName, nativeEvent) {
4574        switch (domEventName) {
4575          case "keyup":
4576            return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);
4577          case "keydown":
4578            return nativeEvent.keyCode !== START_KEYCODE;
4579          case "keypress":
4580          case "mousedown":
4581          case "focusout":
4582            return true;
4583          default:
4584            return false;
4585        }
4586      }
4587      function getDataFromCustomEvent(nativeEvent) {
4588        nativeEvent = nativeEvent.detail;
4589        return "object" === typeof nativeEvent && "data" in nativeEvent ? nativeEvent.data : null;
4590      }
4591      function getNativeBeforeInputChars(domEventName, nativeEvent) {
4592        switch (domEventName) {
4593          case "compositionend":
4594            return getDataFromCustomEvent(nativeEvent);
4595          case "keypress":
4596            if (nativeEvent.which !== SPACEBAR_CODE) return null;
4597            hasSpaceKeypress = true;
4598            return SPACEBAR_CHAR;
4599          case "textInput":
4600            return domEventName = nativeEvent.data, domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName;
4601          default:
4602            return null;
4603        }
4604      }
4605      function getFallbackBeforeInputChars(domEventName, nativeEvent) {
4606        if (isComposing)
4607          return "compositionend" === domEventName || !canUseCompositionEvent && isFallbackCompositionEnd(domEventName, nativeEvent) ? (domEventName = getData(), fallbackText = startText = root2 = null, isComposing = false, domEventName) : null;
4608        switch (domEventName) {
4609          case "paste":
4610            return null;
4611          case "keypress":
4612            if (!(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) || nativeEvent.ctrlKey && nativeEvent.altKey) {
4613              if (nativeEvent.char && 1 < nativeEvent.char.length)
4614                return nativeEvent.char;
4615              if (nativeEvent.which)
4616                return String.fromCharCode(nativeEvent.which);
4617            }
4618            return null;
4619          case "compositionend":
4620            return useFallbackCompositionData && "ko" !== nativeEvent.locale ? null : nativeEvent.data;
4621          default:
4622            return null;
4623        }
4624      }
4625      function isTextInputElement(elem) {
4626        var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
4627        return "input" === nodeName ? !!supportedInputTypes[elem.type] : "textarea" === nodeName ? true : false;
4628      }
4629      function isEventSupported(eventNameSuffix) {
4630        if (!canUseDOM) return false;
4631        eventNameSuffix = "on" + eventNameSuffix;
4632        var isSupported = eventNameSuffix in document;
4633        isSupported || (isSupported = document.createElement("div"), isSupported.setAttribute(eventNameSuffix, "return;"), isSupported = "function" === typeof isSupported[eventNameSuffix]);
4634        return isSupported;
4635      }
4636      function createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, target) {
4637        restoreTarget ? restoreQueue ? restoreQueue.push(target) : restoreQueue = [target] : restoreTarget = target;
4638        inst = accumulateTwoPhaseListeners(inst, "onChange");
4639        0 < inst.length && (nativeEvent = new SyntheticEvent(
4640          "onChange",
4641          "change",
4642          null,
4643          nativeEvent,
4644          target
4645        ), dispatchQueue.push({ event: nativeEvent, listeners: inst }));
4646      }
4647      function runEventInBatch(dispatchQueue) {
4648        processDispatchQueue(dispatchQueue, 0);
4649      }
4650      function getInstIfValueChanged(targetInst) {
4651        var targetNode = getNodeFromInstance(targetInst);
4652        if (updateValueIfChanged(targetNode)) return targetInst;
4653      }
4654      function getTargetInstForChangeEvent(domEventName, targetInst) {
4655        if ("change" === domEventName) return targetInst;
4656      }
4657      function stopWatchingForValueChange() {
4658        activeElement$1 && (activeElement$1.detachEvent("onpropertychange", handlePropertyChange), activeElementInst$1 = activeElement$1 = null);
4659      }
4660      function handlePropertyChange(nativeEvent) {
4661        if ("value" === nativeEvent.propertyName && getInstIfValueChanged(activeElementInst$1)) {
4662          var dispatchQueue = [];
4663          createAndAccumulateChangeEvent(
4664            dispatchQueue,
4665            activeElementInst$1,
4666            nativeEvent,
4667            getEventTarget(nativeEvent)
4668          );
4669          batchedUpdates$1(runEventInBatch, dispatchQueue);
4670        }
4671      }
4672      function handleEventsForInputEventPolyfill(domEventName, target, targetInst) {
4673        "focusin" === domEventName ? (stopWatchingForValueChange(), activeElement$1 = target, activeElementInst$1 = targetInst, activeElement$1.attachEvent("onpropertychange", handlePropertyChange)) : "focusout" === domEventName && stopWatchingForValueChange();
4674      }
4675      function getTargetInstForInputEventPolyfill(domEventName) {
4676        if ("selectionchange" === domEventName || "keyup" === domEventName || "keydown" === domEventName)
4677          return getInstIfValueChanged(activeElementInst$1);
4678      }
4679      function getTargetInstForClickEvent(domEventName, targetInst) {
4680        if ("click" === domEventName) return getInstIfValueChanged(targetInst);
4681      }
4682      function getTargetInstForInputOrChangeEvent(domEventName, targetInst) {
4683        if ("input" === domEventName || "change" === domEventName)
4684          return getInstIfValueChanged(targetInst);
4685      }
4686      function is3(x3, y3) {
4687        return x3 === y3 && (0 !== x3 || 1 / x3 === 1 / y3) || x3 !== x3 && y3 !== y3;
4688      }
4689      function shallowEqual(objA, objB) {
4690        if (objectIs(objA, objB)) return true;
4691        if ("object" !== typeof objA || null === objA || "object" !== typeof objB || null === objB)
4692          return false;
4693        var keysA = Object.keys(objA), keysB = Object.keys(objB);
4694        if (keysA.length !== keysB.length) return false;
4695        for (keysB = 0; keysB < keysA.length; keysB++) {
4696          var currentKey = keysA[keysB];
4697          if (!hasOwnProperty.call(objB, currentKey) || !objectIs(objA[currentKey], objB[currentKey]))
4698            return false;
4699        }
4700        return true;
4701      }
4702      function getLeafNode(node) {
4703        for (; node && node.firstChild; ) node = node.firstChild;
4704        return node;
4705      }
4706      function getNodeForCharacterOffset(root3, offset) {
4707        var node = getLeafNode(root3);
4708        root3 = 0;
4709        for (var nodeEnd; node; ) {
4710          if (3 === node.nodeType) {
4711            nodeEnd = root3 + node.textContent.length;
4712            if (root3 <= offset && nodeEnd >= offset)
4713              return { node, offset: offset - root3 };
4714            root3 = nodeEnd;
4715          }
4716          a: {
4717            for (; node; ) {
4718              if (node.nextSibling) {
4719                node = node.nextSibling;
4720                break a;
4721              }
4722              node = node.parentNode;
4723            }
4724            node = void 0;
4725          }
4726          node = getLeafNode(node);
4727        }
4728      }
4729      function containsNode(outerNode, innerNode) {
4730        return outerNode && innerNode ? outerNode === innerNode ? true : outerNode && 3 === outerNode.nodeType ? false : innerNode && 3 === innerNode.nodeType ? containsNode(outerNode, innerNode.parentNode) : "contains" in outerNode ? outerNode.contains(innerNode) : outerNode.compareDocumentPosition ? !!(outerNode.compareDocumentPosition(innerNode) & 16) : false : false;
4731      }
4732      function getActiveElementDeep(containerInfo) {
4733        containerInfo = null != containerInfo && null != containerInfo.ownerDocument && null != containerInfo.ownerDocument.defaultView ? containerInfo.ownerDocument.defaultView : window;
4734        for (var element = getActiveElement(containerInfo.document); element instanceof containerInfo.HTMLIFrameElement; ) {
4735          try {
4736            var JSCompiler_inline_result = "string" === typeof element.contentWindow.location.href;
4737          } catch (err) {
4738            JSCompiler_inline_result = false;
4739          }
4740          if (JSCompiler_inline_result) containerInfo = element.contentWindow;
4741          else break;
4742          element = getActiveElement(containerInfo.document);
4743        }
4744        return element;
4745      }
4746      function hasSelectionCapabilities(elem) {
4747        var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
4748        return nodeName && ("input" === nodeName && ("text" === elem.type || "search" === elem.type || "tel" === elem.type || "url" === elem.type || "password" === elem.type) || "textarea" === nodeName || "true" === elem.contentEditable);
4749      }
4750      function constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {
4751        var doc = nativeEventTarget.window === nativeEventTarget ? nativeEventTarget.document : 9 === nativeEventTarget.nodeType ? nativeEventTarget : nativeEventTarget.ownerDocument;
4752        mouseDown || null == activeElement || activeElement !== getActiveElement(doc) || (doc = activeElement, "selectionStart" in doc && hasSelectionCapabilities(doc) ? doc = { start: doc.selectionStart, end: doc.selectionEnd } : (doc = (doc.ownerDocument && doc.ownerDocument.defaultView || window).getSelection(), doc = {
4753          anchorNode: doc.anchorNode,
4754          anchorOffset: doc.anchorOffset,
4755          focusNode: doc.focusNode,
4756          focusOffset: doc.focusOffset
4757        }), lastSelection && shallowEqual(lastSelection, doc) || (lastSelection = doc, doc = accumulateTwoPhaseListeners(activeElementInst, "onSelect"), 0 < doc.length && (nativeEvent = new SyntheticEvent(
4758          "onSelect",
4759          "select",
4760          null,
4761          nativeEvent,
4762          nativeEventTarget
4763        ), dispatchQueue.push({ event: nativeEvent, listeners: doc }), nativeEvent.target = activeElement)));
4764      }
4765      function makePrefixMap(styleProp, eventName) {
4766        var prefixes = {};
4767        prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();
4768        prefixes["Webkit" + styleProp] = "webkit" + eventName;
4769        prefixes["Moz" + styleProp] = "moz" + eventName;
4770        return prefixes;
4771      }
4772      function getVendorPrefixedEventName(eventName) {
4773        if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];
4774        if (!vendorPrefixes[eventName]) return eventName;
4775        var prefixMap = vendorPrefixes[eventName], styleProp;
4776        for (styleProp in prefixMap)
4777          if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)
4778            return prefixedEventNames[eventName] = prefixMap[styleProp];
4779        return eventName;
4780      }
4781      function registerSimpleEvent(domEventName, reactName) {
4782        topLevelEventsToReactNames.set(domEventName, reactName);
4783        registerTwoPhaseEvent(reactName, [domEventName]);
4784      }
4785      function getArrayKind(array) {
4786        for (var kind = EMPTY_ARRAY, i3 = 0; i3 < array.length; i3++) {
4787          var value = array[i3];
4788          if ("object" === typeof value && null !== value)
4789            if (isArrayImpl(value) && 2 === value.length && "string" === typeof value[0]) {
4790              if (kind !== EMPTY_ARRAY && kind !== ENTRIES_ARRAY)
4791                return COMPLEX_ARRAY;
4792              kind = ENTRIES_ARRAY;
4793            } else return COMPLEX_ARRAY;
4794          else {
4795            if ("function" === typeof value || "string" === typeof value && 50 < value.length || kind !== EMPTY_ARRAY && kind !== PRIMITIVE_ARRAY)
4796              return COMPLEX_ARRAY;
4797            kind = PRIMITIVE_ARRAY;
4798          }
4799        }
4800        return kind;
4801      }
4802      function addObjectToProperties(object, properties, indent, prefix2) {
4803        for (var key in object)
4804          hasOwnProperty.call(object, key) && "_" !== key[0] && addValueToProperties(key, object[key], properties, indent, prefix2);
4805      }
4806      function addValueToProperties(propertyName, value, properties, indent, prefix2) {
4807        switch (typeof value) {
4808          case "object":
4809            if (null === value) {
4810              value = "null";
4811              break;
4812            } else {
4813              if (value.$$typeof === REACT_ELEMENT_TYPE) {
4814                var typeName2 = getComponentNameFromType(value.type) || "\u2026", key = value.key;
4815                value = value.props;
4816                var propsKeys = Object.keys(value), propsLength = propsKeys.length;
4817                if (null == key && 0 === propsLength) {
4818                  value = "<" + typeName2 + " />";
4819                  break;
4820                }
4821                if (3 > indent || 1 === propsLength && "children" === propsKeys[0] && null == key) {
4822                  value = "<" + typeName2 + " \u2026 />";
4823                  break;
4824                }
4825                properties.push([
4826                  prefix2 + "\xA0\xA0".repeat(indent) + propertyName,
4827                  "<" + typeName2
4828                ]);
4829                null !== key && addValueToProperties(
4830                  "key",
4831                  key,
4832                  properties,
4833                  indent + 1,
4834                  prefix2
4835                );
4836                propertyName = false;
4837                for (var propKey in value)
4838                  "children" === propKey ? null != value.children && (!isArrayImpl(value.children) || 0 < value.children.length) && (propertyName = true) : hasOwnProperty.call(value, propKey) && "_" !== propKey[0] && addValueToProperties(
4839                    propKey,
4840                    value[propKey],
4841                    properties,
4842                    indent + 1,
4843                    prefix2
4844                  );
4845                properties.push([
4846                  "",
4847                  propertyName ? ">\u2026</" + typeName2 + ">" : "/>"
4848                ]);
4849                return;
4850              }
4851              typeName2 = Object.prototype.toString.call(value);
4852              typeName2 = typeName2.slice(8, typeName2.length - 1);
4853              if ("Array" === typeName2) {
4854                if (propKey = getArrayKind(value), propKey === PRIMITIVE_ARRAY || propKey === EMPTY_ARRAY) {
4855                  value = JSON.stringify(value);
4856                  break;
4857                } else if (propKey === ENTRIES_ARRAY) {
4858                  properties.push([
4859                    prefix2 + "\xA0\xA0".repeat(indent) + propertyName,
4860                    ""
4861                  ]);
4862                  for (propertyName = 0; propertyName < value.length; propertyName++)
4863                    typeName2 = value[propertyName], addValueToProperties(
4864                      typeName2[0],
4865                      typeName2[1],
4866                      properties,
4867                      indent + 1,
4868                      prefix2
4869                    );
4870                  return;
4871                }
4872              }
4873              if ("Promise" === typeName2) {
4874                if ("fulfilled" === value.status) {
4875                  if (typeName2 = properties.length, addValueToProperties(
4876                    propertyName,
4877                    value.value,
4878                    properties,
4879                    indent,
4880                    prefix2
4881                  ), properties.length > typeName2) {
4882                    properties = properties[typeName2];
4883                    properties[1] = "Promise<" + (properties[1] || "Object") + ">";
4884                    return;
4885                  }
4886                } else if ("rejected" === value.status && (typeName2 = properties.length, addValueToProperties(
4887                  propertyName,
4888                  value.reason,
4889                  properties,
4890                  indent,
4891                  prefix2
4892                ), properties.length > typeName2)) {
4893                  properties = properties[typeName2];
4894                  properties[1] = "Rejected Promise<" + properties[1] + ">";
4895                  return;
4896                }
4897                properties.push([
4898                  "\xA0\xA0".repeat(indent) + propertyName,
4899                  "Promise"
4900                ]);
4901                return;
4902              }
4903              "Object" === typeName2 && (propKey = Object.getPrototypeOf(value)) && "function" === typeof propKey.constructor && (typeName2 = propKey.constructor.name);
4904              properties.push([
4905                prefix2 + "\xA0\xA0".repeat(indent) + propertyName,
4906                "Object" === typeName2 ? 3 > indent ? "" : "\u2026" : typeName2
4907              ]);
4908              3 > indent && addObjectToProperties(value, properties, indent + 1, prefix2);
4909              return;
4910            }
4911          case "function":
4912            value = "" === value.name ? "() => {}" : value.name + "() {}";
4913            break;
4914          case "string":
4915            value = value === OMITTED_PROP_ERROR ? "\u2026" : JSON.stringify(value);
4916            break;
4917          case "undefined":
4918            value = "undefined";
4919            break;
4920          case "boolean":
4921            value = value ? "true" : "false";
4922            break;
4923          default:
4924            value = String(value);
4925        }
4926        properties.push([
4927          prefix2 + "\xA0\xA0".repeat(indent) + propertyName,
4928          value
4929        ]);
4930      }
4931      function addObjectDiffToProperties(prev, next, properties, indent) {
4932        var isDeeplyEqual = true;
4933        for (key in prev)
4934          key in next || (properties.push([
4935            REMOVED + "\xA0\xA0".repeat(indent) + key,
4936            "\u2026"
4937          ]), isDeeplyEqual = false);
4938        for (var _key in next)
4939          if (_key in prev) {
4940            var key = prev[_key];
4941            var nextValue = next[_key];
4942            if (key !== nextValue) {
4943              if (0 === indent && "children" === _key)
4944                isDeeplyEqual = "\xA0\xA0".repeat(indent) + _key, properties.push(
4945                  [REMOVED + isDeeplyEqual, "\u2026"],
4946                  [ADDED + isDeeplyEqual, "\u2026"]
4947                );
4948              else {
4949                if (!(3 <= indent)) {
4950                  if ("object" === typeof key && "object" === typeof nextValue && null !== key && null !== nextValue && key.$$typeof === nextValue.$$typeof)
4951                    if (nextValue.$$typeof === REACT_ELEMENT_TYPE) {
4952                      if (key.type === nextValue.type && key.key === nextValue.key) {
4953                        key = getComponentNameFromType(nextValue.type) || "\u2026";
4954                        isDeeplyEqual = "\xA0\xA0".repeat(indent) + _key;
4955                        key = "<" + key + " \u2026 />";
4956                        properties.push(
4957                          [REMOVED + isDeeplyEqual, key],
4958                          [ADDED + isDeeplyEqual, key]
4959                        );
4960                        isDeeplyEqual = false;
4961                        continue;
4962                      }
4963                    } else {
4964                      var prevKind = Object.prototype.toString.call(key), nextKind = Object.prototype.toString.call(nextValue);
4965                      if (prevKind === nextKind && ("[object Object]" === nextKind || "[object Array]" === nextKind)) {
4966                        prevKind = [
4967                          UNCHANGED + "\xA0\xA0".repeat(indent) + _key,
4968                          "[object Array]" === nextKind ? "Array" : ""
4969                        ];
4970                        properties.push(prevKind);
4971                        nextKind = properties.length;
4972                        addObjectDiffToProperties(
4973                          key,
4974                          nextValue,
4975                          properties,
4976                          indent + 1
4977                        ) ? nextKind === properties.length && (prevKind[1] = "Referentially unequal but deeply equal objects. Consider memoization.") : isDeeplyEqual = false;
4978                        continue;
4979                      }
4980                    }
4981                  else if ("function" === typeof key && "function" === typeof nextValue && key.name === nextValue.name && key.length === nextValue.length && (prevKind = Function.prototype.toString.call(key), nextKind = Function.prototype.toString.call(nextValue), prevKind === nextKind)) {
4982                    key = "" === nextValue.name ? "() => {}" : nextValue.name + "() {}";
4983                    properties.push([
4984                      UNCHANGED + "\xA0\xA0".repeat(indent) + _key,
4985                      key + " Referentially unequal function closure. Consider memoization."
4986                    ]);
4987                    continue;
4988                  }
4989                }
4990                addValueToProperties(_key, key, properties, indent, REMOVED);
4991                addValueToProperties(_key, nextValue, properties, indent, ADDED);
4992              }
4993              isDeeplyEqual = false;
4994            }
4995          } else
4996            properties.push([
4997              ADDED + "\xA0\xA0".repeat(indent) + _key,
4998              "\u2026"
4999            ]), isDeeplyEqual = false;
5000        return isDeeplyEqual;
5001      }
5002      function setCurrentTrackFromLanes(lanes) {
5003        currentTrack = lanes & 63 ? "Blocking" : lanes & 64 ? "Gesture" : lanes & 4194176 ? "Transition" : lanes & 62914560 ? "Suspense" : lanes & 2080374784 ? "Idle" : "Other";
5004      }
5005      function logComponentTrigger(fiber, startTime, endTime, trigger) {
5006        supportsUserTiming && (reusableComponentOptions.start = startTime, reusableComponentOptions.end = endTime, reusableComponentDevToolDetails.color = "warning", reusableComponentDevToolDetails.tooltipText = trigger, reusableComponentDevToolDetails.properties = null, (fiber = fiber._debugTask) ? fiber.run(
5007          performance.measure.bind(
5008            performance,
5009            trigger,
5010            reusableComponentOptions
5011          )
5012        ) : performance.measure(trigger, reusableComponentOptions));
5013      }
5014      function logComponentReappeared(fiber, startTime, endTime) {
5015        logComponentTrigger(fiber, startTime, endTime, "Reconnect");
5016      }
5017      function logComponentRender(fiber, startTime, endTime, wasHydrated, committedLanes) {
5018        var name = getComponentNameFromFiber(fiber);
5019        if (null !== name && supportsUserTiming) {
5020          var alternate = fiber.alternate, selfTime = fiber.actualDuration;
5021          if (null === alternate || alternate.child !== fiber.child)
5022            for (var child = fiber.child; null !== child; child = child.sibling)
5023              selfTime -= child.actualDuration;
5024          wasHydrated = 0.5 > selfTime ? wasHydrated ? "tertiary-light" : "primary-light" : 10 > selfTime ? wasHydrated ? "tertiary" : "primary" : 100 > selfTime ? wasHydrated ? "tertiary-dark" : "primary-dark" : "error";
5025          var props = fiber.memoizedProps;
5026          selfTime = fiber._debugTask;
5027          null !== props && null !== alternate && alternate.memoizedProps !== props ? (child = [resuableChangedPropsEntry], props = addObjectDiffToProperties(
5028            alternate.memoizedProps,
5029            props,
5030            child,
5031            0
5032          ), 1 < child.length && (props && !alreadyWarnedForDeepEquality && 0 === (alternate.lanes & committedLanes) && 100 < fiber.actualDuration ? (alreadyWarnedForDeepEquality = true, child[0] = reusableDeeplyEqualPropsEntry, reusableComponentDevToolDetails.color = "warning", reusableComponentDevToolDetails.tooltipText = DEEP_EQUALITY_WARNING) : (reusableComponentDevToolDetails.color = wasHydrated, reusableComponentDevToolDetails.tooltipText = name), reusableComponentDevToolDetails.properties = child, reusableComponentOptions.start = startTime, reusableComponentOptions.end = endTime, null != selfTime ? selfTime.run(
5033            performance.measure.bind(
5034              performance,
5035              "\u200B" + name,
5036              reusableComponentOptions
5037            )
5038          ) : performance.measure(
5039            "\u200B" + name,
5040            reusableComponentOptions
5041          ))) : null != selfTime ? selfTime.run(
5042            console.timeStamp.bind(
5043              console,
5044              name,
5045              startTime,
5046              endTime,
5047              COMPONENTS_TRACK,
5048              void 0,
5049              wasHydrated
5050            )
5051          ) : console.timeStamp(
5052            name,
5053            startTime,
5054            endTime,
5055            COMPONENTS_TRACK,
5056            void 0,
5057            wasHydrated
5058          );
5059        }
5060      }
5061      function logComponentErrored(fiber, startTime, endTime, errors) {
5062        if (supportsUserTiming) {
5063          var name = getComponentNameFromFiber(fiber);
5064          if (null !== name) {
5065            for (var debugTask = null, properties = [], i3 = 0; i3 < errors.length; i3++) {
5066              var capturedValue = errors[i3];
5067              null == debugTask && null !== capturedValue.source && (debugTask = capturedValue.source._debugTask);
5068              capturedValue = capturedValue.value;
5069              properties.push([
5070                "Error",
5071                "object" === typeof capturedValue && null !== capturedValue && "string" === typeof capturedValue.message ? String(capturedValue.message) : String(capturedValue)
5072              ]);
5073            }
5074            null !== fiber.key && addValueToProperties("key", fiber.key, properties, 0, "");
5075            null !== fiber.memoizedProps && addObjectToProperties(fiber.memoizedProps, properties, 0, "");
5076            null == debugTask && (debugTask = fiber._debugTask);
5077            fiber = {
5078              start: startTime,
5079              end: endTime,
5080              detail: {
5081                devtools: {
5082                  color: "error",
5083                  track: COMPONENTS_TRACK,
5084                  tooltipText: 13 === fiber.tag ? "Hydration failed" : "Error boundary caught an error",
5085                  properties
5086                }
5087              }
5088            };
5089            debugTask ? debugTask.run(
5090              performance.measure.bind(performance, "\u200B" + name, fiber)
5091            ) : performance.measure("\u200B" + name, fiber);
5092          }
5093        }
5094      }
5095      function logComponentEffect(fiber, startTime, endTime, selfTime, errors) {
5096        if (null !== errors) {
5097          if (supportsUserTiming) {
5098            var name = getComponentNameFromFiber(fiber);
5099            if (null !== name) {
5100              selfTime = [];
5101              for (var i3 = 0; i3 < errors.length; i3++) {
5102                var error2 = errors[i3].value;
5103                selfTime.push([
5104                  "Error",
5105                  "object" === typeof error2 && null !== error2 && "string" === typeof error2.message ? String(error2.message) : String(error2)
5106                ]);
5107              }
5108              null !== fiber.key && addValueToProperties("key", fiber.key, selfTime, 0, "");
5109              null !== fiber.memoizedProps && addObjectToProperties(fiber.memoizedProps, selfTime, 0, "");
5110              startTime = {
5111                start: startTime,
5112                end: endTime,
5113                detail: {
5114                  devtools: {
5115                    color: "error",
5116                    track: COMPONENTS_TRACK,
5117                    tooltipText: "A lifecycle or effect errored",
5118                    properties: selfTime
5119                  }
5120                }
5121              };
5122              (fiber = fiber._debugTask) ? fiber.run(
5123                performance.measure.bind(
5124                  performance,
5125                  "\u200B" + name,
5126                  startTime
5127                )
5128              ) : performance.measure("\u200B" + name, startTime);
5129            }
5130          }
5131        } else
5132          name = getComponentNameFromFiber(fiber), null !== name && supportsUserTiming && (errors = 1 > selfTime ? "secondary-light" : 100 > selfTime ? "secondary" : 500 > selfTime ? "secondary-dark" : "error", (fiber = fiber._debugTask) ? fiber.run(
5133            console.timeStamp.bind(
5134              console,
5135              name,
5136              startTime,
5137              endTime,
5138              COMPONENTS_TRACK,
5139              void 0,
5140              errors
5141            )
5142          ) : console.timeStamp(
5143            name,
5144            startTime,
5145            endTime,
5146            COMPONENTS_TRACK,
5147            void 0,
5148            errors
5149          ));
5150      }
5151      function logRenderPhase(startTime, endTime, lanes, debugTask) {
5152        if (supportsUserTiming && !(endTime <= startTime)) {
5153          var color = (lanes & 738197653) === lanes ? "tertiary-dark" : "primary-dark";
5154          lanes = (lanes & 536870912) === lanes ? "Prepared" : (lanes & 201326741) === lanes ? "Hydrated" : "Render";
5155          debugTask ? debugTask.run(
5156            console.timeStamp.bind(
5157              console,
5158              lanes,
5159              startTime,
5160              endTime,
5161              currentTrack,
5162              LANES_TRACK_GROUP,
5163              color
5164            )
5165          ) : console.timeStamp(
5166            lanes,
5167            startTime,
5168            endTime,
5169            currentTrack,
5170            LANES_TRACK_GROUP,
5171            color
5172          );
5173        }
5174      }
5175      function logSuspendedRenderPhase(startTime, endTime, lanes, debugTask) {
5176        !supportsUserTiming || endTime <= startTime || (lanes = (lanes & 738197653) === lanes ? "tertiary-dark" : "primary-dark", debugTask ? debugTask.run(
5177          console.timeStamp.bind(
5178            console,
5179            "Prewarm",
5180            startTime,
5181            endTime,
5182            currentTrack,
5183            LANES_TRACK_GROUP,
5184            lanes
5185          )
5186        ) : console.timeStamp(
5187          "Prewarm",
5188          startTime,
5189          endTime,
5190          currentTrack,
5191          LANES_TRACK_GROUP,
5192          lanes
5193        ));
5194      }
5195      function logSuspendedWithDelayPhase(startTime, endTime, lanes, debugTask) {
5196        !supportsUserTiming || endTime <= startTime || (lanes = (lanes & 738197653) === lanes ? "tertiary-dark" : "primary-dark", debugTask ? debugTask.run(
5197          console.timeStamp.bind(
5198            console,
5199            "Suspended",
5200            startTime,
5201            endTime,
5202            currentTrack,
5203            LANES_TRACK_GROUP,
5204            lanes
5205          )
5206        ) : console.timeStamp(
5207          "Suspended",
5208          startTime,
5209          endTime,
5210          currentTrack,
5211          LANES_TRACK_GROUP,
5212          lanes
5213        ));
5214      }
5215      function logRecoveredRenderPhase(startTime, endTime, lanes, recoverableErrors, hydrationFailed, debugTask) {
5216        if (supportsUserTiming && !(endTime <= startTime)) {
5217          lanes = [];
5218          for (var i3 = 0; i3 < recoverableErrors.length; i3++) {
5219            var error2 = recoverableErrors[i3].value;
5220            lanes.push([
5221              "Recoverable Error",
5222              "object" === typeof error2 && null !== error2 && "string" === typeof error2.message ? String(error2.message) : String(error2)
5223            ]);
5224          }
5225          startTime = {
5226            start: startTime,
5227            end: endTime,
5228            detail: {
5229              devtools: {
5230                color: "primary-dark",
5231                track: currentTrack,
5232                trackGroup: LANES_TRACK_GROUP,
5233                tooltipText: hydrationFailed ? "Hydration Failed" : "Recovered after Error",
5234                properties: lanes
5235              }
5236            }
5237          };
5238          debugTask ? debugTask.run(
5239            performance.measure.bind(performance, "Recovered", startTime)
5240          ) : performance.measure("Recovered", startTime);
5241        }
5242      }
5243      function logErroredRenderPhase(startTime, endTime, lanes, debugTask) {
5244        !supportsUserTiming || endTime <= startTime || (debugTask ? debugTask.run(
5245          console.timeStamp.bind(
5246            console,
5247            "Errored",
5248            startTime,
5249            endTime,
5250            currentTrack,
5251            LANES_TRACK_GROUP,
5252            "error"
5253          )
5254        ) : console.timeStamp(
5255          "Errored",
5256          startTime,
5257          endTime,
5258          currentTrack,
5259          LANES_TRACK_GROUP,
5260          "error"
5261        ));
5262      }
5263      function logSuspendedCommitPhase(startTime, endTime, reason, debugTask) {
5264        !supportsUserTiming || endTime <= startTime || (debugTask ? debugTask.run(
5265          console.timeStamp.bind(
5266            console,
5267            reason,
5268            startTime,
5269            endTime,
5270            currentTrack,
5271            LANES_TRACK_GROUP,
5272            "secondary-light"
5273          )
5274        ) : console.timeStamp(
5275          reason,
5276          startTime,
5277          endTime,
5278          currentTrack,
5279          LANES_TRACK_GROUP,
5280          "secondary-light"
5281        ));
5282      }
5283      function logCommitErrored(startTime, endTime, errors, passive, debugTask) {
5284        if (supportsUserTiming && !(endTime <= startTime)) {
5285          for (var properties = [], i3 = 0; i3 < errors.length; i3++) {
5286            var error2 = errors[i3].value;
5287            properties.push([
5288              "Error",
5289              "object" === typeof error2 && null !== error2 && "string" === typeof error2.message ? String(error2.message) : String(error2)
5290            ]);
5291          }
5292          startTime = {
5293            start: startTime,
5294            end: endTime,
5295            detail: {
5296              devtools: {
5297                color: "error",
5298                track: currentTrack,
5299                trackGroup: LANES_TRACK_GROUP,
5300                tooltipText: passive ? "Remaining Effects Errored" : "Commit Errored",
5301                properties
5302              }
5303            }
5304          };
5305          debugTask ? debugTask.run(
5306            performance.measure.bind(performance, "Errored", startTime)
5307          ) : performance.measure("Errored", startTime);
5308        }
5309      }
5310      function logAnimatingPhase(startTime, endTime, debugTask) {
5311        !supportsUserTiming || endTime <= startTime || (debugTask ? debugTask.run(
5312          console.timeStamp.bind(
5313            console,
5314            "Animating",
5315            startTime,
5316            endTime,
5317            currentTrack,
5318            LANES_TRACK_GROUP,
5319            "secondary-dark"
5320          )
5321        ) : console.timeStamp(
5322          "Animating",
5323          startTime,
5324          endTime,
5325          currentTrack,
5326          LANES_TRACK_GROUP,
5327          "secondary-dark"
5328        ));
5329      }
5330      function finishQueueingConcurrentUpdates() {
5331        for (var endIndex = concurrentQueuesIndex, i3 = concurrentlyUpdatedLanes = concurrentQueuesIndex = 0; i3 < endIndex; ) {
5332          var fiber = concurrentQueues[i3];
5333          concurrentQueues[i3++] = null;
5334          var queue = concurrentQueues[i3];
5335          concurrentQueues[i3++] = null;
5336          var update = concurrentQueues[i3];
5337          concurrentQueues[i3++] = null;
5338          var lane = concurrentQueues[i3];
5339          concurrentQueues[i3++] = null;
5340          if (null !== queue && null !== update) {
5341            var pending = queue.pending;
5342            null === pending ? update.next = update : (update.next = pending.next, pending.next = update);
5343            queue.pending = update;
5344          }
5345          0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);
5346        }
5347      }
5348      function enqueueUpdate$1(fiber, queue, update, lane) {
5349        concurrentQueues[concurrentQueuesIndex++] = fiber;
5350        concurrentQueues[concurrentQueuesIndex++] = queue;
5351        concurrentQueues[concurrentQueuesIndex++] = update;
5352        concurrentQueues[concurrentQueuesIndex++] = lane;
5353        concurrentlyUpdatedLanes |= lane;
5354        fiber.lanes |= lane;
5355        fiber = fiber.alternate;
5356        null !== fiber && (fiber.lanes |= lane);
5357      }
5358      function enqueueConcurrentHookUpdate(fiber, queue, update, lane) {
5359        enqueueUpdate$1(fiber, queue, update, lane);
5360        return getRootForUpdatedFiber(fiber);
5361      }
5362      function enqueueConcurrentRenderForLane(fiber, lane) {
5363        enqueueUpdate$1(fiber, null, null, lane);
5364        return getRootForUpdatedFiber(fiber);
5365      }
5366      function markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {
5367        sourceFiber.lanes |= lane;
5368        var alternate = sourceFiber.alternate;
5369        null !== alternate && (alternate.lanes |= lane);
5370        for (var isHidden = false, parent = sourceFiber.return; null !== parent; )
5371          parent.childLanes |= lane, alternate = parent.alternate, null !== alternate && (alternate.childLanes |= lane), 22 === parent.tag && (sourceFiber = parent.stateNode, null === sourceFiber || sourceFiber._visibility & OffscreenVisible || (isHidden = true)), sourceFiber = parent, parent = parent.return;
5372        return 3 === sourceFiber.tag ? (parent = sourceFiber.stateNode, isHidden && null !== update && (isHidden = 31 - clz32(lane), sourceFiber = parent.hiddenUpdates, alternate = sourceFiber[isHidden], null === alternate ? sourceFiber[isHidden] = [update] : alternate.push(update), update.lane = lane | 536870912), parent) : null;
5373      }
5374      function getRootForUpdatedFiber(sourceFiber) {
5375        if (nestedUpdateCount > NESTED_UPDATE_LIMIT)
5376          throw nestedPassiveUpdateCount = nestedUpdateCount = 0, rootWithPassiveNestedUpdates = rootWithNestedUpdates = null, Error(
5377            "Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops."
5378          );
5379        nestedPassiveUpdateCount > NESTED_PASSIVE_UPDATE_LIMIT && (nestedPassiveUpdateCount = 0, rootWithPassiveNestedUpdates = null, console.error(
5380          "Maximum update depth exceeded. This can happen when a component calls setState inside useEffect, but useEffect either doesn't have a dependency array, or one of the dependencies changes on every render."
5381        ));
5382        null === sourceFiber.alternate && 0 !== (sourceFiber.flags & 4098) && warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);
5383        for (var node = sourceFiber, parent = node.return; null !== parent; )
5384          null === node.alternate && 0 !== (node.flags & 4098) && warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber), node = parent, parent = node.return;
5385        return 3 === node.tag ? node.stateNode : null;
5386      }
5387      function resolveFunctionForHotReloading(type) {
5388        if (null === resolveFamily) return type;
5389        var family = resolveFamily(type);
5390        return void 0 === family ? type : family.current;
5391      }
5392      function resolveForwardRefForHotReloading(type) {
5393        if (null === resolveFamily) return type;
5394        var family = resolveFamily(type);
5395        return void 0 === family ? null !== type && void 0 !== type && "function" === typeof type.render && (family = resolveFunctionForHotReloading(type.render), type.render !== family) ? (family = { $$typeof: REACT_FORWARD_REF_TYPE, render: family }, void 0 !== type.displayName && (family.displayName = type.displayName), family) : type : family.current;
5396      }
5397      function isCompatibleFamilyForHotReloading(fiber, element) {
5398        if (null === resolveFamily) return false;
5399        var prevType = fiber.elementType;
5400        element = element.type;
5401        var needsCompareFamilies = false, $$typeofNextType = "object" === typeof element && null !== element ? element.$$typeof : null;
5402        switch (fiber.tag) {
5403          case 1:
5404            "function" === typeof element && (needsCompareFamilies = true);
5405            break;
5406          case 0:
5407            "function" === typeof element ? needsCompareFamilies = true : $$typeofNextType === REACT_LAZY_TYPE && (needsCompareFamilies = true);
5408            break;
5409          case 11:
5410            $$typeofNextType === REACT_FORWARD_REF_TYPE ? needsCompareFamilies = true : $$typeofNextType === REACT_LAZY_TYPE && (needsCompareFamilies = true);
5411            break;
5412          case 14:
5413          case 15:
5414            $$typeofNextType === REACT_MEMO_TYPE ? needsCompareFamilies = true : $$typeofNextType === REACT_LAZY_TYPE && (needsCompareFamilies = true);
5415            break;
5416          default:
5417            return false;
5418        }
5419        return needsCompareFamilies && (fiber = resolveFamily(prevType), void 0 !== fiber && fiber === resolveFamily(element)) ? true : false;
5420      }
5421      function markFailedErrorBoundaryForHotReloading(fiber) {
5422        null !== resolveFamily && "function" === typeof WeakSet && (null === failedBoundaries && (failedBoundaries = /* @__PURE__ */ new WeakSet()), failedBoundaries.add(fiber));
5423      }
5424      function scheduleFibersWithFamiliesRecursively(fiber, updatedFamilies, staleFamilies) {
5425        do {
5426          var _fiber = fiber, alternate = _fiber.alternate, child = _fiber.child, sibling = _fiber.sibling, tag = _fiber.tag;
5427          _fiber = _fiber.type;
5428          var candidateType = null;
5429          switch (tag) {
5430            case 0:
5431            case 15:
5432            case 1:
5433              candidateType = _fiber;
5434              break;
5435            case 11:
5436              candidateType = _fiber.render;
5437          }
5438          if (null === resolveFamily)
5439            throw Error("Expected resolveFamily to be set during hot reload.");
5440          var needsRender = false;
5441          _fiber = false;
5442          null !== candidateType && (candidateType = resolveFamily(candidateType), void 0 !== candidateType && (staleFamilies.has(candidateType) ? _fiber = true : updatedFamilies.has(candidateType) && (1 === tag ? _fiber = true : needsRender = true)));
5443          null !== failedBoundaries && (failedBoundaries.has(fiber) || null !== alternate && failedBoundaries.has(alternate)) && (_fiber = true);
5444          _fiber && (fiber._debugNeedsRemount = true);
5445          if (_fiber || needsRender)
5446            alternate = enqueueConcurrentRenderForLane(fiber, 2), null !== alternate && scheduleUpdateOnFiber(alternate, fiber, 2);
5447          null === child || _fiber || scheduleFibersWithFamiliesRecursively(
5448            child,
5449            updatedFamilies,
5450            staleFamilies
5451          );
5452          if (null === sibling) break;
5453          fiber = sibling;
5454        } while (1);
5455      }
5456      function FiberNode(tag, pendingProps, key, mode2) {
5457        this.tag = tag;
5458        this.key = key;
5459        this.sibling = this.child = this.return = this.stateNode = this.type = this.elementType = null;
5460        this.index = 0;
5461        this.refCleanup = this.ref = null;
5462        this.pendingProps = pendingProps;
5463        this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null;
5464        this.mode = mode2;
5465        this.subtreeFlags = this.flags = 0;
5466        this.deletions = null;
5467        this.childLanes = this.lanes = 0;
5468        this.alternate = null;
5469        this.actualDuration = -0;
5470        this.actualStartTime = -1.1;
5471        this.treeBaseDuration = this.selfBaseDuration = -0;
5472        this._debugTask = this._debugStack = this._debugOwner = this._debugInfo = null;
5473        this._debugNeedsRemount = false;
5474        this._debugHookTypes = null;
5475        hasBadMapPolyfill || "function" !== typeof Object.preventExtensions || Object.preventExtensions(this);
5476      }
5477      function shouldConstruct(Component) {
5478        Component = Component.prototype;
5479        return !(!Component || !Component.isReactComponent);
5480      }
5481      function createWorkInProgress(current2, pendingProps) {
5482        var workInProgress2 = current2.alternate;
5483        null === workInProgress2 ? (workInProgress2 = createFiber(
5484          current2.tag,
5485          pendingProps,
5486          current2.key,
5487          current2.mode
5488        ), workInProgress2.elementType = current2.elementType, workInProgress2.type = current2.type, workInProgress2.stateNode = current2.stateNode, workInProgress2._debugOwner = current2._debugOwner, workInProgress2._debugStack = current2._debugStack, workInProgress2._debugTask = current2._debugTask, workInProgress2._debugHookTypes = current2._debugHookTypes, workInProgress2.alternate = current2, current2.alternate = workInProgress2) : (workInProgress2.pendingProps = pendingProps, workInProgress2.type = current2.type, workInProgress2.flags = 0, workInProgress2.subtreeFlags = 0, workInProgress2.deletions = null, workInProgress2.actualDuration = -0, workInProgress2.actualStartTime = -1.1);
5489        workInProgress2.flags = current2.flags & 65011712;
5490        workInProgress2.childLanes = current2.childLanes;
5491        workInProgress2.lanes = current2.lanes;
5492        workInProgress2.child = current2.child;
5493        workInProgress2.memoizedProps = current2.memoizedProps;
5494        workInProgress2.memoizedState = current2.memoizedState;
5495        workInProgress2.updateQueue = current2.updateQueue;
5496        pendingProps = current2.dependencies;
5497        workInProgress2.dependencies = null === pendingProps ? null : {
5498          lanes: pendingProps.lanes,
5499          firstContext: pendingProps.firstContext,
5500          _debugThenableState: pendingProps._debugThenableState
5501        };
5502        workInProgress2.sibling = current2.sibling;
5503        workInProgress2.index = current2.index;
5504        workInProgress2.ref = current2.ref;
5505        workInProgress2.refCleanup = current2.refCleanup;
5506        workInProgress2.selfBaseDuration = current2.selfBaseDuration;
5507        workInProgress2.treeBaseDuration = current2.treeBaseDuration;
5508        workInProgress2._debugInfo = current2._debugInfo;
5509        workInProgress2._debugNeedsRemount = current2._debugNeedsRemount;
5510        switch (workInProgress2.tag) {
5511          case 0:
5512          case 15:
5513            workInProgress2.type = resolveFunctionForHotReloading(current2.type);
5514            break;
5515          case 1:
5516            workInProgress2.type = resolveFunctionForHotReloading(current2.type);
5517            break;
5518          case 11:
5519            workInProgress2.type = resolveForwardRefForHotReloading(current2.type);
5520        }
5521        return workInProgress2;
5522      }
5523      function resetWorkInProgress(workInProgress2, renderLanes2) {
5524        workInProgress2.flags &= 65011714;
5525        var current2 = workInProgress2.alternate;
5526        null === current2 ? (workInProgress2.childLanes = 0, workInProgress2.lanes = renderLanes2, workInProgress2.child = null, workInProgress2.subtreeFlags = 0, workInProgress2.memoizedProps = null, workInProgress2.memoizedState = null, workInProgress2.updateQueue = null, workInProgress2.dependencies = null, workInProgress2.stateNode = null, workInProgress2.selfBaseDuration = 0, workInProgress2.treeBaseDuration = 0) : (workInProgress2.childLanes = current2.childLanes, workInProgress2.lanes = current2.lanes, workInProgress2.child = current2.child, workInProgress2.subtreeFlags = 0, workInProgress2.deletions = null, workInProgress2.memoizedProps = current2.memoizedProps, workInProgress2.memoizedState = current2.memoizedState, workInProgress2.updateQueue = current2.updateQueue, workInProgress2.type = current2.type, renderLanes2 = current2.dependencies, workInProgress2.dependencies = null === renderLanes2 ? null : {
5527          lanes: renderLanes2.lanes,
5528          firstContext: renderLanes2.firstContext,
5529          _debugThenableState: renderLanes2._debugThenableState
5530        }, workInProgress2.selfBaseDuration = current2.selfBaseDuration, workInProgress2.treeBaseDuration = current2.treeBaseDuration);
5531        return workInProgress2;
5532      }
5533      function createFiberFromTypeAndProps(type, key, pendingProps, owner, mode2, lanes) {
5534        var fiberTag = 0, resolvedType = type;
5535        if ("function" === typeof type)
5536          shouldConstruct(type) && (fiberTag = 1), resolvedType = resolveFunctionForHotReloading(resolvedType);
5537        else if ("string" === typeof type)
5538          fiberTag = getHostContext(), fiberTag = isHostHoistableType(type, pendingProps, fiberTag) ? 26 : "html" === type || "head" === type || "body" === type ? 27 : 5;
5539        else
5540          a: switch (type) {
5541            case REACT_ACTIVITY_TYPE:
5542              return key = createFiber(31, pendingProps, key, mode2), key.elementType = REACT_ACTIVITY_TYPE, key.lanes = lanes, key;
5543            case REACT_FRAGMENT_TYPE:
5544              return createFiberFromFragment(
5545                pendingProps.children,
5546                mode2,
5547                lanes,
5548                key
5549              );
5550            case REACT_STRICT_MODE_TYPE:
5551              fiberTag = 8;
5552              mode2 |= StrictLegacyMode;
5553              mode2 |= StrictEffectsMode;
5554              break;
5555            case REACT_PROFILER_TYPE:
5556              return type = pendingProps, owner = mode2, "string" !== typeof type.id && console.error(
5557                'Profiler must specify an "id" of type `string` as a prop. Received the type `%s` instead.',
5558                typeof type.id
5559              ), key = createFiber(12, type, key, owner | ProfileMode), key.elementType = REACT_PROFILER_TYPE, key.lanes = lanes, key.stateNode = { effectDuration: 0, passiveEffectDuration: 0 }, key;
5560            case REACT_SUSPENSE_TYPE:
5561              return key = createFiber(13, pendingProps, key, mode2), key.elementType = REACT_SUSPENSE_TYPE, key.lanes = lanes, key;
5562            case REACT_SUSPENSE_LIST_TYPE:
5563              return key = createFiber(19, pendingProps, key, mode2), key.elementType = REACT_SUSPENSE_LIST_TYPE, key.lanes = lanes, key;
5564            default:
5565              if ("object" === typeof type && null !== type)
5566                switch (type.$$typeof) {
5567                  case REACT_CONTEXT_TYPE:
5568                    fiberTag = 10;
5569                    break a;
5570                  case REACT_CONSUMER_TYPE:
5571                    fiberTag = 9;
5572                    break a;
5573                  case REACT_FORWARD_REF_TYPE:
5574                    fiberTag = 11;
5575                    resolvedType = resolveForwardRefForHotReloading(resolvedType);
5576                    break a;
5577                  case REACT_MEMO_TYPE:
5578                    fiberTag = 14;
5579                    break a;
5580                  case REACT_LAZY_TYPE:
5581                    fiberTag = 16;
5582                    resolvedType = null;
5583                    break a;
5584                }
5585              resolvedType = "";
5586              if (void 0 === type || "object" === typeof type && null !== type && 0 === Object.keys(type).length)
5587                resolvedType += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.";
5588              null === type ? pendingProps = "null" : isArrayImpl(type) ? pendingProps = "array" : void 0 !== type && type.$$typeof === REACT_ELEMENT_TYPE ? (pendingProps = "<" + (getComponentNameFromType(type.type) || "Unknown") + " />", resolvedType = " Did you accidentally export a JSX literal instead of a component?") : pendingProps = typeof type;
5589              (fiberTag = owner ? getComponentNameFromOwner(owner) : null) && (resolvedType += "\n\nCheck the render method of `" + fiberTag + "`.");
5590              fiberTag = 29;
5591              pendingProps = Error(
5592                "Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: " + (pendingProps + "." + resolvedType)
5593              );
5594              resolvedType = null;
5595          }
5596        key = createFiber(fiberTag, pendingProps, key, mode2);
5597        key.elementType = type;
5598        key.type = resolvedType;
5599        key.lanes = lanes;
5600        key._debugOwner = owner;
5601        return key;
5602      }
5603      function createFiberFromElement(element, mode2, lanes) {
5604        mode2 = createFiberFromTypeAndProps(
5605          element.type,
5606          element.key,
5607          element.props,
5608          element._owner,
5609          mode2,
5610          lanes
5611        );
5612        mode2._debugOwner = element._owner;
5613        mode2._debugStack = element._debugStack;
5614        mode2._debugTask = element._debugTask;
5615        return mode2;
5616      }
5617      function createFiberFromFragment(elements, mode2, lanes, key) {
5618        elements = createFiber(7, elements, key, mode2);
5619        elements.lanes = lanes;
5620        return elements;
5621      }
5622      function createFiberFromText(content, mode2, lanes) {
5623        content = createFiber(6, content, null, mode2);
5624        content.lanes = lanes;
5625        return content;
5626      }
5627      function createFiberFromDehydratedFragment(dehydratedNode) {
5628        var fiber = createFiber(18, null, null, NoMode);
5629        fiber.stateNode = dehydratedNode;
5630        return fiber;
5631      }
5632      function createFiberFromPortal(portal, mode2, lanes) {
5633        mode2 = createFiber(
5634          4,
5635          null !== portal.children ? portal.children : [],
5636          portal.key,
5637          mode2
5638        );
5639        mode2.lanes = lanes;
5640        mode2.stateNode = {
5641          containerInfo: portal.containerInfo,
5642          pendingChildren: null,
5643          implementation: portal.implementation
5644        };
5645        return mode2;
5646      }
5647      function createCapturedValueAtFiber(value, source) {
5648        if ("object" === typeof value && null !== value) {
5649          var existing = CapturedStacks.get(value);
5650          if (void 0 !== existing) return existing;
5651          source = {
5652            value,
5653            source,
5654            stack: getStackByFiberInDevAndProd(source)
5655          };
5656          CapturedStacks.set(value, source);
5657          return source;
5658        }
5659        return {
5660          value,
5661          source,
5662          stack: getStackByFiberInDevAndProd(source)
5663        };
5664      }
5665      function pushTreeFork(workInProgress2, totalChildren) {
5666        warnIfNotHydrating();
5667        forkStack[forkStackIndex++] = treeForkCount;
5668        forkStack[forkStackIndex++] = treeForkProvider;
5669        treeForkProvider = workInProgress2;
5670        treeForkCount = totalChildren;
5671      }
5672      function pushTreeId(workInProgress2, totalChildren, index) {
5673        warnIfNotHydrating();
5674        idStack[idStackIndex++] = treeContextId;
5675        idStack[idStackIndex++] = treeContextOverflow;
5676        idStack[idStackIndex++] = treeContextProvider;
5677        treeContextProvider = workInProgress2;
5678        var baseIdWithLeadingBit = treeContextId;
5679        workInProgress2 = treeContextOverflow;
5680        var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;
5681        baseIdWithLeadingBit &= ~(1 << baseLength);
5682        index += 1;
5683        var length = 32 - clz32(totalChildren) + baseLength;
5684        if (30 < length) {
5685          var numberOfOverflowBits = baseLength - baseLength % 5;
5686          length = (baseIdWithLeadingBit & (1 << numberOfOverflowBits) - 1).toString(32);
5687          baseIdWithLeadingBit >>= numberOfOverflowBits;
5688          baseLength -= numberOfOverflowBits;
5689          treeContextId = 1 << 32 - clz32(totalChildren) + baseLength | index << baseLength | baseIdWithLeadingBit;
5690          treeContextOverflow = length + workInProgress2;
5691        } else
5692          treeContextId = 1 << length | index << baseLength | baseIdWithLeadingBit, treeContextOverflow = workInProgress2;
5693      }
5694      function pushMaterializedTreeId(workInProgress2) {
5695        warnIfNotHydrating();
5696        null !== workInProgress2.return && (pushTreeFork(workInProgress2, 1), pushTreeId(workInProgress2, 1, 0));
5697      }
5698      function popTreeContext(workInProgress2) {
5699        for (; workInProgress2 === treeForkProvider; )
5700          treeForkProvider = forkStack[--forkStackIndex], forkStack[forkStackIndex] = null, treeForkCount = forkStack[--forkStackIndex], forkStack[forkStackIndex] = null;
5701        for (; workInProgress2 === treeContextProvider; )
5702          treeContextProvider = idStack[--idStackIndex], idStack[idStackIndex] = null, treeContextOverflow = idStack[--idStackIndex], idStack[idStackIndex] = null, treeContextId = idStack[--idStackIndex], idStack[idStackIndex] = null;
5703      }
5704      function getSuspendedTreeContext() {
5705        warnIfNotHydrating();
5706        return null !== treeContextProvider ? { id: treeContextId, overflow: treeContextOverflow } : null;
5707      }
5708      function restoreSuspendedTreeContext(workInProgress2, suspendedContext) {
5709        warnIfNotHydrating();
5710        idStack[idStackIndex++] = treeContextId;
5711        idStack[idStackIndex++] = treeContextOverflow;
5712        idStack[idStackIndex++] = treeContextProvider;
5713        treeContextId = suspendedContext.id;
5714        treeContextOverflow = suspendedContext.overflow;
5715        treeContextProvider = workInProgress2;
5716      }
5717      function warnIfNotHydrating() {
5718        isHydrating || console.error(
5719          "Expected to be hydrating. This is a bug in React. Please file an issue."
5720        );
5721      }
5722      function buildHydrationDiffNode(fiber, distanceFromLeaf) {
5723        if (null === fiber.return) {
5724          if (null === hydrationDiffRootDEV)
5725            hydrationDiffRootDEV = {
5726              fiber,
5727              children: [],
5728              serverProps: void 0,
5729              serverTail: [],
5730              distanceFromLeaf
5731            };
5732          else {
5733            if (hydrationDiffRootDEV.fiber !== fiber)
5734              throw Error(
5735                "Saw multiple hydration diff roots in a pass. This is a bug in React."
5736              );
5737            hydrationDiffRootDEV.distanceFromLeaf > distanceFromLeaf && (hydrationDiffRootDEV.distanceFromLeaf = distanceFromLeaf);
5738          }
5739          return hydrationDiffRootDEV;
5740        }
5741        var siblings = buildHydrationDiffNode(
5742          fiber.return,
5743          distanceFromLeaf + 1
5744        ).children;
5745        if (0 < siblings.length && siblings[siblings.length - 1].fiber === fiber)
5746          return siblings = siblings[siblings.length - 1], siblings.distanceFromLeaf > distanceFromLeaf && (siblings.distanceFromLeaf = distanceFromLeaf), siblings;
5747        distanceFromLeaf = {
5748          fiber,
5749          children: [],
5750          serverProps: void 0,
5751          serverTail: [],
5752          distanceFromLeaf
5753        };
5754        siblings.push(distanceFromLeaf);
5755        return distanceFromLeaf;
5756      }
5757      function warnIfHydrating() {
5758        isHydrating && console.error(
5759          "We should not be hydrating here. This is a bug in React. Please file a bug."
5760        );
5761      }
5762      function warnNonHydratedInstance(fiber, rejectedCandidate) {
5763        didSuspendOrErrorDEV || (fiber = buildHydrationDiffNode(fiber, 0), fiber.serverProps = null, null !== rejectedCandidate && (rejectedCandidate = describeHydratableInstanceForDevWarnings(rejectedCandidate), fiber.serverTail.push(rejectedCandidate)));
5764      }
5765      function throwOnHydrationMismatch(fiber) {
5766        var fromText = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : false, diff = "", diffRoot = hydrationDiffRootDEV;
5767        null !== diffRoot && (hydrationDiffRootDEV = null, diff = describeDiff(diffRoot));
5768        queueHydrationError(
5769          createCapturedValueAtFiber(
5770            Error(
5771              "Hydration failed because the server rendered " + (fromText ? "text" : "HTML") + " didn't match the client. As a result this tree will be regenerated on the client. This can happen if a SSR-ed Client Component used:\n\n- A server/client branch `if (typeof window !== 'undefined')`.\n- Variable input such as `Date.now()` or `Math.random()` which changes each time it's called.\n- Date formatting in a user's locale which doesn't match the server.\n- External changing data without sending a snapshot of it along with the HTML.\n- Invalid HTML tag nesting.\n\nIt can also happen if the client has a browser extension installed which messes with the HTML before React loaded.\n\nhttps://react.dev/link/hydration-mismatch" + diff
5772            ),
5773            fiber
5774          )
5775        );
5776        throw HydrationMismatchException;
5777      }
5778      function prepareToHydrateHostInstance(fiber) {
5779        var didHydrate = fiber.stateNode;
5780        var type = fiber.type, props = fiber.memoizedProps;
5781        didHydrate[internalInstanceKey] = fiber;
5782        didHydrate[internalPropsKey] = props;
5783        validatePropertiesInDevelopment(type, props);
5784        switch (type) {
5785          case "dialog":
5786            listenToNonDelegatedEvent("cancel", didHydrate);
5787            listenToNonDelegatedEvent("close", didHydrate);
5788            break;
5789          case "iframe":
5790          case "object":
5791          case "embed":
5792            listenToNonDelegatedEvent("load", didHydrate);
5793            break;
5794          case "video":
5795          case "audio":
5796            for (type = 0; type < mediaEventTypes.length; type++)
5797              listenToNonDelegatedEvent(mediaEventTypes[type], didHydrate);
5798            break;
5799          case "source":
5800            listenToNonDelegatedEvent("error", didHydrate);
5801            break;
5802          case "img":
5803          case "image":
5804          case "link":
5805            listenToNonDelegatedEvent("error", didHydrate);
5806            listenToNonDelegatedEvent("load", didHydrate);
5807            break;
5808          case "details":
5809            listenToNonDelegatedEvent("toggle", didHydrate);
5810            break;
5811          case "input":
5812            checkControlledValueProps("input", props);
5813            listenToNonDelegatedEvent("invalid", didHydrate);
5814            validateInputProps(didHydrate, props);
5815            initInput(
5816              didHydrate,
5817              props.value,
5818              props.defaultValue,
5819              props.checked,
5820              props.defaultChecked,
5821              props.type,
5822              props.name,
5823              true
5824            );
5825            break;
5826          case "option":
5827            validateOptionProps(didHydrate, props);
5828            break;
5829          case "select":
5830            checkControlledValueProps("select", props);
5831            listenToNonDelegatedEvent("invalid", didHydrate);
5832            validateSelectProps(didHydrate, props);
5833            break;
5834          case "textarea":
5835            checkControlledValueProps("textarea", props), listenToNonDelegatedEvent("invalid", didHydrate), validateTextareaProps(didHydrate, props), initTextarea(
5836              didHydrate,
5837              props.value,
5838              props.defaultValue,
5839              props.children
5840            );
5841        }
5842        type = props.children;
5843        "string" !== typeof type && "number" !== typeof type && "bigint" !== typeof type || didHydrate.textContent === "" + type || true === props.suppressHydrationWarning || checkForUnmatchedText(didHydrate.textContent, type) ? (null != props.popover && (listenToNonDelegatedEvent("beforetoggle", didHydrate), listenToNonDelegatedEvent("toggle", didHydrate)), null != props.onScroll && listenToNonDelegatedEvent("scroll", didHydrate), null != props.onScrollEnd && listenToNonDelegatedEvent("scrollend", didHydrate), null != props.onClick && (didHydrate.onclick = noop$1), didHydrate = true) : didHydrate = false;
5844        didHydrate || throwOnHydrationMismatch(fiber, true);
5845      }
5846      function popToNextHostParent(fiber) {
5847        for (hydrationParentFiber = fiber.return; hydrationParentFiber; )
5848          switch (hydrationParentFiber.tag) {
5849            case 5:
5850            case 31:
5851            case 13:
5852              rootOrSingletonContext = false;
5853              return;
5854            case 27:
5855            case 3:
5856              rootOrSingletonContext = true;
5857              return;
5858            default:
5859              hydrationParentFiber = hydrationParentFiber.return;
5860          }
5861      }
5862      function popHydrationState(fiber) {
5863        if (fiber !== hydrationParentFiber) return false;
5864        if (!isHydrating)
5865          return popToNextHostParent(fiber), isHydrating = true, false;
5866        var tag = fiber.tag, JSCompiler_temp;
5867        if (JSCompiler_temp = 3 !== tag && 27 !== tag) {
5868          if (JSCompiler_temp = 5 === tag)
5869            JSCompiler_temp = fiber.type, JSCompiler_temp = !("form" !== JSCompiler_temp && "button" !== JSCompiler_temp) || shouldSetTextContent(fiber.type, fiber.memoizedProps);
5870          JSCompiler_temp = !JSCompiler_temp;
5871        }
5872        if (JSCompiler_temp && nextHydratableInstance) {
5873          for (JSCompiler_temp = nextHydratableInstance; JSCompiler_temp; ) {
5874            var diffNode = buildHydrationDiffNode(fiber, 0), description = describeHydratableInstanceForDevWarnings(JSCompiler_temp);
5875            diffNode.serverTail.push(description);
5876            JSCompiler_temp = "Suspense" === description.type ? getNextHydratableInstanceAfterHydrationBoundary(JSCompiler_temp) : getNextHydratable(JSCompiler_temp.nextSibling);
5877          }
5878          throwOnHydrationMismatch(fiber);
5879        }
5880        popToNextHostParent(fiber);
5881        if (13 === tag) {
5882          fiber = fiber.memoizedState;
5883          fiber = null !== fiber ? fiber.dehydrated : null;
5884          if (!fiber)
5885            throw Error(
5886              "Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue."
5887            );
5888          nextHydratableInstance = getNextHydratableInstanceAfterHydrationBoundary(fiber);
5889        } else if (31 === tag) {
5890          fiber = fiber.memoizedState;
5891          fiber = null !== fiber ? fiber.dehydrated : null;
5892          if (!fiber)
5893            throw Error(
5894              "Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue."
5895            );
5896          nextHydratableInstance = getNextHydratableInstanceAfterHydrationBoundary(fiber);
5897        } else
5898          27 === tag ? (tag = nextHydratableInstance, isSingletonScope(fiber.type) ? (fiber = previousHydratableOnEnteringScopedSingleton, previousHydratableOnEnteringScopedSingleton = null, nextHydratableInstance = fiber) : nextHydratableInstance = tag) : nextHydratableInstance = hydrationParentFiber ? getNextHydratable(fiber.stateNode.nextSibling) : null;
5899        return true;
5900      }
5901      function resetHydrationState() {
5902        nextHydratableInstance = hydrationParentFiber = null;
5903        didSuspendOrErrorDEV = isHydrating = false;
5904      }
5905      function upgradeHydrationErrorsToRecoverable() {
5906        var queuedErrors = hydrationErrors;
5907        null !== queuedErrors && (null === workInProgressRootRecoverableErrors ? workInProgressRootRecoverableErrors = queuedErrors : workInProgressRootRecoverableErrors.push.apply(
5908          workInProgressRootRecoverableErrors,
5909          queuedErrors
5910        ), hydrationErrors = null);
5911        return queuedErrors;
5912      }
5913      function queueHydrationError(error2) {
5914        null === hydrationErrors ? hydrationErrors = [error2] : hydrationErrors.push(error2);
5915      }
5916      function emitPendingHydrationWarnings() {
5917        var diffRoot = hydrationDiffRootDEV;
5918        if (null !== diffRoot) {
5919          hydrationDiffRootDEV = null;
5920          for (var diff = describeDiff(diffRoot); 0 < diffRoot.children.length; )
5921            diffRoot = diffRoot.children[0];
5922          runWithFiberInDEV(diffRoot.fiber, function() {
5923            console.error(
5924              "A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:\n\n- A server/client branch `if (typeof window !== 'undefined')`.\n- Variable input such as `Date.now()` or `Math.random()` which changes each time it's called.\n- Date formatting in a user's locale which doesn't match the server.\n- External changing data without sending a snapshot of it along with the HTML.\n- Invalid HTML tag nesting.\n\nIt can also happen if the client has a browser extension installed which messes with the HTML before React loaded.\n\n%s%s",
5925              "https://react.dev/link/hydration-mismatch",
5926              diff
5927            );
5928          });
5929        }
5930      }
5931      function resetContextDependencies() {
5932        lastContextDependency = currentlyRenderingFiber$1 = null;
5933        isDisallowedContextReadInDEV = false;
5934      }
5935      function pushProvider(providerFiber, context, nextValue) {
5936        push(valueCursor, context._currentValue, providerFiber);
5937        context._currentValue = nextValue;
5938        push(rendererCursorDEV, context._currentRenderer, providerFiber);
5939        void 0 !== context._currentRenderer && null !== context._currentRenderer && context._currentRenderer !== rendererSigil && console.error(
5940          "Detected multiple renderers concurrently rendering the same context provider. This is currently unsupported."
5941        );
5942        context._currentRenderer = rendererSigil;
5943      }
5944      function popProvider(context, providerFiber) {
5945        context._currentValue = valueCursor.current;
5946        var currentRenderer = rendererCursorDEV.current;
5947        pop(rendererCursorDEV, providerFiber);
5948        context._currentRenderer = currentRenderer;
5949        pop(valueCursor, providerFiber);
5950      }
5951      function scheduleContextWorkOnParentPath(parent, renderLanes2, propagationRoot) {
5952        for (; null !== parent; ) {
5953          var alternate = parent.alternate;
5954          (parent.childLanes & renderLanes2) !== renderLanes2 ? (parent.childLanes |= renderLanes2, null !== alternate && (alternate.childLanes |= renderLanes2)) : null !== alternate && (alternate.childLanes & renderLanes2) !== renderLanes2 && (alternate.childLanes |= renderLanes2);
5955          if (parent === propagationRoot) break;
5956          parent = parent.return;
5957        }
5958        parent !== propagationRoot && console.error(
5959          "Expected to find the propagation root when scheduling context work. This error is likely caused by a bug in React. Please file an issue."
5960        );
5961      }
5962      function propagateContextChanges(workInProgress2, contexts, renderLanes2, forcePropagateEntireTree) {
5963        var fiber = workInProgress2.child;
5964        null !== fiber && (fiber.return = workInProgress2);
5965        for (; null !== fiber; ) {
5966          var list = fiber.dependencies;
5967          if (null !== list) {
5968            var nextFiber = fiber.child;
5969            list = list.firstContext;
5970            a: for (; null !== list; ) {
5971              var dependency = list;
5972              list = fiber;
5973              for (var i3 = 0; i3 < contexts.length; i3++)
5974                if (dependency.context === contexts[i3]) {
5975                  list.lanes |= renderLanes2;
5976                  dependency = list.alternate;
5977                  null !== dependency && (dependency.lanes |= renderLanes2);
5978                  scheduleContextWorkOnParentPath(
5979                    list.return,
5980                    renderLanes2,
5981                    workInProgress2
5982                  );
5983                  forcePropagateEntireTree || (nextFiber = null);
5984                  break a;
5985                }
5986              list = dependency.next;
5987            }
5988          } else if (18 === fiber.tag) {
5989            nextFiber = fiber.return;
5990            if (null === nextFiber)
5991              throw Error(
5992                "We just came from a parent so we must have had a parent. This is a bug in React."
5993              );
5994            nextFiber.lanes |= renderLanes2;
5995            list = nextFiber.alternate;
5996            null !== list && (list.lanes |= renderLanes2);
5997            scheduleContextWorkOnParentPath(
5998              nextFiber,
5999              renderLanes2,
6000              workInProgress2
6001            );
6002            nextFiber = null;
6003          } else nextFiber = fiber.child;
6004          if (null !== nextFiber) nextFiber.return = fiber;
6005          else
6006            for (nextFiber = fiber; null !== nextFiber; ) {
6007              if (nextFiber === workInProgress2) {
6008                nextFiber = null;
6009                break;
6010              }
6011              fiber = nextFiber.sibling;
6012              if (null !== fiber) {
6013                fiber.return = nextFiber.return;
6014                nextFiber = fiber;
6015                break;
6016              }
6017              nextFiber = nextFiber.return;
6018            }
6019          fiber = nextFiber;
6020        }
6021      }
6022      function propagateParentContextChanges(current2, workInProgress2, renderLanes2, forcePropagateEntireTree) {
6023        current2 = null;
6024        for (var parent = workInProgress2, isInsidePropagationBailout = false; null !== parent; ) {
6025          if (!isInsidePropagationBailout) {
6026            if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = true;
6027            else if (0 !== (parent.flags & 262144)) break;
6028          }
6029          if (10 === parent.tag) {
6030            var currentParent = parent.alternate;
6031            if (null === currentParent)
6032              throw Error("Should have a current fiber. This is a bug in React.");
6033            currentParent = currentParent.memoizedProps;
6034            if (null !== currentParent) {
6035              var context = parent.type;
6036              objectIs(parent.pendingProps.value, currentParent.value) || (null !== current2 ? current2.push(context) : current2 = [context]);
6037            }
6038          } else if (parent === hostTransitionProviderCursor.current) {
6039            currentParent = parent.alternate;
6040            if (null === currentParent)
6041              throw Error("Should have a current fiber. This is a bug in React.");
6042            currentParent.memoizedState.memoizedState !== parent.memoizedState.memoizedState && (null !== current2 ? current2.push(HostTransitionContext) : current2 = [HostTransitionContext]);
6043          }
6044          parent = parent.return;
6045        }
6046        null !== current2 && propagateContextChanges(
6047          workInProgress2,
6048          current2,
6049          renderLanes2,
6050          forcePropagateEntireTree
6051        );
6052        workInProgress2.flags |= 262144;
6053      }
6054      function checkIfContextChanged(currentDependencies) {
6055        for (currentDependencies = currentDependencies.firstContext; null !== currentDependencies; ) {
6056          if (!objectIs(
6057            currentDependencies.context._currentValue,
6058            currentDependencies.memoizedValue
6059          ))
6060            return true;
6061          currentDependencies = currentDependencies.next;
6062        }
6063        return false;
6064      }
6065      function prepareToReadContext(workInProgress2) {
6066        currentlyRenderingFiber$1 = workInProgress2;
6067        lastContextDependency = null;
6068        workInProgress2 = workInProgress2.dependencies;
6069        null !== workInProgress2 && (workInProgress2.firstContext = null);
6070      }
6071      function readContext(context) {
6072        isDisallowedContextReadInDEV && console.error(
6073          "Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo()."
6074        );
6075        return readContextForConsumer(currentlyRenderingFiber$1, context);
6076      }
6077      function readContextDuringReconciliation(consumer2, context) {
6078        null === currentlyRenderingFiber$1 && prepareToReadContext(consumer2);
6079        return readContextForConsumer(consumer2, context);
6080      }
6081      function readContextForConsumer(consumer2, context) {
6082        var value = context._currentValue;
6083        context = { context, memoizedValue: value, next: null };
6084        if (null === lastContextDependency) {
6085          if (null === consumer2)
6086            throw Error(
6087              "Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo()."
6088            );
6089          lastContextDependency = context;
6090          consumer2.dependencies = {
6091            lanes: 0,
6092            firstContext: context,
6093            _debugThenableState: null
6094          };
6095          consumer2.flags |= 524288;
6096        } else lastContextDependency = lastContextDependency.next = context;
6097        return value;
6098      }
6099      function createCache() {
6100        return {
6101          controller: new AbortControllerLocal(),
6102          data: /* @__PURE__ */ new Map(),
6103          refCount: 0
6104        };
6105      }
6106      function retainCache(cache2) {
6107        cache2.controller.signal.aborted && console.warn(
6108          "A cache instance was retained after it was already freed. This likely indicates a bug in React."
6109        );
6110        cache2.refCount++;
6111      }
6112      function releaseCache(cache2) {
6113        cache2.refCount--;
6114        0 > cache2.refCount && console.warn(
6115          "A cache instance was released after it was already freed. This likely indicates a bug in React."
6116        );
6117        0 === cache2.refCount && scheduleCallback$2(NormalPriority, function() {
6118          cache2.controller.abort();
6119        });
6120      }
6121      function startUpdateTimerByLane(lane, method, fiber) {
6122        if (0 !== (lane & 127))
6123          0 > blockingUpdateTime && (blockingUpdateTime = now3(), blockingUpdateTask = createTask(method), blockingUpdateMethodName = method, null != fiber && (blockingUpdateComponentName = getComponentNameFromFiber(fiber)), (executionContext & (RenderContext | CommitContext)) !== NoContext && (componentEffectSpawnedUpdate = true, blockingUpdateType = SPAWNED_UPDATE), lane = resolveEventTimeStamp(), method = resolveEventType(), lane !== blockingEventRepeatTime || method !== blockingEventType ? blockingEventRepeatTime = -1.1 : null !== method && (blockingUpdateType = SPAWNED_UPDATE), blockingEventTime = lane, blockingEventType = method);
6124        else if (0 !== (lane & 4194048) && 0 > transitionUpdateTime && (transitionUpdateTime = now3(), transitionUpdateTask = createTask(method), transitionUpdateMethodName = method, null != fiber && (transitionUpdateComponentName = getComponentNameFromFiber(fiber)), 0 > transitionStartTime)) {
6125          lane = resolveEventTimeStamp();
6126          method = resolveEventType();
6127          if (lane !== transitionEventRepeatTime || method !== transitionEventType)
6128            transitionEventRepeatTime = -1.1;
6129          transitionEventTime = lane;
6130          transitionEventType = method;
6131        }
6132      }
6133      function startHostActionTimer(fiber) {
6134        if (0 > blockingUpdateTime) {
6135          blockingUpdateTime = now3();
6136          blockingUpdateTask = null != fiber._debugTask ? fiber._debugTask : null;
6137          (executionContext & (RenderContext | CommitContext)) !== NoContext && (blockingUpdateType = SPAWNED_UPDATE);
6138          var newEventTime = resolveEventTimeStamp(), newEventType = resolveEventType();
6139          newEventTime !== blockingEventRepeatTime || newEventType !== blockingEventType ? blockingEventRepeatTime = -1.1 : null !== newEventType && (blockingUpdateType = SPAWNED_UPDATE);
6140          blockingEventTime = newEventTime;
6141          blockingEventType = newEventType;
6142        }
6143        if (0 > transitionUpdateTime && (transitionUpdateTime = now3(), transitionUpdateTask = null != fiber._debugTask ? fiber._debugTask : null, 0 > transitionStartTime)) {
6144          fiber = resolveEventTimeStamp();
6145          newEventTime = resolveEventType();
6146          if (fiber !== transitionEventRepeatTime || newEventTime !== transitionEventType)
6147            transitionEventRepeatTime = -1.1;
6148          transitionEventTime = fiber;
6149          transitionEventType = newEventTime;
6150        }
6151      }
6152      function pushNestedEffectDurations() {
6153        var prevEffectDuration = profilerEffectDuration;
6154        profilerEffectDuration = 0;
6155        return prevEffectDuration;
6156      }
6157      function popNestedEffectDurations(prevEffectDuration) {
6158        var elapsedTime = profilerEffectDuration;
6159        profilerEffectDuration = prevEffectDuration;
6160        return elapsedTime;
6161      }
6162      function bubbleNestedEffectDurations(prevEffectDuration) {
6163        var elapsedTime = profilerEffectDuration;
6164        profilerEffectDuration += prevEffectDuration;
6165        return elapsedTime;
6166      }
6167      function resetComponentEffectTimers() {
6168        componentEffectEndTime = componentEffectStartTime = -1.1;
6169      }
6170      function pushComponentEffectStart() {
6171        var prevEffectStart = componentEffectStartTime;
6172        componentEffectStartTime = -1.1;
6173        return prevEffectStart;
6174      }
6175      function popComponentEffectStart(prevEffectStart) {
6176        0 <= prevEffectStart && (componentEffectStartTime = prevEffectStart);
6177      }
6178      function pushComponentEffectDuration() {
6179        var prevEffectDuration = componentEffectDuration;
6180        componentEffectDuration = -0;
6181        return prevEffectDuration;
6182      }
6183      function popComponentEffectDuration(prevEffectDuration) {
6184        0 <= prevEffectDuration && (componentEffectDuration = prevEffectDuration);
6185      }
6186      function pushComponentEffectErrors() {
6187        var prevErrors = componentEffectErrors;
6188        componentEffectErrors = null;
6189        return prevErrors;
6190      }
6191      function pushComponentEffectDidSpawnUpdate() {
6192        var prev = componentEffectSpawnedUpdate;
6193        componentEffectSpawnedUpdate = false;
6194        return prev;
6195      }
6196      function startProfilerTimer(fiber) {
6197        profilerStartTime = now3();
6198        0 > fiber.actualStartTime && (fiber.actualStartTime = profilerStartTime);
6199      }
6200      function stopProfilerTimerIfRunningAndRecordDuration(fiber) {
6201        if (0 <= profilerStartTime) {
6202          var elapsedTime = now3() - profilerStartTime;
6203          fiber.actualDuration += elapsedTime;
6204          fiber.selfBaseDuration = elapsedTime;
6205          profilerStartTime = -1;
6206        }
6207      }
6208      function stopProfilerTimerIfRunningAndRecordIncompleteDuration(fiber) {
6209        if (0 <= profilerStartTime) {
6210          var elapsedTime = now3() - profilerStartTime;
6211          fiber.actualDuration += elapsedTime;
6212          profilerStartTime = -1;
6213        }
6214      }
6215      function recordEffectDuration() {
6216        if (0 <= profilerStartTime) {
6217          var endTime = now3(), elapsedTime = endTime - profilerStartTime;
6218          profilerStartTime = -1;
6219          profilerEffectDuration += elapsedTime;
6220          componentEffectDuration += elapsedTime;
6221          componentEffectEndTime = endTime;
6222        }
6223      }
6224      function recordEffectError(errorInfo) {
6225        null === componentEffectErrors && (componentEffectErrors = []);
6226        componentEffectErrors.push(errorInfo);
6227        null === commitErrors && (commitErrors = []);
6228        commitErrors.push(errorInfo);
6229      }
6230      function startEffectTimer() {
6231        profilerStartTime = now3();
6232        0 > componentEffectStartTime && (componentEffectStartTime = profilerStartTime);
6233      }
6234      function transferActualDuration(fiber) {
6235        for (var child = fiber.child; child; )
6236          fiber.actualDuration += child.actualDuration, child = child.sibling;
6237      }
6238      function entangleAsyncAction(transition, thenable) {
6239        if (null === currentEntangledListeners) {
6240          var entangledListeners = currentEntangledListeners = [];
6241          currentEntangledPendingCount = 0;
6242          currentEntangledLane = requestTransitionLane();
6243          currentEntangledActionThenable = {
6244            status: "pending",
6245            value: void 0,
6246            then: function(resolve) {
6247              entangledListeners.push(resolve);
6248            }
6249          };
6250        }
6251        currentEntangledPendingCount++;
6252        thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);
6253        return thenable;
6254      }
6255      function pingEngtangledActionScope() {
6256        if (0 === --currentEntangledPendingCount && (-1 < transitionUpdateTime || (transitionStartTime = -1.1), null !== currentEntangledListeners)) {
6257          null !== currentEntangledActionThenable && (currentEntangledActionThenable.status = "fulfilled");
6258          var listeners = currentEntangledListeners;
6259          currentEntangledListeners = null;
6260          currentEntangledLane = 0;
6261          currentEntangledActionThenable = null;
6262          for (var i3 = 0; i3 < listeners.length; i3++) (0, listeners[i3])();
6263        }
6264      }
6265      function chainThenableValue(thenable, result) {
6266        var listeners = [], thenableWithOverride = {
6267          status: "pending",
6268          value: null,
6269          reason: null,
6270          then: function(resolve) {
6271            listeners.push(resolve);
6272          }
6273        };
6274        thenable.then(
6275          function() {
6276            thenableWithOverride.status = "fulfilled";
6277            thenableWithOverride.value = result;
6278            for (var i3 = 0; i3 < listeners.length; i3++) (0, listeners[i3])(result);
6279          },
6280          function(error2) {
6281            thenableWithOverride.status = "rejected";
6282            thenableWithOverride.reason = error2;
6283            for (error2 = 0; error2 < listeners.length; error2++)
6284              (0, listeners[error2])(void 0);
6285          }
6286        );
6287        return thenableWithOverride;
6288      }
6289      function peekCacheFromPool() {
6290        var cacheResumedFromPreviousRender = resumedCache.current;
6291        return null !== cacheResumedFromPreviousRender ? cacheResumedFromPreviousRender : workInProgressRoot.pooledCache;
6292      }
6293      function pushTransition(offscreenWorkInProgress, prevCachePool) {
6294        null === prevCachePool ? push(resumedCache, resumedCache.current, offscreenWorkInProgress) : push(resumedCache, prevCachePool.pool, offscreenWorkInProgress);
6295      }
6296      function getSuspendedCache() {
6297        var cacheFromPool = peekCacheFromPool();
6298        return null === cacheFromPool ? null : { parent: CacheContext._currentValue, pool: cacheFromPool };
6299      }
6300      function createThenableState() {
6301        return { didWarnAboutUncachedPromise: false, thenables: [] };
6302      }
6303      function isThenableResolved(thenable) {
6304        thenable = thenable.status;
6305        return "fulfilled" === thenable || "rejected" === thenable;
6306      }
6307      function trackUsedThenable(thenableState2, thenable, index) {
6308        null !== ReactSharedInternals.actQueue && (ReactSharedInternals.didUsePromise = true);
6309        var trackedThenables = thenableState2.thenables;
6310        index = trackedThenables[index];
6311        void 0 === index ? trackedThenables.push(thenable) : index !== thenable && (thenableState2.didWarnAboutUncachedPromise || (thenableState2.didWarnAboutUncachedPromise = true, console.error(
6312          "A component was suspended by an uncached promise. Creating promises inside a Client Component or hook is not yet supported, except via a Suspense-compatible library or framework."
6313        )), thenable.then(noop$1, noop$1), thenable = index);
6314        if (void 0 === thenable._debugInfo) {
6315          thenableState2 = performance.now();
6316          trackedThenables = thenable.displayName;
6317          var ioInfo = {
6318            name: "string" === typeof trackedThenables ? trackedThenables : "Promise",
6319            start: thenableState2,
6320            end: thenableState2,
6321            value: thenable
6322          };
6323          thenable._debugInfo = [{ awaited: ioInfo }];
6324          "fulfilled" !== thenable.status && "rejected" !== thenable.status && (thenableState2 = function() {
6325            ioInfo.end = performance.now();
6326          }, thenable.then(thenableState2, thenableState2));
6327        }
6328        switch (thenable.status) {
6329          case "fulfilled":
6330            return thenable.value;
6331          case "rejected":
6332            throw thenableState2 = thenable.reason, checkIfUseWrappedInAsyncCatch(thenableState2), thenableState2;
6333          default:
6334            if ("string" === typeof thenable.status)
6335              thenable.then(noop$1, noop$1);
6336            else {
6337              thenableState2 = workInProgressRoot;
6338              if (null !== thenableState2 && 100 < thenableState2.shellSuspendCounter)
6339                throw Error(
6340                  "An unknown Component is an async Client Component. Only Server Components can be async at the moment. This error is often caused by accidentally adding `'use client'` to a module that was originally written for the server."
6341                );
6342              thenableState2 = thenable;
6343              thenableState2.status = "pending";
6344              thenableState2.then(
6345                function(fulfilledValue) {
6346                  if ("pending" === thenable.status) {
6347                    var fulfilledThenable = thenable;
6348                    fulfilledThenable.status = "fulfilled";
6349                    fulfilledThenable.value = fulfilledValue;
6350                  }
6351                },
6352                function(error2) {
6353                  if ("pending" === thenable.status) {
6354                    var rejectedThenable = thenable;
6355                    rejectedThenable.status = "rejected";
6356                    rejectedThenable.reason = error2;
6357                  }
6358                }
6359              );
6360            }
6361            switch (thenable.status) {
6362              case "fulfilled":
6363                return thenable.value;
6364              case "rejected":
6365                throw thenableState2 = thenable.reason, checkIfUseWrappedInAsyncCatch(thenableState2), thenableState2;
6366            }
6367            suspendedThenable = thenable;
6368            needsToResetSuspendedThenableDEV = true;
6369            throw SuspenseException;
6370        }
6371      }
6372      function resolveLazy(lazyType) {
6373        try {
6374          return callLazyInitInDEV(lazyType);
6375        } catch (x3) {
6376          if (null !== x3 && "object" === typeof x3 && "function" === typeof x3.then)
6377            throw suspendedThenable = x3, needsToResetSuspendedThenableDEV = true, SuspenseException;
6378          throw x3;
6379        }
6380      }
6381      function getSuspendedThenable() {
6382        if (null === suspendedThenable)
6383          throw Error(
6384            "Expected a suspended thenable. This is a bug in React. Please file an issue."
6385          );
6386        var thenable = suspendedThenable;
6387        suspendedThenable = null;
6388        needsToResetSuspendedThenableDEV = false;
6389        return thenable;
6390      }
6391      function checkIfUseWrappedInAsyncCatch(rejectedReason) {
6392        if (rejectedReason === SuspenseException || rejectedReason === SuspenseActionException)
6393          throw Error(
6394            "Hooks are not supported inside an async component. This error is often caused by accidentally adding `'use client'` to a module that was originally written for the server."
6395          );
6396      }
6397      function pushDebugInfo(debugInfo) {
6398        var previousDebugInfo = currentDebugInfo;
6399        null != debugInfo && (currentDebugInfo = null === previousDebugInfo ? debugInfo : previousDebugInfo.concat(debugInfo));
6400        return previousDebugInfo;
6401      }
6402      function getCurrentDebugTask() {
6403        var debugInfo = currentDebugInfo;
6404        if (null != debugInfo) {
6405          for (var i3 = debugInfo.length - 1; 0 <= i3; i3--)
6406            if (null != debugInfo[i3].name) {
6407              var debugTask = debugInfo[i3].debugTask;
6408              if (null != debugTask) return debugTask;
6409            }
6410        }
6411        return null;
6412      }
6413      function validateFragmentProps(element, fiber, returnFiber) {
6414        for (var keys = Object.keys(element.props), i3 = 0; i3 < keys.length; i3++) {
6415          var key = keys[i3];
6416          if ("children" !== key && "key" !== key) {
6417            null === fiber && (fiber = createFiberFromElement(element, returnFiber.mode, 0), fiber._debugInfo = currentDebugInfo, fiber.return = returnFiber);
6418            runWithFiberInDEV(
6419              fiber,
6420              function(erroredKey) {
6421                console.error(
6422                  "Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",
6423                  erroredKey
6424                );
6425              },
6426              key
6427            );
6428            break;
6429          }
6430        }
6431      }
6432      function unwrapThenable(thenable) {
6433        var index = thenableIndexCounter$1;
6434        thenableIndexCounter$1 += 1;
6435        null === thenableState$1 && (thenableState$1 = createThenableState());
6436        return trackUsedThenable(thenableState$1, thenable, index);
6437      }
6438      function coerceRef(workInProgress2, element) {
6439        element = element.props.ref;
6440        workInProgress2.ref = void 0 !== element ? element : null;
6441      }
6442      function throwOnInvalidObjectTypeImpl(returnFiber, newChild) {
6443        if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)
6444          throw Error(
6445            'A React Element from an older version of React was rendered. This is not supported. It can happen if:\n- Multiple copies of the "react" package is used.\n- A library pre-bundled an old copy of "react" or "react/jsx-runtime".\n- A compiler tries to "inline" JSX instead of using the runtime.'
6446          );
6447        returnFiber = Object.prototype.toString.call(newChild);
6448        throw Error(
6449          "Objects are not valid as a React child (found: " + ("[object Object]" === returnFiber ? "object with keys {" + Object.keys(newChild).join(", ") + "}" : returnFiber) + "). If you meant to render a collection of children, use an array instead."
6450        );
6451      }
6452      function throwOnInvalidObjectType(returnFiber, newChild) {
6453        var debugTask = getCurrentDebugTask();
6454        null !== debugTask ? debugTask.run(
6455          throwOnInvalidObjectTypeImpl.bind(null, returnFiber, newChild)
6456        ) : throwOnInvalidObjectTypeImpl(returnFiber, newChild);
6457      }
6458      function warnOnFunctionTypeImpl(returnFiber, invalidChild) {
6459        var parentName = getComponentNameFromFiber(returnFiber) || "Component";
6460        ownerHasFunctionTypeWarning[parentName] || (ownerHasFunctionTypeWarning[parentName] = true, invalidChild = invalidChild.displayName || invalidChild.name || "Component", 3 === returnFiber.tag ? console.error(
6461          "Functions are not valid as a React child. This may happen if you return %s instead of <%s /> from render. Or maybe you meant to call this function rather than return it.\n  root.render(%s)",
6462          invalidChild,
6463          invalidChild,
6464          invalidChild
6465        ) : console.error(
6466          "Functions are not valid as a React child. This may happen if you return %s instead of <%s /> from render. Or maybe you meant to call this function rather than return it.\n  <%s>{%s}</%s>",
6467          invalidChild,
6468          invalidChild,
6469          parentName,
6470          invalidChild,
6471          parentName
6472        ));
6473      }
6474      function warnOnFunctionType(returnFiber, invalidChild) {
6475        var debugTask = getCurrentDebugTask();
6476        null !== debugTask ? debugTask.run(
6477          warnOnFunctionTypeImpl.bind(null, returnFiber, invalidChild)
6478        ) : warnOnFunctionTypeImpl(returnFiber, invalidChild);
6479      }
6480      function warnOnSymbolTypeImpl(returnFiber, invalidChild) {
6481        var parentName = getComponentNameFromFiber(returnFiber) || "Component";
6482        ownerHasSymbolTypeWarning[parentName] || (ownerHasSymbolTypeWarning[parentName] = true, invalidChild = String(invalidChild), 3 === returnFiber.tag ? console.error(
6483          "Symbols are not valid as a React child.\n  root.render(%s)",
6484          invalidChild
6485        ) : console.error(
6486          "Symbols are not valid as a React child.\n  <%s>%s</%s>",
6487          parentName,
6488          invalidChild,
6489          parentName
6490        ));
6491      }
6492      function warnOnSymbolType(returnFiber, invalidChild) {
6493        var debugTask = getCurrentDebugTask();
6494        null !== debugTask ? debugTask.run(
6495          warnOnSymbolTypeImpl.bind(null, returnFiber, invalidChild)
6496        ) : warnOnSymbolTypeImpl(returnFiber, invalidChild);
6497      }
6498      function createChildReconciler(shouldTrackSideEffects) {
6499        function deleteChild(returnFiber, childToDelete) {
6500          if (shouldTrackSideEffects) {
6501            var deletions = returnFiber.deletions;
6502            null === deletions ? (returnFiber.deletions = [childToDelete], returnFiber.flags |= 16) : deletions.push(childToDelete);
6503          }
6504        }
6505        function deleteRemainingChildren(returnFiber, currentFirstChild) {
6506          if (!shouldTrackSideEffects) return null;
6507          for (; null !== currentFirstChild; )
6508            deleteChild(returnFiber, currentFirstChild), currentFirstChild = currentFirstChild.sibling;
6509          return null;
6510        }
6511        function mapRemainingChildren(currentFirstChild) {
6512          for (var existingChildren = /* @__PURE__ */ new Map(); null !== currentFirstChild; )
6513            null !== currentFirstChild.key ? existingChildren.set(currentFirstChild.key, currentFirstChild) : existingChildren.set(currentFirstChild.index, currentFirstChild), currentFirstChild = currentFirstChild.sibling;
6514          return existingChildren;
6515        }
6516        function useFiber(fiber, pendingProps) {
6517          fiber = createWorkInProgress(fiber, pendingProps);
6518          fiber.index = 0;
6519          fiber.sibling = null;
6520          return fiber;
6521        }
6522        function placeChild(newFiber, lastPlacedIndex, newIndex) {
6523          newFiber.index = newIndex;
6524          if (!shouldTrackSideEffects)
6525            return newFiber.flags |= 1048576, lastPlacedIndex;
6526          newIndex = newFiber.alternate;
6527          if (null !== newIndex)
6528            return newIndex = newIndex.index, newIndex < lastPlacedIndex ? (newFiber.flags |= 67108866, lastPlacedIndex) : newIndex;
6529          newFiber.flags |= 67108866;
6530          return lastPlacedIndex;
6531        }
6532        function placeSingleChild(newFiber) {
6533          shouldTrackSideEffects && null === newFiber.alternate && (newFiber.flags |= 67108866);
6534          return newFiber;
6535        }
6536        function updateTextNode(returnFiber, current2, textContent, lanes) {
6537          if (null === current2 || 6 !== current2.tag)
6538            return current2 = createFiberFromText(
6539              textContent,
6540              returnFiber.mode,
6541              lanes
6542            ), current2.return = returnFiber, current2._debugOwner = returnFiber, current2._debugTask = returnFiber._debugTask, current2._debugInfo = currentDebugInfo, current2;
6543          current2 = useFiber(current2, textContent);
6544          current2.return = returnFiber;
6545          current2._debugInfo = currentDebugInfo;
6546          return current2;
6547        }
6548        function updateElement(returnFiber, current2, element, lanes) {
6549          var elementType2 = element.type;
6550          if (elementType2 === REACT_FRAGMENT_TYPE)
6551            return current2 = updateFragment(
6552              returnFiber,
6553              current2,
6554              element.props.children,
6555              lanes,
6556              element.key
6557            ), validateFragmentProps(element, current2, returnFiber), current2;
6558          if (null !== current2 && (current2.elementType === elementType2 || isCompatibleFamilyForHotReloading(current2, element) || "object" === typeof elementType2 && null !== elementType2 && elementType2.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType2) === current2.type))
6559            return current2 = useFiber(current2, element.props), coerceRef(current2, element), current2.return = returnFiber, current2._debugOwner = element._owner, current2._debugInfo = currentDebugInfo, current2;
6560          current2 = createFiberFromElement(element, returnFiber.mode, lanes);
6561          coerceRef(current2, element);
6562          current2.return = returnFiber;
6563          current2._debugInfo = currentDebugInfo;
6564          return current2;
6565        }
6566        function updatePortal(returnFiber, current2, portal, lanes) {
6567          if (null === current2 || 4 !== current2.tag || current2.stateNode.containerInfo !== portal.containerInfo || current2.stateNode.implementation !== portal.implementation)
6568            return current2 = createFiberFromPortal(portal, returnFiber.mode, lanes), current2.return = returnFiber, current2._debugInfo = currentDebugInfo, current2;
6569          current2 = useFiber(current2, portal.children || []);
6570          current2.return = returnFiber;
6571          current2._debugInfo = currentDebugInfo;
6572          return current2;
6573        }
6574        function updateFragment(returnFiber, current2, fragment, lanes, key) {
6575          if (null === current2 || 7 !== current2.tag)
6576            return current2 = createFiberFromFragment(
6577              fragment,
6578              returnFiber.mode,
6579              lanes,
6580              key
6581            ), current2.return = returnFiber, current2._debugOwner = returnFiber, current2._debugTask = returnFiber._debugTask, current2._debugInfo = currentDebugInfo, current2;
6582          current2 = useFiber(current2, fragment);
6583          current2.return = returnFiber;
6584          current2._debugInfo = currentDebugInfo;
6585          return current2;
6586        }
6587        function createChild(returnFiber, newChild, lanes) {
6588          if ("string" === typeof newChild && "" !== newChild || "number" === typeof newChild || "bigint" === typeof newChild)
6589            return newChild = createFiberFromText(
6590              "" + newChild,
6591              returnFiber.mode,
6592              lanes
6593            ), newChild.return = returnFiber, newChild._debugOwner = returnFiber, newChild._debugTask = returnFiber._debugTask, newChild._debugInfo = currentDebugInfo, newChild;
6594          if ("object" === typeof newChild && null !== newChild) {
6595            switch (newChild.$$typeof) {
6596              case REACT_ELEMENT_TYPE:
6597                return lanes = createFiberFromElement(
6598                  newChild,
6599                  returnFiber.mode,
6600                  lanes
6601                ), coerceRef(lanes, newChild), lanes.return = returnFiber, returnFiber = pushDebugInfo(newChild._debugInfo), lanes._debugInfo = currentDebugInfo, currentDebugInfo = returnFiber, lanes;
6602              case REACT_PORTAL_TYPE:
6603                return newChild = createFiberFromPortal(
6604                  newChild,
6605                  returnFiber.mode,
6606                  lanes
6607                ), newChild.return = returnFiber, newChild._debugInfo = currentDebugInfo, newChild;
6608              case REACT_LAZY_TYPE:
6609                var _prevDebugInfo = pushDebugInfo(newChild._debugInfo);
6610                newChild = resolveLazy(newChild);
6611                returnFiber = createChild(returnFiber, newChild, lanes);
6612                currentDebugInfo = _prevDebugInfo;
6613                return returnFiber;
6614            }
6615            if (isArrayImpl(newChild) || getIteratorFn(newChild))
6616              return lanes = createFiberFromFragment(
6617                newChild,
6618                returnFiber.mode,
6619                lanes,
6620                null
6621              ), lanes.return = returnFiber, lanes._debugOwner = returnFiber, lanes._debugTask = returnFiber._debugTask, returnFiber = pushDebugInfo(newChild._debugInfo), lanes._debugInfo = currentDebugInfo, currentDebugInfo = returnFiber, lanes;
6622            if ("function" === typeof newChild.then)
6623              return _prevDebugInfo = pushDebugInfo(newChild._debugInfo), returnFiber = createChild(
6624                returnFiber,
6625                unwrapThenable(newChild),
6626                lanes
6627              ), currentDebugInfo = _prevDebugInfo, returnFiber;
6628            if (newChild.$$typeof === REACT_CONTEXT_TYPE)
6629              return createChild(
6630                returnFiber,
6631                readContextDuringReconciliation(returnFiber, newChild),
6632                lanes
6633              );
6634            throwOnInvalidObjectType(returnFiber, newChild);
6635          }
6636          "function" === typeof newChild && warnOnFunctionType(returnFiber, newChild);
6637          "symbol" === typeof newChild && warnOnSymbolType(returnFiber, newChild);
6638          return null;
6639        }
6640        function updateSlot(returnFiber, oldFiber, newChild, lanes) {
6641          var key = null !== oldFiber ? oldFiber.key : null;
6642          if ("string" === typeof newChild && "" !== newChild || "number" === typeof newChild || "bigint" === typeof newChild)
6643            return null !== key ? null : updateTextNode(returnFiber, oldFiber, "" + newChild, lanes);
6644          if ("object" === typeof newChild && null !== newChild) {
6645            switch (newChild.$$typeof) {
6646              case REACT_ELEMENT_TYPE:
6647                return newChild.key === key ? (key = pushDebugInfo(newChild._debugInfo), returnFiber = updateElement(
6648                  returnFiber,
6649                  oldFiber,
6650                  newChild,
6651                  lanes
6652                ), currentDebugInfo = key, returnFiber) : null;
6653              case REACT_PORTAL_TYPE:
6654                return newChild.key === key ? updatePortal(returnFiber, oldFiber, newChild, lanes) : null;
6655              case REACT_LAZY_TYPE:
6656                return key = pushDebugInfo(newChild._debugInfo), newChild = resolveLazy(newChild), returnFiber = updateSlot(
6657                  returnFiber,
6658                  oldFiber,
6659                  newChild,
6660                  lanes
6661                ), currentDebugInfo = key, returnFiber;
6662            }
6663            if (isArrayImpl(newChild) || getIteratorFn(newChild)) {
6664              if (null !== key) return null;
6665              key = pushDebugInfo(newChild._debugInfo);
6666              returnFiber = updateFragment(
6667                returnFiber,
6668                oldFiber,
6669                newChild,
6670                lanes,
6671                null
6672              );
6673              currentDebugInfo = key;
6674              return returnFiber;
6675            }
6676            if ("function" === typeof newChild.then)
6677              return key = pushDebugInfo(newChild._debugInfo), returnFiber = updateSlot(
6678                returnFiber,
6679                oldFiber,
6680                unwrapThenable(newChild),
6681                lanes
6682              ), currentDebugInfo = key, returnFiber;
6683            if (newChild.$$typeof === REACT_CONTEXT_TYPE)
6684              return updateSlot(
6685                returnFiber,
6686                oldFiber,
6687                readContextDuringReconciliation(returnFiber, newChild),
6688                lanes
6689              );
6690            throwOnInvalidObjectType(returnFiber, newChild);
6691          }
6692          "function" === typeof newChild && warnOnFunctionType(returnFiber, newChild);
6693          "symbol" === typeof newChild && warnOnSymbolType(returnFiber, newChild);
6694          return null;
6695        }
6696        function updateFromMap(existingChildren, returnFiber, newIdx, newChild, lanes) {
6697          if ("string" === typeof newChild && "" !== newChild || "number" === typeof newChild || "bigint" === typeof newChild)
6698            return existingChildren = existingChildren.get(newIdx) || null, updateTextNode(returnFiber, existingChildren, "" + newChild, lanes);
6699          if ("object" === typeof newChild && null !== newChild) {
6700            switch (newChild.$$typeof) {
6701              case REACT_ELEMENT_TYPE:
6702                return newIdx = existingChildren.get(
6703                  null === newChild.key ? newIdx : newChild.key
6704                ) || null, existingChildren = pushDebugInfo(newChild._debugInfo), returnFiber = updateElement(
6705                  returnFiber,
6706                  newIdx,
6707                  newChild,
6708                  lanes
6709                ), currentDebugInfo = existingChildren, returnFiber;
6710              case REACT_PORTAL_TYPE:
6711                return existingChildren = existingChildren.get(
6712                  null === newChild.key ? newIdx : newChild.key
6713                ) || null, updatePortal(returnFiber, existingChildren, newChild, lanes);
6714              case REACT_LAZY_TYPE:
6715                var _prevDebugInfo7 = pushDebugInfo(newChild._debugInfo);
6716                newChild = resolveLazy(newChild);
6717                returnFiber = updateFromMap(
6718                  existingChildren,
6719                  returnFiber,
6720                  newIdx,
6721                  newChild,
6722                  lanes
6723                );
6724                currentDebugInfo = _prevDebugInfo7;
6725                return returnFiber;
6726            }
6727            if (isArrayImpl(newChild) || getIteratorFn(newChild))
6728              return newIdx = existingChildren.get(newIdx) || null, existingChildren = pushDebugInfo(newChild._debugInfo), returnFiber = updateFragment(
6729                returnFiber,
6730                newIdx,
6731                newChild,
6732                lanes,
6733                null
6734              ), currentDebugInfo = existingChildren, returnFiber;
6735            if ("function" === typeof newChild.then)
6736              return _prevDebugInfo7 = pushDebugInfo(newChild._debugInfo), returnFiber = updateFromMap(
6737                existingChildren,
6738                returnFiber,
6739                newIdx,
6740                unwrapThenable(newChild),
6741                lanes
6742              ), currentDebugInfo = _prevDebugInfo7, returnFiber;
6743            if (newChild.$$typeof === REACT_CONTEXT_TYPE)
6744              return updateFromMap(
6745                existingChildren,
6746                returnFiber,
6747                newIdx,
6748                readContextDuringReconciliation(returnFiber, newChild),
6749                lanes
6750              );
6751            throwOnInvalidObjectType(returnFiber, newChild);
6752          }
6753          "function" === typeof newChild && warnOnFunctionType(returnFiber, newChild);
6754          "symbol" === typeof newChild && warnOnSymbolType(returnFiber, newChild);
6755          return null;
6756        }
6757        function warnOnInvalidKey(returnFiber, workInProgress2, child, knownKeys) {
6758          if ("object" !== typeof child || null === child) return knownKeys;
6759          switch (child.$$typeof) {
6760            case REACT_ELEMENT_TYPE:
6761            case REACT_PORTAL_TYPE:
6762              warnForMissingKey(returnFiber, workInProgress2, child);
6763              var key = child.key;
6764              if ("string" !== typeof key) break;
6765              if (null === knownKeys) {
6766                knownKeys = /* @__PURE__ */ new Set();
6767                knownKeys.add(key);
6768                break;
6769              }
6770              if (!knownKeys.has(key)) {
6771                knownKeys.add(key);
6772                break;
6773              }
6774              runWithFiberInDEV(workInProgress2, function() {
6775                console.error(
6776                  "Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted \u2014 the behavior is unsupported and could change in a future version.",
6777                  key
6778                );
6779              });
6780              break;
6781            case REACT_LAZY_TYPE:
6782              child = resolveLazy(child), warnOnInvalidKey(returnFiber, workInProgress2, child, knownKeys);
6783          }
6784          return knownKeys;
6785        }
6786        function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, lanes) {
6787          for (var knownKeys = null, resultingFirstChild = null, previousNewFiber = null, oldFiber = currentFirstChild, newIdx = currentFirstChild = 0, nextOldFiber = null; null !== oldFiber && newIdx < newChildren.length; newIdx++) {
6788            oldFiber.index > newIdx ? (nextOldFiber = oldFiber, oldFiber = null) : nextOldFiber = oldFiber.sibling;
6789            var newFiber = updateSlot(
6790              returnFiber,
6791              oldFiber,
6792              newChildren[newIdx],
6793              lanes
6794            );
6795            if (null === newFiber) {
6796              null === oldFiber && (oldFiber = nextOldFiber);
6797              break;
6798            }
6799            knownKeys = warnOnInvalidKey(
6800              returnFiber,
6801              newFiber,
6802              newChildren[newIdx],
6803              knownKeys
6804            );
6805            shouldTrackSideEffects && oldFiber && null === newFiber.alternate && deleteChild(returnFiber, oldFiber);
6806            currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);
6807            null === previousNewFiber ? resultingFirstChild = newFiber : previousNewFiber.sibling = newFiber;
6808            previousNewFiber = newFiber;
6809            oldFiber = nextOldFiber;
6810          }
6811          if (newIdx === newChildren.length)
6812            return deleteRemainingChildren(returnFiber, oldFiber), isHydrating && pushTreeFork(returnFiber, newIdx), resultingFirstChild;
6813          if (null === oldFiber) {
6814            for (; newIdx < newChildren.length; newIdx++)
6815              oldFiber = createChild(returnFiber, newChildren[newIdx], lanes), null !== oldFiber && (knownKeys = warnOnInvalidKey(
6816                returnFiber,
6817                oldFiber,
6818                newChildren[newIdx],
6819                knownKeys
6820              ), currentFirstChild = placeChild(
6821                oldFiber,
6822                currentFirstChild,
6823                newIdx
6824              ), null === previousNewFiber ? resultingFirstChild = oldFiber : previousNewFiber.sibling = oldFiber, previousNewFiber = oldFiber);
6825            isHydrating && pushTreeFork(returnFiber, newIdx);
6826            return resultingFirstChild;
6827          }
6828          for (oldFiber = mapRemainingChildren(oldFiber); newIdx < newChildren.length; newIdx++)
6829            nextOldFiber = updateFromMap(
6830              oldFiber,
6831              returnFiber,
6832              newIdx,
6833              newChildren[newIdx],
6834              lanes
6835            ), null !== nextOldFiber && (knownKeys = warnOnInvalidKey(
6836              returnFiber,
6837              nextOldFiber,
6838              newChildren[newIdx],
6839              knownKeys
6840            ), shouldTrackSideEffects && null !== nextOldFiber.alternate && oldFiber.delete(
6841              null === nextOldFiber.key ? newIdx : nextOldFiber.key
6842            ), currentFirstChild = placeChild(
6843              nextOldFiber,
6844              currentFirstChild,
6845              newIdx
6846            ), null === previousNewFiber ? resultingFirstChild = nextOldFiber : previousNewFiber.sibling = nextOldFiber, previousNewFiber = nextOldFiber);
6847          shouldTrackSideEffects && oldFiber.forEach(function(child) {
6848            return deleteChild(returnFiber, child);
6849          });
6850          isHydrating && pushTreeFork(returnFiber, newIdx);
6851          return resultingFirstChild;
6852        }
6853        function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildren, lanes) {
6854          if (null == newChildren)
6855            throw Error("An iterable object provided no iterator.");
6856          for (var resultingFirstChild = null, previousNewFiber = null, oldFiber = currentFirstChild, newIdx = currentFirstChild = 0, nextOldFiber = null, knownKeys = null, step = newChildren.next(); null !== oldFiber && !step.done; newIdx++, step = newChildren.next()) {
6857            oldFiber.index > newIdx ? (nextOldFiber = oldFiber, oldFiber = null) : nextOldFiber = oldFiber.sibling;
6858            var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);
6859            if (null === newFiber) {
6860              null === oldFiber && (oldFiber = nextOldFiber);
6861              break;
6862            }
6863            knownKeys = warnOnInvalidKey(
6864              returnFiber,
6865              newFiber,
6866              step.value,
6867              knownKeys
6868            );
6869            shouldTrackSideEffects && oldFiber && null === newFiber.alternate && deleteChild(returnFiber, oldFiber);
6870            currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);
6871            null === previousNewFiber ? resultingFirstChild = newFiber : previousNewFiber.sibling = newFiber;
6872            previousNewFiber = newFiber;
6873            oldFiber = nextOldFiber;
6874          }
6875          if (step.done)
6876            return deleteRemainingChildren(returnFiber, oldFiber), isHydrating && pushTreeFork(returnFiber, newIdx), resultingFirstChild;
6877          if (null === oldFiber) {
6878            for (; !step.done; newIdx++, step = newChildren.next())
6879              oldFiber = createChild(returnFiber, step.value, lanes), null !== oldFiber && (knownKeys = warnOnInvalidKey(
6880                returnFiber,
6881                oldFiber,
6882                step.value,
6883                knownKeys
6884              ), currentFirstChild = placeChild(
6885                oldFiber,
6886                currentFirstChild,
6887                newIdx
6888              ), null === previousNewFiber ? resultingFirstChild = oldFiber : previousNewFiber.sibling = oldFiber, previousNewFiber = oldFiber);
6889            isHydrating && pushTreeFork(returnFiber, newIdx);
6890            return resultingFirstChild;
6891          }
6892          for (oldFiber = mapRemainingChildren(oldFiber); !step.done; newIdx++, step = newChildren.next())
6893            nextOldFiber = updateFromMap(
6894              oldFiber,
6895              returnFiber,
6896              newIdx,
6897              step.value,
6898              lanes
6899            ), null !== nextOldFiber && (knownKeys = warnOnInvalidKey(
6900              returnFiber,
6901              nextOldFiber,
6902              step.value,
6903              knownKeys
6904            ), shouldTrackSideEffects && null !== nextOldFiber.alternate && oldFiber.delete(
6905              null === nextOldFiber.key ? newIdx : nextOldFiber.key
6906            ), currentFirstChild = placeChild(
6907              nextOldFiber,
6908              currentFirstChild,
6909              newIdx
6910            ), null === previousNewFiber ? resultingFirstChild = nextOldFiber : previousNewFiber.sibling = nextOldFiber, previousNewFiber = nextOldFiber);
6911          shouldTrackSideEffects && oldFiber.forEach(function(child) {
6912            return deleteChild(returnFiber, child);
6913          });
6914          isHydrating && pushTreeFork(returnFiber, newIdx);
6915          return resultingFirstChild;
6916        }
6917        function reconcileChildFibersImpl(returnFiber, currentFirstChild, newChild, lanes) {
6918          "object" === typeof newChild && null !== newChild && newChild.type === REACT_FRAGMENT_TYPE && null === newChild.key && (validateFragmentProps(newChild, null, returnFiber), newChild = newChild.props.children);
6919          if ("object" === typeof newChild && null !== newChild) {
6920            switch (newChild.$$typeof) {
6921              case REACT_ELEMENT_TYPE:
6922                var prevDebugInfo = pushDebugInfo(newChild._debugInfo);
6923                a: {
6924                  for (var key = newChild.key; null !== currentFirstChild; ) {
6925                    if (currentFirstChild.key === key) {
6926                      key = newChild.type;
6927                      if (key === REACT_FRAGMENT_TYPE) {
6928                        if (7 === currentFirstChild.tag) {
6929                          deleteRemainingChildren(
6930                            returnFiber,
6931                            currentFirstChild.sibling
6932                          );
6933                          lanes = useFiber(
6934                            currentFirstChild,
6935                            newChild.props.children
6936                          );
6937                          lanes.return = returnFiber;
6938                          lanes._debugOwner = newChild._owner;
6939                          lanes._debugInfo = currentDebugInfo;
6940                          validateFragmentProps(newChild, lanes, returnFiber);
6941                          returnFiber = lanes;
6942                          break a;
6943                        }
6944                      } else if (currentFirstChild.elementType === key || isCompatibleFamilyForHotReloading(
6945                        currentFirstChild,
6946                        newChild
6947                      ) || "object" === typeof key && null !== key && key.$$typeof === REACT_LAZY_TYPE && resolveLazy(key) === currentFirstChild.type) {
6948                        deleteRemainingChildren(
6949                          returnFiber,
6950                          currentFirstChild.sibling
6951                        );
6952                        lanes = useFiber(currentFirstChild, newChild.props);
6953                        coerceRef(lanes, newChild);
6954                        lanes.return = returnFiber;
6955                        lanes._debugOwner = newChild._owner;
6956                        lanes._debugInfo = currentDebugInfo;
6957                        returnFiber = lanes;
6958                        break a;
6959                      }
6960                      deleteRemainingChildren(returnFiber, currentFirstChild);
6961                      break;
6962                    } else deleteChild(returnFiber, currentFirstChild);
6963                    currentFirstChild = currentFirstChild.sibling;
6964                  }
6965                  newChild.type === REACT_FRAGMENT_TYPE ? (lanes = createFiberFromFragment(
6966                    newChild.props.children,
6967                    returnFiber.mode,
6968                    lanes,
6969                    newChild.key
6970                  ), lanes.return = returnFiber, lanes._debugOwner = returnFiber, lanes._debugTask = returnFiber._debugTask, lanes._debugInfo = currentDebugInfo, validateFragmentProps(newChild, lanes, returnFiber), returnFiber = lanes) : (lanes = createFiberFromElement(
6971                    newChild,
6972                    returnFiber.mode,
6973                    lanes
6974                  ), coerceRef(lanes, newChild), lanes.return = returnFiber, lanes._debugInfo = currentDebugInfo, returnFiber = lanes);
6975                }
6976                returnFiber = placeSingleChild(returnFiber);
6977                currentDebugInfo = prevDebugInfo;
6978                return returnFiber;
6979              case REACT_PORTAL_TYPE:
6980                a: {
6981                  prevDebugInfo = newChild;
6982                  for (newChild = prevDebugInfo.key; null !== currentFirstChild; ) {
6983                    if (currentFirstChild.key === newChild)
6984                      if (4 === currentFirstChild.tag && currentFirstChild.stateNode.containerInfo === prevDebugInfo.containerInfo && currentFirstChild.stateNode.implementation === prevDebugInfo.implementation) {
6985                        deleteRemainingChildren(
6986                          returnFiber,
6987                          currentFirstChild.sibling
6988                        );
6989                        lanes = useFiber(
6990                          currentFirstChild,
6991                          prevDebugInfo.children || []
6992                        );
6993                        lanes.return = returnFiber;
6994                        returnFiber = lanes;
6995                        break a;
6996                      } else {
6997                        deleteRemainingChildren(returnFiber, currentFirstChild);
6998                        break;
6999                      }
7000                    else deleteChild(returnFiber, currentFirstChild);
7001                    currentFirstChild = currentFirstChild.sibling;
7002                  }
7003                  lanes = createFiberFromPortal(
7004                    prevDebugInfo,
7005                    returnFiber.mode,
7006                    lanes
7007                  );
7008                  lanes.return = returnFiber;
7009                  returnFiber = lanes;
7010                }
7011                return placeSingleChild(returnFiber);
7012              case REACT_LAZY_TYPE:
7013                return prevDebugInfo = pushDebugInfo(newChild._debugInfo), newChild = resolveLazy(newChild), returnFiber = reconcileChildFibersImpl(
7014                  returnFiber,
7015                  currentFirstChild,
7016                  newChild,
7017                  lanes
7018                ), currentDebugInfo = prevDebugInfo, returnFiber;
7019            }
7020            if (isArrayImpl(newChild))
7021              return prevDebugInfo = pushDebugInfo(newChild._debugInfo), returnFiber = reconcileChildrenArray(
7022                returnFiber,
7023                currentFirstChild,
7024                newChild,
7025                lanes
7026              ), currentDebugInfo = prevDebugInfo, returnFiber;
7027            if (getIteratorFn(newChild)) {
7028              prevDebugInfo = pushDebugInfo(newChild._debugInfo);
7029              key = getIteratorFn(newChild);
7030              if ("function" !== typeof key)
7031                throw Error(
7032                  "An object is not an iterable. This error is likely caused by a bug in React. Please file an issue."
7033                );
7034              var newChildren = key.call(newChild);
7035              if (newChildren === newChild) {
7036                if (0 !== returnFiber.tag || "[object GeneratorFunction]" !== Object.prototype.toString.call(returnFiber.type) || "[object Generator]" !== Object.prototype.toString.call(newChildren))
7037                  didWarnAboutGenerators || console.error(
7038                    "Using Iterators as children is unsupported and will likely yield unexpected results because enumerating a generator mutates it. You may convert it to an array with `Array.from()` or the `[...spread]` operator before rendering. You can also use an Iterable that can iterate multiple times over the same items."
7039                  ), didWarnAboutGenerators = true;
7040              } else
7041                newChild.entries !== key || didWarnAboutMaps || (console.error(
7042                  "Using Maps as children is not supported. Use an array of keyed ReactElements instead."
7043                ), didWarnAboutMaps = true);
7044              returnFiber = reconcileChildrenIterator(
7045                returnFiber,
7046                currentFirstChild,
7047                newChildren,
7048                lanes
7049              );
7050              currentDebugInfo = prevDebugInfo;
7051              return returnFiber;
7052            }
7053            if ("function" === typeof newChild.then)
7054              return prevDebugInfo = pushDebugInfo(newChild._debugInfo), returnFiber = reconcileChildFibersImpl(
7055                returnFiber,
7056                currentFirstChild,
7057                unwrapThenable(newChild),
7058                lanes
7059              ), currentDebugInfo = prevDebugInfo, returnFiber;
7060            if (newChild.$$typeof === REACT_CONTEXT_TYPE)
7061              return reconcileChildFibersImpl(
7062                returnFiber,
7063                currentFirstChild,
7064                readContextDuringReconciliation(returnFiber, newChild),
7065                lanes
7066              );
7067            throwOnInvalidObjectType(returnFiber, newChild);
7068          }
7069          if ("string" === typeof newChild && "" !== newChild || "number" === typeof newChild || "bigint" === typeof newChild)
7070            return prevDebugInfo = "" + newChild, null !== currentFirstChild && 6 === currentFirstChild.tag ? (deleteRemainingChildren(
7071              returnFiber,
7072              currentFirstChild.sibling
7073            ), lanes = useFiber(currentFirstChild, prevDebugInfo), lanes.return = returnFiber, returnFiber = lanes) : (deleteRemainingChildren(returnFiber, currentFirstChild), lanes = createFiberFromText(
7074              prevDebugInfo,
7075              returnFiber.mode,
7076              lanes
7077            ), lanes.return = returnFiber, lanes._debugOwner = returnFiber, lanes._debugTask = returnFiber._debugTask, lanes._debugInfo = currentDebugInfo, returnFiber = lanes), placeSingleChild(returnFiber);
7078          "function" === typeof newChild && warnOnFunctionType(returnFiber, newChild);
7079          "symbol" === typeof newChild && warnOnSymbolType(returnFiber, newChild);
7080          return deleteRemainingChildren(returnFiber, currentFirstChild);
7081        }
7082        return function(returnFiber, currentFirstChild, newChild, lanes) {
7083          var prevDebugInfo = currentDebugInfo;
7084          currentDebugInfo = null;
7085          try {
7086            thenableIndexCounter$1 = 0;
7087            var firstChildFiber = reconcileChildFibersImpl(
7088              returnFiber,
7089              currentFirstChild,
7090              newChild,
7091              lanes
7092            );
7093            thenableState$1 = null;
7094            return firstChildFiber;
7095          } catch (x3) {
7096            if (x3 === SuspenseException || x3 === SuspenseActionException) throw x3;
7097            var fiber = createFiber(29, x3, null, returnFiber.mode);
7098            fiber.lanes = lanes;
7099            fiber.return = returnFiber;
7100            var debugInfo = fiber._debugInfo = currentDebugInfo;
7101            fiber._debugOwner = returnFiber._debugOwner;
7102            fiber._debugTask = returnFiber._debugTask;
7103            if (null != debugInfo) {
7104              for (var i3 = debugInfo.length - 1; 0 <= i3; i3--)
7105                if ("string" === typeof debugInfo[i3].stack) {
7106                  fiber._debugOwner = debugInfo[i3];
7107                  fiber._debugTask = debugInfo[i3].debugTask;
7108                  break;
7109                }
7110            }
7111            return fiber;
7112          } finally {
7113            currentDebugInfo = prevDebugInfo;
7114          }
7115        };
7116      }
7117      function validateSuspenseListNestedChild(childSlot, index) {
7118        var isAnArray = isArrayImpl(childSlot);
7119        childSlot = !isAnArray && "function" === typeof getIteratorFn(childSlot);
7120        return isAnArray || childSlot ? (isAnArray = isAnArray ? "array" : "iterable", console.error(
7121          "A nested %s was passed to row #%s in <SuspenseList />. Wrap it in an additional SuspenseList to configure its revealOrder: <SuspenseList revealOrder=...> ... <SuspenseList revealOrder=...>{%s}</SuspenseList> ... </SuspenseList>",
7122          isAnArray,
7123          index,
7124          isAnArray
7125        ), false) : true;
7126      }
7127      function initializeUpdateQueue(fiber) {
7128        fiber.updateQueue = {
7129          baseState: fiber.memoizedState,
7130          firstBaseUpdate: null,
7131          lastBaseUpdate: null,
7132          shared: { pending: null, lanes: 0, hiddenCallbacks: null },
7133          callbacks: null
7134        };
7135      }
7136      function cloneUpdateQueue(current2, workInProgress2) {
7137        current2 = current2.updateQueue;
7138        workInProgress2.updateQueue === current2 && (workInProgress2.updateQueue = {
7139          baseState: current2.baseState,
7140          firstBaseUpdate: current2.firstBaseUpdate,
7141          lastBaseUpdate: current2.lastBaseUpdate,
7142          shared: current2.shared,
7143          callbacks: null
7144        });
7145      }
7146      function createUpdate(lane) {
7147        return {
7148          lane,
7149          tag: UpdateState,
7150          payload: null,
7151          callback: null,
7152          next: null
7153        };
7154      }
7155      function enqueueUpdate(fiber, update, lane) {
7156        var updateQueue = fiber.updateQueue;
7157        if (null === updateQueue) return null;
7158        updateQueue = updateQueue.shared;
7159        if (currentlyProcessingQueue === updateQueue && !didWarnUpdateInsideUpdate) {
7160          var componentName2 = getComponentNameFromFiber(fiber);
7161          console.error(
7162            "An update (setState, replaceState, or forceUpdate) was scheduled from inside an update function. Update functions should be pure, with zero side-effects. Consider using componentDidUpdate or a callback.\n\nPlease update the following component: %s",
7163            componentName2
7164          );
7165          didWarnUpdateInsideUpdate = true;
7166        }
7167        if ((executionContext & RenderContext) !== NoContext)
7168          return componentName2 = updateQueue.pending, null === componentName2 ? update.next = update : (update.next = componentName2.next, componentName2.next = update), updateQueue.pending = update, update = getRootForUpdatedFiber(fiber), markUpdateLaneFromFiberToRoot(fiber, null, lane), update;
7169        enqueueUpdate$1(fiber, updateQueue, update, lane);
7170        return getRootForUpdatedFiber(fiber);
7171      }
7172      function entangleTransitions(root3, fiber, lane) {
7173        fiber = fiber.updateQueue;
7174        if (null !== fiber && (fiber = fiber.shared, 0 !== (lane & 4194048))) {
7175          var queueLanes = fiber.lanes;
7176          queueLanes &= root3.pendingLanes;
7177          lane |= queueLanes;
7178          fiber.lanes = lane;
7179          markRootEntangled(root3, lane);
7180        }
7181      }
7182      function enqueueCapturedUpdate(workInProgress2, capturedUpdate) {
7183        var queue = workInProgress2.updateQueue, current2 = workInProgress2.alternate;
7184        if (null !== current2 && (current2 = current2.updateQueue, queue === current2)) {
7185          var newFirst = null, newLast = null;
7186          queue = queue.firstBaseUpdate;
7187          if (null !== queue) {
7188            do {
7189              var clone = {
7190                lane: queue.lane,
7191                tag: queue.tag,
7192                payload: queue.payload,
7193                callback: null,
7194                next: null
7195              };
7196              null === newLast ? newFirst = newLast = clone : newLast = newLast.next = clone;
7197              queue = queue.next;
7198            } while (null !== queue);
7199            null === newLast ? newFirst = newLast = capturedUpdate : newLast = newLast.next = capturedUpdate;
7200          } else newFirst = newLast = capturedUpdate;
7201          queue = {
7202            baseState: current2.baseState,
7203            firstBaseUpdate: newFirst,
7204            lastBaseUpdate: newLast,
7205            shared: current2.shared,
7206            callbacks: current2.callbacks
7207          };
7208          workInProgress2.updateQueue = queue;
7209          return;
7210        }
7211        workInProgress2 = queue.lastBaseUpdate;
7212        null === workInProgress2 ? queue.firstBaseUpdate = capturedUpdate : workInProgress2.next = capturedUpdate;
7213        queue.lastBaseUpdate = capturedUpdate;
7214      }
7215      function suspendIfUpdateReadFromEntangledAsyncAction() {
7216        if (didReadFromEntangledAsyncAction) {
7217          var entangledActionThenable = currentEntangledActionThenable;
7218          if (null !== entangledActionThenable) throw entangledActionThenable;
7219        }
7220      }
7221      function processUpdateQueue(workInProgress2, props, instance$jscomp$0, renderLanes2) {
7222        didReadFromEntangledAsyncAction = false;
7223        var queue = workInProgress2.updateQueue;
7224        hasForceUpdate = false;
7225        currentlyProcessingQueue = queue.shared;
7226        var firstBaseUpdate = queue.firstBaseUpdate, lastBaseUpdate = queue.lastBaseUpdate, pendingQueue = queue.shared.pending;
7227        if (null !== pendingQueue) {
7228          queue.shared.pending = null;
7229          var lastPendingUpdate = pendingQueue, firstPendingUpdate = lastPendingUpdate.next;
7230          lastPendingUpdate.next = null;
7231          null === lastBaseUpdate ? firstBaseUpdate = firstPendingUpdate : lastBaseUpdate.next = firstPendingUpdate;
7232          lastBaseUpdate = lastPendingUpdate;
7233          var current2 = workInProgress2.alternate;
7234          null !== current2 && (current2 = current2.updateQueue, pendingQueue = current2.lastBaseUpdate, pendingQueue !== lastBaseUpdate && (null === pendingQueue ? current2.firstBaseUpdate = firstPendingUpdate : pendingQueue.next = firstPendingUpdate, current2.lastBaseUpdate = lastPendingUpdate));
7235        }
7236        if (null !== firstBaseUpdate) {
7237          var newState = queue.baseState;
7238          lastBaseUpdate = 0;
7239          current2 = firstPendingUpdate = lastPendingUpdate = null;
7240          pendingQueue = firstBaseUpdate;
7241          do {
7242            var updateLane = pendingQueue.lane & -536870913, isHiddenUpdate = updateLane !== pendingQueue.lane;
7243            if (isHiddenUpdate ? (workInProgressRootRenderLanes & updateLane) === updateLane : (renderLanes2 & updateLane) === updateLane) {
7244              0 !== updateLane && updateLane === currentEntangledLane && (didReadFromEntangledAsyncAction = true);
7245              null !== current2 && (current2 = current2.next = {
7246                lane: 0,
7247                tag: pendingQueue.tag,
7248                payload: pendingQueue.payload,
7249                callback: null,
7250                next: null
7251              });
7252              a: {
7253                updateLane = workInProgress2;
7254                var partialState = pendingQueue;
7255                var nextProps = props, instance = instance$jscomp$0;
7256                switch (partialState.tag) {
7257                  case ReplaceState:
7258                    partialState = partialState.payload;
7259                    if ("function" === typeof partialState) {
7260                      isDisallowedContextReadInDEV = true;
7261                      var nextState = partialState.call(
7262                        instance,
7263                        newState,
7264                        nextProps
7265                      );
7266                      if (updateLane.mode & StrictLegacyMode) {
7267                        setIsStrictModeForDevtools(true);
7268                        try {
7269                          partialState.call(instance, newState, nextProps);
7270                        } finally {
7271                          setIsStrictModeForDevtools(false);
7272                        }
7273                      }
7274                      isDisallowedContextReadInDEV = false;
7275                      newState = nextState;
7276                      break a;
7277                    }
7278                    newState = partialState;
7279                    break a;
7280                  case CaptureUpdate:
7281                    updateLane.flags = updateLane.flags & -65537 | 128;
7282                  case UpdateState:
7283                    nextState = partialState.payload;
7284                    if ("function" === typeof nextState) {
7285                      isDisallowedContextReadInDEV = true;
7286                      partialState = nextState.call(
7287                        instance,
7288                        newState,
7289                        nextProps
7290                      );
7291                      if (updateLane.mode & StrictLegacyMode) {
7292                        setIsStrictModeForDevtools(true);
7293                        try {
7294                          nextState.call(instance, newState, nextProps);
7295                        } finally {
7296                          setIsStrictModeForDevtools(false);
7297                        }
7298                      }
7299                      isDisallowedContextReadInDEV = false;
7300                    } else partialState = nextState;
7301                    if (null === partialState || void 0 === partialState) break a;
7302                    newState = assign({}, newState, partialState);
7303                    break a;
7304                  case ForceUpdate:
7305                    hasForceUpdate = true;
7306                }
7307              }
7308              updateLane = pendingQueue.callback;
7309              null !== updateLane && (workInProgress2.flags |= 64, isHiddenUpdate && (workInProgress2.flags |= 8192), isHiddenUpdate = queue.callbacks, null === isHiddenUpdate ? queue.callbacks = [updateLane] : isHiddenUpdate.push(updateLane));
7310            } else
7311              isHiddenUpdate = {
7312                lane: updateLane,
7313                tag: pendingQueue.tag,
7314                payload: pendingQueue.payload,
7315                callback: pendingQueue.callback,
7316                next: null
7317              }, null === current2 ? (firstPendingUpdate = current2 = isHiddenUpdate, lastPendingUpdate = newState) : current2 = current2.next = isHiddenUpdate, lastBaseUpdate |= updateLane;
7318            pendingQueue = pendingQueue.next;
7319            if (null === pendingQueue)
7320              if (pendingQueue = queue.shared.pending, null === pendingQueue)
7321                break;
7322              else
7323                isHiddenUpdate = pendingQueue, pendingQueue = isHiddenUpdate.next, isHiddenUpdate.next = null, queue.lastBaseUpdate = isHiddenUpdate, queue.shared.pending = null;
7324          } while (1);
7325          null === current2 && (lastPendingUpdate = newState);
7326          queue.baseState = lastPendingUpdate;
7327          queue.firstBaseUpdate = firstPendingUpdate;
7328          queue.lastBaseUpdate = current2;
7329          null === firstBaseUpdate && (queue.shared.lanes = 0);
7330          workInProgressRootSkippedLanes |= lastBaseUpdate;
7331          workInProgress2.lanes = lastBaseUpdate;
7332          workInProgress2.memoizedState = newState;
7333        }
7334        currentlyProcessingQueue = null;
7335      }
7336      function callCallback(callback, context) {
7337        if ("function" !== typeof callback)
7338          throw Error(
7339            "Invalid argument passed as callback. Expected a function. Instead received: " + callback
7340          );
7341        callback.call(context);
7342      }
7343      function commitHiddenCallbacks(updateQueue, context) {
7344        var hiddenCallbacks = updateQueue.shared.hiddenCallbacks;
7345        if (null !== hiddenCallbacks)
7346          for (updateQueue.shared.hiddenCallbacks = null, updateQueue = 0; updateQueue < hiddenCallbacks.length; updateQueue++)
7347            callCallback(hiddenCallbacks[updateQueue], context);
7348      }
7349      function commitCallbacks(updateQueue, context) {
7350        var callbacks = updateQueue.callbacks;
7351        if (null !== callbacks)
7352          for (updateQueue.callbacks = null, updateQueue = 0; updateQueue < callbacks.length; updateQueue++)
7353            callCallback(callbacks[updateQueue], context);
7354      }
7355      function pushHiddenContext(fiber, context) {
7356        var prevEntangledRenderLanes = entangledRenderLanes;
7357        push(prevEntangledRenderLanesCursor, prevEntangledRenderLanes, fiber);
7358        push(currentTreeHiddenStackCursor, context, fiber);
7359        entangledRenderLanes = prevEntangledRenderLanes | context.baseLanes;
7360      }
7361      function reuseHiddenContextOnStack(fiber) {
7362        push(prevEntangledRenderLanesCursor, entangledRenderLanes, fiber);
7363        push(
7364          currentTreeHiddenStackCursor,
7365          currentTreeHiddenStackCursor.current,
7366          fiber
7367        );
7368      }
7369      function popHiddenContext(fiber) {
7370        entangledRenderLanes = prevEntangledRenderLanesCursor.current;
7371        pop(currentTreeHiddenStackCursor, fiber);
7372        pop(prevEntangledRenderLanesCursor, fiber);
7373      }
7374      function pushPrimaryTreeSuspenseHandler(handler) {
7375        var current2 = handler.alternate;
7376        push(
7377          suspenseStackCursor,
7378          suspenseStackCursor.current & SubtreeSuspenseContextMask,
7379          handler
7380        );
7381        push(suspenseHandlerStackCursor, handler, handler);
7382        null === shellBoundary && (null === current2 || null !== currentTreeHiddenStackCursor.current ? shellBoundary = handler : null !== current2.memoizedState && (shellBoundary = handler));
7383      }
7384      function pushDehydratedActivitySuspenseHandler(fiber) {
7385        push(suspenseStackCursor, suspenseStackCursor.current, fiber);
7386        push(suspenseHandlerStackCursor, fiber, fiber);
7387        null === shellBoundary && (shellBoundary = fiber);
7388      }
7389      function pushOffscreenSuspenseHandler(fiber) {
7390        22 === fiber.tag ? (push(suspenseStackCursor, suspenseStackCursor.current, fiber), push(suspenseHandlerStackCursor, fiber, fiber), null === shellBoundary && (shellBoundary = fiber)) : reuseSuspenseHandlerOnStack(fiber);
7391      }
7392      function reuseSuspenseHandlerOnStack(fiber) {
7393        push(suspenseStackCursor, suspenseStackCursor.current, fiber);
7394        push(
7395          suspenseHandlerStackCursor,
7396          suspenseHandlerStackCursor.current,
7397          fiber
7398        );
7399      }
7400      function popSuspenseHandler(fiber) {
7401        pop(suspenseHandlerStackCursor, fiber);
7402        shellBoundary === fiber && (shellBoundary = null);
7403        pop(suspenseStackCursor, fiber);
7404      }
7405      function findFirstSuspended(row) {
7406        for (var node = row; null !== node; ) {
7407          if (13 === node.tag) {
7408            var state = node.memoizedState;
7409            if (null !== state && (state = state.dehydrated, null === state || isSuspenseInstancePending(state) || isSuspenseInstanceFallback(state)))
7410              return node;
7411          } else if (19 === node.tag && ("forwards" === node.memoizedProps.revealOrder || "backwards" === node.memoizedProps.revealOrder || "unstable_legacy-backwards" === node.memoizedProps.revealOrder || "together" === node.memoizedProps.revealOrder)) {
7412            if (0 !== (node.flags & 128)) return node;
7413          } else if (null !== node.child) {
7414            node.child.return = node;
7415            node = node.child;
7416            continue;
7417          }
7418          if (node === row) break;
7419          for (; null === node.sibling; ) {
7420            if (null === node.return || node.return === row) return null;
7421            node = node.return;
7422          }
7423          node.sibling.return = node.return;
7424          node = node.sibling;
7425        }
7426        return null;
7427      }
7428      function mountHookTypesDev() {
7429        var hookName = currentHookNameInDev;
7430        null === hookTypesDev ? hookTypesDev = [hookName] : hookTypesDev.push(hookName);
7431      }
7432      function updateHookTypesDev() {
7433        var hookName = currentHookNameInDev;
7434        if (null !== hookTypesDev && (hookTypesUpdateIndexDev++, hookTypesDev[hookTypesUpdateIndexDev] !== hookName)) {
7435          var componentName2 = getComponentNameFromFiber(currentlyRenderingFiber);
7436          if (!didWarnAboutMismatchedHooksForComponent.has(componentName2) && (didWarnAboutMismatchedHooksForComponent.add(componentName2), null !== hookTypesDev)) {
7437            for (var table = "", i3 = 0; i3 <= hookTypesUpdateIndexDev; i3++) {
7438              var oldHookName = hookTypesDev[i3], newHookName = i3 === hookTypesUpdateIndexDev ? hookName : oldHookName;
7439              for (oldHookName = i3 + 1 + ". " + oldHookName; 30 > oldHookName.length; )
7440                oldHookName += " ";
7441              oldHookName += newHookName + "\n";
7442              table += oldHookName;
7443            }
7444            console.error(
7445              "React has detected a change in the order of Hooks called by %s. This will lead to bugs and errors if not fixed. For more information, read the Rules of Hooks: https://react.dev/link/rules-of-hooks\n\n   Previous render            Next render\n   ------------------------------------------------------\n%s   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
7446              componentName2,
7447              table
7448            );
7449          }
7450        }
7451      }
7452      function checkDepsAreArrayDev(deps) {
7453        void 0 === deps || null === deps || isArrayImpl(deps) || console.error(
7454          "%s received a final argument that is not an array (instead, received `%s`). When specified, the final argument must be an array.",
7455          currentHookNameInDev,
7456          typeof deps
7457        );
7458      }
7459      function warnOnUseFormStateInDev() {
7460        var componentName2 = getComponentNameFromFiber(currentlyRenderingFiber);
7461        didWarnAboutUseFormState.has(componentName2) || (didWarnAboutUseFormState.add(componentName2), console.error(
7462          "ReactDOM.useFormState has been renamed to React.useActionState. Please update %s to use React.useActionState.",
7463          componentName2
7464        ));
7465      }
7466      function throwInvalidHookError() {
7467        throw Error(
7468          "Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem."
7469        );
7470      }
7471      function areHookInputsEqual(nextDeps, prevDeps) {
7472        if (ignorePreviousDependencies) return false;
7473        if (null === prevDeps)
7474          return console.error(
7475            "%s received a final argument during this render, but not during the previous render. Even though the final argument is optional, its type cannot change between renders.",
7476            currentHookNameInDev
7477          ), false;
7478        nextDeps.length !== prevDeps.length && console.error(
7479          "The final argument passed to %s changed size between renders. The order and size of this array must remain constant.\n\nPrevious: %s\nIncoming: %s",
7480          currentHookNameInDev,
7481          "[" + prevDeps.join(", ") + "]",
7482          "[" + nextDeps.join(", ") + "]"
7483        );
7484        for (var i3 = 0; i3 < prevDeps.length && i3 < nextDeps.length; i3++)
7485          if (!objectIs(nextDeps[i3], prevDeps[i3])) return false;
7486        return true;
7487      }
7488      function renderWithHooks(current2, workInProgress2, Component, props, secondArg, nextRenderLanes) {
7489        renderLanes = nextRenderLanes;
7490        currentlyRenderingFiber = workInProgress2;
7491        hookTypesDev = null !== current2 ? current2._debugHookTypes : null;
7492        hookTypesUpdateIndexDev = -1;
7493        ignorePreviousDependencies = null !== current2 && current2.type !== workInProgress2.type;
7494        if ("[object AsyncFunction]" === Object.prototype.toString.call(Component) || "[object AsyncGeneratorFunction]" === Object.prototype.toString.call(Component))
7495          nextRenderLanes = getComponentNameFromFiber(currentlyRenderingFiber), didWarnAboutAsyncClientComponent.has(nextRenderLanes) || (didWarnAboutAsyncClientComponent.add(nextRenderLanes), console.error(
7496            "%s is an async Client Component. Only Server Components can be async at the moment. This error is often caused by accidentally adding `'use client'` to a module that was originally written for the server.",
7497            null === nextRenderLanes ? "An unknown Component" : "<" + nextRenderLanes + ">"
7498          ));
7499        workInProgress2.memoizedState = null;
7500        workInProgress2.updateQueue = null;
7501        workInProgress2.lanes = 0;
7502        ReactSharedInternals.H = null !== current2 && null !== current2.memoizedState ? HooksDispatcherOnUpdateInDEV : null !== hookTypesDev ? HooksDispatcherOnMountWithHookTypesInDEV : HooksDispatcherOnMountInDEV;
7503        shouldDoubleInvokeUserFnsInHooksDEV = nextRenderLanes = (workInProgress2.mode & StrictLegacyMode) !== NoMode;
7504        var children = callComponentInDEV(Component, props, secondArg);
7505        shouldDoubleInvokeUserFnsInHooksDEV = false;
7506        didScheduleRenderPhaseUpdateDuringThisPass && (children = renderWithHooksAgain(
7507          workInProgress2,
7508          Component,
7509          props,
7510          secondArg
7511        ));
7512        if (nextRenderLanes) {
7513          setIsStrictModeForDevtools(true);
7514          try {
7515            children = renderWithHooksAgain(
7516              workInProgress2,
7517              Component,
7518              props,
7519              secondArg
7520            );
7521          } finally {
7522            setIsStrictModeForDevtools(false);
7523          }
7524        }
7525        finishRenderingHooks(current2, workInProgress2);
7526        return children;
7527      }
7528      function finishRenderingHooks(current2, workInProgress2) {
7529        workInProgress2._debugHookTypes = hookTypesDev;
7530        null === workInProgress2.dependencies ? null !== thenableState && (workInProgress2.dependencies = {
7531          lanes: 0,
7532          firstContext: null,
7533          _debugThenableState: thenableState
7534        }) : workInProgress2.dependencies._debugThenableState = thenableState;
7535        ReactSharedInternals.H = ContextOnlyDispatcher;
7536        var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;
7537        renderLanes = 0;
7538        hookTypesDev = currentHookNameInDev = workInProgressHook = currentHook = currentlyRenderingFiber = null;
7539        hookTypesUpdateIndexDev = -1;
7540        null !== current2 && (current2.flags & 65011712) !== (workInProgress2.flags & 65011712) && console.error(
7541          "Internal React error: Expected static flag was missing. Please notify the React team."
7542        );
7543        didScheduleRenderPhaseUpdate = false;
7544        thenableIndexCounter = 0;
7545        thenableState = null;
7546        if (didRenderTooFewHooks)
7547          throw Error(
7548            "Rendered fewer hooks than expected. This may be caused by an accidental early return statement."
7549          );
7550        null === current2 || didReceiveUpdate || (current2 = current2.dependencies, null !== current2 && checkIfContextChanged(current2) && (didReceiveUpdate = true));
7551        needsToResetSuspendedThenableDEV ? (needsToResetSuspendedThenableDEV = false, current2 = true) : current2 = false;
7552        current2 && (workInProgress2 = getComponentNameFromFiber(workInProgress2) || "Unknown", didWarnAboutUseWrappedInTryCatch.has(workInProgress2) || didWarnAboutAsyncClientComponent.has(workInProgress2) || (didWarnAboutUseWrappedInTryCatch.add(workInProgress2), console.error(
7553          "`use` was called from inside a try/catch block. This is not allowed and can lead to unexpected behavior. To handle errors triggered by `use`, wrap your component in a error boundary."
7554        )));
7555      }
7556      function renderWithHooksAgain(workInProgress2, Component, props, secondArg) {
7557        currentlyRenderingFiber = workInProgress2;
7558        var numberOfReRenders = 0;
7559        do {
7560          didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null);
7561          thenableIndexCounter = 0;
7562          didScheduleRenderPhaseUpdateDuringThisPass = false;
7563          if (numberOfReRenders >= RE_RENDER_LIMIT)
7564            throw Error(
7565              "Too many re-renders. React limits the number of renders to prevent an infinite loop."
7566            );
7567          numberOfReRenders += 1;
7568          ignorePreviousDependencies = false;
7569          workInProgressHook = currentHook = null;
7570          if (null != workInProgress2.updateQueue) {
7571            var children = workInProgress2.updateQueue;
7572            children.lastEffect = null;
7573            children.events = null;
7574            children.stores = null;
7575            null != children.memoCache && (children.memoCache.index = 0);
7576          }
7577          hookTypesUpdateIndexDev = -1;
7578          ReactSharedInternals.H = HooksDispatcherOnRerenderInDEV;
7579          children = callComponentInDEV(Component, props, secondArg);
7580        } while (didScheduleRenderPhaseUpdateDuringThisPass);
7581        return children;
7582      }
7583      function TransitionAwareHostComponent() {
7584        var dispatcher = ReactSharedInternals.H, maybeThenable = dispatcher.useState()[0];
7585        maybeThenable = "function" === typeof maybeThenable.then ? useThenable(maybeThenable) : maybeThenable;
7586        dispatcher = dispatcher.useState()[0];
7587        (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher && (currentlyRenderingFiber.flags |= 1024);
7588        return maybeThenable;
7589      }
7590      function checkDidRenderIdHook() {
7591        var didRenderIdHook = 0 !== localIdCounter;
7592        localIdCounter = 0;
7593        return didRenderIdHook;
7594      }
7595      function bailoutHooks(current2, workInProgress2, lanes) {
7596        workInProgress2.updateQueue = current2.updateQueue;
7597        workInProgress2.flags = (workInProgress2.mode & StrictEffectsMode) !== NoMode ? workInProgress2.flags & -402655237 : workInProgress2.flags & -2053;
7598        current2.lanes &= ~lanes;
7599      }
7600      function resetHooksOnUnwind(workInProgress2) {
7601        if (didScheduleRenderPhaseUpdate) {
7602          for (workInProgress2 = workInProgress2.memoizedState; null !== workInProgress2; ) {
7603            var queue = workInProgress2.queue;
7604            null !== queue && (queue.pending = null);
7605            workInProgress2 = workInProgress2.next;
7606          }
7607          didScheduleRenderPhaseUpdate = false;
7608        }
7609        renderLanes = 0;
7610        hookTypesDev = workInProgressHook = currentHook = currentlyRenderingFiber = null;
7611        hookTypesUpdateIndexDev = -1;
7612        currentHookNameInDev = null;
7613        didScheduleRenderPhaseUpdateDuringThisPass = false;
7614        thenableIndexCounter = localIdCounter = 0;
7615        thenableState = null;
7616      }
7617      function mountWorkInProgressHook() {
7618        var hook = {
7619          memoizedState: null,
7620          baseState: null,
7621          baseQueue: null,
7622          queue: null,
7623          next: null
7624        };
7625        null === workInProgressHook ? currentlyRenderingFiber.memoizedState = workInProgressHook = hook : workInProgressHook = workInProgressHook.next = hook;
7626        return workInProgressHook;
7627      }
7628      function updateWorkInProgressHook() {
7629        if (null === currentHook) {
7630          var nextCurrentHook = currentlyRenderingFiber.alternate;
7631          nextCurrentHook = null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;
7632        } else nextCurrentHook = currentHook.next;
7633        var nextWorkInProgressHook = null === workInProgressHook ? currentlyRenderingFiber.memoizedState : workInProgressHook.next;
7634        if (null !== nextWorkInProgressHook)
7635          workInProgressHook = nextWorkInProgressHook, currentHook = nextCurrentHook;
7636        else {
7637          if (null === nextCurrentHook) {
7638            if (null === currentlyRenderingFiber.alternate)
7639              throw Error(
7640                "Update hook called on initial render. This is likely a bug in React. Please file an issue."
7641              );
7642            throw Error("Rendered more hooks than during the previous render.");
7643          }
7644          currentHook = nextCurrentHook;
7645          nextCurrentHook = {
7646            memoizedState: currentHook.memoizedState,
7647            baseState: currentHook.baseState,
7648            baseQueue: currentHook.baseQueue,
7649            queue: currentHook.queue,
7650            next: null
7651          };
7652          null === workInProgressHook ? currentlyRenderingFiber.memoizedState = workInProgressHook = nextCurrentHook : workInProgressHook = workInProgressHook.next = nextCurrentHook;
7653        }
7654        return workInProgressHook;
7655      }
7656      function createFunctionComponentUpdateQueue() {
7657        return { lastEffect: null, events: null, stores: null, memoCache: null };
7658      }
7659      function useThenable(thenable) {
7660        var index = thenableIndexCounter;
7661        thenableIndexCounter += 1;
7662        null === thenableState && (thenableState = createThenableState());
7663        thenable = trackUsedThenable(thenableState, thenable, index);
7664        index = currentlyRenderingFiber;
7665        null === (null === workInProgressHook ? index.memoizedState : workInProgressHook.next) && (index = index.alternate, ReactSharedInternals.H = null !== index && null !== index.memoizedState ? HooksDispatcherOnUpdateInDEV : HooksDispatcherOnMountInDEV);
7666        return thenable;
7667      }
7668      function use(usable) {
7669        if (null !== usable && "object" === typeof usable) {
7670          if ("function" === typeof usable.then) return useThenable(usable);
7671          if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);
7672        }
7673        throw Error("An unsupported type was passed to use(): " + String(usable));
7674      }
7675      function useMemoCache(size) {
7676        var memoCache = null, updateQueue = currentlyRenderingFiber.updateQueue;
7677        null !== updateQueue && (memoCache = updateQueue.memoCache);
7678        if (null == memoCache) {
7679          var current2 = currentlyRenderingFiber.alternate;
7680          null !== current2 && (current2 = current2.updateQueue, null !== current2 && (current2 = current2.memoCache, null != current2 && (memoCache = {
7681            data: current2.data.map(function(array) {
7682              return array.slice();
7683            }),
7684            index: 0
7685          })));
7686        }
7687        null == memoCache && (memoCache = { data: [], index: 0 });
7688        null === updateQueue && (updateQueue = createFunctionComponentUpdateQueue(), currentlyRenderingFiber.updateQueue = updateQueue);
7689        updateQueue.memoCache = memoCache;
7690        updateQueue = memoCache.data[memoCache.index];
7691        if (void 0 === updateQueue || ignorePreviousDependencies)
7692          for (updateQueue = memoCache.data[memoCache.index] = Array(size), current2 = 0; current2 < size; current2++)
7693            updateQueue[current2] = REACT_MEMO_CACHE_SENTINEL;
7694        else
7695          updateQueue.length !== size && console.error(
7696            "Expected a constant size argument for each invocation of useMemoCache. The previous cache was allocated with size %s but size %s was requested.",
7697            updateQueue.length,
7698            size
7699          );
7700        memoCache.index++;
7701        return updateQueue;
7702      }
7703      function basicStateReducer(state, action) {
7704        return "function" === typeof action ? action(state) : action;
7705      }
7706      function mountReducer(reducer, initialArg, init) {
7707        var hook = mountWorkInProgressHook();
7708        if (void 0 !== init) {
7709          var initialState = init(initialArg);
7710          if (shouldDoubleInvokeUserFnsInHooksDEV) {
7711            setIsStrictModeForDevtools(true);
7712            try {
7713              init(initialArg);
7714            } finally {
7715              setIsStrictModeForDevtools(false);
7716            }
7717          }
7718        } else initialState = initialArg;
7719        hook.memoizedState = hook.baseState = initialState;
7720        reducer = {
7721          pending: null,
7722          lanes: 0,
7723          dispatch: null,
7724          lastRenderedReducer: reducer,
7725          lastRenderedState: initialState
7726        };
7727        hook.queue = reducer;
7728        reducer = reducer.dispatch = dispatchReducerAction.bind(
7729          null,
7730          currentlyRenderingFiber,
7731          reducer
7732        );
7733        return [hook.memoizedState, reducer];
7734      }
7735      function updateReducer(reducer) {
7736        var hook = updateWorkInProgressHook();
7737        return updateReducerImpl(hook, currentHook, reducer);
7738      }
7739      function updateReducerImpl(hook, current2, reducer) {
7740        var queue = hook.queue;
7741        if (null === queue)
7742          throw Error(
7743            "Should have a queue. You are likely calling Hooks conditionally, which is not allowed. (https://react.dev/link/invalid-hook-call)"
7744          );
7745        queue.lastRenderedReducer = reducer;
7746        var baseQueue = hook.baseQueue, pendingQueue = queue.pending;
7747        if (null !== pendingQueue) {
7748          if (null !== baseQueue) {
7749            var baseFirst = baseQueue.next;
7750            baseQueue.next = pendingQueue.next;
7751            pendingQueue.next = baseFirst;
7752          }
7753          current2.baseQueue !== baseQueue && console.error(
7754            "Internal error: Expected work-in-progress queue to be a clone. This is a bug in React."
7755          );
7756          current2.baseQueue = baseQueue = pendingQueue;
7757          queue.pending = null;
7758        }
7759        pendingQueue = hook.baseState;
7760        if (null === baseQueue) hook.memoizedState = pendingQueue;
7761        else {
7762          current2 = baseQueue.next;
7763          var newBaseQueueFirst = baseFirst = null, newBaseQueueLast = null, update = current2, didReadFromEntangledAsyncAction2 = false;
7764          do {
7765            var updateLane = update.lane & -536870913;
7766            if (updateLane !== update.lane ? (workInProgressRootRenderLanes & updateLane) === updateLane : (renderLanes & updateLane) === updateLane) {
7767              var revertLane = update.revertLane;
7768              if (0 === revertLane)
7769                null !== newBaseQueueLast && (newBaseQueueLast = newBaseQueueLast.next = {
7770                  lane: 0,
7771                  revertLane: 0,
7772                  gesture: null,
7773                  action: update.action,
7774                  hasEagerState: update.hasEagerState,
7775                  eagerState: update.eagerState,
7776                  next: null
7777                }), updateLane === currentEntangledLane && (didReadFromEntangledAsyncAction2 = true);
7778              else if ((renderLanes & revertLane) === revertLane) {
7779                update = update.next;
7780                revertLane === currentEntangledLane && (didReadFromEntangledAsyncAction2 = true);
7781                continue;
7782              } else
7783                updateLane = {
7784                  lane: 0,
7785                  revertLane: update.revertLane,
7786                  gesture: null,
7787                  action: update.action,
7788                  hasEagerState: update.hasEagerState,
7789                  eagerState: update.eagerState,
7790                  next: null
7791                }, null === newBaseQueueLast ? (newBaseQueueFirst = newBaseQueueLast = updateLane, baseFirst = pendingQueue) : newBaseQueueLast = newBaseQueueLast.next = updateLane, currentlyRenderingFiber.lanes |= revertLane, workInProgressRootSkippedLanes |= revertLane;
7792              updateLane = update.action;
7793              shouldDoubleInvokeUserFnsInHooksDEV && reducer(pendingQueue, updateLane);
7794              pendingQueue = update.hasEagerState ? update.eagerState : reducer(pendingQueue, updateLane);
7795            } else
7796              revertLane = {
7797                lane: updateLane,
7798                revertLane: update.revertLane,
7799                gesture: update.gesture,
7800                action: update.action,
7801                hasEagerState: update.hasEagerState,
7802                eagerState: update.eagerState,
7803                next: null
7804              }, null === newBaseQueueLast ? (newBaseQueueFirst = newBaseQueueLast = revertLane, baseFirst = pendingQueue) : newBaseQueueLast = newBaseQueueLast.next = revertLane, currentlyRenderingFiber.lanes |= updateLane, workInProgressRootSkippedLanes |= updateLane;
7805            update = update.next;
7806          } while (null !== update && update !== current2);
7807          null === newBaseQueueLast ? baseFirst = pendingQueue : newBaseQueueLast.next = newBaseQueueFirst;
7808          if (!objectIs(pendingQueue, hook.memoizedState) && (didReceiveUpdate = true, didReadFromEntangledAsyncAction2 && (reducer = currentEntangledActionThenable, null !== reducer)))
7809            throw reducer;
7810          hook.memoizedState = pendingQueue;
7811          hook.baseState = baseFirst;
7812          hook.baseQueue = newBaseQueueLast;
7813          queue.lastRenderedState = pendingQueue;
7814        }
7815        null === baseQueue && (queue.lanes = 0);
7816        return [hook.memoizedState, queue.dispatch];
7817      }
7818      function rerenderReducer(reducer) {
7819        var hook = updateWorkInProgressHook(), queue = hook.queue;
7820        if (null === queue)
7821          throw Error(
7822            "Should have a queue. You are likely calling Hooks conditionally, which is not allowed. (https://react.dev/link/invalid-hook-call)"
7823          );
7824        queue.lastRenderedReducer = reducer;
7825        var dispatch2 = queue.dispatch, lastRenderPhaseUpdate = queue.pending, newState = hook.memoizedState;
7826        if (null !== lastRenderPhaseUpdate) {
7827          queue.pending = null;
7828          var update = lastRenderPhaseUpdate = lastRenderPhaseUpdate.next;
7829          do
7830            newState = reducer(newState, update.action), update = update.next;
7831          while (update !== lastRenderPhaseUpdate);
7832          objectIs(newState, hook.memoizedState) || (didReceiveUpdate = true);
7833          hook.memoizedState = newState;
7834          null === hook.baseQueue && (hook.baseState = newState);
7835          queue.lastRenderedState = newState;
7836        }
7837        return [newState, dispatch2];
7838      }
7839      function mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {
7840        var fiber = currentlyRenderingFiber, hook = mountWorkInProgressHook();
7841        if (isHydrating) {
7842          if (void 0 === getServerSnapshot)
7843            throw Error(
7844              "Missing getServerSnapshot, which is required for server-rendered content. Will revert to client rendering."
7845            );
7846          var nextSnapshot = getServerSnapshot();
7847          didWarnUncachedGetSnapshot || nextSnapshot === getServerSnapshot() || (console.error(
7848            "The result of getServerSnapshot should be cached to avoid an infinite loop"
7849          ), didWarnUncachedGetSnapshot = true);
7850        } else {
7851          nextSnapshot = getSnapshot();
7852          didWarnUncachedGetSnapshot || (getServerSnapshot = getSnapshot(), objectIs(nextSnapshot, getServerSnapshot) || (console.error(
7853            "The result of getSnapshot should be cached to avoid an infinite loop"
7854          ), didWarnUncachedGetSnapshot = true));
7855          if (null === workInProgressRoot)
7856            throw Error(
7857              "Expected a work-in-progress root. This is a bug in React. Please file an issue."
7858            );
7859          0 !== (workInProgressRootRenderLanes & 127) || pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);
7860        }
7861        hook.memoizedState = nextSnapshot;
7862        getServerSnapshot = { value: nextSnapshot, getSnapshot };
7863        hook.queue = getServerSnapshot;
7864        mountEffect(
7865          subscribeToStore.bind(null, fiber, getServerSnapshot, subscribe),
7866          [subscribe]
7867        );
7868        fiber.flags |= 2048;
7869        pushSimpleEffect(
7870          HasEffect | Passive,
7871          { destroy: void 0 },
7872          updateStoreInstance.bind(
7873            null,
7874            fiber,
7875            getServerSnapshot,
7876            nextSnapshot,
7877            getSnapshot
7878          ),
7879          null
7880        );
7881        return nextSnapshot;
7882      }
7883      function updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {
7884        var fiber = currentlyRenderingFiber, hook = updateWorkInProgressHook(), isHydrating$jscomp$0 = isHydrating;
7885        if (isHydrating$jscomp$0) {
7886          if (void 0 === getServerSnapshot)
7887            throw Error(
7888              "Missing getServerSnapshot, which is required for server-rendered content. Will revert to client rendering."
7889            );
7890          getServerSnapshot = getServerSnapshot();
7891        } else if (getServerSnapshot = getSnapshot(), !didWarnUncachedGetSnapshot) {
7892          var cachedSnapshot = getSnapshot();
7893          objectIs(getServerSnapshot, cachedSnapshot) || (console.error(
7894            "The result of getSnapshot should be cached to avoid an infinite loop"
7895          ), didWarnUncachedGetSnapshot = true);
7896        }
7897        if (cachedSnapshot = !objectIs(
7898          (currentHook || hook).memoizedState,
7899          getServerSnapshot
7900        ))
7901          hook.memoizedState = getServerSnapshot, didReceiveUpdate = true;
7902        hook = hook.queue;
7903        var create = subscribeToStore.bind(null, fiber, hook, subscribe);
7904        updateEffectImpl(2048, Passive, create, [subscribe]);
7905        if (hook.getSnapshot !== getSnapshot || cachedSnapshot || null !== workInProgressHook && workInProgressHook.memoizedState.tag & HasEffect) {
7906          fiber.flags |= 2048;
7907          pushSimpleEffect(
7908            HasEffect | Passive,
7909            { destroy: void 0 },
7910            updateStoreInstance.bind(
7911              null,
7912              fiber,
7913              hook,
7914              getServerSnapshot,
7915              getSnapshot
7916            ),
7917            null
7918          );
7919          if (null === workInProgressRoot)
7920            throw Error(
7921              "Expected a work-in-progress root. This is a bug in React. Please file an issue."
7922            );
7923          isHydrating$jscomp$0 || 0 !== (renderLanes & 127) || pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);
7924        }
7925        return getServerSnapshot;
7926      }
7927      function pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {
7928        fiber.flags |= 16384;
7929        fiber = { getSnapshot, value: renderedSnapshot };
7930        getSnapshot = currentlyRenderingFiber.updateQueue;
7931        null === getSnapshot ? (getSnapshot = createFunctionComponentUpdateQueue(), currentlyRenderingFiber.updateQueue = getSnapshot, getSnapshot.stores = [fiber]) : (renderedSnapshot = getSnapshot.stores, null === renderedSnapshot ? getSnapshot.stores = [fiber] : renderedSnapshot.push(fiber));
7932      }
7933      function updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {
7934        inst.value = nextSnapshot;
7935        inst.getSnapshot = getSnapshot;
7936        checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);
7937      }
7938      function subscribeToStore(fiber, inst, subscribe) {
7939        return subscribe(function() {
7940          checkIfSnapshotChanged(inst) && (startUpdateTimerByLane(2, "updateSyncExternalStore()", fiber), forceStoreRerender(fiber));
7941        });
7942      }
7943      function checkIfSnapshotChanged(inst) {
7944        var latestGetSnapshot = inst.getSnapshot;
7945        inst = inst.value;
7946        try {
7947          var nextValue = latestGetSnapshot();
7948          return !objectIs(inst, nextValue);
7949        } catch (error2) {
7950          return true;
7951        }
7952      }
7953      function forceStoreRerender(fiber) {
7954        var root3 = enqueueConcurrentRenderForLane(fiber, 2);
7955        null !== root3 && scheduleUpdateOnFiber(root3, fiber, 2);
7956      }
7957      function mountStateImpl(initialState) {
7958        var hook = mountWorkInProgressHook();
7959        if ("function" === typeof initialState) {
7960          var initialStateInitializer = initialState;
7961          initialState = initialStateInitializer();
7962          if (shouldDoubleInvokeUserFnsInHooksDEV) {
7963            setIsStrictModeForDevtools(true);
7964            try {
7965              initialStateInitializer();
7966            } finally {
7967              setIsStrictModeForDevtools(false);
7968            }
7969          }
7970        }
7971        hook.memoizedState = hook.baseState = initialState;
7972        hook.queue = {
7973          pending: null,
7974          lanes: 0,
7975          dispatch: null,
7976          lastRenderedReducer: basicStateReducer,
7977          lastRenderedState: initialState
7978        };
7979        return hook;
7980      }
7981      function mountState(initialState) {
7982        initialState = mountStateImpl(initialState);
7983        var queue = initialState.queue, dispatch2 = dispatchSetState.bind(null, currentlyRenderingFiber, queue);
7984        queue.dispatch = dispatch2;
7985        return [initialState.memoizedState, dispatch2];
7986      }
7987      function mountOptimistic(passthrough) {
7988        var hook = mountWorkInProgressHook();
7989        hook.memoizedState = hook.baseState = passthrough;
7990        var queue = {
7991          pending: null,
7992          lanes: 0,
7993          dispatch: null,
7994          lastRenderedReducer: null,
7995          lastRenderedState: null
7996        };
7997        hook.queue = queue;
7998        hook = dispatchOptimisticSetState.bind(
7999          null,
8000          currentlyRenderingFiber,
8001          true,
8002          queue
8003        );
8004        queue.dispatch = hook;
8005        return [passthrough, hook];
8006      }
8007      function updateOptimistic(passthrough, reducer) {
8008        var hook = updateWorkInProgressHook();
8009        return updateOptimisticImpl(hook, currentHook, passthrough, reducer);
8010      }
8011      function updateOptimisticImpl(hook, current2, passthrough, reducer) {
8012        hook.baseState = passthrough;
8013        return updateReducerImpl(
8014          hook,
8015          currentHook,
8016          "function" === typeof reducer ? reducer : basicStateReducer
8017        );
8018      }
8019      function rerenderOptimistic(passthrough, reducer) {
8020        var hook = updateWorkInProgressHook();
8021        if (null !== currentHook)
8022          return updateOptimisticImpl(hook, currentHook, passthrough, reducer);
8023        hook.baseState = passthrough;
8024        return [passthrough, hook.queue.dispatch];
8025      }
8026      function dispatchActionState(fiber, actionQueue, setPendingState, setState, payload) {
8027        if (isRenderPhaseUpdate(fiber))
8028          throw Error("Cannot update form state while rendering.");
8029        fiber = actionQueue.action;
8030        if (null !== fiber) {
8031          var actionNode = {
8032            payload,
8033            action: fiber,
8034            next: null,
8035            isTransition: true,
8036            status: "pending",
8037            value: null,
8038            reason: null,
8039            listeners: [],
8040            then: function(listener) {
8041              actionNode.listeners.push(listener);
8042            }
8043          };
8044          null !== ReactSharedInternals.T ? setPendingState(true) : actionNode.isTransition = false;
8045          setState(actionNode);
8046          setPendingState = actionQueue.pending;
8047          null === setPendingState ? (actionNode.next = actionQueue.pending = actionNode, runActionStateAction(actionQueue, actionNode)) : (actionNode.next = setPendingState.next, actionQueue.pending = setPendingState.next = actionNode);
8048        }
8049      }
8050      function runActionStateAction(actionQueue, node) {
8051        var action = node.action, payload = node.payload, prevState = actionQueue.state;
8052        if (node.isTransition) {
8053          var prevTransition = ReactSharedInternals.T, currentTransition = {};
8054          currentTransition._updatedFibers = /* @__PURE__ */ new Set();
8055          ReactSharedInternals.T = currentTransition;
8056          try {
8057            var returnValue = action(prevState, payload), onStartTransitionFinish = ReactSharedInternals.S;
8058            null !== onStartTransitionFinish && onStartTransitionFinish(currentTransition, returnValue);
8059            handleActionReturnValue(actionQueue, node, returnValue);
8060          } catch (error2) {
8061            onActionError(actionQueue, node, error2);
8062          } finally {
8063            null !== prevTransition && null !== currentTransition.types && (null !== prevTransition.types && prevTransition.types !== currentTransition.types && console.error(
8064              "We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React."
8065            ), prevTransition.types = currentTransition.types), ReactSharedInternals.T = prevTransition, null === prevTransition && currentTransition._updatedFibers && (actionQueue = currentTransition._updatedFibers.size, currentTransition._updatedFibers.clear(), 10 < actionQueue && console.warn(
8066              "Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table."
8067            ));
8068          }
8069        } else
8070          try {
8071            currentTransition = action(prevState, payload), handleActionReturnValue(actionQueue, node, currentTransition);
8072          } catch (error$4) {
8073            onActionError(actionQueue, node, error$4);
8074          }
8075      }
8076      function handleActionReturnValue(actionQueue, node, returnValue) {
8077        null !== returnValue && "object" === typeof returnValue && "function" === typeof returnValue.then ? (ReactSharedInternals.asyncTransitions++, returnValue.then(releaseAsyncTransition, releaseAsyncTransition), returnValue.then(
8078          function(nextState) {
8079            onActionSuccess(actionQueue, node, nextState);
8080          },
8081          function(error2) {
8082            return onActionError(actionQueue, node, error2);
8083          }
8084        ), node.isTransition || console.error(
8085          "An async function with useActionState was called outside of a transition. This is likely not what you intended (for example, isPending will not update correctly). Either call the returned function inside startTransition, or pass it to an `action` or `formAction` prop."
8086        )) : onActionSuccess(actionQueue, node, returnValue);
8087      }
8088      function onActionSuccess(actionQueue, actionNode, nextState) {
8089        actionNode.status = "fulfilled";
8090        actionNode.value = nextState;
8091        notifyActionListeners(actionNode);
8092        actionQueue.state = nextState;
8093        actionNode = actionQueue.pending;
8094        null !== actionNode && (nextState = actionNode.next, nextState === actionNode ? actionQueue.pending = null : (nextState = nextState.next, actionNode.next = nextState, runActionStateAction(actionQueue, nextState)));
8095      }
8096      function onActionError(actionQueue, actionNode, error2) {
8097        var last = actionQueue.pending;
8098        actionQueue.pending = null;
8099        if (null !== last) {
8100          last = last.next;
8101          do
8102            actionNode.status = "rejected", actionNode.reason = error2, notifyActionListeners(actionNode), actionNode = actionNode.next;
8103          while (actionNode !== last);
8104        }
8105        actionQueue.action = null;
8106      }
8107      function notifyActionListeners(actionNode) {
8108        actionNode = actionNode.listeners;
8109        for (var i3 = 0; i3 < actionNode.length; i3++) (0, actionNode[i3])();
8110      }
8111      function actionStateReducer(oldState, newState) {
8112        return newState;
8113      }
8114      function mountActionState(action, initialStateProp) {
8115        if (isHydrating) {
8116          var ssrFormState = workInProgressRoot.formState;
8117          if (null !== ssrFormState) {
8118            a: {
8119              var isMatching = currentlyRenderingFiber;
8120              if (isHydrating) {
8121                if (nextHydratableInstance) {
8122                  b: {
8123                    var markerInstance = nextHydratableInstance;
8124                    for (var inRootOrSingleton = rootOrSingletonContext; 8 !== markerInstance.nodeType; ) {
8125                      if (!inRootOrSingleton) {
8126                        markerInstance = null;
8127                        break b;
8128                      }
8129                      markerInstance = getNextHydratable(
8130                        markerInstance.nextSibling
8131                      );
8132                      if (null === markerInstance) {
8133                        markerInstance = null;
8134                        break b;
8135                      }
8136                    }
8137                    inRootOrSingleton = markerInstance.data;
8138                    markerInstance = inRootOrSingleton === FORM_STATE_IS_MATCHING || inRootOrSingleton === FORM_STATE_IS_NOT_MATCHING ? markerInstance : null;
8139                  }
8140                  if (markerInstance) {
8141                    nextHydratableInstance = getNextHydratable(
8142                      markerInstance.nextSibling
8143                    );
8144                    isMatching = markerInstance.data === FORM_STATE_IS_MATCHING;
8145                    break a;
8146                  }
8147                }
8148                throwOnHydrationMismatch(isMatching);
8149              }
8150              isMatching = false;
8151            }
8152            isMatching && (initialStateProp = ssrFormState[0]);
8153          }
8154        }
8155        ssrFormState = mountWorkInProgressHook();
8156        ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;
8157        isMatching = {
8158          pending: null,
8159          lanes: 0,
8160          dispatch: null,
8161          lastRenderedReducer: actionStateReducer,
8162          lastRenderedState: initialStateProp
8163        };
8164        ssrFormState.queue = isMatching;
8165        ssrFormState = dispatchSetState.bind(
8166          null,
8167          currentlyRenderingFiber,
8168          isMatching
8169        );
8170        isMatching.dispatch = ssrFormState;
8171        isMatching = mountStateImpl(false);
8172        inRootOrSingleton = dispatchOptimisticSetState.bind(
8173          null,
8174          currentlyRenderingFiber,
8175          false,
8176          isMatching.queue
8177        );
8178        isMatching = mountWorkInProgressHook();
8179        markerInstance = {
8180          state: initialStateProp,
8181          dispatch: null,
8182          action,
8183          pending: null
8184        };
8185        isMatching.queue = markerInstance;
8186        ssrFormState = dispatchActionState.bind(
8187          null,
8188          currentlyRenderingFiber,
8189          markerInstance,
8190          inRootOrSingleton,
8191          ssrFormState
8192        );
8193        markerInstance.dispatch = ssrFormState;
8194        isMatching.memoizedState = action;
8195        return [initialStateProp, ssrFormState, false];
8196      }
8197      function updateActionState(action) {
8198        var stateHook = updateWorkInProgressHook();
8199        return updateActionStateImpl(stateHook, currentHook, action);
8200      }
8201      function updateActionStateImpl(stateHook, currentStateHook, action) {
8202        currentStateHook = updateReducerImpl(
8203          stateHook,
8204          currentStateHook,
8205          actionStateReducer
8206        )[0];
8207        stateHook = updateReducer(basicStateReducer)[0];
8208        if ("object" === typeof currentStateHook && null !== currentStateHook && "function" === typeof currentStateHook.then)
8209          try {
8210            var state = useThenable(currentStateHook);
8211          } catch (x3) {
8212            if (x3 === SuspenseException) throw SuspenseActionException;
8213            throw x3;
8214          }
8215        else state = currentStateHook;
8216        currentStateHook = updateWorkInProgressHook();
8217        var actionQueue = currentStateHook.queue, dispatch2 = actionQueue.dispatch;
8218        action !== currentStateHook.memoizedState && (currentlyRenderingFiber.flags |= 2048, pushSimpleEffect(
8219          HasEffect | Passive,
8220          { destroy: void 0 },
8221          actionStateActionEffect.bind(null, actionQueue, action),
8222          null
8223        ));
8224        return [state, dispatch2, stateHook];
8225      }
8226      function actionStateActionEffect(actionQueue, action) {
8227        actionQueue.action = action;
8228      }
8229      function rerenderActionState(action) {
8230        var stateHook = updateWorkInProgressHook(), currentStateHook = currentHook;
8231        if (null !== currentStateHook)
8232          return updateActionStateImpl(stateHook, currentStateHook, action);
8233        updateWorkInProgressHook();
8234        stateHook = stateHook.memoizedState;
8235        currentStateHook = updateWorkInProgressHook();
8236        var dispatch2 = currentStateHook.queue.dispatch;
8237        currentStateHook.memoizedState = action;
8238        return [stateHook, dispatch2, false];
8239      }
8240      function pushSimpleEffect(tag, inst, create, deps) {
8241        tag = { tag, create, deps, inst, next: null };
8242        inst = currentlyRenderingFiber.updateQueue;
8243        null === inst && (inst = createFunctionComponentUpdateQueue(), currentlyRenderingFiber.updateQueue = inst);
8244        create = inst.lastEffect;
8245        null === create ? inst.lastEffect = tag.next = tag : (deps = create.next, create.next = tag, tag.next = deps, inst.lastEffect = tag);
8246        return tag;
8247      }
8248      function mountRef(initialValue) {
8249        var hook = mountWorkInProgressHook();
8250        initialValue = { current: initialValue };
8251        return hook.memoizedState = initialValue;
8252      }
8253      function mountEffectImpl(fiberFlags, hookFlags, create, deps) {
8254        var hook = mountWorkInProgressHook();
8255        currentlyRenderingFiber.flags |= fiberFlags;
8256        hook.memoizedState = pushSimpleEffect(
8257          HasEffect | hookFlags,
8258          { destroy: void 0 },
8259          create,
8260          void 0 === deps ? null : deps
8261        );
8262      }
8263      function updateEffectImpl(fiberFlags, hookFlags, create, deps) {
8264        var hook = updateWorkInProgressHook();
8265        deps = void 0 === deps ? null : deps;
8266        var inst = hook.memoizedState.inst;
8267        null !== currentHook && null !== deps && areHookInputsEqual(deps, currentHook.memoizedState.deps) ? hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps) : (currentlyRenderingFiber.flags |= fiberFlags, hook.memoizedState = pushSimpleEffect(
8268          HasEffect | hookFlags,
8269          inst,
8270          create,
8271          deps
8272        ));
8273      }
8274      function mountEffect(create, deps) {
8275        (currentlyRenderingFiber.mode & StrictEffectsMode) !== NoMode ? mountEffectImpl(276826112, Passive, create, deps) : mountEffectImpl(8390656, Passive, create, deps);
8276      }
8277      function useEffectEventImpl(payload) {
8278        currentlyRenderingFiber.flags |= 4;
8279        var componentUpdateQueue = currentlyRenderingFiber.updateQueue;
8280        if (null === componentUpdateQueue)
8281          componentUpdateQueue = createFunctionComponentUpdateQueue(), currentlyRenderingFiber.updateQueue = componentUpdateQueue, componentUpdateQueue.events = [payload];
8282        else {
8283          var events = componentUpdateQueue.events;
8284          null === events ? componentUpdateQueue.events = [payload] : events.push(payload);
8285        }
8286      }
8287      function mountEvent(callback) {
8288        var hook = mountWorkInProgressHook(), ref = { impl: callback };
8289        hook.memoizedState = ref;
8290        return function() {
8291          if ((executionContext & RenderContext) !== NoContext)
8292            throw Error(
8293              "A function wrapped in useEffectEvent can't be called during rendering."
8294            );
8295          return ref.impl.apply(void 0, arguments);
8296        };
8297      }
8298      function updateEvent(callback) {
8299        var ref = updateWorkInProgressHook().memoizedState;
8300        useEffectEventImpl({ ref, nextImpl: callback });
8301        return function() {
8302          if ((executionContext & RenderContext) !== NoContext)
8303            throw Error(
8304              "A function wrapped in useEffectEvent can't be called during rendering."
8305            );
8306          return ref.impl.apply(void 0, arguments);
8307        };
8308      }
8309      function mountLayoutEffect(create, deps) {
8310        var fiberFlags = 4194308;
8311        (currentlyRenderingFiber.mode & StrictEffectsMode) !== NoMode && (fiberFlags |= 134217728);
8312        return mountEffectImpl(fiberFlags, Layout, create, deps);
8313      }
8314      function imperativeHandleEffect(create, ref) {
8315        if ("function" === typeof ref) {
8316          create = create();
8317          var refCleanup = ref(create);
8318          return function() {
8319            "function" === typeof refCleanup ? refCleanup() : ref(null);
8320          };
8321        }
8322        if (null !== ref && void 0 !== ref)
8323          return ref.hasOwnProperty("current") || console.error(
8324            "Expected useImperativeHandle() first argument to either be a ref callback or React.createRef() object. Instead received: %s.",
8325            "an object with keys {" + Object.keys(ref).join(", ") + "}"
8326          ), create = create(), ref.current = create, function() {
8327            ref.current = null;
8328          };
8329      }
8330      function mountImperativeHandle(ref, create, deps) {
8331        "function" !== typeof create && console.error(
8332          "Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.",
8333          null !== create ? typeof create : "null"
8334        );
8335        deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;
8336        var fiberFlags = 4194308;
8337        (currentlyRenderingFiber.mode & StrictEffectsMode) !== NoMode && (fiberFlags |= 134217728);
8338        mountEffectImpl(
8339          fiberFlags,
8340          Layout,
8341          imperativeHandleEffect.bind(null, create, ref),
8342          deps
8343        );
8344      }
8345      function updateImperativeHandle(ref, create, deps) {
8346        "function" !== typeof create && console.error(
8347          "Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.",
8348          null !== create ? typeof create : "null"
8349        );
8350        deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;
8351        updateEffectImpl(
8352          4,
8353          Layout,
8354          imperativeHandleEffect.bind(null, create, ref),
8355          deps
8356        );
8357      }
8358      function mountCallback(callback, deps) {
8359        mountWorkInProgressHook().memoizedState = [
8360          callback,
8361          void 0 === deps ? null : deps
8362        ];
8363        return callback;
8364      }
8365      function updateCallback(callback, deps) {
8366        var hook = updateWorkInProgressHook();
8367        deps = void 0 === deps ? null : deps;
8368        var prevState = hook.memoizedState;
8369        if (null !== deps && areHookInputsEqual(deps, prevState[1]))
8370          return prevState[0];
8371        hook.memoizedState = [callback, deps];
8372        return callback;
8373      }
8374      function mountMemo(nextCreate, deps) {
8375        var hook = mountWorkInProgressHook();
8376        deps = void 0 === deps ? null : deps;
8377        var nextValue = nextCreate();
8378        if (shouldDoubleInvokeUserFnsInHooksDEV) {
8379          setIsStrictModeForDevtools(true);
8380          try {
8381            nextCreate();
8382          } finally {
8383            setIsStrictModeForDevtools(false);
8384          }
8385        }
8386        hook.memoizedState = [nextValue, deps];
8387        return nextValue;
8388      }
8389      function updateMemo(nextCreate, deps) {
8390        var hook = updateWorkInProgressHook();
8391        deps = void 0 === deps ? null : deps;
8392        var prevState = hook.memoizedState;
8393        if (null !== deps && areHookInputsEqual(deps, prevState[1]))
8394          return prevState[0];
8395        prevState = nextCreate();
8396        if (shouldDoubleInvokeUserFnsInHooksDEV) {
8397          setIsStrictModeForDevtools(true);
8398          try {
8399            nextCreate();
8400          } finally {
8401            setIsStrictModeForDevtools(false);
8402          }
8403        }
8404        hook.memoizedState = [prevState, deps];
8405        return prevState;
8406      }
8407      function mountDeferredValue(value, initialValue) {
8408        var hook = mountWorkInProgressHook();
8409        return mountDeferredValueImpl(hook, value, initialValue);
8410      }
8411      function updateDeferredValue(value, initialValue) {
8412        var hook = updateWorkInProgressHook();
8413        return updateDeferredValueImpl(
8414          hook,
8415          currentHook.memoizedState,
8416          value,
8417          initialValue
8418        );
8419      }
8420      function rerenderDeferredValue(value, initialValue) {
8421        var hook = updateWorkInProgressHook();
8422        return null === currentHook ? mountDeferredValueImpl(hook, value, initialValue) : updateDeferredValueImpl(
8423          hook,
8424          currentHook.memoizedState,
8425          value,
8426          initialValue
8427        );
8428      }
8429      function mountDeferredValueImpl(hook, value, initialValue) {
8430        if (void 0 === initialValue || 0 !== (renderLanes & 1073741824) && 0 === (workInProgressRootRenderLanes & 261930))
8431          return hook.memoizedState = value;
8432        hook.memoizedState = initialValue;
8433        hook = requestDeferredLane();
8434        currentlyRenderingFiber.lanes |= hook;
8435        workInProgressRootSkippedLanes |= hook;
8436        return initialValue;
8437      }
8438      function updateDeferredValueImpl(hook, prevValue, value, initialValue) {
8439        if (objectIs(value, prevValue)) return value;
8440        if (null !== currentTreeHiddenStackCursor.current)
8441          return hook = mountDeferredValueImpl(hook, value, initialValue), objectIs(hook, prevValue) || (didReceiveUpdate = true), hook;
8442        if (0 === (renderLanes & 42) || 0 !== (renderLanes & 1073741824) && 0 === (workInProgressRootRenderLanes & 261930))
8443          return didReceiveUpdate = true, hook.memoizedState = value;
8444        hook = requestDeferredLane();
8445        currentlyRenderingFiber.lanes |= hook;
8446        workInProgressRootSkippedLanes |= hook;
8447        return prevValue;
8448      }
8449      function releaseAsyncTransition() {
8450        ReactSharedInternals.asyncTransitions--;
8451      }
8452      function startTransition(fiber, queue, pendingState, finishedState, callback) {
8453        var previousPriority = ReactDOMSharedInternals.p;
8454        ReactDOMSharedInternals.p = 0 !== previousPriority && previousPriority < ContinuousEventPriority ? previousPriority : ContinuousEventPriority;
8455        var prevTransition = ReactSharedInternals.T, currentTransition = {};
8456        currentTransition._updatedFibers = /* @__PURE__ */ new Set();
8457        ReactSharedInternals.T = currentTransition;
8458        dispatchOptimisticSetState(fiber, false, queue, pendingState);
8459        try {
8460          var returnValue = callback(), onStartTransitionFinish = ReactSharedInternals.S;
8461          null !== onStartTransitionFinish && onStartTransitionFinish(currentTransition, returnValue);
8462          if (null !== returnValue && "object" === typeof returnValue && "function" === typeof returnValue.then) {
8463            ReactSharedInternals.asyncTransitions++;
8464            returnValue.then(releaseAsyncTransition, releaseAsyncTransition);
8465            var thenableForFinishedState = chainThenableValue(
8466              returnValue,
8467              finishedState
8468            );
8469            dispatchSetStateInternal(
8470              fiber,
8471              queue,
8472              thenableForFinishedState,
8473              requestUpdateLane(fiber)
8474            );
8475          } else
8476            dispatchSetStateInternal(
8477              fiber,
8478              queue,
8479              finishedState,
8480              requestUpdateLane(fiber)
8481            );
8482        } catch (error2) {
8483          dispatchSetStateInternal(
8484            fiber,
8485            queue,
8486            { then: function() {
8487            }, status: "rejected", reason: error2 },
8488            requestUpdateLane(fiber)
8489          );
8490        } finally {
8491          ReactDOMSharedInternals.p = previousPriority, null !== prevTransition && null !== currentTransition.types && (null !== prevTransition.types && prevTransition.types !== currentTransition.types && console.error(
8492            "We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React."
8493          ), prevTransition.types = currentTransition.types), ReactSharedInternals.T = prevTransition, null === prevTransition && currentTransition._updatedFibers && (fiber = currentTransition._updatedFibers.size, currentTransition._updatedFibers.clear(), 10 < fiber && console.warn(
8494            "Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table."
8495          ));
8496        }
8497      }
8498      function startHostTransition(formFiber, pendingState, action, formData) {
8499        if (5 !== formFiber.tag)
8500          throw Error(
8501            "Expected the form instance to be a HostComponent. This is a bug in React."
8502          );
8503        var queue = ensureFormComponentIsStateful(formFiber).queue;
8504        startHostActionTimer(formFiber);
8505        startTransition(
8506          formFiber,
8507          queue,
8508          pendingState,
8509          NotPendingTransition,
8510          null === action ? noop : function() {
8511            requestFormReset$1(formFiber);
8512            return action(formData);
8513          }
8514        );
8515      }
8516      function ensureFormComponentIsStateful(formFiber) {
8517        var existingStateHook = formFiber.memoizedState;
8518        if (null !== existingStateHook) return existingStateHook;
8519        existingStateHook = {
8520          memoizedState: NotPendingTransition,
8521          baseState: NotPendingTransition,
8522          baseQueue: null,
8523          queue: {
8524            pending: null,
8525            lanes: 0,
8526            dispatch: null,
8527            lastRenderedReducer: basicStateReducer,
8528            lastRenderedState: NotPendingTransition
8529          },
8530          next: null
8531        };
8532        var initialResetState = {};
8533        existingStateHook.next = {
8534          memoizedState: initialResetState,
8535          baseState: initialResetState,
8536          baseQueue: null,
8537          queue: {
8538            pending: null,
8539            lanes: 0,
8540            dispatch: null,
8541            lastRenderedReducer: basicStateReducer,
8542            lastRenderedState: initialResetState
8543          },
8544          next: null
8545        };
8546        formFiber.memoizedState = existingStateHook;
8547        formFiber = formFiber.alternate;
8548        null !== formFiber && (formFiber.memoizedState = existingStateHook);
8549        return existingStateHook;
8550      }
8551      function requestFormReset$1(formFiber) {
8552        null === ReactSharedInternals.T && console.error(
8553          "requestFormReset was called outside a transition or action. To fix, move to an action, or wrap with startTransition."
8554        );
8555        var stateHook = ensureFormComponentIsStateful(formFiber);
8556        null === stateHook.next && (stateHook = formFiber.alternate.memoizedState);
8557        dispatchSetStateInternal(
8558          formFiber,
8559          stateHook.next.queue,
8560          {},
8561          requestUpdateLane(formFiber)
8562        );
8563      }
8564      function mountTransition() {
8565        var stateHook = mountStateImpl(false);
8566        stateHook = startTransition.bind(
8567          null,
8568          currentlyRenderingFiber,
8569          stateHook.queue,
8570          true,
8571          false
8572        );
8573        mountWorkInProgressHook().memoizedState = stateHook;
8574        return [false, stateHook];
8575      }
8576      function updateTransition() {
8577        var booleanOrThenable = updateReducer(basicStateReducer)[0], start2 = updateWorkInProgressHook().memoizedState;
8578        return [
8579          "boolean" === typeof booleanOrThenable ? booleanOrThenable : useThenable(booleanOrThenable),
8580          start2
8581        ];
8582      }
8583      function rerenderTransition() {
8584        var booleanOrThenable = rerenderReducer(basicStateReducer)[0], start2 = updateWorkInProgressHook().memoizedState;
8585        return [
8586          "boolean" === typeof booleanOrThenable ? booleanOrThenable : useThenable(booleanOrThenable),
8587          start2
8588        ];
8589      }
8590      function useHostTransitionStatus() {
8591        return readContext(HostTransitionContext);
8592      }
8593      function mountId() {
8594        var hook = mountWorkInProgressHook(), identifierPrefix = workInProgressRoot.identifierPrefix;
8595        if (isHydrating) {
8596          var treeId = treeContextOverflow;
8597          var idWithLeadingBit = treeContextId;
8598          treeId = (idWithLeadingBit & ~(1 << 32 - clz32(idWithLeadingBit) - 1)).toString(32) + treeId;
8599          identifierPrefix = "_" + identifierPrefix + "R_" + treeId;
8600          treeId = localIdCounter++;
8601          0 < treeId && (identifierPrefix += "H" + treeId.toString(32));
8602          identifierPrefix += "_";
8603        } else
8604          treeId = globalClientIdCounter++, identifierPrefix = "_" + identifierPrefix + "r_" + treeId.toString(32) + "_";
8605        return hook.memoizedState = identifierPrefix;
8606      }
8607      function mountRefresh() {
8608        return mountWorkInProgressHook().memoizedState = refreshCache.bind(
8609          null,
8610          currentlyRenderingFiber
8611        );
8612      }
8613      function refreshCache(fiber, seedKey) {
8614        for (var provider = fiber.return; null !== provider; ) {
8615          switch (provider.tag) {
8616            case 24:
8617            case 3:
8618              var lane = requestUpdateLane(provider), refreshUpdate = createUpdate(lane), root3 = enqueueUpdate(provider, refreshUpdate, lane);
8619              null !== root3 && (startUpdateTimerByLane(lane, "refresh()", fiber), scheduleUpdateOnFiber(root3, provider, lane), entangleTransitions(root3, provider, lane));
8620              fiber = createCache();
8621              null !== seedKey && void 0 !== seedKey && null !== root3 && console.error(
8622                "The seed argument is not enabled outside experimental channels."
8623              );
8624              refreshUpdate.payload = { cache: fiber };
8625              return;
8626          }
8627          provider = provider.return;
8628        }
8629      }
8630      function dispatchReducerAction(fiber, queue, action) {
8631        var args = arguments;
8632        "function" === typeof args[3] && console.error(
8633          "State updates from the useState() and useReducer() Hooks don't support the second callback argument. To execute a side effect after rendering, declare it in the component body with useEffect()."
8634        );
8635        args = requestUpdateLane(fiber);
8636        var update = {
8637          lane: args,
8638          revertLane: 0,
8639          gesture: null,
8640          action,
8641          hasEagerState: false,
8642          eagerState: null,
8643          next: null
8644        };
8645        isRenderPhaseUpdate(fiber) ? enqueueRenderPhaseUpdate(queue, update) : (update = enqueueConcurrentHookUpdate(fiber, queue, update, args), null !== update && (startUpdateTimerByLane(args, "dispatch()", fiber), scheduleUpdateOnFiber(update, fiber, args), entangleTransitionUpdate(update, queue, args)));
8646      }
8647      function dispatchSetState(fiber, queue, action) {
8648        var args = arguments;
8649        "function" === typeof args[3] && console.error(
8650          "State updates from the useState() and useReducer() Hooks don't support the second callback argument. To execute a side effect after rendering, declare it in the component body with useEffect()."
8651        );
8652        args = requestUpdateLane(fiber);
8653        dispatchSetStateInternal(fiber, queue, action, args) && startUpdateTimerByLane(args, "setState()", fiber);
8654      }
8655      function dispatchSetStateInternal(fiber, queue, action, lane) {
8656        var update = {
8657          lane,
8658          revertLane: 0,
8659          gesture: null,
8660          action,
8661          hasEagerState: false,
8662          eagerState: null,
8663          next: null
8664        };
8665        if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);
8666        else {
8667          var alternate = fiber.alternate;
8668          if (0 === fiber.lanes && (null === alternate || 0 === alternate.lanes) && (alternate = queue.lastRenderedReducer, null !== alternate)) {
8669            var prevDispatcher = ReactSharedInternals.H;
8670            ReactSharedInternals.H = InvalidNestedHooksDispatcherOnUpdateInDEV;
8671            try {
8672              var currentState = queue.lastRenderedState, eagerState = alternate(currentState, action);
8673              update.hasEagerState = true;
8674              update.eagerState = eagerState;
8675              if (objectIs(eagerState, currentState))
8676                return enqueueUpdate$1(fiber, queue, update, 0), null === workInProgressRoot && finishQueueingConcurrentUpdates(), false;
8677            } catch (error2) {
8678            } finally {
8679              ReactSharedInternals.H = prevDispatcher;
8680            }
8681          }
8682          action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);
8683          if (null !== action)
8684            return scheduleUpdateOnFiber(action, fiber, lane), entangleTransitionUpdate(action, queue, lane), true;
8685        }
8686        return false;
8687      }
8688      function dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {
8689        null === ReactSharedInternals.T && 0 === currentEntangledLane && console.error(
8690          "An optimistic state update occurred outside a transition or action. To fix, move the update to an action, or wrap with startTransition."
8691        );
8692        action = {
8693          lane: 2,
8694          revertLane: requestTransitionLane(),
8695          gesture: null,
8696          action,
8697          hasEagerState: false,
8698          eagerState: null,
8699          next: null
8700        };
8701        if (isRenderPhaseUpdate(fiber)) {
8702          if (throwIfDuringRender)
8703            throw Error("Cannot update optimistic state while rendering.");
8704          console.error("Cannot call startTransition while rendering.");
8705        } else
8706          throwIfDuringRender = enqueueConcurrentHookUpdate(
8707            fiber,
8708            queue,
8709            action,
8710            2
8711          ), null !== throwIfDuringRender && (startUpdateTimerByLane(2, "setOptimistic()", fiber), scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2));
8712      }
8713      function isRenderPhaseUpdate(fiber) {
8714        var alternate = fiber.alternate;
8715        return fiber === currentlyRenderingFiber || null !== alternate && alternate === currentlyRenderingFiber;
8716      }
8717      function enqueueRenderPhaseUpdate(queue, update) {
8718        didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate = true;
8719        var pending = queue.pending;
8720        null === pending ? update.next = update : (update.next = pending.next, pending.next = update);
8721        queue.pending = update;
8722      }
8723      function entangleTransitionUpdate(root3, queue, lane) {
8724        if (0 !== (lane & 4194048)) {
8725          var queueLanes = queue.lanes;
8726          queueLanes &= root3.pendingLanes;
8727          lane |= queueLanes;
8728          queue.lanes = lane;
8729          markRootEntangled(root3, lane);
8730        }
8731      }
8732      function warnOnInvalidCallback(callback) {
8733        if (null !== callback && "function" !== typeof callback) {
8734          var key = String(callback);
8735          didWarnOnInvalidCallback.has(key) || (didWarnOnInvalidCallback.add(key), console.error(
8736            "Expected the last optional `callback` argument to be a function. Instead received: %s.",
8737            callback
8738          ));
8739        }
8740      }
8741      function applyDerivedStateFromProps(workInProgress2, ctor, getDerivedStateFromProps, nextProps) {
8742        var prevState = workInProgress2.memoizedState, partialState = getDerivedStateFromProps(nextProps, prevState);
8743        if (workInProgress2.mode & StrictLegacyMode) {
8744          setIsStrictModeForDevtools(true);
8745          try {
8746            partialState = getDerivedStateFromProps(nextProps, prevState);
8747          } finally {
8748            setIsStrictModeForDevtools(false);
8749          }
8750        }
8751        void 0 === partialState && (ctor = getComponentNameFromType(ctor) || "Component", didWarnAboutUndefinedDerivedState.has(ctor) || (didWarnAboutUndefinedDerivedState.add(ctor), console.error(
8752          "%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. You have returned undefined.",
8753          ctor
8754        )));
8755        prevState = null === partialState || void 0 === partialState ? prevState : assign({}, prevState, partialState);
8756        workInProgress2.memoizedState = prevState;
8757        0 === workInProgress2.lanes && (workInProgress2.updateQueue.baseState = prevState);
8758      }
8759      function checkShouldComponentUpdate(workInProgress2, ctor, oldProps, newProps, oldState, newState, nextContext) {
8760        var instance = workInProgress2.stateNode;
8761        if ("function" === typeof instance.shouldComponentUpdate) {
8762          oldProps = instance.shouldComponentUpdate(
8763            newProps,
8764            newState,
8765            nextContext
8766          );
8767          if (workInProgress2.mode & StrictLegacyMode) {
8768            setIsStrictModeForDevtools(true);
8769            try {
8770              oldProps = instance.shouldComponentUpdate(
8771                newProps,
8772                newState,
8773                nextContext
8774              );
8775            } finally {
8776              setIsStrictModeForDevtools(false);
8777            }
8778          }
8779          void 0 === oldProps && console.error(
8780            "%s.shouldComponentUpdate(): Returned undefined instead of a boolean value. Make sure to return true or false.",
8781            getComponentNameFromType(ctor) || "Component"
8782          );
8783          return oldProps;
8784        }
8785        return ctor.prototype && ctor.prototype.isPureReactComponent ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState) : true;
8786      }
8787      function callComponentWillReceiveProps(workInProgress2, instance, newProps, nextContext) {
8788        var oldState = instance.state;
8789        "function" === typeof instance.componentWillReceiveProps && instance.componentWillReceiveProps(newProps, nextContext);
8790        "function" === typeof instance.UNSAFE_componentWillReceiveProps && instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);
8791        instance.state !== oldState && (workInProgress2 = getComponentNameFromFiber(workInProgress2) || "Component", didWarnAboutStateAssignmentForComponent.has(workInProgress2) || (didWarnAboutStateAssignmentForComponent.add(workInProgress2), console.error(
8792          "%s.componentWillReceiveProps(): Assigning directly to this.state is deprecated (except inside a component's constructor). Use setState instead.",
8793          workInProgress2
8794        )), classComponentUpdater.enqueueReplaceState(
8795          instance,
8796          instance.state,
8797          null
8798        ));
8799      }
8800      function resolveClassComponentProps(Component, baseProps) {
8801        var newProps = baseProps;
8802        if ("ref" in baseProps) {
8803          newProps = {};
8804          for (var propName in baseProps)
8805            "ref" !== propName && (newProps[propName] = baseProps[propName]);
8806        }
8807        if (Component = Component.defaultProps) {
8808          newProps === baseProps && (newProps = assign({}, newProps));
8809          for (var _propName in Component)
8810            void 0 === newProps[_propName] && (newProps[_propName] = Component[_propName]);
8811        }
8812        return newProps;
8813      }
8814      function defaultOnUncaughtError(error2) {
8815        reportGlobalError(error2);
8816        console.warn(
8817          "%s\n\n%s\n",
8818          componentName ? "An error occurred in the <" + componentName + "> component." : "An error occurred in one of your React components.",
8819          "Consider adding an error boundary to your tree to customize error handling behavior.\nVisit https://react.dev/link/error-boundaries to learn more about error boundaries."
8820        );
8821      }
8822      function defaultOnCaughtError(error2) {
8823        var componentNameMessage = componentName ? "The above error occurred in the <" + componentName + "> component." : "The above error occurred in one of your React components.", recreateMessage = "React will try to recreate this component tree from scratch using the error boundary you provided, " + ((errorBoundaryName || "Anonymous") + ".");
8824        if ("object" === typeof error2 && null !== error2 && "string" === typeof error2.environmentName) {
8825          var JSCompiler_inline_result = error2.environmentName;
8826          error2 = [
8827            "%o\n\n%s\n\n%s\n",
8828            error2,
8829            componentNameMessage,
8830            recreateMessage
8831          ].slice(0);
8832          "string" === typeof error2[0] ? error2.splice(
8833            0,
8834            1,
8835            badgeFormat + " " + error2[0],
8836            badgeStyle,
8837            pad + JSCompiler_inline_result + pad,
8838            resetStyle
8839          ) : error2.splice(
8840            0,
8841            0,
8842            badgeFormat,
8843            badgeStyle,
8844            pad + JSCompiler_inline_result + pad,
8845            resetStyle
8846          );
8847          error2.unshift(console);
8848          JSCompiler_inline_result = bind.apply(console.error, error2);
8849          JSCompiler_inline_result();
8850        } else
8851          console.error(
8852            "%o\n\n%s\n\n%s\n",
8853            error2,
8854            componentNameMessage,
8855            recreateMessage
8856          );
8857      }
8858      function defaultOnRecoverableError(error2) {
8859        reportGlobalError(error2);
8860      }
8861      function logUncaughtError(root3, errorInfo) {
8862        try {
8863          componentName = errorInfo.source ? getComponentNameFromFiber(errorInfo.source) : null;
8864          errorBoundaryName = null;
8865          var error2 = errorInfo.value;
8866          if (null !== ReactSharedInternals.actQueue)
8867            ReactSharedInternals.thrownErrors.push(error2);
8868          else {
8869            var onUncaughtError = root3.onUncaughtError;
8870            onUncaughtError(error2, { componentStack: errorInfo.stack });
8871          }
8872        } catch (e$5) {
8873          setTimeout(function() {
8874            throw e$5;
8875          });
8876        }
8877      }
8878      function logCaughtError(root3, boundary, errorInfo) {
8879        try {
8880          componentName = errorInfo.source ? getComponentNameFromFiber(errorInfo.source) : null;
8881          errorBoundaryName = getComponentNameFromFiber(boundary);
8882          var onCaughtError = root3.onCaughtError;
8883          onCaughtError(errorInfo.value, {
8884            componentStack: errorInfo.stack,
8885            errorBoundary: 1 === boundary.tag ? boundary.stateNode : null
8886          });
8887        } catch (e$6) {
8888          setTimeout(function() {
8889            throw e$6;
8890          });
8891        }
8892      }
8893      function createRootErrorUpdate(root3, errorInfo, lane) {
8894        lane = createUpdate(lane);
8895        lane.tag = CaptureUpdate;
8896        lane.payload = { element: null };
8897        lane.callback = function() {
8898          runWithFiberInDEV(errorInfo.source, logUncaughtError, root3, errorInfo);
8899        };
8900        return lane;
8901      }
8902      function createClassErrorUpdate(lane) {
8903        lane = createUpdate(lane);
8904        lane.tag = CaptureUpdate;
8905        return lane;
8906      }
8907      function initializeClassErrorUpdate(update, root3, fiber, errorInfo) {
8908        var getDerivedStateFromError = fiber.type.getDerivedStateFromError;
8909        if ("function" === typeof getDerivedStateFromError) {
8910          var error2 = errorInfo.value;
8911          update.payload = function() {
8912            return getDerivedStateFromError(error2);
8913          };
8914          update.callback = function() {
8915            markFailedErrorBoundaryForHotReloading(fiber);
8916            runWithFiberInDEV(
8917              errorInfo.source,
8918              logCaughtError,
8919              root3,
8920              fiber,
8921              errorInfo
8922            );
8923          };
8924        }
8925        var inst = fiber.stateNode;
8926        null !== inst && "function" === typeof inst.componentDidCatch && (update.callback = function() {
8927          markFailedErrorBoundaryForHotReloading(fiber);
8928          runWithFiberInDEV(
8929            errorInfo.source,
8930            logCaughtError,
8931            root3,
8932            fiber,
8933            errorInfo
8934          );
8935          "function" !== typeof getDerivedStateFromError && (null === legacyErrorBoundariesThatAlreadyFailed ? legacyErrorBoundariesThatAlreadyFailed = /* @__PURE__ */ new Set([this]) : legacyErrorBoundariesThatAlreadyFailed.add(this));
8936          callComponentDidCatchInDEV(this, errorInfo);
8937          "function" === typeof getDerivedStateFromError || 0 === (fiber.lanes & 2) && console.error(
8938            "%s: Error boundaries should implement getDerivedStateFromError(). In that method, return a state update to display an error message or fallback UI.",
8939            getComponentNameFromFiber(fiber) || "Unknown"
8940          );
8941        });
8942      }
8943      function throwException(root3, returnFiber, sourceFiber, value, rootRenderLanes) {
8944        sourceFiber.flags |= 32768;
8945        isDevToolsPresent && restorePendingUpdaters(root3, rootRenderLanes);
8946        if (null !== value && "object" === typeof value && "function" === typeof value.then) {
8947          returnFiber = sourceFiber.alternate;
8948          null !== returnFiber && propagateParentContextChanges(
8949            returnFiber,
8950            sourceFiber,
8951            rootRenderLanes,
8952            true
8953          );
8954          isHydrating && (didSuspendOrErrorDEV = true);
8955          sourceFiber = suspenseHandlerStackCursor.current;
8956          if (null !== sourceFiber) {
8957            switch (sourceFiber.tag) {
8958              case 31:
8959              case 13:
8960                return null === shellBoundary ? renderDidSuspendDelayIfPossible() : null === sourceFiber.alternate && workInProgressRootExitStatus === RootInProgress && (workInProgressRootExitStatus = RootSuspended), sourceFiber.flags &= -257, sourceFiber.flags |= 65536, sourceFiber.lanes = rootRenderLanes, value === noopSuspenseyCommitThenable ? sourceFiber.flags |= 16384 : (returnFiber = sourceFiber.updateQueue, null === returnFiber ? sourceFiber.updateQueue = /* @__PURE__ */ new Set([value]) : returnFiber.add(value), attachPingListener(root3, value, rootRenderLanes)), false;
8961              case 22:
8962                return sourceFiber.flags |= 65536, value === noopSuspenseyCommitThenable ? sourceFiber.flags |= 16384 : (returnFiber = sourceFiber.updateQueue, null === returnFiber ? (returnFiber = {
8963                  transitions: null,
8964                  markerInstances: null,
8965                  retryQueue: /* @__PURE__ */ new Set([value])
8966                }, sourceFiber.updateQueue = returnFiber) : (sourceFiber = returnFiber.retryQueue, null === sourceFiber ? returnFiber.retryQueue = /* @__PURE__ */ new Set([value]) : sourceFiber.add(value)), attachPingListener(root3, value, rootRenderLanes)), false;
8967            }
8968            throw Error(
8969              "Unexpected Suspense handler tag (" + sourceFiber.tag + "). This is a bug in React."
8970            );
8971          }
8972          attachPingListener(root3, value, rootRenderLanes);
8973          renderDidSuspendDelayIfPossible();
8974          return false;
8975        }
8976        if (isHydrating)
8977          return didSuspendOrErrorDEV = true, returnFiber = suspenseHandlerStackCursor.current, null !== returnFiber ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256), returnFiber.flags |= 65536, returnFiber.lanes = rootRenderLanes, value !== HydrationMismatchException && queueHydrationError(
8978            createCapturedValueAtFiber(
8979              Error(
8980                "There was an error while hydrating but React was able to recover by instead client rendering from the nearest Suspense boundary.",
8981                { cause: value }
8982              ),
8983              sourceFiber
8984            )
8985          )) : (value !== HydrationMismatchException && queueHydrationError(
8986            createCapturedValueAtFiber(
8987              Error(
8988                "There was an error while hydrating but React was able to recover by instead client rendering the entire root.",
8989                { cause: value }
8990              ),
8991              sourceFiber
8992            )
8993          ), root3 = root3.current.alternate, root3.flags |= 65536, rootRenderLanes &= -rootRenderLanes, root3.lanes |= rootRenderLanes, value = createCapturedValueAtFiber(value, sourceFiber), rootRenderLanes = createRootErrorUpdate(
8994            root3.stateNode,
8995            value,
8996            rootRenderLanes
8997          ), enqueueCapturedUpdate(root3, rootRenderLanes), workInProgressRootExitStatus !== RootSuspendedWithDelay && (workInProgressRootExitStatus = RootErrored)), false;
8998        var error2 = createCapturedValueAtFiber(
8999          Error(
9000            "There was an error during concurrent rendering but React was able to recover by instead synchronously rendering the entire root.",
9001            { cause: value }
9002          ),
9003          sourceFiber
9004        );
9005        null === workInProgressRootConcurrentErrors ? workInProgressRootConcurrentErrors = [error2] : workInProgressRootConcurrentErrors.push(error2);
9006        workInProgressRootExitStatus !== RootSuspendedWithDelay && (workInProgressRootExitStatus = RootErrored);
9007        if (null === returnFiber) return true;
9008        value = createCapturedValueAtFiber(value, sourceFiber);
9009        sourceFiber = returnFiber;
9010        do {
9011          switch (sourceFiber.tag) {
9012            case 3:
9013              return sourceFiber.flags |= 65536, root3 = rootRenderLanes & -rootRenderLanes, sourceFiber.lanes |= root3, root3 = createRootErrorUpdate(
9014                sourceFiber.stateNode,
9015                value,
9016                root3
9017              ), enqueueCapturedUpdate(sourceFiber, root3), false;
9018            case 1:
9019              if (returnFiber = sourceFiber.type, error2 = sourceFiber.stateNode, 0 === (sourceFiber.flags & 128) && ("function" === typeof returnFiber.getDerivedStateFromError || null !== error2 && "function" === typeof error2.componentDidCatch && (null === legacyErrorBoundariesThatAlreadyFailed || !legacyErrorBoundariesThatAlreadyFailed.has(error2))))
9020                return sourceFiber.flags |= 65536, rootRenderLanes &= -rootRenderLanes, sourceFiber.lanes |= rootRenderLanes, rootRenderLanes = createClassErrorUpdate(rootRenderLanes), initializeClassErrorUpdate(
9021                  rootRenderLanes,
9022                  root3,
9023                  sourceFiber,
9024                  value
9025                ), enqueueCapturedUpdate(sourceFiber, rootRenderLanes), false;
9026          }
9027          sourceFiber = sourceFiber.return;
9028        } while (null !== sourceFiber);
9029        return false;
9030      }
9031      function reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2) {
9032        workInProgress2.child = null === current2 ? mountChildFibers(workInProgress2, null, nextChildren, renderLanes2) : reconcileChildFibers(
9033          workInProgress2,
9034          current2.child,
9035          nextChildren,
9036          renderLanes2
9037        );
9038      }
9039      function updateForwardRef(current2, workInProgress2, Component, nextProps, renderLanes2) {
9040        Component = Component.render;
9041        var ref = workInProgress2.ref;
9042        if ("ref" in nextProps) {
9043          var propsWithoutRef = {};
9044          for (var key in nextProps)
9045            "ref" !== key && (propsWithoutRef[key] = nextProps[key]);
9046        } else propsWithoutRef = nextProps;
9047        prepareToReadContext(workInProgress2);
9048        nextProps = renderWithHooks(
9049          current2,
9050          workInProgress2,
9051          Component,
9052          propsWithoutRef,
9053          ref,
9054          renderLanes2
9055        );
9056        key = checkDidRenderIdHook();
9057        if (null !== current2 && !didReceiveUpdate)
9058          return bailoutHooks(current2, workInProgress2, renderLanes2), bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);
9059        isHydrating && key && pushMaterializedTreeId(workInProgress2);
9060        workInProgress2.flags |= 1;
9061        reconcileChildren(current2, workInProgress2, nextProps, renderLanes2);
9062        return workInProgress2.child;
9063      }
9064      function updateMemoComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {
9065        if (null === current2) {
9066          var type = Component.type;
9067          if ("function" === typeof type && !shouldConstruct(type) && void 0 === type.defaultProps && null === Component.compare)
9068            return Component = resolveFunctionForHotReloading(type), workInProgress2.tag = 15, workInProgress2.type = Component, validateFunctionComponentInDev(workInProgress2, type), updateSimpleMemoComponent(
9069              current2,
9070              workInProgress2,
9071              Component,
9072              nextProps,
9073              renderLanes2
9074            );
9075          current2 = createFiberFromTypeAndProps(
9076            Component.type,
9077            null,
9078            nextProps,
9079            workInProgress2,
9080            workInProgress2.mode,
9081            renderLanes2
9082          );
9083          current2.ref = workInProgress2.ref;
9084          current2.return = workInProgress2;
9085          return workInProgress2.child = current2;
9086        }
9087        type = current2.child;
9088        if (!checkScheduledUpdateOrContext(current2, renderLanes2)) {
9089          var prevProps = type.memoizedProps;
9090          Component = Component.compare;
9091          Component = null !== Component ? Component : shallowEqual;
9092          if (Component(prevProps, nextProps) && current2.ref === workInProgress2.ref)
9093            return bailoutOnAlreadyFinishedWork(
9094              current2,
9095              workInProgress2,
9096              renderLanes2
9097            );
9098        }
9099        workInProgress2.flags |= 1;
9100        current2 = createWorkInProgress(type, nextProps);
9101        current2.ref = workInProgress2.ref;
9102        current2.return = workInProgress2;
9103        return workInProgress2.child = current2;
9104      }
9105      function updateSimpleMemoComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {
9106        if (null !== current2) {
9107          var prevProps = current2.memoizedProps;
9108          if (shallowEqual(prevProps, nextProps) && current2.ref === workInProgress2.ref && workInProgress2.type === current2.type)
9109            if (didReceiveUpdate = false, workInProgress2.pendingProps = nextProps = prevProps, checkScheduledUpdateOrContext(current2, renderLanes2))
9110              0 !== (current2.flags & 131072) && (didReceiveUpdate = true);
9111            else
9112              return workInProgress2.lanes = current2.lanes, bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);
9113        }
9114        return updateFunctionComponent(
9115          current2,
9116          workInProgress2,
9117          Component,
9118          nextProps,
9119          renderLanes2
9120        );
9121      }
9122      function updateOffscreenComponent(current2, workInProgress2, renderLanes2, nextProps) {
9123        var nextChildren = nextProps.children, prevState = null !== current2 ? current2.memoizedState : null;
9124        null === current2 && null === workInProgress2.stateNode && (workInProgress2.stateNode = {
9125          _visibility: OffscreenVisible,
9126          _pendingMarkers: null,
9127          _retryCache: null,
9128          _transitions: null
9129        });
9130        if ("hidden" === nextProps.mode) {
9131          if (0 !== (workInProgress2.flags & 128)) {
9132            prevState = null !== prevState ? prevState.baseLanes | renderLanes2 : renderLanes2;
9133            if (null !== current2) {
9134              nextProps = workInProgress2.child = current2.child;
9135              for (nextChildren = 0; null !== nextProps; )
9136                nextChildren = nextChildren | nextProps.lanes | nextProps.childLanes, nextProps = nextProps.sibling;
9137              nextProps = nextChildren & ~prevState;
9138            } else nextProps = 0, workInProgress2.child = null;
9139            return deferHiddenOffscreenComponent(
9140              current2,
9141              workInProgress2,
9142              prevState,
9143              renderLanes2,
9144              nextProps
9145            );
9146          }
9147          if (0 !== (renderLanes2 & 536870912))
9148            workInProgress2.memoizedState = { baseLanes: 0, cachePool: null }, null !== current2 && pushTransition(
9149              workInProgress2,
9150              null !== prevState ? prevState.cachePool : null
9151            ), null !== prevState ? pushHiddenContext(workInProgress2, prevState) : reuseHiddenContextOnStack(workInProgress2), pushOffscreenSuspenseHandler(workInProgress2);
9152          else
9153            return nextProps = workInProgress2.lanes = 536870912, deferHiddenOffscreenComponent(
9154              current2,
9155              workInProgress2,
9156              null !== prevState ? prevState.baseLanes | renderLanes2 : renderLanes2,
9157              renderLanes2,
9158              nextProps
9159            );
9160        } else
9161          null !== prevState ? (pushTransition(workInProgress2, prevState.cachePool), pushHiddenContext(workInProgress2, prevState), reuseSuspenseHandlerOnStack(workInProgress2), workInProgress2.memoizedState = null) : (null !== current2 && pushTransition(workInProgress2, null), reuseHiddenContextOnStack(workInProgress2), reuseSuspenseHandlerOnStack(workInProgress2));
9162        reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);
9163        return workInProgress2.child;
9164      }
9165      function bailoutOffscreenComponent(current2, workInProgress2) {
9166        null !== current2 && 22 === current2.tag || null !== workInProgress2.stateNode || (workInProgress2.stateNode = {
9167          _visibility: OffscreenVisible,
9168          _pendingMarkers: null,
9169          _retryCache: null,
9170          _transitions: null
9171        });
9172        return workInProgress2.sibling;
9173      }
9174      function deferHiddenOffscreenComponent(current2, workInProgress2, nextBaseLanes, renderLanes2, remainingChildLanes) {
9175        var JSCompiler_inline_result = peekCacheFromPool();
9176        JSCompiler_inline_result = null === JSCompiler_inline_result ? null : {
9177          parent: CacheContext._currentValue,
9178          pool: JSCompiler_inline_result
9179        };
9180        workInProgress2.memoizedState = {
9181          baseLanes: nextBaseLanes,
9182          cachePool: JSCompiler_inline_result
9183        };
9184        null !== current2 && pushTransition(workInProgress2, null);
9185        reuseHiddenContextOnStack(workInProgress2);
9186        pushOffscreenSuspenseHandler(workInProgress2);
9187        null !== current2 && propagateParentContextChanges(current2, workInProgress2, renderLanes2, true);
9188        workInProgress2.childLanes = remainingChildLanes;
9189        return null;
9190      }
9191      function mountActivityChildren(workInProgress2, nextProps) {
9192        var hiddenProp = nextProps.hidden;
9193        void 0 !== hiddenProp && console.error(
9194          `<Activity> doesn't accept a hidden prop. Use mode="hidden" instead.
9195- <Activity %s>
9196+ <Activity %s>`,
9197          true === hiddenProp ? "hidden" : false === hiddenProp ? "hidden={false}" : "hidden={...}",
9198          hiddenProp ? 'mode="hidden"' : 'mode="visible"'
9199        );
9200        nextProps = mountWorkInProgressOffscreenFiber(
9201          { mode: nextProps.mode, children: nextProps.children },
9202          workInProgress2.mode
9203        );
9204        nextProps.ref = workInProgress2.ref;
9205        workInProgress2.child = nextProps;
9206        nextProps.return = workInProgress2;
9207        return nextProps;
9208      }
9209      function retryActivityComponentWithoutHydrating(current2, workInProgress2, renderLanes2) {
9210        reconcileChildFibers(workInProgress2, current2.child, null, renderLanes2);
9211        current2 = mountActivityChildren(
9212          workInProgress2,
9213          workInProgress2.pendingProps
9214        );
9215        current2.flags |= 2;
9216        popSuspenseHandler(workInProgress2);
9217        workInProgress2.memoizedState = null;
9218        return current2;
9219      }
9220      function updateActivityComponent(current2, workInProgress2, renderLanes2) {
9221        var nextProps = workInProgress2.pendingProps, didSuspend = 0 !== (workInProgress2.flags & 128);
9222        workInProgress2.flags &= -129;
9223        if (null === current2) {
9224          if (isHydrating) {
9225            if ("hidden" === nextProps.mode)
9226              return current2 = mountActivityChildren(workInProgress2, nextProps), workInProgress2.lanes = 536870912, bailoutOffscreenComponent(null, current2);
9227            pushDehydratedActivitySuspenseHandler(workInProgress2);
9228            (current2 = nextHydratableInstance) ? (renderLanes2 = canHydrateHydrationBoundary(
9229              current2,
9230              rootOrSingletonContext
9231            ), renderLanes2 = null !== renderLanes2 && renderLanes2.data === ACTIVITY_START_DATA ? renderLanes2 : null, null !== renderLanes2 && (nextProps = {
9232              dehydrated: renderLanes2,
9233              treeContext: getSuspendedTreeContext(),
9234              retryLane: 536870912,
9235              hydrationErrors: null
9236            }, workInProgress2.memoizedState = nextProps, nextProps = createFiberFromDehydratedFragment(renderLanes2), nextProps.return = workInProgress2, workInProgress2.child = nextProps, hydrationParentFiber = workInProgress2, nextHydratableInstance = null)) : renderLanes2 = null;
9237            if (null === renderLanes2)
9238              throw warnNonHydratedInstance(workInProgress2, current2), throwOnHydrationMismatch(workInProgress2);
9239            workInProgress2.lanes = 536870912;
9240            return null;
9241          }
9242          return mountActivityChildren(workInProgress2, nextProps);
9243        }
9244        var prevState = current2.memoizedState;
9245        if (null !== prevState) {
9246          var activityInstance = prevState.dehydrated;
9247          pushDehydratedActivitySuspenseHandler(workInProgress2);
9248          if (didSuspend)
9249            if (workInProgress2.flags & 256)
9250              workInProgress2.flags &= -257, workInProgress2 = retryActivityComponentWithoutHydrating(
9251                current2,
9252                workInProgress2,
9253                renderLanes2
9254              );
9255            else if (null !== workInProgress2.memoizedState)
9256              workInProgress2.child = current2.child, workInProgress2.flags |= 128, workInProgress2 = null;
9257            else
9258              throw Error(
9259                "Client rendering an Activity suspended it again. This is a bug in React."
9260              );
9261          else if (warnIfHydrating(), 0 !== (renderLanes2 & 536870912) && markRenderDerivedCause(workInProgress2), didReceiveUpdate || propagateParentContextChanges(
9262            current2,
9263            workInProgress2,
9264            renderLanes2,
9265            false
9266          ), didSuspend = 0 !== (renderLanes2 & current2.childLanes), didReceiveUpdate || didSuspend) {
9267            nextProps = workInProgressRoot;
9268            if (null !== nextProps && (activityInstance = getBumpedLaneForHydration(
9269              nextProps,
9270              renderLanes2
9271            ), 0 !== activityInstance && activityInstance !== prevState.retryLane))
9272              throw prevState.retryLane = activityInstance, enqueueConcurrentRenderForLane(current2, activityInstance), scheduleUpdateOnFiber(nextProps, current2, activityInstance), SelectiveHydrationException;
9273            renderDidSuspendDelayIfPossible();
9274            workInProgress2 = retryActivityComponentWithoutHydrating(
9275              current2,
9276              workInProgress2,
9277              renderLanes2
9278            );
9279          } else
9280            current2 = prevState.treeContext, nextHydratableInstance = getNextHydratable(
9281              activityInstance.nextSibling
9282            ), hydrationParentFiber = workInProgress2, isHydrating = true, hydrationErrors = null, didSuspendOrErrorDEV = false, hydrationDiffRootDEV = null, rootOrSingletonContext = false, null !== current2 && restoreSuspendedTreeContext(workInProgress2, current2), workInProgress2 = mountActivityChildren(workInProgress2, nextProps), workInProgress2.flags |= 4096;
9283          return workInProgress2;
9284        }
9285        prevState = current2.child;
9286        nextProps = { mode: nextProps.mode, children: nextProps.children };
9287        0 !== (renderLanes2 & 536870912) && 0 !== (renderLanes2 & current2.lanes) && markRenderDerivedCause(workInProgress2);
9288        current2 = createWorkInProgress(prevState, nextProps);
9289        current2.ref = workInProgress2.ref;
9290        workInProgress2.child = current2;
9291        current2.return = workInProgress2;
9292        return current2;
9293      }
9294      function markRef(current2, workInProgress2) {
9295        var ref = workInProgress2.ref;
9296        if (null === ref)
9297          null !== current2 && null !== current2.ref && (workInProgress2.flags |= 4194816);
9298        else {
9299          if ("function" !== typeof ref && "object" !== typeof ref)
9300            throw Error(
9301              "Expected ref to be a function, an object returned by React.createRef(), or undefined/null."
9302            );
9303          if (null === current2 || current2.ref !== ref)
9304            workInProgress2.flags |= 4194816;
9305        }
9306      }
9307      function updateFunctionComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {
9308        if (Component.prototype && "function" === typeof Component.prototype.render) {
9309          var componentName2 = getComponentNameFromType(Component) || "Unknown";
9310          didWarnAboutBadClass[componentName2] || (console.error(
9311            "The <%s /> component appears to have a render method, but doesn't extend React.Component. This is likely to cause errors. Change %s to extend React.Component instead.",
9312            componentName2,
9313            componentName2
9314          ), didWarnAboutBadClass[componentName2] = true);
9315        }
9316        workInProgress2.mode & StrictLegacyMode && ReactStrictModeWarnings.recordLegacyContextWarning(
9317          workInProgress2,
9318          null
9319        );
9320        null === current2 && (validateFunctionComponentInDev(workInProgress2, workInProgress2.type), Component.contextTypes && (componentName2 = getComponentNameFromType(Component) || "Unknown", didWarnAboutContextTypes[componentName2] || (didWarnAboutContextTypes[componentName2] = true, console.error(
9321          "%s uses the legacy contextTypes API which was removed in React 19. Use React.createContext() with React.useContext() instead. (https://react.dev/link/legacy-context)",
9322          componentName2
9323        ))));
9324        prepareToReadContext(workInProgress2);
9325        Component = renderWithHooks(
9326          current2,
9327          workInProgress2,
9328          Component,
9329          nextProps,
9330          void 0,
9331          renderLanes2
9332        );
9333        nextProps = checkDidRenderIdHook();
9334        if (null !== current2 && !didReceiveUpdate)
9335          return bailoutHooks(current2, workInProgress2, renderLanes2), bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);
9336        isHydrating && nextProps && pushMaterializedTreeId(workInProgress2);
9337        workInProgress2.flags |= 1;
9338        reconcileChildren(current2, workInProgress2, Component, renderLanes2);
9339        return workInProgress2.child;
9340      }
9341      function replayFunctionComponent(current2, workInProgress2, nextProps, Component, secondArg, renderLanes2) {
9342        prepareToReadContext(workInProgress2);
9343        hookTypesUpdateIndexDev = -1;
9344        ignorePreviousDependencies = null !== current2 && current2.type !== workInProgress2.type;
9345        workInProgress2.updateQueue = null;
9346        nextProps = renderWithHooksAgain(
9347          workInProgress2,
9348          Component,
9349          nextProps,
9350          secondArg
9351        );
9352        finishRenderingHooks(current2, workInProgress2);
9353        Component = checkDidRenderIdHook();
9354        if (null !== current2 && !didReceiveUpdate)
9355          return bailoutHooks(current2, workInProgress2, renderLanes2), bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);
9356        isHydrating && Component && pushMaterializedTreeId(workInProgress2);
9357        workInProgress2.flags |= 1;
9358        reconcileChildren(current2, workInProgress2, nextProps, renderLanes2);
9359        return workInProgress2.child;
9360      }
9361      function updateClassComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {
9362        switch (shouldErrorImpl(workInProgress2)) {
9363          case false:
9364            var _instance = workInProgress2.stateNode, state = new workInProgress2.type(
9365              workInProgress2.memoizedProps,
9366              _instance.context
9367            ).state;
9368            _instance.updater.enqueueSetState(_instance, state, null);
9369            break;
9370          case true:
9371            workInProgress2.flags |= 128;
9372            workInProgress2.flags |= 65536;
9373            _instance = Error("Simulated error coming from DevTools");
9374            var lane = renderLanes2 & -renderLanes2;
9375            workInProgress2.lanes |= lane;
9376            state = workInProgressRoot;
9377            if (null === state)
9378              throw Error(
9379                "Expected a work-in-progress root. This is a bug in React. Please file an issue."
9380              );
9381            lane = createClassErrorUpdate(lane);
9382            initializeClassErrorUpdate(
9383              lane,
9384              state,
9385              workInProgress2,
9386              createCapturedValueAtFiber(_instance, workInProgress2)
9387            );
9388            enqueueCapturedUpdate(workInProgress2, lane);
9389        }
9390        prepareToReadContext(workInProgress2);
9391        if (null === workInProgress2.stateNode) {
9392          state = emptyContextObject;
9393          _instance = Component.contextType;
9394          "contextType" in Component && null !== _instance && (void 0 === _instance || _instance.$$typeof !== REACT_CONTEXT_TYPE) && !didWarnAboutInvalidateContextType.has(Component) && (didWarnAboutInvalidateContextType.add(Component), lane = void 0 === _instance ? " However, it is set to undefined. This can be caused by a typo or by mixing up named and default imports. This can also happen due to a circular dependency, so try moving the createContext() call to a separate file." : "object" !== typeof _instance ? " However, it is set to a " + typeof _instance + "." : _instance.$$typeof === REACT_CONSUMER_TYPE ? " Did you accidentally pass the Context.Consumer instead?" : " However, it is set to an object with keys {" + Object.keys(_instance).join(", ") + "}.", console.error(
9395            "%s defines an invalid contextType. contextType should point to the Context object returned by React.createContext().%s",
9396            getComponentNameFromType(Component) || "Component",
9397            lane
9398          ));
9399          "object" === typeof _instance && null !== _instance && (state = readContext(_instance));
9400          _instance = new Component(nextProps, state);
9401          if (workInProgress2.mode & StrictLegacyMode) {
9402            setIsStrictModeForDevtools(true);
9403            try {
9404              _instance = new Component(nextProps, state);
9405            } finally {
9406              setIsStrictModeForDevtools(false);
9407            }
9408          }
9409          state = workInProgress2.memoizedState = null !== _instance.state && void 0 !== _instance.state ? _instance.state : null;
9410          _instance.updater = classComponentUpdater;
9411          workInProgress2.stateNode = _instance;
9412          _instance._reactInternals = workInProgress2;
9413          _instance._reactInternalInstance = fakeInternalInstance;
9414          "function" === typeof Component.getDerivedStateFromProps && null === state && (state = getComponentNameFromType(Component) || "Component", didWarnAboutUninitializedState.has(state) || (didWarnAboutUninitializedState.add(state), console.error(
9415            "`%s` uses `getDerivedStateFromProps` but its initial state is %s. This is not recommended. Instead, define the initial state by assigning an object to `this.state` in the constructor of `%s`. This ensures that `getDerivedStateFromProps` arguments have a consistent shape.",
9416            state,
9417            null === _instance.state ? "null" : "undefined",
9418            state
9419          )));
9420          if ("function" === typeof Component.getDerivedStateFromProps || "function" === typeof _instance.getSnapshotBeforeUpdate) {
9421            var foundWillUpdateName = lane = state = null;
9422            "function" === typeof _instance.componentWillMount && true !== _instance.componentWillMount.__suppressDeprecationWarning ? state = "componentWillMount" : "function" === typeof _instance.UNSAFE_componentWillMount && (state = "UNSAFE_componentWillMount");
9423            "function" === typeof _instance.componentWillReceiveProps && true !== _instance.componentWillReceiveProps.__suppressDeprecationWarning ? lane = "componentWillReceiveProps" : "function" === typeof _instance.UNSAFE_componentWillReceiveProps && (lane = "UNSAFE_componentWillReceiveProps");
9424            "function" === typeof _instance.componentWillUpdate && true !== _instance.componentWillUpdate.__suppressDeprecationWarning ? foundWillUpdateName = "componentWillUpdate" : "function" === typeof _instance.UNSAFE_componentWillUpdate && (foundWillUpdateName = "UNSAFE_componentWillUpdate");
9425            if (null !== state || null !== lane || null !== foundWillUpdateName) {
9426              _instance = getComponentNameFromType(Component) || "Component";
9427              var newApiName = "function" === typeof Component.getDerivedStateFromProps ? "getDerivedStateFromProps()" : "getSnapshotBeforeUpdate()";
9428              didWarnAboutLegacyLifecyclesAndDerivedState.has(_instance) || (didWarnAboutLegacyLifecyclesAndDerivedState.add(_instance), console.error(
9429                "Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n%s uses %s but also contains the following legacy lifecycles:%s%s%s\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://react.dev/link/unsafe-component-lifecycles",
9430                _instance,
9431                newApiName,
9432                null !== state ? "\n  " + state : "",
9433                null !== lane ? "\n  " + lane : "",
9434                null !== foundWillUpdateName ? "\n  " + foundWillUpdateName : ""
9435              ));
9436            }
9437          }
9438          _instance = workInProgress2.stateNode;
9439          state = getComponentNameFromType(Component) || "Component";
9440          _instance.render || (Component.prototype && "function" === typeof Component.prototype.render ? console.error(
9441            "No `render` method found on the %s instance: did you accidentally return an object from the constructor?",
9442            state
9443          ) : console.error(
9444            "No `render` method found on the %s instance: you may have forgotten to define `render`.",
9445            state
9446          ));
9447          !_instance.getInitialState || _instance.getInitialState.isReactClassApproved || _instance.state || console.error(
9448            "getInitialState was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Did you mean to define a state property instead?",
9449            state
9450          );
9451          _instance.getDefaultProps && !_instance.getDefaultProps.isReactClassApproved && console.error(
9452            "getDefaultProps was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Use a static property to define defaultProps instead.",
9453            state
9454          );
9455          _instance.contextType && console.error(
9456            "contextType was defined as an instance property on %s. Use a static property to define contextType instead.",
9457            state
9458          );
9459          Component.childContextTypes && !didWarnAboutChildContextTypes.has(Component) && (didWarnAboutChildContextTypes.add(Component), console.error(
9460            "%s uses the legacy childContextTypes API which was removed in React 19. Use React.createContext() instead. (https://react.dev/link/legacy-context)",
9461            state
9462          ));
9463          Component.contextTypes && !didWarnAboutContextTypes$1.has(Component) && (didWarnAboutContextTypes$1.add(Component), console.error(
9464            "%s uses the legacy contextTypes API which was removed in React 19. Use React.createContext() with static contextType instead. (https://react.dev/link/legacy-context)",
9465            state
9466          ));
9467          "function" === typeof _instance.componentShouldUpdate && console.error(
9468            "%s has a method called componentShouldUpdate(). Did you mean shouldComponentUpdate()? The name is phrased as a question because the function is expected to return a value.",
9469            state
9470          );
9471          Component.prototype && Component.prototype.isPureReactComponent && "undefined" !== typeof _instance.shouldComponentUpdate && console.error(
9472            "%s has a method called shouldComponentUpdate(). shouldComponentUpdate should not be used when extending React.PureComponent. Please extend React.Component if shouldComponentUpdate is used.",
9473            getComponentNameFromType(Component) || "A pure component"
9474          );
9475          "function" === typeof _instance.componentDidUnmount && console.error(
9476            "%s has a method called componentDidUnmount(). But there is no such lifecycle method. Did you mean componentWillUnmount()?",
9477            state
9478          );
9479          "function" === typeof _instance.componentDidReceiveProps && console.error(
9480            "%s has a method called componentDidReceiveProps(). But there is no such lifecycle method. If you meant to update the state in response to changing props, use componentWillReceiveProps(). If you meant to fetch data or run side-effects or mutations after React has updated the UI, use componentDidUpdate().",
9481            state
9482          );
9483          "function" === typeof _instance.componentWillRecieveProps && console.error(
9484            "%s has a method called componentWillRecieveProps(). Did you mean componentWillReceiveProps()?",
9485            state
9486          );
9487          "function" === typeof _instance.UNSAFE_componentWillRecieveProps && console.error(
9488            "%s has a method called UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?",
9489            state
9490          );
9491          lane = _instance.props !== nextProps;
9492          void 0 !== _instance.props && lane && console.error(
9493            "When calling super() in `%s`, make sure to pass up the same props that your component's constructor was passed.",
9494            state
9495          );
9496          _instance.defaultProps && console.error(
9497            "Setting defaultProps as an instance property on %s is not supported and will be ignored. Instead, define defaultProps as a static property on %s.",
9498            state,
9499            state
9500          );
9501          "function" !== typeof _instance.getSnapshotBeforeUpdate || "function" === typeof _instance.componentDidUpdate || didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(Component) || (didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(Component), console.error(
9502            "%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). This component defines getSnapshotBeforeUpdate() only.",
9503            getComponentNameFromType(Component)
9504          ));
9505          "function" === typeof _instance.getDerivedStateFromProps && console.error(
9506            "%s: getDerivedStateFromProps() is defined as an instance method and will be ignored. Instead, declare it as a static method.",
9507            state
9508          );
9509          "function" === typeof _instance.getDerivedStateFromError && console.error(
9510            "%s: getDerivedStateFromError() is defined as an instance method and will be ignored. Instead, declare it as a static method.",
9511            state
9512          );
9513          "function" === typeof Component.getSnapshotBeforeUpdate && console.error(
9514            "%s: getSnapshotBeforeUpdate() is defined as a static method and will be ignored. Instead, declare it as an instance method.",
9515            state
9516          );
9517          (lane = _instance.state) && ("object" !== typeof lane || isArrayImpl(lane)) && console.error("%s.state: must be set to an object or null", state);
9518          "function" === typeof _instance.getChildContext && "object" !== typeof Component.childContextTypes && console.error(
9519            "%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().",
9520            state
9521          );
9522          _instance = workInProgress2.stateNode;
9523          _instance.props = nextProps;
9524          _instance.state = workInProgress2.memoizedState;
9525          _instance.refs = {};
9526          initializeUpdateQueue(workInProgress2);
9527          state = Component.contextType;
9528          _instance.context = "object" === typeof state && null !== state ? readContext(state) : emptyContextObject;
9529          _instance.state === nextProps && (state = getComponentNameFromType(Component) || "Component", didWarnAboutDirectlyAssigningPropsToState.has(state) || (didWarnAboutDirectlyAssigningPropsToState.add(state), console.error(
9530            "%s: It is not recommended to assign props directly to state because updates to props won't be reflected in state. In most cases, it is better to use props directly.",
9531            state
9532          )));
9533          workInProgress2.mode & StrictLegacyMode && ReactStrictModeWarnings.recordLegacyContextWarning(
9534            workInProgress2,
9535            _instance
9536          );
9537          ReactStrictModeWarnings.recordUnsafeLifecycleWarnings(
9538            workInProgress2,
9539            _instance
9540          );
9541          _instance.state = workInProgress2.memoizedState;
9542          state = Component.getDerivedStateFromProps;
9543          "function" === typeof state && (applyDerivedStateFromProps(
9544            workInProgress2,
9545            Component,
9546            state,
9547            nextProps
9548          ), _instance.state = workInProgress2.memoizedState);
9549          "function" === typeof Component.getDerivedStateFromProps || "function" === typeof _instance.getSnapshotBeforeUpdate || "function" !== typeof _instance.UNSAFE_componentWillMount && "function" !== typeof _instance.componentWillMount || (state = _instance.state, "function" === typeof _instance.componentWillMount && _instance.componentWillMount(), "function" === typeof _instance.UNSAFE_componentWillMount && _instance.UNSAFE_componentWillMount(), state !== _instance.state && (console.error(
9550            "%s.componentWillMount(): Assigning directly to this.state is deprecated (except inside a component's constructor). Use setState instead.",
9551            getComponentNameFromFiber(workInProgress2) || "Component"
9552          ), classComponentUpdater.enqueueReplaceState(
9553            _instance,
9554            _instance.state,
9555            null
9556          )), processUpdateQueue(workInProgress2, nextProps, _instance, renderLanes2), suspendIfUpdateReadFromEntangledAsyncAction(), _instance.state = workInProgress2.memoizedState);
9557          "function" === typeof _instance.componentDidMount && (workInProgress2.flags |= 4194308);
9558          (workInProgress2.mode & StrictEffectsMode) !== NoMode && (workInProgress2.flags |= 134217728);
9559          _instance = true;
9560        } else if (null === current2) {
9561          _instance = workInProgress2.stateNode;
9562          var unresolvedOldProps = workInProgress2.memoizedProps;
9563          lane = resolveClassComponentProps(Component, unresolvedOldProps);
9564          _instance.props = lane;
9565          var oldContext = _instance.context;
9566          foundWillUpdateName = Component.contextType;
9567          state = emptyContextObject;
9568          "object" === typeof foundWillUpdateName && null !== foundWillUpdateName && (state = readContext(foundWillUpdateName));
9569          newApiName = Component.getDerivedStateFromProps;
9570          foundWillUpdateName = "function" === typeof newApiName || "function" === typeof _instance.getSnapshotBeforeUpdate;
9571          unresolvedOldProps = workInProgress2.pendingProps !== unresolvedOldProps;
9572          foundWillUpdateName || "function" !== typeof _instance.UNSAFE_componentWillReceiveProps && "function" !== typeof _instance.componentWillReceiveProps || (unresolvedOldProps || oldContext !== state) && callComponentWillReceiveProps(
9573            workInProgress2,
9574            _instance,
9575            nextProps,
9576            state
9577          );
9578          hasForceUpdate = false;
9579          var oldState = workInProgress2.memoizedState;
9580          _instance.state = oldState;
9581          processUpdateQueue(workInProgress2, nextProps, _instance, renderLanes2);
9582          suspendIfUpdateReadFromEntangledAsyncAction();
9583          oldContext = workInProgress2.memoizedState;
9584          unresolvedOldProps || oldState !== oldContext || hasForceUpdate ? ("function" === typeof newApiName && (applyDerivedStateFromProps(
9585            workInProgress2,
9586            Component,
9587            newApiName,
9588            nextProps
9589          ), oldContext = workInProgress2.memoizedState), (lane = hasForceUpdate || checkShouldComponentUpdate(
9590            workInProgress2,
9591            Component,
9592            lane,
9593            nextProps,
9594            oldState,
9595            oldContext,
9596            state
9597          )) ? (foundWillUpdateName || "function" !== typeof _instance.UNSAFE_componentWillMount && "function" !== typeof _instance.componentWillMount || ("function" === typeof _instance.componentWillMount && _instance.componentWillMount(), "function" === typeof _instance.UNSAFE_componentWillMount && _instance.UNSAFE_componentWillMount()), "function" === typeof _instance.componentDidMount && (workInProgress2.flags |= 4194308), (workInProgress2.mode & StrictEffectsMode) !== NoMode && (workInProgress2.flags |= 134217728)) : ("function" === typeof _instance.componentDidMount && (workInProgress2.flags |= 4194308), (workInProgress2.mode & StrictEffectsMode) !== NoMode && (workInProgress2.flags |= 134217728), workInProgress2.memoizedProps = nextProps, workInProgress2.memoizedState = oldContext), _instance.props = nextProps, _instance.state = oldContext, _instance.context = state, _instance = lane) : ("function" === typeof _instance.componentDidMount && (workInProgress2.flags |= 4194308), (workInProgress2.mode & StrictEffectsMode) !== NoMode && (workInProgress2.flags |= 134217728), _instance = false);
9598        } else {
9599          _instance = workInProgress2.stateNode;
9600          cloneUpdateQueue(current2, workInProgress2);
9601          state = workInProgress2.memoizedProps;
9602          foundWillUpdateName = resolveClassComponentProps(Component, state);
9603          _instance.props = foundWillUpdateName;
9604          newApiName = workInProgress2.pendingProps;
9605          oldState = _instance.context;
9606          oldContext = Component.contextType;
9607          lane = emptyContextObject;
9608          "object" === typeof oldContext && null !== oldContext && (lane = readContext(oldContext));
9609          unresolvedOldProps = Component.getDerivedStateFromProps;
9610          (oldContext = "function" === typeof unresolvedOldProps || "function" === typeof _instance.getSnapshotBeforeUpdate) || "function" !== typeof _instance.UNSAFE_componentWillReceiveProps && "function" !== typeof _instance.componentWillReceiveProps || (state !== newApiName || oldState !== lane) && callComponentWillReceiveProps(
9611            workInProgress2,
9612            _instance,
9613            nextProps,
9614            lane
9615          );
9616          hasForceUpdate = false;
9617          oldState = workInProgress2.memoizedState;
9618          _instance.state = oldState;
9619          processUpdateQueue(workInProgress2, nextProps, _instance, renderLanes2);
9620          suspendIfUpdateReadFromEntangledAsyncAction();
9621          var newState = workInProgress2.memoizedState;
9622          state !== newApiName || oldState !== newState || hasForceUpdate || null !== current2 && null !== current2.dependencies && checkIfContextChanged(current2.dependencies) ? ("function" === typeof unresolvedOldProps && (applyDerivedStateFromProps(
9623            workInProgress2,
9624            Component,
9625            unresolvedOldProps,
9626            nextProps
9627          ), newState = workInProgress2.memoizedState), (foundWillUpdateName = hasForceUpdate || checkShouldComponentUpdate(
9628            workInProgress2,
9629            Component,
9630            foundWillUpdateName,
9631            nextProps,
9632            oldState,
9633            newState,
9634            lane
9635          ) || null !== current2 && null !== current2.dependencies && checkIfContextChanged(current2.dependencies)) ? (oldContext || "function" !== typeof _instance.UNSAFE_componentWillUpdate && "function" !== typeof _instance.componentWillUpdate || ("function" === typeof _instance.componentWillUpdate && _instance.componentWillUpdate(nextProps, newState, lane), "function" === typeof _instance.UNSAFE_componentWillUpdate && _instance.UNSAFE_componentWillUpdate(
9636            nextProps,
9637            newState,
9638            lane
9639          )), "function" === typeof _instance.componentDidUpdate && (workInProgress2.flags |= 4), "function" === typeof _instance.getSnapshotBeforeUpdate && (workInProgress2.flags |= 1024)) : ("function" !== typeof _instance.componentDidUpdate || state === current2.memoizedProps && oldState === current2.memoizedState || (workInProgress2.flags |= 4), "function" !== typeof _instance.getSnapshotBeforeUpdate || state === current2.memoizedProps && oldState === current2.memoizedState || (workInProgress2.flags |= 1024), workInProgress2.memoizedProps = nextProps, workInProgress2.memoizedState = newState), _instance.props = nextProps, _instance.state = newState, _instance.context = lane, _instance = foundWillUpdateName) : ("function" !== typeof _instance.componentDidUpdate || state === current2.memoizedProps && oldState === current2.memoizedState || (workInProgress2.flags |= 4), "function" !== typeof _instance.getSnapshotBeforeUpdate || state === current2.memoizedProps && oldState === current2.memoizedState || (workInProgress2.flags |= 1024), _instance = false);
9640        }
9641        lane = _instance;
9642        markRef(current2, workInProgress2);
9643        state = 0 !== (workInProgress2.flags & 128);
9644        if (lane || state) {
9645          lane = workInProgress2.stateNode;
9646          setCurrentFiber(workInProgress2);
9647          if (state && "function" !== typeof Component.getDerivedStateFromError)
9648            Component = null, profilerStartTime = -1;
9649          else if (Component = callRenderInDEV(lane), workInProgress2.mode & StrictLegacyMode) {
9650            setIsStrictModeForDevtools(true);
9651            try {
9652              callRenderInDEV(lane);
9653            } finally {
9654              setIsStrictModeForDevtools(false);
9655            }
9656          }
9657          workInProgress2.flags |= 1;
9658          null !== current2 && state ? (workInProgress2.child = reconcileChildFibers(
9659            workInProgress2,
9660            current2.child,
9661            null,
9662            renderLanes2
9663          ), workInProgress2.child = reconcileChildFibers(
9664            workInProgress2,
9665            null,
9666            Component,
9667            renderLanes2
9668          )) : reconcileChildren(current2, workInProgress2, Component, renderLanes2);
9669          workInProgress2.memoizedState = lane.state;
9670          current2 = workInProgress2.child;
9671        } else
9672          current2 = bailoutOnAlreadyFinishedWork(
9673            current2,
9674            workInProgress2,
9675            renderLanes2
9676          );
9677        renderLanes2 = workInProgress2.stateNode;
9678        _instance && renderLanes2.props !== nextProps && (didWarnAboutReassigningProps || console.error(
9679          "It looks like %s is reassigning its own `this.props` while rendering. This is not supported and can lead to confusing bugs.",
9680          getComponentNameFromFiber(workInProgress2) || "a component"
9681        ), didWarnAboutReassigningProps = true);
9682        return current2;
9683      }
9684      function mountHostRootWithoutHydrating(current2, workInProgress2, nextChildren, renderLanes2) {
9685        resetHydrationState();
9686        workInProgress2.flags |= 256;
9687        reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);
9688        return workInProgress2.child;
9689      }
9690      function validateFunctionComponentInDev(workInProgress2, Component) {
9691        Component && Component.childContextTypes && console.error(
9692          "childContextTypes cannot be defined on a function component.\n  %s.childContextTypes = ...",
9693          Component.displayName || Component.name || "Component"
9694        );
9695        "function" === typeof Component.getDerivedStateFromProps && (workInProgress2 = getComponentNameFromType(Component) || "Unknown", didWarnAboutGetDerivedStateOnFunctionComponent[workInProgress2] || (console.error(
9696          "%s: Function components do not support getDerivedStateFromProps.",
9697          workInProgress2
9698        ), didWarnAboutGetDerivedStateOnFunctionComponent[workInProgress2] = true));
9699        "object" === typeof Component.contextType && null !== Component.contextType && (Component = getComponentNameFromType(Component) || "Unknown", didWarnAboutContextTypeOnFunctionComponent[Component] || (console.error(
9700          "%s: Function components do not support contextType.",
9701          Component
9702        ), didWarnAboutContextTypeOnFunctionComponent[Component] = true));
9703      }
9704      function mountSuspenseOffscreenState(renderLanes2) {
9705        return { baseLanes: renderLanes2, cachePool: getSuspendedCache() };
9706      }
9707      function getRemainingWorkInPrimaryTree(current2, primaryTreeDidDefer, renderLanes2) {
9708        current2 = null !== current2 ? current2.childLanes & ~renderLanes2 : 0;
9709        primaryTreeDidDefer && (current2 |= workInProgressDeferredLane);
9710        return current2;
9711      }
9712      function updateSuspenseComponent(current2, workInProgress2, renderLanes2) {
9713        var JSCompiler_object_inline_digest_2724;
9714        var JSCompiler_object_inline_stack_2725 = workInProgress2.pendingProps;
9715        shouldSuspendImpl(workInProgress2) && (workInProgress2.flags |= 128);
9716        var JSCompiler_object_inline_message_2723 = false;
9717        var didSuspend = 0 !== (workInProgress2.flags & 128);
9718        (JSCompiler_object_inline_digest_2724 = didSuspend) || (JSCompiler_object_inline_digest_2724 = null !== current2 && null === current2.memoizedState ? false : 0 !== (suspenseStackCursor.current & ForceSuspenseFallback));
9719        JSCompiler_object_inline_digest_2724 && (JSCompiler_object_inline_message_2723 = true, workInProgress2.flags &= -129);
9720        JSCompiler_object_inline_digest_2724 = 0 !== (workInProgress2.flags & 32);
9721        workInProgress2.flags &= -33;
9722        if (null === current2) {
9723          if (isHydrating) {
9724            JSCompiler_object_inline_message_2723 ? pushPrimaryTreeSuspenseHandler(workInProgress2) : reuseSuspenseHandlerOnStack(workInProgress2);
9725            (current2 = nextHydratableInstance) ? (renderLanes2 = canHydrateHydrationBoundary(
9726              current2,
9727              rootOrSingletonContext
9728            ), renderLanes2 = null !== renderLanes2 && renderLanes2.data !== ACTIVITY_START_DATA ? renderLanes2 : null, null !== renderLanes2 && (JSCompiler_object_inline_digest_2724 = {
9729              dehydrated: renderLanes2,
9730              treeContext: getSuspendedTreeContext(),
9731              retryLane: 536870912,
9732              hydrationErrors: null
9733            }, workInProgress2.memoizedState = JSCompiler_object_inline_digest_2724, JSCompiler_object_inline_digest_2724 = createFiberFromDehydratedFragment(renderLanes2), JSCompiler_object_inline_digest_2724.return = workInProgress2, workInProgress2.child = JSCompiler_object_inline_digest_2724, hydrationParentFiber = workInProgress2, nextHydratableInstance = null)) : renderLanes2 = null;
9734            if (null === renderLanes2)
9735              throw warnNonHydratedInstance(workInProgress2, current2), throwOnHydrationMismatch(workInProgress2);
9736            isSuspenseInstanceFallback(renderLanes2) ? workInProgress2.lanes = 32 : workInProgress2.lanes = 536870912;
9737            return null;
9738          }
9739          var nextPrimaryChildren = JSCompiler_object_inline_stack_2725.children;
9740          JSCompiler_object_inline_stack_2725 = JSCompiler_object_inline_stack_2725.fallback;
9741          if (JSCompiler_object_inline_message_2723) {
9742            reuseSuspenseHandlerOnStack(workInProgress2);
9743            var mode2 = workInProgress2.mode;
9744            nextPrimaryChildren = mountWorkInProgressOffscreenFiber(
9745              { mode: "hidden", children: nextPrimaryChildren },
9746              mode2
9747            );
9748            JSCompiler_object_inline_stack_2725 = createFiberFromFragment(
9749              JSCompiler_object_inline_stack_2725,
9750              mode2,
9751              renderLanes2,
9752              null
9753            );
9754            nextPrimaryChildren.return = workInProgress2;
9755            JSCompiler_object_inline_stack_2725.return = workInProgress2;
9756            nextPrimaryChildren.sibling = JSCompiler_object_inline_stack_2725;
9757            workInProgress2.child = nextPrimaryChildren;
9758            JSCompiler_object_inline_stack_2725 = workInProgress2.child;
9759            JSCompiler_object_inline_stack_2725.memoizedState = mountSuspenseOffscreenState(renderLanes2);
9760            JSCompiler_object_inline_stack_2725.childLanes = getRemainingWorkInPrimaryTree(
9761              current2,
9762              JSCompiler_object_inline_digest_2724,
9763              renderLanes2
9764            );
9765            workInProgress2.memoizedState = SUSPENDED_MARKER;
9766            return bailoutOffscreenComponent(
9767              null,
9768              JSCompiler_object_inline_stack_2725
9769            );
9770          }
9771          pushPrimaryTreeSuspenseHandler(workInProgress2);
9772          return mountSuspensePrimaryChildren(
9773            workInProgress2,
9774            nextPrimaryChildren
9775          );
9776        }
9777        var prevState = current2.memoizedState;
9778        if (null !== prevState) {
9779          var JSCompiler_object_inline_componentStack_2726 = prevState.dehydrated;
9780          if (null !== JSCompiler_object_inline_componentStack_2726) {
9781            if (didSuspend)
9782              workInProgress2.flags & 256 ? (pushPrimaryTreeSuspenseHandler(workInProgress2), workInProgress2.flags &= -257, workInProgress2 = retrySuspenseComponentWithoutHydrating(
9783                current2,
9784                workInProgress2,
9785                renderLanes2
9786              )) : null !== workInProgress2.memoizedState ? (reuseSuspenseHandlerOnStack(workInProgress2), workInProgress2.child = current2.child, workInProgress2.flags |= 128, workInProgress2 = null) : (reuseSuspenseHandlerOnStack(workInProgress2), nextPrimaryChildren = JSCompiler_object_inline_stack_2725.fallback, mode2 = workInProgress2.mode, JSCompiler_object_inline_stack_2725 = mountWorkInProgressOffscreenFiber(
9787                {
9788                  mode: "visible",
9789                  children: JSCompiler_object_inline_stack_2725.children
9790                },
9791                mode2
9792              ), nextPrimaryChildren = createFiberFromFragment(
9793                nextPrimaryChildren,
9794                mode2,
9795                renderLanes2,
9796                null
9797              ), nextPrimaryChildren.flags |= 2, JSCompiler_object_inline_stack_2725.return = workInProgress2, nextPrimaryChildren.return = workInProgress2, JSCompiler_object_inline_stack_2725.sibling = nextPrimaryChildren, workInProgress2.child = JSCompiler_object_inline_stack_2725, reconcileChildFibers(
9798                workInProgress2,
9799                current2.child,
9800                null,
9801                renderLanes2
9802              ), JSCompiler_object_inline_stack_2725 = workInProgress2.child, JSCompiler_object_inline_stack_2725.memoizedState = mountSuspenseOffscreenState(renderLanes2), JSCompiler_object_inline_stack_2725.childLanes = getRemainingWorkInPrimaryTree(
9803                current2,
9804                JSCompiler_object_inline_digest_2724,
9805                renderLanes2
9806              ), workInProgress2.memoizedState = SUSPENDED_MARKER, workInProgress2 = bailoutOffscreenComponent(
9807                null,
9808                JSCompiler_object_inline_stack_2725
9809              ));
9810            else if (pushPrimaryTreeSuspenseHandler(workInProgress2), warnIfHydrating(), 0 !== (renderLanes2 & 536870912) && markRenderDerivedCause(workInProgress2), isSuspenseInstanceFallback(
9811              JSCompiler_object_inline_componentStack_2726
9812            )) {
9813              JSCompiler_object_inline_digest_2724 = JSCompiler_object_inline_componentStack_2726.nextSibling && JSCompiler_object_inline_componentStack_2726.nextSibling.dataset;
9814              if (JSCompiler_object_inline_digest_2724) {
9815                nextPrimaryChildren = JSCompiler_object_inline_digest_2724.dgst;
9816                var message = JSCompiler_object_inline_digest_2724.msg;
9817                mode2 = JSCompiler_object_inline_digest_2724.stck;
9818                var componentStack = JSCompiler_object_inline_digest_2724.cstck;
9819              }
9820              JSCompiler_object_inline_message_2723 = message;
9821              JSCompiler_object_inline_digest_2724 = nextPrimaryChildren;
9822              JSCompiler_object_inline_stack_2725 = mode2;
9823              JSCompiler_object_inline_componentStack_2726 = componentStack;
9824              nextPrimaryChildren = JSCompiler_object_inline_message_2723;
9825              mode2 = JSCompiler_object_inline_componentStack_2726;
9826              nextPrimaryChildren = nextPrimaryChildren ? Error(nextPrimaryChildren) : Error(
9827                "The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering."
9828              );
9829              nextPrimaryChildren.stack = JSCompiler_object_inline_stack_2725 || "";
9830              nextPrimaryChildren.digest = JSCompiler_object_inline_digest_2724;
9831              JSCompiler_object_inline_digest_2724 = void 0 === mode2 ? null : mode2;
9832              JSCompiler_object_inline_stack_2725 = {
9833                value: nextPrimaryChildren,
9834                source: null,
9835                stack: JSCompiler_object_inline_digest_2724
9836              };
9837              "string" === typeof JSCompiler_object_inline_digest_2724 && CapturedStacks.set(
9838                nextPrimaryChildren,
9839                JSCompiler_object_inline_stack_2725
9840              );
9841              queueHydrationError(JSCompiler_object_inline_stack_2725);
9842              workInProgress2 = retrySuspenseComponentWithoutHydrating(
9843                current2,
9844                workInProgress2,
9845                renderLanes2
9846              );
9847            } else if (didReceiveUpdate || propagateParentContextChanges(
9848              current2,
9849              workInProgress2,
9850              renderLanes2,
9851              false
9852            ), JSCompiler_object_inline_digest_2724 = 0 !== (renderLanes2 & current2.childLanes), didReceiveUpdate || JSCompiler_object_inline_digest_2724) {
9853              JSCompiler_object_inline_digest_2724 = workInProgressRoot;
9854              if (null !== JSCompiler_object_inline_digest_2724 && (JSCompiler_object_inline_stack_2725 = getBumpedLaneForHydration(
9855                JSCompiler_object_inline_digest_2724,
9856                renderLanes2
9857              ), 0 !== JSCompiler_object_inline_stack_2725 && JSCompiler_object_inline_stack_2725 !== prevState.retryLane))
9858                throw prevState.retryLane = JSCompiler_object_inline_stack_2725, enqueueConcurrentRenderForLane(
9859                  current2,
9860                  JSCompiler_object_inline_stack_2725
9861                ), scheduleUpdateOnFiber(
9862                  JSCompiler_object_inline_digest_2724,
9863                  current2,
9864                  JSCompiler_object_inline_stack_2725
9865                ), SelectiveHydrationException;
9866              isSuspenseInstancePending(
9867                JSCompiler_object_inline_componentStack_2726
9868              ) || renderDidSuspendDelayIfPossible();
9869              workInProgress2 = retrySuspenseComponentWithoutHydrating(
9870                current2,
9871                workInProgress2,
9872                renderLanes2
9873              );
9874            } else
9875              isSuspenseInstancePending(
9876                JSCompiler_object_inline_componentStack_2726
9877              ) ? (workInProgress2.flags |= 192, workInProgress2.child = current2.child, workInProgress2 = null) : (current2 = prevState.treeContext, nextHydratableInstance = getNextHydratable(
9878                JSCompiler_object_inline_componentStack_2726.nextSibling
9879              ), hydrationParentFiber = workInProgress2, isHydrating = true, hydrationErrors = null, didSuspendOrErrorDEV = false, hydrationDiffRootDEV = null, rootOrSingletonContext = false, null !== current2 && restoreSuspendedTreeContext(workInProgress2, current2), workInProgress2 = mountSuspensePrimaryChildren(
9880                workInProgress2,
9881                JSCompiler_object_inline_stack_2725.children
9882              ), workInProgress2.flags |= 4096);
9883            return workInProgress2;
9884          }
9885        }
9886        if (JSCompiler_object_inline_message_2723)
9887          return reuseSuspenseHandlerOnStack(workInProgress2), nextPrimaryChildren = JSCompiler_object_inline_stack_2725.fallback, mode2 = workInProgress2.mode, componentStack = current2.child, JSCompiler_object_inline_componentStack_2726 = componentStack.sibling, JSCompiler_object_inline_stack_2725 = createWorkInProgress(
9888            componentStack,
9889            {
9890              mode: "hidden",
9891              children: JSCompiler_object_inline_stack_2725.children
9892            }
9893          ), JSCompiler_object_inline_stack_2725.subtreeFlags = componentStack.subtreeFlags & 65011712, null !== JSCompiler_object_inline_componentStack_2726 ? nextPrimaryChildren = createWorkInProgress(
9894            JSCompiler_object_inline_componentStack_2726,
9895            nextPrimaryChildren
9896          ) : (nextPrimaryChildren = createFiberFromFragment(
9897            nextPrimaryChildren,
9898            mode2,
9899            renderLanes2,
9900            null
9901          ), nextPrimaryChildren.flags |= 2), nextPrimaryChildren.return = workInProgress2, JSCompiler_object_inline_stack_2725.return = workInProgress2, JSCompiler_object_inline_stack_2725.sibling = nextPrimaryChildren, workInProgress2.child = JSCompiler_object_inline_stack_2725, bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_2725), JSCompiler_object_inline_stack_2725 = workInProgress2.child, nextPrimaryChildren = current2.child.memoizedState, null === nextPrimaryChildren ? nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes2) : (mode2 = nextPrimaryChildren.cachePool, null !== mode2 ? (componentStack = CacheContext._currentValue, mode2 = mode2.parent !== componentStack ? { parent: componentStack, pool: componentStack } : mode2) : mode2 = getSuspendedCache(), nextPrimaryChildren = {
9902            baseLanes: nextPrimaryChildren.baseLanes | renderLanes2,
9903            cachePool: mode2
9904          }), JSCompiler_object_inline_stack_2725.memoizedState = nextPrimaryChildren, JSCompiler_object_inline_stack_2725.childLanes = getRemainingWorkInPrimaryTree(
9905            current2,
9906            JSCompiler_object_inline_digest_2724,
9907            renderLanes2
9908          ), workInProgress2.memoizedState = SUSPENDED_MARKER, bailoutOffscreenComponent(
9909            current2.child,
9910            JSCompiler_object_inline_stack_2725
9911          );
9912        null !== prevState && (renderLanes2 & 62914560) === renderLanes2 && 0 !== (renderLanes2 & current2.lanes) && markRenderDerivedCause(workInProgress2);
9913        pushPrimaryTreeSuspenseHandler(workInProgress2);
9914        renderLanes2 = current2.child;
9915        current2 = renderLanes2.sibling;
9916        renderLanes2 = createWorkInProgress(renderLanes2, {
9917          mode: "visible",
9918          children: JSCompiler_object_inline_stack_2725.children
9919        });
9920        renderLanes2.return = workInProgress2;
9921        renderLanes2.sibling = null;
9922        null !== current2 && (JSCompiler_object_inline_digest_2724 = workInProgress2.deletions, null === JSCompiler_object_inline_digest_2724 ? (workInProgress2.deletions = [current2], workInProgress2.flags |= 16) : JSCompiler_object_inline_digest_2724.push(current2));
9923        workInProgress2.child = renderLanes2;
9924        workInProgress2.memoizedState = null;
9925        return renderLanes2;
9926      }
9927      function mountSuspensePrimaryChildren(workInProgress2, primaryChildren) {
9928        primaryChildren = mountWorkInProgressOffscreenFiber(
9929          { mode: "visible", children: primaryChildren },
9930          workInProgress2.mode
9931        );
9932        primaryChildren.return = workInProgress2;
9933        return workInProgress2.child = primaryChildren;
9934      }
9935      function mountWorkInProgressOffscreenFiber(offscreenProps, mode2) {
9936        offscreenProps = createFiber(22, offscreenProps, null, mode2);
9937        offscreenProps.lanes = 0;
9938        return offscreenProps;
9939      }
9940      function retrySuspenseComponentWithoutHydrating(current2, workInProgress2, renderLanes2) {
9941        reconcileChildFibers(workInProgress2, current2.child, null, renderLanes2);
9942        current2 = mountSuspensePrimaryChildren(
9943          workInProgress2,
9944          workInProgress2.pendingProps.children
9945        );
9946        current2.flags |= 2;
9947        workInProgress2.memoizedState = null;
9948        return current2;
9949      }
9950      function scheduleSuspenseWorkOnFiber(fiber, renderLanes2, propagationRoot) {
9951        fiber.lanes |= renderLanes2;
9952        var alternate = fiber.alternate;
9953        null !== alternate && (alternate.lanes |= renderLanes2);
9954        scheduleContextWorkOnParentPath(
9955          fiber.return,
9956          renderLanes2,
9957          propagationRoot
9958        );
9959      }
9960      function initSuspenseListRenderState(workInProgress2, isBackwards, tail, lastContentRow, tailMode, treeForkCount2) {
9961        var renderState = workInProgress2.memoizedState;
9962        null === renderState ? workInProgress2.memoizedState = {
9963          isBackwards,
9964          rendering: null,
9965          renderingStartTime: 0,
9966          last: lastContentRow,
9967          tail,
9968          tailMode,
9969          treeForkCount: treeForkCount2
9970        } : (renderState.isBackwards = isBackwards, renderState.rendering = null, renderState.renderingStartTime = 0, renderState.last = lastContentRow, renderState.tail = tail, renderState.tailMode = tailMode, renderState.treeForkCount = treeForkCount2);
9971      }
9972      function updateSuspenseListComponent(current2, workInProgress2, renderLanes2) {
9973        var nextProps = workInProgress2.pendingProps, revealOrder = nextProps.revealOrder, tailMode = nextProps.tail, newChildren = nextProps.children, suspenseContext = suspenseStackCursor.current;
9974        (nextProps = 0 !== (suspenseContext & ForceSuspenseFallback)) ? (suspenseContext = suspenseContext & SubtreeSuspenseContextMask | ForceSuspenseFallback, workInProgress2.flags |= 128) : suspenseContext &= SubtreeSuspenseContextMask;
9975        push(suspenseStackCursor, suspenseContext, workInProgress2);
9976        suspenseContext = null == revealOrder ? "null" : revealOrder;
9977        if ("forwards" !== revealOrder && "unstable_legacy-backwards" !== revealOrder && "together" !== revealOrder && "independent" !== revealOrder && !didWarnAboutRevealOrder[suspenseContext])
9978          if (didWarnAboutRevealOrder[suspenseContext] = true, null == revealOrder)
9979            console.error(
9980              'The default for the <SuspenseList revealOrder="..."> prop is changing. To be future compatible you must explictly specify either "independent" (the current default), "together", "forwards" or "legacy_unstable-backwards".'
9981            );
9982          else if ("backwards" === revealOrder)
9983            console.error(
9984              'The rendering order of <SuspenseList revealOrder="backwards"> is changing. To be future compatible you must specify revealOrder="legacy_unstable-backwards" instead.'
9985            );
9986          else if ("string" === typeof revealOrder)
9987            switch (revealOrder.toLowerCase()) {
9988              case "together":
9989              case "forwards":
9990              case "backwards":
9991              case "independent":
9992                console.error(
9993                  '"%s" is not a valid value for revealOrder on <SuspenseList />. Use lowercase "%s" instead.',
9994                  revealOrder,
9995                  revealOrder.toLowerCase()
9996                );
9997                break;
9998              case "forward":
9999              case "backward":
10000                console.error(
10001                  '"%s" is not a valid value for revealOrder on <SuspenseList />. React uses the -s suffix in the spelling. Use "%ss" instead.',
10002                  revealOrder,
10003                  revealOrder.toLowerCase()
10004                );
10005                break;
10006              default:
10007                console.error(
10008                  '"%s" is not a supported revealOrder on <SuspenseList />. Did you mean "independent", "together", "forwards" or "backwards"?',
10009                  revealOrder
10010                );
10011            }
10012          else
10013            console.error(
10014              '%s is not a supported value for revealOrder on <SuspenseList />. Did you mean "independent", "together", "forwards" or "backwards"?',
10015              revealOrder
10016            );
10017        suspenseContext = null == tailMode ? "null" : tailMode;
10018        if (!didWarnAboutTailOptions[suspenseContext])
10019          if (null == tailMode) {
10020            if ("forwards" === revealOrder || "backwards" === revealOrder || "unstable_legacy-backwards" === revealOrder)
10021              didWarnAboutTailOptions[suspenseContext] = true, console.error(
10022                'The default for the <SuspenseList tail="..."> prop is changing. To be future compatible you must explictly specify either "visible" (the current default), "collapsed" or "hidden".'
10023              );
10024          } else
10025            "visible" !== tailMode && "collapsed" !== tailMode && "hidden" !== tailMode ? (didWarnAboutTailOptions[suspenseContext] = true, console.error(
10026              '"%s" is not a supported value for tail on <SuspenseList />. Did you mean "visible", "collapsed" or "hidden"?',
10027              tailMode
10028            )) : "forwards" !== revealOrder && "backwards" !== revealOrder && "unstable_legacy-backwards" !== revealOrder && (didWarnAboutTailOptions[suspenseContext] = true, console.error(
10029              '<SuspenseList tail="%s" /> is only valid if revealOrder is "forwards" or "backwards". Did you mean to specify revealOrder="forwards"?',
10030              tailMode
10031            ));
10032        a: if (("forwards" === revealOrder || "backwards" === revealOrder || "unstable_legacy-backwards" === revealOrder) && void 0 !== newChildren && null !== newChildren && false !== newChildren)
10033          if (isArrayImpl(newChildren))
10034            for (suspenseContext = 0; suspenseContext < newChildren.length; suspenseContext++) {
10035              if (!validateSuspenseListNestedChild(
10036                newChildren[suspenseContext],
10037                suspenseContext
10038              ))
10039                break a;
10040            }
10041          else if (suspenseContext = getIteratorFn(newChildren), "function" === typeof suspenseContext) {
10042            if (suspenseContext = suspenseContext.call(newChildren))
10043              for (var step = suspenseContext.next(), _i3 = 0; !step.done; step = suspenseContext.next()) {
10044                if (!validateSuspenseListNestedChild(step.value, _i3)) break a;
10045                _i3++;
10046              }
10047          } else
10048            console.error(
10049              'A single row was passed to a <SuspenseList revealOrder="%s" />. This is not useful since it needs multiple rows. Did you mean to pass multiple children or an array?',
10050              revealOrder
10051            );
10052        reconcileChildren(current2, workInProgress2, newChildren, renderLanes2);
10053        isHydrating ? (warnIfNotHydrating(), newChildren = treeForkCount) : newChildren = 0;
10054        if (!nextProps && null !== current2 && 0 !== (current2.flags & 128))
10055          a: for (current2 = workInProgress2.child; null !== current2; ) {
10056            if (13 === current2.tag)
10057              null !== current2.memoizedState && scheduleSuspenseWorkOnFiber(current2, renderLanes2, workInProgress2);
10058            else if (19 === current2.tag)
10059              scheduleSuspenseWorkOnFiber(current2, renderLanes2, workInProgress2);
10060            else if (null !== current2.child) {
10061              current2.child.return = current2;
10062              current2 = current2.child;
10063              continue;
10064            }
10065            if (current2 === workInProgress2) break a;
10066            for (; null === current2.sibling; ) {
10067              if (null === current2.return || current2.return === workInProgress2)
10068                break a;
10069              current2 = current2.return;
10070            }
10071            current2.sibling.return = current2.return;
10072            current2 = current2.sibling;
10073          }
10074        switch (revealOrder) {
10075          case "forwards":
10076            renderLanes2 = workInProgress2.child;
10077            for (revealOrder = null; null !== renderLanes2; )
10078              current2 = renderLanes2.alternate, null !== current2 && null === findFirstSuspended(current2) && (revealOrder = renderLanes2), renderLanes2 = renderLanes2.sibling;
10079            renderLanes2 = revealOrder;
10080            null === renderLanes2 ? (revealOrder = workInProgress2.child, workInProgress2.child = null) : (revealOrder = renderLanes2.sibling, renderLanes2.sibling = null);
10081            initSuspenseListRenderState(
10082              workInProgress2,
10083              false,
10084              revealOrder,
10085              renderLanes2,
10086              tailMode,
10087              newChildren
10088            );
10089            break;
10090          case "backwards":
10091          case "unstable_legacy-backwards":
10092            renderLanes2 = null;
10093            revealOrder = workInProgress2.child;
10094            for (workInProgress2.child = null; null !== revealOrder; ) {
10095              current2 = revealOrder.alternate;
10096              if (null !== current2 && null === findFirstSuspended(current2)) {
10097                workInProgress2.child = revealOrder;
10098                break;
10099              }
10100              current2 = revealOrder.sibling;
10101              revealOrder.sibling = renderLanes2;
10102              renderLanes2 = revealOrder;
10103              revealOrder = current2;
10104            }
10105            initSuspenseListRenderState(
10106              workInProgress2,
10107              true,
10108              renderLanes2,
10109              null,
10110              tailMode,
10111              newChildren
10112            );
10113            break;
10114          case "together":
10115            initSuspenseListRenderState(
10116              workInProgress2,
10117              false,
10118              null,
10119              null,
10120              void 0,
10121              newChildren
10122            );
10123            break;
10124          default:
10125            workInProgress2.memoizedState = null;
10126        }
10127        return workInProgress2.child;
10128      }
10129      function bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2) {
10130        null !== current2 && (workInProgress2.dependencies = current2.dependencies);
10131        profilerStartTime = -1;
10132        workInProgressRootSkippedLanes |= workInProgress2.lanes;
10133        if (0 === (renderLanes2 & workInProgress2.childLanes))
10134          if (null !== current2) {
10135            if (propagateParentContextChanges(
10136              current2,
10137              workInProgress2,
10138              renderLanes2,
10139              false
10140            ), 0 === (renderLanes2 & workInProgress2.childLanes))
10141              return null;
10142          } else return null;
10143        if (null !== current2 && workInProgress2.child !== current2.child)
10144          throw Error("Resuming work not yet implemented.");
10145        if (null !== workInProgress2.child) {
10146          current2 = workInProgress2.child;
10147          renderLanes2 = createWorkInProgress(current2, current2.pendingProps);
10148          workInProgress2.child = renderLanes2;
10149          for (renderLanes2.return = workInProgress2; null !== current2.sibling; )
10150            current2 = current2.sibling, renderLanes2 = renderLanes2.sibling = createWorkInProgress(current2, current2.pendingProps), renderLanes2.return = workInProgress2;
10151          renderLanes2.sibling = null;
10152        }
10153        return workInProgress2.child;
10154      }
10155      function checkScheduledUpdateOrContext(current2, renderLanes2) {
10156        if (0 !== (current2.lanes & renderLanes2)) return true;
10157        current2 = current2.dependencies;
10158        return null !== current2 && checkIfContextChanged(current2) ? true : false;
10159      }
10160      function attemptEarlyBailoutIfNoScheduledUpdate(current2, workInProgress2, renderLanes2) {
10161        switch (workInProgress2.tag) {
10162          case 3:
10163            pushHostContainer(
10164              workInProgress2,
10165              workInProgress2.stateNode.containerInfo
10166            );
10167            pushProvider(
10168              workInProgress2,
10169              CacheContext,
10170              current2.memoizedState.cache
10171            );
10172            resetHydrationState();
10173            break;
10174          case 27:
10175          case 5:
10176            pushHostContext(workInProgress2);
10177            break;
10178          case 4:
10179            pushHostContainer(
10180              workInProgress2,
10181              workInProgress2.stateNode.containerInfo
10182            );
10183            break;
10184          case 10:
10185            pushProvider(
10186              workInProgress2,
10187              workInProgress2.type,
10188              workInProgress2.memoizedProps.value
10189            );
10190            break;
10191          case 12:
10192            0 !== (renderLanes2 & workInProgress2.childLanes) && (workInProgress2.flags |= 4);
10193            workInProgress2.flags |= 2048;
10194            var stateNode = workInProgress2.stateNode;
10195            stateNode.effectDuration = -0;
10196            stateNode.passiveEffectDuration = -0;
10197            break;
10198          case 31:
10199            if (null !== workInProgress2.memoizedState)
10200              return workInProgress2.flags |= 128, pushDehydratedActivitySuspenseHandler(workInProgress2), null;
10201            break;
10202          case 13:
10203            stateNode = workInProgress2.memoizedState;
10204            if (null !== stateNode) {
10205              if (null !== stateNode.dehydrated)
10206                return pushPrimaryTreeSuspenseHandler(workInProgress2), workInProgress2.flags |= 128, null;
10207              if (0 !== (renderLanes2 & workInProgress2.child.childLanes))
10208                return updateSuspenseComponent(
10209                  current2,
10210                  workInProgress2,
10211                  renderLanes2
10212                );
10213              pushPrimaryTreeSuspenseHandler(workInProgress2);
10214              current2 = bailoutOnAlreadyFinishedWork(
10215                current2,
10216                workInProgress2,
10217                renderLanes2
10218              );
10219              return null !== current2 ? current2.sibling : null;
10220            }
10221            pushPrimaryTreeSuspenseHandler(workInProgress2);
10222            break;
10223          case 19:
10224            var didSuspendBefore = 0 !== (current2.flags & 128);
10225            stateNode = 0 !== (renderLanes2 & workInProgress2.childLanes);
10226            stateNode || (propagateParentContextChanges(
10227              current2,
10228              workInProgress2,
10229              renderLanes2,
10230              false
10231            ), stateNode = 0 !== (renderLanes2 & workInProgress2.childLanes));
10232            if (didSuspendBefore) {
10233              if (stateNode)
10234                return updateSuspenseListComponent(
10235                  current2,
10236                  workInProgress2,
10237                  renderLanes2
10238                );
10239              workInProgress2.flags |= 128;
10240            }
10241            didSuspendBefore = workInProgress2.memoizedState;
10242            null !== didSuspendBefore && (didSuspendBefore.rendering = null, didSuspendBefore.tail = null, didSuspendBefore.lastEffect = null);
10243            push(
10244              suspenseStackCursor,
10245              suspenseStackCursor.current,
10246              workInProgress2
10247            );
10248            if (stateNode) break;
10249            else return null;
10250          case 22:
10251            return workInProgress2.lanes = 0, updateOffscreenComponent(
10252              current2,
10253              workInProgress2,
10254              renderLanes2,
10255              workInProgress2.pendingProps
10256            );
10257          case 24:
10258            pushProvider(
10259              workInProgress2,
10260              CacheContext,
10261              current2.memoizedState.cache
10262            );
10263        }
10264        return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);
10265      }
10266      function beginWork(current2, workInProgress2, renderLanes2) {
10267        if (workInProgress2._debugNeedsRemount && null !== current2) {
10268          renderLanes2 = createFiberFromTypeAndProps(
10269            workInProgress2.type,
10270            workInProgress2.key,
10271            workInProgress2.pendingProps,
10272            workInProgress2._debugOwner || null,
10273            workInProgress2.mode,
10274            workInProgress2.lanes
10275          );
10276          renderLanes2._debugStack = workInProgress2._debugStack;
10277          renderLanes2._debugTask = workInProgress2._debugTask;
10278          var returnFiber = workInProgress2.return;
10279          if (null === returnFiber) throw Error("Cannot swap the root fiber.");
10280          current2.alternate = null;
10281          workInProgress2.alternate = null;
10282          renderLanes2.index = workInProgress2.index;
10283          renderLanes2.sibling = workInProgress2.sibling;
10284          renderLanes2.return = workInProgress2.return;
10285          renderLanes2.ref = workInProgress2.ref;
10286          renderLanes2._debugInfo = workInProgress2._debugInfo;
10287          if (workInProgress2 === returnFiber.child)
10288            returnFiber.child = renderLanes2;
10289          else {
10290            var prevSibling = returnFiber.child;
10291            if (null === prevSibling)
10292              throw Error("Expected parent to have a child.");
10293            for (; prevSibling.sibling !== workInProgress2; )
10294              if (prevSibling = prevSibling.sibling, null === prevSibling)
10295                throw Error("Expected to find the previous sibling.");
10296            prevSibling.sibling = renderLanes2;
10297          }
10298          workInProgress2 = returnFiber.deletions;
10299          null === workInProgress2 ? (returnFiber.deletions = [current2], returnFiber.flags |= 16) : workInProgress2.push(current2);
10300          renderLanes2.flags |= 2;
10301          return renderLanes2;
10302        }
10303        if (null !== current2)
10304          if (current2.memoizedProps !== workInProgress2.pendingProps || workInProgress2.type !== current2.type)
10305            didReceiveUpdate = true;
10306          else {
10307            if (!checkScheduledUpdateOrContext(current2, renderLanes2) && 0 === (workInProgress2.flags & 128))
10308              return didReceiveUpdate = false, attemptEarlyBailoutIfNoScheduledUpdate(
10309                current2,
10310                workInProgress2,
10311                renderLanes2
10312              );
10313            didReceiveUpdate = 0 !== (current2.flags & 131072) ? true : false;
10314          }
10315        else {
10316          didReceiveUpdate = false;
10317          if (returnFiber = isHydrating)
10318            warnIfNotHydrating(), returnFiber = 0 !== (workInProgress2.flags & 1048576);
10319          returnFiber && (returnFiber = workInProgress2.index, warnIfNotHydrating(), pushTreeId(workInProgress2, treeForkCount, returnFiber));
10320        }
10321        workInProgress2.lanes = 0;
10322        switch (workInProgress2.tag) {
10323          case 16:
10324            a: if (returnFiber = workInProgress2.pendingProps, current2 = resolveLazy(workInProgress2.elementType), workInProgress2.type = current2, "function" === typeof current2)
10325              shouldConstruct(current2) ? (returnFiber = resolveClassComponentProps(
10326                current2,
10327                returnFiber
10328              ), workInProgress2.tag = 1, workInProgress2.type = current2 = resolveFunctionForHotReloading(current2), workInProgress2 = updateClassComponent(
10329                null,
10330                workInProgress2,
10331                current2,
10332                returnFiber,
10333                renderLanes2
10334              )) : (workInProgress2.tag = 0, validateFunctionComponentInDev(workInProgress2, current2), workInProgress2.type = current2 = resolveFunctionForHotReloading(current2), workInProgress2 = updateFunctionComponent(
10335                null,
10336                workInProgress2,
10337                current2,
10338                returnFiber,
10339                renderLanes2
10340              ));
10341            else {
10342              if (void 0 !== current2 && null !== current2) {
10343                if (prevSibling = current2.$$typeof, prevSibling === REACT_FORWARD_REF_TYPE) {
10344                  workInProgress2.tag = 11;
10345                  workInProgress2.type = current2 = resolveForwardRefForHotReloading(current2);
10346                  workInProgress2 = updateForwardRef(
10347                    null,
10348                    workInProgress2,
10349                    current2,
10350                    returnFiber,
10351                    renderLanes2
10352                  );
10353                  break a;
10354                } else if (prevSibling === REACT_MEMO_TYPE) {
10355                  workInProgress2.tag = 14;
10356                  workInProgress2 = updateMemoComponent(
10357                    null,
10358                    workInProgress2,
10359                    current2,
10360                    returnFiber,
10361                    renderLanes2
10362                  );
10363                  break a;
10364                }
10365              }
10366              workInProgress2 = "";
10367              null !== current2 && "object" === typeof current2 && current2.$$typeof === REACT_LAZY_TYPE && (workInProgress2 = " Did you wrap a component in React.lazy() more than once?");
10368              renderLanes2 = getComponentNameFromType(current2) || current2;
10369              throw Error(
10370                "Element type is invalid. Received a promise that resolves to: " + renderLanes2 + ". Lazy element type must resolve to a class or function." + workInProgress2
10371              );
10372            }
10373            return workInProgress2;
10374          case 0:
10375            return updateFunctionComponent(
10376              current2,
10377              workInProgress2,
10378              workInProgress2.type,
10379              workInProgress2.pendingProps,
10380              renderLanes2
10381            );
10382          case 1:
10383            return returnFiber = workInProgress2.type, prevSibling = resolveClassComponentProps(
10384              returnFiber,
10385              workInProgress2.pendingProps
10386            ), updateClassComponent(
10387              current2,
10388              workInProgress2,
10389              returnFiber,
10390              prevSibling,
10391              renderLanes2
10392            );
10393          case 3:
10394            a: {
10395              pushHostContainer(
10396                workInProgress2,
10397                workInProgress2.stateNode.containerInfo
10398              );
10399              if (null === current2)
10400                throw Error(
10401                  "Should have a current fiber. This is a bug in React."
10402                );
10403              returnFiber = workInProgress2.pendingProps;
10404              var prevState = workInProgress2.memoizedState;
10405              prevSibling = prevState.element;
10406              cloneUpdateQueue(current2, workInProgress2);
10407              processUpdateQueue(workInProgress2, returnFiber, null, renderLanes2);
10408              var nextState = workInProgress2.memoizedState;
10409              returnFiber = nextState.cache;
10410              pushProvider(workInProgress2, CacheContext, returnFiber);
10411              returnFiber !== prevState.cache && propagateContextChanges(
10412                workInProgress2,
10413                [CacheContext],
10414                renderLanes2,
10415                true
10416              );
10417              suspendIfUpdateReadFromEntangledAsyncAction();
10418              returnFiber = nextState.element;
10419              if (prevState.isDehydrated)
10420                if (prevState = {
10421                  element: returnFiber,
10422                  isDehydrated: false,
10423                  cache: nextState.cache
10424                }, workInProgress2.updateQueue.baseState = prevState, workInProgress2.memoizedState = prevState, workInProgress2.flags & 256) {
10425                  workInProgress2 = mountHostRootWithoutHydrating(
10426                    current2,
10427                    workInProgress2,
10428                    returnFiber,
10429                    renderLanes2
10430                  );
10431                  break a;
10432                } else if (returnFiber !== prevSibling) {
10433                  prevSibling = createCapturedValueAtFiber(
10434                    Error(
10435                      "This root received an early update, before anything was able hydrate. Switched the entire root to client rendering."
10436                    ),
10437                    workInProgress2
10438                  );
10439                  queueHydrationError(prevSibling);
10440                  workInProgress2 = mountHostRootWithoutHydrating(
10441                    current2,
10442                    workInProgress2,
10443                    returnFiber,
10444                    renderLanes2
10445                  );
10446                  break a;
10447                } else {
10448                  current2 = workInProgress2.stateNode.containerInfo;
10449                  switch (current2.nodeType) {
10450                    case 9:
10451                      current2 = current2.body;
10452                      break;
10453                    default:
10454                      current2 = "HTML" === current2.nodeName ? current2.ownerDocument.body : current2;
10455                  }
10456                  nextHydratableInstance = getNextHydratable(current2.firstChild);
10457                  hydrationParentFiber = workInProgress2;
10458                  isHydrating = true;
10459                  hydrationErrors = null;
10460                  didSuspendOrErrorDEV = false;
10461                  hydrationDiffRootDEV = null;
10462                  rootOrSingletonContext = true;
10463                  renderLanes2 = mountChildFibers(
10464                    workInProgress2,
10465                    null,
10466                    returnFiber,
10467                    renderLanes2
10468                  );
10469                  for (workInProgress2.child = renderLanes2; renderLanes2; )
10470                    renderLanes2.flags = renderLanes2.flags & -3 | 4096, renderLanes2 = renderLanes2.sibling;
10471                }
10472              else {
10473                resetHydrationState();
10474                if (returnFiber === prevSibling) {
10475                  workInProgress2 = bailoutOnAlreadyFinishedWork(
10476                    current2,
10477                    workInProgress2,
10478                    renderLanes2
10479                  );
10480                  break a;
10481                }
10482                reconcileChildren(
10483                  current2,
10484                  workInProgress2,
10485                  returnFiber,
10486                  renderLanes2
10487                );
10488              }
10489              workInProgress2 = workInProgress2.child;
10490            }
10491            return workInProgress2;
10492          case 26:
10493            return markRef(current2, workInProgress2), null === current2 ? (renderLanes2 = getResource(
10494              workInProgress2.type,
10495              null,
10496              workInProgress2.pendingProps,
10497              null
10498            )) ? workInProgress2.memoizedState = renderLanes2 : isHydrating || (renderLanes2 = workInProgress2.type, current2 = workInProgress2.pendingProps, returnFiber = requiredContext(
10499              rootInstanceStackCursor.current
10500            ), returnFiber = getOwnerDocumentFromRootContainer(
10501              returnFiber
10502            ).createElement(renderLanes2), returnFiber[internalInstanceKey] = workInProgress2, returnFiber[internalPropsKey] = current2, setInitialProperties(returnFiber, renderLanes2, current2), markNodeAsHoistable(returnFiber), workInProgress2.stateNode = returnFiber) : workInProgress2.memoizedState = getResource(
10503              workInProgress2.type,
10504              current2.memoizedProps,
10505              workInProgress2.pendingProps,
10506              current2.memoizedState
10507            ), null;
10508          case 27:
10509            return pushHostContext(workInProgress2), null === current2 && isHydrating && (returnFiber = requiredContext(rootInstanceStackCursor.current), prevSibling = getHostContext(), returnFiber = workInProgress2.stateNode = resolveSingletonInstance(
10510              workInProgress2.type,
10511              workInProgress2.pendingProps,
10512              returnFiber,
10513              prevSibling,
10514              false
10515            ), didSuspendOrErrorDEV || (prevSibling = diffHydratedProperties(
10516              returnFiber,
10517              workInProgress2.type,
10518              workInProgress2.pendingProps,
10519              prevSibling
10520            ), null !== prevSibling && (buildHydrationDiffNode(workInProgress2, 0).serverProps = prevSibling)), hydrationParentFiber = workInProgress2, rootOrSingletonContext = true, prevSibling = nextHydratableInstance, isSingletonScope(workInProgress2.type) ? (previousHydratableOnEnteringScopedSingleton = prevSibling, nextHydratableInstance = getNextHydratable(
10521              returnFiber.firstChild
10522            )) : nextHydratableInstance = prevSibling), reconcileChildren(
10523              current2,
10524              workInProgress2,
10525              workInProgress2.pendingProps.children,
10526              renderLanes2
10527            ), markRef(current2, workInProgress2), null === current2 && (workInProgress2.flags |= 4194304), workInProgress2.child;
10528          case 5:
10529            return null === current2 && isHydrating && (prevState = getHostContext(), returnFiber = validateDOMNesting(
10530              workInProgress2.type,
10531              prevState.ancestorInfo
10532            ), prevSibling = nextHydratableInstance, (nextState = !prevSibling) || (nextState = canHydrateInstance(
10533              prevSibling,
10534              workInProgress2.type,
10535              workInProgress2.pendingProps,
10536              rootOrSingletonContext
10537            ), null !== nextState ? (workInProgress2.stateNode = nextState, didSuspendOrErrorDEV || (prevState = diffHydratedProperties(
10538              nextState,
10539              workInProgress2.type,
10540              workInProgress2.pendingProps,
10541              prevState
10542            ), null !== prevState && (buildHydrationDiffNode(workInProgress2, 0).serverProps = prevState)), hydrationParentFiber = workInProgress2, nextHydratableInstance = getNextHydratable(
10543              nextState.firstChild
10544            ), rootOrSingletonContext = false, prevState = true) : prevState = false, nextState = !prevState), nextState && (returnFiber && warnNonHydratedInstance(workInProgress2, prevSibling), throwOnHydrationMismatch(workInProgress2))), pushHostContext(workInProgress2), prevSibling = workInProgress2.type, prevState = workInProgress2.pendingProps, nextState = null !== current2 ? current2.memoizedProps : null, returnFiber = prevState.children, shouldSetTextContent(prevSibling, prevState) ? returnFiber = null : null !== nextState && shouldSetTextContent(prevSibling, nextState) && (workInProgress2.flags |= 32), null !== workInProgress2.memoizedState && (prevSibling = renderWithHooks(
10545              current2,
10546              workInProgress2,
10547              TransitionAwareHostComponent,
10548              null,
10549              null,
10550              renderLanes2
10551            ), HostTransitionContext._currentValue = prevSibling), markRef(current2, workInProgress2), reconcileChildren(
10552              current2,
10553              workInProgress2,
10554              returnFiber,
10555              renderLanes2
10556            ), workInProgress2.child;
10557          case 6:
10558            return null === current2 && isHydrating && (renderLanes2 = workInProgress2.pendingProps, current2 = getHostContext(), returnFiber = current2.ancestorInfo.current, renderLanes2 = null != returnFiber ? validateTextNesting(
10559              renderLanes2,
10560              returnFiber.tag,
10561              current2.ancestorInfo.implicitRootScope
10562            ) : true, current2 = nextHydratableInstance, (returnFiber = !current2) || (returnFiber = canHydrateTextInstance(
10563              current2,
10564              workInProgress2.pendingProps,
10565              rootOrSingletonContext
10566            ), null !== returnFiber ? (workInProgress2.stateNode = returnFiber, hydrationParentFiber = workInProgress2, nextHydratableInstance = null, returnFiber = true) : returnFiber = false, returnFiber = !returnFiber), returnFiber && (renderLanes2 && warnNonHydratedInstance(workInProgress2, current2), throwOnHydrationMismatch(workInProgress2))), null;
10567          case 13:
10568            return updateSuspenseComponent(current2, workInProgress2, renderLanes2);
10569          case 4:
10570            return pushHostContainer(
10571              workInProgress2,
10572              workInProgress2.stateNode.containerInfo
10573            ), returnFiber = workInProgress2.pendingProps, null === current2 ? workInProgress2.child = reconcileChildFibers(
10574              workInProgress2,
10575              null,
10576              returnFiber,
10577              renderLanes2
10578            ) : reconcileChildren(
10579              current2,
10580              workInProgress2,
10581              returnFiber,
10582              renderLanes2
10583            ), workInProgress2.child;
10584          case 11:
10585            return updateForwardRef(
10586              current2,
10587              workInProgress2,
10588              workInProgress2.type,
10589              workInProgress2.pendingProps,
10590              renderLanes2
10591            );
10592          case 7:
10593            return reconcileChildren(
10594              current2,
10595              workInProgress2,
10596              workInProgress2.pendingProps,
10597              renderLanes2
10598            ), workInProgress2.child;
10599          case 8:
10600            return reconcileChildren(
10601              current2,
10602              workInProgress2,
10603              workInProgress2.pendingProps.children,
10604              renderLanes2
10605            ), workInProgress2.child;
10606          case 12:
10607            return workInProgress2.flags |= 4, workInProgress2.flags |= 2048, returnFiber = workInProgress2.stateNode, returnFiber.effectDuration = -0, returnFiber.passiveEffectDuration = -0, reconcileChildren(
10608              current2,
10609              workInProgress2,
10610              workInProgress2.pendingProps.children,
10611              renderLanes2
10612            ), workInProgress2.child;
10613          case 10:
10614            return returnFiber = workInProgress2.type, prevSibling = workInProgress2.pendingProps, prevState = prevSibling.value, "value" in prevSibling || hasWarnedAboutUsingNoValuePropOnContextProvider || (hasWarnedAboutUsingNoValuePropOnContextProvider = true, console.error(
10615              "The `value` prop is required for the `<Context.Provider>`. Did you misspell it or forget to pass it?"
10616            )), pushProvider(workInProgress2, returnFiber, prevState), reconcileChildren(
10617              current2,
10618              workInProgress2,
10619              prevSibling.children,
10620              renderLanes2
10621            ), workInProgress2.child;
10622          case 9:
10623            return prevSibling = workInProgress2.type._context, returnFiber = workInProgress2.pendingProps.children, "function" !== typeof returnFiber && console.error(
10624              "A context consumer was rendered with multiple children, or a child that isn't a function. A context consumer expects a single child that is a function. If you did pass a function, make sure there is no trailing or leading whitespace around it."
10625            ), prepareToReadContext(workInProgress2), prevSibling = readContext(prevSibling), returnFiber = callComponentInDEV(
10626              returnFiber,
10627              prevSibling,
10628              void 0
10629            ), workInProgress2.flags |= 1, reconcileChildren(
10630              current2,
10631              workInProgress2,
10632              returnFiber,
10633              renderLanes2
10634            ), workInProgress2.child;
10635          case 14:
10636            return updateMemoComponent(
10637              current2,
10638              workInProgress2,
10639              workInProgress2.type,
10640              workInProgress2.pendingProps,
10641              renderLanes2
10642            );
10643          case 15:
10644            return updateSimpleMemoComponent(
10645              current2,
10646              workInProgress2,
10647              workInProgress2.type,
10648              workInProgress2.pendingProps,
10649              renderLanes2
10650            );
10651          case 19:
10652            return updateSuspenseListComponent(
10653              current2,
10654              workInProgress2,
10655              renderLanes2
10656            );
10657          case 31:
10658            return updateActivityComponent(current2, workInProgress2, renderLanes2);
10659          case 22:
10660            return updateOffscreenComponent(
10661              current2,
10662              workInProgress2,
10663              renderLanes2,
10664              workInProgress2.pendingProps
10665            );
10666          case 24:
10667            return prepareToReadContext(workInProgress2), returnFiber = readContext(CacheContext), null === current2 ? (prevSibling = peekCacheFromPool(), null === prevSibling && (prevSibling = workInProgressRoot, prevState = createCache(), prevSibling.pooledCache = prevState, retainCache(prevState), null !== prevState && (prevSibling.pooledCacheLanes |= renderLanes2), prevSibling = prevState), workInProgress2.memoizedState = {
10668              parent: returnFiber,
10669              cache: prevSibling
10670            }, initializeUpdateQueue(workInProgress2), pushProvider(workInProgress2, CacheContext, prevSibling)) : (0 !== (current2.lanes & renderLanes2) && (cloneUpdateQueue(current2, workInProgress2), processUpdateQueue(workInProgress2, null, null, renderLanes2), suspendIfUpdateReadFromEntangledAsyncAction()), prevSibling = current2.memoizedState, prevState = workInProgress2.memoizedState, prevSibling.parent !== returnFiber ? (prevSibling = {
10671              parent: returnFiber,
10672              cache: returnFiber
10673            }, workInProgress2.memoizedState = prevSibling, 0 === workInProgress2.lanes && (workInProgress2.memoizedState = workInProgress2.updateQueue.baseState = prevSibling), pushProvider(workInProgress2, CacheContext, returnFiber)) : (returnFiber = prevState.cache, pushProvider(workInProgress2, CacheContext, returnFiber), returnFiber !== prevSibling.cache && propagateContextChanges(
10674              workInProgress2,
10675              [CacheContext],
10676              renderLanes2,
10677              true
10678            ))), reconcileChildren(
10679              current2,
10680              workInProgress2,
10681              workInProgress2.pendingProps.children,
10682              renderLanes2
10683            ), workInProgress2.child;
10684          case 29:
10685            throw workInProgress2.pendingProps;
10686        }
10687        throw Error(
10688          "Unknown unit of work tag (" + workInProgress2.tag + "). This error is likely caused by a bug in React. Please file an issue."
10689        );
10690      }
10691      function markUpdate(workInProgress2) {
10692        workInProgress2.flags |= 4;
10693      }
10694      function preloadInstanceAndSuspendIfNeeded(workInProgress2, type, oldProps, newProps, renderLanes2) {
10695        if (type = (workInProgress2.mode & SuspenseyImagesMode) !== NoMode)
10696          type = false;
10697        if (type) {
10698          if (workInProgress2.flags |= 16777216, (renderLanes2 & 335544128) === renderLanes2)
10699            if (workInProgress2.stateNode.complete) workInProgress2.flags |= 8192;
10700            else if (shouldRemainOnPreviousScreen()) workInProgress2.flags |= 8192;
10701            else
10702              throw suspendedThenable = noopSuspenseyCommitThenable, SuspenseyCommitException;
10703        } else workInProgress2.flags &= -16777217;
10704      }
10705      function preloadResourceAndSuspendIfNeeded(workInProgress2, resource) {
10706        if ("stylesheet" !== resource.type || (resource.state.loading & Inserted) !== NotLoaded)
10707          workInProgress2.flags &= -16777217;
10708        else if (workInProgress2.flags |= 16777216, !preloadResource(resource))
10709          if (shouldRemainOnPreviousScreen()) workInProgress2.flags |= 8192;
10710          else
10711            throw suspendedThenable = noopSuspenseyCommitThenable, SuspenseyCommitException;
10712      }
10713      function scheduleRetryEffect(workInProgress2, retryQueue) {
10714        null !== retryQueue && (workInProgress2.flags |= 4);
10715        workInProgress2.flags & 16384 && (retryQueue = 22 !== workInProgress2.tag ? claimNextRetryLane() : 536870912, workInProgress2.lanes |= retryQueue, workInProgressSuspendedRetryLanes |= retryQueue);
10716      }
10717      function cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {
10718        if (!isHydrating)
10719          switch (renderState.tailMode) {
10720            case "hidden":
10721              hasRenderedATailFallback = renderState.tail;
10722              for (var lastTailNode = null; null !== hasRenderedATailFallback; )
10723                null !== hasRenderedATailFallback.alternate && (lastTailNode = hasRenderedATailFallback), hasRenderedATailFallback = hasRenderedATailFallback.sibling;
10724              null === lastTailNode ? renderState.tail = null : lastTailNode.sibling = null;
10725              break;
10726            case "collapsed":
10727              lastTailNode = renderState.tail;
10728              for (var _lastTailNode = null; null !== lastTailNode; )
10729                null !== lastTailNode.alternate && (_lastTailNode = lastTailNode), lastTailNode = lastTailNode.sibling;
10730              null === _lastTailNode ? hasRenderedATailFallback || null === renderState.tail ? renderState.tail = null : renderState.tail.sibling = null : _lastTailNode.sibling = null;
10731          }
10732      }
10733      function bubbleProperties(completedWork) {
10734        var didBailout = null !== completedWork.alternate && completedWork.alternate.child === completedWork.child, newChildLanes = 0, subtreeFlags = 0;
10735        if (didBailout)
10736          if ((completedWork.mode & ProfileMode) !== NoMode) {
10737            for (var _treeBaseDuration = completedWork.selfBaseDuration, _child2 = completedWork.child; null !== _child2; )
10738              newChildLanes |= _child2.lanes | _child2.childLanes, subtreeFlags |= _child2.subtreeFlags & 65011712, subtreeFlags |= _child2.flags & 65011712, _treeBaseDuration += _child2.treeBaseDuration, _child2 = _child2.sibling;
10739            completedWork.treeBaseDuration = _treeBaseDuration;
10740          } else
10741            for (_treeBaseDuration = completedWork.child; null !== _treeBaseDuration; )
10742              newChildLanes |= _treeBaseDuration.lanes | _treeBaseDuration.childLanes, subtreeFlags |= _treeBaseDuration.subtreeFlags & 65011712, subtreeFlags |= _treeBaseDuration.flags & 65011712, _treeBaseDuration.return = completedWork, _treeBaseDuration = _treeBaseDuration.sibling;
10743        else if ((completedWork.mode & ProfileMode) !== NoMode) {
10744          _treeBaseDuration = completedWork.actualDuration;
10745          _child2 = completedWork.selfBaseDuration;
10746          for (var child = completedWork.child; null !== child; )
10747            newChildLanes |= child.lanes | child.childLanes, subtreeFlags |= child.subtreeFlags, subtreeFlags |= child.flags, _treeBaseDuration += child.actualDuration, _child2 += child.treeBaseDuration, child = child.sibling;
10748          completedWork.actualDuration = _treeBaseDuration;
10749          completedWork.treeBaseDuration = _child2;
10750        } else
10751          for (_treeBaseDuration = completedWork.child; null !== _treeBaseDuration; )
10752            newChildLanes |= _treeBaseDuration.lanes | _treeBaseDuration.childLanes, subtreeFlags |= _treeBaseDuration.subtreeFlags, subtreeFlags |= _treeBaseDuration.flags, _treeBaseDuration.return = completedWork, _treeBaseDuration = _treeBaseDuration.sibling;
10753        completedWork.subtreeFlags |= subtreeFlags;
10754        completedWork.childLanes = newChildLanes;
10755        return didBailout;
10756      }
10757      function completeWork(current2, workInProgress2, renderLanes2) {
10758        var newProps = workInProgress2.pendingProps;
10759        popTreeContext(workInProgress2);
10760        switch (workInProgress2.tag) {
10761          case 16:
10762          case 15:
10763          case 0:
10764          case 11:
10765          case 7:
10766          case 8:
10767          case 12:
10768          case 9:
10769          case 14:
10770            return bubbleProperties(workInProgress2), null;
10771          case 1:
10772            return bubbleProperties(workInProgress2), null;
10773          case 3:
10774            renderLanes2 = workInProgress2.stateNode;
10775            newProps = null;
10776            null !== current2 && (newProps = current2.memoizedState.cache);
10777            workInProgress2.memoizedState.cache !== newProps && (workInProgress2.flags |= 2048);
10778            popProvider(CacheContext, workInProgress2);
10779            popHostContainer(workInProgress2);
10780            renderLanes2.pendingContext && (renderLanes2.context = renderLanes2.pendingContext, renderLanes2.pendingContext = null);
10781            if (null === current2 || null === current2.child)
10782              popHydrationState(workInProgress2) ? (emitPendingHydrationWarnings(), markUpdate(workInProgress2)) : null === current2 || current2.memoizedState.isDehydrated && 0 === (workInProgress2.flags & 256) || (workInProgress2.flags |= 1024, upgradeHydrationErrorsToRecoverable());
10783            bubbleProperties(workInProgress2);
10784            return null;
10785          case 26:
10786            var type = workInProgress2.type, nextResource = workInProgress2.memoizedState;
10787            null === current2 ? (markUpdate(workInProgress2), null !== nextResource ? (bubbleProperties(workInProgress2), preloadResourceAndSuspendIfNeeded(
10788              workInProgress2,
10789              nextResource
10790            )) : (bubbleProperties(workInProgress2), preloadInstanceAndSuspendIfNeeded(
10791              workInProgress2,
10792              type,
10793              null,
10794              newProps,
10795              renderLanes2
10796            ))) : nextResource ? nextResource !== current2.memoizedState ? (markUpdate(workInProgress2), bubbleProperties(workInProgress2), preloadResourceAndSuspendIfNeeded(
10797              workInProgress2,
10798              nextResource
10799            )) : (bubbleProperties(workInProgress2), workInProgress2.flags &= -16777217) : (current2 = current2.memoizedProps, current2 !== newProps && markUpdate(workInProgress2), bubbleProperties(workInProgress2), preloadInstanceAndSuspendIfNeeded(
10800              workInProgress2,
10801              type,
10802              current2,
10803              newProps,
10804              renderLanes2
10805            ));
10806            return null;
10807          case 27:
10808            popHostContext(workInProgress2);
10809            renderLanes2 = requiredContext(rootInstanceStackCursor.current);
10810            type = workInProgress2.type;
10811            if (null !== current2 && null != workInProgress2.stateNode)
10812              current2.memoizedProps !== newProps && markUpdate(workInProgress2);
10813            else {
10814              if (!newProps) {
10815                if (null === workInProgress2.stateNode)
10816                  throw Error(
10817                    "We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue."
10818                  );
10819                bubbleProperties(workInProgress2);
10820                return null;
10821              }
10822              current2 = getHostContext();
10823              popHydrationState(workInProgress2) ? prepareToHydrateHostInstance(workInProgress2, current2) : (current2 = resolveSingletonInstance(
10824                type,
10825                newProps,
10826                renderLanes2,
10827                current2,
10828                true
10829              ), workInProgress2.stateNode = current2, markUpdate(workInProgress2));
10830            }
10831            bubbleProperties(workInProgress2);
10832            return null;
10833          case 5:
10834            popHostContext(workInProgress2);
10835            type = workInProgress2.type;
10836            if (null !== current2 && null != workInProgress2.stateNode)
10837              current2.memoizedProps !== newProps && markUpdate(workInProgress2);
10838            else {
10839              if (!newProps) {
10840                if (null === workInProgress2.stateNode)
10841                  throw Error(
10842                    "We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue."
10843                  );
10844                bubbleProperties(workInProgress2);
10845                return null;
10846              }
10847              var _currentHostContext = getHostContext();
10848              if (popHydrationState(workInProgress2))
10849                prepareToHydrateHostInstance(workInProgress2, _currentHostContext);
10850              else {
10851                nextResource = requiredContext(rootInstanceStackCursor.current);
10852                validateDOMNesting(type, _currentHostContext.ancestorInfo);
10853                _currentHostContext = _currentHostContext.context;
10854                nextResource = getOwnerDocumentFromRootContainer(nextResource);
10855                switch (_currentHostContext) {
10856                  case HostContextNamespaceSvg:
10857                    nextResource = nextResource.createElementNS(
10858                      SVG_NAMESPACE,
10859                      type
10860                    );
10861                    break;
10862                  case HostContextNamespaceMath:
10863                    nextResource = nextResource.createElementNS(
10864                      MATH_NAMESPACE,
10865                      type
10866                    );
10867                    break;
10868                  default:
10869                    switch (type) {
10870                      case "svg":
10871                        nextResource = nextResource.createElementNS(
10872                          SVG_NAMESPACE,
10873                          type
10874                        );
10875                        break;
10876                      case "math":
10877                        nextResource = nextResource.createElementNS(
10878                          MATH_NAMESPACE,
10879                          type
10880                        );
10881                        break;
10882                      case "script":
10883                        nextResource = nextResource.createElement("div");
10884                        nextResource.innerHTML = "<script><\/script>";
10885                        nextResource = nextResource.removeChild(
10886                          nextResource.firstChild
10887                        );
10888                        break;
10889                      case "select":
10890                        nextResource = "string" === typeof newProps.is ? nextResource.createElement("select", {
10891                          is: newProps.is
10892                        }) : nextResource.createElement("select");
10893                        newProps.multiple ? nextResource.multiple = true : newProps.size && (nextResource.size = newProps.size);
10894                        break;
10895                      default:
10896                        nextResource = "string" === typeof newProps.is ? nextResource.createElement(type, {
10897                          is: newProps.is
10898                        }) : nextResource.createElement(type), -1 === type.indexOf("-") && (type !== type.toLowerCase() && console.error(
10899                          "<%s /> is using incorrect casing. Use PascalCase for React components, or lowercase for HTML elements.",
10900                          type
10901                        ), "[object HTMLUnknownElement]" !== Object.prototype.toString.call(nextResource) || hasOwnProperty.call(warnedUnknownTags, type) || (warnedUnknownTags[type] = true, console.error(
10902                          "The tag <%s> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter.",
10903                          type
10904                        )));
10905                    }
10906                }
10907                nextResource[internalInstanceKey] = workInProgress2;
10908                nextResource[internalPropsKey] = newProps;
10909                a: for (_currentHostContext = workInProgress2.child; null !== _currentHostContext; ) {
10910                  if (5 === _currentHostContext.tag || 6 === _currentHostContext.tag)
10911                    nextResource.appendChild(_currentHostContext.stateNode);
10912                  else if (4 !== _currentHostContext.tag && 27 !== _currentHostContext.tag && null !== _currentHostContext.child) {
10913                    _currentHostContext.child.return = _currentHostContext;
10914                    _currentHostContext = _currentHostContext.child;
10915                    continue;
10916                  }
10917                  if (_currentHostContext === workInProgress2) break a;
10918                  for (; null === _currentHostContext.sibling; ) {
10919                    if (null === _currentHostContext.return || _currentHostContext.return === workInProgress2)
10920                      break a;
10921                    _currentHostContext = _currentHostContext.return;
10922                  }
10923                  _currentHostContext.sibling.return = _currentHostContext.return;
10924                  _currentHostContext = _currentHostContext.sibling;
10925                }
10926                workInProgress2.stateNode = nextResource;
10927                a: switch (setInitialProperties(nextResource, type, newProps), type) {
10928                  case "button":
10929                  case "input":
10930                  case "select":
10931                  case "textarea":
10932                    newProps = !!newProps.autoFocus;
10933                    break a;
10934                  case "img":
10935                    newProps = true;
10936                    break a;
10937                  default:
10938                    newProps = false;
10939                }
10940                newProps && markUpdate(workInProgress2);
10941              }
10942            }
10943            bubbleProperties(workInProgress2);
10944            preloadInstanceAndSuspendIfNeeded(
10945              workInProgress2,
10946              workInProgress2.type,
10947              null === current2 ? null : current2.memoizedProps,
10948              workInProgress2.pendingProps,
10949              renderLanes2
10950            );
10951            return null;
10952          case 6:
10953            if (current2 && null != workInProgress2.stateNode)
10954              current2.memoizedProps !== newProps && markUpdate(workInProgress2);
10955            else {
10956              if ("string" !== typeof newProps && null === workInProgress2.stateNode)
10957                throw Error(
10958                  "We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue."
10959                );
10960              current2 = requiredContext(rootInstanceStackCursor.current);
10961              renderLanes2 = getHostContext();
10962              if (popHydrationState(workInProgress2)) {
10963                current2 = workInProgress2.stateNode;
10964                renderLanes2 = workInProgress2.memoizedProps;
10965                type = !didSuspendOrErrorDEV;
10966                newProps = null;
10967                nextResource = hydrationParentFiber;
10968                if (null !== nextResource)
10969                  switch (nextResource.tag) {
10970                    case 3:
10971                      type && (type = diffHydratedTextForDevWarnings(
10972                        current2,
10973                        renderLanes2,
10974                        newProps
10975                      ), null !== type && (buildHydrationDiffNode(workInProgress2, 0).serverProps = type));
10976                      break;
10977                    case 27:
10978                    case 5:
10979                      newProps = nextResource.memoizedProps, type && (type = diffHydratedTextForDevWarnings(
10980                        current2,
10981                        renderLanes2,
10982                        newProps
10983                      ), null !== type && (buildHydrationDiffNode(
10984                        workInProgress2,
10985                        0
10986                      ).serverProps = type));
10987                  }
10988                current2[internalInstanceKey] = workInProgress2;
10989                current2 = current2.nodeValue === renderLanes2 || null !== newProps && true === newProps.suppressHydrationWarning || checkForUnmatchedText(current2.nodeValue, renderLanes2) ? true : false;
10990                current2 || throwOnHydrationMismatch(workInProgress2, true);
10991              } else
10992                type = renderLanes2.ancestorInfo.current, null != type && validateTextNesting(
10993                  newProps,
10994                  type.tag,
10995                  renderLanes2.ancestorInfo.implicitRootScope
10996                ), current2 = getOwnerDocumentFromRootContainer(current2).createTextNode(
10997                  newProps
10998                ), current2[internalInstanceKey] = workInProgress2, workInProgress2.stateNode = current2;
10999            }
11000            bubbleProperties(workInProgress2);
11001            return null;
11002          case 31:
11003            renderLanes2 = workInProgress2.memoizedState;
11004            if (null === current2 || null !== current2.memoizedState) {
11005              newProps = popHydrationState(workInProgress2);
11006              if (null !== renderLanes2) {
11007                if (null === current2) {
11008                  if (!newProps)
11009                    throw Error(
11010                      "A dehydrated suspense component was completed without a hydrated node. This is probably a bug in React."
11011                    );
11012                  current2 = workInProgress2.memoizedState;
11013                  current2 = null !== current2 ? current2.dehydrated : null;
11014                  if (!current2)
11015                    throw Error(
11016                      "Expected to have a hydrated activity instance. This error is likely caused by a bug in React. Please file an issue."
11017                    );
11018                  current2[internalInstanceKey] = workInProgress2;
11019                  bubbleProperties(workInProgress2);
11020                  (workInProgress2.mode & ProfileMode) !== NoMode && null !== renderLanes2 && (current2 = workInProgress2.child, null !== current2 && (workInProgress2.treeBaseDuration -= current2.treeBaseDuration));
11021                } else
11022                  emitPendingHydrationWarnings(), resetHydrationState(), 0 === (workInProgress2.flags & 128) && (renderLanes2 = workInProgress2.memoizedState = null), workInProgress2.flags |= 4, bubbleProperties(workInProgress2), (workInProgress2.mode & ProfileMode) !== NoMode && null !== renderLanes2 && (current2 = workInProgress2.child, null !== current2 && (workInProgress2.treeBaseDuration -= current2.treeBaseDuration));
11023                current2 = false;
11024              } else
11025                renderLanes2 = upgradeHydrationErrorsToRecoverable(), null !== current2 && null !== current2.memoizedState && (current2.memoizedState.hydrationErrors = renderLanes2), current2 = true;
11026              if (!current2) {
11027                if (workInProgress2.flags & 256)
11028                  return popSuspenseHandler(workInProgress2), workInProgress2;
11029                popSuspenseHandler(workInProgress2);
11030                return null;
11031              }
11032              if (0 !== (workInProgress2.flags & 128))
11033                throw Error(
11034                  "Client rendering an Activity suspended it again. This is a bug in React."
11035                );
11036            }
11037            bubbleProperties(workInProgress2);
11038            return null;
11039          case 13:
11040            newProps = workInProgress2.memoizedState;
11041            if (null === current2 || null !== current2.memoizedState && null !== current2.memoizedState.dehydrated) {
11042              type = newProps;
11043              nextResource = popHydrationState(workInProgress2);
11044              if (null !== type && null !== type.dehydrated) {
11045                if (null === current2) {
11046                  if (!nextResource)
11047                    throw Error(
11048                      "A dehydrated suspense component was completed without a hydrated node. This is probably a bug in React."
11049                    );
11050                  nextResource = workInProgress2.memoizedState;
11051                  nextResource = null !== nextResource ? nextResource.dehydrated : null;
11052                  if (!nextResource)
11053                    throw Error(
11054                      "Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue."
11055                    );
11056                  nextResource[internalInstanceKey] = workInProgress2;
11057                  bubbleProperties(workInProgress2);
11058                  (workInProgress2.mode & ProfileMode) !== NoMode && null !== type && (type = workInProgress2.child, null !== type && (workInProgress2.treeBaseDuration -= type.treeBaseDuration));
11059                } else
11060                  emitPendingHydrationWarnings(), resetHydrationState(), 0 === (workInProgress2.flags & 128) && (type = workInProgress2.memoizedState = null), workInProgress2.flags |= 4, bubbleProperties(workInProgress2), (workInProgress2.mode & ProfileMode) !== NoMode && null !== type && (type = workInProgress2.child, null !== type && (workInProgress2.treeBaseDuration -= type.treeBaseDuration));
11061                type = false;
11062              } else
11063                type = upgradeHydrationErrorsToRecoverable(), null !== current2 && null !== current2.memoizedState && (current2.memoizedState.hydrationErrors = type), type = true;
11064              if (!type) {
11065                if (workInProgress2.flags & 256)
11066                  return popSuspenseHandler(workInProgress2), workInProgress2;
11067                popSuspenseHandler(workInProgress2);
11068                return null;
11069              }
11070            }
11071            popSuspenseHandler(workInProgress2);
11072            if (0 !== (workInProgress2.flags & 128))
11073              return workInProgress2.lanes = renderLanes2, (workInProgress2.mode & ProfileMode) !== NoMode && transferActualDuration(workInProgress2), workInProgress2;
11074            renderLanes2 = null !== newProps;
11075            current2 = null !== current2 && null !== current2.memoizedState;
11076            renderLanes2 && (newProps = workInProgress2.child, type = null, null !== newProps.alternate && null !== newProps.alternate.memoizedState && null !== newProps.alternate.memoizedState.cachePool && (type = newProps.alternate.memoizedState.cachePool.pool), nextResource = null, null !== newProps.memoizedState && null !== newProps.memoizedState.cachePool && (nextResource = newProps.memoizedState.cachePool.pool), nextResource !== type && (newProps.flags |= 2048));
11077            renderLanes2 !== current2 && renderLanes2 && (workInProgress2.child.flags |= 8192);
11078            scheduleRetryEffect(workInProgress2, workInProgress2.updateQueue);
11079            bubbleProperties(workInProgress2);
11080            (workInProgress2.mode & ProfileMode) !== NoMode && renderLanes2 && (current2 = workInProgress2.child, null !== current2 && (workInProgress2.treeBaseDuration -= current2.treeBaseDuration));
11081            return null;
11082          case 4:
11083            return popHostContainer(workInProgress2), null === current2 && listenToAllSupportedEvents(
11084              workInProgress2.stateNode.containerInfo
11085            ), bubbleProperties(workInProgress2), null;
11086          case 10:
11087            return popProvider(workInProgress2.type, workInProgress2), bubbleProperties(workInProgress2), null;
11088          case 19:
11089            pop(suspenseStackCursor, workInProgress2);
11090            newProps = workInProgress2.memoizedState;
11091            if (null === newProps) return bubbleProperties(workInProgress2), null;
11092            type = 0 !== (workInProgress2.flags & 128);
11093            nextResource = newProps.rendering;
11094            if (null === nextResource)
11095              if (type) cutOffTailIfNeeded(newProps, false);
11096              else {
11097                if (workInProgressRootExitStatus !== RootInProgress || null !== current2 && 0 !== (current2.flags & 128))
11098                  for (current2 = workInProgress2.child; null !== current2; ) {
11099                    nextResource = findFirstSuspended(current2);
11100                    if (null !== nextResource) {
11101                      workInProgress2.flags |= 128;
11102                      cutOffTailIfNeeded(newProps, false);
11103                      current2 = nextResource.updateQueue;
11104                      workInProgress2.updateQueue = current2;
11105                      scheduleRetryEffect(workInProgress2, current2);
11106                      workInProgress2.subtreeFlags = 0;
11107                      current2 = renderLanes2;
11108                      for (renderLanes2 = workInProgress2.child; null !== renderLanes2; )
11109                        resetWorkInProgress(renderLanes2, current2), renderLanes2 = renderLanes2.sibling;
11110                      push(
11111                        suspenseStackCursor,
11112                        suspenseStackCursor.current & SubtreeSuspenseContextMask | ForceSuspenseFallback,
11113                        workInProgress2
11114                      );
11115                      isHydrating && pushTreeFork(workInProgress2, newProps.treeForkCount);
11116                      return workInProgress2.child;
11117                    }
11118                    current2 = current2.sibling;
11119                  }
11120                null !== newProps.tail && now$1() > workInProgressRootRenderTargetTime && (workInProgress2.flags |= 128, type = true, cutOffTailIfNeeded(newProps, false), workInProgress2.lanes = 4194304);
11121              }
11122            else {
11123              if (!type)
11124                if (current2 = findFirstSuspended(nextResource), null !== current2) {
11125                  if (workInProgress2.flags |= 128, type = true, current2 = current2.updateQueue, workInProgress2.updateQueue = current2, scheduleRetryEffect(workInProgress2, current2), cutOffTailIfNeeded(newProps, true), null === newProps.tail && "hidden" === newProps.tailMode && !nextResource.alternate && !isHydrating)
11126                    return bubbleProperties(workInProgress2), null;
11127                } else
11128                  2 * now$1() - newProps.renderingStartTime > workInProgressRootRenderTargetTime && 536870912 !== renderLanes2 && (workInProgress2.flags |= 128, type = true, cutOffTailIfNeeded(newProps, false), workInProgress2.lanes = 4194304);
11129              newProps.isBackwards ? (nextResource.sibling = workInProgress2.child, workInProgress2.child = nextResource) : (current2 = newProps.last, null !== current2 ? current2.sibling = nextResource : workInProgress2.child = nextResource, newProps.last = nextResource);
11130            }
11131            if (null !== newProps.tail)
11132              return current2 = newProps.tail, newProps.rendering = current2, newProps.tail = current2.sibling, newProps.renderingStartTime = now$1(), current2.sibling = null, renderLanes2 = suspenseStackCursor.current, renderLanes2 = type ? renderLanes2 & SubtreeSuspenseContextMask | ForceSuspenseFallback : renderLanes2 & SubtreeSuspenseContextMask, push(suspenseStackCursor, renderLanes2, workInProgress2), isHydrating && pushTreeFork(workInProgress2, newProps.treeForkCount), current2;
11133            bubbleProperties(workInProgress2);
11134            return null;
11135          case 22:
11136          case 23:
11137            return popSuspenseHandler(workInProgress2), popHiddenContext(workInProgress2), newProps = null !== workInProgress2.memoizedState, null !== current2 ? null !== current2.memoizedState !== newProps && (workInProgress2.flags |= 8192) : newProps && (workInProgress2.flags |= 8192), newProps ? 0 !== (renderLanes2 & 536870912) && 0 === (workInProgress2.flags & 128) && (bubbleProperties(workInProgress2), workInProgress2.subtreeFlags & 6 && (workInProgress2.flags |= 8192)) : bubbleProperties(workInProgress2), renderLanes2 = workInProgress2.updateQueue, null !== renderLanes2 && scheduleRetryEffect(workInProgress2, renderLanes2.retryQueue), renderLanes2 = null, null !== current2 && null !== current2.memoizedState && null !== current2.memoizedState.cachePool && (renderLanes2 = current2.memoizedState.cachePool.pool), newProps = null, null !== workInProgress2.memoizedState && null !== workInProgress2.memoizedState.cachePool && (newProps = workInProgress2.memoizedState.cachePool.pool), newProps !== renderLanes2 && (workInProgress2.flags |= 2048), null !== current2 && pop(resumedCache, workInProgress2), null;
11138          case 24:
11139            return renderLanes2 = null, null !== current2 && (renderLanes2 = current2.memoizedState.cache), workInProgress2.memoizedState.cache !== renderLanes2 && (workInProgress2.flags |= 2048), popProvider(CacheContext, workInProgress2), bubbleProperties(workInProgress2), null;
11140          case 25:
11141            return null;
11142          case 30:
11143            return null;
11144        }
11145        throw Error(
11146          "Unknown unit of work tag (" + workInProgress2.tag + "). This error is likely caused by a bug in React. Please file an issue."
11147        );
11148      }
11149      function unwindWork(current2, workInProgress2) {
11150        popTreeContext(workInProgress2);
11151        switch (workInProgress2.tag) {
11152          case 1:
11153            return current2 = workInProgress2.flags, current2 & 65536 ? (workInProgress2.flags = current2 & -65537 | 128, (workInProgress2.mode & ProfileMode) !== NoMode && transferActualDuration(workInProgress2), workInProgress2) : null;
11154          case 3:
11155            return popProvider(CacheContext, workInProgress2), popHostContainer(workInProgress2), current2 = workInProgress2.flags, 0 !== (current2 & 65536) && 0 === (current2 & 128) ? (workInProgress2.flags = current2 & -65537 | 128, workInProgress2) : null;
11156          case 26:
11157          case 27:
11158          case 5:
11159            return popHostContext(workInProgress2), null;
11160          case 31:
11161            if (null !== workInProgress2.memoizedState) {
11162              popSuspenseHandler(workInProgress2);
11163              if (null === workInProgress2.alternate)
11164                throw Error(
11165                  "Threw in newly mounted dehydrated component. This is likely a bug in React. Please file an issue."
11166                );
11167              resetHydrationState();
11168            }
11169            current2 = workInProgress2.flags;
11170            return current2 & 65536 ? (workInProgress2.flags = current2 & -65537 | 128, (workInProgress2.mode & ProfileMode) !== NoMode && transferActualDuration(workInProgress2), workInProgress2) : null;
11171          case 13:
11172            popSuspenseHandler(workInProgress2);
11173            current2 = workInProgress2.memoizedState;
11174            if (null !== current2 && null !== current2.dehydrated) {
11175              if (null === workInProgress2.alternate)
11176                throw Error(
11177                  "Threw in newly mounted dehydrated component. This is likely a bug in React. Please file an issue."
11178                );
11179              resetHydrationState();
11180            }
11181            current2 = workInProgress2.flags;
11182            return current2 & 65536 ? (workInProgress2.flags = current2 & -65537 | 128, (workInProgress2.mode & ProfileMode) !== NoMode && transferActualDuration(workInProgress2), workInProgress2) : null;
11183          case 19:
11184            return pop(suspenseStackCursor, workInProgress2), null;
11185          case 4:
11186            return popHostContainer(workInProgress2), null;
11187          case 10:
11188            return popProvider(workInProgress2.type, workInProgress2), null;
11189          case 22:
11190          case 23:
11191            return popSuspenseHandler(workInProgress2), popHiddenContext(workInProgress2), null !== current2 && pop(resumedCache, workInProgress2), current2 = workInProgress2.flags, current2 & 65536 ? (workInProgress2.flags = current2 & -65537 | 128, (workInProgress2.mode & ProfileMode) !== NoMode && transferActualDuration(workInProgress2), workInProgress2) : null;
11192          case 24:
11193            return popProvider(CacheContext, workInProgress2), null;
11194          case 25:
11195            return null;
11196          default:
11197            return null;
11198        }
11199      }
11200      function unwindInterruptedWork(current2, interruptedWork) {
11201        popTreeContext(interruptedWork);
11202        switch (interruptedWork.tag) {
11203          case 3:
11204            popProvider(CacheContext, interruptedWork);
11205            popHostContainer(interruptedWork);
11206            break;
11207          case 26:
11208          case 27:
11209          case 5:
11210            popHostContext(interruptedWork);
11211            break;
11212          case 4:
11213            popHostContainer(interruptedWork);
11214            break;
11215          case 31:
11216            null !== interruptedWork.memoizedState && popSuspenseHandler(interruptedWork);
11217            break;
11218          case 13:
11219            popSuspenseHandler(interruptedWork);
11220            break;
11221          case 19:
11222            pop(suspenseStackCursor, interruptedWork);
11223            break;
11224          case 10:
11225            popProvider(interruptedWork.type, interruptedWork);
11226            break;
11227          case 22:
11228          case 23:
11229            popSuspenseHandler(interruptedWork);
11230            popHiddenContext(interruptedWork);
11231            null !== current2 && pop(resumedCache, interruptedWork);
11232            break;
11233          case 24:
11234            popProvider(CacheContext, interruptedWork);
11235        }
11236      }
11237      function shouldProfile(current2) {
11238        return (current2.mode & ProfileMode) !== NoMode;
11239      }
11240      function commitHookLayoutEffects(finishedWork, hookFlags) {
11241        shouldProfile(finishedWork) ? (startEffectTimer(), commitHookEffectListMount(hookFlags, finishedWork), recordEffectDuration()) : commitHookEffectListMount(hookFlags, finishedWork);
11242      }
11243      function commitHookLayoutUnmountEffects(finishedWork, nearestMountedAncestor, hookFlags) {
11244        shouldProfile(finishedWork) ? (startEffectTimer(), commitHookEffectListUnmount(
11245          hookFlags,
11246          finishedWork,
11247          nearestMountedAncestor
11248        ), recordEffectDuration()) : commitHookEffectListUnmount(
11249          hookFlags,
11250          finishedWork,
11251          nearestMountedAncestor
11252        );
11253      }
11254      function commitHookEffectListMount(flags, finishedWork) {
11255        try {
11256          var updateQueue = finishedWork.updateQueue, lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;
11257          if (null !== lastEffect) {
11258            var firstEffect = lastEffect.next;
11259            updateQueue = firstEffect;
11260            do {
11261              if ((updateQueue.tag & flags) === flags && (lastEffect = void 0, (flags & Insertion) !== NoFlags && (isRunningInsertionEffect = true), lastEffect = runWithFiberInDEV(
11262                finishedWork,
11263                callCreateInDEV,
11264                updateQueue
11265              ), (flags & Insertion) !== NoFlags && (isRunningInsertionEffect = false), void 0 !== lastEffect && "function" !== typeof lastEffect)) {
11266                var hookName = void 0;
11267                hookName = 0 !== (updateQueue.tag & Layout) ? "useLayoutEffect" : 0 !== (updateQueue.tag & Insertion) ? "useInsertionEffect" : "useEffect";
11268                var addendum = void 0;
11269                addendum = null === lastEffect ? " You returned null. If your effect does not require clean up, return undefined (or nothing)." : "function" === typeof lastEffect.then ? "\n\nIt looks like you wrote " + hookName + "(async () => ...) or returned a Promise. Instead, write the async function inside your effect and call it immediately:\n\n" + hookName + "(() => {\n  async function fetchData() {\n    // You can await here\n    const response = await MyAPI.getData(someId);\n    // ...\n  }\n  fetchData();\n}, [someId]); // Or [] if effect doesn't need props or state\n\nLearn more about data fetching with Hooks: https://react.dev/link/hooks-data-fetching" : " You returned: " + lastEffect;
11270                runWithFiberInDEV(
11271                  finishedWork,
11272                  function(n3, a3) {
11273                    console.error(
11274                      "%s must not return anything besides a function, which is used for clean-up.%s",
11275                      n3,
11276                      a3
11277                    );
11278                  },
11279                  hookName,
11280                  addendum
11281                );
11282              }
11283              updateQueue = updateQueue.next;
11284            } while (updateQueue !== firstEffect);
11285          }
11286        } catch (error2) {
11287          captureCommitPhaseError(finishedWork, finishedWork.return, error2);
11288        }
11289      }
11290      function commitHookEffectListUnmount(flags, finishedWork, nearestMountedAncestor) {
11291        try {
11292          var updateQueue = finishedWork.updateQueue, lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;
11293          if (null !== lastEffect) {
11294            var firstEffect = lastEffect.next;
11295            updateQueue = firstEffect;
11296            do {
11297              if ((updateQueue.tag & flags) === flags) {
11298                var inst = updateQueue.inst, destroy = inst.destroy;
11299                void 0 !== destroy && (inst.destroy = void 0, (flags & Insertion) !== NoFlags && (isRunningInsertionEffect = true), lastEffect = finishedWork, runWithFiberInDEV(
11300                  lastEffect,
11301                  callDestroyInDEV,
11302                  lastEffect,
11303                  nearestMountedAncestor,
11304                  destroy
11305                ), (flags & Insertion) !== NoFlags && (isRunningInsertionEffect = false));
11306              }
11307              updateQueue = updateQueue.next;
11308            } while (updateQueue !== firstEffect);
11309          }
11310        } catch (error2) {
11311          captureCommitPhaseError(finishedWork, finishedWork.return, error2);
11312        }
11313      }
11314      function commitHookPassiveMountEffects(finishedWork, hookFlags) {
11315        shouldProfile(finishedWork) ? (startEffectTimer(), commitHookEffectListMount(hookFlags, finishedWork), recordEffectDuration()) : commitHookEffectListMount(hookFlags, finishedWork);
11316      }
11317      function commitHookPassiveUnmountEffects(finishedWork, nearestMountedAncestor, hookFlags) {
11318        shouldProfile(finishedWork) ? (startEffectTimer(), commitHookEffectListUnmount(
11319          hookFlags,
11320          finishedWork,
11321          nearestMountedAncestor
11322        ), recordEffectDuration()) : commitHookEffectListUnmount(
11323          hookFlags,
11324          finishedWork,
11325          nearestMountedAncestor
11326        );
11327      }
11328      function commitClassCallbacks(finishedWork) {
11329        var updateQueue = finishedWork.updateQueue;
11330        if (null !== updateQueue) {
11331          var instance = finishedWork.stateNode;
11332          finishedWork.type.defaultProps || "ref" in finishedWork.memoizedProps || didWarnAboutReassigningProps || (instance.props !== finishedWork.memoizedProps && console.error(
11333            "Expected %s props to match memoized props before processing the update queue. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",
11334            getComponentNameFromFiber(finishedWork) || "instance"
11335          ), instance.state !== finishedWork.memoizedState && console.error(
11336            "Expected %s state to match memoized state before processing the update queue. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.",
11337            getComponentNameFromFiber(finishedWork) || "instance"
11338          ));
11339          try {
11340            runWithFiberInDEV(
11341              finishedWork,
11342              commitCallbacks,
11343              updateQueue,
11344              instance
11345            );
11346          } catch (error2) {
11347            captureCommitPhaseError(finishedWork, finishedWork.return, error2);
11348          }
11349        }
11350      }
11351      function callGetSnapshotBeforeUpdates(instance, prevProps, prevState) {
11352        return instance.getSnapshotBeforeUpdate(prevProps, prevState);
11353      }
11354      function commitClassSnapshot(finishedWork, current2) {
11355        var prevProps = current2.memoizedProps, prevState = current2.memoizedState;
11356        current2 = finishedWork.stateNode;
11357        finishedWork.type.defaultProps || "ref" in finishedWork.memoizedProps || didWarnAboutReassigningProps || (current2.props !== finishedWork.memoizedProps && console.error(
11358          "Expected %s props to match memoized props before getSnapshotBeforeUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",
11359          getComponentNameFromFiber(finishedWork) || "instance"
11360        ), current2.state !== finishedWork.memoizedState && console.error(
11361          "Expected %s state to match memoized state before getSnapshotBeforeUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.",
11362          getComponentNameFromFiber(finishedWork) || "instance"
11363        ));
11364        try {
11365          var resolvedPrevProps = resolveClassComponentProps(
11366            finishedWork.type,
11367            prevProps
11368          );
11369          var snapshot = runWithFiberInDEV(
11370            finishedWork,
11371            callGetSnapshotBeforeUpdates,
11372            current2,
11373            resolvedPrevProps,
11374            prevState
11375          );
11376          prevProps = didWarnAboutUndefinedSnapshotBeforeUpdate;
11377          void 0 !== snapshot || prevProps.has(finishedWork.type) || (prevProps.add(finishedWork.type), runWithFiberInDEV(finishedWork, function() {
11378            console.error(
11379              "%s.getSnapshotBeforeUpdate(): A snapshot value (or null) must be returned. You have returned undefined.",
11380              getComponentNameFromFiber(finishedWork)
11381            );
11382          }));
11383          current2.__reactInternalSnapshotBeforeUpdate = snapshot;
11384        } catch (error2) {
11385          captureCommitPhaseError(finishedWork, finishedWork.return, error2);
11386        }
11387      }
11388      function safelyCallComponentWillUnmount(current2, nearestMountedAncestor, instance) {
11389        instance.props = resolveClassComponentProps(
11390          current2.type,
11391          current2.memoizedProps
11392        );
11393        instance.state = current2.memoizedState;
11394        shouldProfile(current2) ? (startEffectTimer(), runWithFiberInDEV(
11395          current2,
11396          callComponentWillUnmountInDEV,
11397          current2,
11398          nearestMountedAncestor,
11399          instance
11400        ), recordEffectDuration()) : runWithFiberInDEV(
11401          current2,
11402          callComponentWillUnmountInDEV,
11403          current2,
11404          nearestMountedAncestor,
11405          instance
11406        );
11407      }
11408      function commitAttachRef(finishedWork) {
11409        var ref = finishedWork.ref;
11410        if (null !== ref) {
11411          switch (finishedWork.tag) {
11412            case 26:
11413            case 27:
11414            case 5:
11415              var instanceToUse = finishedWork.stateNode;
11416              break;
11417            case 30:
11418              instanceToUse = finishedWork.stateNode;
11419              break;
11420            default:
11421              instanceToUse = finishedWork.stateNode;
11422          }
11423          if ("function" === typeof ref)
11424            if (shouldProfile(finishedWork))
11425              try {
11426                startEffectTimer(), finishedWork.refCleanup = ref(instanceToUse);
11427              } finally {
11428                recordEffectDuration();
11429              }
11430            else finishedWork.refCleanup = ref(instanceToUse);
11431          else
11432            "string" === typeof ref ? console.error("String refs are no longer supported.") : ref.hasOwnProperty("current") || console.error(
11433              "Unexpected ref object provided for %s. Use either a ref-setter function or React.createRef().",
11434              getComponentNameFromFiber(finishedWork)
11435            ), ref.current = instanceToUse;
11436        }
11437      }
11438      function safelyAttachRef(current2, nearestMountedAncestor) {
11439        try {
11440          runWithFiberInDEV(current2, commitAttachRef, current2);
11441        } catch (error2) {
11442          captureCommitPhaseError(current2, nearestMountedAncestor, error2);
11443        }
11444      }
11445      function safelyDetachRef(current2, nearestMountedAncestor) {
11446        var ref = current2.ref, refCleanup = current2.refCleanup;
11447        if (null !== ref)
11448          if ("function" === typeof refCleanup)
11449            try {
11450              if (shouldProfile(current2))
11451                try {
11452                  startEffectTimer(), runWithFiberInDEV(current2, refCleanup);
11453                } finally {
11454                  recordEffectDuration(current2);
11455                }
11456              else runWithFiberInDEV(current2, refCleanup);
11457            } catch (error2) {
11458              captureCommitPhaseError(current2, nearestMountedAncestor, error2);
11459            } finally {
11460              current2.refCleanup = null, current2 = current2.alternate, null != current2 && (current2.refCleanup = null);
11461            }
11462          else if ("function" === typeof ref)
11463            try {
11464              if (shouldProfile(current2))
11465                try {
11466                  startEffectTimer(), runWithFiberInDEV(current2, ref, null);
11467                } finally {
11468                  recordEffectDuration(current2);
11469                }
11470              else runWithFiberInDEV(current2, ref, null);
11471            } catch (error$7) {
11472              captureCommitPhaseError(current2, nearestMountedAncestor, error$7);
11473            }
11474          else ref.current = null;
11475      }
11476      function commitProfiler(finishedWork, current2, commitStartTime2, effectDuration) {
11477        var _finishedWork$memoize = finishedWork.memoizedProps, id = _finishedWork$memoize.id, onCommit = _finishedWork$memoize.onCommit;
11478        _finishedWork$memoize = _finishedWork$memoize.onRender;
11479        current2 = null === current2 ? "mount" : "update";
11480        currentUpdateIsNested && (current2 = "nested-update");
11481        "function" === typeof _finishedWork$memoize && _finishedWork$memoize(
11482          id,
11483          current2,
11484          finishedWork.actualDuration,
11485          finishedWork.treeBaseDuration,
11486          finishedWork.actualStartTime,
11487          commitStartTime2
11488        );
11489        "function" === typeof onCommit && onCommit(id, current2, effectDuration, commitStartTime2);
11490      }
11491      function commitProfilerPostCommitImpl(finishedWork, current2, commitStartTime2, passiveEffectDuration) {
11492        var _finishedWork$memoize2 = finishedWork.memoizedProps;
11493        finishedWork = _finishedWork$memoize2.id;
11494        _finishedWork$memoize2 = _finishedWork$memoize2.onPostCommit;
11495        current2 = null === current2 ? "mount" : "update";
11496        currentUpdateIsNested && (current2 = "nested-update");
11497        "function" === typeof _finishedWork$memoize2 && _finishedWork$memoize2(
11498          finishedWork,
11499          current2,
11500          passiveEffectDuration,
11501          commitStartTime2
11502        );
11503      }
11504      function commitHostMount(finishedWork) {
11505        var type = finishedWork.type, props = finishedWork.memoizedProps, instance = finishedWork.stateNode;
11506        try {
11507          runWithFiberInDEV(
11508            finishedWork,
11509            commitMount,
11510            instance,
11511            type,
11512            props,
11513            finishedWork
11514          );
11515        } catch (error2) {
11516          captureCommitPhaseError(finishedWork, finishedWork.return, error2);
11517        }
11518      }
11519      function commitHostUpdate(finishedWork, newProps, oldProps) {
11520        try {
11521          runWithFiberInDEV(
11522            finishedWork,
11523            commitUpdate,
11524            finishedWork.stateNode,
11525            finishedWork.type,
11526            oldProps,
11527            newProps,
11528            finishedWork
11529          );
11530        } catch (error2) {
11531          captureCommitPhaseError(finishedWork, finishedWork.return, error2);
11532        }
11533      }
11534      function isHostParent(fiber) {
11535        return 5 === fiber.tag || 3 === fiber.tag || 26 === fiber.tag || 27 === fiber.tag && isSingletonScope(fiber.type) || 4 === fiber.tag;
11536      }
11537      function getHostSibling(fiber) {
11538        a: for (; ; ) {
11539          for (; null === fiber.sibling; ) {
11540            if (null === fiber.return || isHostParent(fiber.return)) return null;
11541            fiber = fiber.return;
11542          }
11543          fiber.sibling.return = fiber.return;
11544          for (fiber = fiber.sibling; 5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag; ) {
11545            if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;
11546            if (fiber.flags & 2) continue a;
11547            if (null === fiber.child || 4 === fiber.tag) continue a;
11548            else fiber.child.return = fiber, fiber = fiber.child;
11549          }
11550          if (!(fiber.flags & 2)) return fiber.stateNode;
11551        }
11552      }
11553      function insertOrAppendPlacementNodeIntoContainer(node, before, parent) {
11554        var tag = node.tag;
11555        if (5 === tag || 6 === tag)
11556          node = node.stateNode, before ? (warnForReactChildrenConflict(parent), (9 === parent.nodeType ? parent.body : "HTML" === parent.nodeName ? parent.ownerDocument.body : parent).insertBefore(node, before)) : (warnForReactChildrenConflict(parent), before = 9 === parent.nodeType ? parent.body : "HTML" === parent.nodeName ? parent.ownerDocument.body : parent, before.appendChild(node), parent = parent._reactRootContainer, null !== parent && void 0 !== parent || null !== before.onclick || (before.onclick = noop$1));
11557        else if (4 !== tag && (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode, before = null), node = node.child, null !== node))
11558          for (insertOrAppendPlacementNodeIntoContainer(node, before, parent), node = node.sibling; null !== node; )
11559            insertOrAppendPlacementNodeIntoContainer(node, before, parent), node = node.sibling;
11560      }
11561      function insertOrAppendPlacementNode(node, before, parent) {
11562        var tag = node.tag;
11563        if (5 === tag || 6 === tag)
11564          node = node.stateNode, before ? parent.insertBefore(node, before) : parent.appendChild(node);
11565        else if (4 !== tag && (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode), node = node.child, null !== node))
11566          for (insertOrAppendPlacementNode(node, before, parent), node = node.sibling; null !== node; )
11567            insertOrAppendPlacementNode(node, before, parent), node = node.sibling;
11568      }
11569      function commitPlacement(finishedWork) {
11570        for (var hostParentFiber, parentFiber = finishedWork.return; null !== parentFiber; ) {
11571          if (isHostParent(parentFiber)) {
11572            hostParentFiber = parentFiber;
11573            break;
11574          }
11575          parentFiber = parentFiber.return;
11576        }
11577        if (null == hostParentFiber)
11578          throw Error(
11579            "Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue."
11580          );
11581        switch (hostParentFiber.tag) {
11582          case 27:
11583            hostParentFiber = hostParentFiber.stateNode;
11584            parentFiber = getHostSibling(finishedWork);
11585            insertOrAppendPlacementNode(
11586              finishedWork,
11587              parentFiber,
11588              hostParentFiber
11589            );
11590            break;
11591          case 5:
11592            parentFiber = hostParentFiber.stateNode;
11593            hostParentFiber.flags & 32 && (resetTextContent(parentFiber), hostParentFiber.flags &= -33);
11594            hostParentFiber = getHostSibling(finishedWork);
11595            insertOrAppendPlacementNode(
11596              finishedWork,
11597              hostParentFiber,
11598              parentFiber
11599            );
11600            break;
11601          case 3:
11602          case 4:
11603            hostParentFiber = hostParentFiber.stateNode.containerInfo;
11604            parentFiber = getHostSibling(finishedWork);
11605            insertOrAppendPlacementNodeIntoContainer(
11606              finishedWork,
11607              parentFiber,
11608              hostParentFiber
11609            );
11610            break;
11611          default:
11612            throw Error(
11613              "Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue."
11614            );
11615        }
11616      }
11617      function commitHostSingletonAcquisition(finishedWork) {
11618        var singleton = finishedWork.stateNode, props = finishedWork.memoizedProps;
11619        try {
11620          runWithFiberInDEV(
11621            finishedWork,
11622            acquireSingletonInstance,
11623            finishedWork.type,
11624            props,
11625            singleton,
11626            finishedWork
11627          );
11628        } catch (error2) {
11629          captureCommitPhaseError(finishedWork, finishedWork.return, error2);
11630        }
11631      }
11632      function isHydratingParent(current2, finishedWork) {
11633        return 31 === finishedWork.tag ? (finishedWork = finishedWork.memoizedState, null !== current2.memoizedState && null === finishedWork) : 13 === finishedWork.tag ? (current2 = current2.memoizedState, finishedWork = finishedWork.memoizedState, null !== current2 && null !== current2.dehydrated && (null === finishedWork || null === finishedWork.dehydrated)) : 3 === finishedWork.tag ? current2.memoizedState.isDehydrated && 0 === (finishedWork.flags & 256) : false;
11634      }
11635      function commitBeforeMutationEffects(root3, firstChild) {
11636        root3 = root3.containerInfo;
11637        eventsEnabled = _enabled;
11638        root3 = getActiveElementDeep(root3);
11639        if (hasSelectionCapabilities(root3)) {
11640          if ("selectionStart" in root3)
11641            var JSCompiler_temp = {
11642              start: root3.selectionStart,
11643              end: root3.selectionEnd
11644            };
11645          else
11646            a: {
11647              JSCompiler_temp = (JSCompiler_temp = root3.ownerDocument) && JSCompiler_temp.defaultView || window;
11648              var selection = JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();
11649              if (selection && 0 !== selection.rangeCount) {
11650                JSCompiler_temp = selection.anchorNode;
11651                var anchorOffset = selection.anchorOffset, focusNode = selection.focusNode;
11652                selection = selection.focusOffset;
11653                try {
11654                  JSCompiler_temp.nodeType, focusNode.nodeType;
11655                } catch (e$2) {
11656                  JSCompiler_temp = null;
11657                  break a;
11658                }
11659                var length = 0, start2 = -1, end = -1, indexWithinAnchor = 0, indexWithinFocus = 0, node = root3, parentNode = null;
11660                b: for (; ; ) {
11661                  for (var next; ; ) {
11662                    node !== JSCompiler_temp || 0 !== anchorOffset && 3 !== node.nodeType || (start2 = length + anchorOffset);
11663                    node !== focusNode || 0 !== selection && 3 !== node.nodeType || (end = length + selection);
11664                    3 === node.nodeType && (length += node.nodeValue.length);
11665                    if (null === (next = node.firstChild)) break;
11666                    parentNode = node;
11667                    node = next;
11668                  }
11669                  for (; ; ) {
11670                    if (node === root3) break b;
11671                    parentNode === JSCompiler_temp && ++indexWithinAnchor === anchorOffset && (start2 = length);
11672                    parentNode === focusNode && ++indexWithinFocus === selection && (end = length);
11673                    if (null !== (next = node.nextSibling)) break;
11674                    node = parentNode;
11675                    parentNode = node.parentNode;
11676                  }
11677                  node = next;
11678                }
11679                JSCompiler_temp = -1 === start2 || -1 === end ? null : { start: start2, end };
11680              } else JSCompiler_temp = null;
11681            }
11682          JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };
11683        } else JSCompiler_temp = null;
11684        selectionInformation = {
11685          focusedElem: root3,
11686          selectionRange: JSCompiler_temp
11687        };
11688        _enabled = false;
11689        for (nextEffect = firstChild; null !== nextEffect; )
11690          if (firstChild = nextEffect, root3 = firstChild.child, 0 !== (firstChild.subtreeFlags & 1028) && null !== root3)
11691            root3.return = firstChild, nextEffect = root3;
11692          else
11693            for (; null !== nextEffect; ) {
11694              root3 = firstChild = nextEffect;
11695              JSCompiler_temp = root3.alternate;
11696              anchorOffset = root3.flags;
11697              switch (root3.tag) {
11698                case 0:
11699                  if (0 !== (anchorOffset & 4) && (root3 = root3.updateQueue, root3 = null !== root3 ? root3.events : null, null !== root3))
11700                    for (JSCompiler_temp = 0; JSCompiler_temp < root3.length; JSCompiler_temp++)
11701                      anchorOffset = root3[JSCompiler_temp], anchorOffset.ref.impl = anchorOffset.nextImpl;
11702                  break;
11703                case 11:
11704                case 15:
11705                  break;
11706                case 1:
11707                  0 !== (anchorOffset & 1024) && null !== JSCompiler_temp && commitClassSnapshot(root3, JSCompiler_temp);
11708                  break;
11709                case 3:
11710                  if (0 !== (anchorOffset & 1024)) {
11711                    if (root3 = root3.stateNode.containerInfo, JSCompiler_temp = root3.nodeType, 9 === JSCompiler_temp)
11712                      clearContainerSparingly(root3);
11713                    else if (1 === JSCompiler_temp)
11714                      switch (root3.nodeName) {
11715                        case "HEAD":
11716                        case "HTML":
11717                        case "BODY":
11718                          clearContainerSparingly(root3);
11719                          break;
11720                        default:
11721                          root3.textContent = "";
11722                      }
11723                  }
11724                  break;
11725                case 5:
11726                case 26:
11727                case 27:
11728                case 6:
11729                case 4:
11730                case 17:
11731                  break;
11732                default:
11733                  if (0 !== (anchorOffset & 1024))
11734                    throw Error(
11735                      "This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue."
11736                    );
11737              }
11738              root3 = firstChild.sibling;
11739              if (null !== root3) {
11740                root3.return = firstChild.return;
11741                nextEffect = root3;
11742                break;
11743              }
11744              nextEffect = firstChild.return;
11745            }
11746      }
11747      function commitLayoutEffectOnFiber(finishedRoot, current2, finishedWork) {
11748        var prevEffectStart = pushComponentEffectStart(), prevEffectDuration = pushComponentEffectDuration(), prevEffectErrors = pushComponentEffectErrors(), prevEffectDidSpawnUpdate = pushComponentEffectDidSpawnUpdate(), flags = finishedWork.flags;
11749        switch (finishedWork.tag) {
11750          case 0:
11751          case 11:
11752          case 15:
11753            recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
11754            flags & 4 && commitHookLayoutEffects(finishedWork, Layout | HasEffect);
11755            break;
11756          case 1:
11757            recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
11758            if (flags & 4)
11759              if (finishedRoot = finishedWork.stateNode, null === current2)
11760                finishedWork.type.defaultProps || "ref" in finishedWork.memoizedProps || didWarnAboutReassigningProps || (finishedRoot.props !== finishedWork.memoizedProps && console.error(
11761                  "Expected %s props to match memoized props before componentDidMount. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",
11762                  getComponentNameFromFiber(finishedWork) || "instance"
11763                ), finishedRoot.state !== finishedWork.memoizedState && console.error(
11764                  "Expected %s state to match memoized state before componentDidMount. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.",
11765                  getComponentNameFromFiber(finishedWork) || "instance"
11766                )), shouldProfile(finishedWork) ? (startEffectTimer(), runWithFiberInDEV(
11767                  finishedWork,
11768                  callComponentDidMountInDEV,
11769                  finishedWork,
11770                  finishedRoot
11771                ), recordEffectDuration()) : runWithFiberInDEV(
11772                  finishedWork,
11773                  callComponentDidMountInDEV,
11774                  finishedWork,
11775                  finishedRoot
11776                );
11777              else {
11778                var prevProps = resolveClassComponentProps(
11779                  finishedWork.type,
11780                  current2.memoizedProps
11781                );
11782                current2 = current2.memoizedState;
11783                finishedWork.type.defaultProps || "ref" in finishedWork.memoizedProps || didWarnAboutReassigningProps || (finishedRoot.props !== finishedWork.memoizedProps && console.error(
11784                  "Expected %s props to match memoized props before componentDidUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",
11785                  getComponentNameFromFiber(finishedWork) || "instance"
11786                ), finishedRoot.state !== finishedWork.memoizedState && console.error(
11787                  "Expected %s state to match memoized state before componentDidUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.",
11788                  getComponentNameFromFiber(finishedWork) || "instance"
11789                ));
11790                shouldProfile(finishedWork) ? (startEffectTimer(), runWithFiberInDEV(
11791                  finishedWork,
11792                  callComponentDidUpdateInDEV,
11793                  finishedWork,
11794                  finishedRoot,
11795                  prevProps,
11796                  current2,
11797                  finishedRoot.__reactInternalSnapshotBeforeUpdate
11798                ), recordEffectDuration()) : runWithFiberInDEV(
11799                  finishedWork,
11800                  callComponentDidUpdateInDEV,
11801                  finishedWork,
11802                  finishedRoot,
11803                  prevProps,
11804                  current2,
11805                  finishedRoot.__reactInternalSnapshotBeforeUpdate
11806                );
11807              }
11808            flags & 64 && commitClassCallbacks(finishedWork);
11809            flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);
11810            break;
11811          case 3:
11812            current2 = pushNestedEffectDurations();
11813            recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
11814            if (flags & 64 && (flags = finishedWork.updateQueue, null !== flags)) {
11815              prevProps = null;
11816              if (null !== finishedWork.child)
11817                switch (finishedWork.child.tag) {
11818                  case 27:
11819                  case 5:
11820                    prevProps = finishedWork.child.stateNode;
11821                    break;
11822                  case 1:
11823                    prevProps = finishedWork.child.stateNode;
11824                }
11825              try {
11826                runWithFiberInDEV(
11827                  finishedWork,
11828                  commitCallbacks,
11829                  flags,
11830                  prevProps
11831                );
11832              } catch (error2) {
11833                captureCommitPhaseError(finishedWork, finishedWork.return, error2);
11834              }
11835            }
11836            finishedRoot.effectDuration += popNestedEffectDurations(current2);
11837            break;
11838          case 27:
11839            null === current2 && flags & 4 && commitHostSingletonAcquisition(finishedWork);
11840          case 26:
11841          case 5:
11842            recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
11843            if (null === current2) {
11844              if (flags & 4) commitHostMount(finishedWork);
11845              else if (flags & 64) {
11846                finishedRoot = finishedWork.type;
11847                current2 = finishedWork.memoizedProps;
11848                prevProps = finishedWork.stateNode;
11849                try {
11850                  runWithFiberInDEV(
11851                    finishedWork,
11852                    commitHydratedInstance,
11853                    prevProps,
11854                    finishedRoot,
11855                    current2,
11856                    finishedWork
11857                  );
11858                } catch (error2) {
11859                  captureCommitPhaseError(
11860                    finishedWork,
11861                    finishedWork.return,
11862                    error2
11863                  );
11864                }
11865              }
11866            }
11867            flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);
11868            break;
11869          case 12:
11870            if (flags & 4) {
11871              flags = pushNestedEffectDurations();
11872              recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
11873              finishedRoot = finishedWork.stateNode;
11874              finishedRoot.effectDuration += bubbleNestedEffectDurations(flags);
11875              try {
11876                runWithFiberInDEV(
11877                  finishedWork,
11878                  commitProfiler,
11879                  finishedWork,
11880                  current2,
11881                  commitStartTime,
11882                  finishedRoot.effectDuration
11883                );
11884              } catch (error2) {
11885                captureCommitPhaseError(finishedWork, finishedWork.return, error2);
11886              }
11887            } else recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
11888            break;
11889          case 31:
11890            recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
11891            flags & 4 && commitActivityHydrationCallbacks(finishedRoot, finishedWork);
11892            break;
11893          case 13:
11894            recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
11895            flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);
11896            flags & 64 && (finishedRoot = finishedWork.memoizedState, null !== finishedRoot && (finishedRoot = finishedRoot.dehydrated, null !== finishedRoot && (flags = retryDehydratedSuspenseBoundary.bind(
11897              null,
11898              finishedWork
11899            ), registerSuspenseInstanceRetry(finishedRoot, flags))));
11900            break;
11901          case 22:
11902            flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;
11903            if (!flags) {
11904              current2 = null !== current2 && null !== current2.memoizedState || offscreenSubtreeWasHidden;
11905              prevProps = offscreenSubtreeIsHidden;
11906              var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;
11907              offscreenSubtreeIsHidden = flags;
11908              (offscreenSubtreeWasHidden = current2) && !prevOffscreenSubtreeWasHidden ? (recursivelyTraverseReappearLayoutEffects(
11909                finishedRoot,
11910                finishedWork,
11911                0 !== (finishedWork.subtreeFlags & 8772)
11912              ), (finishedWork.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && 0.05 < componentEffectEndTime - componentEffectStartTime && logComponentReappeared(
11913                finishedWork,
11914                componentEffectStartTime,
11915                componentEffectEndTime
11916              )) : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
11917              offscreenSubtreeIsHidden = prevProps;
11918              offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;
11919            }
11920            break;
11921          case 30:
11922            break;
11923          default:
11924            recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
11925        }
11926        (finishedWork.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && ((componentEffectSpawnedUpdate || 0.05 < componentEffectDuration) && logComponentEffect(
11927          finishedWork,
11928          componentEffectStartTime,
11929          componentEffectEndTime,
11930          componentEffectDuration,
11931          componentEffectErrors
11932        ), null === finishedWork.alternate && null !== finishedWork.return && null !== finishedWork.return.alternate && 0.05 < componentEffectEndTime - componentEffectStartTime && (isHydratingParent(
11933          finishedWork.return.alternate,
11934          finishedWork.return
11935        ) || logComponentTrigger(
11936          finishedWork,
11937          componentEffectStartTime,
11938          componentEffectEndTime,
11939          "Mount"
11940        )));
11941        popComponentEffectStart(prevEffectStart);
11942        popComponentEffectDuration(prevEffectDuration);
11943        componentEffectErrors = prevEffectErrors;
11944        componentEffectSpawnedUpdate = prevEffectDidSpawnUpdate;
11945      }
11946      function detachFiberAfterEffects(fiber) {
11947        var alternate = fiber.alternate;
11948        null !== alternate && (fiber.alternate = null, detachFiberAfterEffects(alternate));
11949        fiber.child = null;
11950        fiber.deletions = null;
11951        fiber.sibling = null;
11952        5 === fiber.tag && (alternate = fiber.stateNode, null !== alternate && detachDeletedInstance(alternate));
11953        fiber.stateNode = null;
11954        fiber._debugOwner = null;
11955        fiber.return = null;
11956        fiber.dependencies = null;
11957        fiber.memoizedProps = null;
11958        fiber.memoizedState = null;
11959        fiber.pendingProps = null;
11960        fiber.stateNode = null;
11961        fiber.updateQueue = null;
11962      }
11963      function recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, parent) {
11964        for (parent = parent.child; null !== parent; )
11965          commitDeletionEffectsOnFiber(
11966            finishedRoot,
11967            nearestMountedAncestor,
11968            parent
11969          ), parent = parent.sibling;
11970      }
11971      function commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, deletedFiber) {
11972        if (injectedHook && "function" === typeof injectedHook.onCommitFiberUnmount)
11973          try {
11974            injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);
11975          } catch (err) {
11976            hasLoggedError || (hasLoggedError = true, console.error(
11977              "React instrumentation encountered an error: %o",
11978              err
11979            ));
11980          }
11981        var prevEffectStart = pushComponentEffectStart(), prevEffectDuration = pushComponentEffectDuration(), prevEffectErrors = pushComponentEffectErrors(), prevEffectDidSpawnUpdate = pushComponentEffectDidSpawnUpdate();
11982        switch (deletedFiber.tag) {
11983          case 26:
11984            offscreenSubtreeWasHidden || safelyDetachRef(deletedFiber, nearestMountedAncestor);
11985            recursivelyTraverseDeletionEffects(
11986              finishedRoot,
11987              nearestMountedAncestor,
11988              deletedFiber
11989            );
11990            deletedFiber.memoizedState ? deletedFiber.memoizedState.count-- : deletedFiber.stateNode && (finishedRoot = deletedFiber.stateNode, finishedRoot.parentNode.removeChild(finishedRoot));
11991            break;
11992          case 27:
11993            offscreenSubtreeWasHidden || safelyDetachRef(deletedFiber, nearestMountedAncestor);
11994            var prevHostParent = hostParent, prevHostParentIsContainer = hostParentIsContainer;
11995            isSingletonScope(deletedFiber.type) && (hostParent = deletedFiber.stateNode, hostParentIsContainer = false);
11996            recursivelyTraverseDeletionEffects(
11997              finishedRoot,
11998              nearestMountedAncestor,
11999              deletedFiber
12000            );
12001            runWithFiberInDEV(
12002              deletedFiber,
12003              releaseSingletonInstance,
12004              deletedFiber.stateNode
12005            );
12006            hostParent = prevHostParent;
12007            hostParentIsContainer = prevHostParentIsContainer;
12008            break;
12009          case 5:
12010            offscreenSubtreeWasHidden || safelyDetachRef(deletedFiber, nearestMountedAncestor);
12011          case 6:
12012            prevHostParent = hostParent;
12013            prevHostParentIsContainer = hostParentIsContainer;
12014            hostParent = null;
12015            recursivelyTraverseDeletionEffects(
12016              finishedRoot,
12017              nearestMountedAncestor,
12018              deletedFiber
12019            );
12020            hostParent = prevHostParent;
12021            hostParentIsContainer = prevHostParentIsContainer;
12022            if (null !== hostParent)
12023              if (hostParentIsContainer)
12024                try {
12025                  runWithFiberInDEV(
12026                    deletedFiber,
12027                    removeChildFromContainer,
12028                    hostParent,
12029                    deletedFiber.stateNode
12030                  );
12031                } catch (error2) {
12032                  captureCommitPhaseError(
12033                    deletedFiber,
12034                    nearestMountedAncestor,
12035                    error2
12036                  );
12037                }
12038              else
12039                try {
12040                  runWithFiberInDEV(
12041                    deletedFiber,
12042                    removeChild,
12043                    hostParent,
12044                    deletedFiber.stateNode
12045                  );
12046                } catch (error2) {
12047                  captureCommitPhaseError(
12048                    deletedFiber,
12049                    nearestMountedAncestor,
12050                    error2
12051                  );
12052                }
12053            break;
12054          case 18:
12055            null !== hostParent && (hostParentIsContainer ? (finishedRoot = hostParent, clearHydrationBoundary(
12056              9 === finishedRoot.nodeType ? finishedRoot.body : "HTML" === finishedRoot.nodeName ? finishedRoot.ownerDocument.body : finishedRoot,
12057              deletedFiber.stateNode
12058            ), retryIfBlockedOn(finishedRoot)) : clearHydrationBoundary(hostParent, deletedFiber.stateNode));
12059            break;
12060          case 4:
12061            prevHostParent = hostParent;
12062            prevHostParentIsContainer = hostParentIsContainer;
12063            hostParent = deletedFiber.stateNode.containerInfo;
12064            hostParentIsContainer = true;
12065            recursivelyTraverseDeletionEffects(
12066              finishedRoot,
12067              nearestMountedAncestor,
12068              deletedFiber
12069            );
12070            hostParent = prevHostParent;
12071            hostParentIsContainer = prevHostParentIsContainer;
12072            break;
12073          case 0:
12074          case 11:
12075          case 14:
12076          case 15:
12077            commitHookEffectListUnmount(
12078              Insertion,
12079              deletedFiber,
12080              nearestMountedAncestor
12081            );
12082            offscreenSubtreeWasHidden || commitHookLayoutUnmountEffects(
12083              deletedFiber,
12084              nearestMountedAncestor,
12085              Layout
12086            );
12087            recursivelyTraverseDeletionEffects(
12088              finishedRoot,
12089              nearestMountedAncestor,
12090              deletedFiber
12091            );
12092            break;
12093          case 1:
12094            offscreenSubtreeWasHidden || (safelyDetachRef(deletedFiber, nearestMountedAncestor), prevHostParent = deletedFiber.stateNode, "function" === typeof prevHostParent.componentWillUnmount && safelyCallComponentWillUnmount(
12095              deletedFiber,
12096              nearestMountedAncestor,
12097              prevHostParent
12098            ));
12099            recursivelyTraverseDeletionEffects(
12100              finishedRoot,
12101              nearestMountedAncestor,
12102              deletedFiber
12103            );
12104            break;
12105          case 21:
12106            recursivelyTraverseDeletionEffects(
12107              finishedRoot,
12108              nearestMountedAncestor,
12109              deletedFiber
12110            );
12111            break;
12112          case 22:
12113            offscreenSubtreeWasHidden = (prevHostParent = offscreenSubtreeWasHidden) || null !== deletedFiber.memoizedState;
12114            recursivelyTraverseDeletionEffects(
12115              finishedRoot,
12116              nearestMountedAncestor,
12117              deletedFiber
12118            );
12119            offscreenSubtreeWasHidden = prevHostParent;
12120            break;
12121          default:
12122            recursivelyTraverseDeletionEffects(
12123              finishedRoot,
12124              nearestMountedAncestor,
12125              deletedFiber
12126            );
12127        }
12128        (deletedFiber.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && (componentEffectSpawnedUpdate || 0.05 < componentEffectDuration) && logComponentEffect(
12129          deletedFiber,
12130          componentEffectStartTime,
12131          componentEffectEndTime,
12132          componentEffectDuration,
12133          componentEffectErrors
12134        );
12135        popComponentEffectStart(prevEffectStart);
12136        popComponentEffectDuration(prevEffectDuration);
12137        componentEffectErrors = prevEffectErrors;
12138        componentEffectSpawnedUpdate = prevEffectDidSpawnUpdate;
12139      }
12140      function commitActivityHydrationCallbacks(finishedRoot, finishedWork) {
12141        if (null === finishedWork.memoizedState && (finishedRoot = finishedWork.alternate, null !== finishedRoot && (finishedRoot = finishedRoot.memoizedState, null !== finishedRoot))) {
12142          finishedRoot = finishedRoot.dehydrated;
12143          try {
12144            runWithFiberInDEV(
12145              finishedWork,
12146              commitHydratedActivityInstance,
12147              finishedRoot
12148            );
12149          } catch (error2) {
12150            captureCommitPhaseError(finishedWork, finishedWork.return, error2);
12151          }
12152        }
12153      }
12154      function commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {
12155        if (null === finishedWork.memoizedState && (finishedRoot = finishedWork.alternate, null !== finishedRoot && (finishedRoot = finishedRoot.memoizedState, null !== finishedRoot && (finishedRoot = finishedRoot.dehydrated, null !== finishedRoot))))
12156          try {
12157            runWithFiberInDEV(
12158              finishedWork,
12159              commitHydratedSuspenseInstance,
12160              finishedRoot
12161            );
12162          } catch (error2) {
12163            captureCommitPhaseError(finishedWork, finishedWork.return, error2);
12164          }
12165      }
12166      function getRetryCache(finishedWork) {
12167        switch (finishedWork.tag) {
12168          case 31:
12169          case 13:
12170          case 19:
12171            var retryCache = finishedWork.stateNode;
12172            null === retryCache && (retryCache = finishedWork.stateNode = new PossiblyWeakSet());
12173            return retryCache;
12174          case 22:
12175            return finishedWork = finishedWork.stateNode, retryCache = finishedWork._retryCache, null === retryCache && (retryCache = finishedWork._retryCache = new PossiblyWeakSet()), retryCache;
12176          default:
12177            throw Error(
12178              "Unexpected Suspense handler tag (" + finishedWork.tag + "). This is a bug in React."
12179            );
12180        }
12181      }
12182      function attachSuspenseRetryListeners(finishedWork, wakeables) {
12183        var retryCache = getRetryCache(finishedWork);
12184        wakeables.forEach(function(wakeable) {
12185          if (!retryCache.has(wakeable)) {
12186            retryCache.add(wakeable);
12187            if (isDevToolsPresent)
12188              if (null !== inProgressLanes && null !== inProgressRoot)
12189                restorePendingUpdaters(inProgressRoot, inProgressLanes);
12190              else
12191                throw Error(
12192                  "Expected finished root and lanes to be set. This is a bug in React."
12193                );
12194            var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);
12195            wakeable.then(retry, retry);
12196          }
12197        });
12198      }
12199      function recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {
12200        var deletions = parentFiber.deletions;
12201        if (null !== deletions)
12202          for (var i3 = 0; i3 < deletions.length; i3++) {
12203            var root3 = root$jscomp$0, returnFiber = parentFiber, deletedFiber = deletions[i3], prevEffectStart = pushComponentEffectStart(), parent = returnFiber;
12204            a: for (; null !== parent; ) {
12205              switch (parent.tag) {
12206                case 27:
12207                  if (isSingletonScope(parent.type)) {
12208                    hostParent = parent.stateNode;
12209                    hostParentIsContainer = false;
12210                    break a;
12211                  }
12212                  break;
12213                case 5:
12214                  hostParent = parent.stateNode;
12215                  hostParentIsContainer = false;
12216                  break a;
12217                case 3:
12218                case 4:
12219                  hostParent = parent.stateNode.containerInfo;
12220                  hostParentIsContainer = true;
12221                  break a;
12222              }
12223              parent = parent.return;
12224            }
12225            if (null === hostParent)
12226              throw Error(
12227                "Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue."
12228              );
12229            commitDeletionEffectsOnFiber(root3, returnFiber, deletedFiber);
12230            hostParent = null;
12231            hostParentIsContainer = false;
12232            (deletedFiber.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && 0.05 < componentEffectEndTime - componentEffectStartTime && logComponentTrigger(
12233              deletedFiber,
12234              componentEffectStartTime,
12235              componentEffectEndTime,
12236              "Unmount"
12237            );
12238            popComponentEffectStart(prevEffectStart);
12239            root3 = deletedFiber;
12240            returnFiber = root3.alternate;
12241            null !== returnFiber && (returnFiber.return = null);
12242            root3.return = null;
12243          }
12244        if (parentFiber.subtreeFlags & 13886)
12245          for (parentFiber = parentFiber.child; null !== parentFiber; )
12246            commitMutationEffectsOnFiber(parentFiber, root$jscomp$0), parentFiber = parentFiber.sibling;
12247      }
12248      function commitMutationEffectsOnFiber(finishedWork, root3) {
12249        var prevEffectStart = pushComponentEffectStart(), prevEffectDuration = pushComponentEffectDuration(), prevEffectErrors = pushComponentEffectErrors(), prevEffectDidSpawnUpdate = pushComponentEffectDidSpawnUpdate(), current2 = finishedWork.alternate, flags = finishedWork.flags;
12250        switch (finishedWork.tag) {
12251          case 0:
12252          case 11:
12253          case 14:
12254          case 15:
12255            recursivelyTraverseMutationEffects(root3, finishedWork);
12256            commitReconciliationEffects(finishedWork);
12257            flags & 4 && (commitHookEffectListUnmount(
12258              Insertion | HasEffect,
12259              finishedWork,
12260              finishedWork.return
12261            ), commitHookEffectListMount(Insertion | HasEffect, finishedWork), commitHookLayoutUnmountEffects(
12262              finishedWork,
12263              finishedWork.return,
12264              Layout | HasEffect
12265            ));
12266            break;
12267          case 1:
12268            recursivelyTraverseMutationEffects(root3, finishedWork);
12269            commitReconciliationEffects(finishedWork);
12270            flags & 512 && (offscreenSubtreeWasHidden || null === current2 || safelyDetachRef(current2, current2.return));
12271            if (flags & 64 && offscreenSubtreeIsHidden && (flags = finishedWork.updateQueue, null !== flags && (current2 = flags.callbacks, null !== current2))) {
12272              var existingHiddenCallbacks = flags.shared.hiddenCallbacks;
12273              flags.shared.hiddenCallbacks = null === existingHiddenCallbacks ? current2 : existingHiddenCallbacks.concat(current2);
12274            }
12275            break;
12276          case 26:
12277            existingHiddenCallbacks = currentHoistableRoot;
12278            recursivelyTraverseMutationEffects(root3, finishedWork);
12279            commitReconciliationEffects(finishedWork);
12280            flags & 512 && (offscreenSubtreeWasHidden || null === current2 || safelyDetachRef(current2, current2.return));
12281            if (flags & 4) {
12282              var currentResource = null !== current2 ? current2.memoizedState : null;
12283              flags = finishedWork.memoizedState;
12284              if (null === current2)
12285                if (null === flags)
12286                  if (null === finishedWork.stateNode) {
12287                    a: {
12288                      flags = finishedWork.type;
12289                      current2 = finishedWork.memoizedProps;
12290                      existingHiddenCallbacks = existingHiddenCallbacks.ownerDocument || existingHiddenCallbacks;
12291                      b: switch (flags) {
12292                        case "title":
12293                          currentResource = existingHiddenCallbacks.getElementsByTagName(
12294                            "title"
12295                          )[0];
12296                          if (!currentResource || currentResource[internalHoistableMarker] || currentResource[internalInstanceKey] || currentResource.namespaceURI === SVG_NAMESPACE || currentResource.hasAttribute("itemprop"))
12297                            currentResource = existingHiddenCallbacks.createElement(flags), existingHiddenCallbacks.head.insertBefore(
12298                              currentResource,
12299                              existingHiddenCallbacks.querySelector(
12300                                "head > title"
12301                              )
12302                            );
12303                          setInitialProperties(currentResource, flags, current2);
12304                          currentResource[internalInstanceKey] = finishedWork;
12305                          markNodeAsHoistable(currentResource);
12306                          flags = currentResource;
12307                          break a;
12308                        case "link":
12309                          var maybeNodes = getHydratableHoistableCache(
12310                            "link",
12311                            "href",
12312                            existingHiddenCallbacks
12313                          ).get(flags + (current2.href || ""));
12314                          if (maybeNodes) {
12315                            for (var i3 = 0; i3 < maybeNodes.length; i3++)
12316                              if (currentResource = maybeNodes[i3], currentResource.getAttribute("href") === (null == current2.href || "" === current2.href ? null : current2.href) && currentResource.getAttribute("rel") === (null == current2.rel ? null : current2.rel) && currentResource.getAttribute("title") === (null == current2.title ? null : current2.title) && currentResource.getAttribute("crossorigin") === (null == current2.crossOrigin ? null : current2.crossOrigin)) {
12317                                maybeNodes.splice(i3, 1);
12318                                break b;
12319                              }
12320                          }
12321                          currentResource = existingHiddenCallbacks.createElement(flags);
12322                          setInitialProperties(currentResource, flags, current2);
12323                          existingHiddenCallbacks.head.appendChild(
12324                            currentResource
12325                          );
12326                          break;
12327                        case "meta":
12328                          if (maybeNodes = getHydratableHoistableCache(
12329                            "meta",
12330                            "content",
12331                            existingHiddenCallbacks
12332                          ).get(flags + (current2.content || ""))) {
12333                            for (i3 = 0; i3 < maybeNodes.length; i3++)
12334                              if (currentResource = maybeNodes[i3], checkAttributeStringCoercion(
12335                                current2.content,
12336                                "content"
12337                              ), currentResource.getAttribute("content") === (null == current2.content ? null : "" + current2.content) && currentResource.getAttribute("name") === (null == current2.name ? null : current2.name) && currentResource.getAttribute("property") === (null == current2.property ? null : current2.property) && currentResource.getAttribute("http-equiv") === (null == current2.httpEquiv ? null : current2.httpEquiv) && currentResource.getAttribute("charset") === (null == current2.charSet ? null : current2.charSet)) {
12338                                maybeNodes.splice(i3, 1);
12339                                break b;
12340                              }
12341                          }
12342                          currentResource = existingHiddenCallbacks.createElement(flags);
12343                          setInitialProperties(currentResource, flags, current2);
12344                          existingHiddenCallbacks.head.appendChild(
12345                            currentResource
12346                          );
12347                          break;
12348                        default:
12349                          throw Error(
12350                            'getNodesForType encountered a type it did not expect: "' + flags + '". This is a bug in React.'
12351                          );
12352                      }
12353                      currentResource[internalInstanceKey] = finishedWork;
12354                      markNodeAsHoistable(currentResource);
12355                      flags = currentResource;
12356                    }
12357                    finishedWork.stateNode = flags;
12358                  } else
12359                    mountHoistable(
12360                      existingHiddenCallbacks,
12361                      finishedWork.type,
12362                      finishedWork.stateNode
12363                    );
12364                else
12365                  finishedWork.stateNode = acquireResource(
12366                    existingHiddenCallbacks,
12367                    flags,
12368                    finishedWork.memoizedProps
12369                  );
12370              else
12371                currentResource !== flags ? (null === currentResource ? null !== current2.stateNode && (current2 = current2.stateNode, current2.parentNode.removeChild(current2)) : currentResource.count--, null === flags ? mountHoistable(
12372                  existingHiddenCallbacks,
12373                  finishedWork.type,
12374                  finishedWork.stateNode
12375                ) : acquireResource(
12376                  existingHiddenCallbacks,
12377                  flags,
12378                  finishedWork.memoizedProps
12379                )) : null === flags && null !== finishedWork.stateNode && commitHostUpdate(
12380                  finishedWork,
12381                  finishedWork.memoizedProps,
12382                  current2.memoizedProps
12383                );
12384            }
12385            break;
12386          case 27:
12387            recursivelyTraverseMutationEffects(root3, finishedWork);
12388            commitReconciliationEffects(finishedWork);
12389            flags & 512 && (offscreenSubtreeWasHidden || null === current2 || safelyDetachRef(current2, current2.return));
12390            null !== current2 && flags & 4 && commitHostUpdate(
12391              finishedWork,
12392              finishedWork.memoizedProps,
12393              current2.memoizedProps
12394            );
12395            break;
12396          case 5:
12397            recursivelyTraverseMutationEffects(root3, finishedWork);
12398            commitReconciliationEffects(finishedWork);
12399            flags & 512 && (offscreenSubtreeWasHidden || null === current2 || safelyDetachRef(current2, current2.return));
12400            if (finishedWork.flags & 32) {
12401              existingHiddenCallbacks = finishedWork.stateNode;
12402              try {
12403                runWithFiberInDEV(
12404                  finishedWork,
12405                  resetTextContent,
12406                  existingHiddenCallbacks
12407                );
12408              } catch (error2) {
12409                captureCommitPhaseError(finishedWork, finishedWork.return, error2);
12410              }
12411            }
12412            flags & 4 && null != finishedWork.stateNode && (existingHiddenCallbacks = finishedWork.memoizedProps, commitHostUpdate(
12413              finishedWork,
12414              existingHiddenCallbacks,
12415              null !== current2 ? current2.memoizedProps : existingHiddenCallbacks
12416            ));
12417            flags & 1024 && (needsFormReset = true, "form" !== finishedWork.type && console.error(
12418              "Unexpected host component type. Expected a form. This is a bug in React."
12419            ));
12420            break;
12421          case 6:
12422            recursivelyTraverseMutationEffects(root3, finishedWork);
12423            commitReconciliationEffects(finishedWork);
12424            if (flags & 4) {
12425              if (null === finishedWork.stateNode)
12426                throw Error(
12427                  "This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue."
12428                );
12429              flags = finishedWork.memoizedProps;
12430              current2 = null !== current2 ? current2.memoizedProps : flags;
12431              existingHiddenCallbacks = finishedWork.stateNode;
12432              try {
12433                runWithFiberInDEV(
12434                  finishedWork,
12435                  commitTextUpdate,
12436                  existingHiddenCallbacks,
12437                  current2,
12438                  flags
12439                );
12440              } catch (error2) {
12441                captureCommitPhaseError(finishedWork, finishedWork.return, error2);
12442              }
12443            }
12444            break;
12445          case 3:
12446            existingHiddenCallbacks = pushNestedEffectDurations();
12447            tagCaches = null;
12448            currentResource = currentHoistableRoot;
12449            currentHoistableRoot = getHoistableRoot(root3.containerInfo);
12450            recursivelyTraverseMutationEffects(root3, finishedWork);
12451            currentHoistableRoot = currentResource;
12452            commitReconciliationEffects(finishedWork);
12453            if (flags & 4 && null !== current2 && current2.memoizedState.isDehydrated)
12454              try {
12455                runWithFiberInDEV(
12456                  finishedWork,
12457                  commitHydratedContainer,
12458                  root3.containerInfo
12459                );
12460              } catch (error2) {
12461                captureCommitPhaseError(finishedWork, finishedWork.return, error2);
12462              }
12463            needsFormReset && (needsFormReset = false, recursivelyResetForms(finishedWork));
12464            root3.effectDuration += popNestedEffectDurations(
12465              existingHiddenCallbacks
12466            );
12467            break;
12468          case 4:
12469            flags = currentHoistableRoot;
12470            currentHoistableRoot = getHoistableRoot(
12471              finishedWork.stateNode.containerInfo
12472            );
12473            recursivelyTraverseMutationEffects(root3, finishedWork);
12474            commitReconciliationEffects(finishedWork);
12475            currentHoistableRoot = flags;
12476            break;
12477          case 12:
12478            flags = pushNestedEffectDurations();
12479            recursivelyTraverseMutationEffects(root3, finishedWork);
12480            commitReconciliationEffects(finishedWork);
12481            finishedWork.stateNode.effectDuration += bubbleNestedEffectDurations(flags);
12482            break;
12483          case 31:
12484            recursivelyTraverseMutationEffects(root3, finishedWork);
12485            commitReconciliationEffects(finishedWork);
12486            flags & 4 && (flags = finishedWork.updateQueue, null !== flags && (finishedWork.updateQueue = null, attachSuspenseRetryListeners(finishedWork, flags)));
12487            break;
12488          case 13:
12489            recursivelyTraverseMutationEffects(root3, finishedWork);
12490            commitReconciliationEffects(finishedWork);
12491            finishedWork.child.flags & 8192 && null !== finishedWork.memoizedState !== (null !== current2 && null !== current2.memoizedState) && (globalMostRecentFallbackTime = now$1());
12492            flags & 4 && (flags = finishedWork.updateQueue, null !== flags && (finishedWork.updateQueue = null, attachSuspenseRetryListeners(finishedWork, flags)));
12493            break;
12494          case 22:
12495            existingHiddenCallbacks = null !== finishedWork.memoizedState;
12496            var wasHidden = null !== current2 && null !== current2.memoizedState, prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden, prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;
12497            offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || existingHiddenCallbacks;
12498            offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;
12499            recursivelyTraverseMutationEffects(root3, finishedWork);
12500            offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;
12501            offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;
12502            wasHidden && !existingHiddenCallbacks && !prevOffscreenSubtreeIsHidden && !prevOffscreenSubtreeWasHidden && (finishedWork.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && 0.05 < componentEffectEndTime - componentEffectStartTime && logComponentReappeared(
12503              finishedWork,
12504              componentEffectStartTime,
12505              componentEffectEndTime
12506            );
12507            commitReconciliationEffects(finishedWork);
12508            if (flags & 8192)
12509              a: for (root3 = finishedWork.stateNode, root3._visibility = existingHiddenCallbacks ? root3._visibility & ~OffscreenVisible : root3._visibility | OffscreenVisible, !existingHiddenCallbacks || null === current2 || wasHidden || offscreenSubtreeIsHidden || offscreenSubtreeWasHidden || (recursivelyTraverseDisappearLayoutEffects(finishedWork), (finishedWork.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && 0.05 < componentEffectEndTime - componentEffectStartTime && logComponentTrigger(
12510                finishedWork,
12511                componentEffectStartTime,
12512                componentEffectEndTime,
12513                "Disconnect"
12514              )), current2 = null, root3 = finishedWork; ; ) {
12515                if (5 === root3.tag || 26 === root3.tag) {
12516                  if (null === current2) {
12517                    wasHidden = current2 = root3;
12518                    try {
12519                      currentResource = wasHidden.stateNode, existingHiddenCallbacks ? runWithFiberInDEV(
12520                        wasHidden,
12521                        hideInstance,
12522                        currentResource
12523                      ) : runWithFiberInDEV(
12524                        wasHidden,
12525                        unhideInstance,
12526                        wasHidden.stateNode,
12527                        wasHidden.memoizedProps
12528                      );
12529                    } catch (error2) {
12530                      captureCommitPhaseError(wasHidden, wasHidden.return, error2);
12531                    }
12532                  }
12533                } else if (6 === root3.tag) {
12534                  if (null === current2) {
12535                    wasHidden = root3;
12536                    try {
12537                      maybeNodes = wasHidden.stateNode, existingHiddenCallbacks ? runWithFiberInDEV(
12538                        wasHidden,
12539                        hideTextInstance,
12540                        maybeNodes
12541                      ) : runWithFiberInDEV(
12542                        wasHidden,
12543                        unhideTextInstance,
12544                        maybeNodes,
12545                        wasHidden.memoizedProps
12546                      );
12547                    } catch (error2) {
12548                      captureCommitPhaseError(wasHidden, wasHidden.return, error2);
12549                    }
12550                  }
12551                } else if (18 === root3.tag) {
12552                  if (null === current2) {
12553                    wasHidden = root3;
12554                    try {
12555                      i3 = wasHidden.stateNode, existingHiddenCallbacks ? runWithFiberInDEV(
12556                        wasHidden,
12557                        hideDehydratedBoundary,
12558                        i3
12559                      ) : runWithFiberInDEV(
12560                        wasHidden,
12561                        unhideDehydratedBoundary,
12562                        wasHidden.stateNode
12563                      );
12564                    } catch (error2) {
12565                      captureCommitPhaseError(wasHidden, wasHidden.return, error2);
12566                    }
12567                  }
12568                } else if ((22 !== root3.tag && 23 !== root3.tag || null === root3.memoizedState || root3 === finishedWork) && null !== root3.child) {
12569                  root3.child.return = root3;
12570                  root3 = root3.child;
12571                  continue;
12572                }
12573                if (root3 === finishedWork) break a;
12574                for (; null === root3.sibling; ) {
12575                  if (null === root3.return || root3.return === finishedWork)
12576                    break a;
12577                  current2 === root3 && (current2 = null);
12578                  root3 = root3.return;
12579                }
12580                current2 === root3 && (current2 = null);
12581                root3.sibling.return = root3.return;
12582                root3 = root3.sibling;
12583              }
12584            flags & 4 && (flags = finishedWork.updateQueue, null !== flags && (current2 = flags.retryQueue, null !== current2 && (flags.retryQueue = null, attachSuspenseRetryListeners(finishedWork, current2))));
12585            break;
12586          case 19:
12587            recursivelyTraverseMutationEffects(root3, finishedWork);
12588            commitReconciliationEffects(finishedWork);
12589            flags & 4 && (flags = finishedWork.updateQueue, null !== flags && (finishedWork.updateQueue = null, attachSuspenseRetryListeners(finishedWork, flags)));
12590            break;
12591          case 30:
12592            break;
12593          case 21:
12594            break;
12595          default:
12596            recursivelyTraverseMutationEffects(root3, finishedWork), commitReconciliationEffects(finishedWork);
12597        }
12598        (finishedWork.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && ((componentEffectSpawnedUpdate || 0.05 < componentEffectDuration) && logComponentEffect(
12599          finishedWork,
12600          componentEffectStartTime,
12601          componentEffectEndTime,
12602          componentEffectDuration,
12603          componentEffectErrors
12604        ), null === finishedWork.alternate && null !== finishedWork.return && null !== finishedWork.return.alternate && 0.05 < componentEffectEndTime - componentEffectStartTime && (isHydratingParent(
12605          finishedWork.return.alternate,
12606          finishedWork.return
12607        ) || logComponentTrigger(
12608          finishedWork,
12609          componentEffectStartTime,
12610          componentEffectEndTime,
12611          "Mount"
12612        )));
12613        popComponentEffectStart(prevEffectStart);
12614        popComponentEffectDuration(prevEffectDuration);
12615        componentEffectErrors = prevEffectErrors;
12616        componentEffectSpawnedUpdate = prevEffectDidSpawnUpdate;
12617      }
12618      function commitReconciliationEffects(finishedWork) {
12619        var flags = finishedWork.flags;
12620        if (flags & 2) {
12621          try {
12622            runWithFiberInDEV(finishedWork, commitPlacement, finishedWork);
12623          } catch (error2) {
12624            captureCommitPhaseError(finishedWork, finishedWork.return, error2);
12625          }
12626          finishedWork.flags &= -3;
12627        }
12628        flags & 4096 && (finishedWork.flags &= -4097);
12629      }
12630      function recursivelyResetForms(parentFiber) {
12631        if (parentFiber.subtreeFlags & 1024)
12632          for (parentFiber = parentFiber.child; null !== parentFiber; ) {
12633            var fiber = parentFiber;
12634            recursivelyResetForms(fiber);
12635            5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();
12636            parentFiber = parentFiber.sibling;
12637          }
12638      }
12639      function recursivelyTraverseLayoutEffects(root3, parentFiber) {
12640        if (parentFiber.subtreeFlags & 8772)
12641          for (parentFiber = parentFiber.child; null !== parentFiber; )
12642            commitLayoutEffectOnFiber(root3, parentFiber.alternate, parentFiber), parentFiber = parentFiber.sibling;
12643      }
12644      function disappearLayoutEffects(finishedWork) {
12645        var prevEffectStart = pushComponentEffectStart(), prevEffectDuration = pushComponentEffectDuration(), prevEffectErrors = pushComponentEffectErrors(), prevEffectDidSpawnUpdate = pushComponentEffectDidSpawnUpdate();
12646        switch (finishedWork.tag) {
12647          case 0:
12648          case 11:
12649          case 14:
12650          case 15:
12651            commitHookLayoutUnmountEffects(
12652              finishedWork,
12653              finishedWork.return,
12654              Layout
12655            );
12656            recursivelyTraverseDisappearLayoutEffects(finishedWork);
12657            break;
12658          case 1:
12659            safelyDetachRef(finishedWork, finishedWork.return);
12660            var instance = finishedWork.stateNode;
12661            "function" === typeof instance.componentWillUnmount && safelyCallComponentWillUnmount(
12662              finishedWork,
12663              finishedWork.return,
12664              instance
12665            );
12666            recursivelyTraverseDisappearLayoutEffects(finishedWork);
12667            break;
12668          case 27:
12669            runWithFiberInDEV(
12670              finishedWork,
12671              releaseSingletonInstance,
12672              finishedWork.stateNode
12673            );
12674          case 26:
12675          case 5:
12676            safelyDetachRef(finishedWork, finishedWork.return);
12677            recursivelyTraverseDisappearLayoutEffects(finishedWork);
12678            break;
12679          case 22:
12680            null === finishedWork.memoizedState && recursivelyTraverseDisappearLayoutEffects(finishedWork);
12681            break;
12682          case 30:
12683            recursivelyTraverseDisappearLayoutEffects(finishedWork);
12684            break;
12685          default:
12686            recursivelyTraverseDisappearLayoutEffects(finishedWork);
12687        }
12688        (finishedWork.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && (componentEffectSpawnedUpdate || 0.05 < componentEffectDuration) && logComponentEffect(
12689          finishedWork,
12690          componentEffectStartTime,
12691          componentEffectEndTime,
12692          componentEffectDuration,
12693          componentEffectErrors
12694        );
12695        popComponentEffectStart(prevEffectStart);
12696        popComponentEffectDuration(prevEffectDuration);
12697        componentEffectErrors = prevEffectErrors;
12698        componentEffectSpawnedUpdate = prevEffectDidSpawnUpdate;
12699      }
12700      function recursivelyTraverseDisappearLayoutEffects(parentFiber) {
12701        for (parentFiber = parentFiber.child; null !== parentFiber; )
12702          disappearLayoutEffects(parentFiber), parentFiber = parentFiber.sibling;
12703      }
12704      function reappearLayoutEffects(finishedRoot, current2, finishedWork, includeWorkInProgressEffects) {
12705        var prevEffectStart = pushComponentEffectStart(), prevEffectDuration = pushComponentEffectDuration(), prevEffectErrors = pushComponentEffectErrors(), prevEffectDidSpawnUpdate = pushComponentEffectDidSpawnUpdate(), flags = finishedWork.flags;
12706        switch (finishedWork.tag) {
12707          case 0:
12708          case 11:
12709          case 15:
12710            recursivelyTraverseReappearLayoutEffects(
12711              finishedRoot,
12712              finishedWork,
12713              includeWorkInProgressEffects
12714            );
12715            commitHookLayoutEffects(finishedWork, Layout);
12716            break;
12717          case 1:
12718            recursivelyTraverseReappearLayoutEffects(
12719              finishedRoot,
12720              finishedWork,
12721              includeWorkInProgressEffects
12722            );
12723            current2 = finishedWork.stateNode;
12724            "function" === typeof current2.componentDidMount && runWithFiberInDEV(
12725              finishedWork,
12726              callComponentDidMountInDEV,
12727              finishedWork,
12728              current2
12729            );
12730            current2 = finishedWork.updateQueue;
12731            if (null !== current2) {
12732              finishedRoot = finishedWork.stateNode;
12733              try {
12734                runWithFiberInDEV(
12735                  finishedWork,
12736                  commitHiddenCallbacks,
12737                  current2,
12738                  finishedRoot
12739                );
12740              } catch (error2) {
12741                captureCommitPhaseError(finishedWork, finishedWork.return, error2);
12742              }
12743            }
12744            includeWorkInProgressEffects && flags & 64 && commitClassCallbacks(finishedWork);
12745            safelyAttachRef(finishedWork, finishedWork.return);
12746            break;
12747          case 27:
12748            commitHostSingletonAcquisition(finishedWork);
12749          case 26:
12750          case 5:
12751            recursivelyTraverseReappearLayoutEffects(
12752              finishedRoot,
12753              finishedWork,
12754              includeWorkInProgressEffects
12755            );
12756            includeWorkInProgressEffects && null === current2 && flags & 4 && commitHostMount(finishedWork);
12757            safelyAttachRef(finishedWork, finishedWork.return);
12758            break;
12759          case 12:
12760            if (includeWorkInProgressEffects && flags & 4) {
12761              flags = pushNestedEffectDurations();
12762              recursivelyTraverseReappearLayoutEffects(
12763                finishedRoot,
12764                finishedWork,
12765                includeWorkInProgressEffects
12766              );
12767              includeWorkInProgressEffects = finishedWork.stateNode;
12768              includeWorkInProgressEffects.effectDuration += bubbleNestedEffectDurations(flags);
12769              try {
12770                runWithFiberInDEV(
12771                  finishedWork,
12772                  commitProfiler,
12773                  finishedWork,
12774                  current2,
12775                  commitStartTime,
12776                  includeWorkInProgressEffects.effectDuration
12777                );
12778              } catch (error2) {
12779                captureCommitPhaseError(finishedWork, finishedWork.return, error2);
12780              }
12781            } else
12782              recursivelyTraverseReappearLayoutEffects(
12783                finishedRoot,
12784                finishedWork,
12785                includeWorkInProgressEffects
12786              );
12787            break;
12788          case 31:
12789            recursivelyTraverseReappearLayoutEffects(
12790              finishedRoot,
12791              finishedWork,
12792              includeWorkInProgressEffects
12793            );
12794            includeWorkInProgressEffects && flags & 4 && commitActivityHydrationCallbacks(finishedRoot, finishedWork);
12795            break;
12796          case 13:
12797            recursivelyTraverseReappearLayoutEffects(
12798              finishedRoot,
12799              finishedWork,
12800              includeWorkInProgressEffects
12801            );
12802            includeWorkInProgressEffects && flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);
12803            break;
12804          case 22:
12805            null === finishedWork.memoizedState && recursivelyTraverseReappearLayoutEffects(
12806              finishedRoot,
12807              finishedWork,
12808              includeWorkInProgressEffects
12809            );
12810            safelyAttachRef(finishedWork, finishedWork.return);
12811            break;
12812          case 30:
12813            break;
12814          default:
12815            recursivelyTraverseReappearLayoutEffects(
12816              finishedRoot,
12817              finishedWork,
12818              includeWorkInProgressEffects
12819            );
12820        }
12821        (finishedWork.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && (componentEffectSpawnedUpdate || 0.05 < componentEffectDuration) && logComponentEffect(
12822          finishedWork,
12823          componentEffectStartTime,
12824          componentEffectEndTime,
12825          componentEffectDuration,
12826          componentEffectErrors
12827        );
12828        popComponentEffectStart(prevEffectStart);
12829        popComponentEffectDuration(prevEffectDuration);
12830        componentEffectErrors = prevEffectErrors;
12831        componentEffectSpawnedUpdate = prevEffectDidSpawnUpdate;
12832      }
12833      function recursivelyTraverseReappearLayoutEffects(finishedRoot, parentFiber, includeWorkInProgressEffects) {
12834        includeWorkInProgressEffects = includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);
12835        for (parentFiber = parentFiber.child; null !== parentFiber; )
12836          reappearLayoutEffects(
12837            finishedRoot,
12838            parentFiber.alternate,
12839            parentFiber,
12840            includeWorkInProgressEffects
12841          ), parentFiber = parentFiber.sibling;
12842      }
12843      function commitOffscreenPassiveMountEffects(current2, finishedWork) {
12844        var previousCache = null;
12845        null !== current2 && null !== current2.memoizedState && null !== current2.memoizedState.cachePool && (previousCache = current2.memoizedState.cachePool.pool);
12846        current2 = null;
12847        null !== finishedWork.memoizedState && null !== finishedWork.memoizedState.cachePool && (current2 = finishedWork.memoizedState.cachePool.pool);
12848        current2 !== previousCache && (null != current2 && retainCache(current2), null != previousCache && releaseCache(previousCache));
12849      }
12850      function commitCachePassiveMountEffect(current2, finishedWork) {
12851        current2 = null;
12852        null !== finishedWork.alternate && (current2 = finishedWork.alternate.memoizedState.cache);
12853        finishedWork = finishedWork.memoizedState.cache;
12854        finishedWork !== current2 && (retainCache(finishedWork), null != current2 && releaseCache(current2));
12855      }
12856      function recursivelyTraversePassiveMountEffects(root3, parentFiber, committedLanes, committedTransitions, endTime) {
12857        if (parentFiber.subtreeFlags & 10256 || 0 !== parentFiber.actualDuration && (null === parentFiber.alternate || parentFiber.alternate.child !== parentFiber.child))
12858          for (parentFiber = parentFiber.child; null !== parentFiber; ) {
12859            var nextSibling = parentFiber.sibling;
12860            commitPassiveMountOnFiber(
12861              root3,
12862              parentFiber,
12863              committedLanes,
12864              committedTransitions,
12865              null !== nextSibling ? nextSibling.actualStartTime : endTime
12866            );
12867            parentFiber = nextSibling;
12868          }
12869      }
12870      function commitPassiveMountOnFiber(finishedRoot, finishedWork, committedLanes, committedTransitions, endTime) {
12871        var prevEffectStart = pushComponentEffectStart(), prevEffectDuration = pushComponentEffectDuration(), prevEffectErrors = pushComponentEffectErrors(), prevEffectDidSpawnUpdate = pushComponentEffectDidSpawnUpdate(), prevDeepEquality = alreadyWarnedForDeepEquality, flags = finishedWork.flags;
12872        switch (finishedWork.tag) {
12873          case 0:
12874          case 11:
12875          case 15:
12876            (finishedWork.mode & ProfileMode) !== NoMode && 0 < finishedWork.actualStartTime && 0 !== (finishedWork.flags & 1) && logComponentRender(
12877              finishedWork,
12878              finishedWork.actualStartTime,
12879              endTime,
12880              inHydratedSubtree,
12881              committedLanes
12882            );
12883            recursivelyTraversePassiveMountEffects(
12884              finishedRoot,
12885              finishedWork,
12886              committedLanes,
12887              committedTransitions,
12888              endTime
12889            );
12890            flags & 2048 && commitHookPassiveMountEffects(finishedWork, Passive | HasEffect);
12891            break;
12892          case 1:
12893            (finishedWork.mode & ProfileMode) !== NoMode && 0 < finishedWork.actualStartTime && (0 !== (finishedWork.flags & 128) ? logComponentErrored(
12894              finishedWork,
12895              finishedWork.actualStartTime,
12896              endTime,
12897              []
12898            ) : 0 !== (finishedWork.flags & 1) && logComponentRender(
12899              finishedWork,
12900              finishedWork.actualStartTime,
12901              endTime,
12902              inHydratedSubtree,
12903              committedLanes
12904            ));
12905            recursivelyTraversePassiveMountEffects(
12906              finishedRoot,
12907              finishedWork,
12908              committedLanes,
12909              committedTransitions,
12910              endTime
12911            );
12912            break;
12913          case 3:
12914            var prevProfilerEffectDuration = pushNestedEffectDurations(), wasInHydratedSubtree = inHydratedSubtree;
12915            inHydratedSubtree = null !== finishedWork.alternate && finishedWork.alternate.memoizedState.isDehydrated && 0 === (finishedWork.flags & 256);
12916            recursivelyTraversePassiveMountEffects(
12917              finishedRoot,
12918              finishedWork,
12919              committedLanes,
12920              committedTransitions,
12921              endTime
12922            );
12923            inHydratedSubtree = wasInHydratedSubtree;
12924            flags & 2048 && (committedLanes = null, null !== finishedWork.alternate && (committedLanes = finishedWork.alternate.memoizedState.cache), committedTransitions = finishedWork.memoizedState.cache, committedTransitions !== committedLanes && (retainCache(committedTransitions), null != committedLanes && releaseCache(committedLanes)));
12925            finishedRoot.passiveEffectDuration += popNestedEffectDurations(
12926              prevProfilerEffectDuration
12927            );
12928            break;
12929          case 12:
12930            if (flags & 2048) {
12931              flags = pushNestedEffectDurations();
12932              recursivelyTraversePassiveMountEffects(
12933                finishedRoot,
12934                finishedWork,
12935                committedLanes,
12936                committedTransitions,
12937                endTime
12938              );
12939              finishedRoot = finishedWork.stateNode;
12940              finishedRoot.passiveEffectDuration += bubbleNestedEffectDurations(flags);
12941              try {
12942                runWithFiberInDEV(
12943                  finishedWork,
12944                  commitProfilerPostCommitImpl,
12945                  finishedWork,
12946                  finishedWork.alternate,
12947                  commitStartTime,
12948                  finishedRoot.passiveEffectDuration
12949                );
12950              } catch (error2) {
12951                captureCommitPhaseError(finishedWork, finishedWork.return, error2);
12952              }
12953            } else
12954              recursivelyTraversePassiveMountEffects(
12955                finishedRoot,
12956                finishedWork,
12957                committedLanes,
12958                committedTransitions,
12959                endTime
12960              );
12961            break;
12962          case 31:
12963            flags = inHydratedSubtree;
12964            prevProfilerEffectDuration = null !== finishedWork.alternate ? finishedWork.alternate.memoizedState : null;
12965            wasInHydratedSubtree = finishedWork.memoizedState;
12966            null !== prevProfilerEffectDuration && null === wasInHydratedSubtree ? (wasInHydratedSubtree = finishedWork.deletions, null !== wasInHydratedSubtree && 0 < wasInHydratedSubtree.length && 18 === wasInHydratedSubtree[0].tag ? (inHydratedSubtree = false, prevProfilerEffectDuration = prevProfilerEffectDuration.hydrationErrors, null !== prevProfilerEffectDuration && logComponentErrored(
12967              finishedWork,
12968              finishedWork.actualStartTime,
12969              endTime,
12970              prevProfilerEffectDuration
12971            )) : inHydratedSubtree = true) : inHydratedSubtree = false;
12972            recursivelyTraversePassiveMountEffects(
12973              finishedRoot,
12974              finishedWork,
12975              committedLanes,
12976              committedTransitions,
12977              endTime
12978            );
12979            inHydratedSubtree = flags;
12980            break;
12981          case 13:
12982            flags = inHydratedSubtree;
12983            prevProfilerEffectDuration = null !== finishedWork.alternate ? finishedWork.alternate.memoizedState : null;
12984            wasInHydratedSubtree = finishedWork.memoizedState;
12985            null === prevProfilerEffectDuration || null === prevProfilerEffectDuration.dehydrated || null !== wasInHydratedSubtree && null !== wasInHydratedSubtree.dehydrated ? inHydratedSubtree = false : (wasInHydratedSubtree = finishedWork.deletions, null !== wasInHydratedSubtree && 0 < wasInHydratedSubtree.length && 18 === wasInHydratedSubtree[0].tag ? (inHydratedSubtree = false, prevProfilerEffectDuration = prevProfilerEffectDuration.hydrationErrors, null !== prevProfilerEffectDuration && logComponentErrored(
12986              finishedWork,
12987              finishedWork.actualStartTime,
12988              endTime,
12989              prevProfilerEffectDuration
12990            )) : inHydratedSubtree = true);
12991            recursivelyTraversePassiveMountEffects(
12992              finishedRoot,
12993              finishedWork,
12994              committedLanes,
12995              committedTransitions,
12996              endTime
12997            );
12998            inHydratedSubtree = flags;
12999            break;
13000          case 23:
13001            break;
13002          case 22:
13003            wasInHydratedSubtree = finishedWork.stateNode;
13004            prevProfilerEffectDuration = finishedWork.alternate;
13005            null !== finishedWork.memoizedState ? wasInHydratedSubtree._visibility & OffscreenPassiveEffectsConnected ? recursivelyTraversePassiveMountEffects(
13006              finishedRoot,
13007              finishedWork,
13008              committedLanes,
13009              committedTransitions,
13010              endTime
13011            ) : recursivelyTraverseAtomicPassiveEffects(
13012              finishedRoot,
13013              finishedWork,
13014              committedLanes,
13015              committedTransitions,
13016              endTime
13017            ) : wasInHydratedSubtree._visibility & OffscreenPassiveEffectsConnected ? recursivelyTraversePassiveMountEffects(
13018              finishedRoot,
13019              finishedWork,
13020              committedLanes,
13021              committedTransitions,
13022              endTime
13023            ) : (wasInHydratedSubtree._visibility |= OffscreenPassiveEffectsConnected, recursivelyTraverseReconnectPassiveEffects(
13024              finishedRoot,
13025              finishedWork,
13026              committedLanes,
13027              committedTransitions,
13028              0 !== (finishedWork.subtreeFlags & 10256) || 0 !== finishedWork.actualDuration && (null === finishedWork.alternate || finishedWork.alternate.child !== finishedWork.child),
13029              endTime
13030            ), (finishedWork.mode & ProfileMode) === NoMode || inHydratedSubtree || (finishedRoot = finishedWork.actualStartTime, 0 <= finishedRoot && 0.05 < endTime - finishedRoot && logComponentReappeared(finishedWork, finishedRoot, endTime), 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && 0.05 < componentEffectEndTime - componentEffectStartTime && logComponentReappeared(
13031              finishedWork,
13032              componentEffectStartTime,
13033              componentEffectEndTime
13034            )));
13035            flags & 2048 && commitOffscreenPassiveMountEffects(
13036              prevProfilerEffectDuration,
13037              finishedWork
13038            );
13039            break;
13040          case 24:
13041            recursivelyTraversePassiveMountEffects(
13042              finishedRoot,
13043              finishedWork,
13044              committedLanes,
13045              committedTransitions,
13046              endTime
13047            );
13048            flags & 2048 && commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);
13049            break;
13050          default:
13051            recursivelyTraversePassiveMountEffects(
13052              finishedRoot,
13053              finishedWork,
13054              committedLanes,
13055              committedTransitions,
13056              endTime
13057            );
13058        }
13059        if ((finishedWork.mode & ProfileMode) !== NoMode) {
13060          if (finishedRoot = !inHydratedSubtree && null === finishedWork.alternate && null !== finishedWork.return && null !== finishedWork.return.alternate)
13061            committedLanes = finishedWork.actualStartTime, 0 <= committedLanes && 0.05 < endTime - committedLanes && logComponentTrigger(
13062              finishedWork,
13063              committedLanes,
13064              endTime,
13065              "Mount"
13066            );
13067          0 <= componentEffectStartTime && 0 <= componentEffectEndTime && ((componentEffectSpawnedUpdate || 0.05 < componentEffectDuration) && logComponentEffect(
13068            finishedWork,
13069            componentEffectStartTime,
13070            componentEffectEndTime,
13071            componentEffectDuration,
13072            componentEffectErrors
13073          ), finishedRoot && 0.05 < componentEffectEndTime - componentEffectStartTime && logComponentTrigger(
13074            finishedWork,
13075            componentEffectStartTime,
13076            componentEffectEndTime,
13077            "Mount"
13078          ));
13079        }
13080        popComponentEffectStart(prevEffectStart);
13081        popComponentEffectDuration(prevEffectDuration);
13082        componentEffectErrors = prevEffectErrors;
13083        componentEffectSpawnedUpdate = prevEffectDidSpawnUpdate;
13084        alreadyWarnedForDeepEquality = prevDeepEquality;
13085      }
13086      function recursivelyTraverseReconnectPassiveEffects(finishedRoot, parentFiber, committedLanes, committedTransitions, includeWorkInProgressEffects, endTime) {
13087        includeWorkInProgressEffects = includeWorkInProgressEffects && (0 !== (parentFiber.subtreeFlags & 10256) || 0 !== parentFiber.actualDuration && (null === parentFiber.alternate || parentFiber.alternate.child !== parentFiber.child));
13088        for (parentFiber = parentFiber.child; null !== parentFiber; ) {
13089          var nextSibling = parentFiber.sibling;
13090          reconnectPassiveEffects(
13091            finishedRoot,
13092            parentFiber,
13093            committedLanes,
13094            committedTransitions,
13095            includeWorkInProgressEffects,
13096            null !== nextSibling ? nextSibling.actualStartTime : endTime
13097          );
13098          parentFiber = nextSibling;
13099        }
13100      }
13101      function reconnectPassiveEffects(finishedRoot, finishedWork, committedLanes, committedTransitions, includeWorkInProgressEffects, endTime) {
13102        var prevEffectStart = pushComponentEffectStart(), prevEffectDuration = pushComponentEffectDuration(), prevEffectErrors = pushComponentEffectErrors(), prevEffectDidSpawnUpdate = pushComponentEffectDidSpawnUpdate(), prevDeepEquality = alreadyWarnedForDeepEquality;
13103        includeWorkInProgressEffects && (finishedWork.mode & ProfileMode) !== NoMode && 0 < finishedWork.actualStartTime && 0 !== (finishedWork.flags & 1) && logComponentRender(
13104          finishedWork,
13105          finishedWork.actualStartTime,
13106          endTime,
13107          inHydratedSubtree,
13108          committedLanes
13109        );
13110        var flags = finishedWork.flags;
13111        switch (finishedWork.tag) {
13112          case 0:
13113          case 11:
13114          case 15:
13115            recursivelyTraverseReconnectPassiveEffects(
13116              finishedRoot,
13117              finishedWork,
13118              committedLanes,
13119              committedTransitions,
13120              includeWorkInProgressEffects,
13121              endTime
13122            );
13123            commitHookPassiveMountEffects(finishedWork, Passive);
13124            break;
13125          case 23:
13126            break;
13127          case 22:
13128            var _instance2 = finishedWork.stateNode;
13129            null !== finishedWork.memoizedState ? _instance2._visibility & OffscreenPassiveEffectsConnected ? recursivelyTraverseReconnectPassiveEffects(
13130              finishedRoot,
13131              finishedWork,
13132              committedLanes,
13133              committedTransitions,
13134              includeWorkInProgressEffects,
13135              endTime
13136            ) : recursivelyTraverseAtomicPassiveEffects(
13137              finishedRoot,
13138              finishedWork,
13139              committedLanes,
13140              committedTransitions,
13141              endTime
13142            ) : (_instance2._visibility |= OffscreenPassiveEffectsConnected, recursivelyTraverseReconnectPassiveEffects(
13143              finishedRoot,
13144              finishedWork,
13145              committedLanes,
13146              committedTransitions,
13147              includeWorkInProgressEffects,
13148              endTime
13149            ));
13150            includeWorkInProgressEffects && flags & 2048 && commitOffscreenPassiveMountEffects(
13151              finishedWork.alternate,
13152              finishedWork
13153            );
13154            break;
13155          case 24:
13156            recursivelyTraverseReconnectPassiveEffects(
13157              finishedRoot,
13158              finishedWork,
13159              committedLanes,
13160              committedTransitions,
13161              includeWorkInProgressEffects,
13162              endTime
13163            );
13164            includeWorkInProgressEffects && flags & 2048 && commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);
13165            break;
13166          default:
13167            recursivelyTraverseReconnectPassiveEffects(
13168              finishedRoot,
13169              finishedWork,
13170              committedLanes,
13171              committedTransitions,
13172              includeWorkInProgressEffects,
13173              endTime
13174            );
13175        }
13176        (finishedWork.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && (componentEffectSpawnedUpdate || 0.05 < componentEffectDuration) && logComponentEffect(
13177          finishedWork,
13178          componentEffectStartTime,
13179          componentEffectEndTime,
13180          componentEffectDuration,
13181          componentEffectErrors
13182        );
13183        popComponentEffectStart(prevEffectStart);
13184        popComponentEffectDuration(prevEffectDuration);
13185        componentEffectErrors = prevEffectErrors;
13186        componentEffectSpawnedUpdate = prevEffectDidSpawnUpdate;
13187        alreadyWarnedForDeepEquality = prevDeepEquality;
13188      }
13189      function recursivelyTraverseAtomicPassiveEffects(finishedRoot$jscomp$0, parentFiber, committedLanes$jscomp$0, committedTransitions$jscomp$0, endTime$jscomp$0) {
13190        if (parentFiber.subtreeFlags & 10256 || 0 !== parentFiber.actualDuration && (null === parentFiber.alternate || parentFiber.alternate.child !== parentFiber.child))
13191          for (var child = parentFiber.child; null !== child; ) {
13192            parentFiber = child.sibling;
13193            var finishedRoot = finishedRoot$jscomp$0, committedLanes = committedLanes$jscomp$0, committedTransitions = committedTransitions$jscomp$0, endTime = null !== parentFiber ? parentFiber.actualStartTime : endTime$jscomp$0, prevDeepEquality = alreadyWarnedForDeepEquality;
13194            (child.mode & ProfileMode) !== NoMode && 0 < child.actualStartTime && 0 !== (child.flags & 1) && logComponentRender(
13195              child,
13196              child.actualStartTime,
13197              endTime,
13198              inHydratedSubtree,
13199              committedLanes
13200            );
13201            var flags = child.flags;
13202            switch (child.tag) {
13203              case 22:
13204                recursivelyTraverseAtomicPassiveEffects(
13205                  finishedRoot,
13206                  child,
13207                  committedLanes,
13208                  committedTransitions,
13209                  endTime
13210                );
13211                flags & 2048 && commitOffscreenPassiveMountEffects(child.alternate, child);
13212                break;
13213              case 24:
13214                recursivelyTraverseAtomicPassiveEffects(
13215                  finishedRoot,
13216                  child,
13217                  committedLanes,
13218                  committedTransitions,
13219                  endTime
13220                );
13221                flags & 2048 && commitCachePassiveMountEffect(child.alternate, child);
13222                break;
13223              default:
13224                recursivelyTraverseAtomicPassiveEffects(
13225                  finishedRoot,
13226                  child,
13227                  committedLanes,
13228                  committedTransitions,
13229                  endTime
13230                );
13231            }
13232            alreadyWarnedForDeepEquality = prevDeepEquality;
13233            child = parentFiber;
13234          }
13235      }
13236      function recursivelyAccumulateSuspenseyCommit(parentFiber, committedLanes, suspendedState) {
13237        if (parentFiber.subtreeFlags & suspenseyCommitFlag)
13238          for (parentFiber = parentFiber.child; null !== parentFiber; )
13239            accumulateSuspenseyCommitOnFiber(
13240              parentFiber,
13241              committedLanes,
13242              suspendedState
13243            ), parentFiber = parentFiber.sibling;
13244      }
13245      function accumulateSuspenseyCommitOnFiber(fiber, committedLanes, suspendedState) {
13246        switch (fiber.tag) {
13247          case 26:
13248            recursivelyAccumulateSuspenseyCommit(
13249              fiber,
13250              committedLanes,
13251              suspendedState
13252            );
13253            fiber.flags & suspenseyCommitFlag && null !== fiber.memoizedState && suspendResource(
13254              suspendedState,
13255              currentHoistableRoot,
13256              fiber.memoizedState,
13257              fiber.memoizedProps
13258            );
13259            break;
13260          case 5:
13261            recursivelyAccumulateSuspenseyCommit(
13262              fiber,
13263              committedLanes,
13264              suspendedState
13265            );
13266            break;
13267          case 3:
13268          case 4:
13269            var previousHoistableRoot = currentHoistableRoot;
13270            currentHoistableRoot = getHoistableRoot(
13271              fiber.stateNode.containerInfo
13272            );
13273            recursivelyAccumulateSuspenseyCommit(
13274              fiber,
13275              committedLanes,
13276              suspendedState
13277            );
13278            currentHoistableRoot = previousHoistableRoot;
13279            break;
13280          case 22:
13281            null === fiber.memoizedState && (previousHoistableRoot = fiber.alternate, null !== previousHoistableRoot && null !== previousHoistableRoot.memoizedState ? (previousHoistableRoot = suspenseyCommitFlag, suspenseyCommitFlag = 16777216, recursivelyAccumulateSuspenseyCommit(
13282              fiber,
13283              committedLanes,
13284              suspendedState
13285            ), suspenseyCommitFlag = previousHoistableRoot) : recursivelyAccumulateSuspenseyCommit(
13286              fiber,
13287              committedLanes,
13288              suspendedState
13289            ));
13290            break;
13291          default:
13292            recursivelyAccumulateSuspenseyCommit(
13293              fiber,
13294              committedLanes,
13295              suspendedState
13296            );
13297        }
13298      }
13299      function detachAlternateSiblings(parentFiber) {
13300        var previousFiber = parentFiber.alternate;
13301        if (null !== previousFiber && (parentFiber = previousFiber.child, null !== parentFiber)) {
13302          previousFiber.child = null;
13303          do
13304            previousFiber = parentFiber.sibling, parentFiber.sibling = null, parentFiber = previousFiber;
13305          while (null !== parentFiber);
13306        }
13307      }
13308      function recursivelyTraversePassiveUnmountEffects(parentFiber) {
13309        var deletions = parentFiber.deletions;
13310        if (0 !== (parentFiber.flags & 16)) {
13311          if (null !== deletions)
13312            for (var i3 = 0; i3 < deletions.length; i3++) {
13313              var childToDelete = deletions[i3], prevEffectStart = pushComponentEffectStart();
13314              nextEffect = childToDelete;
13315              commitPassiveUnmountEffectsInsideOfDeletedTree_begin(
13316                childToDelete,
13317                parentFiber
13318              );
13319              (childToDelete.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && 0.05 < componentEffectEndTime - componentEffectStartTime && logComponentTrigger(
13320                childToDelete,
13321                componentEffectStartTime,
13322                componentEffectEndTime,
13323                "Unmount"
13324              );
13325              popComponentEffectStart(prevEffectStart);
13326            }
13327          detachAlternateSiblings(parentFiber);
13328        }
13329        if (parentFiber.subtreeFlags & 10256)
13330          for (parentFiber = parentFiber.child; null !== parentFiber; )
13331            commitPassiveUnmountOnFiber(parentFiber), parentFiber = parentFiber.sibling;
13332      }
13333      function commitPassiveUnmountOnFiber(finishedWork) {
13334        var prevEffectStart = pushComponentEffectStart(), prevEffectDuration = pushComponentEffectDuration(), prevEffectErrors = pushComponentEffectErrors(), prevEffectDidSpawnUpdate = pushComponentEffectDidSpawnUpdate();
13335        switch (finishedWork.tag) {
13336          case 0:
13337          case 11:
13338          case 15:
13339            recursivelyTraversePassiveUnmountEffects(finishedWork);
13340            finishedWork.flags & 2048 && commitHookPassiveUnmountEffects(
13341              finishedWork,
13342              finishedWork.return,
13343              Passive | HasEffect
13344            );
13345            break;
13346          case 3:
13347            var prevProfilerEffectDuration = pushNestedEffectDurations();
13348            recursivelyTraversePassiveUnmountEffects(finishedWork);
13349            finishedWork.stateNode.passiveEffectDuration += popNestedEffectDurations(prevProfilerEffectDuration);
13350            break;
13351          case 12:
13352            prevProfilerEffectDuration = pushNestedEffectDurations();
13353            recursivelyTraversePassiveUnmountEffects(finishedWork);
13354            finishedWork.stateNode.passiveEffectDuration += bubbleNestedEffectDurations(prevProfilerEffectDuration);
13355            break;
13356          case 22:
13357            prevProfilerEffectDuration = finishedWork.stateNode;
13358            null !== finishedWork.memoizedState && prevProfilerEffectDuration._visibility & OffscreenPassiveEffectsConnected && (null === finishedWork.return || 13 !== finishedWork.return.tag) ? (prevProfilerEffectDuration._visibility &= ~OffscreenPassiveEffectsConnected, recursivelyTraverseDisconnectPassiveEffects(finishedWork), (finishedWork.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && 0.05 < componentEffectEndTime - componentEffectStartTime && logComponentTrigger(
13359              finishedWork,
13360              componentEffectStartTime,
13361              componentEffectEndTime,
13362              "Disconnect"
13363            )) : recursivelyTraversePassiveUnmountEffects(finishedWork);
13364            break;
13365          default:
13366            recursivelyTraversePassiveUnmountEffects(finishedWork);
13367        }
13368        (finishedWork.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && (componentEffectSpawnedUpdate || 0.05 < componentEffectDuration) && logComponentEffect(
13369          finishedWork,
13370          componentEffectStartTime,
13371          componentEffectEndTime,
13372          componentEffectDuration,
13373          componentEffectErrors
13374        );
13375        popComponentEffectStart(prevEffectStart);
13376        popComponentEffectDuration(prevEffectDuration);
13377        componentEffectSpawnedUpdate = prevEffectDidSpawnUpdate;
13378        componentEffectErrors = prevEffectErrors;
13379      }
13380      function recursivelyTraverseDisconnectPassiveEffects(parentFiber) {
13381        var deletions = parentFiber.deletions;
13382        if (0 !== (parentFiber.flags & 16)) {
13383          if (null !== deletions)
13384            for (var i3 = 0; i3 < deletions.length; i3++) {
13385              var childToDelete = deletions[i3], prevEffectStart = pushComponentEffectStart();
13386              nextEffect = childToDelete;
13387              commitPassiveUnmountEffectsInsideOfDeletedTree_begin(
13388                childToDelete,
13389                parentFiber
13390              );
13391              (childToDelete.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && 0.05 < componentEffectEndTime - componentEffectStartTime && logComponentTrigger(
13392                childToDelete,
13393                componentEffectStartTime,
13394                componentEffectEndTime,
13395                "Unmount"
13396              );
13397              popComponentEffectStart(prevEffectStart);
13398            }
13399          detachAlternateSiblings(parentFiber);
13400        }
13401        for (parentFiber = parentFiber.child; null !== parentFiber; )
13402          disconnectPassiveEffect(parentFiber), parentFiber = parentFiber.sibling;
13403      }
13404      function disconnectPassiveEffect(finishedWork) {
13405        var prevEffectStart = pushComponentEffectStart(), prevEffectDuration = pushComponentEffectDuration(), prevEffectErrors = pushComponentEffectErrors(), prevEffectDidSpawnUpdate = pushComponentEffectDidSpawnUpdate();
13406        switch (finishedWork.tag) {
13407          case 0:
13408          case 11:
13409          case 15:
13410            commitHookPassiveUnmountEffects(
13411              finishedWork,
13412              finishedWork.return,
13413              Passive
13414            );
13415            recursivelyTraverseDisconnectPassiveEffects(finishedWork);
13416            break;
13417          case 22:
13418            var instance = finishedWork.stateNode;
13419            instance._visibility & OffscreenPassiveEffectsConnected && (instance._visibility &= ~OffscreenPassiveEffectsConnected, recursivelyTraverseDisconnectPassiveEffects(finishedWork));
13420            break;
13421          default:
13422            recursivelyTraverseDisconnectPassiveEffects(finishedWork);
13423        }
13424        (finishedWork.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && (componentEffectSpawnedUpdate || 0.05 < componentEffectDuration) && logComponentEffect(
13425          finishedWork,
13426          componentEffectStartTime,
13427          componentEffectEndTime,
13428          componentEffectDuration,
13429          componentEffectErrors
13430        );
13431        popComponentEffectStart(prevEffectStart);
13432        popComponentEffectDuration(prevEffectDuration);
13433        componentEffectSpawnedUpdate = prevEffectDidSpawnUpdate;
13434        componentEffectErrors = prevEffectErrors;
13435      }
13436      function commitPassiveUnmountEffectsInsideOfDeletedTree_begin(deletedSubtreeRoot, nearestMountedAncestor$jscomp$0) {
13437        for (; null !== nextEffect; ) {
13438          var fiber = nextEffect, current2 = fiber, nearestMountedAncestor = nearestMountedAncestor$jscomp$0, prevEffectStart = pushComponentEffectStart(), prevEffectDuration = pushComponentEffectDuration(), prevEffectErrors = pushComponentEffectErrors(), prevEffectDidSpawnUpdate = pushComponentEffectDidSpawnUpdate();
13439          switch (current2.tag) {
13440            case 0:
13441            case 11:
13442            case 15:
13443              commitHookPassiveUnmountEffects(
13444                current2,
13445                nearestMountedAncestor,
13446                Passive
13447              );
13448              break;
13449            case 23:
13450            case 22:
13451              null !== current2.memoizedState && null !== current2.memoizedState.cachePool && (nearestMountedAncestor = current2.memoizedState.cachePool.pool, null != nearestMountedAncestor && retainCache(nearestMountedAncestor));
13452              break;
13453            case 24:
13454              releaseCache(current2.memoizedState.cache);
13455          }
13456          (current2.mode & ProfileMode) !== NoMode && 0 <= componentEffectStartTime && 0 <= componentEffectEndTime && (componentEffectSpawnedUpdate || 0.05 < componentEffectDuration) && logComponentEffect(
13457            current2,
13458            componentEffectStartTime,
13459            componentEffectEndTime,
13460            componentEffectDuration,
13461            componentEffectErrors
13462          );
13463          popComponentEffectStart(prevEffectStart);
13464          popComponentEffectDuration(prevEffectDuration);
13465          componentEffectSpawnedUpdate = prevEffectDidSpawnUpdate;
13466          componentEffectErrors = prevEffectErrors;
13467          current2 = fiber.child;
13468          if (null !== current2) current2.return = fiber, nextEffect = current2;
13469          else
13470            a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {
13471              current2 = nextEffect;
13472              prevEffectStart = current2.sibling;
13473              prevEffectDuration = current2.return;
13474              detachFiberAfterEffects(current2);
13475              if (current2 === fiber) {
13476                nextEffect = null;
13477                break a;
13478              }
13479              if (null !== prevEffectStart) {
13480                prevEffectStart.return = prevEffectDuration;
13481                nextEffect = prevEffectStart;
13482                break a;
13483              }
13484              nextEffect = prevEffectDuration;
13485            }
13486        }
13487      }
13488      function onCommitRoot() {
13489        commitHooks.forEach(function(commitHook) {
13490          return commitHook();
13491        });
13492      }
13493      function isConcurrentActEnvironment() {
13494        var isReactActEnvironmentGlobal = "undefined" !== typeof IS_REACT_ACT_ENVIRONMENT ? IS_REACT_ACT_ENVIRONMENT : void 0;
13495        isReactActEnvironmentGlobal || null === ReactSharedInternals.actQueue || console.error(
13496          "The current testing environment is not configured to support act(...)"
13497        );
13498        return isReactActEnvironmentGlobal;
13499      }
13500      function requestUpdateLane(fiber) {
13501        if ((executionContext & RenderContext) !== NoContext && 0 !== workInProgressRootRenderLanes)
13502          return workInProgressRootRenderLanes & -workInProgressRootRenderLanes;
13503        var transition = ReactSharedInternals.T;
13504        return null !== transition ? (transition._updatedFibers || (transition._updatedFibers = /* @__PURE__ */ new Set()), transition._updatedFibers.add(fiber), requestTransitionLane()) : resolveUpdatePriority();
13505      }
13506      function requestDeferredLane() {
13507        if (0 === workInProgressDeferredLane)
13508          if (0 === (workInProgressRootRenderLanes & 536870912) || isHydrating) {
13509            var lane = nextTransitionDeferredLane;
13510            nextTransitionDeferredLane <<= 1;
13511            0 === (nextTransitionDeferredLane & 3932160) && (nextTransitionDeferredLane = 262144);
13512            workInProgressDeferredLane = lane;
13513          } else workInProgressDeferredLane = 536870912;
13514        lane = suspenseHandlerStackCursor.current;
13515        null !== lane && (lane.flags |= 32);
13516        return workInProgressDeferredLane;
13517      }
13518      function scheduleUpdateOnFiber(root3, fiber, lane) {
13519        isRunningInsertionEffect && console.error("useInsertionEffect must not schedule updates.");
13520        isFlushingPassiveEffects && (didScheduleUpdateDuringPassiveEffects = true);
13521        if (root3 === workInProgressRoot && (workInProgressSuspendedReason === SuspendedOnData || workInProgressSuspendedReason === SuspendedOnAction) || null !== root3.cancelPendingCommit)
13522          prepareFreshStack(root3, 0), markRootSuspended(
13523            root3,
13524            workInProgressRootRenderLanes,
13525            workInProgressDeferredLane,
13526            false
13527          );
13528        markRootUpdated$1(root3, lane);
13529        if ((executionContext & RenderContext) !== NoContext && root3 === workInProgressRoot) {
13530          if (isRendering)
13531            switch (fiber.tag) {
13532              case 0:
13533              case 11:
13534              case 15:
13535                root3 = workInProgress && getComponentNameFromFiber(workInProgress) || "Unknown";
13536                didWarnAboutUpdateInRenderForAnotherComponent.has(root3) || (didWarnAboutUpdateInRenderForAnotherComponent.add(root3), fiber = getComponentNameFromFiber(fiber) || "Unknown", console.error(
13537                  "Cannot update a component (`%s`) while rendering a different component (`%s`). To locate the bad setState() call inside `%s`, follow the stack trace as described in https://react.dev/link/setstate-in-render",
13538                  fiber,
13539                  root3,
13540                  root3
13541                ));
13542                break;
13543              case 1:
13544                didWarnAboutUpdateInRender || (console.error(
13545                  "Cannot update during an existing state transition (such as within `render`). Render methods should be a pure function of props and state."
13546                ), didWarnAboutUpdateInRender = true);
13547            }
13548        } else
13549          isDevToolsPresent && addFiberToLanesMap(root3, fiber, lane), warnIfUpdatesNotWrappedWithActDEV(fiber), root3 === workInProgressRoot && ((executionContext & RenderContext) === NoContext && (workInProgressRootInterleavedUpdatedLanes |= lane), workInProgressRootExitStatus === RootSuspendedWithDelay && markRootSuspended(
13550            root3,
13551            workInProgressRootRenderLanes,
13552            workInProgressDeferredLane,
13553            false
13554          )), ensureRootIsScheduled(root3);
13555      }
13556      function performWorkOnRoot(root3, lanes, forceSync) {
13557        if ((executionContext & (RenderContext | CommitContext)) !== NoContext)
13558          throw Error("Should not already be working.");
13559        if (0 !== workInProgressRootRenderLanes && null !== workInProgress) {
13560          var yieldedFiber = workInProgress, yieldEndTime = now$1();
13561          switch (yieldReason) {
13562            case SuspendedOnImmediate:
13563            case SuspendedOnData:
13564              var startTime = yieldStartTime;
13565              supportsUserTiming && ((yieldedFiber = yieldedFiber._debugTask) ? yieldedFiber.run(
13566                console.timeStamp.bind(
13567                  console,
13568                  "Suspended",
13569                  startTime,
13570                  yieldEndTime,
13571                  COMPONENTS_TRACK,
13572                  void 0,
13573                  "primary-light"
13574                )
13575              ) : console.timeStamp(
13576                "Suspended",
13577                startTime,
13578                yieldEndTime,
13579                COMPONENTS_TRACK,
13580                void 0,
13581                "primary-light"
13582              ));
13583              break;
13584            case SuspendedOnAction:
13585              startTime = yieldStartTime;
13586              supportsUserTiming && ((yieldedFiber = yieldedFiber._debugTask) ? yieldedFiber.run(
13587                console.timeStamp.bind(
13588                  console,
13589                  "Action",
13590                  startTime,
13591                  yieldEndTime,
13592                  COMPONENTS_TRACK,
13593                  void 0,
13594                  "primary-light"
13595                )
13596              ) : console.timeStamp(
13597                "Action",
13598                startTime,
13599                yieldEndTime,
13600                COMPONENTS_TRACK,
13601                void 0,
13602                "primary-light"
13603              ));
13604              break;
13605            default:
13606              supportsUserTiming && (yieldedFiber = yieldEndTime - yieldStartTime, 3 > yieldedFiber || console.timeStamp(
13607                "Blocked",
13608                yieldStartTime,
13609                yieldEndTime,
13610                COMPONENTS_TRACK,
13611                void 0,
13612                5 > yieldedFiber ? "primary-light" : 10 > yieldedFiber ? "primary" : 100 > yieldedFiber ? "primary-dark" : "error"
13613              ));
13614          }
13615        }
13616        startTime = (forceSync = !forceSync && 0 === (lanes & 127) && 0 === (lanes & root3.expiredLanes) || checkIfRootIsPrerendering(root3, lanes)) ? renderRootConcurrent(root3, lanes) : renderRootSync(root3, lanes, true);
13617        var renderWasConcurrent = forceSync;
13618        do {
13619          if (startTime === RootInProgress) {
13620            workInProgressRootIsPrerendering && !forceSync && markRootSuspended(root3, lanes, 0, false);
13621            lanes = workInProgressSuspendedReason;
13622            yieldStartTime = now3();
13623            yieldReason = lanes;
13624            break;
13625          } else {
13626            yieldedFiber = now$1();
13627            yieldEndTime = root3.current.alternate;
13628            if (renderWasConcurrent && !isRenderConsistentWithExternalStores(yieldEndTime)) {
13629              setCurrentTrackFromLanes(lanes);
13630              yieldEndTime = renderStartTime;
13631              startTime = yieldedFiber;
13632              !supportsUserTiming || startTime <= yieldEndTime || (workInProgressUpdateTask ? workInProgressUpdateTask.run(
13633                console.timeStamp.bind(
13634                  console,
13635                  "Teared Render",
13636                  yieldEndTime,
13637                  startTime,
13638                  currentTrack,
13639                  LANES_TRACK_GROUP,
13640                  "error"
13641                )
13642              ) : console.timeStamp(
13643                "Teared Render",
13644                yieldEndTime,
13645                startTime,
13646                currentTrack,
13647                LANES_TRACK_GROUP,
13648                "error"
13649              ));
13650              finalizeRender(lanes, yieldedFiber);
13651              startTime = renderRootSync(root3, lanes, false);
13652              renderWasConcurrent = false;
13653              continue;
13654            }
13655            if (startTime === RootErrored) {
13656              renderWasConcurrent = lanes;
13657              if (root3.errorRecoveryDisabledLanes & renderWasConcurrent)
13658                var errorRetryLanes = 0;
13659              else
13660                errorRetryLanes = root3.pendingLanes & -536870913, errorRetryLanes = 0 !== errorRetryLanes ? errorRetryLanes : errorRetryLanes & 536870912 ? 536870912 : 0;
13661              if (0 !== errorRetryLanes) {
13662                setCurrentTrackFromLanes(lanes);
13663                logErroredRenderPhase(
13664                  renderStartTime,
13665                  yieldedFiber,
13666                  lanes,
13667                  workInProgressUpdateTask
13668                );
13669                finalizeRender(lanes, yieldedFiber);
13670                lanes = errorRetryLanes;
13671                a: {
13672                  yieldedFiber = root3;
13673                  startTime = renderWasConcurrent;
13674                  renderWasConcurrent = workInProgressRootConcurrentErrors;
13675                  var wasRootDehydrated = yieldedFiber.current.memoizedState.isDehydrated;
13676                  wasRootDehydrated && (prepareFreshStack(yieldedFiber, errorRetryLanes).flags |= 256);
13677                  errorRetryLanes = renderRootSync(
13678                    yieldedFiber,
13679                    errorRetryLanes,
13680                    false
13681                  );
13682                  if (errorRetryLanes !== RootErrored) {
13683                    if (workInProgressRootDidAttachPingListener && !wasRootDehydrated) {
13684                      yieldedFiber.errorRecoveryDisabledLanes |= startTime;
13685                      workInProgressRootInterleavedUpdatedLanes |= startTime;
13686                      startTime = RootSuspendedWithDelay;
13687                      break a;
13688                    }
13689                    yieldedFiber = workInProgressRootRecoverableErrors;
13690                    workInProgressRootRecoverableErrors = renderWasConcurrent;
13691                    null !== yieldedFiber && (null === workInProgressRootRecoverableErrors ? workInProgressRootRecoverableErrors = yieldedFiber : workInProgressRootRecoverableErrors.push.apply(
13692                      workInProgressRootRecoverableErrors,
13693                      yieldedFiber
13694                    ));
13695                  }
13696                  startTime = errorRetryLanes;
13697                }
13698                renderWasConcurrent = false;
13699                if (startTime !== RootErrored) continue;
13700                else yieldedFiber = now$1();
13701              }
13702            }
13703            if (startTime === RootFatalErrored) {
13704              setCurrentTrackFromLanes(lanes);
13705              logErroredRenderPhase(
13706                renderStartTime,
13707                yieldedFiber,
13708                lanes,
13709                workInProgressUpdateTask
13710              );
13711              finalizeRender(lanes, yieldedFiber);
13712              prepareFreshStack(root3, 0);
13713              markRootSuspended(root3, lanes, 0, true);
13714              break;
13715            }
13716            a: {
13717              forceSync = root3;
13718              switch (startTime) {
13719                case RootInProgress:
13720                case RootFatalErrored:
13721                  throw Error("Root did not complete. This is a bug in React.");
13722                case RootSuspendedWithDelay:
13723                  if ((lanes & 4194048) !== lanes) break;
13724                case RootSuspendedAtTheShell:
13725                  setCurrentTrackFromLanes(lanes);
13726                  logSuspendedRenderPhase(
13727                    renderStartTime,
13728                    yieldedFiber,
13729                    lanes,
13730                    workInProgressUpdateTask
13731                  );
13732                  finalizeRender(lanes, yieldedFiber);
13733                  yieldEndTime = lanes;
13734                  0 !== (yieldEndTime & 127) ? blockingSuspendedTime = yieldedFiber : 0 !== (yieldEndTime & 4194048) && (transitionSuspendedTime = yieldedFiber);
13735                  markRootSuspended(
13736                    forceSync,
13737                    lanes,
13738                    workInProgressDeferredLane,
13739                    !workInProgressRootDidSkipSuspendedSiblings
13740                  );
13741                  break a;
13742                case RootErrored:
13743                  workInProgressRootRecoverableErrors = null;
13744                  break;
13745                case RootSuspended:
13746                case RootCompleted:
13747                  break;
13748                default:
13749                  throw Error("Unknown root exit status.");
13750              }
13751              if (null !== ReactSharedInternals.actQueue)
13752                commitRoot(
13753                  forceSync,
13754                  yieldEndTime,
13755                  lanes,
13756                  workInProgressRootRecoverableErrors,
13757                  workInProgressTransitions,
13758                  workInProgressRootDidIncludeRecursiveRenderUpdate,
13759                  workInProgressDeferredLane,
13760                  workInProgressRootInterleavedUpdatedLanes,
13761                  workInProgressSuspendedRetryLanes,
13762                  startTime,
13763                  null,
13764                  null,
13765                  renderStartTime,
13766                  yieldedFiber
13767                );
13768              else {
13769                if ((lanes & 62914560) === lanes && (renderWasConcurrent = globalMostRecentFallbackTime + FALLBACK_THROTTLE_MS - now$1(), 10 < renderWasConcurrent)) {
13770                  markRootSuspended(
13771                    forceSync,
13772                    lanes,
13773                    workInProgressDeferredLane,
13774                    !workInProgressRootDidSkipSuspendedSiblings
13775                  );
13776                  if (0 !== getNextLanes(forceSync, 0, true)) break a;
13777                  pendingEffectsLanes = lanes;
13778                  forceSync.timeoutHandle = scheduleTimeout(
13779                    commitRootWhenReady.bind(
13780                      null,
13781                      forceSync,
13782                      yieldEndTime,
13783                      workInProgressRootRecoverableErrors,
13784                      workInProgressTransitions,
13785                      workInProgressRootDidIncludeRecursiveRenderUpdate,
13786                      lanes,
13787                      workInProgressDeferredLane,
13788                      workInProgressRootInterleavedUpdatedLanes,
13789                      workInProgressSuspendedRetryLanes,
13790                      workInProgressRootDidSkipSuspendedSiblings,
13791                      startTime,
13792                      "Throttled",
13793                      renderStartTime,
13794                      yieldedFiber
13795                    ),
13796                    renderWasConcurrent
13797                  );
13798                  break a;
13799                }
13800                commitRootWhenReady(
13801                  forceSync,
13802                  yieldEndTime,
13803                  workInProgressRootRecoverableErrors,
13804                  workInProgressTransitions,
13805                  workInProgressRootDidIncludeRecursiveRenderUpdate,
13806                  lanes,
13807                  workInProgressDeferredLane,
13808                  workInProgressRootInterleavedUpdatedLanes,
13809                  workInProgressSuspendedRetryLanes,
13810                  workInProgressRootDidSkipSuspendedSiblings,
13811                  startTime,
13812                  null,
13813                  renderStartTime,
13814                  yieldedFiber
13815                );
13816              }
13817            }
13818          }
13819          break;
13820        } while (1);
13821        ensureRootIsScheduled(root3);
13822      }
13823      function commitRootWhenReady(root3, finishedWork, recoverableErrors, transitions, didIncludeRenderPhaseUpdate, lanes, spawnedLane, updatedLanes, suspendedRetryLanes, didSkipSuspendedSiblings, exitStatus, suspendedCommitReason, completedRenderStartTime, completedRenderEndTime) {
13824        root3.timeoutHandle = noTimeout;
13825        var subtreeFlags = finishedWork.subtreeFlags, suspendedState = null;
13826        if (subtreeFlags & 8192 || 16785408 === (subtreeFlags & 16785408)) {
13827          if (suspendedState = {
13828            stylesheets: null,
13829            count: 0,
13830            imgCount: 0,
13831            imgBytes: 0,
13832            suspenseyImages: [],
13833            waitingForImages: true,
13834            waitingForViewTransition: false,
13835            unsuspend: noop$1
13836          }, accumulateSuspenseyCommitOnFiber(finishedWork, lanes, suspendedState), subtreeFlags = (lanes & 62914560) === lanes ? globalMostRecentFallbackTime - now$1() : (lanes & 4194048) === lanes ? globalMostRecentTransitionTime - now$1() : 0, subtreeFlags = waitForCommitToBeReady(suspendedState, subtreeFlags), null !== subtreeFlags) {
13837            pendingEffectsLanes = lanes;
13838            root3.cancelPendingCommit = subtreeFlags(
13839              commitRoot.bind(
13840                null,
13841                root3,
13842                finishedWork,
13843                lanes,
13844                recoverableErrors,
13845                transitions,
13846                didIncludeRenderPhaseUpdate,
13847                spawnedLane,
13848                updatedLanes,
13849                suspendedRetryLanes,
13850                exitStatus,
13851                suspendedState,
13852                suspendedState.waitingForViewTransition ? "Waiting for the previous Animation" : 0 < suspendedState.count ? 0 < suspendedState.imgCount ? "Suspended on CSS and Images" : "Suspended on CSS" : 1 === suspendedState.imgCount ? "Suspended on an Image" : 0 < suspendedState.imgCount ? "Suspended on Images" : null,
13853                completedRenderStartTime,
13854                completedRenderEndTime
13855              )
13856            );
13857            markRootSuspended(
13858              root3,
13859              lanes,
13860              spawnedLane,
13861              !didSkipSuspendedSiblings
13862            );
13863            return;
13864          }
13865        }
13866        commitRoot(
13867          root3,
13868          finishedWork,
13869          lanes,
13870          recoverableErrors,
13871          transitions,
13872          didIncludeRenderPhaseUpdate,
13873          spawnedLane,
13874          updatedLanes,
13875          suspendedRetryLanes,
13876          exitStatus,
13877          suspendedState,
13878          suspendedCommitReason,
13879          completedRenderStartTime,
13880          completedRenderEndTime
13881        );
13882      }
13883      function isRenderConsistentWithExternalStores(finishedWork) {
13884        for (var node = finishedWork; ; ) {
13885          var tag = node.tag;
13886          if ((0 === tag || 11 === tag || 15 === tag) && node.flags & 16384 && (tag = node.updateQueue, null !== tag && (tag = tag.stores, null !== tag)))
13887            for (var i3 = 0; i3 < tag.length; i3++) {
13888              var check = tag[i3], getSnapshot = check.getSnapshot;
13889              check = check.value;
13890              try {
13891                if (!objectIs(getSnapshot(), check)) return false;
13892              } catch (error2) {
13893                return false;
13894              }
13895            }
13896          tag = node.child;
13897          if (node.subtreeFlags & 16384 && null !== tag)
13898            tag.return = node, node = tag;
13899          else {
13900            if (node === finishedWork) break;
13901            for (; null === node.sibling; ) {
13902              if (null === node.return || node.return === finishedWork) return true;
13903              node = node.return;
13904            }
13905            node.sibling.return = node.return;
13906            node = node.sibling;
13907          }
13908        }
13909        return true;
13910      }
13911      function markRootSuspended(root3, suspendedLanes, spawnedLane, didAttemptEntireTree) {
13912        suspendedLanes &= ~workInProgressRootPingedLanes;
13913        suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;
13914        root3.suspendedLanes |= suspendedLanes;
13915        root3.pingedLanes &= ~suspendedLanes;
13916        didAttemptEntireTree && (root3.warmLanes |= suspendedLanes);
13917        didAttemptEntireTree = root3.expirationTimes;
13918        for (var lanes = suspendedLanes; 0 < lanes; ) {
13919          var index = 31 - clz32(lanes), lane = 1 << index;
13920          didAttemptEntireTree[index] = -1;
13921          lanes &= ~lane;
13922        }
13923        0 !== spawnedLane && markSpawnedDeferredLane(root3, spawnedLane, suspendedLanes);
13924      }
13925      function flushSyncWork$1() {
13926        return (executionContext & (RenderContext | CommitContext)) === NoContext ? (flushSyncWorkAcrossRoots_impl(0, false), false) : true;
13927      }
13928      function resetWorkInProgressStack() {
13929        if (null !== workInProgress) {
13930          if (workInProgressSuspendedReason === NotSuspended)
13931            var interruptedWork = workInProgress.return;
13932          else
13933            interruptedWork = workInProgress, resetContextDependencies(), resetHooksOnUnwind(interruptedWork), thenableState$1 = null, thenableIndexCounter$1 = 0, interruptedWork = workInProgress;
13934          for (; null !== interruptedWork; )
13935            unwindInterruptedWork(interruptedWork.alternate, interruptedWork), interruptedWork = interruptedWork.return;
13936          workInProgress = null;
13937        }
13938      }
13939      function finalizeRender(lanes, finalizationTime) {
13940        0 !== (lanes & 127) && (blockingClampTime = finalizationTime);
13941        0 !== (lanes & 4194048) && (transitionClampTime = finalizationTime);
13942        0 !== (lanes & 62914560) && (retryClampTime = finalizationTime);
13943        0 !== (lanes & 2080374784) && (idleClampTime = finalizationTime);
13944      }
13945      function prepareFreshStack(root3, lanes) {
13946        supportsUserTiming && (console.timeStamp(
13947          "Blocking Track",
13948          3e-3,
13949          3e-3,
13950          "Blocking",
13951          LANES_TRACK_GROUP,
13952          "primary-light"
13953        ), console.timeStamp(
13954          "Transition Track",
13955          3e-3,
13956          3e-3,
13957          "Transition",
13958          LANES_TRACK_GROUP,
13959          "primary-light"
13960        ), console.timeStamp(
13961          "Suspense Track",
13962          3e-3,
13963          3e-3,
13964          "Suspense",
13965          LANES_TRACK_GROUP,
13966          "primary-light"
13967        ), console.timeStamp(
13968          "Idle Track",
13969          3e-3,
13970          3e-3,
13971          "Idle",
13972          LANES_TRACK_GROUP,
13973          "primary-light"
13974        ));
13975        var previousRenderStartTime = renderStartTime;
13976        renderStartTime = now3();
13977        if (0 !== workInProgressRootRenderLanes && 0 < previousRenderStartTime) {
13978          setCurrentTrackFromLanes(workInProgressRootRenderLanes);
13979          if (workInProgressRootExitStatus === RootSuspended || workInProgressRootExitStatus === RootSuspendedWithDelay)
13980            logSuspendedRenderPhase(
13981              previousRenderStartTime,
13982              renderStartTime,
13983              lanes,
13984              workInProgressUpdateTask
13985            );
13986          else {
13987            var endTime = renderStartTime, debugTask = workInProgressUpdateTask;
13988            if (supportsUserTiming && !(endTime <= previousRenderStartTime)) {
13989              var color = (lanes & 738197653) === lanes ? "tertiary-dark" : "primary-dark", label = (lanes & 536870912) === lanes ? "Prewarm" : (lanes & 201326741) === lanes ? "Interrupted Hydration" : "Interrupted Render";
13990              debugTask ? debugTask.run(
13991                console.timeStamp.bind(
13992                  console,
13993                  label,
13994                  previousRenderStartTime,
13995                  endTime,
13996                  currentTrack,
13997                  LANES_TRACK_GROUP,
13998                  color
13999                )
14000              ) : console.timeStamp(
14001                label,
14002                previousRenderStartTime,
14003                endTime,
14004                currentTrack,
14005                LANES_TRACK_GROUP,
14006                color
14007              );
14008            }
14009          }
14010          finalizeRender(workInProgressRootRenderLanes, renderStartTime);
14011        }
14012        previousRenderStartTime = workInProgressUpdateTask;
14013        workInProgressUpdateTask = null;
14014        if (0 !== (lanes & 127)) {
14015          workInProgressUpdateTask = blockingUpdateTask;
14016          debugTask = 0 <= blockingUpdateTime && blockingUpdateTime < blockingClampTime ? blockingClampTime : blockingUpdateTime;
14017          endTime = 0 <= blockingEventTime && blockingEventTime < blockingClampTime ? blockingClampTime : blockingEventTime;
14018          color = 0 <= endTime ? endTime : 0 <= debugTask ? debugTask : renderStartTime;
14019          0 <= blockingSuspendedTime ? (setCurrentTrackFromLanes(2), logSuspendedWithDelayPhase(
14020            blockingSuspendedTime,
14021            color,
14022            lanes,
14023            previousRenderStartTime
14024          )) : 0 !== (animatingLanes & 127) && (setCurrentTrackFromLanes(2), logAnimatingPhase(blockingClampTime, color, animatingTask));
14025          previousRenderStartTime = debugTask;
14026          var eventTime = endTime, eventType = blockingEventType, eventIsRepeat = 0 < blockingEventRepeatTime, isSpawnedUpdate = blockingUpdateType === SPAWNED_UPDATE, isPingedUpdate = blockingUpdateType === PINGED_UPDATE;
14027          debugTask = renderStartTime;
14028          endTime = blockingUpdateTask;
14029          color = blockingUpdateMethodName;
14030          label = blockingUpdateComponentName;
14031          if (supportsUserTiming) {
14032            currentTrack = "Blocking";
14033            0 < previousRenderStartTime ? previousRenderStartTime > debugTask && (previousRenderStartTime = debugTask) : previousRenderStartTime = debugTask;
14034            0 < eventTime ? eventTime > previousRenderStartTime && (eventTime = previousRenderStartTime) : eventTime = previousRenderStartTime;
14035            if (null !== eventType && previousRenderStartTime > eventTime) {
14036              var color$jscomp$0 = eventIsRepeat ? "secondary-light" : "warning";
14037              endTime ? endTime.run(
14038                console.timeStamp.bind(
14039                  console,
14040                  eventIsRepeat ? "Consecutive" : "Event: " + eventType,
14041                  eventTime,
14042                  previousRenderStartTime,
14043                  currentTrack,
14044                  LANES_TRACK_GROUP,
14045                  color$jscomp$0
14046                )
14047              ) : console.timeStamp(
14048                eventIsRepeat ? "Consecutive" : "Event: " + eventType,
14049                eventTime,
14050                previousRenderStartTime,
14051                currentTrack,
14052                LANES_TRACK_GROUP,
14053                color$jscomp$0
14054              );
14055            }
14056            debugTask > previousRenderStartTime && (eventTime = isSpawnedUpdate ? "error" : (lanes & 738197653) === lanes ? "tertiary-light" : "primary-light", isSpawnedUpdate = isPingedUpdate ? "Promise Resolved" : isSpawnedUpdate ? "Cascading Update" : 5 < debugTask - previousRenderStartTime ? "Update Blocked" : "Update", isPingedUpdate = [], null != label && isPingedUpdate.push(["Component name", label]), null != color && isPingedUpdate.push(["Method name", color]), previousRenderStartTime = {
14057              start: previousRenderStartTime,
14058              end: debugTask,
14059              detail: {
14060                devtools: {
14061                  properties: isPingedUpdate,
14062                  track: currentTrack,
14063                  trackGroup: LANES_TRACK_GROUP,
14064                  color: eventTime
14065                }
14066              }
14067            }, endTime ? endTime.run(
14068              performance.measure.bind(
14069                performance,
14070                isSpawnedUpdate,
14071                previousRenderStartTime
14072              )
14073            ) : performance.measure(isSpawnedUpdate, previousRenderStartTime));
14074          }
14075          blockingUpdateTime = -1.1;
14076          blockingUpdateType = 0;
14077          blockingUpdateComponentName = blockingUpdateMethodName = null;
14078          blockingSuspendedTime = -1.1;
14079          blockingEventRepeatTime = blockingEventTime;
14080          blockingEventTime = -1.1;
14081          blockingClampTime = now3();
14082        }
14083        0 !== (lanes & 4194048) && (workInProgressUpdateTask = transitionUpdateTask, debugTask = 0 <= transitionStartTime && transitionStartTime < transitionClampTime ? transitionClampTime : transitionStartTime, previousRenderStartTime = 0 <= transitionUpdateTime && transitionUpdateTime < transitionClampTime ? transitionClampTime : transitionUpdateTime, endTime = 0 <= transitionEventTime && transitionEventTime < transitionClampTime ? transitionClampTime : transitionEventTime, color = 0 <= endTime ? endTime : 0 <= previousRenderStartTime ? previousRenderStartTime : renderStartTime, 0 <= transitionSuspendedTime ? (setCurrentTrackFromLanes(256), logSuspendedWithDelayPhase(
14084          transitionSuspendedTime,
14085          color,
14086          lanes,
14087          workInProgressUpdateTask
14088        )) : 0 !== (animatingLanes & 4194048) && (setCurrentTrackFromLanes(256), logAnimatingPhase(transitionClampTime, color, animatingTask)), isPingedUpdate = endTime, eventTime = transitionEventType, eventType = 0 < transitionEventRepeatTime, eventIsRepeat = transitionUpdateType === PINGED_UPDATE, color = renderStartTime, endTime = transitionUpdateTask, label = transitionUpdateMethodName, isSpawnedUpdate = transitionUpdateComponentName, supportsUserTiming && (currentTrack = "Transition", 0 < previousRenderStartTime ? previousRenderStartTime > color && (previousRenderStartTime = color) : previousRenderStartTime = color, 0 < debugTask ? debugTask > previousRenderStartTime && (debugTask = previousRenderStartTime) : debugTask = previousRenderStartTime, 0 < isPingedUpdate ? isPingedUpdate > debugTask && (isPingedUpdate = debugTask) : isPingedUpdate = debugTask, debugTask > isPingedUpdate && null !== eventTime && (color$jscomp$0 = eventType ? "secondary-light" : "warning", endTime ? endTime.run(
14089          console.timeStamp.bind(
14090            console,
14091            eventType ? "Consecutive" : "Event: " + eventTime,
14092            isPingedUpdate,
14093            debugTask,
14094            currentTrack,
14095            LANES_TRACK_GROUP,
14096            color$jscomp$0
14097          )
14098        ) : console.timeStamp(
14099          eventType ? "Consecutive" : "Event: " + eventTime,
14100          isPingedUpdate,
14101          debugTask,
14102          currentTrack,
14103          LANES_TRACK_GROUP,
14104          color$jscomp$0
14105        )), previousRenderStartTime > debugTask && (endTime ? endTime.run(
14106          console.timeStamp.bind(
14107            console,
14108            "Action",
14109            debugTask,
14110            previousRenderStartTime,
14111            currentTrack,
14112            LANES_TRACK_GROUP,
14113            "primary-dark"
14114          )
14115        ) : console.timeStamp(
14116          "Action",
14117          debugTask,
14118          previousRenderStartTime,
14119          currentTrack,
14120          LANES_TRACK_GROUP,
14121          "primary-dark"
14122        )), color > previousRenderStartTime && (debugTask = eventIsRepeat ? "Promise Resolved" : 5 < color - previousRenderStartTime ? "Update Blocked" : "Update", isPingedUpdate = [], null != isSpawnedUpdate && isPingedUpdate.push(["Component name", isSpawnedUpdate]), null != label && isPingedUpdate.push(["Method name", label]), previousRenderStartTime = {
14123          start: previousRenderStartTime,
14124          end: color,
14125          detail: {
14126            devtools: {
14127              properties: isPingedUpdate,
14128              track: currentTrack,
14129              trackGroup: LANES_TRACK_GROUP,
14130              color: "primary-light"
14131            }
14132          }
14133        }, endTime ? endTime.run(
14134          performance.measure.bind(
14135            performance,
14136            debugTask,
14137            previousRenderStartTime
14138          )
14139        ) : performance.measure(debugTask, previousRenderStartTime))), transitionUpdateTime = transitionStartTime = -1.1, transitionUpdateType = 0, transitionSuspendedTime = -1.1, transitionEventRepeatTime = transitionEventTime, transitionEventTime = -1.1, transitionClampTime = now3());
14140        0 !== (lanes & 62914560) && 0 !== (animatingLanes & 62914560) && (setCurrentTrackFromLanes(4194304), logAnimatingPhase(retryClampTime, renderStartTime, animatingTask));
14141        0 !== (lanes & 2080374784) && 0 !== (animatingLanes & 2080374784) && (setCurrentTrackFromLanes(268435456), logAnimatingPhase(idleClampTime, renderStartTime, animatingTask));
14142        previousRenderStartTime = root3.timeoutHandle;
14143        previousRenderStartTime !== noTimeout && (root3.timeoutHandle = noTimeout, cancelTimeout(previousRenderStartTime));
14144        previousRenderStartTime = root3.cancelPendingCommit;
14145        null !== previousRenderStartTime && (root3.cancelPendingCommit = null, previousRenderStartTime());
14146        pendingEffectsLanes = 0;
14147        resetWorkInProgressStack();
14148        workInProgressRoot = root3;
14149        workInProgress = previousRenderStartTime = createWorkInProgress(
14150          root3.current,
14151          null
14152        );
14153        workInProgressRootRenderLanes = lanes;
14154        workInProgressSuspendedReason = NotSuspended;
14155        workInProgressThrownValue = null;
14156        workInProgressRootDidSkipSuspendedSiblings = false;
14157        workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root3, lanes);
14158        workInProgressRootDidAttachPingListener = false;
14159        workInProgressRootExitStatus = RootInProgress;
14160        workInProgressSuspendedRetryLanes = workInProgressDeferredLane = workInProgressRootPingedLanes = workInProgressRootInterleavedUpdatedLanes = workInProgressRootSkippedLanes = 0;
14161        workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors = null;
14162        workInProgressRootDidIncludeRecursiveRenderUpdate = false;
14163        0 !== (lanes & 8) && (lanes |= lanes & 32);
14164        endTime = root3.entangledLanes;
14165        if (0 !== endTime)
14166          for (root3 = root3.entanglements, endTime &= lanes; 0 < endTime; )
14167            debugTask = 31 - clz32(endTime), color = 1 << debugTask, lanes |= root3[debugTask], endTime &= ~color;
14168        entangledRenderLanes = lanes;
14169        finishQueueingConcurrentUpdates();
14170        root3 = getCurrentTime();
14171        1e3 < root3 - lastResetTime && (ReactSharedInternals.recentlyCreatedOwnerStacks = 0, lastResetTime = root3);
14172        ReactStrictModeWarnings.discardPendingWarnings();
14173        return previousRenderStartTime;
14174      }
14175      function handleThrow(root3, thrownValue) {
14176        currentlyRenderingFiber = null;
14177        ReactSharedInternals.H = ContextOnlyDispatcher;
14178        ReactSharedInternals.getCurrentStack = null;
14179        isRendering = false;
14180        current = null;
14181        thrownValue === SuspenseException || thrownValue === SuspenseActionException ? (thrownValue = getSuspendedThenable(), workInProgressSuspendedReason = SuspendedOnImmediate) : thrownValue === SuspenseyCommitException ? (thrownValue = getSuspendedThenable(), workInProgressSuspendedReason = SuspendedOnInstance) : workInProgressSuspendedReason = thrownValue === SelectiveHydrationException ? SuspendedOnHydration : null !== thrownValue && "object" === typeof thrownValue && "function" === typeof thrownValue.then ? SuspendedOnDeprecatedThrowPromise : SuspendedOnError;
14182        workInProgressThrownValue = thrownValue;
14183        var erroredWork = workInProgress;
14184        null === erroredWork ? (workInProgressRootExitStatus = RootFatalErrored, logUncaughtError(
14185          root3,
14186          createCapturedValueAtFiber(thrownValue, root3.current)
14187        )) : erroredWork.mode & ProfileMode && stopProfilerTimerIfRunningAndRecordDuration(erroredWork);
14188      }
14189      function shouldRemainOnPreviousScreen() {
14190        var handler = suspenseHandlerStackCursor.current;
14191        return null === handler ? true : (workInProgressRootRenderLanes & 4194048) === workInProgressRootRenderLanes ? null === shellBoundary ? true : false : (workInProgressRootRenderLanes & 62914560) === workInProgressRootRenderLanes || 0 !== (workInProgressRootRenderLanes & 536870912) ? handler === shellBoundary : false;
14192      }
14193      function pushDispatcher() {
14194        var prevDispatcher = ReactSharedInternals.H;
14195        ReactSharedInternals.H = ContextOnlyDispatcher;
14196        return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;
14197      }
14198      function pushAsyncDispatcher() {
14199        var prevAsyncDispatcher = ReactSharedInternals.A;
14200        ReactSharedInternals.A = DefaultAsyncDispatcher;
14201        return prevAsyncDispatcher;
14202      }
14203      function markRenderDerivedCause(fiber) {
14204        null === workInProgressUpdateTask && (workInProgressUpdateTask = null == fiber._debugTask ? null : fiber._debugTask);
14205      }
14206      function renderDidSuspendDelayIfPossible() {
14207        workInProgressRootExitStatus = RootSuspendedWithDelay;
14208        workInProgressRootDidSkipSuspendedSiblings || (workInProgressRootRenderLanes & 4194048) !== workInProgressRootRenderLanes && null !== suspenseHandlerStackCursor.current || (workInProgressRootIsPrerendering = true);
14209        0 === (workInProgressRootSkippedLanes & 134217727) && 0 === (workInProgressRootInterleavedUpdatedLanes & 134217727) || null === workInProgressRoot || markRootSuspended(
14210          workInProgressRoot,
14211          workInProgressRootRenderLanes,
14212          workInProgressDeferredLane,
14213          false
14214        );
14215      }
14216      function renderRootSync(root3, lanes, shouldYieldForPrerendering) {
14217        var prevExecutionContext = executionContext;
14218        executionContext |= RenderContext;
14219        var prevDispatcher = pushDispatcher(), prevAsyncDispatcher = pushAsyncDispatcher();
14220        if (workInProgressRoot !== root3 || workInProgressRootRenderLanes !== lanes) {
14221          if (isDevToolsPresent) {
14222            var memoizedUpdaters = root3.memoizedUpdaters;
14223            0 < memoizedUpdaters.size && (restorePendingUpdaters(root3, workInProgressRootRenderLanes), memoizedUpdaters.clear());
14224            movePendingFibersToMemoized(root3, lanes);
14225          }
14226          workInProgressTransitions = null;
14227          prepareFreshStack(root3, lanes);
14228        }
14229        lanes = false;
14230        memoizedUpdaters = workInProgressRootExitStatus;
14231        a: do
14232          try {
14233            if (workInProgressSuspendedReason !== NotSuspended && null !== workInProgress) {
14234              var unitOfWork = workInProgress, thrownValue = workInProgressThrownValue;
14235              switch (workInProgressSuspendedReason) {
14236                case SuspendedOnHydration:
14237                  resetWorkInProgressStack();
14238                  memoizedUpdaters = RootSuspendedAtTheShell;
14239                  break a;
14240                case SuspendedOnImmediate:
14241                case SuspendedOnData:
14242                case SuspendedOnAction:
14243                case SuspendedOnDeprecatedThrowPromise:
14244                  null === suspenseHandlerStackCursor.current && (lanes = true);
14245                  var reason = workInProgressSuspendedReason;
14246                  workInProgressSuspendedReason = NotSuspended;
14247                  workInProgressThrownValue = null;
14248                  throwAndUnwindWorkLoop(root3, unitOfWork, thrownValue, reason);
14249                  if (shouldYieldForPrerendering && workInProgressRootIsPrerendering) {
14250                    memoizedUpdaters = RootInProgress;
14251                    break a;
14252                  }
14253                  break;
14254                default:
14255                  reason = workInProgressSuspendedReason, workInProgressSuspendedReason = NotSuspended, workInProgressThrownValue = null, throwAndUnwindWorkLoop(root3, unitOfWork, thrownValue, reason);
14256              }
14257            }
14258            workLoopSync();
14259            memoizedUpdaters = workInProgressRootExitStatus;
14260            break;
14261          } catch (thrownValue$8) {
14262            handleThrow(root3, thrownValue$8);
14263          }
14264        while (1);
14265        lanes && root3.shellSuspendCounter++;
14266        resetContextDependencies();
14267        executionContext = prevExecutionContext;
14268        ReactSharedInternals.H = prevDispatcher;
14269        ReactSharedInternals.A = prevAsyncDispatcher;
14270        null === workInProgress && (workInProgressRoot = null, workInProgressRootRenderLanes = 0, finishQueueingConcurrentUpdates());
14271        return memoizedUpdaters;
14272      }
14273      function workLoopSync() {
14274        for (; null !== workInProgress; ) performUnitOfWork(workInProgress);
14275      }
14276      function renderRootConcurrent(root3, lanes) {
14277        var prevExecutionContext = executionContext;
14278        executionContext |= RenderContext;
14279        var prevDispatcher = pushDispatcher(), prevAsyncDispatcher = pushAsyncDispatcher();
14280        if (workInProgressRoot !== root3 || workInProgressRootRenderLanes !== lanes) {
14281          if (isDevToolsPresent) {
14282            var memoizedUpdaters = root3.memoizedUpdaters;
14283            0 < memoizedUpdaters.size && (restorePendingUpdaters(root3, workInProgressRootRenderLanes), memoizedUpdaters.clear());
14284            movePendingFibersToMemoized(root3, lanes);
14285          }
14286          workInProgressTransitions = null;
14287          workInProgressRootRenderTargetTime = now$1() + RENDER_TIMEOUT_MS;
14288          prepareFreshStack(root3, lanes);
14289        } else
14290          workInProgressRootIsPrerendering = checkIfRootIsPrerendering(
14291            root3,
14292            lanes
14293          );
14294        a: do
14295          try {
14296            if (workInProgressSuspendedReason !== NotSuspended && null !== workInProgress)
14297              b: switch (lanes = workInProgress, memoizedUpdaters = workInProgressThrownValue, workInProgressSuspendedReason) {
14298                case SuspendedOnError:
14299                  workInProgressSuspendedReason = NotSuspended;
14300                  workInProgressThrownValue = null;
14301                  throwAndUnwindWorkLoop(
14302                    root3,
14303                    lanes,
14304                    memoizedUpdaters,
14305                    SuspendedOnError
14306                  );
14307                  break;
14308                case SuspendedOnData:
14309                case SuspendedOnAction:
14310                  if (isThenableResolved(memoizedUpdaters)) {
14311                    workInProgressSuspendedReason = NotSuspended;
14312                    workInProgressThrownValue = null;
14313                    replaySuspendedUnitOfWork(lanes);
14314                    break;
14315                  }
14316                  lanes = function() {
14317                    workInProgressSuspendedReason !== SuspendedOnData && workInProgressSuspendedReason !== SuspendedOnAction || workInProgressRoot !== root3 || (workInProgressSuspendedReason = SuspendedAndReadyToContinue);
14318                    ensureRootIsScheduled(root3);
14319                  };
14320                  memoizedUpdaters.then(lanes, lanes);
14321                  break a;
14322                case SuspendedOnImmediate:
14323                  workInProgressSuspendedReason = SuspendedAndReadyToContinue;
14324                  break a;
14325                case SuspendedOnInstance:
14326                  workInProgressSuspendedReason = SuspendedOnInstanceAndReadyToContinue;
14327                  break a;
14328                case SuspendedAndReadyToContinue:
14329                  isThenableResolved(memoizedUpdaters) ? (workInProgressSuspendedReason = NotSuspended, workInProgressThrownValue = null, replaySuspendedUnitOfWork(lanes)) : (workInProgressSuspendedReason = NotSuspended, workInProgressThrownValue = null, throwAndUnwindWorkLoop(
14330                    root3,
14331                    lanes,
14332                    memoizedUpdaters,
14333                    SuspendedAndReadyToContinue
14334                  ));
14335                  break;
14336                case SuspendedOnInstanceAndReadyToContinue:
14337                  var resource = null;
14338                  switch (workInProgress.tag) {
14339                    case 26:
14340                      resource = workInProgress.memoizedState;
14341                    case 5:
14342                    case 27:
14343                      var hostFiber = workInProgress;
14344                      if (resource ? preloadResource(resource) : hostFiber.stateNode.complete) {
14345                        workInProgressSuspendedReason = NotSuspended;
14346                        workInProgressThrownValue = null;
14347                        var sibling = hostFiber.sibling;
14348                        if (null !== sibling) workInProgress = sibling;
14349                        else {
14350                          var returnFiber = hostFiber.return;
14351                          null !== returnFiber ? (workInProgress = returnFiber, completeUnitOfWork(returnFiber)) : workInProgress = null;
14352                        }
14353                        break b;
14354                      }
14355                      break;
14356                    default:
14357                      console.error(
14358                        "Unexpected type of fiber triggered a suspensey commit. This is a bug in React."
14359                      );
14360                  }
14361                  workInProgressSuspendedReason = NotSuspended;
14362                  workInProgressThrownValue = null;
14363                  throwAndUnwindWorkLoop(
14364                    root3,
14365                    lanes,
14366                    memoizedUpdaters,
14367                    SuspendedOnInstanceAndReadyToContinue
14368                  );
14369                  break;
14370                case SuspendedOnDeprecatedThrowPromise:
14371                  workInProgressSuspendedReason = NotSuspended;
14372                  workInProgressThrownValue = null;
14373                  throwAndUnwindWorkLoop(
14374                    root3,
14375                    lanes,
14376                    memoizedUpdaters,
14377                    SuspendedOnDeprecatedThrowPromise
14378                  );
14379                  break;
14380                case SuspendedOnHydration:
14381                  resetWorkInProgressStack();
14382                  workInProgressRootExitStatus = RootSuspendedAtTheShell;
14383                  break a;
14384                default:
14385                  throw Error(
14386                    "Unexpected SuspendedReason. This is a bug in React."
14387                  );
14388              }
14389            null !== ReactSharedInternals.actQueue ? workLoopSync() : workLoopConcurrentByScheduler();
14390            break;
14391          } catch (thrownValue$9) {
14392            handleThrow(root3, thrownValue$9);
14393          }
14394        while (1);
14395        resetContextDependencies();
14396        ReactSharedInternals.H = prevDispatcher;
14397        ReactSharedInternals.A = prevAsyncDispatcher;
14398        executionContext = prevExecutionContext;
14399        if (null !== workInProgress) return RootInProgress;
14400        workInProgressRoot = null;
14401        workInProgressRootRenderLanes = 0;
14402        finishQueueingConcurrentUpdates();
14403        return workInProgressRootExitStatus;
14404      }
14405      function workLoopConcurrentByScheduler() {
14406        for (; null !== workInProgress && !shouldYield(); )
14407          performUnitOfWork(workInProgress);
14408      }
14409      function performUnitOfWork(unitOfWork) {
14410        var current2 = unitOfWork.alternate;
14411        (unitOfWork.mode & ProfileMode) !== NoMode ? (startProfilerTimer(unitOfWork), current2 = runWithFiberInDEV(
14412          unitOfWork,
14413          beginWork,
14414          current2,
14415          unitOfWork,
14416          entangledRenderLanes
14417        ), stopProfilerTimerIfRunningAndRecordDuration(unitOfWork)) : current2 = runWithFiberInDEV(
14418          unitOfWork,
14419          beginWork,
14420          current2,
14421          unitOfWork,
14422          entangledRenderLanes
14423        );
14424        unitOfWork.memoizedProps = unitOfWork.pendingProps;
14425        null === current2 ? completeUnitOfWork(unitOfWork) : workInProgress = current2;
14426      }
14427      function replaySuspendedUnitOfWork(unitOfWork) {
14428        var next = runWithFiberInDEV(unitOfWork, replayBeginWork, unitOfWork);
14429        unitOfWork.memoizedProps = unitOfWork.pendingProps;
14430        null === next ? completeUnitOfWork(unitOfWork) : workInProgress = next;
14431      }
14432      function replayBeginWork(unitOfWork) {
14433        var current2 = unitOfWork.alternate, isProfilingMode = (unitOfWork.mode & ProfileMode) !== NoMode;
14434        isProfilingMode && startProfilerTimer(unitOfWork);
14435        switch (unitOfWork.tag) {
14436          case 15:
14437          case 0:
14438            current2 = replayFunctionComponent(
14439              current2,
14440              unitOfWork,
14441              unitOfWork.pendingProps,
14442              unitOfWork.type,
14443              void 0,
14444              workInProgressRootRenderLanes
14445            );
14446            break;
14447          case 11:
14448            current2 = replayFunctionComponent(
14449              current2,
14450              unitOfWork,
14451              unitOfWork.pendingProps,
14452              unitOfWork.type.render,
14453              unitOfWork.ref,
14454              workInProgressRootRenderLanes
14455            );
14456            break;
14457          case 5:
14458            resetHooksOnUnwind(unitOfWork);
14459          default:
14460            unwindInterruptedWork(current2, unitOfWork), unitOfWork = workInProgress = resetWorkInProgress(unitOfWork, entangledRenderLanes), current2 = beginWork(current2, unitOfWork, entangledRenderLanes);
14461        }
14462        isProfilingMode && stopProfilerTimerIfRunningAndRecordDuration(unitOfWork);
14463        return current2;
14464      }
14465      function throwAndUnwindWorkLoop(root3, unitOfWork, thrownValue, suspendedReason) {
14466        resetContextDependencies();
14467        resetHooksOnUnwind(unitOfWork);
14468        thenableState$1 = null;
14469        thenableIndexCounter$1 = 0;
14470        var returnFiber = unitOfWork.return;
14471        try {
14472          if (throwException(
14473            root3,
14474            returnFiber,
14475            unitOfWork,
14476            thrownValue,
14477            workInProgressRootRenderLanes
14478          )) {
14479            workInProgressRootExitStatus = RootFatalErrored;
14480            logUncaughtError(
14481              root3,
14482              createCapturedValueAtFiber(thrownValue, root3.current)
14483            );
14484            workInProgress = null;
14485            return;
14486          }
14487        } catch (error2) {
14488          if (null !== returnFiber) throw workInProgress = returnFiber, error2;
14489          workInProgressRootExitStatus = RootFatalErrored;
14490          logUncaughtError(
14491            root3,
14492            createCapturedValueAtFiber(thrownValue, root3.current)
14493          );
14494          workInProgress = null;
14495          return;
14496        }
14497        if (unitOfWork.flags & 32768) {
14498          if (isHydrating || suspendedReason === SuspendedOnError) root3 = true;
14499          else if (workInProgressRootIsPrerendering || 0 !== (workInProgressRootRenderLanes & 536870912))
14500            root3 = false;
14501          else if (workInProgressRootDidSkipSuspendedSiblings = root3 = true, suspendedReason === SuspendedOnData || suspendedReason === SuspendedOnAction || suspendedReason === SuspendedOnImmediate || suspendedReason === SuspendedOnDeprecatedThrowPromise)
14502            suspendedReason = suspenseHandlerStackCursor.current, null !== suspendedReason && 13 === suspendedReason.tag && (suspendedReason.flags |= 16384);
14503          unwindUnitOfWork(unitOfWork, root3);
14504        } else completeUnitOfWork(unitOfWork);
14505      }
14506      function completeUnitOfWork(unitOfWork) {
14507        var completedWork = unitOfWork;
14508        do {
14509          if (0 !== (completedWork.flags & 32768)) {
14510            unwindUnitOfWork(
14511              completedWork,
14512              workInProgressRootDidSkipSuspendedSiblings
14513            );
14514            return;
14515          }
14516          var current2 = completedWork.alternate;
14517          unitOfWork = completedWork.return;
14518          startProfilerTimer(completedWork);
14519          current2 = runWithFiberInDEV(
14520            completedWork,
14521            completeWork,
14522            current2,
14523            completedWork,
14524            entangledRenderLanes
14525          );
14526          (completedWork.mode & ProfileMode) !== NoMode && stopProfilerTimerIfRunningAndRecordIncompleteDuration(completedWork);
14527          if (null !== current2) {
14528            workInProgress = current2;
14529            return;
14530          }
14531          completedWork = completedWork.sibling;
14532          if (null !== completedWork) {
14533            workInProgress = completedWork;
14534            return;
14535          }
14536          workInProgress = completedWork = unitOfWork;
14537        } while (null !== completedWork);
14538        workInProgressRootExitStatus === RootInProgress && (workInProgressRootExitStatus = RootCompleted);
14539      }
14540      function unwindUnitOfWork(unitOfWork, skipSiblings) {
14541        do {
14542          var next = unwindWork(unitOfWork.alternate, unitOfWork);
14543          if (null !== next) {
14544            next.flags &= 32767;
14545            workInProgress = next;
14546            return;
14547          }
14548          if ((unitOfWork.mode & ProfileMode) !== NoMode) {
14549            stopProfilerTimerIfRunningAndRecordIncompleteDuration(unitOfWork);
14550            next = unitOfWork.actualDuration;
14551            for (var child = unitOfWork.child; null !== child; )
14552              next += child.actualDuration, child = child.sibling;
14553            unitOfWork.actualDuration = next;
14554          }
14555          next = unitOfWork.return;
14556          null !== next && (next.flags |= 32768, next.subtreeFlags = 0, next.deletions = null);
14557          if (!skipSiblings && (unitOfWork = unitOfWork.sibling, null !== unitOfWork)) {
14558            workInProgress = unitOfWork;
14559            return;
14560          }
14561          workInProgress = unitOfWork = next;
14562        } while (null !== unitOfWork);
14563        workInProgressRootExitStatus = RootSuspendedAtTheShell;
14564        workInProgress = null;
14565      }
14566      function commitRoot(root3, finishedWork, lanes, recoverableErrors, transitions, didIncludeRenderPhaseUpdate, spawnedLane, updatedLanes, suspendedRetryLanes, exitStatus, suspendedState, suspendedCommitReason, completedRenderStartTime, completedRenderEndTime) {
14567        root3.cancelPendingCommit = null;
14568        do
14569          flushPendingEffects();
14570        while (pendingEffectsStatus !== NO_PENDING_EFFECTS);
14571        ReactStrictModeWarnings.flushLegacyContextWarning();
14572        ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings();
14573        if ((executionContext & (RenderContext | CommitContext)) !== NoContext)
14574          throw Error("Should not already be working.");
14575        setCurrentTrackFromLanes(lanes);
14576        exitStatus === RootErrored ? logErroredRenderPhase(
14577          completedRenderStartTime,
14578          completedRenderEndTime,
14579          lanes,
14580          workInProgressUpdateTask
14581        ) : null !== recoverableErrors ? logRecoveredRenderPhase(
14582          completedRenderStartTime,
14583          completedRenderEndTime,
14584          lanes,
14585          recoverableErrors,
14586          null !== finishedWork && null !== finishedWork.alternate && finishedWork.alternate.memoizedState.isDehydrated && 0 !== (finishedWork.flags & 256),
14587          workInProgressUpdateTask
14588        ) : logRenderPhase(
14589          completedRenderStartTime,
14590          completedRenderEndTime,
14591          lanes,
14592          workInProgressUpdateTask
14593        );
14594        if (null !== finishedWork) {
14595          0 === lanes && console.error(
14596            "finishedLanes should not be empty during a commit. This is a bug in React."
14597          );
14598          if (finishedWork === root3.current)
14599            throw Error(
14600              "Cannot commit the same tree as before. This error is likely caused by a bug in React. Please file an issue."
14601            );
14602          didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;
14603          didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;
14604          markRootFinished(
14605            root3,
14606            lanes,
14607            didIncludeRenderPhaseUpdate,
14608            spawnedLane,
14609            updatedLanes,
14610            suspendedRetryLanes
14611          );
14612          root3 === workInProgressRoot && (workInProgress = workInProgressRoot = null, workInProgressRootRenderLanes = 0);
14613          pendingFinishedWork = finishedWork;
14614          pendingEffectsRoot = root3;
14615          pendingEffectsLanes = lanes;
14616          pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;
14617          pendingPassiveTransitions = transitions;
14618          pendingRecoverableErrors = recoverableErrors;
14619          pendingEffectsRenderEndTime = completedRenderEndTime;
14620          pendingSuspendedCommitReason = suspendedCommitReason;
14621          pendingDelayedCommitReason = IMMEDIATE_COMMIT;
14622          pendingSuspendedViewTransitionReason = null;
14623          0 !== finishedWork.actualDuration || 0 !== (finishedWork.subtreeFlags & 10256) || 0 !== (finishedWork.flags & 10256) ? (root3.callbackNode = null, root3.callbackPriority = 0, scheduleCallback$1(NormalPriority$1, function() {
14624            schedulerEvent = window.event;
14625            pendingDelayedCommitReason === IMMEDIATE_COMMIT && (pendingDelayedCommitReason = DELAYED_PASSIVE_COMMIT);
14626            flushPassiveEffects();
14627            return null;
14628          })) : (root3.callbackNode = null, root3.callbackPriority = 0);
14629          commitErrors = null;
14630          commitStartTime = now3();
14631          null !== suspendedCommitReason && logSuspendedCommitPhase(
14632            completedRenderEndTime,
14633            commitStartTime,
14634            suspendedCommitReason,
14635            workInProgressUpdateTask
14636          );
14637          recoverableErrors = 0 !== (finishedWork.flags & 13878);
14638          if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {
14639            recoverableErrors = ReactSharedInternals.T;
14640            ReactSharedInternals.T = null;
14641            transitions = ReactDOMSharedInternals.p;
14642            ReactDOMSharedInternals.p = DiscreteEventPriority;
14643            spawnedLane = executionContext;
14644            executionContext |= CommitContext;
14645            try {
14646              commitBeforeMutationEffects(root3, finishedWork, lanes);
14647            } finally {
14648              executionContext = spawnedLane, ReactDOMSharedInternals.p = transitions, ReactSharedInternals.T = recoverableErrors;
14649            }
14650          }
14651          pendingEffectsStatus = PENDING_MUTATION_PHASE;
14652          flushMutationEffects();
14653          flushLayoutEffects();
14654          flushSpawnedWork();
14655        }
14656      }
14657      function flushMutationEffects() {
14658        if (pendingEffectsStatus === PENDING_MUTATION_PHASE) {
14659          pendingEffectsStatus = NO_PENDING_EFFECTS;
14660          var root3 = pendingEffectsRoot, finishedWork = pendingFinishedWork, lanes = pendingEffectsLanes, rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);
14661          if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {
14662            rootMutationHasEffect = ReactSharedInternals.T;
14663            ReactSharedInternals.T = null;
14664            var previousPriority = ReactDOMSharedInternals.p;
14665            ReactDOMSharedInternals.p = DiscreteEventPriority;
14666            var prevExecutionContext = executionContext;
14667            executionContext |= CommitContext;
14668            try {
14669              inProgressLanes = lanes;
14670              inProgressRoot = root3;
14671              resetComponentEffectTimers();
14672              commitMutationEffectsOnFiber(finishedWork, root3);
14673              inProgressRoot = inProgressLanes = null;
14674              lanes = selectionInformation;
14675              var curFocusedElem = getActiveElementDeep(root3.containerInfo), priorFocusedElem = lanes.focusedElem, priorSelectionRange = lanes.selectionRange;
14676              if (curFocusedElem !== priorFocusedElem && priorFocusedElem && priorFocusedElem.ownerDocument && containsNode(
14677                priorFocusedElem.ownerDocument.documentElement,
14678                priorFocusedElem
14679              )) {
14680                if (null !== priorSelectionRange && hasSelectionCapabilities(priorFocusedElem)) {
14681                  var start2 = priorSelectionRange.start, end = priorSelectionRange.end;
14682                  void 0 === end && (end = start2);
14683                  if ("selectionStart" in priorFocusedElem)
14684                    priorFocusedElem.selectionStart = start2, priorFocusedElem.selectionEnd = Math.min(
14685                      end,
14686                      priorFocusedElem.value.length
14687                    );
14688                  else {
14689                    var doc = priorFocusedElem.ownerDocument || document, win = doc && doc.defaultView || window;
14690                    if (win.getSelection) {
14691                      var selection = win.getSelection(), length = priorFocusedElem.textContent.length, start$jscomp$0 = Math.min(
14692                        priorSelectionRange.start,
14693                        length
14694                      ), end$jscomp$0 = void 0 === priorSelectionRange.end ? start$jscomp$0 : Math.min(priorSelectionRange.end, length);
14695                      !selection.extend && start$jscomp$0 > end$jscomp$0 && (curFocusedElem = end$jscomp$0, end$jscomp$0 = start$jscomp$0, start$jscomp$0 = curFocusedElem);
14696                      var startMarker = getNodeForCharacterOffset(
14697                        priorFocusedElem,
14698                        start$jscomp$0
14699                      ), endMarker = getNodeForCharacterOffset(
14700                        priorFocusedElem,
14701                        end$jscomp$0
14702                      );
14703                      if (startMarker && endMarker && (1 !== selection.rangeCount || selection.anchorNode !== startMarker.node || selection.anchorOffset !== startMarker.offset || selection.focusNode !== endMarker.node || selection.focusOffset !== endMarker.offset)) {
14704                        var range = doc.createRange();
14705                        range.setStart(startMarker.node, startMarker.offset);
14706                        selection.removeAllRanges();
14707                        start$jscomp$0 > end$jscomp$0 ? (selection.addRange(range), selection.extend(endMarker.node, endMarker.offset)) : (range.setEnd(endMarker.node, endMarker.offset), selection.addRange(range));
14708                      }
14709                    }
14710                  }
14711                }
14712                doc = [];
14713                for (selection = priorFocusedElem; selection = selection.parentNode; )
14714                  1 === selection.nodeType && doc.push({
14715                    element: selection,
14716                    left: selection.scrollLeft,
14717                    top: selection.scrollTop
14718                  });
14719                "function" === typeof priorFocusedElem.focus && priorFocusedElem.focus();
14720                for (priorFocusedElem = 0; priorFocusedElem < doc.length; priorFocusedElem++) {
14721                  var info = doc[priorFocusedElem];
14722                  info.element.scrollLeft = info.left;
14723                  info.element.scrollTop = info.top;
14724                }
14725              }
14726              _enabled = !!eventsEnabled;
14727              selectionInformation = eventsEnabled = null;
14728            } finally {
14729              executionContext = prevExecutionContext, ReactDOMSharedInternals.p = previousPriority, ReactSharedInternals.T = rootMutationHasEffect;
14730            }
14731          }
14732          root3.current = finishedWork;
14733          pendingEffectsStatus = PENDING_LAYOUT_PHASE;
14734        }
14735      }
14736      function flushLayoutEffects() {
14737        if (pendingEffectsStatus === PENDING_LAYOUT_PHASE) {
14738          pendingEffectsStatus = NO_PENDING_EFFECTS;
14739          var suspendedViewTransitionReason = pendingSuspendedViewTransitionReason;
14740          if (null !== suspendedViewTransitionReason) {
14741            commitStartTime = now3();
14742            var startTime = commitEndTime, endTime = commitStartTime;
14743            !supportsUserTiming || endTime <= startTime || (animatingTask ? animatingTask.run(
14744              console.timeStamp.bind(
14745                console,
14746                suspendedViewTransitionReason,
14747                startTime,
14748                endTime,
14749                currentTrack,
14750                LANES_TRACK_GROUP,
14751                "secondary-light"
14752              )
14753            ) : console.timeStamp(
14754              suspendedViewTransitionReason,
14755              startTime,
14756              endTime,
14757              currentTrack,
14758              LANES_TRACK_GROUP,
14759              "secondary-light"
14760            ));
14761          }
14762          suspendedViewTransitionReason = pendingEffectsRoot;
14763          startTime = pendingFinishedWork;
14764          endTime = pendingEffectsLanes;
14765          var rootHasLayoutEffect = 0 !== (startTime.flags & 8772);
14766          if (0 !== (startTime.subtreeFlags & 8772) || rootHasLayoutEffect) {
14767            rootHasLayoutEffect = ReactSharedInternals.T;
14768            ReactSharedInternals.T = null;
14769            var _previousPriority = ReactDOMSharedInternals.p;
14770            ReactDOMSharedInternals.p = DiscreteEventPriority;
14771            var _prevExecutionContext = executionContext;
14772            executionContext |= CommitContext;
14773            try {
14774              inProgressLanes = endTime, inProgressRoot = suspendedViewTransitionReason, resetComponentEffectTimers(), commitLayoutEffectOnFiber(
14775                suspendedViewTransitionReason,
14776                startTime.alternate,
14777                startTime
14778              ), inProgressRoot = inProgressLanes = null;
14779            } finally {
14780              executionContext = _prevExecutionContext, ReactDOMSharedInternals.p = _previousPriority, ReactSharedInternals.T = rootHasLayoutEffect;
14781            }
14782          }
14783          suspendedViewTransitionReason = pendingEffectsRenderEndTime;
14784          startTime = pendingSuspendedCommitReason;
14785          commitEndTime = now3();
14786          suspendedViewTransitionReason = null === startTime ? suspendedViewTransitionReason : commitStartTime;
14787          startTime = commitEndTime;
14788          endTime = pendingDelayedCommitReason === ABORTED_VIEW_TRANSITION_COMMIT;
14789          rootHasLayoutEffect = workInProgressUpdateTask;
14790          null !== commitErrors ? logCommitErrored(
14791            suspendedViewTransitionReason,
14792            startTime,
14793            commitErrors,
14794            false,
14795            rootHasLayoutEffect
14796          ) : !supportsUserTiming || startTime <= suspendedViewTransitionReason || (rootHasLayoutEffect ? rootHasLayoutEffect.run(
14797            console.timeStamp.bind(
14798              console,
14799              endTime ? "Commit Interrupted View Transition" : "Commit",
14800              suspendedViewTransitionReason,
14801              startTime,
14802              currentTrack,
14803              LANES_TRACK_GROUP,
14804              endTime ? "error" : "secondary-dark"
14805            )
14806          ) : console.timeStamp(
14807            endTime ? "Commit Interrupted View Transition" : "Commit",
14808            suspendedViewTransitionReason,
14809            startTime,
14810            currentTrack,
14811            LANES_TRACK_GROUP,
14812            endTime ? "error" : "secondary-dark"
14813          ));
14814          pendingEffectsStatus = PENDING_AFTER_MUTATION_PHASE;
14815        }
14816      }
14817      function flushSpawnedWork() {
14818        if (pendingEffectsStatus === PENDING_SPAWNED_WORK || pendingEffectsStatus === PENDING_AFTER_MUTATION_PHASE) {
14819          if (pendingEffectsStatus === PENDING_SPAWNED_WORK) {
14820            var startViewTransitionStartTime = commitEndTime;
14821            commitEndTime = now3();
14822            var endTime = commitEndTime, abortedViewTransition = pendingDelayedCommitReason === ABORTED_VIEW_TRANSITION_COMMIT;
14823            !supportsUserTiming || endTime <= startViewTransitionStartTime || (animatingTask ? animatingTask.run(
14824              console.timeStamp.bind(
14825                console,
14826                abortedViewTransition ? "Interrupted View Transition" : "Starting Animation",
14827                startViewTransitionStartTime,
14828                endTime,
14829                currentTrack,
14830                LANES_TRACK_GROUP,
14831                abortedViewTransition ? "error" : "secondary-light"
14832              )
14833            ) : console.timeStamp(
14834              abortedViewTransition ? "Interrupted View Transition" : "Starting Animation",
14835              startViewTransitionStartTime,
14836              endTime,
14837              currentTrack,
14838              LANES_TRACK_GROUP,
14839              abortedViewTransition ? " error" : "secondary-light"
14840            ));
14841            pendingDelayedCommitReason !== ABORTED_VIEW_TRANSITION_COMMIT && (pendingDelayedCommitReason = ANIMATION_STARTED_COMMIT);
14842          }
14843          pendingEffectsStatus = NO_PENDING_EFFECTS;
14844          requestPaint();
14845          startViewTransitionStartTime = pendingEffectsRoot;
14846          var finishedWork = pendingFinishedWork;
14847          endTime = pendingEffectsLanes;
14848          abortedViewTransition = pendingRecoverableErrors;
14849          var rootDidHavePassiveEffects = 0 !== finishedWork.actualDuration || 0 !== (finishedWork.subtreeFlags & 10256) || 0 !== (finishedWork.flags & 10256);
14850          rootDidHavePassiveEffects ? pendingEffectsStatus = PENDING_PASSIVE_PHASE : (pendingEffectsStatus = NO_PENDING_EFFECTS, pendingFinishedWork = pendingEffectsRoot = null, releaseRootPooledCache(
14851            startViewTransitionStartTime,
14852            startViewTransitionStartTime.pendingLanes
14853          ), nestedPassiveUpdateCount = 0, rootWithPassiveNestedUpdates = null);
14854          var remainingLanes = startViewTransitionStartTime.pendingLanes;
14855          0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);
14856          rootDidHavePassiveEffects || commitDoubleInvokeEffectsInDEV(startViewTransitionStartTime);
14857          remainingLanes = lanesToEventPriority(endTime);
14858          finishedWork = finishedWork.stateNode;
14859          if (injectedHook && "function" === typeof injectedHook.onCommitFiberRoot)
14860            try {
14861              var didError = 128 === (finishedWork.current.flags & 128);
14862              switch (remainingLanes) {
14863                case DiscreteEventPriority:
14864                  var schedulerPriority = ImmediatePriority;
14865                  break;
14866                case ContinuousEventPriority:
14867                  schedulerPriority = UserBlockingPriority;
14868                  break;
14869                case DefaultEventPriority:
14870                  schedulerPriority = NormalPriority$1;
14871                  break;
14872                case IdleEventPriority:
14873                  schedulerPriority = IdlePriority;
14874                  break;
14875                default:
14876                  schedulerPriority = NormalPriority$1;
14877              }
14878              injectedHook.onCommitFiberRoot(
14879                rendererID,
14880                finishedWork,
14881                schedulerPriority,
14882                didError
14883              );
14884            } catch (err) {
14885              hasLoggedError || (hasLoggedError = true, console.error(
14886                "React instrumentation encountered an error: %o",
14887                err
14888              ));
14889            }
14890          isDevToolsPresent && startViewTransitionStartTime.memoizedUpdaters.clear();
14891          onCommitRoot();
14892          if (null !== abortedViewTransition) {
14893            didError = ReactSharedInternals.T;
14894            schedulerPriority = ReactDOMSharedInternals.p;
14895            ReactDOMSharedInternals.p = DiscreteEventPriority;
14896            ReactSharedInternals.T = null;
14897            try {
14898              var onRecoverableError = startViewTransitionStartTime.onRecoverableError;
14899              for (finishedWork = 0; finishedWork < abortedViewTransition.length; finishedWork++) {
14900                var recoverableError = abortedViewTransition[finishedWork], errorInfo = makeErrorInfo(recoverableError.stack);
14901                runWithFiberInDEV(
14902                  recoverableError.source,
14903                  onRecoverableError,
14904                  recoverableError.value,
14905                  errorInfo
14906                );
14907              }
14908            } finally {
14909              ReactSharedInternals.T = didError, ReactDOMSharedInternals.p = schedulerPriority;
14910            }
14911          }
14912          0 !== (pendingEffectsLanes & 3) && flushPendingEffects();
14913          ensureRootIsScheduled(startViewTransitionStartTime);
14914          remainingLanes = startViewTransitionStartTime.pendingLanes;
14915          0 !== (endTime & 261930) && 0 !== (remainingLanes & 42) ? (nestedUpdateScheduled = true, startViewTransitionStartTime === rootWithNestedUpdates ? nestedUpdateCount++ : (nestedUpdateCount = 0, rootWithNestedUpdates = startViewTransitionStartTime)) : nestedUpdateCount = 0;
14916          rootDidHavePassiveEffects || finalizeRender(endTime, commitEndTime);
14917          flushSyncWorkAcrossRoots_impl(0, false);
14918        }
14919      }
14920      function makeErrorInfo(componentStack) {
14921        componentStack = { componentStack };
14922        Object.defineProperty(componentStack, "digest", {
14923          get: function() {
14924            console.error(
14925              'You are accessing "digest" from the errorInfo object passed to onRecoverableError. This property is no longer provided as part of errorInfo but can be accessed as a property of the Error instance itself.'
14926            );
14927          }
14928        });
14929        return componentStack;
14930      }
14931      function releaseRootPooledCache(root3, remainingLanes) {
14932        0 === (root3.pooledCacheLanes &= remainingLanes) && (remainingLanes = root3.pooledCache, null != remainingLanes && (root3.pooledCache = null, releaseCache(remainingLanes)));
14933      }
14934      function flushPendingEffects() {
14935        flushMutationEffects();
14936        flushLayoutEffects();
14937        flushSpawnedWork();
14938        return flushPassiveEffects();
14939      }
14940      function flushPassiveEffects() {
14941        if (pendingEffectsStatus !== PENDING_PASSIVE_PHASE) return false;
14942        var root3 = pendingEffectsRoot, remainingLanes = pendingEffectsRemainingLanes;
14943        pendingEffectsRemainingLanes = 0;
14944        var renderPriority = lanesToEventPriority(pendingEffectsLanes), priority = 0 === DefaultEventPriority || DefaultEventPriority > renderPriority ? DefaultEventPriority : renderPriority;
14945        renderPriority = ReactSharedInternals.T;
14946        var previousPriority = ReactDOMSharedInternals.p;
14947        try {
14948          ReactDOMSharedInternals.p = priority;
14949          ReactSharedInternals.T = null;
14950          var transitions = pendingPassiveTransitions;
14951          pendingPassiveTransitions = null;
14952          priority = pendingEffectsRoot;
14953          var lanes = pendingEffectsLanes;
14954          pendingEffectsStatus = NO_PENDING_EFFECTS;
14955          pendingFinishedWork = pendingEffectsRoot = null;
14956          pendingEffectsLanes = 0;
14957          if ((executionContext & (RenderContext | CommitContext)) !== NoContext)
14958            throw Error("Cannot flush passive effects while already rendering.");
14959          setCurrentTrackFromLanes(lanes);
14960          isFlushingPassiveEffects = true;
14961          didScheduleUpdateDuringPassiveEffects = false;
14962          var passiveEffectStartTime = 0;
14963          commitErrors = null;
14964          passiveEffectStartTime = now$1();
14965          if (pendingDelayedCommitReason === ANIMATION_STARTED_COMMIT)
14966            logAnimatingPhase(
14967              commitEndTime,
14968              passiveEffectStartTime,
14969              animatingTask
14970            );
14971          else {
14972            var startTime = commitEndTime, endTime = passiveEffectStartTime, delayedUntilPaint = pendingDelayedCommitReason === DELAYED_PASSIVE_COMMIT;
14973            !supportsUserTiming || endTime <= startTime || (workInProgressUpdateTask ? workInProgressUpdateTask.run(
14974              console.timeStamp.bind(
14975                console,
14976                delayedUntilPaint ? "Waiting for Paint" : "Waiting",
14977                startTime,
14978                endTime,
14979                currentTrack,
14980                LANES_TRACK_GROUP,
14981                "secondary-light"
14982              )
14983            ) : console.timeStamp(
14984              delayedUntilPaint ? "Waiting for Paint" : "Waiting",
14985              startTime,
14986              endTime,
14987              currentTrack,
14988              LANES_TRACK_GROUP,
14989              "secondary-light"
14990            ));
14991          }
14992          startTime = executionContext;
14993          executionContext |= CommitContext;
14994          var finishedWork = priority.current;
14995          resetComponentEffectTimers();
14996          commitPassiveUnmountOnFiber(finishedWork);
14997          var finishedWork$jscomp$0 = priority.current;
14998          finishedWork = pendingEffectsRenderEndTime;
14999          resetComponentEffectTimers();
15000          commitPassiveMountOnFiber(
15001            priority,
15002            finishedWork$jscomp$0,
15003            lanes,
15004            transitions,
15005            finishedWork
15006          );
15007          commitDoubleInvokeEffectsInDEV(priority);
15008          executionContext = startTime;
15009          var passiveEffectsEndTime = now$1();
15010          finishedWork$jscomp$0 = passiveEffectStartTime;
15011          finishedWork = workInProgressUpdateTask;
15012          null !== commitErrors ? logCommitErrored(
15013            finishedWork$jscomp$0,
15014            passiveEffectsEndTime,
15015            commitErrors,
15016            true,
15017            finishedWork
15018          ) : !supportsUserTiming || passiveEffectsEndTime <= finishedWork$jscomp$0 || (finishedWork ? finishedWork.run(
15019            console.timeStamp.bind(
15020              console,
15021              "Remaining Effects",
15022              finishedWork$jscomp$0,
15023              passiveEffectsEndTime,
15024              currentTrack,
15025              LANES_TRACK_GROUP,
15026              "secondary-dark"
15027            )
15028          ) : console.timeStamp(
15029            "Remaining Effects",
15030            finishedWork$jscomp$0,
15031            passiveEffectsEndTime,
15032            currentTrack,
15033            LANES_TRACK_GROUP,
15034            "secondary-dark"
15035          ));
15036          finalizeRender(lanes, passiveEffectsEndTime);
15037          flushSyncWorkAcrossRoots_impl(0, false);
15038          didScheduleUpdateDuringPassiveEffects ? priority === rootWithPassiveNestedUpdates ? nestedPassiveUpdateCount++ : (nestedPassiveUpdateCount = 0, rootWithPassiveNestedUpdates = priority) : nestedPassiveUpdateCount = 0;
15039          didScheduleUpdateDuringPassiveEffects = isFlushingPassiveEffects = false;
15040          if (injectedHook && "function" === typeof injectedHook.onPostCommitFiberRoot)
15041            try {
15042              injectedHook.onPostCommitFiberRoot(rendererID, priority);
15043            } catch (err) {
15044              hasLoggedError || (hasLoggedError = true, console.error(
15045                "React instrumentation encountered an error: %o",
15046                err
15047              ));
15048            }
15049          var stateNode = priority.current.stateNode;
15050          stateNode.effectDuration = 0;
15051          stateNode.passiveEffectDuration = 0;
15052          return true;
15053        } finally {
15054          ReactDOMSharedInternals.p = previousPriority, ReactSharedInternals.T = renderPriority, releaseRootPooledCache(root3, remainingLanes);
15055        }
15056      }
15057      function captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error2) {
15058        sourceFiber = createCapturedValueAtFiber(error2, sourceFiber);
15059        recordEffectError(sourceFiber);
15060        sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);
15061        rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);
15062        null !== rootFiber && (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));
15063      }
15064      function captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error2) {
15065        isRunningInsertionEffect = false;
15066        if (3 === sourceFiber.tag)
15067          captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error2);
15068        else {
15069          for (; null !== nearestMountedAncestor; ) {
15070            if (3 === nearestMountedAncestor.tag) {
15071              captureCommitPhaseErrorOnRoot(
15072                nearestMountedAncestor,
15073                sourceFiber,
15074                error2
15075              );
15076              return;
15077            }
15078            if (1 === nearestMountedAncestor.tag) {
15079              var instance = nearestMountedAncestor.stateNode;
15080              if ("function" === typeof nearestMountedAncestor.type.getDerivedStateFromError || "function" === typeof instance.componentDidCatch && (null === legacyErrorBoundariesThatAlreadyFailed || !legacyErrorBoundariesThatAlreadyFailed.has(instance))) {
15081                sourceFiber = createCapturedValueAtFiber(error2, sourceFiber);
15082                recordEffectError(sourceFiber);
15083                error2 = createClassErrorUpdate(2);
15084                instance = enqueueUpdate(nearestMountedAncestor, error2, 2);
15085                null !== instance && (initializeClassErrorUpdate(
15086                  error2,
15087                  instance,
15088                  nearestMountedAncestor,
15089                  sourceFiber
15090                ), markRootUpdated$1(instance, 2), ensureRootIsScheduled(instance));
15091                return;
15092              }
15093            }
15094            nearestMountedAncestor = nearestMountedAncestor.return;
15095          }
15096          console.error(
15097            "Internal React error: Attempted to capture a commit phase error inside a detached tree. This indicates a bug in React. Potential causes include deleting the same fiber more than once, committing an already-finished tree, or an inconsistent return pointer.\n\nError message:\n\n%s",
15098            error2
15099          );
15100        }
15101      }
15102      function attachPingListener(root3, wakeable, lanes) {
15103        var pingCache = root3.pingCache;
15104        if (null === pingCache) {
15105          pingCache = root3.pingCache = new PossiblyWeakMap();
15106          var threadIDs = /* @__PURE__ */ new Set();
15107          pingCache.set(wakeable, threadIDs);
15108        } else
15109          threadIDs = pingCache.get(wakeable), void 0 === threadIDs && (threadIDs = /* @__PURE__ */ new Set(), pingCache.set(wakeable, threadIDs));
15110        threadIDs.has(lanes) || (workInProgressRootDidAttachPingListener = true, threadIDs.add(lanes), pingCache = pingSuspendedRoot.bind(null, root3, wakeable, lanes), isDevToolsPresent && restorePendingUpdaters(root3, lanes), wakeable.then(pingCache, pingCache));
15111      }
15112      function pingSuspendedRoot(root3, wakeable, pingedLanes) {
15113        var pingCache = root3.pingCache;
15114        null !== pingCache && pingCache.delete(wakeable);
15115        root3.pingedLanes |= root3.suspendedLanes & pingedLanes;
15116        root3.warmLanes &= ~pingedLanes;
15117        0 !== (pingedLanes & 127) ? 0 > blockingUpdateTime && (blockingClampTime = blockingUpdateTime = now3(), blockingUpdateTask = createTask("Promise Resolved"), blockingUpdateType = PINGED_UPDATE) : 0 !== (pingedLanes & 4194048) && 0 > transitionUpdateTime && (transitionClampTime = transitionUpdateTime = now3(), transitionUpdateTask = createTask("Promise Resolved"), transitionUpdateType = PINGED_UPDATE);
15118        isConcurrentActEnvironment() && null === ReactSharedInternals.actQueue && console.error(
15119          "A suspended resource finished loading inside a test, but the event was not wrapped in act(...).\n\nWhen testing, code that resolves suspended data should be wrapped into act(...):\n\nact(() => {\n  /* finish loading suspended data */\n});\n/* assert on the output */\n\nThis ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act"
15120        );
15121        workInProgressRoot === root3 && (workInProgressRootRenderLanes & pingedLanes) === pingedLanes && (workInProgressRootExitStatus === RootSuspendedWithDelay || workInProgressRootExitStatus === RootSuspended && (workInProgressRootRenderLanes & 62914560) === workInProgressRootRenderLanes && now$1() - globalMostRecentFallbackTime < FALLBACK_THROTTLE_MS ? (executionContext & RenderContext) === NoContext && prepareFreshStack(root3, 0) : workInProgressRootPingedLanes |= pingedLanes, workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes && (workInProgressSuspendedRetryLanes = 0));
15122        ensureRootIsScheduled(root3);
15123      }
15124      function retryTimedOutBoundary(boundaryFiber, retryLane) {
15125        0 === retryLane && (retryLane = claimNextRetryLane());
15126        boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);
15127        null !== boundaryFiber && (markRootUpdated$1(boundaryFiber, retryLane), ensureRootIsScheduled(boundaryFiber));
15128      }
15129      function retryDehydratedSuspenseBoundary(boundaryFiber) {
15130        var suspenseState = boundaryFiber.memoizedState, retryLane = 0;
15131        null !== suspenseState && (retryLane = suspenseState.retryLane);
15132        retryTimedOutBoundary(boundaryFiber, retryLane);
15133      }
15134      function resolveRetryWakeable(boundaryFiber, wakeable) {
15135        var retryLane = 0;
15136        switch (boundaryFiber.tag) {
15137          case 31:
15138          case 13:
15139            var retryCache = boundaryFiber.stateNode;
15140            var suspenseState = boundaryFiber.memoizedState;
15141            null !== suspenseState && (retryLane = suspenseState.retryLane);
15142            break;
15143          case 19:
15144            retryCache = boundaryFiber.stateNode;
15145            break;
15146          case 22:
15147            retryCache = boundaryFiber.stateNode._retryCache;
15148            break;
15149          default:
15150            throw Error(
15151              "Pinged unknown suspense boundary type. This is probably a bug in React."
15152            );
15153        }
15154        null !== retryCache && retryCache.delete(wakeable);
15155        retryTimedOutBoundary(boundaryFiber, retryLane);
15156      }
15157      function recursivelyTraverseAndDoubleInvokeEffectsInDEV(root$jscomp$0, parentFiber, isInStrictMode) {
15158        if (0 !== (parentFiber.subtreeFlags & 67117056))
15159          for (parentFiber = parentFiber.child; null !== parentFiber; ) {
15160            var root3 = root$jscomp$0, fiber = parentFiber, isStrictModeFiber = fiber.type === REACT_STRICT_MODE_TYPE;
15161            isStrictModeFiber = isInStrictMode || isStrictModeFiber;
15162            22 !== fiber.tag ? fiber.flags & 67108864 ? isStrictModeFiber && runWithFiberInDEV(
15163              fiber,
15164              doubleInvokeEffectsOnFiber,
15165              root3,
15166              fiber
15167            ) : recursivelyTraverseAndDoubleInvokeEffectsInDEV(
15168              root3,
15169              fiber,
15170              isStrictModeFiber
15171            ) : null === fiber.memoizedState && (isStrictModeFiber && fiber.flags & 8192 ? runWithFiberInDEV(
15172              fiber,
15173              doubleInvokeEffectsOnFiber,
15174              root3,
15175              fiber
15176            ) : fiber.subtreeFlags & 67108864 && runWithFiberInDEV(
15177              fiber,
15178              recursivelyTraverseAndDoubleInvokeEffectsInDEV,
15179              root3,
15180              fiber,
15181              isStrictModeFiber
15182            ));
15183            parentFiber = parentFiber.sibling;
15184          }
15185      }
15186      function doubleInvokeEffectsOnFiber(root3, fiber) {
15187        setIsStrictModeForDevtools(true);
15188        try {
15189          disappearLayoutEffects(fiber), disconnectPassiveEffect(fiber), reappearLayoutEffects(root3, fiber.alternate, fiber, false), reconnectPassiveEffects(root3, fiber, 0, null, false, 0);
15190        } finally {
15191          setIsStrictModeForDevtools(false);
15192        }
15193      }
15194      function commitDoubleInvokeEffectsInDEV(root3) {
15195        var doubleInvokeEffects = true;
15196        root3.current.mode & (StrictLegacyMode | StrictEffectsMode) || (doubleInvokeEffects = false);
15197        recursivelyTraverseAndDoubleInvokeEffectsInDEV(
15198          root3,
15199          root3.current,
15200          doubleInvokeEffects
15201        );
15202      }
15203      function warnAboutUpdateOnNotYetMountedFiberInDEV(fiber) {
15204        if ((executionContext & RenderContext) === NoContext) {
15205          var tag = fiber.tag;
15206          if (3 === tag || 1 === tag || 0 === tag || 11 === tag || 14 === tag || 15 === tag) {
15207            tag = getComponentNameFromFiber(fiber) || "ReactComponent";
15208            if (null !== didWarnStateUpdateForNotYetMountedComponent) {
15209              if (didWarnStateUpdateForNotYetMountedComponent.has(tag)) return;
15210              didWarnStateUpdateForNotYetMountedComponent.add(tag);
15211            } else didWarnStateUpdateForNotYetMountedComponent = /* @__PURE__ */ new Set([tag]);
15212            runWithFiberInDEV(fiber, function() {
15213              console.error(
15214                "Can't perform a React state update on a component that hasn't mounted yet. This indicates that you have a side-effect in your render function that asynchronously tries to update the component. Move this work to useEffect instead."
15215              );
15216            });
15217          }
15218        }
15219      }
15220      function restorePendingUpdaters(root3, lanes) {
15221        isDevToolsPresent && root3.memoizedUpdaters.forEach(function(schedulingFiber) {
15222          addFiberToLanesMap(root3, schedulingFiber, lanes);
15223        });
15224      }
15225      function scheduleCallback$1(priorityLevel, callback) {
15226        var actQueue = ReactSharedInternals.actQueue;
15227        return null !== actQueue ? (actQueue.push(callback), fakeActCallbackNode$1) : scheduleCallback$3(priorityLevel, callback);
15228      }
15229      function warnIfUpdatesNotWrappedWithActDEV(fiber) {
15230        isConcurrentActEnvironment() && null === ReactSharedInternals.actQueue && runWithFiberInDEV(fiber, function() {
15231          console.error(
15232            "An update to %s inside a test was not wrapped in act(...).\n\nWhen testing, code that causes React state updates should be wrapped into act(...):\n\nact(() => {\n  /* fire events that update state */\n});\n/* assert on the output */\n\nThis ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act",
15233            getComponentNameFromFiber(fiber)
15234          );
15235        });
15236      }
15237      function ensureRootIsScheduled(root3) {
15238        root3 !== lastScheduledRoot && null === root3.next && (null === lastScheduledRoot ? firstScheduledRoot = lastScheduledRoot = root3 : lastScheduledRoot = lastScheduledRoot.next = root3);
15239        mightHavePendingSyncWork = true;
15240        null !== ReactSharedInternals.actQueue ? didScheduleMicrotask_act || (didScheduleMicrotask_act = true, scheduleImmediateRootScheduleTask()) : didScheduleMicrotask || (didScheduleMicrotask = true, scheduleImmediateRootScheduleTask());
15241      }
15242      function flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {
15243        if (!isFlushingWork && mightHavePendingSyncWork) {
15244          isFlushingWork = true;
15245          do {
15246            var didPerformSomeWork = false;
15247            for (var root3 = firstScheduledRoot; null !== root3; ) {
15248              if (!onlyLegacy)
15249                if (0 !== syncTransitionLanes) {
15250                  var pendingLanes = root3.pendingLanes;
15251                  if (0 === pendingLanes) var nextLanes = 0;
15252                  else {
15253                    var suspendedLanes = root3.suspendedLanes, pingedLanes = root3.pingedLanes;
15254                    nextLanes = (1 << 31 - clz32(42 | syncTransitionLanes) + 1) - 1;
15255                    nextLanes &= pendingLanes & ~(suspendedLanes & ~pingedLanes);
15256                    nextLanes = nextLanes & 201326741 ? nextLanes & 201326741 | 1 : nextLanes ? nextLanes | 2 : 0;
15257                  }
15258                  0 !== nextLanes && (didPerformSomeWork = true, performSyncWorkOnRoot(root3, nextLanes));
15259                } else
15260                  nextLanes = workInProgressRootRenderLanes, nextLanes = getNextLanes(
15261                    root3,
15262                    root3 === workInProgressRoot ? nextLanes : 0,
15263                    null !== root3.cancelPendingCommit || root3.timeoutHandle !== noTimeout
15264                  ), 0 === (nextLanes & 3) || checkIfRootIsPrerendering(root3, nextLanes) || (didPerformSomeWork = true, performSyncWorkOnRoot(root3, nextLanes));
15265              root3 = root3.next;
15266            }
15267          } while (didPerformSomeWork);
15268          isFlushingWork = false;
15269        }
15270      }
15271      function processRootScheduleInImmediateTask() {
15272        schedulerEvent = window.event;
15273        processRootScheduleInMicrotask();
15274      }
15275      function processRootScheduleInMicrotask() {
15276        mightHavePendingSyncWork = didScheduleMicrotask_act = didScheduleMicrotask = false;
15277        var syncTransitionLanes = 0;
15278        0 !== currentEventTransitionLane && shouldAttemptEagerTransition() && (syncTransitionLanes = currentEventTransitionLane);
15279        for (var currentTime = now$1(), prev = null, root3 = firstScheduledRoot; null !== root3; ) {
15280          var next = root3.next, nextLanes = scheduleTaskForRootDuringMicrotask(root3, currentTime);
15281          if (0 === nextLanes)
15282            root3.next = null, null === prev ? firstScheduledRoot = next : prev.next = next, null === next && (lastScheduledRoot = prev);
15283          else if (prev = root3, 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))
15284            mightHavePendingSyncWork = true;
15285          root3 = next;
15286        }
15287        pendingEffectsStatus !== NO_PENDING_EFFECTS && pendingEffectsStatus !== PENDING_PASSIVE_PHASE || flushSyncWorkAcrossRoots_impl(syncTransitionLanes, false);
15288        0 !== currentEventTransitionLane && (currentEventTransitionLane = 0);
15289      }
15290      function scheduleTaskForRootDuringMicrotask(root3, currentTime) {
15291        for (var suspendedLanes = root3.suspendedLanes, pingedLanes = root3.pingedLanes, expirationTimes = root3.expirationTimes, lanes = root3.pendingLanes & -62914561; 0 < lanes; ) {
15292          var index = 31 - clz32(lanes), lane = 1 << index, expirationTime = expirationTimes[index];
15293          if (-1 === expirationTime) {
15294            if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))
15295              expirationTimes[index] = computeExpirationTime(lane, currentTime);
15296          } else expirationTime <= currentTime && (root3.expiredLanes |= lane);
15297          lanes &= ~lane;
15298        }
15299        currentTime = workInProgressRoot;
15300        suspendedLanes = workInProgressRootRenderLanes;
15301        suspendedLanes = getNextLanes(
15302          root3,
15303          root3 === currentTime ? suspendedLanes : 0,
15304          null !== root3.cancelPendingCommit || root3.timeoutHandle !== noTimeout
15305        );
15306        pingedLanes = root3.callbackNode;
15307        if (0 === suspendedLanes || root3 === currentTime && (workInProgressSuspendedReason === SuspendedOnData || workInProgressSuspendedReason === SuspendedOnAction) || null !== root3.cancelPendingCommit)
15308          return null !== pingedLanes && cancelCallback(pingedLanes), root3.callbackNode = null, root3.callbackPriority = 0;
15309        if (0 === (suspendedLanes & 3) || checkIfRootIsPrerendering(root3, suspendedLanes)) {
15310          currentTime = suspendedLanes & -suspendedLanes;
15311          if (currentTime !== root3.callbackPriority || null !== ReactSharedInternals.actQueue && pingedLanes !== fakeActCallbackNode)
15312            cancelCallback(pingedLanes);
15313          else return currentTime;
15314          switch (lanesToEventPriority(suspendedLanes)) {
15315            case DiscreteEventPriority:
15316            case ContinuousEventPriority:
15317              suspendedLanes = UserBlockingPriority;
15318              break;
15319            case DefaultEventPriority:
15320              suspendedLanes = NormalPriority$1;
15321              break;
15322            case IdleEventPriority:
15323              suspendedLanes = IdlePriority;
15324              break;
15325            default:
15326              suspendedLanes = NormalPriority$1;
15327          }
15328          pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root3);
15329          null !== ReactSharedInternals.actQueue ? (ReactSharedInternals.actQueue.push(pingedLanes), suspendedLanes = fakeActCallbackNode) : suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);
15330          root3.callbackPriority = currentTime;
15331          root3.callbackNode = suspendedLanes;
15332          return currentTime;
15333        }
15334        null !== pingedLanes && cancelCallback(pingedLanes);
15335        root3.callbackPriority = 2;
15336        root3.callbackNode = null;
15337        return 2;
15338      }
15339      function performWorkOnRootViaSchedulerTask(root3, didTimeout) {
15340        nestedUpdateScheduled = currentUpdateIsNested = false;
15341        schedulerEvent = window.event;
15342        if (pendingEffectsStatus !== NO_PENDING_EFFECTS && pendingEffectsStatus !== PENDING_PASSIVE_PHASE)
15343          return root3.callbackNode = null, root3.callbackPriority = 0, null;
15344        var originalCallbackNode = root3.callbackNode;
15345        pendingDelayedCommitReason === IMMEDIATE_COMMIT && (pendingDelayedCommitReason = DELAYED_PASSIVE_COMMIT);
15346        if (flushPendingEffects() && root3.callbackNode !== originalCallbackNode)
15347          return null;
15348        var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;
15349        workInProgressRootRenderLanes$jscomp$0 = getNextLanes(
15350          root3,
15351          root3 === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,
15352          null !== root3.cancelPendingCommit || root3.timeoutHandle !== noTimeout
15353        );
15354        if (0 === workInProgressRootRenderLanes$jscomp$0) return null;
15355        performWorkOnRoot(
15356          root3,
15357          workInProgressRootRenderLanes$jscomp$0,
15358          didTimeout
15359        );
15360        scheduleTaskForRootDuringMicrotask(root3, now$1());
15361        return null != root3.callbackNode && root3.callbackNode === originalCallbackNode ? performWorkOnRootViaSchedulerTask.bind(null, root3) : null;
15362      }
15363      function performSyncWorkOnRoot(root3, lanes) {
15364        if (flushPendingEffects()) return null;
15365        currentUpdateIsNested = nestedUpdateScheduled;
15366        nestedUpdateScheduled = false;
15367        performWorkOnRoot(root3, lanes, true);
15368      }
15369      function cancelCallback(callbackNode) {
15370        callbackNode !== fakeActCallbackNode && null !== callbackNode && cancelCallback$1(callbackNode);
15371      }
15372      function scheduleImmediateRootScheduleTask() {
15373        null !== ReactSharedInternals.actQueue && ReactSharedInternals.actQueue.push(function() {
15374          processRootScheduleInMicrotask();
15375          return null;
15376        });
15377        scheduleMicrotask(function() {
15378          (executionContext & (RenderContext | CommitContext)) !== NoContext ? scheduleCallback$3(
15379            ImmediatePriority,
15380            processRootScheduleInImmediateTask
15381          ) : processRootScheduleInMicrotask();
15382        });
15383      }
15384      function requestTransitionLane() {
15385        if (0 === currentEventTransitionLane) {
15386          var actionScopeLane = currentEntangledLane;
15387          0 === actionScopeLane && (actionScopeLane = nextTransitionUpdateLane, nextTransitionUpdateLane <<= 1, 0 === (nextTransitionUpdateLane & 261888) && (nextTransitionUpdateLane = 256));
15388          currentEventTransitionLane = actionScopeLane;
15389        }
15390        return currentEventTransitionLane;
15391      }
15392      function coerceFormActionProp(actionProp) {
15393        if (null == actionProp || "symbol" === typeof actionProp || "boolean" === typeof actionProp)
15394          return null;
15395        if ("function" === typeof actionProp) return actionProp;
15396        checkAttributeStringCoercion(actionProp, "action");
15397        return sanitizeURL("" + actionProp);
15398      }
15399      function createFormDataWithSubmitter(form, submitter2) {
15400        var temp = submitter2.ownerDocument.createElement("input");
15401        temp.name = submitter2.name;
15402        temp.value = submitter2.value;
15403        form.id && temp.setAttribute("form", form.id);
15404        submitter2.parentNode.insertBefore(temp, submitter2);
15405        form = new FormData(form);
15406        temp.parentNode.removeChild(temp);
15407        return form;
15408      }
15409      function extractEvents$1(dispatchQueue, domEventName, maybeTargetInst, nativeEvent, nativeEventTarget) {
15410        if ("submit" === domEventName && maybeTargetInst && maybeTargetInst.stateNode === nativeEventTarget) {
15411          var action = coerceFormActionProp(
15412            (nativeEventTarget[internalPropsKey] || null).action
15413          ), submitter2 = nativeEvent.submitter;
15414          submitter2 && (domEventName = (domEventName = submitter2[internalPropsKey] || null) ? coerceFormActionProp(domEventName.formAction) : submitter2.getAttribute("formAction"), null !== domEventName && (action = domEventName, submitter2 = null));
15415          var event = new SyntheticEvent(
15416            "action",
15417            "action",
15418            null,
15419            nativeEvent,
15420            nativeEventTarget
15421          );
15422          dispatchQueue.push({
15423            event,
15424            listeners: [
15425              {
15426                instance: null,
15427                listener: function() {
15428                  if (nativeEvent.defaultPrevented) {
15429                    if (0 !== currentEventTransitionLane) {
15430                      var formData = submitter2 ? createFormDataWithSubmitter(
15431                        nativeEventTarget,
15432                        submitter2
15433                      ) : new FormData(nativeEventTarget), pendingState = {
15434                        pending: true,
15435                        data: formData,
15436                        method: nativeEventTarget.method,
15437                        action
15438                      };
15439                      Object.freeze(pendingState);
15440                      startHostTransition(
15441                        maybeTargetInst,
15442                        pendingState,
15443                        null,
15444                        formData
15445                      );
15446                    }
15447                  } else
15448                    "function" === typeof action && (event.preventDefault(), formData = submitter2 ? createFormDataWithSubmitter(
15449                      nativeEventTarget,
15450                      submitter2
15451                    ) : new FormData(nativeEventTarget), pendingState = {
15452                      pending: true,
15453                      data: formData,
15454                      method: nativeEventTarget.method,
15455                      action
15456                    }, Object.freeze(pendingState), startHostTransition(
15457                      maybeTargetInst,
15458                      pendingState,
15459                      action,
15460                      formData
15461                    ));
15462                },
15463                currentTarget: nativeEventTarget
15464              }
15465            ]
15466          });
15467        }
15468      }
15469      function executeDispatch(event, listener, currentTarget) {
15470        event.currentTarget = currentTarget;
15471        try {
15472          listener(event);
15473        } catch (error2) {
15474          reportGlobalError(error2);
15475        }
15476        event.currentTarget = null;
15477      }
15478      function processDispatchQueue(dispatchQueue, eventSystemFlags) {
15479        eventSystemFlags = 0 !== (eventSystemFlags & 4);
15480        for (var i3 = 0; i3 < dispatchQueue.length; i3++) {
15481          var _dispatchQueue$i = dispatchQueue[i3];
15482          a: {
15483            var previousInstance = void 0, event = _dispatchQueue$i.event;
15484            _dispatchQueue$i = _dispatchQueue$i.listeners;
15485            if (eventSystemFlags)
15486              for (var i$jscomp$0 = _dispatchQueue$i.length - 1; 0 <= i$jscomp$0; i$jscomp$0--) {
15487                var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0], instance = _dispatchListeners$i.instance, currentTarget = _dispatchListeners$i.currentTarget;
15488                _dispatchListeners$i = _dispatchListeners$i.listener;
15489                if (instance !== previousInstance && event.isPropagationStopped())
15490                  break a;
15491                null !== instance ? runWithFiberInDEV(
15492                  instance,
15493                  executeDispatch,
15494                  event,
15495                  _dispatchListeners$i,
15496                  currentTarget
15497                ) : executeDispatch(event, _dispatchListeners$i, currentTarget);
15498                previousInstance = instance;
15499              }
15500            else
15501              for (i$jscomp$0 = 0; i$jscomp$0 < _dispatchQueue$i.length; i$jscomp$0++) {
15502                _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];
15503                instance = _dispatchListeners$i.instance;
15504                currentTarget = _dispatchListeners$i.currentTarget;
15505                _dispatchListeners$i = _dispatchListeners$i.listener;
15506                if (instance !== previousInstance && event.isPropagationStopped())
15507                  break a;
15508                null !== instance ? runWithFiberInDEV(
15509                  instance,
15510                  executeDispatch,
15511                  event,
15512                  _dispatchListeners$i,
15513                  currentTarget
15514                ) : executeDispatch(event, _dispatchListeners$i, currentTarget);
15515                previousInstance = instance;
15516              }
15517          }
15518        }
15519      }
15520      function listenToNonDelegatedEvent(domEventName, targetElement) {
15521        nonDelegatedEvents.has(domEventName) || console.error(
15522          'Did not expect a listenToNonDelegatedEvent() call for "%s". This is a bug in React. Please file an issue.',
15523          domEventName
15524        );
15525        var listenerSet = targetElement[internalEventHandlersKey];
15526        void 0 === listenerSet && (listenerSet = targetElement[internalEventHandlersKey] = /* @__PURE__ */ new Set());
15527        var listenerSetKey = domEventName + "__bubble";
15528        listenerSet.has(listenerSetKey) || (addTrappedEventListener(targetElement, domEventName, 2, false), listenerSet.add(listenerSetKey));
15529      }
15530      function listenToNativeEvent(domEventName, isCapturePhaseListener, target) {
15531        nonDelegatedEvents.has(domEventName) && !isCapturePhaseListener && console.error(
15532          'Did not expect a listenToNativeEvent() call for "%s" in the bubble phase. This is a bug in React. Please file an issue.',
15533          domEventName
15534        );
15535        var eventSystemFlags = 0;
15536        isCapturePhaseListener && (eventSystemFlags |= 4);
15537        addTrappedEventListener(
15538          target,
15539          domEventName,
15540          eventSystemFlags,
15541          isCapturePhaseListener
15542        );
15543      }
15544      function listenToAllSupportedEvents(rootContainerElement) {
15545        if (!rootContainerElement[listeningMarker]) {
15546          rootContainerElement[listeningMarker] = true;
15547          allNativeEvents.forEach(function(domEventName) {
15548            "selectionchange" !== domEventName && (nonDelegatedEvents.has(domEventName) || listenToNativeEvent(domEventName, false, rootContainerElement), listenToNativeEvent(domEventName, true, rootContainerElement));
15549          });
15550          var ownerDocument = 9 === rootContainerElement.nodeType ? rootContainerElement : rootContainerElement.ownerDocument;
15551          null === ownerDocument || ownerDocument[listeningMarker] || (ownerDocument[listeningMarker] = true, listenToNativeEvent("selectionchange", false, ownerDocument));
15552        }
15553      }
15554      function addTrappedEventListener(targetContainer, domEventName, eventSystemFlags, isCapturePhaseListener) {
15555        switch (getEventPriority(domEventName)) {
15556          case DiscreteEventPriority:
15557            var listenerWrapper = dispatchDiscreteEvent;
15558            break;
15559          case ContinuousEventPriority:
15560            listenerWrapper = dispatchContinuousEvent;
15561            break;
15562          default:
15563            listenerWrapper = dispatchEvent;
15564        }
15565        eventSystemFlags = listenerWrapper.bind(
15566          null,
15567          domEventName,
15568          eventSystemFlags,
15569          targetContainer
15570        );
15571        listenerWrapper = void 0;
15572        !passiveBrowserEventsSupported || "touchstart" !== domEventName && "touchmove" !== domEventName && "wheel" !== domEventName || (listenerWrapper = true);
15573        isCapturePhaseListener ? void 0 !== listenerWrapper ? targetContainer.addEventListener(domEventName, eventSystemFlags, {
15574          capture: true,
15575          passive: listenerWrapper
15576        }) : targetContainer.addEventListener(domEventName, eventSystemFlags, true) : void 0 !== listenerWrapper ? targetContainer.addEventListener(domEventName, eventSystemFlags, {
15577          passive: listenerWrapper
15578        }) : targetContainer.addEventListener(
15579          domEventName,
15580          eventSystemFlags,
15581          false
15582        );
15583      }
15584      function dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, targetInst$jscomp$0, targetContainer) {
15585        var ancestorInst = targetInst$jscomp$0;
15586        if (0 === (eventSystemFlags & 1) && 0 === (eventSystemFlags & 2) && null !== targetInst$jscomp$0)
15587          a: for (; ; ) {
15588            if (null === targetInst$jscomp$0) return;
15589            var nodeTag = targetInst$jscomp$0.tag;
15590            if (3 === nodeTag || 4 === nodeTag) {
15591              var container = targetInst$jscomp$0.stateNode.containerInfo;
15592              if (container === targetContainer) break;
15593              if (4 === nodeTag)
15594                for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {
15595                  var grandTag = nodeTag.tag;
15596                  if ((3 === grandTag || 4 === grandTag) && nodeTag.stateNode.containerInfo === targetContainer)
15597                    return;
15598                  nodeTag = nodeTag.return;
15599                }
15600              for (; null !== container; ) {
15601                nodeTag = getClosestInstanceFromNode(container);
15602                if (null === nodeTag) return;
15603                grandTag = nodeTag.tag;
15604                if (5 === grandTag || 6 === grandTag || 26 === grandTag || 27 === grandTag) {
15605                  targetInst$jscomp$0 = ancestorInst = nodeTag;
15606                  continue a;
15607                }
15608                container = container.parentNode;
15609              }
15610            }
15611            targetInst$jscomp$0 = targetInst$jscomp$0.return;
15612          }
15613        batchedUpdates$1(function() {
15614          var targetInst = ancestorInst, nativeEventTarget = getEventTarget(nativeEvent), dispatchQueue = [];
15615          a: {
15616            var reactName = topLevelEventsToReactNames.get(domEventName);
15617            if (void 0 !== reactName) {
15618              var SyntheticEventCtor = SyntheticEvent, reactEventType = domEventName;
15619              switch (domEventName) {
15620                case "keypress":
15621                  if (0 === getEventCharCode(nativeEvent)) break a;
15622                case "keydown":
15623                case "keyup":
15624                  SyntheticEventCtor = SyntheticKeyboardEvent;
15625                  break;
15626                case "focusin":
15627                  reactEventType = "focus";
15628                  SyntheticEventCtor = SyntheticFocusEvent;
15629                  break;
15630                case "focusout":
15631                  reactEventType = "blur";
15632                  SyntheticEventCtor = SyntheticFocusEvent;
15633                  break;
15634                case "beforeblur":
15635                case "afterblur":
15636                  SyntheticEventCtor = SyntheticFocusEvent;
15637                  break;
15638                case "click":
15639                  if (2 === nativeEvent.button) break a;
15640                case "auxclick":
15641                case "dblclick":
15642                case "mousedown":
15643                case "mousemove":
15644                case "mouseup":
15645                case "mouseout":
15646                case "mouseover":
15647                case "contextmenu":
15648                  SyntheticEventCtor = SyntheticMouseEvent;
15649                  break;
15650                case "drag":
15651                case "dragend":
15652                case "dragenter":
15653                case "dragexit":
15654                case "dragleave":
15655                case "dragover":
15656                case "dragstart":
15657                case "drop":
15658                  SyntheticEventCtor = SyntheticDragEvent;
15659                  break;
15660                case "touchcancel":
15661                case "touchend":
15662                case "touchmove":
15663                case "touchstart":
15664                  SyntheticEventCtor = SyntheticTouchEvent;
15665                  break;
15666                case ANIMATION_END:
15667                case ANIMATION_ITERATION:
15668                case ANIMATION_START:
15669                  SyntheticEventCtor = SyntheticAnimationEvent;
15670                  break;
15671                case TRANSITION_END:
15672                  SyntheticEventCtor = SyntheticTransitionEvent;
15673                  break;
15674                case "scroll":
15675                case "scrollend":
15676                  SyntheticEventCtor = SyntheticUIEvent;
15677                  break;
15678                case "wheel":
15679                  SyntheticEventCtor = SyntheticWheelEvent;
15680                  break;
15681                case "copy":
15682                case "cut":
15683                case "paste":
15684                  SyntheticEventCtor = SyntheticClipboardEvent;
15685                  break;
15686                case "gotpointercapture":
15687                case "lostpointercapture":
15688                case "pointercancel":
15689                case "pointerdown":
15690                case "pointermove":
15691                case "pointerout":
15692                case "pointerover":
15693                case "pointerup":
15694                  SyntheticEventCtor = SyntheticPointerEvent;
15695                  break;
15696                case "toggle":
15697                case "beforetoggle":
15698                  SyntheticEventCtor = SyntheticToggleEvent;
15699              }
15700              var inCapturePhase = 0 !== (eventSystemFlags & 4), accumulateTargetOnly = !inCapturePhase && ("scroll" === domEventName || "scrollend" === domEventName), reactEventName = inCapturePhase ? null !== reactName ? reactName + "Capture" : null : reactName;
15701              inCapturePhase = [];
15702              for (var instance = targetInst, lastHostComponent; null !== instance; ) {
15703                var _instance2 = instance;
15704                lastHostComponent = _instance2.stateNode;
15705                _instance2 = _instance2.tag;
15706                5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2 || null === lastHostComponent || null === reactEventName || (_instance2 = getListener(instance, reactEventName), null != _instance2 && inCapturePhase.push(
15707                  createDispatchListener(
15708                    instance,
15709                    _instance2,
15710                    lastHostComponent
15711                  )
15712                ));
15713                if (accumulateTargetOnly) break;
15714                instance = instance.return;
15715              }
15716              0 < inCapturePhase.length && (reactName = new SyntheticEventCtor(
15717                reactName,
15718                reactEventType,
15719                null,
15720                nativeEvent,
15721                nativeEventTarget
15722              ), dispatchQueue.push({
15723                event: reactName,
15724                listeners: inCapturePhase
15725              }));
15726            }
15727          }
15728          if (0 === (eventSystemFlags & 7)) {
15729            a: {
15730              reactName = "mouseover" === domEventName || "pointerover" === domEventName;
15731              SyntheticEventCtor = "mouseout" === domEventName || "pointerout" === domEventName;
15732              if (reactName && nativeEvent !== currentReplayingEvent && (reactEventType = nativeEvent.relatedTarget || nativeEvent.fromElement) && (getClosestInstanceFromNode(reactEventType) || reactEventType[internalContainerInstanceKey]))
15733                break a;
15734              if (SyntheticEventCtor || reactName) {
15735                reactName = nativeEventTarget.window === nativeEventTarget ? nativeEventTarget : (reactName = nativeEventTarget.ownerDocument) ? reactName.defaultView || reactName.parentWindow : window;
15736                if (SyntheticEventCtor) {
15737                  if (reactEventType = nativeEvent.relatedTarget || nativeEvent.toElement, SyntheticEventCtor = targetInst, reactEventType = reactEventType ? getClosestInstanceFromNode(reactEventType) : null, null !== reactEventType && (accumulateTargetOnly = getNearestMountedFiber(reactEventType), inCapturePhase = reactEventType.tag, reactEventType !== accumulateTargetOnly || 5 !== inCapturePhase && 27 !== inCapturePhase && 6 !== inCapturePhase))
15738                    reactEventType = null;
15739                } else SyntheticEventCtor = null, reactEventType = targetInst;
15740                if (SyntheticEventCtor !== reactEventType) {
15741                  inCapturePhase = SyntheticMouseEvent;
15742                  _instance2 = "onMouseLeave";
15743                  reactEventName = "onMouseEnter";
15744                  instance = "mouse";
15745                  if ("pointerout" === domEventName || "pointerover" === domEventName)
15746                    inCapturePhase = SyntheticPointerEvent, _instance2 = "onPointerLeave", reactEventName = "onPointerEnter", instance = "pointer";
15747                  accumulateTargetOnly = null == SyntheticEventCtor ? reactName : getNodeFromInstance(SyntheticEventCtor);
15748                  lastHostComponent = null == reactEventType ? reactName : getNodeFromInstance(reactEventType);
15749                  reactName = new inCapturePhase(
15750                    _instance2,
15751                    instance + "leave",
15752                    SyntheticEventCtor,
15753                    nativeEvent,
15754                    nativeEventTarget
15755                  );
15756                  reactName.target = accumulateTargetOnly;
15757                  reactName.relatedTarget = lastHostComponent;
15758                  _instance2 = null;
15759                  getClosestInstanceFromNode(nativeEventTarget) === targetInst && (inCapturePhase = new inCapturePhase(
15760                    reactEventName,
15761                    instance + "enter",
15762                    reactEventType,
15763                    nativeEvent,
15764                    nativeEventTarget
15765                  ), inCapturePhase.target = lastHostComponent, inCapturePhase.relatedTarget = accumulateTargetOnly, _instance2 = inCapturePhase);
15766                  accumulateTargetOnly = _instance2;
15767                  if (SyntheticEventCtor && reactEventType)
15768                    b: {
15769                      inCapturePhase = getParent;
15770                      reactEventName = SyntheticEventCtor;
15771                      instance = reactEventType;
15772                      lastHostComponent = 0;
15773                      for (_instance2 = reactEventName; _instance2; _instance2 = inCapturePhase(_instance2))
15774                        lastHostComponent++;
15775                      _instance2 = 0;
15776                      for (var tempB = instance; tempB; tempB = inCapturePhase(tempB))
15777                        _instance2++;
15778                      for (; 0 < lastHostComponent - _instance2; )
15779                        reactEventName = inCapturePhase(reactEventName), lastHostComponent--;
15780                      for (; 0 < _instance2 - lastHostComponent; )
15781                        instance = inCapturePhase(instance), _instance2--;
15782                      for (; lastHostComponent--; ) {
15783                        if (reactEventName === instance || null !== instance && reactEventName === instance.alternate) {
15784                          inCapturePhase = reactEventName;
15785                          break b;
15786                        }
15787                        reactEventName = inCapturePhase(reactEventName);
15788                        instance = inCapturePhase(instance);
15789                      }
15790                      inCapturePhase = null;
15791                    }
15792                  else inCapturePhase = null;
15793                  null !== SyntheticEventCtor && accumulateEnterLeaveListenersForEvent(
15794                    dispatchQueue,
15795                    reactName,
15796                    SyntheticEventCtor,
15797                    inCapturePhase,
15798                    false
15799                  );
15800                  null !== reactEventType && null !== accumulateTargetOnly && accumulateEnterLeaveListenersForEvent(
15801                    dispatchQueue,
15802                    accumulateTargetOnly,
15803                    reactEventType,
15804                    inCapturePhase,
15805                    true
15806                  );
15807                }
15808              }
15809            }
15810            a: {
15811              reactName = targetInst ? getNodeFromInstance(targetInst) : window;
15812              SyntheticEventCtor = reactName.nodeName && reactName.nodeName.toLowerCase();
15813              if ("select" === SyntheticEventCtor || "input" === SyntheticEventCtor && "file" === reactName.type)
15814                var getTargetInstFunc = getTargetInstForChangeEvent;
15815              else if (isTextInputElement(reactName))
15816                if (isInputEventSupported)
15817                  getTargetInstFunc = getTargetInstForInputOrChangeEvent;
15818                else {
15819                  getTargetInstFunc = getTargetInstForInputEventPolyfill;
15820                  var handleEventFunc = handleEventsForInputEventPolyfill;
15821                }
15822              else
15823                SyntheticEventCtor = reactName.nodeName, !SyntheticEventCtor || "input" !== SyntheticEventCtor.toLowerCase() || "checkbox" !== reactName.type && "radio" !== reactName.type ? targetInst && isCustomElement(targetInst.elementType) && (getTargetInstFunc = getTargetInstForChangeEvent) : getTargetInstFunc = getTargetInstForClickEvent;
15824              if (getTargetInstFunc && (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))) {
15825                createAndAccumulateChangeEvent(
15826                  dispatchQueue,
15827                  getTargetInstFunc,
15828                  nativeEvent,
15829                  nativeEventTarget
15830                );
15831                break a;
15832              }
15833              handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);
15834              "focusout" === domEventName && targetInst && "number" === reactName.type && null != targetInst.memoizedProps.value && setDefaultValue(reactName, "number", reactName.value);
15835            }
15836            handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;
15837            switch (domEventName) {
15838              case "focusin":
15839                if (isTextInputElement(handleEventFunc) || "true" === handleEventFunc.contentEditable)
15840                  activeElement = handleEventFunc, activeElementInst = targetInst, lastSelection = null;
15841                break;
15842              case "focusout":
15843                lastSelection = activeElementInst = activeElement = null;
15844                break;
15845              case "mousedown":
15846                mouseDown = true;
15847                break;
15848              case "contextmenu":
15849              case "mouseup":
15850              case "dragend":
15851                mouseDown = false;
15852                constructSelectEvent(
15853                  dispatchQueue,
15854                  nativeEvent,
15855                  nativeEventTarget
15856                );
15857                break;
15858              case "selectionchange":
15859                if (skipSelectionChangeEvent) break;
15860              case "keydown":
15861              case "keyup":
15862                constructSelectEvent(
15863                  dispatchQueue,
15864                  nativeEvent,
15865                  nativeEventTarget
15866                );
15867            }
15868            var fallbackData;
15869            if (canUseCompositionEvent)
15870              b: {
15871                switch (domEventName) {
15872                  case "compositionstart":
15873                    var eventType = "onCompositionStart";
15874                    break b;
15875                  case "compositionend":
15876                    eventType = "onCompositionEnd";
15877                    break b;
15878                  case "compositionupdate":
15879                    eventType = "onCompositionUpdate";
15880                    break b;
15881                }
15882                eventType = void 0;
15883              }
15884            else
15885              isComposing ? isFallbackCompositionEnd(domEventName, nativeEvent) && (eventType = "onCompositionEnd") : "keydown" === domEventName && nativeEvent.keyCode === START_KEYCODE && (eventType = "onCompositionStart");
15886            eventType && (useFallbackCompositionData && "ko" !== nativeEvent.locale && (isComposing || "onCompositionStart" !== eventType ? "onCompositionEnd" === eventType && isComposing && (fallbackData = getData()) : (root2 = nativeEventTarget, startText = "value" in root2 ? root2.value : root2.textContent, isComposing = true)), handleEventFunc = accumulateTwoPhaseListeners(
15887              targetInst,
15888              eventType
15889            ), 0 < handleEventFunc.length && (eventType = new SyntheticCompositionEvent(
15890              eventType,
15891              domEventName,
15892              null,
15893              nativeEvent,
15894              nativeEventTarget
15895            ), dispatchQueue.push({
15896              event: eventType,
15897              listeners: handleEventFunc
15898            }), fallbackData ? eventType.data = fallbackData : (fallbackData = getDataFromCustomEvent(nativeEvent), null !== fallbackData && (eventType.data = fallbackData))));
15899            if (fallbackData = canUseTextInputEvent ? getNativeBeforeInputChars(domEventName, nativeEvent) : getFallbackBeforeInputChars(domEventName, nativeEvent))
15900              eventType = accumulateTwoPhaseListeners(
15901                targetInst,
15902                "onBeforeInput"
15903              ), 0 < eventType.length && (handleEventFunc = new SyntheticInputEvent(
15904                "onBeforeInput",
15905                "beforeinput",
15906                null,
15907                nativeEvent,
15908                nativeEventTarget
15909              ), dispatchQueue.push({
15910                event: handleEventFunc,
15911                listeners: eventType
15912              }), handleEventFunc.data = fallbackData);
15913            extractEvents$1(
15914              dispatchQueue,
15915              domEventName,
15916              targetInst,
15917              nativeEvent,
15918              nativeEventTarget
15919            );
15920          }
15921          processDispatchQueue(dispatchQueue, eventSystemFlags);
15922        });
15923      }
15924      function createDispatchListener(instance, listener, currentTarget) {
15925        return {
15926          instance,
15927          listener,
15928          currentTarget
15929        };
15930      }
15931      function accumulateTwoPhaseListeners(targetFiber, reactName) {
15932        for (var captureName = reactName + "Capture", listeners = []; null !== targetFiber; ) {
15933          var _instance3 = targetFiber, stateNode = _instance3.stateNode;
15934          _instance3 = _instance3.tag;
15935          5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3 || null === stateNode || (_instance3 = getListener(targetFiber, captureName), null != _instance3 && listeners.unshift(
15936            createDispatchListener(targetFiber, _instance3, stateNode)
15937          ), _instance3 = getListener(targetFiber, reactName), null != _instance3 && listeners.push(
15938            createDispatchListener(targetFiber, _instance3, stateNode)
15939          ));
15940          if (3 === targetFiber.tag) return listeners;
15941          targetFiber = targetFiber.return;
15942        }
15943        return [];
15944      }
15945      function getParent(inst) {
15946        if (null === inst) return null;
15947        do
15948          inst = inst.return;
15949        while (inst && 5 !== inst.tag && 27 !== inst.tag);
15950        return inst ? inst : null;
15951      }
15952      function accumulateEnterLeaveListenersForEvent(dispatchQueue, event, target, common, inCapturePhase) {
15953        for (var registrationName = event._reactName, listeners = []; null !== target && target !== common; ) {
15954          var _instance4 = target, alternate = _instance4.alternate, stateNode = _instance4.stateNode;
15955          _instance4 = _instance4.tag;
15956          if (null !== alternate && alternate === common) break;
15957          5 !== _instance4 && 26 !== _instance4 && 27 !== _instance4 || null === stateNode || (alternate = stateNode, inCapturePhase ? (stateNode = getListener(target, registrationName), null != stateNode && listeners.unshift(
15958            createDispatchListener(target, stateNode, alternate)
15959          )) : inCapturePhase || (stateNode = getListener(target, registrationName), null != stateNode && listeners.push(
15960            createDispatchListener(target, stateNode, alternate)
15961          )));
15962          target = target.return;
15963        }
15964        0 !== listeners.length && dispatchQueue.push({ event, listeners });
15965      }
15966      function validatePropertiesInDevelopment(type, props) {
15967        validateProperties$2(type, props);
15968        "input" !== type && "textarea" !== type && "select" !== type || null == props || null !== props.value || didWarnValueNull || (didWarnValueNull = true, "select" === type && props.multiple ? console.error(
15969          "`value` prop on `%s` should not be null. Consider using an empty array when `multiple` is set to `true` to clear the component or `undefined` for uncontrolled components.",
15970          type
15971        ) : console.error(
15972          "`value` prop on `%s` should not be null. Consider using an empty string to clear the component or `undefined` for uncontrolled components.",
15973          type
15974        ));
15975        var eventRegistry = {
15976          registrationNameDependencies,
15977          possibleRegistrationNames
15978        };
15979        isCustomElement(type) || "string" === typeof props.is || warnUnknownProperties(type, props, eventRegistry);
15980        props.contentEditable && !props.suppressContentEditableWarning && null != props.children && console.error(
15981          "A component is `contentEditable` and contains `children` managed by React. It is now your responsibility to guarantee that none of those nodes are unexpectedly modified or duplicated. This is probably not intentional."
15982        );
15983      }
15984      function warnForPropDifference(propName, serverValue, clientValue, serverDifferences) {
15985        serverValue !== clientValue && (clientValue = normalizeMarkupForTextOrAttribute(clientValue), normalizeMarkupForTextOrAttribute(serverValue) !== clientValue && (serverDifferences[propName] = serverValue));
15986      }
15987      function warnForExtraAttributes(domElement, attributeNames, serverDifferences) {
15988        attributeNames.forEach(function(attributeName) {
15989          serverDifferences[getPropNameFromAttributeName(attributeName)] = "style" === attributeName ? getStylesObjectFromElement(domElement) : domElement.getAttribute(attributeName);
15990        });
15991      }
15992      function warnForInvalidEventListener(registrationName, listener) {
15993        false === listener ? console.error(
15994          "Expected `%s` listener to be a function, instead got `false`.\n\nIf you used to conditionally omit it with %s={condition && value}, pass %s={condition ? value : undefined} instead.",
15995          registrationName,
15996          registrationName,
15997          registrationName
15998        ) : console.error(
15999          "Expected `%s` listener to be a function, instead got a value of `%s` type.",
16000          registrationName,
16001          typeof listener
16002        );
16003      }
16004      function normalizeHTML(parent, html) {
16005        parent = parent.namespaceURI === MATH_NAMESPACE || parent.namespaceURI === SVG_NAMESPACE ? parent.ownerDocument.createElementNS(
16006          parent.namespaceURI,
16007          parent.tagName
16008        ) : parent.ownerDocument.createElement(parent.tagName);
16009        parent.innerHTML = html;
16010        return parent.innerHTML;
16011      }
16012      function normalizeMarkupForTextOrAttribute(markup) {
16013        willCoercionThrow(markup) && (console.error(
16014          "The provided HTML markup uses a value of unsupported type %s. This value must be coerced to a string before using it here.",
16015          typeName(markup)
16016        ), testStringCoercion(markup));
16017        return ("string" === typeof markup ? markup : "" + markup).replace(NORMALIZE_NEWLINES_REGEX, "\n").replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, "");
16018      }
16019      function checkForUnmatchedText(serverText, clientText) {
16020        clientText = normalizeMarkupForTextOrAttribute(clientText);
16021        return normalizeMarkupForTextOrAttribute(serverText) === clientText ? true : false;
16022      }
16023      function setProp(domElement, tag, key, value, props, prevValue) {
16024        switch (key) {
16025          case "children":
16026            if ("string" === typeof value)
16027              validateTextNesting(value, tag, false), "body" === tag || "textarea" === tag && "" === value || setTextContent(domElement, value);
16028            else if ("number" === typeof value || "bigint" === typeof value)
16029              validateTextNesting("" + value, tag, false), "body" !== tag && setTextContent(domElement, "" + value);
16030            break;
16031          case "className":
16032            setValueForKnownAttribute(domElement, "class", value);
16033            break;
16034          case "tabIndex":
16035            setValueForKnownAttribute(domElement, "tabindex", value);
16036            break;
16037          case "dir":
16038          case "role":
16039          case "viewBox":
16040          case "width":
16041          case "height":
16042            setValueForKnownAttribute(domElement, key, value);
16043            break;
16044          case "style":
16045            setValueForStyles(domElement, value, prevValue);
16046            break;
16047          case "data":
16048            if ("object" !== tag) {
16049              setValueForKnownAttribute(domElement, "data", value);
16050              break;
16051            }
16052          case "src":
16053          case "href":
16054            if ("" === value && ("a" !== tag || "href" !== key)) {
16055              "src" === key ? console.error(
16056                'An empty string ("") was passed to the %s attribute. This may cause the browser to download the whole page again over the network. To fix this, either do not render the element at all or pass null to %s instead of an empty string.',
16057                key,
16058                key
16059              ) : console.error(
16060                'An empty string ("") was passed to the %s attribute. To fix this, either do not render the element at all or pass null to %s instead of an empty string.',
16061                key,
16062                key
16063              );
16064              domElement.removeAttribute(key);
16065              break;
16066            }
16067            if (null == value || "function" === typeof value || "symbol" === typeof value || "boolean" === typeof value) {
16068              domElement.removeAttribute(key);
16069              break;
16070            }
16071            checkAttributeStringCoercion(value, key);
16072            value = sanitizeURL("" + value);
16073            domElement.setAttribute(key, value);
16074            break;
16075          case "action":
16076          case "formAction":
16077            null != value && ("form" === tag ? "formAction" === key ? console.error(
16078              "You can only pass the formAction prop to <input> or <button>. Use the action prop on <form>."
16079            ) : "function" === typeof value && (null == props.encType && null == props.method || didWarnFormActionMethod || (didWarnFormActionMethod = true, console.error(
16080              "Cannot specify a encType or method for a form that specifies a function as the action. React provides those automatically. They will get overridden."
16081            )), null == props.target || didWarnFormActionTarget || (didWarnFormActionTarget = true, console.error(
16082              "Cannot specify a target for a form that specifies a function as the action. The function will always be executed in the same window."
16083            ))) : "input" === tag || "button" === tag ? "action" === key ? console.error(
16084              "You can only pass the action prop to <form>. Use the formAction prop on <input> or <button>."
16085            ) : "input" !== tag || "submit" === props.type || "image" === props.type || didWarnFormActionType ? "button" !== tag || null == props.type || "submit" === props.type || didWarnFormActionType ? "function" === typeof value && (null == props.name || didWarnFormActionName || (didWarnFormActionName = true, console.error(
16086              'Cannot specify a "name" prop for a button that specifies a function as a formAction. React needs it to encode which action should be invoked. It will get overridden.'
16087            )), null == props.formEncType && null == props.formMethod || didWarnFormActionMethod || (didWarnFormActionMethod = true, console.error(
16088              "Cannot specify a formEncType or formMethod for a button that specifies a function as a formAction. React provides those automatically. They will get overridden."
16089            )), null == props.formTarget || didWarnFormActionTarget || (didWarnFormActionTarget = true, console.error(
16090              "Cannot specify a formTarget for a button that specifies a function as a formAction. The function will always be executed in the same window."
16091            ))) : (didWarnFormActionType = true, console.error(
16092              'A button can only specify a formAction along with type="submit" or no type.'
16093            )) : (didWarnFormActionType = true, console.error(
16094              'An input can only specify a formAction along with type="submit" or type="image".'
16095            )) : "action" === key ? console.error(
16096              "You can only pass the action prop to <form>."
16097            ) : console.error(
16098              "You can only pass the formAction prop to <input> or <button>."
16099            ));
16100            if ("function" === typeof value) {
16101              domElement.setAttribute(
16102                key,
16103                "javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')"
16104              );
16105              break;
16106            } else
16107              "function" === typeof prevValue && ("formAction" === key ? ("input" !== tag && setProp(domElement, tag, "name", props.name, props, null), setProp(
16108                domElement,
16109                tag,
16110                "formEncType",
16111                props.formEncType,
16112                props,
16113                null
16114              ), setProp(
16115                domElement,
16116                tag,
16117                "formMethod",
16118                props.formMethod,
16119                props,
16120                null
16121              ), setProp(
16122                domElement,
16123                tag,
16124                "formTarget",
16125                props.formTarget,
16126                props,
16127                null
16128              )) : (setProp(
16129                domElement,
16130                tag,
16131                "encType",
16132                props.encType,
16133                props,
16134                null
16135              ), setProp(domElement, tag, "method", props.method, props, null), setProp(
16136                domElement,
16137                tag,
16138                "target",
16139                props.target,
16140                props,
16141                null
16142              )));
16143            if (null == value || "symbol" === typeof value || "boolean" === typeof value) {
16144              domElement.removeAttribute(key);
16145              break;
16146            }
16147            checkAttributeStringCoercion(value, key);
16148            value = sanitizeURL("" + value);
16149            domElement.setAttribute(key, value);
16150            break;
16151          case "onClick":
16152            null != value && ("function" !== typeof value && warnForInvalidEventListener(key, value), domElement.onclick = noop$1);
16153            break;
16154          case "onScroll":
16155            null != value && ("function" !== typeof value && warnForInvalidEventListener(key, value), listenToNonDelegatedEvent("scroll", domElement));
16156            break;
16157          case "onScrollEnd":
16158            null != value && ("function" !== typeof value && warnForInvalidEventListener(key, value), listenToNonDelegatedEvent("scrollend", domElement));
16159            break;
16160          case "dangerouslySetInnerHTML":
16161            if (null != value) {
16162              if ("object" !== typeof value || !("__html" in value))
16163                throw Error(
16164                  "`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://react.dev/link/dangerously-set-inner-html for more information."
16165                );
16166              key = value.__html;
16167              if (null != key) {
16168                if (null != props.children)
16169                  throw Error(
16170                    "Can only set one of `children` or `props.dangerouslySetInnerHTML`."
16171                  );
16172                domElement.innerHTML = key;
16173              }
16174            }
16175            break;
16176          case "multiple":
16177            domElement.multiple = value && "function" !== typeof value && "symbol" !== typeof value;
16178            break;
16179          case "muted":
16180            domElement.muted = value && "function" !== typeof value && "symbol" !== typeof value;
16181            break;
16182          case "suppressContentEditableWarning":
16183          case "suppressHydrationWarning":
16184          case "defaultValue":
16185          case "defaultChecked":
16186          case "innerHTML":
16187          case "ref":
16188            break;
16189          case "autoFocus":
16190            break;
16191          case "xlinkHref":
16192            if (null == value || "function" === typeof value || "boolean" === typeof value || "symbol" === typeof value) {
16193              domElement.removeAttribute("xlink:href");
16194              break;
16195            }
16196            checkAttributeStringCoercion(value, key);
16197            key = sanitizeURL("" + value);
16198            domElement.setAttributeNS(xlinkNamespace, "xlink:href", key);
16199            break;
16200          case "contentEditable":
16201          case "spellCheck":
16202          case "draggable":
16203          case "value":
16204          case "autoReverse":
16205          case "externalResourcesRequired":
16206          case "focusable":
16207          case "preserveAlpha":
16208            null != value && "function" !== typeof value && "symbol" !== typeof value ? (checkAttributeStringCoercion(value, key), domElement.setAttribute(key, "" + value)) : domElement.removeAttribute(key);
16209            break;
16210          case "inert":
16211            "" !== value || didWarnForNewBooleanPropsWithEmptyValue[key] || (didWarnForNewBooleanPropsWithEmptyValue[key] = true, console.error(
16212              "Received an empty string for a boolean attribute `%s`. This will treat the attribute as if it were false. Either pass `false` to silence this warning, or pass `true` if you used an empty string in earlier versions of React to indicate this attribute is true.",
16213              key
16214            ));
16215          case "allowFullScreen":
16216          case "async":
16217          case "autoPlay":
16218          case "controls":
16219          case "default":
16220          case "defer":
16221          case "disabled":
16222          case "disablePictureInPicture":
16223          case "disableRemotePlayback":
16224          case "formNoValidate":
16225          case "hidden":
16226          case "loop":
16227          case "noModule":
16228          case "noValidate":
16229          case "open":
16230          case "playsInline":
16231          case "readOnly":
16232          case "required":
16233          case "reversed":
16234          case "scoped":
16235          case "seamless":
16236          case "itemScope":
16237            value && "function" !== typeof value && "symbol" !== typeof value ? domElement.setAttribute(key, "") : domElement.removeAttribute(key);
16238            break;
16239          case "capture":
16240          case "download":
16241            true === value ? domElement.setAttribute(key, "") : false !== value && null != value && "function" !== typeof value && "symbol" !== typeof value ? (checkAttributeStringCoercion(value, key), domElement.setAttribute(key, value)) : domElement.removeAttribute(key);
16242            break;
16243          case "cols":
16244          case "rows":
16245          case "size":
16246          case "span":
16247            null != value && "function" !== typeof value && "symbol" !== typeof value && !isNaN(value) && 1 <= value ? (checkAttributeStringCoercion(value, key), domElement.setAttribute(key, value)) : domElement.removeAttribute(key);
16248            break;
16249          case "rowSpan":
16250          case "start":
16251            null == value || "function" === typeof value || "symbol" === typeof value || isNaN(value) ? domElement.removeAttribute(key) : (checkAttributeStringCoercion(value, key), domElement.setAttribute(key, value));
16252            break;
16253          case "popover":
16254            listenToNonDelegatedEvent("beforetoggle", domElement);
16255            listenToNonDelegatedEvent("toggle", domElement);
16256            setValueForAttribute(domElement, "popover", value);
16257            break;
16258          case "xlinkActuate":
16259            setValueForNamespacedAttribute(
16260              domElement,
16261              xlinkNamespace,
16262              "xlink:actuate",
16263              value
16264            );
16265            break;
16266          case "xlinkArcrole":
16267            setValueForNamespacedAttribute(
16268              domElement,
16269              xlinkNamespace,
16270              "xlink:arcrole",
16271              value
16272            );
16273            break;
16274          case "xlinkRole":
16275            setValueForNamespacedAttribute(
16276              domElement,
16277              xlinkNamespace,
16278              "xlink:role",
16279              value
16280            );
16281            break;
16282          case "xlinkShow":
16283            setValueForNamespacedAttribute(
16284              domElement,
16285              xlinkNamespace,
16286              "xlink:show",
16287              value
16288            );
16289            break;
16290          case "xlinkTitle":
16291            setValueForNamespacedAttribute(
16292              domElement,
16293              xlinkNamespace,
16294              "xlink:title",
16295              value
16296            );
16297            break;
16298          case "xlinkType":
16299            setValueForNamespacedAttribute(
16300              domElement,
16301              xlinkNamespace,
16302              "xlink:type",
16303              value
16304            );
16305            break;
16306          case "xmlBase":
16307            setValueForNamespacedAttribute(
16308              domElement,
16309              xmlNamespace,
16310              "xml:base",
16311              value
16312            );
16313            break;
16314          case "xmlLang":
16315            setValueForNamespacedAttribute(
16316              domElement,
16317              xmlNamespace,
16318              "xml:lang",
16319              value
16320            );
16321            break;
16322          case "xmlSpace":
16323            setValueForNamespacedAttribute(
16324              domElement,
16325              xmlNamespace,
16326              "xml:space",
16327              value
16328            );
16329            break;
16330          case "is":
16331            null != prevValue && console.error(
16332              'Cannot update the "is" prop after it has been initialized.'
16333            );
16334            setValueForAttribute(domElement, "is", value);
16335            break;
16336          case "innerText":
16337          case "textContent":
16338            break;
16339          case "popoverTarget":
16340            didWarnPopoverTargetObject || null == value || "object" !== typeof value || (didWarnPopoverTargetObject = true, console.error(
16341              "The `popoverTarget` prop expects the ID of an Element as a string. Received %s instead.",
16342              value
16343            ));
16344          default:
16345            !(2 < key.length) || "o" !== key[0] && "O" !== key[0] || "n" !== key[1] && "N" !== key[1] ? (key = getAttributeAlias(key), setValueForAttribute(domElement, key, value)) : registrationNameDependencies.hasOwnProperty(key) && null != value && "function" !== typeof value && warnForInvalidEventListener(key, value);
16346        }
16347      }
16348      function setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {
16349        switch (key) {
16350          case "style":
16351            setValueForStyles(domElement, value, prevValue);
16352            break;
16353          case "dangerouslySetInnerHTML":
16354            if (null != value) {
16355              if ("object" !== typeof value || !("__html" in value))
16356                throw Error(
16357                  "`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://react.dev/link/dangerously-set-inner-html for more information."
16358                );
16359              key = value.__html;
16360              if (null != key) {
16361                if (null != props.children)
16362                  throw Error(
16363                    "Can only set one of `children` or `props.dangerouslySetInnerHTML`."
16364                  );
16365                domElement.innerHTML = key;
16366              }
16367            }
16368            break;
16369          case "children":
16370            "string" === typeof value ? setTextContent(domElement, value) : ("number" === typeof value || "bigint" === typeof value) && setTextContent(domElement, "" + value);
16371            break;
16372          case "onScroll":
16373            null != value && ("function" !== typeof value && warnForInvalidEventListener(key, value), listenToNonDelegatedEvent("scroll", domElement));
16374            break;
16375          case "onScrollEnd":
16376            null != value && ("function" !== typeof value && warnForInvalidEventListener(key, value), listenToNonDelegatedEvent("scrollend", domElement));
16377            break;
16378          case "onClick":
16379            null != value && ("function" !== typeof value && warnForInvalidEventListener(key, value), domElement.onclick = noop$1);
16380            break;
16381          case "suppressContentEditableWarning":
16382          case "suppressHydrationWarning":
16383          case "innerHTML":
16384          case "ref":
16385            break;
16386          case "innerText":
16387          case "textContent":
16388            break;
16389          default:
16390            if (registrationNameDependencies.hasOwnProperty(key))
16391              null != value && "function" !== typeof value && warnForInvalidEventListener(key, value);
16392            else
16393              a: {
16394                if ("o" === key[0] && "n" === key[1] && (props = key.endsWith("Capture"), tag = key.slice(2, props ? key.length - 7 : void 0), prevValue = domElement[internalPropsKey] || null, prevValue = null != prevValue ? prevValue[key] : null, "function" === typeof prevValue && domElement.removeEventListener(tag, prevValue, props), "function" === typeof value)) {
16395                  "function" !== typeof prevValue && null !== prevValue && (key in domElement ? domElement[key] = null : domElement.hasAttribute(key) && domElement.removeAttribute(key));
16396                  domElement.addEventListener(tag, value, props);
16397                  break a;
16398                }
16399                key in domElement ? domElement[key] = value : true === value ? domElement.setAttribute(key, "") : setValueForAttribute(domElement, key, value);
16400              }
16401        }
16402      }
16403      function setInitialProperties(domElement, tag, props) {
16404        validatePropertiesInDevelopment(tag, props);
16405        switch (tag) {
16406          case "div":
16407          case "span":
16408          case "svg":
16409          case "path":
16410          case "a":
16411          case "g":
16412          case "p":
16413          case "li":
16414            break;
16415          case "img":
16416            listenToNonDelegatedEvent("error", domElement);
16417            listenToNonDelegatedEvent("load", domElement);
16418            var hasSrc = false, hasSrcSet = false, propKey;
16419            for (propKey in props)
16420              if (props.hasOwnProperty(propKey)) {
16421                var propValue = props[propKey];
16422                if (null != propValue)
16423                  switch (propKey) {
16424                    case "src":
16425                      hasSrc = true;
16426                      break;
16427                    case "srcSet":
16428                      hasSrcSet = true;
16429                      break;
16430                    case "children":
16431                    case "dangerouslySetInnerHTML":
16432                      throw Error(
16433                        tag + " is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`."
16434                      );
16435                    default:
16436                      setProp(domElement, tag, propKey, propValue, props, null);
16437                  }
16438              }
16439            hasSrcSet && setProp(domElement, tag, "srcSet", props.srcSet, props, null);
16440            hasSrc && setProp(domElement, tag, "src", props.src, props, null);
16441            return;
16442          case "input":
16443            checkControlledValueProps("input", props);
16444            listenToNonDelegatedEvent("invalid", domElement);
16445            var defaultValue = propKey = propValue = hasSrcSet = null, checked = null, defaultChecked = null;
16446            for (hasSrc in props)
16447              if (props.hasOwnProperty(hasSrc)) {
16448                var _propValue = props[hasSrc];
16449                if (null != _propValue)
16450                  switch (hasSrc) {
16451                    case "name":
16452                      hasSrcSet = _propValue;
16453                      break;
16454                    case "type":
16455                      propValue = _propValue;
16456                      break;
16457                    case "checked":
16458                      checked = _propValue;
16459                      break;
16460                    case "defaultChecked":
16461                      defaultChecked = _propValue;
16462                      break;
16463                    case "value":
16464                      propKey = _propValue;
16465                      break;
16466                    case "defaultValue":
16467                      defaultValue = _propValue;
16468                      break;
16469                    case "children":
16470                    case "dangerouslySetInnerHTML":
16471                      if (null != _propValue)
16472                        throw Error(
16473                          tag + " is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`."
16474                        );
16475                      break;
16476                    default:
16477                      setProp(domElement, tag, hasSrc, _propValue, props, null);
16478                  }
16479              }
16480            validateInputProps(domElement, props);
16481            initInput(
16482              domElement,
16483              propKey,
16484              defaultValue,
16485              checked,
16486              defaultChecked,
16487              propValue,
16488              hasSrcSet,
16489              false
16490            );
16491            return;
16492          case "select":
16493            checkControlledValueProps("select", props);
16494            listenToNonDelegatedEvent("invalid", domElement);
16495            hasSrc = propValue = propKey = null;
16496            for (hasSrcSet in props)
16497              if (props.hasOwnProperty(hasSrcSet) && (defaultValue = props[hasSrcSet], null != defaultValue))
16498                switch (hasSrcSet) {
16499                  case "value":
16500                    propKey = defaultValue;
16501                    break;
16502                  case "defaultValue":
16503                    propValue = defaultValue;
16504                    break;
16505                  case "multiple":
16506                    hasSrc = defaultValue;
16507                  default:
16508                    setProp(
16509                      domElement,
16510                      tag,
16511                      hasSrcSet,
16512                      defaultValue,
16513                      props,
16514                      null
16515                    );
16516                }
16517            validateSelectProps(domElement, props);
16518            tag = propKey;
16519            props = propValue;
16520            domElement.multiple = !!hasSrc;
16521            null != tag ? updateOptions(domElement, !!hasSrc, tag, false) : null != props && updateOptions(domElement, !!hasSrc, props, true);
16522            return;
16523          case "textarea":
16524            checkControlledValueProps("textarea", props);
16525            listenToNonDelegatedEvent("invalid", domElement);
16526            propKey = hasSrcSet = hasSrc = null;
16527            for (propValue in props)
16528              if (props.hasOwnProperty(propValue) && (defaultValue = props[propValue], null != defaultValue))
16529                switch (propValue) {
16530                  case "value":
16531                    hasSrc = defaultValue;
16532                    break;
16533                  case "defaultValue":
16534                    hasSrcSet = defaultValue;
16535                    break;
16536                  case "children":
16537                    propKey = defaultValue;
16538                    break;
16539                  case "dangerouslySetInnerHTML":
16540                    if (null != defaultValue)
16541                      throw Error(
16542                        "`dangerouslySetInnerHTML` does not make sense on <textarea>."
16543                      );
16544                    break;
16545                  default:
16546                    setProp(
16547                      domElement,
16548                      tag,
16549                      propValue,
16550                      defaultValue,
16551                      props,
16552                      null
16553                    );
16554                }
16555            validateTextareaProps(domElement, props);
16556            initTextarea(domElement, hasSrc, hasSrcSet, propKey);
16557            return;
16558          case "option":
16559            validateOptionProps(domElement, props);
16560            for (checked in props)
16561              if (props.hasOwnProperty(checked) && (hasSrc = props[checked], null != hasSrc))
16562                switch (checked) {
16563                  case "selected":
16564                    domElement.selected = hasSrc && "function" !== typeof hasSrc && "symbol" !== typeof hasSrc;
16565                    break;
16566                  default:
16567                    setProp(domElement, tag, checked, hasSrc, props, null);
16568                }
16569            return;
16570          case "dialog":
16571            listenToNonDelegatedEvent("beforetoggle", domElement);
16572            listenToNonDelegatedEvent("toggle", domElement);
16573            listenToNonDelegatedEvent("cancel", domElement);
16574            listenToNonDelegatedEvent("close", domElement);
16575            break;
16576          case "iframe":
16577          case "object":
16578            listenToNonDelegatedEvent("load", domElement);
16579            break;
16580          case "video":
16581          case "audio":
16582            for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)
16583              listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);
16584            break;
16585          case "image":
16586            listenToNonDelegatedEvent("error", domElement);
16587            listenToNonDelegatedEvent("load", domElement);
16588            break;
16589          case "details":
16590            listenToNonDelegatedEvent("toggle", domElement);
16591            break;
16592          case "embed":
16593          case "source":
16594          case "link":
16595            listenToNonDelegatedEvent("error", domElement), listenToNonDelegatedEvent("load", domElement);
16596          case "area":
16597          case "base":
16598          case "br":
16599          case "col":
16600          case "hr":
16601          case "keygen":
16602          case "meta":
16603          case "param":
16604          case "track":
16605          case "wbr":
16606          case "menuitem":
16607            for (defaultChecked in props)
16608              if (props.hasOwnProperty(defaultChecked) && (hasSrc = props[defaultChecked], null != hasSrc))
16609                switch (defaultChecked) {
16610                  case "children":
16611                  case "dangerouslySetInnerHTML":
16612                    throw Error(
16613                      tag + " is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`."
16614                    );
16615                  default:
16616                    setProp(domElement, tag, defaultChecked, hasSrc, props, null);
16617                }
16618            return;
16619          default:
16620            if (isCustomElement(tag)) {
16621              for (_propValue in props)
16622                props.hasOwnProperty(_propValue) && (hasSrc = props[_propValue], void 0 !== hasSrc && setPropOnCustomElement(
16623                  domElement,
16624                  tag,
16625                  _propValue,
16626                  hasSrc,
16627                  props,
16628                  void 0
16629                ));
16630              return;
16631            }
16632        }
16633        for (defaultValue in props)
16634          props.hasOwnProperty(defaultValue) && (hasSrc = props[defaultValue], null != hasSrc && setProp(domElement, tag, defaultValue, hasSrc, props, null));
16635      }
16636      function updateProperties(domElement, tag, lastProps, nextProps) {
16637        validatePropertiesInDevelopment(tag, nextProps);
16638        switch (tag) {
16639          case "div":
16640          case "span":
16641          case "svg":
16642          case "path":
16643          case "a":
16644          case "g":
16645          case "p":
16646          case "li":
16647            break;
16648          case "input":
16649            var name = null, type = null, value = null, defaultValue = null, lastDefaultValue = null, checked = null, defaultChecked = null;
16650            for (propKey in lastProps) {
16651              var lastProp = lastProps[propKey];
16652              if (lastProps.hasOwnProperty(propKey) && null != lastProp)
16653                switch (propKey) {
16654                  case "checked":
16655                    break;
16656                  case "value":
16657                    break;
16658                  case "defaultValue":
16659                    lastDefaultValue = lastProp;
16660                  default:
16661                    nextProps.hasOwnProperty(propKey) || setProp(
16662                      domElement,
16663                      tag,
16664                      propKey,
16665                      null,
16666                      nextProps,
16667                      lastProp
16668                    );
16669                }
16670            }
16671            for (var _propKey8 in nextProps) {
16672              var propKey = nextProps[_propKey8];
16673              lastProp = lastProps[_propKey8];
16674              if (nextProps.hasOwnProperty(_propKey8) && (null != propKey || null != lastProp))
16675                switch (_propKey8) {
16676                  case "type":
16677                    type = propKey;
16678                    break;
16679                  case "name":
16680                    name = propKey;
16681                    break;
16682                  case "checked":
16683                    checked = propKey;
16684                    break;
16685                  case "defaultChecked":
16686                    defaultChecked = propKey;
16687                    break;
16688                  case "value":
16689                    value = propKey;
16690                    break;
16691                  case "defaultValue":
16692                    defaultValue = propKey;
16693                    break;
16694                  case "children":
16695                  case "dangerouslySetInnerHTML":
16696                    if (null != propKey)
16697                      throw Error(
16698                        tag + " is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`."
16699                      );
16700                    break;
16701                  default:
16702                    propKey !== lastProp && setProp(
16703                      domElement,
16704                      tag,
16705                      _propKey8,
16706                      propKey,
16707                      nextProps,
16708                      lastProp
16709                    );
16710                }
16711            }
16712            tag = "checkbox" === lastProps.type || "radio" === lastProps.type ? null != lastProps.checked : null != lastProps.value;
16713            nextProps = "checkbox" === nextProps.type || "radio" === nextProps.type ? null != nextProps.checked : null != nextProps.value;
16714            tag || !nextProps || didWarnUncontrolledToControlled || (console.error(
16715              "A component is changing an uncontrolled input to be controlled. This is likely caused by the value changing from undefined to a defined value, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://react.dev/link/controlled-components"
16716            ), didWarnUncontrolledToControlled = true);
16717            !tag || nextProps || didWarnControlledToUncontrolled || (console.error(
16718              "A component is changing a controlled input to be uncontrolled. This is likely caused by the value changing from a defined to undefined, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://react.dev/link/controlled-components"
16719            ), didWarnControlledToUncontrolled = true);
16720            updateInput(
16721              domElement,
16722              value,
16723              defaultValue,
16724              lastDefaultValue,
16725              checked,
16726              defaultChecked,
16727              type,
16728              name
16729            );
16730            return;
16731          case "select":
16732            propKey = value = defaultValue = _propKey8 = null;
16733            for (type in lastProps)
16734              if (lastDefaultValue = lastProps[type], lastProps.hasOwnProperty(type) && null != lastDefaultValue)
16735                switch (type) {
16736                  case "value":
16737                    break;
16738                  case "multiple":
16739                    propKey = lastDefaultValue;
16740                  default:
16741                    nextProps.hasOwnProperty(type) || setProp(
16742                      domElement,
16743                      tag,
16744                      type,
16745                      null,
16746                      nextProps,
16747                      lastDefaultValue
16748                    );
16749                }
16750            for (name in nextProps)
16751              if (type = nextProps[name], lastDefaultValue = lastProps[name], nextProps.hasOwnProperty(name) && (null != type || null != lastDefaultValue))
16752                switch (name) {
16753                  case "value":
16754                    _propKey8 = type;
16755                    break;
16756                  case "defaultValue":
16757                    defaultValue = type;
16758                    break;
16759                  case "multiple":
16760                    value = type;
16761                  default:
16762                    type !== lastDefaultValue && setProp(
16763                      domElement,
16764                      tag,
16765                      name,
16766                      type,
16767                      nextProps,
16768                      lastDefaultValue
16769                    );
16770                }
16771            nextProps = defaultValue;
16772            tag = value;
16773            lastProps = propKey;
16774            null != _propKey8 ? updateOptions(domElement, !!tag, _propKey8, false) : !!lastProps !== !!tag && (null != nextProps ? updateOptions(domElement, !!tag, nextProps, true) : updateOptions(domElement, !!tag, tag ? [] : "", false));
16775            return;
16776          case "textarea":
16777            propKey = _propKey8 = null;
16778            for (defaultValue in lastProps)
16779              if (name = lastProps[defaultValue], lastProps.hasOwnProperty(defaultValue) && null != name && !nextProps.hasOwnProperty(defaultValue))
16780                switch (defaultValue) {
16781                  case "value":
16782                    break;
16783                  case "children":
16784                    break;
16785                  default:
16786                    setProp(domElement, tag, defaultValue, null, nextProps, name);
16787                }
16788            for (value in nextProps)
16789              if (name = nextProps[value], type = lastProps[value], nextProps.hasOwnProperty(value) && (null != name || null != type))
16790                switch (value) {
16791                  case "value":
16792                    _propKey8 = name;
16793                    break;
16794                  case "defaultValue":
16795                    propKey = name;
16796                    break;
16797                  case "children":
16798                    break;
16799                  case "dangerouslySetInnerHTML":
16800                    if (null != name)
16801                      throw Error(
16802                        "`dangerouslySetInnerHTML` does not make sense on <textarea>."
16803                      );
16804                    break;
16805                  default:
16806                    name !== type && setProp(domElement, tag, value, name, nextProps, type);
16807                }
16808            updateTextarea(domElement, _propKey8, propKey);
16809            return;
16810          case "option":
16811            for (var _propKey13 in lastProps)
16812              if (_propKey8 = lastProps[_propKey13], lastProps.hasOwnProperty(_propKey13) && null != _propKey8 && !nextProps.hasOwnProperty(_propKey13))
16813                switch (_propKey13) {
16814                  case "selected":
16815                    domElement.selected = false;
16816                    break;
16817                  default:
16818                    setProp(
16819                      domElement,
16820                      tag,
16821                      _propKey13,
16822                      null,
16823                      nextProps,
16824                      _propKey8
16825                    );
16826                }
16827            for (lastDefaultValue in nextProps)
16828              if (_propKey8 = nextProps[lastDefaultValue], propKey = lastProps[lastDefaultValue], nextProps.hasOwnProperty(lastDefaultValue) && _propKey8 !== propKey && (null != _propKey8 || null != propKey))
16829                switch (lastDefaultValue) {
16830                  case "selected":
16831                    domElement.selected = _propKey8 && "function" !== typeof _propKey8 && "symbol" !== typeof _propKey8;
16832                    break;
16833                  default:
16834                    setProp(
16835                      domElement,
16836                      tag,
16837                      lastDefaultValue,
16838                      _propKey8,
16839                      nextProps,
16840                      propKey
16841                    );
16842                }
16843            return;
16844          case "img":
16845          case "link":
16846          case "area":
16847          case "base":
16848          case "br":
16849          case "col":
16850          case "embed":
16851          case "hr":
16852          case "keygen":
16853          case "meta":
16854          case "param":
16855          case "source":
16856          case "track":
16857          case "wbr":
16858          case "menuitem":
16859            for (var _propKey15 in lastProps)
16860              _propKey8 = lastProps[_propKey15], lastProps.hasOwnProperty(_propKey15) && null != _propKey8 && !nextProps.hasOwnProperty(_propKey15) && setProp(
16861                domElement,
16862                tag,
16863                _propKey15,
16864                null,
16865                nextProps,
16866                _propKey8
16867              );
16868            for (checked in nextProps)
16869              if (_propKey8 = nextProps[checked], propKey = lastProps[checked], nextProps.hasOwnProperty(checked) && _propKey8 !== propKey && (null != _propKey8 || null != propKey))
16870                switch (checked) {
16871                  case "children":
16872                  case "dangerouslySetInnerHTML":
16873                    if (null != _propKey8)
16874                      throw Error(
16875                        tag + " is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`."
16876                      );
16877                    break;
16878                  default:
16879                    setProp(
16880                      domElement,
16881                      tag,
16882                      checked,
16883                      _propKey8,
16884                      nextProps,
16885                      propKey
16886                    );
16887                }
16888            return;
16889          default:
16890            if (isCustomElement(tag)) {
16891              for (var _propKey17 in lastProps)
16892                _propKey8 = lastProps[_propKey17], lastProps.hasOwnProperty(_propKey17) && void 0 !== _propKey8 && !nextProps.hasOwnProperty(_propKey17) && setPropOnCustomElement(
16893                  domElement,
16894                  tag,
16895                  _propKey17,
16896                  void 0,
16897                  nextProps,
16898                  _propKey8
16899                );
16900              for (defaultChecked in nextProps)
16901                _propKey8 = nextProps[defaultChecked], propKey = lastProps[defaultChecked], !nextProps.hasOwnProperty(defaultChecked) || _propKey8 === propKey || void 0 === _propKey8 && void 0 === propKey || setPropOnCustomElement(
16902                  domElement,
16903                  tag,
16904                  defaultChecked,
16905                  _propKey8,
16906                  nextProps,
16907                  propKey
16908                );
16909              return;
16910            }
16911        }
16912        for (var _propKey19 in lastProps)
16913          _propKey8 = lastProps[_propKey19], lastProps.hasOwnProperty(_propKey19) && null != _propKey8 && !nextProps.hasOwnProperty(_propKey19) && setProp(domElement, tag, _propKey19, null, nextProps, _propKey8);
16914        for (lastProp in nextProps)
16915          _propKey8 = nextProps[lastProp], propKey = lastProps[lastProp], !nextProps.hasOwnProperty(lastProp) || _propKey8 === propKey || null == _propKey8 && null == propKey || setProp(domElement, tag, lastProp, _propKey8, nextProps, propKey);
16916      }
16917      function getPropNameFromAttributeName(attrName) {
16918        switch (attrName) {
16919          case "class":
16920            return "className";
16921          case "for":
16922            return "htmlFor";
16923          default:
16924            return attrName;
16925        }
16926      }
16927      function getStylesObjectFromElement(domElement) {
16928        var serverValueInObjectForm = {};
16929        domElement = domElement.style;
16930        for (var i3 = 0; i3 < domElement.length; i3++) {
16931          var styleName = domElement[i3];
16932          serverValueInObjectForm[styleName] = domElement.getPropertyValue(styleName);
16933        }
16934        return serverValueInObjectForm;
16935      }
16936      function diffHydratedStyles(domElement, value$jscomp$0, serverDifferences) {
16937        if (null != value$jscomp$0 && "object" !== typeof value$jscomp$0)
16938          console.error(
16939            "The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX."
16940          );
16941        else {
16942          var clientValue;
16943          var delimiter = clientValue = "", styleName;
16944          for (styleName in value$jscomp$0)
16945            if (value$jscomp$0.hasOwnProperty(styleName)) {
16946              var value = value$jscomp$0[styleName];
16947              null != value && "boolean" !== typeof value && "" !== value && (0 === styleName.indexOf("--") ? (checkCSSPropertyStringCoercion(value, styleName), clientValue += delimiter + styleName + ":" + ("" + value).trim()) : "number" !== typeof value || 0 === value || unitlessNumbers.has(styleName) ? (checkCSSPropertyStringCoercion(value, styleName), clientValue += delimiter + styleName.replace(uppercasePattern, "-$1").toLowerCase().replace(msPattern$1, "-ms-") + ":" + ("" + value).trim()) : clientValue += delimiter + styleName.replace(uppercasePattern, "-$1").toLowerCase().replace(msPattern$1, "-ms-") + ":" + value + "px", delimiter = ";");
16948            }
16949          clientValue = clientValue || null;
16950          value$jscomp$0 = domElement.getAttribute("style");
16951          value$jscomp$0 !== clientValue && (clientValue = normalizeMarkupForTextOrAttribute(clientValue), normalizeMarkupForTextOrAttribute(value$jscomp$0) !== clientValue && (serverDifferences.style = getStylesObjectFromElement(domElement)));
16952        }
16953      }
16954      function hydrateAttribute(domElement, propKey, attributeName, value, extraAttributes, serverDifferences) {
16955        extraAttributes.delete(attributeName);
16956        domElement = domElement.getAttribute(attributeName);
16957        if (null === domElement)
16958          switch (typeof value) {
16959            case "undefined":
16960            case "function":
16961            case "symbol":
16962            case "boolean":
16963              return;
16964          }
16965        else if (null != value)
16966          switch (typeof value) {
16967            case "function":
16968            case "symbol":
16969            case "boolean":
16970              break;
16971            default:
16972              if (checkAttributeStringCoercion(value, propKey), domElement === "" + value)
16973                return;
16974          }
16975        warnForPropDifference(propKey, domElement, value, serverDifferences);
16976      }
16977      function hydrateBooleanAttribute(domElement, propKey, attributeName, value, extraAttributes, serverDifferences) {
16978        extraAttributes.delete(attributeName);
16979        domElement = domElement.getAttribute(attributeName);
16980        if (null === domElement) {
16981          switch (typeof value) {
16982            case "function":
16983            case "symbol":
16984              return;
16985          }
16986          if (!value) return;
16987        } else
16988          switch (typeof value) {
16989            case "function":
16990            case "symbol":
16991              break;
16992            default:
16993              if (value) return;
16994          }
16995        warnForPropDifference(propKey, domElement, value, serverDifferences);
16996      }
16997      function hydrateBooleanishAttribute(domElement, propKey, attributeName, value, extraAttributes, serverDifferences) {
16998        extraAttributes.delete(attributeName);
16999        domElement = domElement.getAttribute(attributeName);
17000        if (null === domElement)
17001          switch (typeof value) {
17002            case "undefined":
17003            case "function":
17004            case "symbol":
17005              return;
17006          }
17007        else if (null != value)
17008          switch (typeof value) {
17009            case "function":
17010            case "symbol":
17011              break;
17012            default:
17013              if (checkAttributeStringCoercion(value, attributeName), domElement === "" + value)
17014                return;
17015          }
17016        warnForPropDifference(propKey, domElement, value, serverDifferences);
17017      }
17018      function hydrateNumericAttribute(domElement, propKey, attributeName, value, extraAttributes, serverDifferences) {
17019        extraAttributes.delete(attributeName);
17020        domElement = domElement.getAttribute(attributeName);
17021        if (null === domElement)
17022          switch (typeof value) {
17023            case "undefined":
17024            case "function":
17025            case "symbol":
17026            case "boolean":
17027              return;
17028            default:
17029              if (isNaN(value)) return;
17030          }
17031        else if (null != value)
17032          switch (typeof value) {
17033            case "function":
17034            case "symbol":
17035            case "boolean":
17036              break;
17037            default:
17038              if (!isNaN(value) && (checkAttributeStringCoercion(value, propKey), domElement === "" + value))
17039                return;
17040          }
17041        warnForPropDifference(propKey, domElement, value, serverDifferences);
17042      }
17043      function hydrateSanitizedAttribute(domElement, propKey, attributeName, value, extraAttributes, serverDifferences) {
17044        extraAttributes.delete(attributeName);
17045        domElement = domElement.getAttribute(attributeName);
17046        if (null === domElement)
17047          switch (typeof value) {
17048            case "undefined":
17049            case "function":
17050            case "symbol":
17051            case "boolean":
17052              return;
17053          }
17054        else if (null != value)
17055          switch (typeof value) {
17056            case "function":
17057            case "symbol":
17058            case "boolean":
17059              break;
17060            default:
17061              if (checkAttributeStringCoercion(value, propKey), attributeName = sanitizeURL("" + value), domElement === attributeName)
17062                return;
17063          }
17064        warnForPropDifference(propKey, domElement, value, serverDifferences);
17065      }
17066      function diffHydratedProperties(domElement, tag, props, hostContext) {
17067        for (var serverDifferences = {}, extraAttributes = /* @__PURE__ */ new Set(), attributes = domElement.attributes, i3 = 0; i3 < attributes.length; i3++)
17068          switch (attributes[i3].name.toLowerCase()) {
17069            case "value":
17070              break;
17071            case "checked":
17072              break;
17073            case "selected":
17074              break;
17075            default:
17076              extraAttributes.add(attributes[i3].name);
17077          }
17078        if (isCustomElement(tag))
17079          for (var propKey in props) {
17080            if (props.hasOwnProperty(propKey)) {
17081              var value = props[propKey];
17082              if (null != value) {
17083                if (registrationNameDependencies.hasOwnProperty(propKey))
17084                  "function" !== typeof value && warnForInvalidEventListener(propKey, value);
17085                else if (true !== props.suppressHydrationWarning)
17086                  switch (propKey) {
17087                    case "children":
17088                      "string" !== typeof value && "number" !== typeof value || warnForPropDifference(
17089                        "children",
17090                        domElement.textContent,
17091                        value,
17092                        serverDifferences
17093                      );
17094                      continue;
17095                    case "suppressContentEditableWarning":
17096                    case "suppressHydrationWarning":
17097                    case "defaultValue":
17098                    case "defaultChecked":
17099                    case "innerHTML":
17100                    case "ref":
17101                      continue;
17102                    case "dangerouslySetInnerHTML":
17103                      attributes = domElement.innerHTML;
17104                      value = value ? value.__html : void 0;
17105                      null != value && (value = normalizeHTML(domElement, value), warnForPropDifference(
17106                        propKey,
17107                        attributes,
17108                        value,
17109                        serverDifferences
17110                      ));
17111                      continue;
17112                    case "style":
17113                      extraAttributes.delete(propKey);
17114                      diffHydratedStyles(domElement, value, serverDifferences);
17115                      continue;
17116                    case "offsetParent":
17117                    case "offsetTop":
17118                    case "offsetLeft":
17119                    case "offsetWidth":
17120                    case "offsetHeight":
17121                    case "isContentEditable":
17122                    case "outerText":
17123                    case "outerHTML":
17124                      extraAttributes.delete(propKey.toLowerCase());
17125                      console.error(
17126                        "Assignment to read-only property will result in a no-op: `%s`",
17127                        propKey
17128                      );
17129                      continue;
17130                    case "className":
17131                      extraAttributes.delete("class");
17132                      attributes = getValueForAttributeOnCustomComponent(
17133                        domElement,
17134                        "class",
17135                        value
17136                      );
17137                      warnForPropDifference(
17138                        "className",
17139                        attributes,
17140                        value,
17141                        serverDifferences
17142                      );
17143                      continue;
17144                    default:
17145                      hostContext.context === HostContextNamespaceNone && "svg" !== tag && "math" !== tag ? extraAttributes.delete(propKey.toLowerCase()) : extraAttributes.delete(propKey), attributes = getValueForAttributeOnCustomComponent(
17146                        domElement,
17147                        propKey,
17148                        value
17149                      ), warnForPropDifference(
17150                        propKey,
17151                        attributes,
17152                        value,
17153                        serverDifferences
17154                      );
17155                  }
17156              }
17157            }
17158          }
17159        else
17160          for (value in props)
17161            if (props.hasOwnProperty(value) && (propKey = props[value], null != propKey)) {
17162              if (registrationNameDependencies.hasOwnProperty(value))
17163                "function" !== typeof propKey && warnForInvalidEventListener(value, propKey);
17164              else if (true !== props.suppressHydrationWarning)
17165                switch (value) {
17166                  case "children":
17167                    "string" !== typeof propKey && "number" !== typeof propKey || warnForPropDifference(
17168                      "children",
17169                      domElement.textContent,
17170                      propKey,
17171                      serverDifferences
17172                    );
17173                    continue;
17174                  case "suppressContentEditableWarning":
17175                  case "suppressHydrationWarning":
17176                  case "value":
17177                  case "checked":
17178                  case "selected":
17179                  case "defaultValue":
17180                  case "defaultChecked":
17181                  case "innerHTML":
17182                  case "ref":
17183                    continue;
17184                  case "dangerouslySetInnerHTML":
17185                    attributes = domElement.innerHTML;
17186                    propKey = propKey ? propKey.__html : void 0;
17187                    null != propKey && (propKey = normalizeHTML(domElement, propKey), attributes !== propKey && (serverDifferences[value] = { __html: attributes }));
17188                    continue;
17189                  case "className":
17190                    hydrateAttribute(
17191                      domElement,
17192                      value,
17193                      "class",
17194                      propKey,
17195                      extraAttributes,
17196                      serverDifferences
17197                    );
17198                    continue;
17199                  case "tabIndex":
17200                    hydrateAttribute(
17201                      domElement,
17202                      value,
17203                      "tabindex",
17204                      propKey,
17205                      extraAttributes,
17206                      serverDifferences
17207                    );
17208                    continue;
17209                  case "style":
17210                    extraAttributes.delete(value);
17211                    diffHydratedStyles(domElement, propKey, serverDifferences);
17212                    continue;
17213                  case "multiple":
17214                    extraAttributes.delete(value);
17215                    warnForPropDifference(
17216                      value,
17217                      domElement.multiple,
17218                      propKey,
17219                      serverDifferences
17220                    );
17221                    continue;
17222                  case "muted":
17223                    extraAttributes.delete(value);
17224                    warnForPropDifference(
17225                      value,
17226                      domElement.muted,
17227                      propKey,
17228                      serverDifferences
17229                    );
17230                    continue;
17231                  case "autoFocus":
17232                    extraAttributes.delete("autofocus");
17233                    warnForPropDifference(
17234                      value,
17235                      domElement.autofocus,
17236                      propKey,
17237                      serverDifferences
17238                    );
17239                    continue;
17240                  case "data":
17241                    if ("object" !== tag) {
17242                      extraAttributes.delete(value);
17243                      attributes = domElement.getAttribute("data");
17244                      warnForPropDifference(
17245                        value,
17246                        attributes,
17247                        propKey,
17248                        serverDifferences
17249                      );
17250                      continue;
17251                    }
17252                  case "src":
17253                  case "href":
17254                    if (!("" !== propKey || "a" === tag && "href" === value || "object" === tag && "data" === value)) {
17255                      "src" === value ? console.error(
17256                        'An empty string ("") was passed to the %s attribute. This may cause the browser to download the whole page again over the network. To fix this, either do not render the element at all or pass null to %s instead of an empty string.',
17257                        value,
17258                        value
17259                      ) : console.error(
17260                        'An empty string ("") was passed to the %s attribute. To fix this, either do not render the element at all or pass null to %s instead of an empty string.',
17261                        value,
17262                        value
17263                      );
17264                      continue;
17265                    }
17266                    hydrateSanitizedAttribute(
17267                      domElement,
17268                      value,
17269                      value,
17270                      propKey,
17271                      extraAttributes,
17272                      serverDifferences
17273                    );
17274                    continue;
17275                  case "action":
17276                  case "formAction":
17277                    attributes = domElement.getAttribute(value);
17278                    if ("function" === typeof propKey) {
17279                      extraAttributes.delete(value.toLowerCase());
17280                      "formAction" === value ? (extraAttributes.delete("name"), extraAttributes.delete("formenctype"), extraAttributes.delete("formmethod"), extraAttributes.delete("formtarget")) : (extraAttributes.delete("enctype"), extraAttributes.delete("method"), extraAttributes.delete("target"));
17281                      continue;
17282                    } else if (attributes === EXPECTED_FORM_ACTION_URL) {
17283                      extraAttributes.delete(value.toLowerCase());
17284                      warnForPropDifference(
17285                        value,
17286                        "function",
17287                        propKey,
17288                        serverDifferences
17289                      );
17290                      continue;
17291                    }
17292                    hydrateSanitizedAttribute(
17293                      domElement,
17294                      value,
17295                      value.toLowerCase(),
17296                      propKey,
17297                      extraAttributes,
17298                      serverDifferences
17299                    );
17300                    continue;
17301                  case "xlinkHref":
17302                    hydrateSanitizedAttribute(
17303                      domElement,
17304                      value,
17305                      "xlink:href",
17306                      propKey,
17307                      extraAttributes,
17308                      serverDifferences
17309                    );
17310                    continue;
17311                  case "contentEditable":
17312                    hydrateBooleanishAttribute(
17313                      domElement,
17314                      value,
17315                      "contenteditable",
17316                      propKey,
17317                      extraAttributes,
17318                      serverDifferences
17319                    );
17320                    continue;
17321                  case "spellCheck":
17322                    hydrateBooleanishAttribute(
17323                      domElement,
17324                      value,
17325                      "spellcheck",
17326                      propKey,
17327                      extraAttributes,
17328                      serverDifferences
17329                    );
17330                    continue;
17331                  case "draggable":
17332                  case "autoReverse":
17333                  case "externalResourcesRequired":
17334                  case "focusable":
17335                  case "preserveAlpha":
17336                    hydrateBooleanishAttribute(
17337                      domElement,
17338                      value,
17339                      value,
17340                      propKey,
17341                      extraAttributes,
17342                      serverDifferences
17343                    );
17344                    continue;
17345                  case "allowFullScreen":
17346                  case "async":
17347                  case "autoPlay":
17348                  case "controls":
17349                  case "default":
17350                  case "defer":
17351                  case "disabled":
17352                  case "disablePictureInPicture":
17353                  case "disableRemotePlayback":
17354                  case "formNoValidate":
17355                  case "hidden":
17356                  case "loop":
17357                  case "noModule":
17358                  case "noValidate":
17359                  case "open":
17360                  case "playsInline":
17361                  case "readOnly":
17362                  case "required":
17363                  case "reversed":
17364                  case "scoped":
17365                  case "seamless":
17366                  case "itemScope":
17367                    hydrateBooleanAttribute(
17368                      domElement,
17369                      value,
17370                      value.toLowerCase(),
17371                      propKey,
17372                      extraAttributes,
17373                      serverDifferences
17374                    );
17375                    continue;
17376                  case "capture":
17377                  case "download":
17378                    a: {
17379                      i3 = domElement;
17380                      var attributeName = attributes = value, serverDifferences$jscomp$0 = serverDifferences;
17381                      extraAttributes.delete(attributeName);
17382                      i3 = i3.getAttribute(attributeName);
17383                      if (null === i3)
17384                        switch (typeof propKey) {
17385                          case "undefined":
17386                          case "function":
17387                          case "symbol":
17388                            break a;
17389                          default:
17390                            if (false === propKey) break a;
17391                        }
17392                      else if (null != propKey)
17393                        switch (typeof propKey) {
17394                          case "function":
17395                          case "symbol":
17396                            break;
17397                          case "boolean":
17398                            if (true === propKey && "" === i3) break a;
17399                            break;
17400                          default:
17401                            if (checkAttributeStringCoercion(propKey, attributes), i3 === "" + propKey)
17402                              break a;
17403                        }
17404                      warnForPropDifference(
17405                        attributes,
17406                        i3,
17407                        propKey,
17408                        serverDifferences$jscomp$0
17409                      );
17410                    }
17411                    continue;
17412                  case "cols":
17413                  case "rows":
17414                  case "size":
17415                  case "span":
17416                    a: {
17417                      i3 = domElement;
17418                      attributeName = attributes = value;
17419                      serverDifferences$jscomp$0 = serverDifferences;
17420                      extraAttributes.delete(attributeName);
17421                      i3 = i3.getAttribute(attributeName);
17422                      if (null === i3)
17423                        switch (typeof propKey) {
17424                          case "undefined":
17425                          case "function":
17426                          case "symbol":
17427                          case "boolean":
17428                            break a;
17429                          default:
17430                            if (isNaN(propKey) || 1 > propKey) break a;
17431                        }
17432                      else if (null != propKey)
17433                        switch (typeof propKey) {
17434                          case "function":
17435                          case "symbol":
17436                          case "boolean":
17437                            break;
17438                          default:
17439                            if (!(isNaN(propKey) || 1 > propKey) && (checkAttributeStringCoercion(propKey, attributes), i3 === "" + propKey))
17440                              break a;
17441                        }
17442                      warnForPropDifference(
17443                        attributes,
17444                        i3,
17445                        propKey,
17446                        serverDifferences$jscomp$0
17447                      );
17448                    }
17449                    continue;
17450                  case "rowSpan":
17451                    hydrateNumericAttribute(
17452                      domElement,
17453                      value,
17454                      "rowspan",
17455                      propKey,
17456                      extraAttributes,
17457                      serverDifferences
17458                    );
17459                    continue;
17460                  case "start":
17461                    hydrateNumericAttribute(
17462                      domElement,
17463                      value,
17464                      value,
17465                      propKey,
17466                      extraAttributes,
17467                      serverDifferences
17468                    );
17469                    continue;
17470                  case "xHeight":
17471                    hydrateAttribute(
17472                      domElement,
17473                      value,
17474                      "x-height",
17475                      propKey,
17476                      extraAttributes,
17477                      serverDifferences
17478                    );
17479                    continue;
17480                  case "xlinkActuate":
17481                    hydrateAttribute(
17482                      domElement,
17483                      value,
17484                      "xlink:actuate",
17485                      propKey,
17486                      extraAttributes,
17487                      serverDifferences
17488                    );
17489                    continue;
17490                  case "xlinkArcrole":
17491                    hydrateAttribute(
17492                      domElement,
17493                      value,
17494                      "xlink:arcrole",
17495                      propKey,
17496                      extraAttributes,
17497                      serverDifferences
17498                    );
17499                    continue;
17500                  case "xlinkRole":
17501                    hydrateAttribute(
17502                      domElement,
17503                      value,
17504                      "xlink:role",
17505                      propKey,
17506                      extraAttributes,
17507                      serverDifferences
17508                    );
17509                    continue;
17510                  case "xlinkShow":
17511                    hydrateAttribute(
17512                      domElement,
17513                      value,
17514                      "xlink:show",
17515                      propKey,
17516                      extraAttributes,
17517                      serverDifferences
17518                    );
17519                    continue;
17520                  case "xlinkTitle":
17521                    hydrateAttribute(
17522                      domElement,
17523                      value,
17524                      "xlink:title",
17525                      propKey,
17526                      extraAttributes,
17527                      serverDifferences
17528                    );
17529                    continue;
17530                  case "xlinkType":
17531                    hydrateAttribute(
17532                      domElement,
17533                      value,
17534                      "xlink:type",
17535                      propKey,
17536                      extraAttributes,
17537                      serverDifferences
17538                    );
17539                    continue;
17540                  case "xmlBase":
17541                    hydrateAttribute(
17542                      domElement,
17543                      value,
17544                      "xml:base",
17545                      propKey,
17546                      extraAttributes,
17547                      serverDifferences
17548                    );
17549                    continue;
17550                  case "xmlLang":
17551                    hydrateAttribute(
17552                      domElement,
17553                      value,
17554                      "xml:lang",
17555                      propKey,
17556                      extraAttributes,
17557                      serverDifferences
17558                    );
17559                    continue;
17560                  case "xmlSpace":
17561                    hydrateAttribute(
17562                      domElement,
17563                      value,
17564                      "xml:space",
17565                      propKey,
17566                      extraAttributes,
17567                      serverDifferences
17568                    );
17569                    continue;
17570                  case "inert":
17571                    "" !== propKey || didWarnForNewBooleanPropsWithEmptyValue[value] || (didWarnForNewBooleanPropsWithEmptyValue[value] = true, console.error(
17572                      "Received an empty string for a boolean attribute `%s`. This will treat the attribute as if it were false. Either pass `false` to silence this warning, or pass `true` if you used an empty string in earlier versions of React to indicate this attribute is true.",
17573                      value
17574                    ));
17575                    hydrateBooleanAttribute(
17576                      domElement,
17577                      value,
17578                      value,
17579                      propKey,
17580                      extraAttributes,
17581                      serverDifferences
17582                    );
17583                    continue;
17584                  default:
17585                    if (!(2 < value.length) || "o" !== value[0] && "O" !== value[0] || "n" !== value[1] && "N" !== value[1]) {
17586                      i3 = getAttributeAlias(value);
17587                      attributes = false;
17588                      hostContext.context === HostContextNamespaceNone && "svg" !== tag && "math" !== tag ? extraAttributes.delete(i3.toLowerCase()) : (attributeName = value.toLowerCase(), attributeName = possibleStandardNames.hasOwnProperty(
17589                        attributeName
17590                      ) ? possibleStandardNames[attributeName] || null : null, null !== attributeName && attributeName !== value && (attributes = true, extraAttributes.delete(attributeName)), extraAttributes.delete(i3));
17591                      a: if (attributeName = domElement, serverDifferences$jscomp$0 = i3, i3 = propKey, isAttributeNameSafe(serverDifferences$jscomp$0))
17592                        if (attributeName.hasAttribute(serverDifferences$jscomp$0))
17593                          attributeName = attributeName.getAttribute(
17594                            serverDifferences$jscomp$0
17595                          ), checkAttributeStringCoercion(
17596                            i3,
17597                            serverDifferences$jscomp$0
17598                          ), i3 = attributeName === "" + i3 ? i3 : attributeName;
17599                        else {
17600                          switch (typeof i3) {
17601                            case "function":
17602                            case "symbol":
17603                              break a;
17604                            case "boolean":
17605                              if (attributeName = serverDifferences$jscomp$0.toLowerCase().slice(0, 5), "data-" !== attributeName && "aria-" !== attributeName)
17606                                break a;
17607                          }
17608                          i3 = void 0 === i3 ? void 0 : null;
17609                        }
17610                      else i3 = void 0;
17611                      attributes || warnForPropDifference(
17612                        value,
17613                        i3,
17614                        propKey,
17615                        serverDifferences
17616                      );
17617                    }
17618                }
17619            }
17620        0 < extraAttributes.size && true !== props.suppressHydrationWarning && warnForExtraAttributes(domElement, extraAttributes, serverDifferences);
17621        return 0 === Object.keys(serverDifferences).length ? null : serverDifferences;
17622      }
17623      function propNamesListJoin(list, combinator) {
17624        switch (list.length) {
17625          case 0:
17626            return "";
17627          case 1:
17628            return list[0];
17629          case 2:
17630            return list[0] + " " + combinator + " " + list[1];
17631          default:
17632            return list.slice(0, -1).join(", ") + ", " + combinator + " " + list[list.length - 1];
17633        }
17634      }
17635      function isLikelyStaticResource(initiatorType) {
17636        switch (initiatorType) {
17637          case "css":
17638          case "script":
17639          case "font":
17640          case "img":
17641          case "image":
17642          case "input":
17643          case "link":
17644            return true;
17645          default:
17646            return false;
17647        }
17648      }
17649      function estimateBandwidth() {
17650        if ("function" === typeof performance.getEntriesByType) {
17651          for (var count = 0, bits = 0, resourceEntries = performance.getEntriesByType("resource"), i3 = 0; i3 < resourceEntries.length; i3++) {
17652            var entry = resourceEntries[i3], transferSize = entry.transferSize, initiatorType = entry.initiatorType, duration = entry.duration;
17653            if (transferSize && duration && isLikelyStaticResource(initiatorType)) {
17654              initiatorType = 0;
17655              duration = entry.responseEnd;
17656              for (i3 += 1; i3 < resourceEntries.length; i3++) {
17657                var overlapEntry = resourceEntries[i3], overlapStartTime = overlapEntry.startTime;
17658                if (overlapStartTime > duration) break;
17659                var overlapTransferSize = overlapEntry.transferSize, overlapInitiatorType = overlapEntry.initiatorType;
17660                overlapTransferSize && isLikelyStaticResource(overlapInitiatorType) && (overlapEntry = overlapEntry.responseEnd, initiatorType += overlapTransferSize * (overlapEntry < duration ? 1 : (duration - overlapStartTime) / (overlapEntry - overlapStartTime)));
17661              }
17662              --i3;
17663              bits += 8 * (transferSize + initiatorType) / (entry.duration / 1e3);
17664              count++;
17665              if (10 < count) break;
17666            }
17667          }
17668          if (0 < count) return bits / count / 1e6;
17669        }
17670        return navigator.connection && (count = navigator.connection.downlink, "number" === typeof count) ? count : 5;
17671      }
17672      function getOwnerDocumentFromRootContainer(rootContainerElement) {
17673        return 9 === rootContainerElement.nodeType ? rootContainerElement : rootContainerElement.ownerDocument;
17674      }
17675      function getOwnHostContext(namespaceURI) {
17676        switch (namespaceURI) {
17677          case SVG_NAMESPACE:
17678            return HostContextNamespaceSvg;
17679          case MATH_NAMESPACE:
17680            return HostContextNamespaceMath;
17681          default:
17682            return HostContextNamespaceNone;
17683        }
17684      }
17685      function getChildHostContextProd(parentNamespace, type) {
17686        if (parentNamespace === HostContextNamespaceNone)
17687          switch (type) {
17688            case "svg":
17689              return HostContextNamespaceSvg;
17690            case "math":
17691              return HostContextNamespaceMath;
17692            default:
17693              return HostContextNamespaceNone;
17694          }
17695        return parentNamespace === HostContextNamespaceSvg && "foreignObject" === type ? HostContextNamespaceNone : parentNamespace;
17696      }
17697      function shouldSetTextContent(type, props) {
17698        return "textarea" === type || "noscript" === type || "string" === typeof props.children || "number" === typeof props.children || "bigint" === typeof props.children || "object" === typeof props.dangerouslySetInnerHTML && null !== props.dangerouslySetInnerHTML && null != props.dangerouslySetInnerHTML.__html;
17699      }
17700      function shouldAttemptEagerTransition() {
17701        var event = window.event;
17702        if (event && "popstate" === event.type) {
17703          if (event === currentPopstateTransitionEvent) return false;
17704          currentPopstateTransitionEvent = event;
17705          return true;
17706        }
17707        currentPopstateTransitionEvent = null;
17708        return false;
17709      }
17710      function resolveEventType() {
17711        var event = window.event;
17712        return event && event !== schedulerEvent ? event.type : null;
17713      }
17714      function resolveEventTimeStamp() {
17715        var event = window.event;
17716        return event && event !== schedulerEvent ? event.timeStamp : -1.1;
17717      }
17718      function handleErrorInNextTick(error2) {
17719        setTimeout(function() {
17720          throw error2;
17721        });
17722      }
17723      function commitMount(domElement, type, newProps) {
17724        switch (type) {
17725          case "button":
17726          case "input":
17727          case "select":
17728          case "textarea":
17729            newProps.autoFocus && domElement.focus();
17730            break;
17731          case "img":
17732            newProps.src ? domElement.src = newProps.src : newProps.srcSet && (domElement.srcset = newProps.srcSet);
17733        }
17734      }
17735      function commitHydratedInstance() {
17736      }
17737      function commitUpdate(domElement, type, oldProps, newProps) {
17738        updateProperties(domElement, type, oldProps, newProps);
17739        domElement[internalPropsKey] = newProps;
17740      }
17741      function resetTextContent(domElement) {
17742        setTextContent(domElement, "");
17743      }
17744      function commitTextUpdate(textInstance, oldText, newText) {
17745        textInstance.nodeValue = newText;
17746      }
17747      function warnForReactChildrenConflict(container) {
17748        if (!container.__reactWarnedAboutChildrenConflict) {
17749          var props = container[internalPropsKey] || null;
17750          if (null !== props) {
17751            var fiber = getInstanceFromNode(container);
17752            null !== fiber && ("string" === typeof props.children || "number" === typeof props.children ? (container.__reactWarnedAboutChildrenConflict = true, runWithFiberInDEV(fiber, function() {
17753              console.error(
17754                'Cannot use a ref on a React element as a container to `createRoot` or `createPortal` if that element also sets "children" text content using React. It should be a leaf with no children. Otherwise it\'s ambiguous which children should be used.'
17755              );
17756            })) : null != props.dangerouslySetInnerHTML && (container.__reactWarnedAboutChildrenConflict = true, runWithFiberInDEV(fiber, function() {
17757              console.error(
17758                'Cannot use a ref on a React element as a container to `createRoot` or `createPortal` if that element also sets "dangerouslySetInnerHTML" using React. It should be a leaf with no children. Otherwise it\'s ambiguous which children should be used.'
17759              );
17760            })));
17761          }
17762        }
17763      }
17764      function isSingletonScope(type) {
17765        return "head" === type;
17766      }
17767      function removeChild(parentInstance, child) {
17768        parentInstance.removeChild(child);
17769      }
17770      function removeChildFromContainer(container, child) {
17771        (9 === container.nodeType ? container.body : "HTML" === container.nodeName ? container.ownerDocument.body : container).removeChild(child);
17772      }
17773      function clearHydrationBoundary(parentInstance, hydrationInstance) {
17774        var node = hydrationInstance, depth = 0;
17775        do {
17776          var nextNode = node.nextSibling;
17777          parentInstance.removeChild(node);
17778          if (nextNode && 8 === nextNode.nodeType)
17779            if (node = nextNode.data, node === SUSPENSE_END_DATA || node === ACTIVITY_END_DATA) {
17780              if (0 === depth) {
17781                parentInstance.removeChild(nextNode);
17782                retryIfBlockedOn(hydrationInstance);
17783                return;
17784              }
17785              depth--;
17786            } else if (node === SUSPENSE_START_DATA || node === SUSPENSE_PENDING_START_DATA || node === SUSPENSE_QUEUED_START_DATA || node === SUSPENSE_FALLBACK_START_DATA || node === ACTIVITY_START_DATA)
17787              depth++;
17788            else if (node === PREAMBLE_CONTRIBUTION_HTML)
17789              releaseSingletonInstance(
17790                parentInstance.ownerDocument.documentElement
17791              );
17792            else if (node === PREAMBLE_CONTRIBUTION_HEAD) {
17793              node = parentInstance.ownerDocument.head;
17794              releaseSingletonInstance(node);
17795              for (var node$jscomp$0 = node.firstChild; node$jscomp$0; ) {
17796                var nextNode$jscomp$0 = node$jscomp$0.nextSibling, nodeName = node$jscomp$0.nodeName;
17797                node$jscomp$0[internalHoistableMarker] || "SCRIPT" === nodeName || "STYLE" === nodeName || "LINK" === nodeName && "stylesheet" === node$jscomp$0.rel.toLowerCase() || node.removeChild(node$jscomp$0);
17798                node$jscomp$0 = nextNode$jscomp$0;
17799              }
17800            } else
17801              node === PREAMBLE_CONTRIBUTION_BODY && releaseSingletonInstance(parentInstance.ownerDocument.body);
17802          node = nextNode;
17803        } while (node);
17804        retryIfBlockedOn(hydrationInstance);
17805      }
17806      function hideOrUnhideDehydratedBoundary(suspenseInstance, isHidden) {
17807        var node = suspenseInstance;
17808        suspenseInstance = 0;
17809        do {
17810          var nextNode = node.nextSibling;
17811          1 === node.nodeType ? isHidden ? (node._stashedDisplay = node.style.display, node.style.display = "none") : (node.style.display = node._stashedDisplay || "", "" === node.getAttribute("style") && node.removeAttribute("style")) : 3 === node.nodeType && (isHidden ? (node._stashedText = node.nodeValue, node.nodeValue = "") : node.nodeValue = node._stashedText || "");
17812          if (nextNode && 8 === nextNode.nodeType)
17813            if (node = nextNode.data, node === SUSPENSE_END_DATA)
17814              if (0 === suspenseInstance) break;
17815              else suspenseInstance--;
17816            else
17817              node !== SUSPENSE_START_DATA && node !== SUSPENSE_PENDING_START_DATA && node !== SUSPENSE_QUEUED_START_DATA && node !== SUSPENSE_FALLBACK_START_DATA || suspenseInstance++;
17818          node = nextNode;
17819        } while (node);
17820      }
17821      function hideDehydratedBoundary(suspenseInstance) {
17822        hideOrUnhideDehydratedBoundary(suspenseInstance, true);
17823      }
17824      function hideInstance(instance) {
17825        instance = instance.style;
17826        "function" === typeof instance.setProperty ? instance.setProperty("display", "none", "important") : instance.display = "none";
17827      }
17828      function hideTextInstance(textInstance) {
17829        textInstance.nodeValue = "";
17830      }
17831      function unhideDehydratedBoundary(dehydratedInstance) {
17832        hideOrUnhideDehydratedBoundary(dehydratedInstance, false);
17833      }
17834      function unhideInstance(instance, props) {
17835        props = props[STYLE];
17836        props = void 0 !== props && null !== props && props.hasOwnProperty("display") ? props.display : null;
17837        instance.style.display = null == props || "boolean" === typeof props ? "" : ("" + props).trim();
17838      }
17839      function unhideTextInstance(textInstance, text) {
17840        textInstance.nodeValue = text;
17841      }
17842      function clearContainerSparingly(container) {
17843        var nextNode = container.firstChild;
17844        nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);
17845        for (; nextNode; ) {
17846          var node = nextNode;
17847          nextNode = nextNode.nextSibling;
17848          switch (node.nodeName) {
17849            case "HTML":
17850            case "HEAD":
17851            case "BODY":
17852              clearContainerSparingly(node);
17853              detachDeletedInstance(node);
17854              continue;
17855            case "SCRIPT":
17856            case "STYLE":
17857              continue;
17858            case "LINK":
17859              if ("stylesheet" === node.rel.toLowerCase()) continue;
17860          }
17861          container.removeChild(node);
17862        }
17863      }
17864      function canHydrateInstance(instance, type, props, inRootOrSingleton) {
17865        for (; 1 === instance.nodeType; ) {
17866          var anyProps = props;
17867          if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {
17868            if (!inRootOrSingleton && ("INPUT" !== instance.nodeName || "hidden" !== instance.type))
17869              break;
17870          } else if (!inRootOrSingleton)
17871            if ("input" === type && "hidden" === instance.type) {
17872              checkAttributeStringCoercion(anyProps.name, "name");
17873              var name = null == anyProps.name ? null : "" + anyProps.name;
17874              if ("hidden" === anyProps.type && instance.getAttribute("name") === name)
17875                return instance;
17876            } else return instance;
17877          else if (!instance[internalHoistableMarker])
17878            switch (type) {
17879              case "meta":
17880                if (!instance.hasAttribute("itemprop")) break;
17881                return instance;
17882              case "link":
17883                name = instance.getAttribute("rel");
17884                if ("stylesheet" === name && instance.hasAttribute("data-precedence"))
17885                  break;
17886                else if (name !== anyProps.rel || instance.getAttribute("href") !== (null == anyProps.href || "" === anyProps.href ? null : anyProps.href) || instance.getAttribute("crossorigin") !== (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) || instance.getAttribute("title") !== (null == anyProps.title ? null : anyProps.title))
17887                  break;
17888                return instance;
17889              case "style":
17890                if (instance.hasAttribute("data-precedence")) break;
17891                return instance;
17892              case "script":
17893                name = instance.getAttribute("src");
17894                if ((name !== (null == anyProps.src ? null : anyProps.src) || instance.getAttribute("type") !== (null == anyProps.type ? null : anyProps.type) || instance.getAttribute("crossorigin") !== (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) && name && instance.hasAttribute("async") && !instance.hasAttribute("itemprop"))
17895                  break;
17896                return instance;
17897              default:
17898                return instance;
17899            }
17900          instance = getNextHydratable(instance.nextSibling);
17901          if (null === instance) break;
17902        }
17903        return null;
17904      }
17905      function canHydrateTextInstance(instance, text, inRootOrSingleton) {
17906        if ("" === text) return null;
17907        for (; 3 !== instance.nodeType; ) {
17908          if ((1 !== instance.nodeType || "INPUT" !== instance.nodeName || "hidden" !== instance.type) && !inRootOrSingleton)
17909            return null;
17910          instance = getNextHydratable(instance.nextSibling);
17911          if (null === instance) return null;
17912        }
17913        return instance;
17914      }
17915      function canHydrateHydrationBoundary(instance, inRootOrSingleton) {
17916        for (; 8 !== instance.nodeType; ) {
17917          if ((1 !== instance.nodeType || "INPUT" !== instance.nodeName || "hidden" !== instance.type) && !inRootOrSingleton)
17918            return null;
17919          instance = getNextHydratable(instance.nextSibling);
17920          if (null === instance) return null;
17921        }
17922        return instance;
17923      }
17924      function isSuspenseInstancePending(instance) {
17925        return instance.data === SUSPENSE_PENDING_START_DATA || instance.data === SUSPENSE_QUEUED_START_DATA;
17926      }
17927      function isSuspenseInstanceFallback(instance) {
17928        return instance.data === SUSPENSE_FALLBACK_START_DATA || instance.data === SUSPENSE_PENDING_START_DATA && instance.ownerDocument.readyState !== DOCUMENT_READY_STATE_LOADING;
17929      }
17930      function registerSuspenseInstanceRetry(instance, callback) {
17931        var ownerDocument = instance.ownerDocument;
17932        if (instance.data === SUSPENSE_QUEUED_START_DATA)
17933          instance._reactRetry = callback;
17934        else if (instance.data !== SUSPENSE_PENDING_START_DATA || ownerDocument.readyState !== DOCUMENT_READY_STATE_LOADING)
17935          callback();
17936        else {
17937          var listener = function() {
17938            callback();
17939            ownerDocument.removeEventListener("DOMContentLoaded", listener);
17940          };
17941          ownerDocument.addEventListener("DOMContentLoaded", listener);
17942          instance._reactRetry = listener;
17943        }
17944      }
17945      function getNextHydratable(node) {
17946        for (; null != node; node = node.nextSibling) {
17947          var nodeType = node.nodeType;
17948          if (1 === nodeType || 3 === nodeType) break;
17949          if (8 === nodeType) {
17950            nodeType = node.data;
17951            if (nodeType === SUSPENSE_START_DATA || nodeType === SUSPENSE_FALLBACK_START_DATA || nodeType === SUSPENSE_PENDING_START_DATA || nodeType === SUSPENSE_QUEUED_START_DATA || nodeType === ACTIVITY_START_DATA || nodeType === FORM_STATE_IS_MATCHING || nodeType === FORM_STATE_IS_NOT_MATCHING)
17952              break;
17953            if (nodeType === SUSPENSE_END_DATA || nodeType === ACTIVITY_END_DATA)
17954              return null;
17955          }
17956        }
17957        return node;
17958      }
17959      function describeHydratableInstanceForDevWarnings(instance) {
17960        if (1 === instance.nodeType) {
17961          for (var JSCompiler_temp_const = instance.nodeName.toLowerCase(), serverDifferences = {}, attributes = instance.attributes, i3 = 0; i3 < attributes.length; i3++) {
17962            var attr = attributes[i3];
17963            serverDifferences[getPropNameFromAttributeName(attr.name)] = "style" === attr.name.toLowerCase() ? getStylesObjectFromElement(instance) : attr.value;
17964          }
17965          return { type: JSCompiler_temp_const, props: serverDifferences };
17966        }
17967        return 8 === instance.nodeType ? instance.data === ACTIVITY_START_DATA ? { type: "Activity", props: {} } : { type: "Suspense", props: {} } : instance.nodeValue;
17968      }
17969      function diffHydratedTextForDevWarnings(textInstance, text, parentProps) {
17970        return null === parentProps || true !== parentProps[SUPPRESS_HYDRATION_WARNING] ? (textInstance.nodeValue === text ? textInstance = null : (text = normalizeMarkupForTextOrAttribute(text), textInstance = normalizeMarkupForTextOrAttribute(textInstance.nodeValue) === text ? null : textInstance.nodeValue), textInstance) : null;
17971      }
17972      function getNextHydratableInstanceAfterHydrationBoundary(hydrationInstance) {
17973        hydrationInstance = hydrationInstance.nextSibling;
17974        for (var depth = 0; hydrationInstance; ) {
17975          if (8 === hydrationInstance.nodeType) {
17976            var data = hydrationInstance.data;
17977            if (data === SUSPENSE_END_DATA || data === ACTIVITY_END_DATA) {
17978              if (0 === depth)
17979                return getNextHydratable(hydrationInstance.nextSibling);
17980              depth--;
17981            } else
17982              data !== SUSPENSE_START_DATA && data !== SUSPENSE_FALLBACK_START_DATA && data !== SUSPENSE_PENDING_START_DATA && data !== SUSPENSE_QUEUED_START_DATA && data !== ACTIVITY_START_DATA || depth++;
17983          }
17984          hydrationInstance = hydrationInstance.nextSibling;
17985        }
17986        return null;
17987      }
17988      function getParentHydrationBoundary(targetInstance) {
17989        targetInstance = targetInstance.previousSibling;
17990        for (var depth = 0; targetInstance; ) {
17991          if (8 === targetInstance.nodeType) {
17992            var data = targetInstance.data;
17993            if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA || data === SUSPENSE_QUEUED_START_DATA || data === ACTIVITY_START_DATA) {
17994              if (0 === depth) return targetInstance;
17995              depth--;
17996            } else
17997              data !== SUSPENSE_END_DATA && data !== ACTIVITY_END_DATA || depth++;
17998          }
17999          targetInstance = targetInstance.previousSibling;
18000        }
18001        return null;
18002      }
18003      function commitHydratedContainer(container) {
18004        retryIfBlockedOn(container);
18005      }
18006      function commitHydratedActivityInstance(activityInstance) {
18007        retryIfBlockedOn(activityInstance);
18008      }
18009      function commitHydratedSuspenseInstance(suspenseInstance) {
18010        retryIfBlockedOn(suspenseInstance);
18011      }
18012      function resolveSingletonInstance(type, props, rootContainerInstance, hostContext, validateDOMNestingDev) {
18013        validateDOMNestingDev && validateDOMNesting(type, hostContext.ancestorInfo);
18014        props = getOwnerDocumentFromRootContainer(rootContainerInstance);
18015        switch (type) {
18016          case "html":
18017            type = props.documentElement;
18018            if (!type)
18019              throw Error(
18020                "React expected an <html> element (document.documentElement) to exist in the Document but one was not found. React never removes the documentElement for any Document it renders into so the cause is likely in some other script running on this page."
18021              );
18022            return type;
18023          case "head":
18024            type = props.head;
18025            if (!type)
18026              throw Error(
18027                "React expected a <head> element (document.head) to exist in the Document but one was not found. React never removes the head for any Document it renders into so the cause is likely in some other script running on this page."
18028              );
18029            return type;
18030          case "body":
18031            type = props.body;
18032            if (!type)
18033              throw Error(
18034                "React expected a <body> element (document.body) to exist in the Document but one was not found. React never removes the body for any Document it renders into so the cause is likely in some other script running on this page."
18035              );
18036            return type;
18037          default:
18038            throw Error(
18039              "resolveSingletonInstance was called with an element type that is not supported. This is a bug in React."
18040            );
18041        }
18042      }
18043      function acquireSingletonInstance(type, props, instance, internalInstanceHandle) {
18044        if (!instance[internalContainerInstanceKey] && getInstanceFromNode(instance)) {
18045          var tagName = instance.tagName.toLowerCase();
18046          console.error(
18047            "You are mounting a new %s component when a previous one has not first unmounted. It is an error to render more than one %s component at a time and attributes and children of these components will likely fail in unpredictable ways. Please only render a single instance of <%s> and if you need to mount a new one, ensure any previous ones have unmounted first.",
18048            tagName,
18049            tagName,
18050            tagName
18051          );
18052        }
18053        switch (type) {
18054          case "html":
18055          case "head":
18056          case "body":
18057            break;
18058          default:
18059            console.error(
18060              "acquireSingletonInstance was called with an element type that is not supported. This is a bug in React."
18061            );
18062        }
18063        for (tagName = instance.attributes; tagName.length; )
18064          instance.removeAttributeNode(tagName[0]);
18065        setInitialProperties(instance, type, props);
18066        instance[internalInstanceKey] = internalInstanceHandle;
18067        instance[internalPropsKey] = props;
18068      }
18069      function releaseSingletonInstance(instance) {
18070        for (var attributes = instance.attributes; attributes.length; )
18071          instance.removeAttributeNode(attributes[0]);
18072        detachDeletedInstance(instance);
18073      }
18074      function getHoistableRoot(container) {
18075        return "function" === typeof container.getRootNode ? container.getRootNode() : 9 === container.nodeType ? container : container.ownerDocument;
18076      }
18077      function preconnectAs(rel, href, crossOrigin) {
18078        var ownerDocument = globalDocument;
18079        if (ownerDocument && "string" === typeof href && href) {
18080          var limitedEscapedHref = escapeSelectorAttributeValueInsideDoubleQuotes(href);
18081          limitedEscapedHref = 'link[rel="' + rel + '"][href="' + limitedEscapedHref + '"]';
18082          "string" === typeof crossOrigin && (limitedEscapedHref += '[crossorigin="' + crossOrigin + '"]');
18083          preconnectsSet.has(limitedEscapedHref) || (preconnectsSet.add(limitedEscapedHref), rel = { rel, crossOrigin, href }, null === ownerDocument.querySelector(limitedEscapedHref) && (href = ownerDocument.createElement("link"), setInitialProperties(href, "link", rel), markNodeAsHoistable(href), ownerDocument.head.appendChild(href)));
18084        }
18085      }
18086      function getResource(type, currentProps, pendingProps, currentResource) {
18087        var resourceRoot = (resourceRoot = rootInstanceStackCursor.current) ? getHoistableRoot(resourceRoot) : null;
18088        if (!resourceRoot)
18089          throw Error(
18090            '"resourceRoot" was expected to exist. This is a bug in React.'
18091          );
18092        switch (type) {
18093          case "meta":
18094          case "title":
18095            return null;
18096          case "style":
18097            return "string" === typeof pendingProps.precedence && "string" === typeof pendingProps.href ? (pendingProps = getStyleKey(pendingProps.href), currentProps = getResourcesFromRoot(resourceRoot).hoistableStyles, currentResource = currentProps.get(pendingProps), currentResource || (currentResource = {
18098              type: "style",
18099              instance: null,
18100              count: 0,
18101              state: null
18102            }, currentProps.set(pendingProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null };
18103          case "link":
18104            if ("stylesheet" === pendingProps.rel && "string" === typeof pendingProps.href && "string" === typeof pendingProps.precedence) {
18105              type = getStyleKey(pendingProps.href);
18106              var _styles = getResourcesFromRoot(resourceRoot).hoistableStyles, _resource = _styles.get(type);
18107              if (!_resource && (resourceRoot = resourceRoot.ownerDocument || resourceRoot, _resource = {
18108                type: "stylesheet",
18109                instance: null,
18110                count: 0,
18111                state: { loading: NotLoaded, preload: null }
18112              }, _styles.set(type, _resource), (_styles = resourceRoot.querySelector(
18113                getStylesheetSelectorFromKey(type)
18114              )) && !_styles._p && (_resource.instance = _styles, _resource.state.loading = Loaded | Inserted), !preloadPropsMap.has(type))) {
18115                var preloadProps = {
18116                  rel: "preload",
18117                  as: "style",
18118                  href: pendingProps.href,
18119                  crossOrigin: pendingProps.crossOrigin,
18120                  integrity: pendingProps.integrity,
18121                  media: pendingProps.media,
18122                  hrefLang: pendingProps.hrefLang,
18123                  referrerPolicy: pendingProps.referrerPolicy
18124                };
18125                preloadPropsMap.set(type, preloadProps);
18126                _styles || preloadStylesheet(
18127                  resourceRoot,
18128                  type,
18129                  preloadProps,
18130                  _resource.state
18131                );
18132              }
18133              if (currentProps && null === currentResource)
18134                throw pendingProps = "\n\n  - " + describeLinkForResourceErrorDEV(currentProps) + "\n  + " + describeLinkForResourceErrorDEV(pendingProps), Error(
18135                  "Expected <link> not to update to be updated to a stylesheet with precedence. Check the `rel`, `href`, and `precedence` props of this component. Alternatively, check whether two different <link> components render in the same slot or share the same key." + pendingProps
18136                );
18137              return _resource;
18138            }
18139            if (currentProps && null !== currentResource)
18140              throw pendingProps = "\n\n  - " + describeLinkForResourceErrorDEV(currentProps) + "\n  + " + describeLinkForResourceErrorDEV(pendingProps), Error(
18141                "Expected stylesheet with precedence to not be updated to a different kind of <link>. Check the `rel`, `href`, and `precedence` props of this component. Alternatively, check whether two different <link> components render in the same slot or share the same key." + pendingProps
18142              );
18143            return null;
18144          case "script":
18145            return currentProps = pendingProps.async, pendingProps = pendingProps.src, "string" === typeof pendingProps && currentProps && "function" !== typeof currentProps && "symbol" !== typeof currentProps ? (pendingProps = getScriptKey(pendingProps), currentProps = getResourcesFromRoot(resourceRoot).hoistableScripts, currentResource = currentProps.get(pendingProps), currentResource || (currentResource = {
18146              type: "script",
18147              instance: null,
18148              count: 0,
18149              state: null
18150            }, currentProps.set(pendingProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null };
18151          default:
18152            throw Error(
18153              'getResource encountered a type it did not expect: "' + type + '". this is a bug in React.'
18154            );
18155        }
18156      }
18157      function describeLinkForResourceErrorDEV(props) {
18158        var describedProps = 0, description = "<link";
18159        "string" === typeof props.rel ? (describedProps++, description += ' rel="' + props.rel + '"') : hasOwnProperty.call(props, "rel") && (describedProps++, description += ' rel="' + (null === props.rel ? "null" : "invalid type " + typeof props.rel) + '"');
18160        "string" === typeof props.href ? (describedProps++, description += ' href="' + props.href + '"') : hasOwnProperty.call(props, "href") && (describedProps++, description += ' href="' + (null === props.href ? "null" : "invalid type " + typeof props.href) + '"');
18161        "string" === typeof props.precedence ? (describedProps++, description += ' precedence="' + props.precedence + '"') : hasOwnProperty.call(props, "precedence") && (describedProps++, description += " precedence={" + (null === props.precedence ? "null" : "invalid type " + typeof props.precedence) + "}");
18162        Object.getOwnPropertyNames(props).length > describedProps && (description += " ...");
18163        return description + " />";
18164      }
18165      function getStyleKey(href) {
18166        return 'href="' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '"';
18167      }
18168      function getStylesheetSelectorFromKey(key) {
18169        return 'link[rel="stylesheet"][' + key + "]";
18170      }
18171      function stylesheetPropsFromRawProps(rawProps) {
18172        return assign({}, rawProps, {
18173          "data-precedence": rawProps.precedence,
18174          precedence: null
18175        });
18176      }
18177      function preloadStylesheet(ownerDocument, key, preloadProps, state) {
18178        ownerDocument.querySelector(
18179          'link[rel="preload"][as="style"][' + key + "]"
18180        ) ? state.loading = Loaded : (key = ownerDocument.createElement("link"), state.preload = key, key.addEventListener("load", function() {
18181          return state.loading |= Loaded;
18182        }), key.addEventListener("error", function() {
18183          return state.loading |= Errored;
18184        }), setInitialProperties(key, "link", preloadProps), markNodeAsHoistable(key), ownerDocument.head.appendChild(key));
18185      }
18186      function getScriptKey(src) {
18187        return '[src="' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '"]';
18188      }
18189      function getScriptSelectorFromKey(key) {
18190        return "script[async]" + key;
18191      }
18192      function acquireResource(hoistableRoot, resource, props) {
18193        resource.count++;
18194        if (null === resource.instance)
18195          switch (resource.type) {
18196            case "style":
18197              var instance = hoistableRoot.querySelector(
18198                'style[data-href~="' + escapeSelectorAttributeValueInsideDoubleQuotes(props.href) + '"]'
18199              );
18200              if (instance)
18201                return resource.instance = instance, markNodeAsHoistable(instance), instance;
18202              var styleProps = assign({}, props, {
18203                "data-href": props.href,
18204                "data-precedence": props.precedence,
18205                href: null,
18206                precedence: null
18207              });
18208              instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement("style");
18209              markNodeAsHoistable(instance);
18210              setInitialProperties(instance, "style", styleProps);
18211              insertStylesheet(instance, props.precedence, hoistableRoot);
18212              return resource.instance = instance;
18213            case "stylesheet":
18214              styleProps = getStyleKey(props.href);
18215              var _instance = hoistableRoot.querySelector(
18216                getStylesheetSelectorFromKey(styleProps)
18217              );
18218              if (_instance)
18219                return resource.state.loading |= Inserted, resource.instance = _instance, markNodeAsHoistable(_instance), _instance;
18220              instance = stylesheetPropsFromRawProps(props);
18221              (styleProps = preloadPropsMap.get(styleProps)) && adoptPreloadPropsForStylesheet(instance, styleProps);
18222              _instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement("link");
18223              markNodeAsHoistable(_instance);
18224              var linkInstance = _instance;
18225              linkInstance._p = new Promise(function(resolve, reject) {
18226                linkInstance.onload = resolve;
18227                linkInstance.onerror = reject;
18228              });
18229              setInitialProperties(_instance, "link", instance);
18230              resource.state.loading |= Inserted;
18231              insertStylesheet(_instance, props.precedence, hoistableRoot);
18232              return resource.instance = _instance;
18233            case "script":
18234              _instance = getScriptKey(props.src);
18235              if (styleProps = hoistableRoot.querySelector(
18236                getScriptSelectorFromKey(_instance)
18237              ))
18238                return resource.instance = styleProps, markNodeAsHoistable(styleProps), styleProps;
18239              instance = props;
18240              if (styleProps = preloadPropsMap.get(_instance))
18241                instance = assign({}, props), adoptPreloadPropsForScript(instance, styleProps);
18242              hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;
18243              styleProps = hoistableRoot.createElement("script");
18244              markNodeAsHoistable(styleProps);
18245              setInitialProperties(styleProps, "link", instance);
18246              hoistableRoot.head.appendChild(styleProps);
18247              return resource.instance = styleProps;
18248            case "void":
18249              return null;
18250            default:
18251              throw Error(
18252                'acquireResource encountered a resource type it did not expect: "' + resource.type + '". this is a bug in React.'
18253              );
18254          }
18255        else
18256          "stylesheet" === resource.type && (resource.state.loading & Inserted) === NotLoaded && (instance = resource.instance, resource.state.loading |= Inserted, insertStylesheet(instance, props.precedence, hoistableRoot));
18257        return resource.instance;
18258      }
18259      function insertStylesheet(instance, precedence, root3) {
18260        for (var nodes = root3.querySelectorAll(
18261          'link[rel="stylesheet"][data-precedence],style[data-precedence]'
18262        ), last = nodes.length ? nodes[nodes.length - 1] : null, prior = last, i3 = 0; i3 < nodes.length; i3++) {
18263          var node = nodes[i3];
18264          if (node.dataset.precedence === precedence) prior = node;
18265          else if (prior !== last) break;
18266        }
18267        prior ? prior.parentNode.insertBefore(instance, prior.nextSibling) : (precedence = 9 === root3.nodeType ? root3.head : root3, precedence.insertBefore(instance, precedence.firstChild));
18268      }
18269      function adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {
18270        null == stylesheetProps.crossOrigin && (stylesheetProps.crossOrigin = preloadProps.crossOrigin);
18271        null == stylesheetProps.referrerPolicy && (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);
18272        null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);
18273      }
18274      function adoptPreloadPropsForScript(scriptProps, preloadProps) {
18275        null == scriptProps.crossOrigin && (scriptProps.crossOrigin = preloadProps.crossOrigin);
18276        null == scriptProps.referrerPolicy && (scriptProps.referrerPolicy = preloadProps.referrerPolicy);
18277        null == scriptProps.integrity && (scriptProps.integrity = preloadProps.integrity);
18278      }
18279      function getHydratableHoistableCache(type, keyAttribute, ownerDocument) {
18280        if (null === tagCaches) {
18281          var cache2 = /* @__PURE__ */ new Map();
18282          var caches = tagCaches = /* @__PURE__ */ new Map();
18283          caches.set(ownerDocument, cache2);
18284        } else
18285          caches = tagCaches, cache2 = caches.get(ownerDocument), cache2 || (cache2 = /* @__PURE__ */ new Map(), caches.set(ownerDocument, cache2));
18286        if (cache2.has(type)) return cache2;
18287        cache2.set(type, null);
18288        ownerDocument = ownerDocument.getElementsByTagName(type);
18289        for (caches = 0; caches < ownerDocument.length; caches++) {
18290          var node = ownerDocument[caches];
18291          if (!(node[internalHoistableMarker] || node[internalInstanceKey] || "link" === type && "stylesheet" === node.getAttribute("rel")) && node.namespaceURI !== SVG_NAMESPACE) {
18292            var nodeKey = node.getAttribute(keyAttribute) || "";
18293            nodeKey = type + nodeKey;
18294            var existing = cache2.get(nodeKey);
18295            existing ? existing.push(node) : cache2.set(nodeKey, [node]);
18296          }
18297        }
18298        return cache2;
18299      }
18300      function mountHoistable(hoistableRoot, type, instance) {
18301        hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;
18302        hoistableRoot.head.insertBefore(
18303          instance,
18304          "title" === type ? hoistableRoot.querySelector("head > title") : null
18305        );
18306      }
18307      function isHostHoistableType(type, props, hostContext) {
18308        var outsideHostContainerContext = !hostContext.ancestorInfo.containerTagInScope;
18309        if (hostContext.context === HostContextNamespaceSvg || null != props.itemProp)
18310          return !outsideHostContainerContext || null == props.itemProp || "meta" !== type && "title" !== type && "style" !== type && "link" !== type && "script" !== type || console.error(
18311            "Cannot render a <%s> outside the main document if it has an `itemProp` prop. `itemProp` suggests the tag belongs to an `itemScope` which can appear anywhere in the DOM. If you were intending for React to hoist this <%s> remove the `itemProp` prop. Otherwise, try moving this tag into the <head> or <body> of the Document.",
18312            type,
18313            type
18314          ), false;
18315        switch (type) {
18316          case "meta":
18317          case "title":
18318            return true;
18319          case "style":
18320            if ("string" !== typeof props.precedence || "string" !== typeof props.href || "" === props.href) {
18321              outsideHostContainerContext && console.error(
18322                'Cannot render a <style> outside the main document without knowing its precedence and a unique href key. React can hoist and deduplicate <style> tags if you provide a `precedence` prop along with an `href` prop that does not conflict with the `href` values used in any other hoisted <style> or <link rel="stylesheet" ...> tags.  Note that hoisting <style> tags is considered an advanced feature that most will not use directly. Consider moving the <style> tag to the <head> or consider adding a `precedence="default"` and `href="some unique resource identifier"`.'
18323              );
18324              break;
18325            }
18326            return true;
18327          case "link":
18328            if ("string" !== typeof props.rel || "string" !== typeof props.href || "" === props.href || props.onLoad || props.onError) {
18329              if ("stylesheet" === props.rel && "string" === typeof props.precedence) {
18330                type = props.href;
18331                var onError = props.onError, disabled = props.disabled;
18332                hostContext = [];
18333                props.onLoad && hostContext.push("`onLoad`");
18334                onError && hostContext.push("`onError`");
18335                null != disabled && hostContext.push("`disabled`");
18336                onError = propNamesListJoin(hostContext, "and");
18337                onError += 1 === hostContext.length ? " prop" : " props";
18338                disabled = 1 === hostContext.length ? "an " + onError : "the " + onError;
18339                hostContext.length && console.error(
18340                  'React encountered a <link rel="stylesheet" href="%s" ... /> with a `precedence` prop that also included %s. The presence of loading and error handlers indicates an intent to manage the stylesheet loading state from your from your Component code and React will not hoist or deduplicate this stylesheet. If your intent was to have React hoist and deduplciate this stylesheet using the `precedence` prop remove the %s, otherwise remove the `precedence` prop.',
18341                  type,
18342                  disabled,
18343                  onError
18344                );
18345              }
18346              outsideHostContainerContext && ("string" !== typeof props.rel || "string" !== typeof props.href || "" === props.href ? console.error(
18347                "Cannot render a <link> outside the main document without a `rel` and `href` prop. Try adding a `rel` and/or `href` prop to this <link> or moving the link into the <head> tag"
18348              ) : (props.onError || props.onLoad) && console.error(
18349                "Cannot render a <link> with onLoad or onError listeners outside the main document. Try removing onLoad={...} and onError={...} or moving it into the root <head> tag or somewhere in the <body>."
18350              ));
18351              break;
18352            }
18353            switch (props.rel) {
18354              case "stylesheet":
18355                return type = props.precedence, props = props.disabled, "string" !== typeof type && outsideHostContainerContext && console.error(
18356                  'Cannot render a <link rel="stylesheet" /> outside the main document without knowing its precedence. Consider adding precedence="default" or moving it into the root <head> tag.'
18357                ), "string" === typeof type && null == props;
18358              default:
18359                return true;
18360            }
18361          case "script":
18362            type = props.async && "function" !== typeof props.async && "symbol" !== typeof props.async;
18363            if (!type || props.onLoad || props.onError || !props.src || "string" !== typeof props.src) {
18364              outsideHostContainerContext && (type ? props.onLoad || props.onError ? console.error(
18365                "Cannot render a <script> with onLoad or onError listeners outside the main document. Try removing onLoad={...} and onError={...} or moving it into the root <head> tag or somewhere in the <body>."
18366              ) : console.error(
18367                "Cannot render a <script> outside the main document without `async={true}` and a non-empty `src` prop. Ensure there is a valid `src` and either make the script async or move it into the root <head> tag or somewhere in the <body>."
18368              ) : console.error(
18369                'Cannot render a sync or defer <script> outside the main document without knowing its order. Try adding async="" or moving it into the root <head> tag.'
18370              ));
18371              break;
18372            }
18373            return true;
18374          case "noscript":
18375          case "template":
18376            outsideHostContainerContext && console.error(
18377              "Cannot render <%s> outside the main document. Try moving it into the root <head> tag.",
18378              type
18379            );
18380        }
18381        return false;
18382      }
18383      function preloadResource(resource) {
18384        return "stylesheet" === resource.type && (resource.state.loading & Settled) === NotLoaded ? false : true;
18385      }
18386      function suspendResource(state, hoistableRoot, resource, props) {
18387        if ("stylesheet" === resource.type && ("string" !== typeof props.media || false !== matchMedia(props.media).matches) && (resource.state.loading & Inserted) === NotLoaded) {
18388          if (null === resource.instance) {
18389            var key = getStyleKey(props.href), instance = hoistableRoot.querySelector(
18390              getStylesheetSelectorFromKey(key)
18391            );
18392            if (instance) {
18393              hoistableRoot = instance._p;
18394              null !== hoistableRoot && "object" === typeof hoistableRoot && "function" === typeof hoistableRoot.then && (state.count++, state = onUnsuspend.bind(state), hoistableRoot.then(state, state));
18395              resource.state.loading |= Inserted;
18396              resource.instance = instance;
18397              markNodeAsHoistable(instance);
18398              return;
18399            }
18400            instance = hoistableRoot.ownerDocument || hoistableRoot;
18401            props = stylesheetPropsFromRawProps(props);
18402            (key = preloadPropsMap.get(key)) && adoptPreloadPropsForStylesheet(props, key);
18403            instance = instance.createElement("link");
18404            markNodeAsHoistable(instance);
18405            var linkInstance = instance;
18406            linkInstance._p = new Promise(function(resolve, reject) {
18407              linkInstance.onload = resolve;
18408              linkInstance.onerror = reject;
18409            });
18410            setInitialProperties(instance, "link", props);
18411            resource.instance = instance;
18412          }
18413          null === state.stylesheets && (state.stylesheets = /* @__PURE__ */ new Map());
18414          state.stylesheets.set(resource, hoistableRoot);
18415          (hoistableRoot = resource.state.preload) && (resource.state.loading & Settled) === NotLoaded && (state.count++, resource = onUnsuspend.bind(state), hoistableRoot.addEventListener("load", resource), hoistableRoot.addEventListener("error", resource));
18416        }
18417      }
18418      function waitForCommitToBeReady(state, timeoutOffset) {
18419        state.stylesheets && 0 === state.count && insertSuspendedStylesheets(state, state.stylesheets);
18420        return 0 < state.count || 0 < state.imgCount ? function(commit) {
18421          var stylesheetTimer = setTimeout(function() {
18422            state.stylesheets && insertSuspendedStylesheets(state, state.stylesheets);
18423            if (state.unsuspend) {
18424              var unsuspend = state.unsuspend;
18425              state.unsuspend = null;
18426              unsuspend();
18427            }
18428          }, SUSPENSEY_STYLESHEET_TIMEOUT + timeoutOffset);
18429          0 < state.imgBytes && 0 === estimatedBytesWithinLimit && (estimatedBytesWithinLimit = 125 * estimateBandwidth() * SUSPENSEY_IMAGE_TIME_ESTIMATE);
18430          var imgTimer = setTimeout(
18431            function() {
18432              state.waitingForImages = false;
18433              if (0 === state.count && (state.stylesheets && insertSuspendedStylesheets(state, state.stylesheets), state.unsuspend)) {
18434                var unsuspend = state.unsuspend;
18435                state.unsuspend = null;
18436                unsuspend();
18437              }
18438            },
18439            (state.imgBytes > estimatedBytesWithinLimit ? 50 : SUSPENSEY_IMAGE_TIMEOUT) + timeoutOffset
18440          );
18441          state.unsuspend = commit;
18442          return function() {
18443            state.unsuspend = null;
18444            clearTimeout(stylesheetTimer);
18445            clearTimeout(imgTimer);
18446          };
18447        } : null;
18448      }
18449      function onUnsuspend() {
18450        this.count--;
18451        if (0 === this.count && (0 === this.imgCount || !this.waitingForImages)) {
18452          if (this.stylesheets)
18453            insertSuspendedStylesheets(this, this.stylesheets);
18454          else if (this.unsuspend) {
18455            var unsuspend = this.unsuspend;
18456            this.unsuspend = null;
18457            unsuspend();
18458          }
18459        }
18460      }
18461      function insertSuspendedStylesheets(state, resources) {
18462        state.stylesheets = null;
18463        null !== state.unsuspend && (state.count++, precedencesByRoot = /* @__PURE__ */ new Map(), resources.forEach(insertStylesheetIntoRoot, state), precedencesByRoot = null, onUnsuspend.call(state));
18464      }
18465      function insertStylesheetIntoRoot(root3, resource) {
18466        if (!(resource.state.loading & Inserted)) {
18467          var precedences = precedencesByRoot.get(root3);
18468          if (precedences) var last = precedences.get(LAST_PRECEDENCE);
18469          else {
18470            precedences = /* @__PURE__ */ new Map();
18471            precedencesByRoot.set(root3, precedences);
18472            for (var nodes = root3.querySelectorAll(
18473              "link[data-precedence],style[data-precedence]"
18474            ), i3 = 0; i3 < nodes.length; i3++) {
18475              var node = nodes[i3];
18476              if ("LINK" === node.nodeName || "not all" !== node.getAttribute("media"))
18477                precedences.set(node.dataset.precedence, node), last = node;
18478            }
18479            last && precedences.set(LAST_PRECEDENCE, last);
18480          }
18481          nodes = resource.instance;
18482          node = nodes.getAttribute("data-precedence");
18483          i3 = precedences.get(node) || last;
18484          i3 === last && precedences.set(LAST_PRECEDENCE, nodes);
18485          precedences.set(node, nodes);
18486          this.count++;
18487          last = onUnsuspend.bind(this);
18488          nodes.addEventListener("load", last);
18489          nodes.addEventListener("error", last);
18490          i3 ? i3.parentNode.insertBefore(nodes, i3.nextSibling) : (root3 = 9 === root3.nodeType ? root3.head : root3, root3.insertBefore(nodes, root3.firstChild));
18491          resource.state.loading |= Inserted;
18492        }
18493      }
18494      function FiberRootNode(containerInfo, tag, hydrate, identifierPrefix, onUncaughtError, onCaughtError, onRecoverableError, onDefaultTransitionIndicator, formState) {
18495        this.tag = 1;
18496        this.containerInfo = containerInfo;
18497        this.pingCache = this.current = this.pendingChildren = null;
18498        this.timeoutHandle = noTimeout;
18499        this.callbackNode = this.next = this.pendingContext = this.context = this.cancelPendingCommit = null;
18500        this.callbackPriority = 0;
18501        this.expirationTimes = createLaneMap(-1);
18502        this.entangledLanes = this.shellSuspendCounter = this.errorRecoveryDisabledLanes = this.expiredLanes = this.warmLanes = this.pingedLanes = this.suspendedLanes = this.pendingLanes = 0;
18503        this.entanglements = createLaneMap(0);
18504        this.hiddenUpdates = createLaneMap(null);
18505        this.identifierPrefix = identifierPrefix;
18506        this.onUncaughtError = onUncaughtError;
18507        this.onCaughtError = onCaughtError;
18508        this.onRecoverableError = onRecoverableError;
18509        this.pooledCache = null;
18510        this.pooledCacheLanes = 0;
18511        this.formState = formState;
18512        this.incompleteTransitions = /* @__PURE__ */ new Map();
18513        this.passiveEffectDuration = this.effectDuration = -0;
18514        this.memoizedUpdaters = /* @__PURE__ */ new Set();
18515        containerInfo = this.pendingUpdatersLaneMap = [];
18516        for (tag = 0; 31 > tag; tag++) containerInfo.push(/* @__PURE__ */ new Set());
18517        this._debugRootType = hydrate ? "hydrateRoot()" : "createRoot()";
18518      }
18519      function createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, identifierPrefix, formState, onUncaughtError, onCaughtError, onRecoverableError, onDefaultTransitionIndicator) {
18520        containerInfo = new FiberRootNode(
18521          containerInfo,
18522          tag,
18523          hydrate,
18524          identifierPrefix,
18525          onUncaughtError,
18526          onCaughtError,
18527          onRecoverableError,
18528          onDefaultTransitionIndicator,
18529          formState
18530        );
18531        tag = ConcurrentMode;
18532        true === isStrictMode && (tag |= StrictLegacyMode | StrictEffectsMode);
18533        tag |= ProfileMode;
18534        isStrictMode = createFiber(3, null, null, tag);
18535        containerInfo.current = isStrictMode;
18536        isStrictMode.stateNode = containerInfo;
18537        tag = createCache();
18538        retainCache(tag);
18539        containerInfo.pooledCache = tag;
18540        retainCache(tag);
18541        isStrictMode.memoizedState = {
18542          element: initialChildren,
18543          isDehydrated: hydrate,
18544          cache: tag
18545        };
18546        initializeUpdateQueue(isStrictMode);
18547        return containerInfo;
18548      }
18549      function getContextForSubtree(parentComponent) {
18550        if (!parentComponent) return emptyContextObject;
18551        parentComponent = emptyContextObject;
18552        return parentComponent;
18553      }
18554      function updateContainerImpl(rootFiber, lane, element, container, parentComponent, callback) {
18555        if (injectedHook && "function" === typeof injectedHook.onScheduleFiberRoot)
18556          try {
18557            injectedHook.onScheduleFiberRoot(rendererID, container, element);
18558          } catch (err) {
18559            hasLoggedError || (hasLoggedError = true, console.error(
18560              "React instrumentation encountered an error: %o",
18561              err
18562            ));
18563          }
18564        parentComponent = getContextForSubtree(parentComponent);
18565        null === container.context ? container.context = parentComponent : container.pendingContext = parentComponent;
18566        isRendering && null !== current && !didWarnAboutNestedUpdates && (didWarnAboutNestedUpdates = true, console.error(
18567          "Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate.\n\nCheck the render method of %s.",
18568          getComponentNameFromFiber(current) || "Unknown"
18569        ));
18570        container = createUpdate(lane);
18571        container.payload = { element };
18572        callback = void 0 === callback ? null : callback;
18573        null !== callback && ("function" !== typeof callback && console.error(
18574          "Expected the last optional `callback` argument to be a function. Instead received: %s.",
18575          callback
18576        ), container.callback = callback);
18577        element = enqueueUpdate(rootFiber, container, lane);
18578        null !== element && (startUpdateTimerByLane(lane, "root.render()", null), scheduleUpdateOnFiber(element, rootFiber, lane), entangleTransitions(element, rootFiber, lane));
18579      }
18580      function markRetryLaneImpl(fiber, retryLane) {
18581        fiber = fiber.memoizedState;
18582        if (null !== fiber && null !== fiber.dehydrated) {
18583          var a3 = fiber.retryLane;
18584          fiber.retryLane = 0 !== a3 && a3 < retryLane ? a3 : retryLane;
18585        }
18586      }
18587      function markRetryLaneIfNotHydrated(fiber, retryLane) {
18588        markRetryLaneImpl(fiber, retryLane);
18589        (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);
18590      }
18591      function attemptContinuousHydration(fiber) {
18592        if (13 === fiber.tag || 31 === fiber.tag) {
18593          var root3 = enqueueConcurrentRenderForLane(fiber, 67108864);
18594          null !== root3 && scheduleUpdateOnFiber(root3, fiber, 67108864);
18595          markRetryLaneIfNotHydrated(fiber, 67108864);
18596        }
18597      }
18598      function attemptHydrationAtCurrentPriority(fiber) {
18599        if (13 === fiber.tag || 31 === fiber.tag) {
18600          var lane = requestUpdateLane(fiber);
18601          lane = getBumpedLaneForHydrationByLane(lane);
18602          var root3 = enqueueConcurrentRenderForLane(fiber, lane);
18603          null !== root3 && scheduleUpdateOnFiber(root3, fiber, lane);
18604          markRetryLaneIfNotHydrated(fiber, lane);
18605        }
18606      }
18607      function getCurrentFiberForDevTools() {
18608        return current;
18609      }
18610      function dispatchDiscreteEvent(domEventName, eventSystemFlags, container, nativeEvent) {
18611        var prevTransition = ReactSharedInternals.T;
18612        ReactSharedInternals.T = null;
18613        var previousPriority = ReactDOMSharedInternals.p;
18614        try {
18615          ReactDOMSharedInternals.p = DiscreteEventPriority, dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);
18616        } finally {
18617          ReactDOMSharedInternals.p = previousPriority, ReactSharedInternals.T = prevTransition;
18618        }
18619      }
18620      function dispatchContinuousEvent(domEventName, eventSystemFlags, container, nativeEvent) {
18621        var prevTransition = ReactSharedInternals.T;
18622        ReactSharedInternals.T = null;
18623        var previousPriority = ReactDOMSharedInternals.p;
18624        try {
18625          ReactDOMSharedInternals.p = ContinuousEventPriority, dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);
18626        } finally {
18627          ReactDOMSharedInternals.p = previousPriority, ReactSharedInternals.T = prevTransition;
18628        }
18629      }
18630      function dispatchEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {
18631        if (_enabled) {
18632          var blockedOn = findInstanceBlockingEvent(nativeEvent);
18633          if (null === blockedOn)
18634            dispatchEventForPluginEventSystem(
18635              domEventName,
18636              eventSystemFlags,
18637              nativeEvent,
18638              return_targetInst,
18639              targetContainer
18640            ), clearIfContinuousEvent(domEventName, nativeEvent);
18641          else if (queueIfContinuousEvent(
18642            blockedOn,
18643            domEventName,
18644            eventSystemFlags,
18645            targetContainer,
18646            nativeEvent
18647          ))
18648            nativeEvent.stopPropagation();
18649          else if (clearIfContinuousEvent(domEventName, nativeEvent), eventSystemFlags & 4 && -1 < discreteReplayableEvents.indexOf(domEventName)) {
18650            for (; null !== blockedOn; ) {
18651              var fiber = getInstanceFromNode(blockedOn);
18652              if (null !== fiber)
18653                switch (fiber.tag) {
18654                  case 3:
18655                    fiber = fiber.stateNode;
18656                    if (fiber.current.memoizedState.isDehydrated) {
18657                      var lanes = getHighestPriorityLanes(fiber.pendingLanes);
18658                      if (0 !== lanes) {
18659                        var root3 = fiber;
18660                        root3.pendingLanes |= 2;
18661                        for (root3.entangledLanes |= 2; lanes; ) {
18662                          var lane = 1 << 31 - clz32(lanes);
18663                          root3.entanglements[1] |= lane;
18664                          lanes &= ~lane;
18665                        }
18666                        ensureRootIsScheduled(fiber);
18667                        (executionContext & (RenderContext | CommitContext)) === NoContext && (workInProgressRootRenderTargetTime = now$1() + RENDER_TIMEOUT_MS, flushSyncWorkAcrossRoots_impl(0, false));
18668                      }
18669                    }
18670                    break;
18671                  case 31:
18672                  case 13:
18673                    root3 = enqueueConcurrentRenderForLane(fiber, 2), null !== root3 && scheduleUpdateOnFiber(root3, fiber, 2), flushSyncWork$1(), markRetryLaneIfNotHydrated(fiber, 2);
18674                }
18675              fiber = findInstanceBlockingEvent(nativeEvent);
18676              null === fiber && dispatchEventForPluginEventSystem(
18677                domEventName,
18678                eventSystemFlags,
18679                nativeEvent,
18680                return_targetInst,
18681                targetContainer
18682              );
18683              if (fiber === blockedOn) break;
18684              blockedOn = fiber;
18685            }
18686            null !== blockedOn && nativeEvent.stopPropagation();
18687          } else
18688            dispatchEventForPluginEventSystem(
18689              domEventName,
18690              eventSystemFlags,
18691              nativeEvent,
18692              null,
18693              targetContainer
18694            );
18695        }
18696      }
18697      function findInstanceBlockingEvent(nativeEvent) {
18698        nativeEvent = getEventTarget(nativeEvent);
18699        return findInstanceBlockingTarget(nativeEvent);
18700      }
18701      function findInstanceBlockingTarget(targetNode) {
18702        return_targetInst = null;
18703        targetNode = getClosestInstanceFromNode(targetNode);
18704        if (null !== targetNode) {
18705          var nearestMounted = getNearestMountedFiber(targetNode);
18706          if (null === nearestMounted) targetNode = null;
18707          else {
18708            var tag = nearestMounted.tag;
18709            if (13 === tag) {
18710              targetNode = getSuspenseInstanceFromFiber(nearestMounted);
18711              if (null !== targetNode) return targetNode;
18712              targetNode = null;
18713            } else if (31 === tag) {
18714              targetNode = getActivityInstanceFromFiber(nearestMounted);
18715              if (null !== targetNode) return targetNode;
18716              targetNode = null;
18717            } else if (3 === tag) {
18718              if (nearestMounted.stateNode.current.memoizedState.isDehydrated)
18719                return 3 === nearestMounted.tag ? nearestMounted.stateNode.containerInfo : null;
18720              targetNode = null;
18721            } else nearestMounted !== targetNode && (targetNode = null);
18722          }
18723        }
18724        return_targetInst = targetNode;
18725        return null;
18726      }
18727      function getEventPriority(domEventName) {
18728        switch (domEventName) {
18729          case "beforetoggle":
18730          case "cancel":
18731          case "click":
18732          case "close":
18733          case "contextmenu":
18734          case "copy":
18735          case "cut":
18736          case "auxclick":
18737          case "dblclick":
18738          case "dragend":
18739          case "dragstart":
18740          case "drop":
18741          case "focusin":
18742          case "focusout":
18743          case "input":
18744          case "invalid":
18745          case "keydown":
18746          case "keypress":
18747          case "keyup":
18748          case "mousedown":
18749          case "mouseup":
18750          case "paste":
18751          case "pause":
18752          case "play":
18753          case "pointercancel":
18754          case "pointerdown":
18755          case "pointerup":
18756          case "ratechange":
18757          case "reset":
18758          case "resize":
18759          case "seeked":
18760          case "submit":
18761          case "toggle":
18762          case "touchcancel":
18763          case "touchend":
18764          case "touchstart":
18765          case "volumechange":
18766          case "change":
18767          case "selectionchange":
18768          case "textInput":
18769          case "compositionstart":
18770          case "compositionend":
18771          case "compositionupdate":
18772          case "beforeblur":
18773          case "afterblur":
18774          case "beforeinput":
18775          case "blur":
18776          case "fullscreenchange":
18777          case "focus":
18778          case "hashchange":
18779          case "popstate":
18780          case "select":
18781          case "selectstart":
18782            return DiscreteEventPriority;
18783          case "drag":
18784          case "dragenter":
18785          case "dragexit":
18786          case "dragleave":
18787          case "dragover":
18788          case "mousemove":
18789          case "mouseout":
18790          case "mouseover":
18791          case "pointermove":
18792          case "pointerout":
18793          case "pointerover":
18794          case "scroll":
18795          case "touchmove":
18796          case "wheel":
18797          case "mouseenter":
18798          case "mouseleave":
18799          case "pointerenter":
18800          case "pointerleave":
18801            return ContinuousEventPriority;
18802          case "message":
18803            switch (getCurrentPriorityLevel()) {
18804              case ImmediatePriority:
18805                return DiscreteEventPriority;
18806              case UserBlockingPriority:
18807                return ContinuousEventPriority;
18808              case NormalPriority$1:
18809              case LowPriority:
18810                return DefaultEventPriority;
18811              case IdlePriority:
18812                return IdleEventPriority;
18813              default:
18814                return DefaultEventPriority;
18815            }
18816          default:
18817            return DefaultEventPriority;
18818        }
18819      }
18820      function clearIfContinuousEvent(domEventName, nativeEvent) {
18821        switch (domEventName) {
18822          case "focusin":
18823          case "focusout":
18824            queuedFocus = null;
18825            break;
18826          case "dragenter":
18827          case "dragleave":
18828            queuedDrag = null;
18829            break;
18830          case "mouseover":
18831          case "mouseout":
18832            queuedMouse = null;
18833            break;
18834          case "pointerover":
18835          case "pointerout":
18836            queuedPointers.delete(nativeEvent.pointerId);
18837            break;
18838          case "gotpointercapture":
18839          case "lostpointercapture":
18840            queuedPointerCaptures.delete(nativeEvent.pointerId);
18841        }
18842      }
18843      function accumulateOrCreateContinuousQueuedReplayableEvent(existingQueuedEvent, blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {
18844        if (null === existingQueuedEvent || existingQueuedEvent.nativeEvent !== nativeEvent)
18845          return existingQueuedEvent = {
18846            blockedOn,
18847            domEventName,
18848            eventSystemFlags,
18849            nativeEvent,
18850            targetContainers: [targetContainer]
18851          }, null !== blockedOn && (blockedOn = getInstanceFromNode(blockedOn), null !== blockedOn && attemptContinuousHydration(blockedOn)), existingQueuedEvent;
18852        existingQueuedEvent.eventSystemFlags |= eventSystemFlags;
18853        blockedOn = existingQueuedEvent.targetContainers;
18854        null !== targetContainer && -1 === blockedOn.indexOf(targetContainer) && blockedOn.push(targetContainer);
18855        return existingQueuedEvent;
18856      }
18857      function queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {
18858        switch (domEventName) {
18859          case "focusin":
18860            return queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(
18861              queuedFocus,
18862              blockedOn,
18863              domEventName,
18864              eventSystemFlags,
18865              targetContainer,
18866              nativeEvent
18867            ), true;
18868          case "dragenter":
18869            return queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(
18870              queuedDrag,
18871              blockedOn,
18872              domEventName,
18873              eventSystemFlags,
18874              targetContainer,
18875              nativeEvent
18876            ), true;
18877          case "mouseover":
18878            return queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(
18879              queuedMouse,
18880              blockedOn,
18881              domEventName,
18882              eventSystemFlags,
18883              targetContainer,
18884              nativeEvent
18885            ), true;
18886          case "pointerover":
18887            var pointerId = nativeEvent.pointerId;
18888            queuedPointers.set(
18889              pointerId,
18890              accumulateOrCreateContinuousQueuedReplayableEvent(
18891                queuedPointers.get(pointerId) || null,
18892                blockedOn,
18893                domEventName,
18894                eventSystemFlags,
18895                targetContainer,
18896                nativeEvent
18897              )
18898            );
18899            return true;
18900          case "gotpointercapture":
18901            return pointerId = nativeEvent.pointerId, queuedPointerCaptures.set(
18902              pointerId,
18903              accumulateOrCreateContinuousQueuedReplayableEvent(
18904                queuedPointerCaptures.get(pointerId) || null,
18905                blockedOn,
18906                domEventName,
18907                eventSystemFlags,
18908                targetContainer,
18909                nativeEvent
18910              )
18911            ), true;
18912        }
18913        return false;
18914      }
18915      function attemptExplicitHydrationTarget(queuedTarget) {
18916        var targetInst = getClosestInstanceFromNode(queuedTarget.target);
18917        if (null !== targetInst) {
18918          var nearestMounted = getNearestMountedFiber(targetInst);
18919          if (null !== nearestMounted) {
18920            if (targetInst = nearestMounted.tag, 13 === targetInst) {
18921              if (targetInst = getSuspenseInstanceFromFiber(nearestMounted), null !== targetInst) {
18922                queuedTarget.blockedOn = targetInst;
18923                runWithPriority(queuedTarget.priority, function() {
18924                  attemptHydrationAtCurrentPriority(nearestMounted);
18925                });
18926                return;
18927              }
18928            } else if (31 === targetInst) {
18929              if (targetInst = getActivityInstanceFromFiber(nearestMounted), null !== targetInst) {
18930                queuedTarget.blockedOn = targetInst;
18931                runWithPriority(queuedTarget.priority, function() {
18932                  attemptHydrationAtCurrentPriority(nearestMounted);
18933                });
18934                return;
18935              }
18936            } else if (3 === targetInst && nearestMounted.stateNode.current.memoizedState.isDehydrated) {
18937              queuedTarget.blockedOn = 3 === nearestMounted.tag ? nearestMounted.stateNode.containerInfo : null;
18938              return;
18939            }
18940          }
18941        }
18942        queuedTarget.blockedOn = null;
18943      }
18944      function attemptReplayContinuousQueuedEvent(queuedEvent) {
18945        if (null !== queuedEvent.blockedOn) return false;
18946        for (var targetContainers = queuedEvent.targetContainers; 0 < targetContainers.length; ) {
18947          var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);
18948          if (null === nextBlockedOn) {
18949            nextBlockedOn = queuedEvent.nativeEvent;
18950            var nativeEventClone = new nextBlockedOn.constructor(
18951              nextBlockedOn.type,
18952              nextBlockedOn
18953            ), event = nativeEventClone;
18954            null !== currentReplayingEvent && console.error(
18955              "Expected currently replaying event to be null. This error is likely caused by a bug in React. Please file an issue."
18956            );
18957            currentReplayingEvent = event;
18958            nextBlockedOn.target.dispatchEvent(nativeEventClone);
18959            null === currentReplayingEvent && console.error(
18960              "Expected currently replaying event to not be null. This error is likely caused by a bug in React. Please file an issue."
18961            );
18962            currentReplayingEvent = null;
18963          } else
18964            return targetContainers = getInstanceFromNode(nextBlockedOn), null !== targetContainers && attemptContinuousHydration(targetContainers), queuedEvent.blockedOn = nextBlockedOn, false;
18965          targetContainers.shift();
18966        }
18967        return true;
18968      }
18969      function attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {
18970        attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);
18971      }
18972      function replayUnblockedEvents() {
18973        hasScheduledReplayAttempt = false;
18974        null !== queuedFocus && attemptReplayContinuousQueuedEvent(queuedFocus) && (queuedFocus = null);
18975        null !== queuedDrag && attemptReplayContinuousQueuedEvent(queuedDrag) && (queuedDrag = null);
18976        null !== queuedMouse && attemptReplayContinuousQueuedEvent(queuedMouse) && (queuedMouse = null);
18977        queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);
18978        queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);
18979      }
18980      function scheduleCallbackIfUnblocked(queuedEvent, unblocked) {
18981        queuedEvent.blockedOn === unblocked && (queuedEvent.blockedOn = null, hasScheduledReplayAttempt || (hasScheduledReplayAttempt = true, Scheduler.unstable_scheduleCallback(
18982          Scheduler.unstable_NormalPriority,
18983          replayUnblockedEvents
18984        )));
18985      }
18986      function scheduleReplayQueueIfNeeded(formReplayingQueue) {
18987        lastScheduledReplayQueue !== formReplayingQueue && (lastScheduledReplayQueue = formReplayingQueue, Scheduler.unstable_scheduleCallback(
18988          Scheduler.unstable_NormalPriority,
18989          function() {
18990            lastScheduledReplayQueue === formReplayingQueue && (lastScheduledReplayQueue = null);
18991            for (var i3 = 0; i3 < formReplayingQueue.length; i3 += 3) {
18992              var form = formReplayingQueue[i3], submitterOrAction = formReplayingQueue[i3 + 1], formData = formReplayingQueue[i3 + 2];
18993              if ("function" !== typeof submitterOrAction)
18994                if (null === findInstanceBlockingTarget(submitterOrAction || form))
18995                  continue;
18996                else break;
18997              var formInst = getInstanceFromNode(form);
18998              null !== formInst && (formReplayingQueue.splice(i3, 3), i3 -= 3, form = {
18999                pending: true,
19000                data: formData,
19001                method: form.method,
19002                action: submitterOrAction
19003              }, Object.freeze(form), startHostTransition(
19004                formInst,
19005                form,
19006                submitterOrAction,
19007                formData
19008              ));
19009            }
19010          }
19011        ));
19012      }
19013      function retryIfBlockedOn(unblocked) {
19014        function unblock(queuedEvent) {
19015          return scheduleCallbackIfUnblocked(queuedEvent, unblocked);
19016        }
19017        null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);
19018        null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);
19019        null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);
19020        queuedPointers.forEach(unblock);
19021        queuedPointerCaptures.forEach(unblock);
19022        for (var i3 = 0; i3 < queuedExplicitHydrationTargets.length; i3++) {
19023          var queuedTarget = queuedExplicitHydrationTargets[i3];
19024          queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);
19025        }
19026        for (; 0 < queuedExplicitHydrationTargets.length && (i3 = queuedExplicitHydrationTargets[0], null === i3.blockedOn); )
19027          attemptExplicitHydrationTarget(i3), null === i3.blockedOn && queuedExplicitHydrationTargets.shift();
19028        i3 = (unblocked.ownerDocument || unblocked).$$reactFormReplay;
19029        if (null != i3)
19030          for (queuedTarget = 0; queuedTarget < i3.length; queuedTarget += 3) {
19031            var form = i3[queuedTarget], submitterOrAction = i3[queuedTarget + 1], formProps = form[internalPropsKey] || null;
19032            if ("function" === typeof submitterOrAction)
19033              formProps || scheduleReplayQueueIfNeeded(i3);
19034            else if (formProps) {
19035              var action = null;
19036              if (submitterOrAction && submitterOrAction.hasAttribute("formAction"))
19037                if (form = submitterOrAction, formProps = submitterOrAction[internalPropsKey] || null)
19038                  action = formProps.formAction;
19039                else {
19040                  if (null !== findInstanceBlockingTarget(form)) continue;
19041                }
19042              else action = formProps.action;
19043              "function" === typeof action ? i3[queuedTarget + 1] = action : (i3.splice(queuedTarget, 3), queuedTarget -= 3);
19044              scheduleReplayQueueIfNeeded(i3);
19045            }
19046          }
19047      }
19048      function defaultOnDefaultTransitionIndicator() {
19049        function handleNavigate(event) {
19050          event.canIntercept && "react-transition" === event.info && event.intercept({
19051            handler: function() {
19052              return new Promise(function(resolve) {
19053                return pendingResolve = resolve;
19054              });
19055            },
19056            focusReset: "manual",
19057            scroll: "manual"
19058          });
19059        }
19060        function handleNavigateComplete() {
19061          null !== pendingResolve && (pendingResolve(), pendingResolve = null);
19062          isCancelled || setTimeout(startFakeNavigation, 20);
19063        }
19064        function startFakeNavigation() {
19065          if (!isCancelled && !navigation.transition) {
19066            var currentEntry = navigation.currentEntry;
19067            currentEntry && null != currentEntry.url && navigation.navigate(currentEntry.url, {
19068              state: currentEntry.getState(),
19069              info: "react-transition",
19070              history: "replace"
19071            });
19072          }
19073        }
19074        if ("object" === typeof navigation) {
19075          var isCancelled = false, pendingResolve = null;
19076          navigation.addEventListener("navigate", handleNavigate);
19077          navigation.addEventListener("navigatesuccess", handleNavigateComplete);
19078          navigation.addEventListener("navigateerror", handleNavigateComplete);
19079          setTimeout(startFakeNavigation, 100);
19080          return function() {
19081            isCancelled = true;
19082            navigation.removeEventListener("navigate", handleNavigate);
19083            navigation.removeEventListener(
19084              "navigatesuccess",
19085              handleNavigateComplete
19086            );
19087            navigation.removeEventListener(
19088              "navigateerror",
19089              handleNavigateComplete
19090            );
19091            null !== pendingResolve && (pendingResolve(), pendingResolve = null);
19092          };
19093        }
19094      }
19095      function ReactDOMRoot(internalRoot) {
19096        this._internalRoot = internalRoot;
19097      }
19098      function ReactDOMHydrationRoot(internalRoot) {
19099        this._internalRoot = internalRoot;
19100      }
19101      function warnIfReactDOMContainerInDEV(container) {
19102        container[internalContainerInstanceKey] && (container._reactRootContainer ? console.error(
19103          "You are calling ReactDOMClient.createRoot() on a container that was previously passed to ReactDOM.render(). This is not supported."
19104        ) : console.error(
19105          "You are calling ReactDOMClient.createRoot() on a container that has already been passed to createRoot() before. Instead, call root.render() on the existing root instead if you want to update it."
19106        ));
19107      }
19108      "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
19109      var Scheduler = require_scheduler(), React19 = require_react(), ReactDOM = require_react_dom(), assign = Object.assign, REACT_LEGACY_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.element"), REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = /* @__PURE__ */ Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = /* @__PURE__ */ Symbol.for("react.memo"), REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy");
19110      /* @__PURE__ */ Symbol.for("react.scope");
19111      var REACT_ACTIVITY_TYPE = /* @__PURE__ */ Symbol.for("react.activity");
19112      /* @__PURE__ */ Symbol.for("react.legacy_hidden");
19113      /* @__PURE__ */ Symbol.for("react.tracing_marker");
19114      var REACT_MEMO_CACHE_SENTINEL = /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel");
19115      /* @__PURE__ */ Symbol.for("react.view_transition");
19116      var MAYBE_ITERATOR_SYMBOL = Symbol.iterator, REACT_CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for("react.client.reference"), isArrayImpl = Array.isArray, ReactSharedInternals = React19.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, ReactDOMSharedInternals = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, NotPending = Object.freeze({
19117        pending: false,
19118        data: null,
19119        method: null,
19120        action: null
19121      }), valueStack = [];
19122      var fiberStack = [];
19123      var index$jscomp$0 = -1, contextStackCursor = createCursor(null), contextFiberStackCursor = createCursor(null), rootInstanceStackCursor = createCursor(null), hostTransitionProviderCursor = createCursor(null), disabledDepth = 0, prevLog, prevInfo, prevWarn, prevError, prevGroup, prevGroupCollapsed, prevGroupEnd;
19124      disabledLog.__reactDisabledLog = true;
19125      var prefix, suffix, reentry = false;
19126      var componentFrameCache = new ("function" === typeof WeakMap ? WeakMap : Map)();
19127      var current = null, isRendering = false, hasOwnProperty = Object.prototype.hasOwnProperty, scheduleCallback$3 = Scheduler.unstable_scheduleCallback, cancelCallback$1 = Scheduler.unstable_cancelCallback, shouldYield = Scheduler.unstable_shouldYield, requestPaint = Scheduler.unstable_requestPaint, now$1 = Scheduler.unstable_now, getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel, ImmediatePriority = Scheduler.unstable_ImmediatePriority, UserBlockingPriority = Scheduler.unstable_UserBlockingPriority, NormalPriority$1 = Scheduler.unstable_NormalPriority, LowPriority = Scheduler.unstable_LowPriority, IdlePriority = Scheduler.unstable_IdlePriority, log$1 = Scheduler.log, unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue, rendererID = null, injectedHook = null, hasLoggedError = false, isDevToolsPresent = "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__, clz32 = Math.clz32 ? Math.clz32 : clz32Fallback, log = Math.log, LN2 = Math.LN2, nextTransitionUpdateLane = 256, nextTransitionDeferredLane = 262144, nextRetryLane = 4194304, DiscreteEventPriority = 2, ContinuousEventPriority = 8, DefaultEventPriority = 32, IdleEventPriority = 268435456, randomKey = Math.random().toString(36).slice(2), internalInstanceKey = "__reactFiber$" + randomKey, internalPropsKey = "__reactProps$" + randomKey, internalContainerInstanceKey = "__reactContainer$" + randomKey, internalEventHandlersKey = "__reactEvents$" + randomKey, internalEventHandlerListenersKey = "__reactListeners$" + randomKey, internalEventHandlesSetKey = "__reactHandles$" + randomKey, internalRootNodeResourcesKey = "__reactResources$" + randomKey, internalHoistableMarker = "__reactMarker$" + randomKey, allNativeEvents = /* @__PURE__ */ new Set(), registrationNameDependencies = {}, possibleRegistrationNames = {}, hasReadOnlyValue = {
19128        button: true,
19129        checkbox: true,
19130        image: true,
19131        hidden: true,
19132        radio: true,
19133        reset: true,
19134        submit: true
19135      }, VALID_ATTRIBUTE_NAME_REGEX = RegExp(
19136        "^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"
19137      ), illegalAttributeNameCache = {}, validatedAttributeNameCache = {}, escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\n"\\]/g, didWarnValueDefaultValue$1 = false, didWarnCheckedDefaultChecked = false, didWarnSelectedSetOnOption = false, didWarnInvalidChild = false, didWarnInvalidInnerHTML = false;
19138      var didWarnValueDefaultValue = false;
19139      var valuePropNames = ["value", "defaultValue"], didWarnValDefaultVal = false, needsEscaping = /["'&<>\n\t]|^\s|\s$/, specialTags = "address applet area article aside base basefont bgsound blockquote body br button caption center col colgroup dd details dir div dl dt embed fieldset figcaption figure footer form frame frameset h1 h2 h3 h4 h5 h6 head header hgroup hr html iframe img input isindex li link listing main marquee menu menuitem meta nav noembed noframes noscript object ol p param plaintext pre script section select source style summary table tbody td template textarea tfoot th thead title tr track ul wbr xmp".split(
19140        " "
19141      ), inScopeTags = "applet caption html table td th marquee object template foreignObject desc title".split(
19142        " "
19143      ), buttonScopeTags = inScopeTags.concat(["button"]), impliedEndTags = "dd dt li option optgroup p rp rt".split(" "), emptyAncestorInfoDev = {
19144        current: null,
19145        formTag: null,
19146        aTagInScope: null,
19147        buttonTagInScope: null,
19148        nobrTagInScope: null,
19149        pTagInButtonScope: null,
19150        listItemTagAutoclosing: null,
19151        dlItemTagAutoclosing: null,
19152        containerTagInScope: null,
19153        implicitRootScope: false
19154      }, didWarn = {}, shorthandToLonghand = {
19155        animation: "animationDelay animationDirection animationDuration animationFillMode animationIterationCount animationName animationPlayState animationTimingFunction".split(
19156          " "
19157        ),
19158        background: "backgroundAttachment backgroundClip backgroundColor backgroundImage backgroundOrigin backgroundPositionX backgroundPositionY backgroundRepeat backgroundSize".split(
19159          " "
19160        ),
19161        backgroundPosition: ["backgroundPositionX", "backgroundPositionY"],
19162        border: "borderBottomColor borderBottomStyle borderBottomWidth borderImageOutset borderImageRepeat borderImageSlice borderImageSource borderImageWidth borderLeftColor borderLeftStyle borderLeftWidth borderRightColor borderRightStyle borderRightWidth borderTopColor borderTopStyle borderTopWidth".split(
19163          " "
19164        ),
19165        borderBlockEnd: [
19166          "borderBlockEndColor",
19167          "borderBlockEndStyle",
19168          "borderBlockEndWidth"
19169        ],
19170        borderBlockStart: [
19171          "borderBlockStartColor",
19172          "borderBlockStartStyle",
19173          "borderBlockStartWidth"
19174        ],
19175        borderBottom: [
19176          "borderBottomColor",
19177          "borderBottomStyle",
19178          "borderBottomWidth"
19179        ],
19180        borderColor: [
19181          "borderBottomColor",
19182          "borderLeftColor",
19183          "borderRightColor",
19184          "borderTopColor"
19185        ],
19186        borderImage: [
19187          "borderImageOutset",
19188          "borderImageRepeat",
19189          "borderImageSlice",
19190          "borderImageSource",
19191          "borderImageWidth"
19192        ],
19193        borderInlineEnd: [
19194          "borderInlineEndColor",
19195          "borderInlineEndStyle",
19196          "borderInlineEndWidth"
19197        ],
19198        borderInlineStart: [
19199          "borderInlineStartColor",
19200          "borderInlineStartStyle",
19201          "borderInlineStartWidth"
19202        ],
19203        borderLeft: ["borderLeftColor", "borderLeftStyle", "borderLeftWidth"],
19204        borderRadius: [
19205          "borderBottomLeftRadius",
19206          "borderBottomRightRadius",
19207          "borderTopLeftRadius",
19208          "borderTopRightRadius"
19209        ],
19210        borderRight: [
19211          "borderRightColor",
19212          "borderRightStyle",
19213          "borderRightWidth"
19214        ],
19215        borderStyle: [
19216          "borderBottomStyle",
19217          "borderLeftStyle",
19218          "borderRightStyle",
19219          "borderTopStyle"
19220        ],
19221        borderTop: ["borderTopColor", "borderTopStyle", "borderTopWidth"],
19222        borderWidth: [
19223          "borderBottomWidth",
19224          "borderLeftWidth",
19225          "borderRightWidth",
19226          "borderTopWidth"
19227        ],
19228        columnRule: ["columnRuleColor", "columnRuleStyle", "columnRuleWidth"],
19229        columns: ["columnCount", "columnWidth"],
19230        flex: ["flexBasis", "flexGrow", "flexShrink"],
19231        flexFlow: ["flexDirection", "flexWrap"],
19232        font: "fontFamily fontFeatureSettings fontKerning fontLanguageOverride fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontVariantAlternates fontVariantCaps fontVariantEastAsian fontVariantLigatures fontVariantNumeric fontVariantPosition fontWeight lineHeight".split(
19233          " "
19234        ),
19235        fontVariant: "fontVariantAlternates fontVariantCaps fontVariantEastAsian fontVariantLigatures fontVariantNumeric fontVariantPosition".split(
19236          " "
19237        ),
19238        gap: ["columnGap", "rowGap"],
19239        grid: "gridAutoColumns gridAutoFlow gridAutoRows gridTemplateAreas gridTemplateColumns gridTemplateRows".split(
19240          " "
19241        ),
19242        gridArea: [
19243          "gridColumnEnd",
19244          "gridColumnStart",
19245          "gridRowEnd",
19246          "gridRowStart"
19247        ],
19248        gridColumn: ["gridColumnEnd", "gridColumnStart"],
19249        gridColumnGap: ["columnGap"],
19250        gridGap: ["columnGap", "rowGap"],
19251        gridRow: ["gridRowEnd", "gridRowStart"],
19252        gridRowGap: ["rowGap"],
19253        gridTemplate: [
19254          "gridTemplateAreas",
19255          "gridTemplateColumns",
19256          "gridTemplateRows"
19257        ],
19258        listStyle: ["listStyleImage", "listStylePosition", "listStyleType"],
19259        margin: ["marginBottom", "marginLeft", "marginRight", "marginTop"],
19260        marker: ["markerEnd", "markerMid", "markerStart"],
19261        mask: "maskClip maskComposite maskImage maskMode maskOrigin maskPositionX maskPositionY maskRepeat maskSize".split(
19262          " "
19263        ),
19264        maskPosition: ["maskPositionX", "maskPositionY"],
19265        outline: ["outlineColor", "outlineStyle", "outlineWidth"],
19266        overflow: ["overflowX", "overflowY"],
19267        padding: ["paddingBottom", "paddingLeft", "paddingRight", "paddingTop"],
19268        placeContent: ["alignContent", "justifyContent"],
19269        placeItems: ["alignItems", "justifyItems"],
19270        placeSelf: ["alignSelf", "justifySelf"],
19271        textDecoration: [
19272          "textDecorationColor",
19273          "textDecorationLine",
19274          "textDecorationStyle"
19275        ],
19276        textEmphasis: ["textEmphasisColor", "textEmphasisStyle"],
19277        transition: [
19278          "transitionDelay",
19279          "transitionDuration",
19280          "transitionProperty",
19281          "transitionTimingFunction"
19282        ],
19283        wordWrap: ["overflowWrap"]
19284      }, uppercasePattern = /([A-Z])/g, msPattern$1 = /^ms-/, badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/, msPattern = /^-ms-/, hyphenPattern = /-(.)/g, badStyleValueWithSemicolonPattern = /;\s*$/, warnedStyleNames = {}, warnedStyleValues = {}, warnedForNaNValue = false, warnedForInfinityValue = false, unitlessNumbers = new Set(
19285        "animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(
19286          " "
19287        )
19288      ), MATH_NAMESPACE = "http://www.w3.org/1998/Math/MathML", SVG_NAMESPACE = "http://www.w3.org/2000/svg", aliases = /* @__PURE__ */ new Map([
19289        ["acceptCharset", "accept-charset"],
19290        ["htmlFor", "for"],
19291        ["httpEquiv", "http-equiv"],
19292        ["crossOrigin", "crossorigin"],
19293        ["accentHeight", "accent-height"],
19294        ["alignmentBaseline", "alignment-baseline"],
19295        ["arabicForm", "arabic-form"],
19296        ["baselineShift", "baseline-shift"],
19297        ["capHeight", "cap-height"],
19298        ["clipPath", "clip-path"],
19299        ["clipRule", "clip-rule"],
19300        ["colorInterpolation", "color-interpolation"],
19301        ["colorInterpolationFilters", "color-interpolation-filters"],
19302        ["colorProfile", "color-profile"],
19303        ["colorRendering", "color-rendering"],
19304        ["dominantBaseline", "dominant-baseline"],
19305        ["enableBackground", "enable-background"],
19306        ["fillOpacity", "fill-opacity"],
19307        ["fillRule", "fill-rule"],
19308        ["floodColor", "flood-color"],
19309        ["floodOpacity", "flood-opacity"],
19310        ["fontFamily", "font-family"],
19311        ["fontSize", "font-size"],
19312        ["fontSizeAdjust", "font-size-adjust"],
19313        ["fontStretch", "font-stretch"],
19314        ["fontStyle", "font-style"],
19315        ["fontVariant", "font-variant"],
19316        ["fontWeight", "font-weight"],
19317        ["glyphName", "glyph-name"],
19318        ["glyphOrientationHorizontal", "glyph-orientation-horizontal"],
19319        ["glyphOrientationVertical", "glyph-orientation-vertical"],
19320        ["horizAdvX", "horiz-adv-x"],
19321        ["horizOriginX", "horiz-origin-x"],
19322        ["imageRendering", "image-rendering"],
19323        ["letterSpacing", "letter-spacing"],
19324        ["lightingColor", "lighting-color"],
19325        ["markerEnd", "marker-end"],
19326        ["markerMid", "marker-mid"],
19327        ["markerStart", "marker-start"],
19328        ["overlinePosition", "overline-position"],
19329        ["overlineThickness", "overline-thickness"],
19330        ["paintOrder", "paint-order"],
19331        ["panose-1", "panose-1"],
19332        ["pointerEvents", "pointer-events"],
19333        ["renderingIntent", "rendering-intent"],
19334        ["shapeRendering", "shape-rendering"],
19335        ["stopColor", "stop-color"],
19336        ["stopOpacity", "stop-opacity"],
19337        ["strikethroughPosition", "strikethrough-position"],
19338        ["strikethroughThickness", "strikethrough-thickness"],
19339        ["strokeDasharray", "stroke-dasharray"],
19340        ["strokeDashoffset", "stroke-dashoffset"],
19341        ["strokeLinecap", "stroke-linecap"],
19342        ["strokeLinejoin", "stroke-linejoin"],
19343        ["strokeMiterlimit", "stroke-miterlimit"],
19344        ["strokeOpacity", "stroke-opacity"],
19345        ["strokeWidth", "stroke-width"],
19346        ["textAnchor", "text-anchor"],
19347        ["textDecoration", "text-decoration"],
19348        ["textRendering", "text-rendering"],
19349        ["transformOrigin", "transform-origin"],
19350        ["underlinePosition", "underline-position"],
19351        ["underlineThickness", "underline-thickness"],
19352        ["unicodeBidi", "unicode-bidi"],
19353        ["unicodeRange", "unicode-range"],
19354        ["unitsPerEm", "units-per-em"],
19355        ["vAlphabetic", "v-alphabetic"],
19356        ["vHanging", "v-hanging"],
19357        ["vIdeographic", "v-ideographic"],
19358        ["vMathematical", "v-mathematical"],
19359        ["vectorEffect", "vector-effect"],
19360        ["vertAdvY", "vert-adv-y"],
19361        ["vertOriginX", "vert-origin-x"],
19362        ["vertOriginY", "vert-origin-y"],
19363        ["wordSpacing", "word-spacing"],
19364        ["writingMode", "writing-mode"],
19365        ["xmlnsXlink", "xmlns:xlink"],
19366        ["xHeight", "x-height"]
19367      ]), possibleStandardNames = {
19368        accept: "accept",
19369        acceptcharset: "acceptCharset",
19370        "accept-charset": "acceptCharset",
19371        accesskey: "accessKey",
19372        action: "action",
19373        allowfullscreen: "allowFullScreen",
19374        alt: "alt",
19375        as: "as",
19376        async: "async",
19377        autocapitalize: "autoCapitalize",
19378        autocomplete: "autoComplete",
19379        autocorrect: "autoCorrect",
19380        autofocus: "autoFocus",
19381        autoplay: "autoPlay",
19382        autosave: "autoSave",
19383        capture: "capture",
19384        cellpadding: "cellPadding",
19385        cellspacing: "cellSpacing",
19386        challenge: "challenge",
19387        charset: "charSet",
19388        checked: "checked",
19389        children: "children",
19390        cite: "cite",
19391        class: "className",
19392        classid: "classID",
19393        classname: "className",
19394        cols: "cols",
19395        colspan: "colSpan",
19396        content: "content",
19397        contenteditable: "contentEditable",
19398        contextmenu: "contextMenu",
19399        controls: "controls",
19400        controlslist: "controlsList",
19401        coords: "coords",
19402        crossorigin: "crossOrigin",
19403        dangerouslysetinnerhtml: "dangerouslySetInnerHTML",
19404        data: "data",
19405        datetime: "dateTime",
19406        default: "default",
19407        defaultchecked: "defaultChecked",
19408        defaultvalue: "defaultValue",
19409        defer: "defer",
19410        dir: "dir",
19411        disabled: "disabled",
19412        disablepictureinpicture: "disablePictureInPicture",
19413        disableremoteplayback: "disableRemotePlayback",
19414        download: "download",
19415        draggable: "draggable",
19416        enctype: "encType",
19417        enterkeyhint: "enterKeyHint",
19418        fetchpriority: "fetchPriority",
19419        for: "htmlFor",
19420        form: "form",
19421        formmethod: "formMethod",
19422        formaction: "formAction",
19423        formenctype: "formEncType",
19424        formnovalidate: "formNoValidate",
19425        formtarget: "formTarget",
19426        frameborder: "frameBorder",
19427        headers: "headers",
19428        height: "height",
19429        hidden: "hidden",
19430        high: "high",
19431        href: "href",
19432        hreflang: "hrefLang",
19433        htmlfor: "htmlFor",
19434        httpequiv: "httpEquiv",
19435        "http-equiv": "httpEquiv",
19436        icon: "icon",
19437        id: "id",
19438        imagesizes: "imageSizes",
19439        imagesrcset: "imageSrcSet",
19440        inert: "inert",
19441        innerhtml: "innerHTML",
19442        inputmode: "inputMode",
19443        integrity: "integrity",
19444        is: "is",
19445        itemid: "itemID",
19446        itemprop: "itemProp",
19447        itemref: "itemRef",
19448        itemscope: "itemScope",
19449        itemtype: "itemType",
19450        keyparams: "keyParams",
19451        keytype: "keyType",
19452        kind: "kind",
19453        label: "label",
19454        lang: "lang",
19455        list: "list",
19456        loop: "loop",
19457        low: "low",
19458        manifest: "manifest",
19459        marginwidth: "marginWidth",
19460        marginheight: "marginHeight",
19461        max: "max",
19462        maxlength: "maxLength",
19463        media: "media",
19464        mediagroup: "mediaGroup",
19465        method: "method",
19466        min: "min",
19467        minlength: "minLength",
19468        multiple: "multiple",
19469        muted: "muted",
19470        name: "name",
19471        nomodule: "noModule",
19472        nonce: "nonce",
19473        novalidate: "noValidate",
19474        open: "open",
19475        optimum: "optimum",
19476        pattern: "pattern",
19477        placeholder: "placeholder",
19478        playsinline: "playsInline",
19479        poster: "poster",
19480        preload: "preload",
19481        profile: "profile",
19482        radiogroup: "radioGroup",
19483        readonly: "readOnly",
19484        referrerpolicy: "referrerPolicy",
19485        rel: "rel",
19486        required: "required",
19487        reversed: "reversed",
19488        role: "role",
19489        rows: "rows",
19490        rowspan: "rowSpan",
19491        sandbox: "sandbox",
19492        scope: "scope",
19493        scoped: "scoped",
19494        scrolling: "scrolling",
19495        seamless: "seamless",
19496        selected: "selected",
19497        shape: "shape",
19498        size: "size",
19499        sizes: "sizes",
19500        span: "span",
19501        spellcheck: "spellCheck",
19502        src: "src",
19503        srcdoc: "srcDoc",
19504        srclang: "srcLang",
19505        srcset: "srcSet",
19506        start: "start",
19507        step: "step",
19508        style: "style",
19509        summary: "summary",
19510        tabindex: "tabIndex",
19511        target: "target",
19512        title: "title",
19513        type: "type",
19514        usemap: "useMap",
19515        value: "value",
19516        width: "width",
19517        wmode: "wmode",
19518        wrap: "wrap",
19519        about: "about",
19520        accentheight: "accentHeight",
19521        "accent-height": "accentHeight",
19522        accumulate: "accumulate",
19523        additive: "additive",
19524        alignmentbaseline: "alignmentBaseline",
19525        "alignment-baseline": "alignmentBaseline",
19526        allowreorder: "allowReorder",
19527        alphabetic: "alphabetic",
19528        amplitude: "amplitude",
19529        arabicform: "arabicForm",
19530        "arabic-form": "arabicForm",
19531        ascent: "ascent",
19532        attributename: "attributeName",
19533        attributetype: "attributeType",
19534        autoreverse: "autoReverse",
19535        azimuth: "azimuth",
19536        basefrequency: "baseFrequency",
19537        baselineshift: "baselineShift",
19538        "baseline-shift": "baselineShift",
19539        baseprofile: "baseProfile",
19540        bbox: "bbox",
19541        begin: "begin",
19542        bias: "bias",
19543        by: "by",
19544        calcmode: "calcMode",
19545        capheight: "capHeight",
19546        "cap-height": "capHeight",
19547        clip: "clip",
19548        clippath: "clipPath",
19549        "clip-path": "clipPath",
19550        clippathunits: "clipPathUnits",
19551        cliprule: "clipRule",
19552        "clip-rule": "clipRule",
19553        color: "color",
19554        colorinterpolation: "colorInterpolation",
19555        "color-interpolation": "colorInterpolation",
19556        colorinterpolationfilters: "colorInterpolationFilters",
19557        "color-interpolation-filters": "colorInterpolationFilters",
19558        colorprofile: "colorProfile",
19559        "color-profile": "colorProfile",
19560        colorrendering: "colorRendering",
19561        "color-rendering": "colorRendering",
19562        contentscripttype: "contentScriptType",
19563        contentstyletype: "contentStyleType",
19564        cursor: "cursor",
19565        cx: "cx",
19566        cy: "cy",
19567        d: "d",
19568        datatype: "datatype",
19569        decelerate: "decelerate",
19570        descent: "descent",
19571        diffuseconstant: "diffuseConstant",
19572        direction: "direction",
19573        display: "display",
19574        divisor: "divisor",
19575        dominantbaseline: "dominantBaseline",
19576        "dominant-baseline": "dominantBaseline",
19577        dur: "dur",
19578        dx: "dx",
19579        dy: "dy",
19580        edgemode: "edgeMode",
19581        elevation: "elevation",
19582        enablebackground: "enableBackground",
19583        "enable-background": "enableBackground",
19584        end: "end",
19585        exponent: "exponent",
19586        externalresourcesrequired: "externalResourcesRequired",
19587        fill: "fill",
19588        fillopacity: "fillOpacity",
19589        "fill-opacity": "fillOpacity",
19590        fillrule: "fillRule",
19591        "fill-rule": "fillRule",
19592        filter: "filter",
19593        filterres: "filterRes",
19594        filterunits: "filterUnits",
19595        floodopacity: "floodOpacity",
19596        "flood-opacity": "floodOpacity",
19597        floodcolor: "floodColor",
19598        "flood-color": "floodColor",
19599        focusable: "focusable",
19600        fontfamily: "fontFamily",
19601        "font-family": "fontFamily",
19602        fontsize: "fontSize",
19603        "font-size": "fontSize",
19604        fontsizeadjust: "fontSizeAdjust",
19605        "font-size-adjust": "fontSizeAdjust",
19606        fontstretch: "fontStretch",
19607        "font-stretch": "fontStretch",
19608        fontstyle: "fontStyle",
19609        "font-style": "fontStyle",
19610        fontvariant: "fontVariant",
19611        "font-variant": "fontVariant",
19612        fontweight: "fontWeight",
19613        "font-weight": "fontWeight",
19614        format: "format",
19615        from: "from",
19616        fx: "fx",
19617        fy: "fy",
19618        g1: "g1",
19619        g2: "g2",
19620        glyphname: "glyphName",
19621        "glyph-name": "glyphName",
19622        glyphorientationhorizontal: "glyphOrientationHorizontal",
19623        "glyph-orientation-horizontal": "glyphOrientationHorizontal",
19624        glyphorientationvertical: "glyphOrientationVertical",
19625        "glyph-orientation-vertical": "glyphOrientationVertical",
19626        glyphref: "glyphRef",
19627        gradienttransform: "gradientTransform",
19628        gradientunits: "gradientUnits",
19629        hanging: "hanging",
19630        horizadvx: "horizAdvX",
19631        "horiz-adv-x": "horizAdvX",
19632        horizoriginx: "horizOriginX",
19633        "horiz-origin-x": "horizOriginX",
19634        ideographic: "ideographic",
19635        imagerendering: "imageRendering",
19636        "image-rendering": "imageRendering",
19637        in2: "in2",
19638        in: "in",
19639        inlist: "inlist",
19640        intercept: "intercept",
19641        k1: "k1",
19642        k2: "k2",
19643        k3: "k3",
19644        k4: "k4",
19645        k: "k",
19646        kernelmatrix: "kernelMatrix",
19647        kernelunitlength: "kernelUnitLength",
19648        kerning: "kerning",
19649        keypoints: "keyPoints",
19650        keysplines: "keySplines",
19651        keytimes: "keyTimes",
19652        lengthadjust: "lengthAdjust",
19653        letterspacing: "letterSpacing",
19654        "letter-spacing": "letterSpacing",
19655        lightingcolor: "lightingColor",
19656        "lighting-color": "lightingColor",
19657        limitingconeangle: "limitingConeAngle",
19658        local: "local",
19659        markerend: "markerEnd",
19660        "marker-end": "markerEnd",
19661        markerheight: "markerHeight",
19662        markermid: "markerMid",
19663        "marker-mid": "markerMid",
19664        markerstart: "markerStart",
19665        "marker-start": "markerStart",
19666        markerunits: "markerUnits",
19667        markerwidth: "markerWidth",
19668        mask: "mask",
19669        maskcontentunits: "maskContentUnits",
19670        maskunits: "maskUnits",
19671        mathematical: "mathematical",
19672        mode: "mode",
19673        numoctaves: "numOctaves",
19674        offset: "offset",
19675        opacity: "opacity",
19676        operator: "operator",
19677        order: "order",
19678        orient: "orient",
19679        orientation: "orientation",
19680        origin: "origin",
19681        overflow: "overflow",
19682        overlineposition: "overlinePosition",
19683        "overline-position": "overlinePosition",
19684        overlinethickness: "overlineThickness",
19685        "overline-thickness": "overlineThickness",
19686        paintorder: "paintOrder",
19687        "paint-order": "paintOrder",
19688        panose1: "panose1",
19689        "panose-1": "panose1",
19690        pathlength: "pathLength",
19691        patterncontentunits: "patternContentUnits",
19692        patterntransform: "patternTransform",
19693        patternunits: "patternUnits",
19694        pointerevents: "pointerEvents",
19695        "pointer-events": "pointerEvents",
19696        points: "points",
19697        pointsatx: "pointsAtX",
19698        pointsaty: "pointsAtY",
19699        pointsatz: "pointsAtZ",
19700        popover: "popover",
19701        popovertarget: "popoverTarget",
19702        popovertargetaction: "popoverTargetAction",
19703        prefix: "prefix",
19704        preservealpha: "preserveAlpha",
19705        preserveaspectratio: "preserveAspectRatio",
19706        primitiveunits: "primitiveUnits",
19707        property: "property",
19708        r: "r",
19709        radius: "radius",
19710        refx: "refX",
19711        refy: "refY",
19712        renderingintent: "renderingIntent",
19713        "rendering-intent": "renderingIntent",
19714        repeatcount: "repeatCount",
19715        repeatdur: "repeatDur",
19716        requiredextensions: "requiredExtensions",
19717        requiredfeatures: "requiredFeatures",
19718        resource: "resource",
19719        restart: "restart",
19720        result: "result",
19721        results: "results",
19722        rotate: "rotate",
19723        rx: "rx",
19724        ry: "ry",
19725        scale: "scale",
19726        security: "security",
19727        seed: "seed",
19728        shaperendering: "shapeRendering",
19729        "shape-rendering": "shapeRendering",
19730        slope: "slope",
19731        spacing: "spacing",
19732        specularconstant: "specularConstant",
19733        specularexponent: "specularExponent",
19734        speed: "speed",
19735        spreadmethod: "spreadMethod",
19736        startoffset: "startOffset",
19737        stddeviation: "stdDeviation",
19738        stemh: "stemh",
19739        stemv: "stemv",
19740        stitchtiles: "stitchTiles",
19741        stopcolor: "stopColor",
19742        "stop-color": "stopColor",
19743        stopopacity: "stopOpacity",
19744        "stop-opacity": "stopOpacity",
19745        strikethroughposition: "strikethroughPosition",
19746        "strikethrough-position": "strikethroughPosition",
19747        strikethroughthickness: "strikethroughThickness",
19748        "strikethrough-thickness": "strikethroughThickness",
19749        string: "string",
19750        stroke: "stroke",
19751        strokedasharray: "strokeDasharray",
19752        "stroke-dasharray": "strokeDasharray",
19753        strokedashoffset: "strokeDashoffset",
19754        "stroke-dashoffset": "strokeDashoffset",
19755        strokelinecap: "strokeLinecap",
19756        "stroke-linecap": "strokeLinecap",
19757        strokelinejoin: "strokeLinejoin",
19758        "stroke-linejoin": "strokeLinejoin",
19759        strokemiterlimit: "strokeMiterlimit",
19760        "stroke-miterlimit": "strokeMiterlimit",
19761        strokewidth: "strokeWidth",
19762        "stroke-width": "strokeWidth",
19763        strokeopacity: "strokeOpacity",
19764        "stroke-opacity": "strokeOpacity",
19765        suppresscontenteditablewarning: "suppressContentEditableWarning",
19766        suppresshydrationwarning: "suppressHydrationWarning",
19767        surfacescale: "surfaceScale",
19768        systemlanguage: "systemLanguage",
19769        tablevalues: "tableValues",
19770        targetx: "targetX",
19771        targety: "targetY",
19772        textanchor: "textAnchor",
19773        "text-anchor": "textAnchor",
19774        textdecoration: "textDecoration",
19775        "text-decoration": "textDecoration",
19776        textlength: "textLength",
19777        textrendering: "textRendering",
19778        "text-rendering": "textRendering",
19779        to: "to",
19780        transform: "transform",
19781        transformorigin: "transformOrigin",
19782        "transform-origin": "transformOrigin",
19783        typeof: "typeof",
19784        u1: "u1",
19785        u2: "u2",
19786        underlineposition: "underlinePosition",
19787        "underline-position": "underlinePosition",
19788        underlinethickness: "underlineThickness",
19789        "underline-thickness": "underlineThickness",
19790        unicode: "unicode",
19791        unicodebidi: "unicodeBidi",
19792        "unicode-bidi": "unicodeBidi",
19793        unicoderange: "unicodeRange",
19794        "unicode-range": "unicodeRange",
19795        unitsperem: "unitsPerEm",
19796        "units-per-em": "unitsPerEm",
19797        unselectable: "unselectable",
19798        valphabetic: "vAlphabetic",
19799        "v-alphabetic": "vAlphabetic",
19800        values: "values",
19801        vectoreffect: "vectorEffect",
19802        "vector-effect": "vectorEffect",
19803        version: "version",
19804        vertadvy: "vertAdvY",
19805        "vert-adv-y": "vertAdvY",
19806        vertoriginx: "vertOriginX",
19807        "vert-origin-x": "vertOriginX",
19808        vertoriginy: "vertOriginY",
19809        "vert-origin-y": "vertOriginY",
19810        vhanging: "vHanging",
19811        "v-hanging": "vHanging",
19812        videographic: "vIdeographic",
19813        "v-ideographic": "vIdeographic",
19814        viewbox: "viewBox",
19815        viewtarget: "viewTarget",
19816        visibility: "visibility",
19817        vmathematical: "vMathematical",
19818        "v-mathematical": "vMathematical",
19819        vocab: "vocab",
19820        widths: "widths",
19821        wordspacing: "wordSpacing",
19822        "word-spacing": "wordSpacing",
19823        writingmode: "writingMode",
19824        "writing-mode": "writingMode",
19825        x1: "x1",
19826        x2: "x2",
19827        x: "x",
19828        xchannelselector: "xChannelSelector",
19829        xheight: "xHeight",
19830        "x-height": "xHeight",
19831        xlinkactuate: "xlinkActuate",
19832        "xlink:actuate": "xlinkActuate",
19833        xlinkarcrole: "xlinkArcrole",
19834        "xlink:arcrole": "xlinkArcrole",
19835        xlinkhref: "xlinkHref",
19836        "xlink:href": "xlinkHref",
19837        xlinkrole: "xlinkRole",
19838        "xlink:role": "xlinkRole",
19839        xlinkshow: "xlinkShow",
19840        "xlink:show": "xlinkShow",
19841        xlinktitle: "xlinkTitle",
19842        "xlink:title": "xlinkTitle",
19843        xlinktype: "xlinkType",
19844        "xlink:type": "xlinkType",
19845        xmlbase: "xmlBase",
19846        "xml:base": "xmlBase",
19847        xmllang: "xmlLang",
19848        "xml:lang": "xmlLang",
19849        xmlns: "xmlns",
19850        "xml:space": "xmlSpace",
19851        xmlnsxlink: "xmlnsXlink",
19852        "xmlns:xlink": "xmlnsXlink",
19853        xmlspace: "xmlSpace",
19854        y1: "y1",
19855        y2: "y2",
19856        y: "y",
19857        ychannelselector: "yChannelSelector",
19858        z: "z",
19859        zoomandpan: "zoomAndPan"
19860      }, ariaProperties = {
19861        "aria-current": 0,
19862        "aria-description": 0,
19863        "aria-details": 0,
19864        "aria-disabled": 0,
19865        "aria-hidden": 0,
19866        "aria-invalid": 0,
19867        "aria-keyshortcuts": 0,
19868        "aria-label": 0,
19869        "aria-roledescription": 0,
19870        "aria-autocomplete": 0,
19871        "aria-checked": 0,
19872        "aria-expanded": 0,
19873        "aria-haspopup": 0,
19874        "aria-level": 0,
19875        "aria-modal": 0,
19876        "aria-multiline": 0,
19877        "aria-multiselectable": 0,
19878        "aria-orientation": 0,
19879        "aria-placeholder": 0,
19880        "aria-pressed": 0,
19881        "aria-readonly": 0,
19882        "aria-required": 0,
19883        "aria-selected": 0,
19884        "aria-sort": 0,
19885        "aria-valuemax": 0,
19886        "aria-valuemin": 0,
19887        "aria-valuenow": 0,
19888        "aria-valuetext": 0,
19889        "aria-atomic": 0,
19890        "aria-busy": 0,
19891        "aria-live": 0,
19892        "aria-relevant": 0,
19893        "aria-dropeffect": 0,
19894        "aria-grabbed": 0,
19895        "aria-activedescendant": 0,
19896        "aria-colcount": 0,
19897        "aria-colindex": 0,
19898        "aria-colspan": 0,
19899        "aria-controls": 0,
19900        "aria-describedby": 0,
19901        "aria-errormessage": 0,
19902        "aria-flowto": 0,
19903        "aria-labelledby": 0,
19904        "aria-owns": 0,
19905        "aria-posinset": 0,
19906        "aria-rowcount": 0,
19907        "aria-rowindex": 0,
19908        "aria-rowspan": 0,
19909        "aria-setsize": 0,
19910        "aria-braillelabel": 0,
19911        "aria-brailleroledescription": 0,
19912        "aria-colindextext": 0,
19913        "aria-rowindextext": 0
19914      }, warnedProperties$1 = {}, rARIA$1 = RegExp(
19915        "^(aria)-[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"
19916      ), rARIACamel$1 = RegExp(
19917        "^(aria)[A-Z][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"
19918      ), didWarnValueNull = false, warnedProperties = {}, EVENT_NAME_REGEX = /^on./, INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/, rARIA = RegExp(
19919        "^(aria)-[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"
19920      ), rARIACamel = RegExp(
19921        "^(aria)[A-Z][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"
19922      ), isJavaScriptProtocol = /^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i, currentReplayingEvent = null, restoreTarget = null, restoreQueue = null, isInsideEventHandler = false, canUseDOM = !("undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement), passiveBrowserEventsSupported = false;
19923      if (canUseDOM)
19924        try {
19925          var options$jscomp$0 = {};
19926          Object.defineProperty(options$jscomp$0, "passive", {
19927            get: function() {
19928              passiveBrowserEventsSupported = true;
19929            }
19930          });
19931          window.addEventListener("test", options$jscomp$0, options$jscomp$0);
19932          window.removeEventListener("test", options$jscomp$0, options$jscomp$0);
19933        } catch (e3) {
19934          passiveBrowserEventsSupported = false;
19935        }
19936      var root2 = null, startText = null, fallbackText = null, EventInterface = {
19937        eventPhase: 0,
19938        bubbles: 0,
19939        cancelable: 0,
19940        timeStamp: function(event) {
19941          return event.timeStamp || Date.now();
19942        },
19943        defaultPrevented: 0,
19944        isTrusted: 0
19945      }, SyntheticEvent = createSyntheticEvent(EventInterface), UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }), SyntheticUIEvent = createSyntheticEvent(UIEventInterface), lastMovementX, lastMovementY, lastMouseEvent, MouseEventInterface = assign({}, UIEventInterface, {
19946        screenX: 0,
19947        screenY: 0,
19948        clientX: 0,
19949        clientY: 0,
19950        pageX: 0,
19951        pageY: 0,
19952        ctrlKey: 0,
19953        shiftKey: 0,
19954        altKey: 0,
19955        metaKey: 0,
19956        getModifierState: getEventModifierState,
19957        button: 0,
19958        buttons: 0,
19959        relatedTarget: function(event) {
19960          return void 0 === event.relatedTarget ? event.fromElement === event.srcElement ? event.toElement : event.fromElement : event.relatedTarget;
19961        },
19962        movementX: function(event) {
19963          if ("movementX" in event) return event.movementX;
19964          event !== lastMouseEvent && (lastMouseEvent && "mousemove" === event.type ? (lastMovementX = event.screenX - lastMouseEvent.screenX, lastMovementY = event.screenY - lastMouseEvent.screenY) : lastMovementY = lastMovementX = 0, lastMouseEvent = event);
19965          return lastMovementX;
19966        },
19967        movementY: function(event) {
19968          return "movementY" in event ? event.movementY : lastMovementY;
19969        }
19970      }), SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface), DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }), SyntheticDragEvent = createSyntheticEvent(DragEventInterface), FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }), SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface), AnimationEventInterface = assign({}, EventInterface, {
19971        animationName: 0,
19972        elapsedTime: 0,
19973        pseudoElement: 0
19974      }), SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface), ClipboardEventInterface = assign({}, EventInterface, {
19975        clipboardData: function(event) {
19976          return "clipboardData" in event ? event.clipboardData : window.clipboardData;
19977        }
19978      }), SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface), CompositionEventInterface = assign({}, EventInterface, { data: 0 }), SyntheticCompositionEvent = createSyntheticEvent(
19979        CompositionEventInterface
19980      ), SyntheticInputEvent = SyntheticCompositionEvent, normalizeKey = {
19981        Esc: "Escape",
19982        Spacebar: " ",
19983        Left: "ArrowLeft",
19984        Up: "ArrowUp",
19985        Right: "ArrowRight",
19986        Down: "ArrowDown",
19987        Del: "Delete",
19988        Win: "OS",
19989        Menu: "ContextMenu",
19990        Apps: "ContextMenu",
19991        Scroll: "ScrollLock",
19992        MozPrintableKey: "Unidentified"
19993      }, translateToKey = {
19994        8: "Backspace",
19995        9: "Tab",
19996        12: "Clear",
19997        13: "Enter",
19998        16: "Shift",
19999        17: "Control",
20000        18: "Alt",
20001        19: "Pause",
20002        20: "CapsLock",
20003        27: "Escape",
20004        32: " ",
20005        33: "PageUp",
20006        34: "PageDown",
20007        35: "End",
20008        36: "Home",
20009        37: "ArrowLeft",
20010        38: "ArrowUp",
20011        39: "ArrowRight",
20012        40: "ArrowDown",
20013        45: "Insert",
20014        46: "Delete",
20015        112: "F1",
20016        113: "F2",
20017        114: "F3",
20018        115: "F4",
20019        116: "F5",
20020        117: "F6",
20021        118: "F7",
20022        119: "F8",
20023        120: "F9",
20024        121: "F10",
20025        122: "F11",
20026        123: "F12",
20027        144: "NumLock",
20028        145: "ScrollLock",
20029        224: "Meta"
20030      }, modifierKeyToProp = {
20031        Alt: "altKey",
20032        Control: "ctrlKey",
20033        Meta: "metaKey",
20034        Shift: "shiftKey"
20035      }, KeyboardEventInterface = assign({}, UIEventInterface, {
20036        key: function(nativeEvent) {
20037          if (nativeEvent.key) {
20038            var key = normalizeKey[nativeEvent.key] || nativeEvent.key;
20039            if ("Unidentified" !== key) return key;
20040          }
20041          return "keypress" === nativeEvent.type ? (nativeEvent = getEventCharCode(nativeEvent), 13 === nativeEvent ? "Enter" : String.fromCharCode(nativeEvent)) : "keydown" === nativeEvent.type || "keyup" === nativeEvent.type ? translateToKey[nativeEvent.keyCode] || "Unidentified" : "";
20042        },
20043        code: 0,
20044        location: 0,
20045        ctrlKey: 0,
20046        shiftKey: 0,
20047        altKey: 0,
20048        metaKey: 0,
20049        repeat: 0,
20050        locale: 0,
20051        getModifierState: getEventModifierState,
20052        charCode: function(event) {
20053          return "keypress" === event.type ? getEventCharCode(event) : 0;
20054        },
20055        keyCode: function(event) {
20056          return "keydown" === event.type || "keyup" === event.type ? event.keyCode : 0;
20057        },
20058        which: function(event) {
20059          return "keypress" === event.type ? getEventCharCode(event) : "keydown" === event.type || "keyup" === event.type ? event.keyCode : 0;
20060        }
20061      }), SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface), PointerEventInterface = assign({}, MouseEventInterface, {
20062        pointerId: 0,
20063        width: 0,
20064        height: 0,
20065        pressure: 0,
20066        tangentialPressure: 0,
20067        tiltX: 0,
20068        tiltY: 0,
20069        twist: 0,
20070        pointerType: 0,
20071        isPrimary: 0
20072      }), SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface), TouchEventInterface = assign({}, UIEventInterface, {
20073        touches: 0,
20074        targetTouches: 0,
20075        changedTouches: 0,
20076        altKey: 0,
20077        metaKey: 0,
20078        ctrlKey: 0,
20079        shiftKey: 0,
20080        getModifierState: getEventModifierState
20081      }), SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface), TransitionEventInterface = assign({}, EventInterface, {
20082        propertyName: 0,
20083        elapsedTime: 0,
20084        pseudoElement: 0
20085      }), SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface), WheelEventInterface = assign({}, MouseEventInterface, {
20086        deltaX: function(event) {
20087          return "deltaX" in event ? event.deltaX : "wheelDeltaX" in event ? -event.wheelDeltaX : 0;
20088        },
20089        deltaY: function(event) {
20090          return "deltaY" in event ? event.deltaY : "wheelDeltaY" in event ? -event.wheelDeltaY : "wheelDelta" in event ? -event.wheelDelta : 0;
20091        },
20092        deltaZ: 0,
20093        deltaMode: 0
20094      }), SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface), ToggleEventInterface = assign({}, EventInterface, {
20095        newState: 0,
20096        oldState: 0
20097      }), SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface), END_KEYCODES = [9, 13, 27, 32], START_KEYCODE = 229, canUseCompositionEvent = canUseDOM && "CompositionEvent" in window, documentMode = null;
20098      canUseDOM && "documentMode" in document && (documentMode = document.documentMode);
20099      var canUseTextInputEvent = canUseDOM && "TextEvent" in window && !documentMode, useFallbackCompositionData = canUseDOM && (!canUseCompositionEvent || documentMode && 8 < documentMode && 11 >= documentMode), SPACEBAR_CODE = 32, SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE), hasSpaceKeypress = false, isComposing = false, supportedInputTypes = {
20100        color: true,
20101        date: true,
20102        datetime: true,
20103        "datetime-local": true,
20104        email: true,
20105        month: true,
20106        number: true,
20107        password: true,
20108        range: true,
20109        search: true,
20110        tel: true,
20111        text: true,
20112        time: true,
20113        url: true,
20114        week: true
20115      }, activeElement$1 = null, activeElementInst$1 = null, isInputEventSupported = false;
20116      canUseDOM && (isInputEventSupported = isEventSupported("input") && (!document.documentMode || 9 < document.documentMode));
20117      var objectIs = "function" === typeof Object.is ? Object.is : is3, skipSelectionChangeEvent = canUseDOM && "documentMode" in document && 11 >= document.documentMode, activeElement = null, activeElementInst = null, lastSelection = null, mouseDown = false, vendorPrefixes = {
20118        animationend: makePrefixMap("Animation", "AnimationEnd"),
20119        animationiteration: makePrefixMap("Animation", "AnimationIteration"),
20120        animationstart: makePrefixMap("Animation", "AnimationStart"),
20121        transitionrun: makePrefixMap("Transition", "TransitionRun"),
20122        transitionstart: makePrefixMap("Transition", "TransitionStart"),
20123        transitioncancel: makePrefixMap("Transition", "TransitionCancel"),
20124        transitionend: makePrefixMap("Transition", "TransitionEnd")
20125      }, prefixedEventNames = {}, style = {};
20126      canUseDOM && (style = document.createElement("div").style, "AnimationEvent" in window || (delete vendorPrefixes.animationend.animation, delete vendorPrefixes.animationiteration.animation, delete vendorPrefixes.animationstart.animation), "TransitionEvent" in window || delete vendorPrefixes.transitionend.transition);
20127      var ANIMATION_END = getVendorPrefixedEventName("animationend"), ANIMATION_ITERATION = getVendorPrefixedEventName("animationiteration"), ANIMATION_START = getVendorPrefixedEventName("animationstart"), TRANSITION_RUN = getVendorPrefixedEventName("transitionrun"), TRANSITION_START = getVendorPrefixedEventName("transitionstart"), TRANSITION_CANCEL = getVendorPrefixedEventName("transitioncancel"), TRANSITION_END = getVendorPrefixedEventName("transitionend"), topLevelEventsToReactNames = /* @__PURE__ */ new Map(), simpleEventPluginEvents = "abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(
20128        " "
20129      );
20130      simpleEventPluginEvents.push("scrollEnd");
20131      var lastResetTime = 0;
20132      if ("object" === typeof performance && "function" === typeof performance.now) {
20133        var localPerformance = performance;
20134        var getCurrentTime = function() {
20135          return localPerformance.now();
20136        };
20137      } else {
20138        var localDate = Date;
20139        getCurrentTime = function() {
20140          return localDate.now();
20141        };
20142      }
20143      var reportGlobalError = "function" === typeof reportError ? reportError : function(error2) {
20144        if ("object" === typeof window && "function" === typeof window.ErrorEvent) {
20145          var event = new window.ErrorEvent("error", {
20146            bubbles: true,
20147            cancelable: true,
20148            message: "object" === typeof error2 && null !== error2 && "string" === typeof error2.message ? String(error2.message) : String(error2),
20149            error: error2
20150          });
20151          if (!window.dispatchEvent(event)) return;
20152        } else if ("object" === typeof process && "function" === typeof process.emit) {
20153          process.emit("uncaughtException", error2);
20154          return;
20155        }
20156        console.error(error2);
20157      }, OMITTED_PROP_ERROR = "This object has been omitted by React in the console log to avoid sending too much data from the server. Try logging smaller or more specific objects.", EMPTY_ARRAY = 0, COMPLEX_ARRAY = 1, PRIMITIVE_ARRAY = 2, ENTRIES_ARRAY = 3, REMOVED = "\u2013\xA0", ADDED = "+\xA0", UNCHANGED = "\u2007\xA0", supportsUserTiming = "undefined" !== typeof console && "function" === typeof console.timeStamp && "undefined" !== typeof performance && "function" === typeof performance.measure, COMPONENTS_TRACK = "Components \u269B", LANES_TRACK_GROUP = "Scheduler \u269B", currentTrack = "Blocking", alreadyWarnedForDeepEquality = false, reusableComponentDevToolDetails = {
20158        color: "primary",
20159        properties: null,
20160        tooltipText: "",
20161        track: COMPONENTS_TRACK
20162      }, reusableComponentOptions = {
20163        start: -0,
20164        end: -0,
20165        detail: { devtools: reusableComponentDevToolDetails }
20166      }, resuableChangedPropsEntry = ["Changed Props", ""], DEEP_EQUALITY_WARNING = "This component received deeply equal props. It might benefit from useMemo or the React Compiler in its owner.", reusableDeeplyEqualPropsEntry = ["Changed Props", DEEP_EQUALITY_WARNING], OffscreenVisible = 1, OffscreenPassiveEffectsConnected = 2, concurrentQueues = [], concurrentQueuesIndex = 0, concurrentlyUpdatedLanes = 0, emptyContextObject = {};
20167      Object.freeze(emptyContextObject);
20168      var resolveFamily = null, failedBoundaries = null, NoMode = 0, ConcurrentMode = 1, ProfileMode = 2, StrictLegacyMode = 8, StrictEffectsMode = 16, SuspenseyImagesMode = 32;
20169      var hasBadMapPolyfill = false;
20170      try {
20171        var nonExtensibleObject = Object.preventExtensions({});
20172        /* @__PURE__ */ new Map([[nonExtensibleObject, null]]);
20173        /* @__PURE__ */ new Set([nonExtensibleObject]);
20174      } catch (e$3) {
20175        hasBadMapPolyfill = true;
20176      }
20177      var CapturedStacks = /* @__PURE__ */ new WeakMap(), forkStack = [], forkStackIndex = 0, treeForkProvider = null, treeForkCount = 0, idStack = [], idStackIndex = 0, treeContextProvider = null, treeContextId = 1, treeContextOverflow = "", hydrationParentFiber = null, nextHydratableInstance = null, isHydrating = false, didSuspendOrErrorDEV = false, hydrationDiffRootDEV = null, hydrationErrors = null, rootOrSingletonContext = false, HydrationMismatchException = Error(
20178        "Hydration Mismatch Exception: This is not a real error, and should not leak into userspace. If you're seeing this, it's likely a bug in React."
20179      ), valueCursor = createCursor(null);
20180      var rendererCursorDEV = createCursor(null);
20181      var rendererSigil = {};
20182      var currentlyRenderingFiber$1 = null, lastContextDependency = null, isDisallowedContextReadInDEV = false, AbortControllerLocal = "undefined" !== typeof AbortController ? AbortController : function() {
20183        var listeners = [], signal = this.signal = {
20184          aborted: false,
20185          addEventListener: function(type, listener) {
20186            listeners.push(listener);
20187          }
20188        };
20189        this.abort = function() {
20190          signal.aborted = true;
20191          listeners.forEach(function(listener) {
20192            return listener();
20193          });
20194        };
20195      }, scheduleCallback$2 = Scheduler.unstable_scheduleCallback, NormalPriority = Scheduler.unstable_NormalPriority, CacheContext = {
20196        $$typeof: REACT_CONTEXT_TYPE,
20197        Consumer: null,
20198        Provider: null,
20199        _currentValue: null,
20200        _currentValue2: null,
20201        _threadCount: 0,
20202        _currentRenderer: null,
20203        _currentRenderer2: null
20204      }, now3 = Scheduler.unstable_now, createTask = console.createTask ? console.createTask : function() {
20205        return null;
20206      }, SPAWNED_UPDATE = 1, PINGED_UPDATE = 2, renderStartTime = -0, commitStartTime = -0, commitEndTime = -0, commitErrors = null, profilerStartTime = -1.1, profilerEffectDuration = -0, componentEffectDuration = -0, componentEffectStartTime = -1.1, componentEffectEndTime = -1.1, componentEffectErrors = null, componentEffectSpawnedUpdate = false, blockingClampTime = -0, blockingUpdateTime = -1.1, blockingUpdateTask = null, blockingUpdateType = 0, blockingUpdateMethodName = null, blockingUpdateComponentName = null, blockingEventTime = -1.1, blockingEventType = null, blockingEventRepeatTime = -1.1, blockingSuspendedTime = -1.1, transitionClampTime = -0, transitionStartTime = -1.1, transitionUpdateTime = -1.1, transitionUpdateType = 0, transitionUpdateTask = null, transitionUpdateMethodName = null, transitionUpdateComponentName = null, transitionEventTime = -1.1, transitionEventType = null, transitionEventRepeatTime = -1.1, transitionSuspendedTime = -1.1, retryClampTime = -0, idleClampTime = -0, animatingLanes = 0, animatingTask = null, yieldReason = 0, yieldStartTime = -1.1, currentUpdateIsNested = false, nestedUpdateScheduled = false, currentEntangledListeners = null, currentEntangledPendingCount = 0, currentEntangledLane = 0, currentEntangledActionThenable = null, prevOnStartTransitionFinish = ReactSharedInternals.S;
20207      ReactSharedInternals.S = function(transition, returnValue) {
20208        globalMostRecentTransitionTime = now$1();
20209        if ("object" === typeof returnValue && null !== returnValue && "function" === typeof returnValue.then) {
20210          if (0 > transitionStartTime && 0 > transitionUpdateTime) {
20211            transitionStartTime = now3();
20212            var newEventTime = resolveEventTimeStamp(), newEventType = resolveEventType();
20213            if (newEventTime !== transitionEventRepeatTime || newEventType !== transitionEventType)
20214              transitionEventRepeatTime = -1.1;
20215            transitionEventTime = newEventTime;
20216            transitionEventType = newEventType;
20217          }
20218          entangleAsyncAction(transition, returnValue);
20219        }
20220        null !== prevOnStartTransitionFinish && prevOnStartTransitionFinish(transition, returnValue);
20221      };
20222      var resumedCache = createCursor(null), ReactStrictModeWarnings = {
20223        recordUnsafeLifecycleWarnings: function() {
20224        },
20225        flushPendingUnsafeLifecycleWarnings: function() {
20226        },
20227        recordLegacyContextWarning: function() {
20228        },
20229        flushLegacyContextWarning: function() {
20230        },
20231        discardPendingWarnings: function() {
20232        }
20233      }, pendingComponentWillMountWarnings = [], pendingUNSAFE_ComponentWillMountWarnings = [], pendingComponentWillReceivePropsWarnings = [], pendingUNSAFE_ComponentWillReceivePropsWarnings = [], pendingComponentWillUpdateWarnings = [], pendingUNSAFE_ComponentWillUpdateWarnings = [], didWarnAboutUnsafeLifecycles = /* @__PURE__ */ new Set();
20234      ReactStrictModeWarnings.recordUnsafeLifecycleWarnings = function(fiber, instance) {
20235        didWarnAboutUnsafeLifecycles.has(fiber.type) || ("function" === typeof instance.componentWillMount && true !== instance.componentWillMount.__suppressDeprecationWarning && pendingComponentWillMountWarnings.push(fiber), fiber.mode & StrictLegacyMode && "function" === typeof instance.UNSAFE_componentWillMount && pendingUNSAFE_ComponentWillMountWarnings.push(fiber), "function" === typeof instance.componentWillReceiveProps && true !== instance.componentWillReceiveProps.__suppressDeprecationWarning && pendingComponentWillReceivePropsWarnings.push(fiber), fiber.mode & StrictLegacyMode && "function" === typeof instance.UNSAFE_componentWillReceiveProps && pendingUNSAFE_ComponentWillReceivePropsWarnings.push(fiber), "function" === typeof instance.componentWillUpdate && true !== instance.componentWillUpdate.__suppressDeprecationWarning && pendingComponentWillUpdateWarnings.push(fiber), fiber.mode & StrictLegacyMode && "function" === typeof instance.UNSAFE_componentWillUpdate && pendingUNSAFE_ComponentWillUpdateWarnings.push(fiber));
20236      };
20237      ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings = function() {
20238        var componentWillMountUniqueNames = /* @__PURE__ */ new Set();
20239        0 < pendingComponentWillMountWarnings.length && (pendingComponentWillMountWarnings.forEach(function(fiber) {
20240          componentWillMountUniqueNames.add(
20241            getComponentNameFromFiber(fiber) || "Component"
20242          );
20243          didWarnAboutUnsafeLifecycles.add(fiber.type);
20244        }), pendingComponentWillMountWarnings = []);
20245        var UNSAFE_componentWillMountUniqueNames = /* @__PURE__ */ new Set();
20246        0 < pendingUNSAFE_ComponentWillMountWarnings.length && (pendingUNSAFE_ComponentWillMountWarnings.forEach(function(fiber) {
20247          UNSAFE_componentWillMountUniqueNames.add(
20248            getComponentNameFromFiber(fiber) || "Component"
20249          );
20250          didWarnAboutUnsafeLifecycles.add(fiber.type);
20251        }), pendingUNSAFE_ComponentWillMountWarnings = []);
20252        var componentWillReceivePropsUniqueNames = /* @__PURE__ */ new Set();
20253        0 < pendingComponentWillReceivePropsWarnings.length && (pendingComponentWillReceivePropsWarnings.forEach(function(fiber) {
20254          componentWillReceivePropsUniqueNames.add(
20255            getComponentNameFromFiber(fiber) || "Component"
20256          );
20257          didWarnAboutUnsafeLifecycles.add(fiber.type);
20258        }), pendingComponentWillReceivePropsWarnings = []);
20259        var UNSAFE_componentWillReceivePropsUniqueNames = /* @__PURE__ */ new Set();
20260        0 < pendingUNSAFE_ComponentWillReceivePropsWarnings.length && (pendingUNSAFE_ComponentWillReceivePropsWarnings.forEach(
20261          function(fiber) {
20262            UNSAFE_componentWillReceivePropsUniqueNames.add(
20263              getComponentNameFromFiber(fiber) || "Component"
20264            );
20265            didWarnAboutUnsafeLifecycles.add(fiber.type);
20266          }
20267        ), pendingUNSAFE_ComponentWillReceivePropsWarnings = []);
20268        var componentWillUpdateUniqueNames = /* @__PURE__ */ new Set();
20269        0 < pendingComponentWillUpdateWarnings.length && (pendingComponentWillUpdateWarnings.forEach(function(fiber) {
20270          componentWillUpdateUniqueNames.add(
20271            getComponentNameFromFiber(fiber) || "Component"
20272          );
20273          didWarnAboutUnsafeLifecycles.add(fiber.type);
20274        }), pendingComponentWillUpdateWarnings = []);
20275        var UNSAFE_componentWillUpdateUniqueNames = /* @__PURE__ */ new Set();
20276        0 < pendingUNSAFE_ComponentWillUpdateWarnings.length && (pendingUNSAFE_ComponentWillUpdateWarnings.forEach(function(fiber) {
20277          UNSAFE_componentWillUpdateUniqueNames.add(
20278            getComponentNameFromFiber(fiber) || "Component"
20279          );
20280          didWarnAboutUnsafeLifecycles.add(fiber.type);
20281        }), pendingUNSAFE_ComponentWillUpdateWarnings = []);
20282        if (0 < UNSAFE_componentWillMountUniqueNames.size) {
20283          var sortedNames = setToSortedString(
20284            UNSAFE_componentWillMountUniqueNames
20285          );
20286          console.error(
20287            "Using UNSAFE_componentWillMount in strict mode is not recommended and may indicate bugs in your code. See https://react.dev/link/unsafe-component-lifecycles for details.\n\n* Move code with side effects to componentDidMount, and set initial state in the constructor.\n\nPlease update the following components: %s",
20288            sortedNames
20289          );
20290        }
20291        0 < UNSAFE_componentWillReceivePropsUniqueNames.size && (sortedNames = setToSortedString(
20292          UNSAFE_componentWillReceivePropsUniqueNames
20293        ), console.error(
20294          "Using UNSAFE_componentWillReceiveProps in strict mode is not recommended and may indicate bugs in your code. See https://react.dev/link/unsafe-component-lifecycles for details.\n\n* Move data fetching code or side effects to componentDidUpdate.\n* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://react.dev/link/derived-state\n\nPlease update the following components: %s",
20295          sortedNames
20296        ));
20297        0 < UNSAFE_componentWillUpdateUniqueNames.size && (sortedNames = setToSortedString(
20298          UNSAFE_componentWillUpdateUniqueNames
20299        ), console.error(
20300          "Using UNSAFE_componentWillUpdate in strict mode is not recommended and may indicate bugs in your code. See https://react.dev/link/unsafe-component-lifecycles for details.\n\n* Move data fetching code or side effects to componentDidUpdate.\n\nPlease update the following components: %s",
20301          sortedNames
20302        ));
20303        0 < componentWillMountUniqueNames.size && (sortedNames = setToSortedString(componentWillMountUniqueNames), console.warn(
20304          "componentWillMount has been renamed, and is not recommended for use. See https://react.dev/link/unsafe-component-lifecycles for details.\n\n* Move code with side effects to componentDidMount, and set initial state in the constructor.\n* Rename componentWillMount to UNSAFE_componentWillMount to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n\nPlease update the following components: %s",
20305          sortedNames
20306        ));
20307        0 < componentWillReceivePropsUniqueNames.size && (sortedNames = setToSortedString(
20308          componentWillReceivePropsUniqueNames
20309        ), console.warn(
20310          "componentWillReceiveProps has been renamed, and is not recommended for use. See https://react.dev/link/unsafe-component-lifecycles for details.\n\n* Move data fetching code or side effects to componentDidUpdate.\n* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://react.dev/link/derived-state\n* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n\nPlease update the following components: %s",
20311          sortedNames
20312        ));
20313        0 < componentWillUpdateUniqueNames.size && (sortedNames = setToSortedString(componentWillUpdateUniqueNames), console.warn(
20314          "componentWillUpdate has been renamed, and is not recommended for use. See https://react.dev/link/unsafe-component-lifecycles for details.\n\n* Move data fetching code or side effects to componentDidUpdate.\n* Rename componentWillUpdate to UNSAFE_componentWillUpdate to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n\nPlease update the following components: %s",
20315          sortedNames
20316        ));
20317      };
20318      var pendingLegacyContextWarning = /* @__PURE__ */ new Map(), didWarnAboutLegacyContext = /* @__PURE__ */ new Set();
20319      ReactStrictModeWarnings.recordLegacyContextWarning = function(fiber, instance) {
20320        var strictRoot = null;
20321        for (var node = fiber; null !== node; )
20322          node.mode & StrictLegacyMode && (strictRoot = node), node = node.return;
20323        null === strictRoot ? console.error(
20324          "Expected to find a StrictMode component in a strict mode tree. This error is likely caused by a bug in React. Please file an issue."
20325        ) : !didWarnAboutLegacyContext.has(fiber.type) && (node = pendingLegacyContextWarning.get(strictRoot), null != fiber.type.contextTypes || null != fiber.type.childContextTypes || null !== instance && "function" === typeof instance.getChildContext) && (void 0 === node && (node = [], pendingLegacyContextWarning.set(strictRoot, node)), node.push(fiber));
20326      };
20327      ReactStrictModeWarnings.flushLegacyContextWarning = function() {
20328        pendingLegacyContextWarning.forEach(function(fiberArray) {
20329          if (0 !== fiberArray.length) {
20330            var firstFiber = fiberArray[0], uniqueNames = /* @__PURE__ */ new Set();
20331            fiberArray.forEach(function(fiber) {
20332              uniqueNames.add(getComponentNameFromFiber(fiber) || "Component");
20333              didWarnAboutLegacyContext.add(fiber.type);
20334            });
20335            var sortedNames = setToSortedString(uniqueNames);
20336            runWithFiberInDEV(firstFiber, function() {
20337              console.error(
20338                "Legacy context API has been detected within a strict-mode tree.\n\nThe old API will be supported in all 16.x releases, but applications using it should migrate to the new version.\n\nPlease update the following components: %s\n\nLearn more about this warning here: https://react.dev/link/legacy-context",
20339                sortedNames
20340              );
20341            });
20342          }
20343        });
20344      };
20345      ReactStrictModeWarnings.discardPendingWarnings = function() {
20346        pendingComponentWillMountWarnings = [];
20347        pendingUNSAFE_ComponentWillMountWarnings = [];
20348        pendingComponentWillReceivePropsWarnings = [];
20349        pendingUNSAFE_ComponentWillReceivePropsWarnings = [];
20350        pendingComponentWillUpdateWarnings = [];
20351        pendingUNSAFE_ComponentWillUpdateWarnings = [];
20352        pendingLegacyContextWarning = /* @__PURE__ */ new Map();
20353      };
20354      var callComponent = {
20355        react_stack_bottom_frame: function(Component, props, secondArg) {
20356          var wasRendering = isRendering;
20357          isRendering = true;
20358          try {
20359            return Component(props, secondArg);
20360          } finally {
20361            isRendering = wasRendering;
20362          }
20363        }
20364      }, callComponentInDEV = callComponent.react_stack_bottom_frame.bind(callComponent), callRender = {
20365        react_stack_bottom_frame: function(instance) {
20366          var wasRendering = isRendering;
20367          isRendering = true;
20368          try {
20369            return instance.render();
20370          } finally {
20371            isRendering = wasRendering;
20372          }
20373        }
20374      }, callRenderInDEV = callRender.react_stack_bottom_frame.bind(callRender), callComponentDidMount = {
20375        react_stack_bottom_frame: function(finishedWork, instance) {
20376          try {
20377            instance.componentDidMount();
20378          } catch (error2) {
20379            captureCommitPhaseError(finishedWork, finishedWork.return, error2);
20380          }
20381        }
20382      }, callComponentDidMountInDEV = callComponentDidMount.react_stack_bottom_frame.bind(
20383        callComponentDidMount
20384      ), callComponentDidUpdate = {
20385        react_stack_bottom_frame: function(finishedWork, instance, prevProps, prevState, snapshot) {
20386          try {
20387            instance.componentDidUpdate(prevProps, prevState, snapshot);
20388          } catch (error2) {
20389            captureCommitPhaseError(finishedWork, finishedWork.return, error2);
20390          }
20391        }
20392      }, callComponentDidUpdateInDEV = callComponentDidUpdate.react_stack_bottom_frame.bind(
20393        callComponentDidUpdate
20394      ), callComponentDidCatch = {
20395        react_stack_bottom_frame: function(instance, errorInfo) {
20396          var stack = errorInfo.stack;
20397          instance.componentDidCatch(errorInfo.value, {
20398            componentStack: null !== stack ? stack : ""
20399          });
20400        }
20401      }, callComponentDidCatchInDEV = callComponentDidCatch.react_stack_bottom_frame.bind(
20402        callComponentDidCatch
20403      ), callComponentWillUnmount = {
20404        react_stack_bottom_frame: function(current2, nearestMountedAncestor, instance) {
20405          try {
20406            instance.componentWillUnmount();
20407          } catch (error2) {
20408            captureCommitPhaseError(current2, nearestMountedAncestor, error2);
20409          }
20410        }
20411      }, callComponentWillUnmountInDEV = callComponentWillUnmount.react_stack_bottom_frame.bind(
20412        callComponentWillUnmount
20413      ), callCreate = {
20414        react_stack_bottom_frame: function(effect) {
20415          var create = effect.create;
20416          effect = effect.inst;
20417          create = create();
20418          return effect.destroy = create;
20419        }
20420      }, callCreateInDEV = callCreate.react_stack_bottom_frame.bind(callCreate), callDestroy = {
20421        react_stack_bottom_frame: function(current2, nearestMountedAncestor, destroy) {
20422          try {
20423            destroy();
20424          } catch (error2) {
20425            captureCommitPhaseError(current2, nearestMountedAncestor, error2);
20426          }
20427        }
20428      }, callDestroyInDEV = callDestroy.react_stack_bottom_frame.bind(callDestroy), callLazyInit = {
20429        react_stack_bottom_frame: function(lazy) {
20430          var init = lazy._init;
20431          return init(lazy._payload);
20432        }
20433      }, callLazyInitInDEV = callLazyInit.react_stack_bottom_frame.bind(callLazyInit), SuspenseException = Error(
20434        "Suspense Exception: This is not a real error! It's an implementation detail of `use` to interrupt the current render. You must either rethrow it immediately, or move the `use` call outside of the `try/catch` block. Capturing without rethrowing will lead to unexpected behavior.\n\nTo handle async errors, wrap your component in an error boundary, or call the promise's `.catch` method and pass the result to `use`."
20435      ), SuspenseyCommitException = Error(
20436        "Suspense Exception: This is not a real error, and should not leak into userspace. If you're seeing this, it's likely a bug in React."
20437      ), SuspenseActionException = Error(
20438        "Suspense Exception: This is not a real error! It's an implementation detail of `useActionState` to interrupt the current render. You must either rethrow it immediately, or move the `useActionState` call outside of the `try/catch` block. Capturing without rethrowing will lead to unexpected behavior.\n\nTo handle async errors, wrap your component in an error boundary."
20439      ), noopSuspenseyCommitThenable = {
20440        then: function() {
20441          console.error(
20442            'Internal React error: A listener was unexpectedly attached to a "noop" thenable. This is a bug in React. Please file an issue.'
20443          );
20444        }
20445      }, suspendedThenable = null, needsToResetSuspendedThenableDEV = false, thenableState$1 = null, thenableIndexCounter$1 = 0, currentDebugInfo = null, didWarnAboutMaps;
20446      var didWarnAboutGenerators = didWarnAboutMaps = false;
20447      var ownerHasKeyUseWarning = {};
20448      var ownerHasFunctionTypeWarning = {};
20449      var ownerHasSymbolTypeWarning = {};
20450      warnForMissingKey = function(returnFiber, workInProgress2, child) {
20451        if (null !== child && "object" === typeof child && child._store && (!child._store.validated && null == child.key || 2 === child._store.validated)) {
20452          if ("object" !== typeof child._store)
20453            throw Error(
20454              "React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue."
20455            );
20456          child._store.validated = 1;
20457          var componentName2 = getComponentNameFromFiber(returnFiber), componentKey = componentName2 || "null";
20458          if (!ownerHasKeyUseWarning[componentKey]) {
20459            ownerHasKeyUseWarning[componentKey] = true;
20460            child = child._owner;
20461            returnFiber = returnFiber._debugOwner;
20462            var currentComponentErrorInfo = "";
20463            returnFiber && "number" === typeof returnFiber.tag && (componentKey = getComponentNameFromFiber(returnFiber)) && (currentComponentErrorInfo = "\n\nCheck the render method of `" + componentKey + "`.");
20464            currentComponentErrorInfo || componentName2 && (currentComponentErrorInfo = "\n\nCheck the top-level render call using <" + componentName2 + ">.");
20465            var childOwnerAppendix = "";
20466            null != child && returnFiber !== child && (componentName2 = null, "number" === typeof child.tag ? componentName2 = getComponentNameFromFiber(child) : "string" === typeof child.name && (componentName2 = child.name), componentName2 && (childOwnerAppendix = " It was passed a child from " + componentName2 + "."));
20467            runWithFiberInDEV(workInProgress2, function() {
20468              console.error(
20469                'Each child in a list should have a unique "key" prop.%s%s See https://react.dev/link/warning-keys for more information.',
20470                currentComponentErrorInfo,
20471                childOwnerAppendix
20472              );
20473            });
20474          }
20475        }
20476      };
20477      var reconcileChildFibers = createChildReconciler(true), mountChildFibers = createChildReconciler(false), UpdateState = 0, ReplaceState = 1, ForceUpdate = 2, CaptureUpdate = 3, hasForceUpdate = false;
20478      var didWarnUpdateInsideUpdate = false;
20479      var currentlyProcessingQueue = null;
20480      var didReadFromEntangledAsyncAction = false, currentTreeHiddenStackCursor = createCursor(null), prevEntangledRenderLanesCursor = createCursor(0), suspenseHandlerStackCursor = createCursor(null), shellBoundary = null, SubtreeSuspenseContextMask = 1, ForceSuspenseFallback = 2, suspenseStackCursor = createCursor(0), NoFlags = 0, HasEffect = 1, Insertion = 2, Layout = 4, Passive = 8, didWarnUncachedGetSnapshot;
20481      var didWarnAboutMismatchedHooksForComponent = /* @__PURE__ */ new Set();
20482      var didWarnAboutUseWrappedInTryCatch = /* @__PURE__ */ new Set();
20483      var didWarnAboutAsyncClientComponent = /* @__PURE__ */ new Set();
20484      var didWarnAboutUseFormState = /* @__PURE__ */ new Set();
20485      var renderLanes = 0, currentlyRenderingFiber = null, currentHook = null, workInProgressHook = null, didScheduleRenderPhaseUpdate = false, didScheduleRenderPhaseUpdateDuringThisPass = false, shouldDoubleInvokeUserFnsInHooksDEV = false, localIdCounter = 0, thenableIndexCounter = 0, thenableState = null, globalClientIdCounter = 0, RE_RENDER_LIMIT = 25, currentHookNameInDev = null, hookTypesDev = null, hookTypesUpdateIndexDev = -1, ignorePreviousDependencies = false, ContextOnlyDispatcher = {
20486        readContext,
20487        use,
20488        useCallback: throwInvalidHookError,
20489        useContext: throwInvalidHookError,
20490        useEffect: throwInvalidHookError,
20491        useImperativeHandle: throwInvalidHookError,
20492        useLayoutEffect: throwInvalidHookError,
20493        useInsertionEffect: throwInvalidHookError,
20494        useMemo: throwInvalidHookError,
20495        useReducer: throwInvalidHookError,
20496        useRef: throwInvalidHookError,
20497        useState: throwInvalidHookError,
20498        useDebugValue: throwInvalidHookError,
20499        useDeferredValue: throwInvalidHookError,
20500        useTransition: throwInvalidHookError,
20501        useSyncExternalStore: throwInvalidHookError,
20502        useId: throwInvalidHookError,
20503        useHostTransitionStatus: throwInvalidHookError,
20504        useFormState: throwInvalidHookError,
20505        useActionState: throwInvalidHookError,
20506        useOptimistic: throwInvalidHookError,
20507        useMemoCache: throwInvalidHookError,
20508        useCacheRefresh: throwInvalidHookError
20509      };
20510      ContextOnlyDispatcher.useEffectEvent = throwInvalidHookError;
20511      var HooksDispatcherOnMountInDEV = null, HooksDispatcherOnMountWithHookTypesInDEV = null, HooksDispatcherOnUpdateInDEV = null, HooksDispatcherOnRerenderInDEV = null, InvalidNestedHooksDispatcherOnMountInDEV = null, InvalidNestedHooksDispatcherOnUpdateInDEV = null, InvalidNestedHooksDispatcherOnRerenderInDEV = null;
20512      HooksDispatcherOnMountInDEV = {
20513        readContext: function(context) {
20514          return readContext(context);
20515        },
20516        use,
20517        useCallback: function(callback, deps) {
20518          currentHookNameInDev = "useCallback";
20519          mountHookTypesDev();
20520          checkDepsAreArrayDev(deps);
20521          return mountCallback(callback, deps);
20522        },
20523        useContext: function(context) {
20524          currentHookNameInDev = "useContext";
20525          mountHookTypesDev();
20526          return readContext(context);
20527        },
20528        useEffect: function(create, deps) {
20529          currentHookNameInDev = "useEffect";
20530          mountHookTypesDev();
20531          checkDepsAreArrayDev(deps);
20532          return mountEffect(create, deps);
20533        },
20534        useImperativeHandle: function(ref, create, deps) {
20535          currentHookNameInDev = "useImperativeHandle";
20536          mountHookTypesDev();
20537          checkDepsAreArrayDev(deps);
20538          return mountImperativeHandle(ref, create, deps);
20539        },
20540        useInsertionEffect: function(create, deps) {
20541          currentHookNameInDev = "useInsertionEffect";
20542          mountHookTypesDev();
20543          checkDepsAreArrayDev(deps);
20544          mountEffectImpl(4, Insertion, create, deps);
20545        },
20546        useLayoutEffect: function(create, deps) {
20547          currentHookNameInDev = "useLayoutEffect";
20548          mountHookTypesDev();
20549          checkDepsAreArrayDev(deps);
20550          return mountLayoutEffect(create, deps);
20551        },
20552        useMemo: function(create, deps) {
20553          currentHookNameInDev = "useMemo";
20554          mountHookTypesDev();
20555          checkDepsAreArrayDev(deps);
20556          var prevDispatcher = ReactSharedInternals.H;
20557          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnMountInDEV;
20558          try {
20559            return mountMemo(create, deps);
20560          } finally {
20561            ReactSharedInternals.H = prevDispatcher;
20562          }
20563        },
20564        useReducer: function(reducer, initialArg, init) {
20565          currentHookNameInDev = "useReducer";
20566          mountHookTypesDev();
20567          var prevDispatcher = ReactSharedInternals.H;
20568          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnMountInDEV;
20569          try {
20570            return mountReducer(reducer, initialArg, init);
20571          } finally {
20572            ReactSharedInternals.H = prevDispatcher;
20573          }
20574        },
20575        useRef: function(initialValue) {
20576          currentHookNameInDev = "useRef";
20577          mountHookTypesDev();
20578          return mountRef(initialValue);
20579        },
20580        useState: function(initialState) {
20581          currentHookNameInDev = "useState";
20582          mountHookTypesDev();
20583          var prevDispatcher = ReactSharedInternals.H;
20584          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnMountInDEV;
20585          try {
20586            return mountState(initialState);
20587          } finally {
20588            ReactSharedInternals.H = prevDispatcher;
20589          }
20590        },
20591        useDebugValue: function() {
20592          currentHookNameInDev = "useDebugValue";
20593          mountHookTypesDev();
20594        },
20595        useDeferredValue: function(value, initialValue) {
20596          currentHookNameInDev = "useDeferredValue";
20597          mountHookTypesDev();
20598          return mountDeferredValue(value, initialValue);
20599        },
20600        useTransition: function() {
20601          currentHookNameInDev = "useTransition";
20602          mountHookTypesDev();
20603          return mountTransition();
20604        },
20605        useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {
20606          currentHookNameInDev = "useSyncExternalStore";
20607          mountHookTypesDev();
20608          return mountSyncExternalStore(
20609            subscribe,
20610            getSnapshot,
20611            getServerSnapshot
20612          );
20613        },
20614        useId: function() {
20615          currentHookNameInDev = "useId";
20616          mountHookTypesDev();
20617          return mountId();
20618        },
20619        useFormState: function(action, initialState) {
20620          currentHookNameInDev = "useFormState";
20621          mountHookTypesDev();
20622          warnOnUseFormStateInDev();
20623          return mountActionState(action, initialState);
20624        },
20625        useActionState: function(action, initialState) {
20626          currentHookNameInDev = "useActionState";
20627          mountHookTypesDev();
20628          return mountActionState(action, initialState);
20629        },
20630        useOptimistic: function(passthrough) {
20631          currentHookNameInDev = "useOptimistic";
20632          mountHookTypesDev();
20633          return mountOptimistic(passthrough);
20634        },
20635        useHostTransitionStatus,
20636        useMemoCache,
20637        useCacheRefresh: function() {
20638          currentHookNameInDev = "useCacheRefresh";
20639          mountHookTypesDev();
20640          return mountRefresh();
20641        },
20642        useEffectEvent: function(callback) {
20643          currentHookNameInDev = "useEffectEvent";
20644          mountHookTypesDev();
20645          return mountEvent(callback);
20646        }
20647      };
20648      HooksDispatcherOnMountWithHookTypesInDEV = {
20649        readContext: function(context) {
20650          return readContext(context);
20651        },
20652        use,
20653        useCallback: function(callback, deps) {
20654          currentHookNameInDev = "useCallback";
20655          updateHookTypesDev();
20656          return mountCallback(callback, deps);
20657        },
20658        useContext: function(context) {
20659          currentHookNameInDev = "useContext";
20660          updateHookTypesDev();
20661          return readContext(context);
20662        },
20663        useEffect: function(create, deps) {
20664          currentHookNameInDev = "useEffect";
20665          updateHookTypesDev();
20666          return mountEffect(create, deps);
20667        },
20668        useImperativeHandle: function(ref, create, deps) {
20669          currentHookNameInDev = "useImperativeHandle";
20670          updateHookTypesDev();
20671          return mountImperativeHandle(ref, create, deps);
20672        },
20673        useInsertionEffect: function(create, deps) {
20674          currentHookNameInDev = "useInsertionEffect";
20675          updateHookTypesDev();
20676          mountEffectImpl(4, Insertion, create, deps);
20677        },
20678        useLayoutEffect: function(create, deps) {
20679          currentHookNameInDev = "useLayoutEffect";
20680          updateHookTypesDev();
20681          return mountLayoutEffect(create, deps);
20682        },
20683        useMemo: function(create, deps) {
20684          currentHookNameInDev = "useMemo";
20685          updateHookTypesDev();
20686          var prevDispatcher = ReactSharedInternals.H;
20687          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnMountInDEV;
20688          try {
20689            return mountMemo(create, deps);
20690          } finally {
20691            ReactSharedInternals.H = prevDispatcher;
20692          }
20693        },
20694        useReducer: function(reducer, initialArg, init) {
20695          currentHookNameInDev = "useReducer";
20696          updateHookTypesDev();
20697          var prevDispatcher = ReactSharedInternals.H;
20698          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnMountInDEV;
20699          try {
20700            return mountReducer(reducer, initialArg, init);
20701          } finally {
20702            ReactSharedInternals.H = prevDispatcher;
20703          }
20704        },
20705        useRef: function(initialValue) {
20706          currentHookNameInDev = "useRef";
20707          updateHookTypesDev();
20708          return mountRef(initialValue);
20709        },
20710        useState: function(initialState) {
20711          currentHookNameInDev = "useState";
20712          updateHookTypesDev();
20713          var prevDispatcher = ReactSharedInternals.H;
20714          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnMountInDEV;
20715          try {
20716            return mountState(initialState);
20717          } finally {
20718            ReactSharedInternals.H = prevDispatcher;
20719          }
20720        },
20721        useDebugValue: function() {
20722          currentHookNameInDev = "useDebugValue";
20723          updateHookTypesDev();
20724        },
20725        useDeferredValue: function(value, initialValue) {
20726          currentHookNameInDev = "useDeferredValue";
20727          updateHookTypesDev();
20728          return mountDeferredValue(value, initialValue);
20729        },
20730        useTransition: function() {
20731          currentHookNameInDev = "useTransition";
20732          updateHookTypesDev();
20733          return mountTransition();
20734        },
20735        useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {
20736          currentHookNameInDev = "useSyncExternalStore";
20737          updateHookTypesDev();
20738          return mountSyncExternalStore(
20739            subscribe,
20740            getSnapshot,
20741            getServerSnapshot
20742          );
20743        },
20744        useId: function() {
20745          currentHookNameInDev = "useId";
20746          updateHookTypesDev();
20747          return mountId();
20748        },
20749        useActionState: function(action, initialState) {
20750          currentHookNameInDev = "useActionState";
20751          updateHookTypesDev();
20752          return mountActionState(action, initialState);
20753        },
20754        useFormState: function(action, initialState) {
20755          currentHookNameInDev = "useFormState";
20756          updateHookTypesDev();
20757          warnOnUseFormStateInDev();
20758          return mountActionState(action, initialState);
20759        },
20760        useOptimistic: function(passthrough) {
20761          currentHookNameInDev = "useOptimistic";
20762          updateHookTypesDev();
20763          return mountOptimistic(passthrough);
20764        },
20765        useHostTransitionStatus,
20766        useMemoCache,
20767        useCacheRefresh: function() {
20768          currentHookNameInDev = "useCacheRefresh";
20769          updateHookTypesDev();
20770          return mountRefresh();
20771        },
20772        useEffectEvent: function(callback) {
20773          currentHookNameInDev = "useEffectEvent";
20774          updateHookTypesDev();
20775          return mountEvent(callback);
20776        }
20777      };
20778      HooksDispatcherOnUpdateInDEV = {
20779        readContext: function(context) {
20780          return readContext(context);
20781        },
20782        use,
20783        useCallback: function(callback, deps) {
20784          currentHookNameInDev = "useCallback";
20785          updateHookTypesDev();
20786          return updateCallback(callback, deps);
20787        },
20788        useContext: function(context) {
20789          currentHookNameInDev = "useContext";
20790          updateHookTypesDev();
20791          return readContext(context);
20792        },
20793        useEffect: function(create, deps) {
20794          currentHookNameInDev = "useEffect";
20795          updateHookTypesDev();
20796          updateEffectImpl(2048, Passive, create, deps);
20797        },
20798        useImperativeHandle: function(ref, create, deps) {
20799          currentHookNameInDev = "useImperativeHandle";
20800          updateHookTypesDev();
20801          return updateImperativeHandle(ref, create, deps);
20802        },
20803        useInsertionEffect: function(create, deps) {
20804          currentHookNameInDev = "useInsertionEffect";
20805          updateHookTypesDev();
20806          return updateEffectImpl(4, Insertion, create, deps);
20807        },
20808        useLayoutEffect: function(create, deps) {
20809          currentHookNameInDev = "useLayoutEffect";
20810          updateHookTypesDev();
20811          return updateEffectImpl(4, Layout, create, deps);
20812        },
20813        useMemo: function(create, deps) {
20814          currentHookNameInDev = "useMemo";
20815          updateHookTypesDev();
20816          var prevDispatcher = ReactSharedInternals.H;
20817          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnUpdateInDEV;
20818          try {
20819            return updateMemo(create, deps);
20820          } finally {
20821            ReactSharedInternals.H = prevDispatcher;
20822          }
20823        },
20824        useReducer: function(reducer, initialArg, init) {
20825          currentHookNameInDev = "useReducer";
20826          updateHookTypesDev();
20827          var prevDispatcher = ReactSharedInternals.H;
20828          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnUpdateInDEV;
20829          try {
20830            return updateReducer(reducer, initialArg, init);
20831          } finally {
20832            ReactSharedInternals.H = prevDispatcher;
20833          }
20834        },
20835        useRef: function() {
20836          currentHookNameInDev = "useRef";
20837          updateHookTypesDev();
20838          return updateWorkInProgressHook().memoizedState;
20839        },
20840        useState: function() {
20841          currentHookNameInDev = "useState";
20842          updateHookTypesDev();
20843          var prevDispatcher = ReactSharedInternals.H;
20844          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnUpdateInDEV;
20845          try {
20846            return updateReducer(basicStateReducer);
20847          } finally {
20848            ReactSharedInternals.H = prevDispatcher;
20849          }
20850        },
20851        useDebugValue: function() {
20852          currentHookNameInDev = "useDebugValue";
20853          updateHookTypesDev();
20854        },
20855        useDeferredValue: function(value, initialValue) {
20856          currentHookNameInDev = "useDeferredValue";
20857          updateHookTypesDev();
20858          return updateDeferredValue(value, initialValue);
20859        },
20860        useTransition: function() {
20861          currentHookNameInDev = "useTransition";
20862          updateHookTypesDev();
20863          return updateTransition();
20864        },
20865        useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {
20866          currentHookNameInDev = "useSyncExternalStore";
20867          updateHookTypesDev();
20868          return updateSyncExternalStore(
20869            subscribe,
20870            getSnapshot,
20871            getServerSnapshot
20872          );
20873        },
20874        useId: function() {
20875          currentHookNameInDev = "useId";
20876          updateHookTypesDev();
20877          return updateWorkInProgressHook().memoizedState;
20878        },
20879        useFormState: function(action) {
20880          currentHookNameInDev = "useFormState";
20881          updateHookTypesDev();
20882          warnOnUseFormStateInDev();
20883          return updateActionState(action);
20884        },
20885        useActionState: function(action) {
20886          currentHookNameInDev = "useActionState";
20887          updateHookTypesDev();
20888          return updateActionState(action);
20889        },
20890        useOptimistic: function(passthrough, reducer) {
20891          currentHookNameInDev = "useOptimistic";
20892          updateHookTypesDev();
20893          return updateOptimistic(passthrough, reducer);
20894        },
20895        useHostTransitionStatus,
20896        useMemoCache,
20897        useCacheRefresh: function() {
20898          currentHookNameInDev = "useCacheRefresh";
20899          updateHookTypesDev();
20900          return updateWorkInProgressHook().memoizedState;
20901        },
20902        useEffectEvent: function(callback) {
20903          currentHookNameInDev = "useEffectEvent";
20904          updateHookTypesDev();
20905          return updateEvent(callback);
20906        }
20907      };
20908      HooksDispatcherOnRerenderInDEV = {
20909        readContext: function(context) {
20910          return readContext(context);
20911        },
20912        use,
20913        useCallback: function(callback, deps) {
20914          currentHookNameInDev = "useCallback";
20915          updateHookTypesDev();
20916          return updateCallback(callback, deps);
20917        },
20918        useContext: function(context) {
20919          currentHookNameInDev = "useContext";
20920          updateHookTypesDev();
20921          return readContext(context);
20922        },
20923        useEffect: function(create, deps) {
20924          currentHookNameInDev = "useEffect";
20925          updateHookTypesDev();
20926          updateEffectImpl(2048, Passive, create, deps);
20927        },
20928        useImperativeHandle: function(ref, create, deps) {
20929          currentHookNameInDev = "useImperativeHandle";
20930          updateHookTypesDev();
20931          return updateImperativeHandle(ref, create, deps);
20932        },
20933        useInsertionEffect: function(create, deps) {
20934          currentHookNameInDev = "useInsertionEffect";
20935          updateHookTypesDev();
20936          return updateEffectImpl(4, Insertion, create, deps);
20937        },
20938        useLayoutEffect: function(create, deps) {
20939          currentHookNameInDev = "useLayoutEffect";
20940          updateHookTypesDev();
20941          return updateEffectImpl(4, Layout, create, deps);
20942        },
20943        useMemo: function(create, deps) {
20944          currentHookNameInDev = "useMemo";
20945          updateHookTypesDev();
20946          var prevDispatcher = ReactSharedInternals.H;
20947          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnRerenderInDEV;
20948          try {
20949            return updateMemo(create, deps);
20950          } finally {
20951            ReactSharedInternals.H = prevDispatcher;
20952          }
20953        },
20954        useReducer: function(reducer, initialArg, init) {
20955          currentHookNameInDev = "useReducer";
20956          updateHookTypesDev();
20957          var prevDispatcher = ReactSharedInternals.H;
20958          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnRerenderInDEV;
20959          try {
20960            return rerenderReducer(reducer, initialArg, init);
20961          } finally {
20962            ReactSharedInternals.H = prevDispatcher;
20963          }
20964        },
20965        useRef: function() {
20966          currentHookNameInDev = "useRef";
20967          updateHookTypesDev();
20968          return updateWorkInProgressHook().memoizedState;
20969        },
20970        useState: function() {
20971          currentHookNameInDev = "useState";
20972          updateHookTypesDev();
20973          var prevDispatcher = ReactSharedInternals.H;
20974          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnRerenderInDEV;
20975          try {
20976            return rerenderReducer(basicStateReducer);
20977          } finally {
20978            ReactSharedInternals.H = prevDispatcher;
20979          }
20980        },
20981        useDebugValue: function() {
20982          currentHookNameInDev = "useDebugValue";
20983          updateHookTypesDev();
20984        },
20985        useDeferredValue: function(value, initialValue) {
20986          currentHookNameInDev = "useDeferredValue";
20987          updateHookTypesDev();
20988          return rerenderDeferredValue(value, initialValue);
20989        },
20990        useTransition: function() {
20991          currentHookNameInDev = "useTransition";
20992          updateHookTypesDev();
20993          return rerenderTransition();
20994        },
20995        useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {
20996          currentHookNameInDev = "useSyncExternalStore";
20997          updateHookTypesDev();
20998          return updateSyncExternalStore(
20999            subscribe,
21000            getSnapshot,
21001            getServerSnapshot
21002          );
21003        },
21004        useId: function() {
21005          currentHookNameInDev = "useId";
21006          updateHookTypesDev();
21007          return updateWorkInProgressHook().memoizedState;
21008        },
21009        useFormState: function(action) {
21010          currentHookNameInDev = "useFormState";
21011          updateHookTypesDev();
21012          warnOnUseFormStateInDev();
21013          return rerenderActionState(action);
21014        },
21015        useActionState: function(action) {
21016          currentHookNameInDev = "useActionState";
21017          updateHookTypesDev();
21018          return rerenderActionState(action);
21019        },
21020        useOptimistic: function(passthrough, reducer) {
21021          currentHookNameInDev = "useOptimistic";
21022          updateHookTypesDev();
21023          return rerenderOptimistic(passthrough, reducer);
21024        },
21025        useHostTransitionStatus,
21026        useMemoCache,
21027        useCacheRefresh: function() {
21028          currentHookNameInDev = "useCacheRefresh";
21029          updateHookTypesDev();
21030          return updateWorkInProgressHook().memoizedState;
21031        },
21032        useEffectEvent: function(callback) {
21033          currentHookNameInDev = "useEffectEvent";
21034          updateHookTypesDev();
21035          return updateEvent(callback);
21036        }
21037      };
21038      InvalidNestedHooksDispatcherOnMountInDEV = {
21039        readContext: function(context) {
21040          warnInvalidContextAccess();
21041          return readContext(context);
21042        },
21043        use: function(usable) {
21044          warnInvalidHookAccess();
21045          return use(usable);
21046        },
21047        useCallback: function(callback, deps) {
21048          currentHookNameInDev = "useCallback";
21049          warnInvalidHookAccess();
21050          mountHookTypesDev();
21051          return mountCallback(callback, deps);
21052        },
21053        useContext: function(context) {
21054          currentHookNameInDev = "useContext";
21055          warnInvalidHookAccess();
21056          mountHookTypesDev();
21057          return readContext(context);
21058        },
21059        useEffect: function(create, deps) {
21060          currentHookNameInDev = "useEffect";
21061          warnInvalidHookAccess();
21062          mountHookTypesDev();
21063          return mountEffect(create, deps);
21064        },
21065        useImperativeHandle: function(ref, create, deps) {
21066          currentHookNameInDev = "useImperativeHandle";
21067          warnInvalidHookAccess();
21068          mountHookTypesDev();
21069          return mountImperativeHandle(ref, create, deps);
21070        },
21071        useInsertionEffect: function(create, deps) {
21072          currentHookNameInDev = "useInsertionEffect";
21073          warnInvalidHookAccess();
21074          mountHookTypesDev();
21075          mountEffectImpl(4, Insertion, create, deps);
21076        },
21077        useLayoutEffect: function(create, deps) {
21078          currentHookNameInDev = "useLayoutEffect";
21079          warnInvalidHookAccess();
21080          mountHookTypesDev();
21081          return mountLayoutEffect(create, deps);
21082        },
21083        useMemo: function(create, deps) {
21084          currentHookNameInDev = "useMemo";
21085          warnInvalidHookAccess();
21086          mountHookTypesDev();
21087          var prevDispatcher = ReactSharedInternals.H;
21088          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnMountInDEV;
21089          try {
21090            return mountMemo(create, deps);
21091          } finally {
21092            ReactSharedInternals.H = prevDispatcher;
21093          }
21094        },
21095        useReducer: function(reducer, initialArg, init) {
21096          currentHookNameInDev = "useReducer";
21097          warnInvalidHookAccess();
21098          mountHookTypesDev();
21099          var prevDispatcher = ReactSharedInternals.H;
21100          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnMountInDEV;
21101          try {
21102            return mountReducer(reducer, initialArg, init);
21103          } finally {
21104            ReactSharedInternals.H = prevDispatcher;
21105          }
21106        },
21107        useRef: function(initialValue) {
21108          currentHookNameInDev = "useRef";
21109          warnInvalidHookAccess();
21110          mountHookTypesDev();
21111          return mountRef(initialValue);
21112        },
21113        useState: function(initialState) {
21114          currentHookNameInDev = "useState";
21115          warnInvalidHookAccess();
21116          mountHookTypesDev();
21117          var prevDispatcher = ReactSharedInternals.H;
21118          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnMountInDEV;
21119          try {
21120            return mountState(initialState);
21121          } finally {
21122            ReactSharedInternals.H = prevDispatcher;
21123          }
21124        },
21125        useDebugValue: function() {
21126          currentHookNameInDev = "useDebugValue";
21127          warnInvalidHookAccess();
21128          mountHookTypesDev();
21129        },
21130        useDeferredValue: function(value, initialValue) {
21131          currentHookNameInDev = "useDeferredValue";
21132          warnInvalidHookAccess();
21133          mountHookTypesDev();
21134          return mountDeferredValue(value, initialValue);
21135        },
21136        useTransition: function() {
21137          currentHookNameInDev = "useTransition";
21138          warnInvalidHookAccess();
21139          mountHookTypesDev();
21140          return mountTransition();
21141        },
21142        useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {
21143          currentHookNameInDev = "useSyncExternalStore";
21144          warnInvalidHookAccess();
21145          mountHookTypesDev();
21146          return mountSyncExternalStore(
21147            subscribe,
21148            getSnapshot,
21149            getServerSnapshot
21150          );
21151        },
21152        useId: function() {
21153          currentHookNameInDev = "useId";
21154          warnInvalidHookAccess();
21155          mountHookTypesDev();
21156          return mountId();
21157        },
21158        useFormState: function(action, initialState) {
21159          currentHookNameInDev = "useFormState";
21160          warnInvalidHookAccess();
21161          mountHookTypesDev();
21162          return mountActionState(action, initialState);
21163        },
21164        useActionState: function(action, initialState) {
21165          currentHookNameInDev = "useActionState";
21166          warnInvalidHookAccess();
21167          mountHookTypesDev();
21168          return mountActionState(action, initialState);
21169        },
21170        useOptimistic: function(passthrough) {
21171          currentHookNameInDev = "useOptimistic";
21172          warnInvalidHookAccess();
21173          mountHookTypesDev();
21174          return mountOptimistic(passthrough);
21175        },
21176        useMemoCache: function(size) {
21177          warnInvalidHookAccess();
21178          return useMemoCache(size);
21179        },
21180        useHostTransitionStatus,
21181        useCacheRefresh: function() {
21182          currentHookNameInDev = "useCacheRefresh";
21183          mountHookTypesDev();
21184          return mountRefresh();
21185        },
21186        useEffectEvent: function(callback) {
21187          currentHookNameInDev = "useEffectEvent";
21188          warnInvalidHookAccess();
21189          mountHookTypesDev();
21190          return mountEvent(callback);
21191        }
21192      };
21193      InvalidNestedHooksDispatcherOnUpdateInDEV = {
21194        readContext: function(context) {
21195          warnInvalidContextAccess();
21196          return readContext(context);
21197        },
21198        use: function(usable) {
21199          warnInvalidHookAccess();
21200          return use(usable);
21201        },
21202        useCallback: function(callback, deps) {
21203          currentHookNameInDev = "useCallback";
21204          warnInvalidHookAccess();
21205          updateHookTypesDev();
21206          return updateCallback(callback, deps);
21207        },
21208        useContext: function(context) {
21209          currentHookNameInDev = "useContext";
21210          warnInvalidHookAccess();
21211          updateHookTypesDev();
21212          return readContext(context);
21213        },
21214        useEffect: function(create, deps) {
21215          currentHookNameInDev = "useEffect";
21216          warnInvalidHookAccess();
21217          updateHookTypesDev();
21218          updateEffectImpl(2048, Passive, create, deps);
21219        },
21220        useImperativeHandle: function(ref, create, deps) {
21221          currentHookNameInDev = "useImperativeHandle";
21222          warnInvalidHookAccess();
21223          updateHookTypesDev();
21224          return updateImperativeHandle(ref, create, deps);
21225        },
21226        useInsertionEffect: function(create, deps) {
21227          currentHookNameInDev = "useInsertionEffect";
21228          warnInvalidHookAccess();
21229          updateHookTypesDev();
21230          return updateEffectImpl(4, Insertion, create, deps);
21231        },
21232        useLayoutEffect: function(create, deps) {
21233          currentHookNameInDev = "useLayoutEffect";
21234          warnInvalidHookAccess();
21235          updateHookTypesDev();
21236          return updateEffectImpl(4, Layout, create, deps);
21237        },
21238        useMemo: function(create, deps) {
21239          currentHookNameInDev = "useMemo";
21240          warnInvalidHookAccess();
21241          updateHookTypesDev();
21242          var prevDispatcher = ReactSharedInternals.H;
21243          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnUpdateInDEV;
21244          try {
21245            return updateMemo(create, deps);
21246          } finally {
21247            ReactSharedInternals.H = prevDispatcher;
21248          }
21249        },
21250        useReducer: function(reducer, initialArg, init) {
21251          currentHookNameInDev = "useReducer";
21252          warnInvalidHookAccess();
21253          updateHookTypesDev();
21254          var prevDispatcher = ReactSharedInternals.H;
21255          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnUpdateInDEV;
21256          try {
21257            return updateReducer(reducer, initialArg, init);
21258          } finally {
21259            ReactSharedInternals.H = prevDispatcher;
21260          }
21261        },
21262        useRef: function() {
21263          currentHookNameInDev = "useRef";
21264          warnInvalidHookAccess();
21265          updateHookTypesDev();
21266          return updateWorkInProgressHook().memoizedState;
21267        },
21268        useState: function() {
21269          currentHookNameInDev = "useState";
21270          warnInvalidHookAccess();
21271          updateHookTypesDev();
21272          var prevDispatcher = ReactSharedInternals.H;
21273          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnUpdateInDEV;
21274          try {
21275            return updateReducer(basicStateReducer);
21276          } finally {
21277            ReactSharedInternals.H = prevDispatcher;
21278          }
21279        },
21280        useDebugValue: function() {
21281          currentHookNameInDev = "useDebugValue";
21282          warnInvalidHookAccess();
21283          updateHookTypesDev();
21284        },
21285        useDeferredValue: function(value, initialValue) {
21286          currentHookNameInDev = "useDeferredValue";
21287          warnInvalidHookAccess();
21288          updateHookTypesDev();
21289          return updateDeferredValue(value, initialValue);
21290        },
21291        useTransition: function() {
21292          currentHookNameInDev = "useTransition";
21293          warnInvalidHookAccess();
21294          updateHookTypesDev();
21295          return updateTransition();
21296        },
21297        useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {
21298          currentHookNameInDev = "useSyncExternalStore";
21299          warnInvalidHookAccess();
21300          updateHookTypesDev();
21301          return updateSyncExternalStore(
21302            subscribe,
21303            getSnapshot,
21304            getServerSnapshot
21305          );
21306        },
21307        useId: function() {
21308          currentHookNameInDev = "useId";
21309          warnInvalidHookAccess();
21310          updateHookTypesDev();
21311          return updateWorkInProgressHook().memoizedState;
21312        },
21313        useFormState: function(action) {
21314          currentHookNameInDev = "useFormState";
21315          warnInvalidHookAccess();
21316          updateHookTypesDev();
21317          return updateActionState(action);
21318        },
21319        useActionState: function(action) {
21320          currentHookNameInDev = "useActionState";
21321          warnInvalidHookAccess();
21322          updateHookTypesDev();
21323          return updateActionState(action);
21324        },
21325        useOptimistic: function(passthrough, reducer) {
21326          currentHookNameInDev = "useOptimistic";
21327          warnInvalidHookAccess();
21328          updateHookTypesDev();
21329          return updateOptimistic(passthrough, reducer);
21330        },
21331        useMemoCache: function(size) {
21332          warnInvalidHookAccess();
21333          return useMemoCache(size);
21334        },
21335        useHostTransitionStatus,
21336        useCacheRefresh: function() {
21337          currentHookNameInDev = "useCacheRefresh";
21338          updateHookTypesDev();
21339          return updateWorkInProgressHook().memoizedState;
21340        },
21341        useEffectEvent: function(callback) {
21342          currentHookNameInDev = "useEffectEvent";
21343          warnInvalidHookAccess();
21344          updateHookTypesDev();
21345          return updateEvent(callback);
21346        }
21347      };
21348      InvalidNestedHooksDispatcherOnRerenderInDEV = {
21349        readContext: function(context) {
21350          warnInvalidContextAccess();
21351          return readContext(context);
21352        },
21353        use: function(usable) {
21354          warnInvalidHookAccess();
21355          return use(usable);
21356        },
21357        useCallback: function(callback, deps) {
21358          currentHookNameInDev = "useCallback";
21359          warnInvalidHookAccess();
21360          updateHookTypesDev();
21361          return updateCallback(callback, deps);
21362        },
21363        useContext: function(context) {
21364          currentHookNameInDev = "useContext";
21365          warnInvalidHookAccess();
21366          updateHookTypesDev();
21367          return readContext(context);
21368        },
21369        useEffect: function(create, deps) {
21370          currentHookNameInDev = "useEffect";
21371          warnInvalidHookAccess();
21372          updateHookTypesDev();
21373          updateEffectImpl(2048, Passive, create, deps);
21374        },
21375        useImperativeHandle: function(ref, create, deps) {
21376          currentHookNameInDev = "useImperativeHandle";
21377          warnInvalidHookAccess();
21378          updateHookTypesDev();
21379          return updateImperativeHandle(ref, create, deps);
21380        },
21381        useInsertionEffect: function(create, deps) {
21382          currentHookNameInDev = "useInsertionEffect";
21383          warnInvalidHookAccess();
21384          updateHookTypesDev();
21385          return updateEffectImpl(4, Insertion, create, deps);
21386        },
21387        useLayoutEffect: function(create, deps) {
21388          currentHookNameInDev = "useLayoutEffect";
21389          warnInvalidHookAccess();
21390          updateHookTypesDev();
21391          return updateEffectImpl(4, Layout, create, deps);
21392        },
21393        useMemo: function(create, deps) {
21394          currentHookNameInDev = "useMemo";
21395          warnInvalidHookAccess();
21396          updateHookTypesDev();
21397          var prevDispatcher = ReactSharedInternals.H;
21398          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnUpdateInDEV;
21399          try {
21400            return updateMemo(create, deps);
21401          } finally {
21402            ReactSharedInternals.H = prevDispatcher;
21403          }
21404        },
21405        useReducer: function(reducer, initialArg, init) {
21406          currentHookNameInDev = "useReducer";
21407          warnInvalidHookAccess();
21408          updateHookTypesDev();
21409          var prevDispatcher = ReactSharedInternals.H;
21410          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnUpdateInDEV;
21411          try {
21412            return rerenderReducer(reducer, initialArg, init);
21413          } finally {
21414            ReactSharedInternals.H = prevDispatcher;
21415          }
21416        },
21417        useRef: function() {
21418          currentHookNameInDev = "useRef";
21419          warnInvalidHookAccess();
21420          updateHookTypesDev();
21421          return updateWorkInProgressHook().memoizedState;
21422        },
21423        useState: function() {
21424          currentHookNameInDev = "useState";
21425          warnInvalidHookAccess();
21426          updateHookTypesDev();
21427          var prevDispatcher = ReactSharedInternals.H;
21428          ReactSharedInternals.H = InvalidNestedHooksDispatcherOnUpdateInDEV;
21429          try {
21430            return rerenderReducer(basicStateReducer);
21431          } finally {
21432            ReactSharedInternals.H = prevDispatcher;
21433          }
21434        },
21435        useDebugValue: function() {
21436          currentHookNameInDev = "useDebugValue";
21437          warnInvalidHookAccess();
21438          updateHookTypesDev();
21439        },
21440        useDeferredValue: function(value, initialValue) {
21441          currentHookNameInDev = "useDeferredValue";
21442          warnInvalidHookAccess();
21443          updateHookTypesDev();
21444          return rerenderDeferredValue(value, initialValue);
21445        },
21446        useTransition: function() {
21447          currentHookNameInDev = "useTransition";
21448          warnInvalidHookAccess();
21449          updateHookTypesDev();
21450          return rerenderTransition();
21451        },
21452        useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {
21453          currentHookNameInDev = "useSyncExternalStore";
21454          warnInvalidHookAccess();
21455          updateHookTypesDev();
21456          return updateSyncExternalStore(
21457            subscribe,
21458            getSnapshot,
21459            getServerSnapshot
21460          );
21461        },
21462        useId: function() {
21463          currentHookNameInDev = "useId";
21464          warnInvalidHookAccess();
21465          updateHookTypesDev();
21466          return updateWorkInProgressHook().memoizedState;
21467        },
21468        useFormState: function(action) {
21469          currentHookNameInDev = "useFormState";
21470          warnInvalidHookAccess();
21471          updateHookTypesDev();
21472          return rerenderActionState(action);
21473        },
21474        useActionState: function(action) {
21475          currentHookNameInDev = "useActionState";
21476          warnInvalidHookAccess();
21477          updateHookTypesDev();
21478          return rerenderActionState(action);
21479        },
21480        useOptimistic: function(passthrough, reducer) {
21481          currentHookNameInDev = "useOptimistic";
21482          warnInvalidHookAccess();
21483          updateHookTypesDev();
21484          return rerenderOptimistic(passthrough, reducer);
21485        },
21486        useMemoCache: function(size) {
21487          warnInvalidHookAccess();
21488          return useMemoCache(size);
21489        },
21490        useHostTransitionStatus,
21491        useCacheRefresh: function() {
21492          currentHookNameInDev = "useCacheRefresh";
21493          updateHookTypesDev();
21494          return updateWorkInProgressHook().memoizedState;
21495        },
21496        useEffectEvent: function(callback) {
21497          currentHookNameInDev = "useEffectEvent";
21498          warnInvalidHookAccess();
21499          updateHookTypesDev();
21500          return updateEvent(callback);
21501        }
21502      };
21503      var fakeInternalInstance = {};
21504      var didWarnAboutStateAssignmentForComponent = /* @__PURE__ */ new Set();
21505      var didWarnAboutUninitializedState = /* @__PURE__ */ new Set();
21506      var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = /* @__PURE__ */ new Set();
21507      var didWarnAboutLegacyLifecyclesAndDerivedState = /* @__PURE__ */ new Set();
21508      var didWarnAboutDirectlyAssigningPropsToState = /* @__PURE__ */ new Set();
21509      var didWarnAboutUndefinedDerivedState = /* @__PURE__ */ new Set();
21510      var didWarnAboutContextTypes$1 = /* @__PURE__ */ new Set();
21511      var didWarnAboutChildContextTypes = /* @__PURE__ */ new Set();
21512      var didWarnAboutInvalidateContextType = /* @__PURE__ */ new Set();
21513      var didWarnOnInvalidCallback = /* @__PURE__ */ new Set();
21514      Object.freeze(fakeInternalInstance);
21515      var classComponentUpdater = {
21516        enqueueSetState: function(inst, payload, callback) {
21517          inst = inst._reactInternals;
21518          var lane = requestUpdateLane(inst), update = createUpdate(lane);
21519          update.payload = payload;
21520          void 0 !== callback && null !== callback && (warnOnInvalidCallback(callback), update.callback = callback);
21521          payload = enqueueUpdate(inst, update, lane);
21522          null !== payload && (startUpdateTimerByLane(lane, "this.setState()", inst), scheduleUpdateOnFiber(payload, inst, lane), entangleTransitions(payload, inst, lane));
21523        },
21524        enqueueReplaceState: function(inst, payload, callback) {
21525          inst = inst._reactInternals;
21526          var lane = requestUpdateLane(inst), update = createUpdate(lane);
21527          update.tag = ReplaceState;
21528          update.payload = payload;
21529          void 0 !== callback && null !== callback && (warnOnInvalidCallback(callback), update.callback = callback);
21530          payload = enqueueUpdate(inst, update, lane);
21531          null !== payload && (startUpdateTimerByLane(lane, "this.replaceState()", inst), scheduleUpdateOnFiber(payload, inst, lane), entangleTransitions(payload, inst, lane));
21532        },
21533        enqueueForceUpdate: function(inst, callback) {
21534          inst = inst._reactInternals;
21535          var lane = requestUpdateLane(inst), update = createUpdate(lane);
21536          update.tag = ForceUpdate;
21537          void 0 !== callback && null !== callback && (warnOnInvalidCallback(callback), update.callback = callback);
21538          callback = enqueueUpdate(inst, update, lane);
21539          null !== callback && (startUpdateTimerByLane(lane, "this.forceUpdate()", inst), scheduleUpdateOnFiber(callback, inst, lane), entangleTransitions(callback, inst, lane));
21540        }
21541      }, componentName = null, errorBoundaryName = null, SelectiveHydrationException = Error(
21542        "This is not a real error. It's an implementation detail of React's selective hydration feature. If this leaks into userspace, it's a bug in React. Please file an issue."
21543      ), didReceiveUpdate = false;
21544      var didWarnAboutBadClass = {};
21545      var didWarnAboutContextTypeOnFunctionComponent = {};
21546      var didWarnAboutContextTypes = {};
21547      var didWarnAboutGetDerivedStateOnFunctionComponent = {};
21548      var didWarnAboutReassigningProps = false;
21549      var didWarnAboutRevealOrder = {};
21550      var didWarnAboutTailOptions = {};
21551      var SUSPENDED_MARKER = {
21552        dehydrated: null,
21553        treeContext: null,
21554        retryLane: 0,
21555        hydrationErrors: null
21556      }, hasWarnedAboutUsingNoValuePropOnContextProvider = false, didWarnAboutUndefinedSnapshotBeforeUpdate = null;
21557      didWarnAboutUndefinedSnapshotBeforeUpdate = /* @__PURE__ */ new Set();
21558      var offscreenSubtreeIsHidden = false, offscreenSubtreeWasHidden = false, needsFormReset = false, PossiblyWeakSet = "function" === typeof WeakSet ? WeakSet : Set, nextEffect = null, inProgressLanes = null, inProgressRoot = null, hostParent = null, hostParentIsContainer = false, currentHoistableRoot = null, inHydratedSubtree = false, suspenseyCommitFlag = 8192, DefaultAsyncDispatcher = {
21559        getCacheForType: function(resourceType) {
21560          var cache2 = readContext(CacheContext), cacheForType = cache2.data.get(resourceType);
21561          void 0 === cacheForType && (cacheForType = resourceType(), cache2.data.set(resourceType, cacheForType));
21562          return cacheForType;
21563        },
21564        cacheSignal: function() {
21565          return readContext(CacheContext).controller.signal;
21566        },
21567        getOwner: function() {
21568          return current;
21569        }
21570      };
21571      if ("function" === typeof Symbol && Symbol.for) {
21572        var symbolFor = Symbol.for;
21573        symbolFor("selector.component");
21574        symbolFor("selector.has_pseudo_class");
21575        symbolFor("selector.role");
21576        symbolFor("selector.test_id");
21577        symbolFor("selector.text");
21578      }
21579      var commitHooks = [], PossiblyWeakMap = "function" === typeof WeakMap ? WeakMap : Map, NoContext = 0, RenderContext = 2, CommitContext = 4, RootInProgress = 0, RootFatalErrored = 1, RootErrored = 2, RootSuspended = 3, RootSuspendedWithDelay = 4, RootSuspendedAtTheShell = 6, RootCompleted = 5, executionContext = NoContext, workInProgressRoot = null, workInProgress = null, workInProgressRootRenderLanes = 0, NotSuspended = 0, SuspendedOnError = 1, SuspendedOnData = 2, SuspendedOnImmediate = 3, SuspendedOnInstance = 4, SuspendedOnInstanceAndReadyToContinue = 5, SuspendedOnDeprecatedThrowPromise = 6, SuspendedAndReadyToContinue = 7, SuspendedOnHydration = 8, SuspendedOnAction = 9, workInProgressSuspendedReason = NotSuspended, workInProgressThrownValue = null, workInProgressRootDidSkipSuspendedSiblings = false, workInProgressRootIsPrerendering = false, workInProgressRootDidAttachPingListener = false, entangledRenderLanes = 0, workInProgressRootExitStatus = RootInProgress, workInProgressRootSkippedLanes = 0, workInProgressRootInterleavedUpdatedLanes = 0, workInProgressRootPingedLanes = 0, workInProgressDeferredLane = 0, workInProgressSuspendedRetryLanes = 0, workInProgressRootConcurrentErrors = null, workInProgressRootRecoverableErrors = null, workInProgressRootDidIncludeRecursiveRenderUpdate = false, globalMostRecentFallbackTime = 0, globalMostRecentTransitionTime = 0, FALLBACK_THROTTLE_MS = 300, workInProgressRootRenderTargetTime = Infinity, RENDER_TIMEOUT_MS = 500, workInProgressTransitions = null, workInProgressUpdateTask = null, legacyErrorBoundariesThatAlreadyFailed = null, IMMEDIATE_COMMIT = 0, ABORTED_VIEW_TRANSITION_COMMIT = 1, DELAYED_PASSIVE_COMMIT = 2, ANIMATION_STARTED_COMMIT = 3, NO_PENDING_EFFECTS = 0, PENDING_MUTATION_PHASE = 1, PENDING_LAYOUT_PHASE = 2, PENDING_AFTER_MUTATION_PHASE = 3, PENDING_SPAWNED_WORK = 4, PENDING_PASSIVE_PHASE = 5, pendingEffectsStatus = 0, pendingEffectsRoot = null, pendingFinishedWork = null, pendingEffectsLanes = 0, pendingEffectsRemainingLanes = 0, pendingEffectsRenderEndTime = -0, pendingPassiveTransitions = null, pendingRecoverableErrors = null, pendingSuspendedCommitReason = null, pendingDelayedCommitReason = IMMEDIATE_COMMIT, pendingSuspendedViewTransitionReason = null, NESTED_UPDATE_LIMIT = 50, nestedUpdateCount = 0, rootWithNestedUpdates = null, isFlushingPassiveEffects = false, didScheduleUpdateDuringPassiveEffects = false, NESTED_PASSIVE_UPDATE_LIMIT = 50, nestedPassiveUpdateCount = 0, rootWithPassiveNestedUpdates = null, isRunningInsertionEffect = false, didWarnStateUpdateForNotYetMountedComponent = null, didWarnAboutUpdateInRender = false;
21580      var didWarnAboutUpdateInRenderForAnotherComponent = /* @__PURE__ */ new Set();
21581      var fakeActCallbackNode$1 = {}, firstScheduledRoot = null, lastScheduledRoot = null, didScheduleMicrotask = false, didScheduleMicrotask_act = false, mightHavePendingSyncWork = false, isFlushingWork = false, currentEventTransitionLane = 0, fakeActCallbackNode = {};
21582      (function() {
21583        for (var i3 = 0; i3 < simpleEventPluginEvents.length; i3++) {
21584          var eventName = simpleEventPluginEvents[i3], domEventName = eventName.toLowerCase();
21585          eventName = eventName[0].toUpperCase() + eventName.slice(1);
21586          registerSimpleEvent(domEventName, "on" + eventName);
21587        }
21588        registerSimpleEvent(ANIMATION_END, "onAnimationEnd");
21589        registerSimpleEvent(ANIMATION_ITERATION, "onAnimationIteration");
21590        registerSimpleEvent(ANIMATION_START, "onAnimationStart");
21591        registerSimpleEvent("dblclick", "onDoubleClick");
21592        registerSimpleEvent("focusin", "onFocus");
21593        registerSimpleEvent("focusout", "onBlur");
21594        registerSimpleEvent(TRANSITION_RUN, "onTransitionRun");
21595        registerSimpleEvent(TRANSITION_START, "onTransitionStart");
21596        registerSimpleEvent(TRANSITION_CANCEL, "onTransitionCancel");
21597        registerSimpleEvent(TRANSITION_END, "onTransitionEnd");
21598      })();
21599      registerDirectEvent("onMouseEnter", ["mouseout", "mouseover"]);
21600      registerDirectEvent("onMouseLeave", ["mouseout", "mouseover"]);
21601      registerDirectEvent("onPointerEnter", ["pointerout", "pointerover"]);
21602      registerDirectEvent("onPointerLeave", ["pointerout", "pointerover"]);
21603      registerTwoPhaseEvent(
21604        "onChange",
21605        "change click focusin focusout input keydown keyup selectionchange".split(
21606          " "
21607        )
21608      );
21609      registerTwoPhaseEvent(
21610        "onSelect",
21611        "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(
21612          " "
21613        )
21614      );
21615      registerTwoPhaseEvent("onBeforeInput", [
21616        "compositionend",
21617        "keypress",
21618        "textInput",
21619        "paste"
21620      ]);
21621      registerTwoPhaseEvent(
21622        "onCompositionEnd",
21623        "compositionend focusout keydown keypress keyup mousedown".split(" ")
21624      );
21625      registerTwoPhaseEvent(
21626        "onCompositionStart",
21627        "compositionstart focusout keydown keypress keyup mousedown".split(" ")
21628      );
21629      registerTwoPhaseEvent(
21630        "onCompositionUpdate",
21631        "compositionupdate focusout keydown keypress keyup mousedown".split(" ")
21632      );
21633      var mediaEventTypes = "abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(
21634        " "
21635      ), nonDelegatedEvents = new Set(
21636        "beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(mediaEventTypes)
21637      ), listeningMarker = "_reactListening" + Math.random().toString(36).slice(2), didWarnControlledToUncontrolled = false, didWarnUncontrolledToControlled = false, didWarnFormActionType = false, didWarnFormActionName = false, didWarnFormActionTarget = false, didWarnFormActionMethod = false, didWarnPopoverTargetObject = false;
21638      var didWarnForNewBooleanPropsWithEmptyValue = {};
21639      var NORMALIZE_NEWLINES_REGEX = /\r\n?/g, NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\u0000|\uFFFD/g, xlinkNamespace = "http://www.w3.org/1999/xlink", xmlNamespace = "http://www.w3.org/XML/1998/namespace", EXPECTED_FORM_ACTION_URL = "javascript:throw new Error('React form unexpectedly submitted.')", SUPPRESS_HYDRATION_WARNING = "suppressHydrationWarning", ACTIVITY_START_DATA = "&", ACTIVITY_END_DATA = "/&", SUSPENSE_START_DATA = "$", SUSPENSE_END_DATA = "/$", SUSPENSE_PENDING_START_DATA = "$?", SUSPENSE_QUEUED_START_DATA = "$~", SUSPENSE_FALLBACK_START_DATA = "$!", PREAMBLE_CONTRIBUTION_HTML = "html", PREAMBLE_CONTRIBUTION_BODY = "body", PREAMBLE_CONTRIBUTION_HEAD = "head", FORM_STATE_IS_MATCHING = "F!", FORM_STATE_IS_NOT_MATCHING = "F", DOCUMENT_READY_STATE_LOADING = "loading", STYLE = "style", HostContextNamespaceNone = 0, HostContextNamespaceSvg = 1, HostContextNamespaceMath = 2, eventsEnabled = null, selectionInformation = null, warnedUnknownTags = { dialog: true, webview: true }, currentPopstateTransitionEvent = null, schedulerEvent = void 0, scheduleTimeout = "function" === typeof setTimeout ? setTimeout : void 0, cancelTimeout = "function" === typeof clearTimeout ? clearTimeout : void 0, noTimeout = -1, localPromise = "function" === typeof Promise ? Promise : void 0, scheduleMicrotask = "function" === typeof queueMicrotask ? queueMicrotask : "undefined" !== typeof localPromise ? function(callback) {
21640        return localPromise.resolve(null).then(callback).catch(handleErrorInNextTick);
21641      } : scheduleTimeout, previousHydratableOnEnteringScopedSingleton = null, NotLoaded = 0, Loaded = 1, Errored = 2, Settled = 3, Inserted = 4, preloadPropsMap = /* @__PURE__ */ new Map(), preconnectsSet = /* @__PURE__ */ new Set(), previousDispatcher = ReactDOMSharedInternals.d;
21642      ReactDOMSharedInternals.d = {
21643        f: function() {
21644          var previousWasRendering = previousDispatcher.f(), wasRendering = flushSyncWork$1();
21645          return previousWasRendering || wasRendering;
21646        },
21647        r: function(form) {
21648          var formInst = getInstanceFromNode(form);
21649          null !== formInst && 5 === formInst.tag && "form" === formInst.type ? requestFormReset$1(formInst) : previousDispatcher.r(form);
21650        },
21651        D: function(href) {
21652          previousDispatcher.D(href);
21653          preconnectAs("dns-prefetch", href, null);
21654        },
21655        C: function(href, crossOrigin) {
21656          previousDispatcher.C(href, crossOrigin);
21657          preconnectAs("preconnect", href, crossOrigin);
21658        },
21659        L: function(href, as3, options) {
21660          previousDispatcher.L(href, as3, options);
21661          var ownerDocument = globalDocument;
21662          if (ownerDocument && href && as3) {
21663            var preloadSelector = 'link[rel="preload"][as="' + escapeSelectorAttributeValueInsideDoubleQuotes(as3) + '"]';
21664            "image" === as3 ? options && options.imageSrcSet ? (preloadSelector += '[imagesrcset="' + escapeSelectorAttributeValueInsideDoubleQuotes(
21665              options.imageSrcSet
21666            ) + '"]', "string" === typeof options.imageSizes && (preloadSelector += '[imagesizes="' + escapeSelectorAttributeValueInsideDoubleQuotes(
21667              options.imageSizes
21668            ) + '"]')) : preloadSelector += '[href="' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '"]' : preloadSelector += '[href="' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '"]';
21669            var key = preloadSelector;
21670            switch (as3) {
21671              case "style":
21672                key = getStyleKey(href);
21673                break;
21674              case "script":
21675                key = getScriptKey(href);
21676            }
21677            preloadPropsMap.has(key) || (href = assign(
21678              {
21679                rel: "preload",
21680                href: "image" === as3 && options && options.imageSrcSet ? void 0 : href,
21681                as: as3
21682              },
21683              options
21684            ), preloadPropsMap.set(key, href), null !== ownerDocument.querySelector(preloadSelector) || "style" === as3 && ownerDocument.querySelector(
21685              getStylesheetSelectorFromKey(key)
21686            ) || "script" === as3 && ownerDocument.querySelector(getScriptSelectorFromKey(key)) || (as3 = ownerDocument.createElement("link"), setInitialProperties(as3, "link", href), markNodeAsHoistable(as3), ownerDocument.head.appendChild(as3)));
21687          }
21688        },
21689        m: function(href, options) {
21690          previousDispatcher.m(href, options);
21691          var ownerDocument = globalDocument;
21692          if (ownerDocument && href) {
21693            var as3 = options && "string" === typeof options.as ? options.as : "script", preloadSelector = 'link[rel="modulepreload"][as="' + escapeSelectorAttributeValueInsideDoubleQuotes(as3) + '"][href="' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '"]', key = preloadSelector;
21694            switch (as3) {
21695              case "audioworklet":
21696              case "paintworklet":
21697              case "serviceworker":
21698              case "sharedworker":
21699              case "worker":
21700              case "script":
21701                key = getScriptKey(href);
21702            }
21703            if (!preloadPropsMap.has(key) && (href = assign({ rel: "modulepreload", href }, options), preloadPropsMap.set(key, href), null === ownerDocument.querySelector(preloadSelector))) {
21704              switch (as3) {
21705                case "audioworklet":
21706                case "paintworklet":
21707                case "serviceworker":
21708                case "sharedworker":
21709                case "worker":
21710                case "script":
21711                  if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))
21712                    return;
21713              }
21714              as3 = ownerDocument.createElement("link");
21715              setInitialProperties(as3, "link", href);
21716              markNodeAsHoistable(as3);
21717              ownerDocument.head.appendChild(as3);
21718            }
21719          }
21720        },
21721        X: function(src, options) {
21722          previousDispatcher.X(src, options);
21723          var ownerDocument = globalDocument;
21724          if (ownerDocument && src) {
21725            var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts, key = getScriptKey(src), resource = scripts.get(key);
21726            resource || (resource = ownerDocument.querySelector(
21727              getScriptSelectorFromKey(key)
21728            ), resource || (src = assign({ src, async: true }, options), (options = preloadPropsMap.get(key)) && adoptPreloadPropsForScript(src, options), resource = ownerDocument.createElement("script"), markNodeAsHoistable(resource), setInitialProperties(resource, "link", src), ownerDocument.head.appendChild(resource)), resource = {
21729              type: "script",
21730              instance: resource,
21731              count: 1,
21732              state: null
21733            }, scripts.set(key, resource));
21734          }
21735        },
21736        S: function(href, precedence, options) {
21737          previousDispatcher.S(href, precedence, options);
21738          var ownerDocument = globalDocument;
21739          if (ownerDocument && href) {
21740            var styles = getResourcesFromRoot(ownerDocument).hoistableStyles, key = getStyleKey(href);
21741            precedence = precedence || "default";
21742            var resource = styles.get(key);
21743            if (!resource) {
21744              var state = { loading: NotLoaded, preload: null };
21745              if (resource = ownerDocument.querySelector(
21746                getStylesheetSelectorFromKey(key)
21747              ))
21748                state.loading = Loaded | Inserted;
21749              else {
21750                href = assign(
21751                  {
21752                    rel: "stylesheet",
21753                    href,
21754                    "data-precedence": precedence
21755                  },
21756                  options
21757                );
21758                (options = preloadPropsMap.get(key)) && adoptPreloadPropsForStylesheet(href, options);
21759                var link = resource = ownerDocument.createElement("link");
21760                markNodeAsHoistable(link);
21761                setInitialProperties(link, "link", href);
21762                link._p = new Promise(function(resolve, reject) {
21763                  link.onload = resolve;
21764                  link.onerror = reject;
21765                });
21766                link.addEventListener("load", function() {
21767                  state.loading |= Loaded;
21768                });
21769                link.addEventListener("error", function() {
21770                  state.loading |= Errored;
21771                });
21772                state.loading |= Inserted;
21773                insertStylesheet(resource, precedence, ownerDocument);
21774              }
21775              resource = {
21776                type: "stylesheet",
21777                instance: resource,
21778                count: 1,
21779                state
21780              };
21781              styles.set(key, resource);
21782            }
21783          }
21784        },
21785        M: function(src, options) {
21786          previousDispatcher.M(src, options);
21787          var ownerDocument = globalDocument;
21788          if (ownerDocument && src) {
21789            var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts, key = getScriptKey(src), resource = scripts.get(key);
21790            resource || (resource = ownerDocument.querySelector(
21791              getScriptSelectorFromKey(key)
21792            ), resource || (src = assign({ src, async: true, type: "module" }, options), (options = preloadPropsMap.get(key)) && adoptPreloadPropsForScript(src, options), resource = ownerDocument.createElement("script"), markNodeAsHoistable(resource), setInitialProperties(resource, "link", src), ownerDocument.head.appendChild(resource)), resource = {
21793              type: "script",
21794              instance: resource,
21795              count: 1,
21796              state: null
21797            }, scripts.set(key, resource));
21798          }
21799        }
21800      };
21801      var globalDocument = "undefined" === typeof document ? null : document, tagCaches = null, SUSPENSEY_STYLESHEET_TIMEOUT = 6e4, SUSPENSEY_IMAGE_TIMEOUT = 800, SUSPENSEY_IMAGE_TIME_ESTIMATE = 500, estimatedBytesWithinLimit = 0, LAST_PRECEDENCE = null, precedencesByRoot = null, NotPendingTransition = NotPending, HostTransitionContext = {
21802        $$typeof: REACT_CONTEXT_TYPE,
21803        Provider: null,
21804        Consumer: null,
21805        _currentValue: NotPendingTransition,
21806        _currentValue2: NotPendingTransition,
21807        _threadCount: 0
21808      }, badgeFormat = "%c%s%c", badgeStyle = "background: #e6e6e6;background: light-dark(rgba(0,0,0,0.1), rgba(255,255,255,0.25));color: #000000;color: light-dark(#000000, #ffffff);border-radius: 2px", resetStyle = "", pad = " ", bind = Function.prototype.bind;
21809      var didWarnAboutNestedUpdates = false;
21810      var overrideHookState = null, overrideHookStateDeletePath = null, overrideHookStateRenamePath = null, overrideProps = null, overridePropsDeletePath = null, overridePropsRenamePath = null, scheduleUpdate = null, scheduleRetry = null, setErrorHandler = null, setSuspenseHandler = null;
21811      overrideHookState = function(fiber, id, path, value) {
21812        id = findHook(fiber, id);
21813        null !== id && (path = copyWithSetImpl(id.memoizedState, path, 0, value), id.memoizedState = path, id.baseState = path, fiber.memoizedProps = assign({}, fiber.memoizedProps), path = enqueueConcurrentRenderForLane(fiber, 2), null !== path && scheduleUpdateOnFiber(path, fiber, 2));
21814      };
21815      overrideHookStateDeletePath = function(fiber, id, path) {
21816        id = findHook(fiber, id);
21817        null !== id && (path = copyWithDeleteImpl(id.memoizedState, path, 0), id.memoizedState = path, id.baseState = path, fiber.memoizedProps = assign({}, fiber.memoizedProps), path = enqueueConcurrentRenderForLane(fiber, 2), null !== path && scheduleUpdateOnFiber(path, fiber, 2));
21818      };
21819      overrideHookStateRenamePath = function(fiber, id, oldPath, newPath) {
21820        id = findHook(fiber, id);
21821        null !== id && (oldPath = copyWithRename(id.memoizedState, oldPath, newPath), id.memoizedState = oldPath, id.baseState = oldPath, fiber.memoizedProps = assign({}, fiber.memoizedProps), oldPath = enqueueConcurrentRenderForLane(fiber, 2), null !== oldPath && scheduleUpdateOnFiber(oldPath, fiber, 2));
21822      };
21823      overrideProps = function(fiber, path, value) {
21824        fiber.pendingProps = copyWithSetImpl(fiber.memoizedProps, path, 0, value);
21825        fiber.alternate && (fiber.alternate.pendingProps = fiber.pendingProps);
21826        path = enqueueConcurrentRenderForLane(fiber, 2);
21827        null !== path && scheduleUpdateOnFiber(path, fiber, 2);
21828      };
21829      overridePropsDeletePath = function(fiber, path) {
21830        fiber.pendingProps = copyWithDeleteImpl(fiber.memoizedProps, path, 0);
21831        fiber.alternate && (fiber.alternate.pendingProps = fiber.pendingProps);
21832        path = enqueueConcurrentRenderForLane(fiber, 2);
21833        null !== path && scheduleUpdateOnFiber(path, fiber, 2);
21834      };
21835      overridePropsRenamePath = function(fiber, oldPath, newPath) {
21836        fiber.pendingProps = copyWithRename(
21837          fiber.memoizedProps,
21838          oldPath,
21839          newPath
21840        );
21841        fiber.alternate && (fiber.alternate.pendingProps = fiber.pendingProps);
21842        oldPath = enqueueConcurrentRenderForLane(fiber, 2);
21843        null !== oldPath && scheduleUpdateOnFiber(oldPath, fiber, 2);
21844      };
21845      scheduleUpdate = function(fiber) {
21846        var root3 = enqueueConcurrentRenderForLane(fiber, 2);
21847        null !== root3 && scheduleUpdateOnFiber(root3, fiber, 2);
21848      };
21849      scheduleRetry = function(fiber) {
21850        var lane = claimNextRetryLane(), root3 = enqueueConcurrentRenderForLane(fiber, lane);
21851        null !== root3 && scheduleUpdateOnFiber(root3, fiber, lane);
21852      };
21853      setErrorHandler = function(newShouldErrorImpl) {
21854        shouldErrorImpl = newShouldErrorImpl;
21855      };
21856      setSuspenseHandler = function(newShouldSuspendImpl) {
21857        shouldSuspendImpl = newShouldSuspendImpl;
21858      };
21859      var _enabled = true, return_targetInst = null, hasScheduledReplayAttempt = false, queuedFocus = null, queuedDrag = null, queuedMouse = null, queuedPointers = /* @__PURE__ */ new Map(), queuedPointerCaptures = /* @__PURE__ */ new Map(), queuedExplicitHydrationTargets = [], discreteReplayableEvents = "mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(
21860        " "
21861      ), lastScheduledReplayQueue = null;
21862      ReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render = function(children) {
21863        var root3 = this._internalRoot;
21864        if (null === root3) throw Error("Cannot update an unmounted root.");
21865        var args = arguments;
21866        "function" === typeof args[1] ? console.error(
21867          "does not support the second callback argument. To execute a side effect after rendering, declare it in a component body with useEffect()."
21868        ) : isValidContainer(args[1]) ? console.error(
21869          "You passed a container to the second argument of root.render(...). You don't need to pass it again since you already passed it to create the root."
21870        ) : "undefined" !== typeof args[1] && console.error(
21871          "You passed a second argument to root.render(...) but it only accepts one argument."
21872        );
21873        args = children;
21874        var current2 = root3.current, lane = requestUpdateLane(current2);
21875        updateContainerImpl(current2, lane, args, root3, null, null);
21876      };
21877      ReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount = function() {
21878        var args = arguments;
21879        "function" === typeof args[0] && console.error(
21880          "does not support a callback argument. To execute a side effect after rendering, declare it in a component body with useEffect()."
21881        );
21882        args = this._internalRoot;
21883        if (null !== args) {
21884          this._internalRoot = null;
21885          var container = args.containerInfo;
21886          (executionContext & (RenderContext | CommitContext)) !== NoContext && console.error(
21887            "Attempted to synchronously unmount a root while React was already rendering. React cannot finish unmounting the root until the current render has completed, which may lead to a race condition."
21888          );
21889          updateContainerImpl(args.current, 2, null, args, null, null);
21890          flushSyncWork$1();
21891          container[internalContainerInstanceKey] = null;
21892        }
21893      };
21894      ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function(target) {
21895        if (target) {
21896          var updatePriority = resolveUpdatePriority();
21897          target = { blockedOn: null, target, priority: updatePriority };
21898          for (var i3 = 0; i3 < queuedExplicitHydrationTargets.length && 0 !== updatePriority && updatePriority < queuedExplicitHydrationTargets[i3].priority; i3++) ;
21899          queuedExplicitHydrationTargets.splice(i3, 0, target);
21900          0 === i3 && attemptExplicitHydrationTarget(target);
21901        }
21902      };
21903      (function() {
21904        var isomorphicReactPackageVersion = React19.version;
21905        if ("19.2.4" !== isomorphicReactPackageVersion)
21906          throw Error(
21907            'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n  - react:      ' + (isomorphicReactPackageVersion + "\n  - react-dom:  19.2.4\nLearn more: https://react.dev/warnings/version-mismatch")
21908          );
21909      })();
21910      "function" === typeof Map && null != Map.prototype && "function" === typeof Map.prototype.forEach && "function" === typeof Set && null != Set.prototype && "function" === typeof Set.prototype.clear && "function" === typeof Set.prototype.forEach || console.error(
21911        "React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://react.dev/link/react-polyfills"
21912      );
21913      ReactDOMSharedInternals.findDOMNode = function(componentOrElement) {
21914        var fiber = componentOrElement._reactInternals;
21915        if (void 0 === fiber) {
21916          if ("function" === typeof componentOrElement.render)
21917            throw Error("Unable to find node on an unmounted component.");
21918          componentOrElement = Object.keys(componentOrElement).join(",");
21919          throw Error(
21920            "Argument appears to not be a ReactComponent. Keys: " + componentOrElement
21921          );
21922        }
21923        componentOrElement = findCurrentFiberUsingSlowPath(fiber);
21924        componentOrElement = null !== componentOrElement ? findCurrentHostFiberImpl(componentOrElement) : null;
21925        componentOrElement = null === componentOrElement ? null : componentOrElement.stateNode;
21926        return componentOrElement;
21927      };
21928      if (!(function() {
21929        var internals = {
21930          bundleType: 1,
21931          version: "19.2.4",
21932          rendererPackageName: "react-dom",
21933          currentDispatcherRef: ReactSharedInternals,
21934          reconcilerVersion: "19.2.4"
21935        };
21936        internals.overrideHookState = overrideHookState;
21937        internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
21938        internals.overrideHookStateRenamePath = overrideHookStateRenamePath;
21939        internals.overrideProps = overrideProps;
21940        internals.overridePropsDeletePath = overridePropsDeletePath;
21941        internals.overridePropsRenamePath = overridePropsRenamePath;
21942        internals.scheduleUpdate = scheduleUpdate;
21943        internals.scheduleRetry = scheduleRetry;
21944        internals.setErrorHandler = setErrorHandler;
21945        internals.setSuspenseHandler = setSuspenseHandler;
21946        internals.scheduleRefresh = scheduleRefresh;
21947        internals.scheduleRoot = scheduleRoot;
21948        internals.setRefreshHandler = setRefreshHandler;
21949        internals.getCurrentFiber = getCurrentFiberForDevTools;
21950        return injectInternals(internals);
21951      })() && canUseDOM && window.top === window.self && (-1 < navigator.userAgent.indexOf("Chrome") && -1 === navigator.userAgent.indexOf("Edge") || -1 < navigator.userAgent.indexOf("Firefox"))) {
21952        var protocol = window.location.protocol;
21953        /^(https?|file):$/.test(protocol) && console.info(
21954          "%cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools" + ("file:" === protocol ? "\nYou might need to use a local HTTP server (instead of file://): https://react.dev/link/react-devtools-faq" : ""),
21955          "font-weight:bold"
21956        );
21957      }
21958      exports.createRoot = function(container, options) {
21959        if (!isValidContainer(container))
21960          throw Error("Target container is not a DOM element.");
21961        warnIfReactDOMContainerInDEV(container);
21962        var isStrictMode = false, identifierPrefix = "", onUncaughtError = defaultOnUncaughtError, onCaughtError = defaultOnCaughtError, onRecoverableError = defaultOnRecoverableError;
21963        null !== options && void 0 !== options && (options.hydrate ? console.warn(
21964          "hydrate through createRoot is deprecated. Use ReactDOMClient.hydrateRoot(container, <App />) instead."
21965        ) : "object" === typeof options && null !== options && options.$$typeof === REACT_ELEMENT_TYPE && console.error(
21966          "You passed a JSX element to createRoot. You probably meant to call root.render instead. Example usage:\n\n  let root = createRoot(domContainer);\n  root.render(<App />);"
21967        ), true === options.unstable_strictMode && (isStrictMode = true), void 0 !== options.identifierPrefix && (identifierPrefix = options.identifierPrefix), void 0 !== options.onUncaughtError && (onUncaughtError = options.onUncaughtError), void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError), void 0 !== options.onRecoverableError && (onRecoverableError = options.onRecoverableError));
21968        options = createFiberRoot(
21969          container,
21970          1,
21971          false,
21972          null,
21973          null,
21974          isStrictMode,
21975          identifierPrefix,
21976          null,
21977          onUncaughtError,
21978          onCaughtError,
21979          onRecoverableError,
21980          defaultOnDefaultTransitionIndicator
21981        );
21982        container[internalContainerInstanceKey] = options.current;
21983        listenToAllSupportedEvents(container);
21984        return new ReactDOMRoot(options);
21985      };
21986      exports.hydrateRoot = function(container, initialChildren, options) {
21987        if (!isValidContainer(container))
21988          throw Error("Target container is not a DOM element.");
21989        warnIfReactDOMContainerInDEV(container);
21990        void 0 === initialChildren && console.error(
21991          "Must provide initial children as second argument to hydrateRoot. Example usage: hydrateRoot(domContainer, <App />)"
21992        );
21993        var isStrictMode = false, identifierPrefix = "", onUncaughtError = defaultOnUncaughtError, onCaughtError = defaultOnCaughtError, onRecoverableError = defaultOnRecoverableError, formState = null;
21994        null !== options && void 0 !== options && (true === options.unstable_strictMode && (isStrictMode = true), void 0 !== options.identifierPrefix && (identifierPrefix = options.identifierPrefix), void 0 !== options.onUncaughtError && (onUncaughtError = options.onUncaughtError), void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError), void 0 !== options.onRecoverableError && (onRecoverableError = options.onRecoverableError), void 0 !== options.formState && (formState = options.formState));
21995        initialChildren = createFiberRoot(
21996          container,
21997          1,
21998          true,
21999          initialChildren,
22000          null != options ? options : null,
22001          isStrictMode,
22002          identifierPrefix,
22003          formState,
22004          onUncaughtError,
22005          onCaughtError,
22006          onRecoverableError,
22007          defaultOnDefaultTransitionIndicator
22008        );
22009        initialChildren.context = getContextForSubtree(null);
22010        options = initialChildren.current;
22011        isStrictMode = requestUpdateLane(options);
22012        isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);
22013        identifierPrefix = createUpdate(isStrictMode);
22014        identifierPrefix.callback = null;
22015        enqueueUpdate(options, identifierPrefix, isStrictMode);
22016        startUpdateTimerByLane(isStrictMode, "hydrateRoot()", null);
22017        options = isStrictMode;
22018        initialChildren.current.lanes = options;
22019        markRootUpdated$1(initialChildren, options);
22020        ensureRootIsScheduled(initialChildren);
22021        container[internalContainerInstanceKey] = initialChildren.current;
22022        listenToAllSupportedEvents(container);
22023        return new ReactDOMHydrationRoot(initialChildren);
22024      };
22025      exports.version = "19.2.4";
22026      "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
22027    })();
22028  }
22029});
22030
vendor: 299 bytes, lines 22031-22043
22031// node_modules/react-dom/client.js
22032var require_client = __commonJS({
22033  "node_modules/react-dom/client.js"(exports, module) {
22034    "use strict";
22035    if (false) {
22036      checkDCE();
22037      module.exports = null;
22038    } else {
22039      module.exports = require_react_dom_client_development();
22040    }
22041  }
22042});
22043
vendor: 194,536 bytes, lines 22044-26054
22044// node_modules/@mediapipe/tasks-vision/vision_bundle.mjs
22045var vision_bundle_exports = {};
22046__export(vision_bundle_exports, {
22047  DrawingUtils: () => Ka,
22048  FaceDetector: () => pc,
22049  FaceLandmarker: () => Sc,
22050  FilesetResolver: () => Zo,
22051  GestureRecognizer: () => Fc,
22052  HandLandmarker: () => Pc,
22053  HolisticLandmarker: () => Dc,
22054  ImageClassifier: () => Bc,
22055  ImageEmbedder: () => Gc,
22056  ImageSegmenter: () => Wc,
22057  ImageSegmenterResult: () => jc,
22058  InteractiveSegmenter: () => Kc,
22059  InteractiveSegmenterResult: () => zc,
22060  MPImage: () => nc,
22061  MPMask: () => Na,
22062  ObjectDetector: () => Yc,
22063  PoseLandmarker: () => Zc,
22064  TaskRunner: () => pa,
22065  VisionTaskRunner: () => dc
22066});
22067function e(e3, n3) {
22068  t: {
22069    for (var r3 = ["CLOSURE_FLAGS"], i3 = t, s3 = 0; s3 < r3.length; s3++) if (null == (i3 = i3[r3[s3]])) {
22070      r3 = null;
22071      break t;
22072    }
22073    r3 = i3;
22074  }
22075  return null != (e3 = r3 && r3[e3]) ? e3 : n3;
22076}
22077function n() {
22078  throw Error("Invalid UTF8");
22079}
22080function r(t3, e3) {
22081  return e3 = String.fromCharCode.apply(null, e3), null == t3 ? e3 : t3 + e3;
22082}
22083function h(t3) {
22084  if (c) t3 = (a ||= new TextEncoder()).encode(t3);
22085  else {
22086    let n3 = 0;
22087    const r3 = new Uint8Array(3 * t3.length);
22088    for (let i3 = 0; i3 < t3.length; i3++) {
22089      var e3 = t3.charCodeAt(i3);
22090      if (e3 < 128) r3[n3++] = e3;
22091      else {
22092        if (e3 < 2048) r3[n3++] = e3 >> 6 | 192;
22093        else {
22094          if (e3 >= 55296 && e3 <= 57343) {
22095            if (e3 <= 56319 && i3 < t3.length) {
22096              const s3 = t3.charCodeAt(++i3);
22097              if (s3 >= 56320 && s3 <= 57343) {
22098                e3 = 1024 * (e3 - 55296) + s3 - 56320 + 65536, r3[n3++] = e3 >> 18 | 240, r3[n3++] = e3 >> 12 & 63 | 128, r3[n3++] = e3 >> 6 & 63 | 128, r3[n3++] = 63 & e3 | 128;
22099                continue;
22100              }
22101              i3--;
22102            }
22103            e3 = 65533;
22104          }
22105          r3[n3++] = e3 >> 12 | 224, r3[n3++] = e3 >> 6 & 63 | 128;
22106        }
22107        r3[n3++] = 63 & e3 | 128;
22108      }
22109    }
22110    t3 = n3 === r3.length ? r3 : r3.subarray(0, n3);
22111  }
22112  return t3;
22113}
22114function u(e3) {
22115  t.setTimeout((() => {
22116    throw e3;
22117  }), 0);
22118}
22119function p() {
22120  var e3 = t.navigator;
22121  return e3 && (e3 = e3.userAgent) ? e3 : "";
22122}
22123function m(t3) {
22124  return m[" "](t3), t3;
22125}
22126function v(t3) {
22127  const e3 = t3.length;
22128  let n3 = 3 * e3 / 4;
22129  n3 % 3 ? n3 = Math.floor(n3) : -1 != "=.".indexOf(t3[e3 - 1]) && (n3 = -1 != "=.".indexOf(t3[e3 - 2]) ? n3 - 2 : n3 - 1);
22130  const r3 = new Uint8Array(n3);
22131  let i3 = 0;
22132  return (function(t4, e4) {
22133    function n4(e5) {
22134      for (; r4 < t4.length; ) {
22135        const e6 = t4.charAt(r4++), n5 = _[e6];
22136        if (null != n5) return n5;
22137        if (!/^[\s\xa0]*$/.test(e6)) throw Error("Unknown base64 encoding at char: " + e6);
22138      }
22139      return e5;
22140    }
22141    E();
22142    let r4 = 0;
22143    for (; ; ) {
22144      const t5 = n4(-1), r5 = n4(0), i4 = n4(64), s3 = n4(64);
22145      if (64 === s3 && -1 === t5) break;
22146      e4(t5 << 2 | r5 >> 4), 64 != i4 && (e4(r5 << 4 & 240 | i4 >> 2), 64 != s3 && e4(i4 << 6 & 192 | s3));
22147    }
22148  })(t3, (function(t4) {
22149    r3[i3++] = t4;
22150  })), i3 !== n3 ? r3.subarray(0, i3) : r3;
22151}
22152function E() {
22153  if (!_) {
22154    _ = {};
22155    var t3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""), e3 = ["+/=", "+/", "-_=", "-_.", "-_"];
22156    for (let n3 = 0; n3 < 5; n3++) {
22157      const r3 = t3.concat(e3[n3].split(""));
22158      y[n3] = r3;
22159      for (let t4 = 0; t4 < r3.length; t4++) {
22160        const e4 = r3[t4];
22161        void 0 === _[e4] && (_[e4] = t4);
22162      }
22163    }
22164  }
22165}
22166function k(t3) {
22167  return b[t3] || "";
22168}
22169function S(t3) {
22170  if (!T) return v(t3);
22171  t3 = A.test(t3) ? t3.replace(A, k) : t3, t3 = atob(t3);
22172  const e3 = new Uint8Array(t3.length);
22173  for (let n3 = 0; n3 < t3.length; n3++) e3[n3] = t3.charCodeAt(n3);
22174  return e3;
22175}
22176function x(t3) {
22177  return w && null != t3 && t3 instanceof Uint8Array;
22178}
22179function R() {
22180  return M ||= new F(null, L);
22181}
22182function I(t3) {
22183  C(L);
22184  var e3 = t3.g;
22185  return null == (e3 = null == e3 || x(e3) ? e3 : "string" == typeof e3 ? S(e3) : null) ? e3 : t3.g = e3;
22186}
22187function C(t3) {
22188  if (t3 !== L) throw Error("illegal external caller");
22189}
22190function O(t3, e3) {
22191  t3.__closure__error__context__984382 || (t3.__closure__error__context__984382 = {}), t3.__closure__error__context__984382.severity = e3;
22192}
22193function N(t3) {
22194  return O(t3 = Error(t3), "warning"), t3;
22195}
22196function U(t3, e3) {
22197  if (null != t3) {
22198    var n3 = P ??= {}, r3 = n3[t3] || 0;
22199    r3 >= e3 || (n3[t3] = r3 + 1, O(t3 = Error(), "incident"), u(t3));
22200  }
22201}
22202function D() {
22203  return "function" == typeof BigInt;
22204}
22205function G(t3, e3, n3 = false) {
22206  return "function" == typeof Symbol && "symbol" == typeof /* @__PURE__ */ Symbol() ? n3 && Symbol.for && t3 ? Symbol.for(t3) : null != t3 ? Symbol(t3) : /* @__PURE__ */ Symbol() : e3;
22207}
22208function nt(t3, e3) {
22209  B || Q in t3 || Z(t3, J), t3[Q] |= e3;
22210}
22211function rt(t3, e3) {
22212  B || Q in t3 || Z(t3, J), t3[Q] = e3;
22213}
22214function it(t3) {
22215  return nt(t3, 34), t3;
22216}
22217function st(t3) {
22218  return nt(t3, 8192), t3;
22219}
22220function at(t3, e3) {
22221  return void 0 === e3 ? t3.h !== ct && !!(2 & (0 | t3.v[Q])) : !!(2 & e3) && t3.h !== ct;
22222}
22223function ht(t3, e3) {
22224  if (null != t3) {
22225    if ("string" == typeof t3) t3 = t3 ? new F(t3, L) : R();
22226    else if (t3.constructor !== F) if (x(t3)) t3 = t3.length ? new F(new Uint8Array(t3), L) : R();
22227    else {
22228      if (!e3) throw Error();
22229      t3 = void 0;
22230    }
22231  }
22232  return t3;
22233}
22234function ft(t3, e3, n3) {
22235  const r3 = 128 & e3 ? 0 : -1, i3 = t3.length;
22236  var s3;
22237  (s3 = !!i3) && (s3 = null != (s3 = t3[i3 - 1]) && "object" == typeof s3 && s3.constructor === Object);
22238  const o3 = i3 + (s3 ? -1 : 0);
22239  for (e3 = 128 & e3 ? 1 : 0; e3 < o3; e3++) n3(e3 - r3, t3[e3]);
22240  if (s3) {
22241    t3 = t3[i3 - 1];
22242    for (const e4 in t3) !isNaN(e4) && n3(+e4, t3[e4]);
22243  }
22244}
22245function pt(t3) {
22246  return 128 & t3 ? dt : void 0;
22247}
22248function gt(t3) {
22249  return t3.Na = true, t3;
22250}
22251function Et(t3) {
22252  var e3 = t3;
22253  if (yt(e3)) {
22254    if (!/^\s*(?:-?[1-9]\d*|0)?\s*$/.test(e3)) throw Error(String(e3));
22255  } else if (mt(e3) && !Number.isSafeInteger(e3)) throw Error(String(e3));
22256  return vt ? BigInt(t3) : t3 = _t(t3) ? t3 ? "1" : "0" : yt(t3) ? t3.trim() || "0" : String(t3);
22257}
22258function St(t3, e3) {
22259  if (t3.length > e3.length) return false;
22260  if (t3.length < e3.length || t3 === e3) return true;
22261  for (let n3 = 0; n3 < t3.length; n3++) {
22262    const r3 = t3[n3], i3 = e3[n3];
22263    if (r3 > i3) return false;
22264    if (r3 < i3) return true;
22265  }
22266}
22267function Ft(t3) {
22268  const e3 = t3 >>> 0;
22269  Rt = e3, It = (t3 - e3) / 4294967296 >>> 0;
22270}
22271function Mt(t3) {
22272  if (t3 < 0) {
22273    Ft(-t3);
22274    const [e3, n3] = jt(Rt, It);
22275    Rt = e3 >>> 0, It = n3 >>> 0;
22276  } else Ft(t3);
22277}
22278function Pt(t3) {
22279  const e3 = Lt ||= new DataView(new ArrayBuffer(8));
22280  e3.setFloat32(0, +t3, true), It = 0, Rt = e3.getUint32(0, true);
22281}
22282function Ct(t3, e3) {
22283  const n3 = 4294967296 * e3 + (t3 >>> 0);
22284  return Number.isSafeInteger(n3) ? n3 : Ut(t3, e3);
22285}
22286function Ot(t3, e3) {
22287  return Et(D() ? BigInt.asUintN(64, (BigInt(e3 >>> 0) << BigInt(32)) + BigInt(t3 >>> 0)) : Ut(t3, e3));
22288}
22289function Nt(t3, e3) {
22290  return D() ? Et(BigInt.asIntN(64, (BigInt.asUintN(32, BigInt(e3)) << BigInt(32)) + BigInt.asUintN(32, BigInt(t3)))) : Et(Bt(t3, e3));
22291}
22292function Ut(t3, e3) {
22293  if (t3 >>>= 0, (e3 >>>= 0) <= 2097151) var n3 = "" + (4294967296 * e3 + t3);
22294  else D() ? n3 = "" + (BigInt(e3) << BigInt(32) | BigInt(t3)) : (t3 = (16777215 & t3) + 6777216 * (n3 = 16777215 & (t3 >>> 24 | e3 << 8)) + 6710656 * (e3 = e3 >> 16 & 65535), n3 += 8147497 * e3, e3 *= 2, t3 >= 1e7 && (n3 += t3 / 1e7 >>> 0, t3 %= 1e7), n3 >= 1e7 && (e3 += n3 / 1e7 >>> 0, n3 %= 1e7), n3 = e3 + Dt(n3) + Dt(t3));
22295  return n3;
22296}
22297function Dt(t3) {
22298  return t3 = String(t3), "0000000".slice(t3.length) + t3;
22299}
22300function Bt(t3, e3) {
22301  if (2147483648 & e3) if (D()) t3 = "" + (BigInt(0 | e3) << BigInt(32) | BigInt(t3 >>> 0));
22302  else {
22303    const [n3, r3] = jt(t3, e3);
22304    t3 = "-" + Ut(n3, r3);
22305  }
22306  else t3 = Ut(t3, e3);
22307  return t3;
22308}
22309function Gt(t3) {
22310  if (t3.length < 16) Mt(Number(t3));
22311  else if (D()) t3 = BigInt(t3), Rt = Number(t3 & BigInt(4294967295)) >>> 0, It = Number(t3 >> BigInt(32) & BigInt(4294967295));
22312  else {
22313    const e3 = +("-" === t3[0]);
22314    It = Rt = 0;
22315    const n3 = t3.length;
22316    for (let r3 = e3, i3 = (n3 - e3) % 6 + e3; i3 <= n3; r3 = i3, i3 += 6) {
22317      const e4 = Number(t3.slice(r3, i3));
22318      It *= 1e6, Rt = 1e6 * Rt + e4, Rt >= 4294967296 && (It += Math.trunc(Rt / 4294967296), It >>>= 0, Rt >>>= 0);
22319    }
22320    if (e3) {
22321      const [t4, e4] = jt(Rt, It);
22322      Rt = t4, It = e4;
22323    }
22324  }
22325}
22326function jt(t3, e3) {
22327  return e3 = ~e3, t3 ? t3 = 1 + ~t3 : e3 += 1, [t3, e3];
22328}
22329function Vt(t3) {
22330  return Array.prototype.slice.call(t3);
22331}
22332function qt(t3) {
22333  if (null != t3 && "number" != typeof t3) throw Error(`Value of float/double field must be a number, found ${typeof t3}: ${t3}`);
22334  return t3;
22335}
22336function $t(t3) {
22337  return null == t3 || "number" == typeof t3 ? t3 : "NaN" === t3 || "Infinity" === t3 || "-Infinity" === t3 ? Number(t3) : void 0;
22338}
22339function Jt(t3) {
22340  if (null != t3 && "boolean" != typeof t3) {
22341    var e3 = typeof t3;
22342    throw Error(`Expected boolean but got ${"object" != e3 ? e3 : t3 ? Array.isArray(t3) ? "array" : e3 : "null"}: ${t3}`);
22343  }
22344  return t3;
22345}
22346function Zt(t3) {
22347  return null == t3 || "boolean" == typeof t3 ? t3 : "number" == typeof t3 ? !!t3 : void 0;
22348}
22349function te(t3) {
22350  switch (typeof t3) {
22351    case "bigint":
22352      return true;
22353    case "number":
22354      return zt(t3);
22355    case "string":
22356      return Qt.test(t3);
22357    default:
22358      return false;
22359  }
22360}
22361function ee(t3) {
22362  if (null == t3) return t3;
22363  if ("string" == typeof t3 && t3) t3 = +t3;
22364  else if ("number" != typeof t3) return;
22365  return zt(t3) ? 0 | t3 : void 0;
22366}
22367function ne(t3) {
22368  if (null == t3) return t3;
22369  if ("string" == typeof t3 && t3) t3 = +t3;
22370  else if ("number" != typeof t3) return;
22371  return zt(t3) ? t3 >>> 0 : void 0;
22372}
22373function re(t3) {
22374  const e3 = t3.length;
22375  return ("-" === t3[0] ? e3 < 20 || 20 === e3 && t3 <= "-9223372036854775808" : e3 < 19 || 19 === e3 && t3 <= "9223372036854775807") ? t3 : (Gt(t3), Bt(Rt, It));
22376}
22377function ie(t3) {
22378  if (t3 = Kt(t3), !Wt(t3)) {
22379    Mt(t3);
22380    var e3 = Rt, n3 = It;
22381    (t3 = 2147483648 & n3) && (n3 = ~n3 >>> 0, 0 == (e3 = 1 + ~e3 >>> 0) && (n3 = n3 + 1 >>> 0)), t3 = "number" == typeof (e3 = Ct(e3, n3)) ? t3 ? -e3 : e3 : t3 ? "-" + e3 : e3;
22382  }
22383  return t3;
22384}
22385function se(t3) {
22386  var e3 = Kt(Number(t3));
22387  return Wt(e3) ? String(e3) : (-1 !== (e3 = t3.indexOf(".")) && (t3 = t3.substring(0, e3)), re(t3));
22388}
22389function oe(t3) {
22390  var e3 = Kt(Number(t3));
22391  return Wt(e3) ? Et(e3) : (-1 !== (e3 = t3.indexOf(".")) && (t3 = t3.substring(0, e3)), D() ? Et(Xt(64, BigInt(t3))) : Et(re(t3)));
22392}
22393function ae(t3) {
22394  return Wt(t3) ? t3 = Et(ie(t3)) : (t3 = Kt(t3), Wt(t3) ? t3 = String(t3) : (Mt(t3), t3 = Bt(Rt, It)), t3 = Et(t3)), t3;
22395}
22396function ce(t3) {
22397  const e3 = typeof t3;
22398  return null == t3 ? t3 : "bigint" === e3 ? Et(Xt(64, t3)) : te(t3) ? "string" === e3 ? oe(t3) : ae(t3) : void 0;
22399}
22400function he(t3) {
22401  if ("string" != typeof t3) throw Error();
22402  return t3;
22403}
22404function ue(t3) {
22405  if (null != t3 && "string" != typeof t3) throw Error();
22406  return t3;
22407}
22408function le(t3) {
22409  return null == t3 || "string" == typeof t3 ? t3 : void 0;
22410}
22411function fe(t3, e3, n3, r3) {
22412  return null != t3 && t3[q] === ot ? t3 : Array.isArray(t3) ? ((r3 = (n3 = 0 | t3[Q]) | 32 & r3 | 2 & r3) !== n3 && rt(t3, r3), new e3(t3)) : (n3 ? 2 & r3 ? ((t3 = e3[V]) || (it((t3 = new e3()).v), t3 = e3[V] = t3), e3 = t3) : e3 = new e3() : e3 = void 0, e3);
22413}
22414function de(t3, e3, n3) {
22415  if (e3) t: {
22416    if (!te(e3 = t3)) throw N("int64");
22417    switch (typeof e3) {
22418      case "string":
22419        e3 = oe(e3);
22420        break t;
22421      case "bigint":
22422        e3 = Et(Xt(64, e3));
22423        break t;
22424      default:
22425        e3 = ae(e3);
22426    }
22427  }
22428  else e3 = ce(t3);
22429  return null == (t3 = e3) ? n3 ? Yt : void 0 : t3;
22430}
22431function _e(t3) {
22432  return t3;
22433}
22434function ve(t3) {
22435  if (2 & t3.J) throw Error("Cannot mutate an immutable Map");
22436}
22437function we(t3, e3, n3, r3, i3, s3) {
22438  return t3 = fe(t3, r3, n3, s3), i3 && (t3 = Xe(t3)), t3;
22439}
22440function Te(t3) {
22441  return [t3, this.get(t3)];
22442}
22443function be() {
22444  return Ae ||= new Ee(it([]), void 0, void 0, void 0, pe);
22445}
22446function ke(t3) {
22447  return H ? t3[H] : void 0;
22448}
22449function Se(t3, e3) {
22450  for (const n3 in t3) !isNaN(n3) && e3(t3, +n3, t3[n3]);
22451}
22452function Re(t3, e3) {
22453  e3 < 100 || U(z, 1);
22454}
22455function Ie(t3, e3, n3, r3) {
22456  const i3 = void 0 !== r3;
22457  r3 = !!r3;
22458  var s3, o3 = H;
22459  !i3 && B && o3 && (s3 = t3[o3]) && Se(s3, Re), o3 = [];
22460  var a3 = t3.length;
22461  let c3;
22462  s3 = 4294967295;
22463  let h3 = false;
22464  const u3 = !!(64 & e3), l3 = u3 ? 128 & e3 ? 0 : -1 : void 0;
22465  1 & e3 || (c3 = a3 && t3[a3 - 1], null != c3 && "object" == typeof c3 && c3.constructor === Object ? s3 = --a3 : c3 = void 0, !u3 || 128 & e3 || i3 || (h3 = true, s3 = s3 - l3 + l3)), e3 = void 0;
22466  for (var f3 = 0; f3 < a3; f3++) {
22467    let i4 = t3[f3];
22468    if (null != i4 && null != (i4 = n3(i4, r3))) if (u3 && f3 >= s3) {
22469      const t4 = f3 - l3;
22470      (e3 ??= {})[t4] = i4;
22471    } else o3[f3] = i4;
22472  }
22473  if (c3) for (let t4 in c3) {
22474    if (null == (a3 = c3[t4]) || null == (a3 = n3(a3, r3))) continue;
22475    let i4;
22476    f3 = +t4, u3 && !Number.isNaN(f3) && (i4 = f3 + l3) < s3 ? o3[i4] = a3 : (e3 ??= {})[t4] = a3;
22477  }
22478  return e3 && (h3 ? o3.push(e3) : o3[s3] = e3), i3 && H && (t3 = ke(t3)) && t3 instanceof xe && (o3[H] = (function(t4) {
22479    const e4 = new xe();
22480    return Se(t4, ((t5, n4, r4) => {
22481      e4[n4] = Vt(r4);
22482    })), e4.da = t4.da, e4;
22483  })(t3)), o3;
22484}
22485function Fe(t3) {
22486  return t3[0] = Me(t3[0]), t3[1] = Me(t3[1]), t3;
22487}
22488function Me(t3) {
22489  switch (typeof t3) {
22490    case "number":
22491      return Number.isFinite(t3) ? t3 : "" + t3;
22492    case "bigint":
22493      return wt(t3) ? Number(t3) : "" + t3;
22494    case "boolean":
22495      return t3 ? 1 : 0;
22496    case "object":
22497      if (Array.isArray(t3)) {
22498        var e3 = 0 | t3[Q];
22499        return 0 === t3.length && 1 & e3 ? void 0 : Ie(t3, e3, Me);
22500      }
22501      if (null != t3 && t3[q] === ot) return Oe(t3);
22502      if (t3 instanceof F) {
22503        if (null == (e3 = t3.g)) t3 = "";
22504        else if ("string" == typeof e3) t3 = e3;
22505        else {
22506          if (T) {
22507            for (var n3 = "", r3 = 0, i3 = e3.length - 10240; r3 < i3; ) n3 += String.fromCharCode.apply(null, e3.subarray(r3, r3 += 10240));
22508            n3 += String.fromCharCode.apply(null, r3 ? e3.subarray(r3) : e3), e3 = btoa(n3);
22509          } else {
22510            void 0 === n3 && (n3 = 0), E(), n3 = y[n3], r3 = Array(Math.floor(e3.length / 3)), i3 = n3[64] || "";
22511            let t4 = 0, h3 = 0;
22512            for (; t4 < e3.length - 2; t4 += 3) {
22513              var s3 = e3[t4], o3 = e3[t4 + 1], a3 = e3[t4 + 2], c3 = n3[s3 >> 2];
22514              s3 = n3[(3 & s3) << 4 | o3 >> 4], o3 = n3[(15 & o3) << 2 | a3 >> 6], a3 = n3[63 & a3], r3[h3++] = c3 + s3 + o3 + a3;
22515            }
22516            switch (c3 = 0, a3 = i3, e3.length - t4) {
22517              case 2:
22518                a3 = n3[(15 & (c3 = e3[t4 + 1])) << 2] || i3;
22519              case 1:
22520                e3 = e3[t4], r3[h3] = n3[e3 >> 2] + n3[(3 & e3) << 4 | c3 >> 4] + a3 + i3;
22521            }
22522            e3 = r3.join("");
22523          }
22524          t3 = t3.g = e3;
22525        }
22526        return t3;
22527      }
22528      return t3 instanceof Ee ? t3 = 0 !== t3.size ? t3.V(Fe) : void 0 : void 0;
22529  }
22530  return t3;
22531}
22532function Oe(t3) {
22533  return Ie(t3 = t3.v, 0 | t3[Q], Me);
22534}
22535function Ne(t3, e3) {
22536  return Ue(t3, e3[0], e3[1]);
22537}
22538function Ue(t3, e3, n3, r3 = 0) {
22539  if (null == t3) {
22540    var i3 = 32;
22541    n3 ? (t3 = [n3], i3 |= 128) : t3 = [], e3 && (i3 = -16760833 & i3 | (1023 & e3) << 14);
22542  } else {
22543    if (!Array.isArray(t3)) throw Error("narr");
22544    if (i3 = 0 | t3[Q], d && 1 & i3) throw Error("rfarr");
22545    if (2048 & i3 && !(2 & i3) && (function() {
22546      if (d) throw Error("carr");
22547      U(Y, 5);
22548    })(), 256 & i3) throw Error("farr");
22549    if (64 & i3) return (i3 | r3) !== i3 && rt(t3, i3 | r3), t3;
22550    if (n3 && (i3 |= 128, n3 !== t3[0])) throw Error("mid");
22551    t: {
22552      i3 |= 64;
22553      var s3 = (n3 = t3).length;
22554      if (s3) {
22555        var o3 = s3 - 1;
22556        const t4 = n3[o3];
22557        if (null != t4 && "object" == typeof t4 && t4.constructor === Object) {
22558          if ((o3 -= e3 = 128 & i3 ? 0 : -1) >= 1024) throw Error("pvtlmt");
22559          for (var a3 in t4) (s3 = +a3) < o3 && (n3[s3 + e3] = t4[a3], delete t4[a3]);
22560          i3 = -16760833 & i3 | (1023 & o3) << 14;
22561          break t;
22562        }
22563      }
22564      if (e3) {
22565        if ((a3 = Math.max(e3, s3 - (128 & i3 ? 0 : -1))) > 1024) throw Error("spvt");
22566        i3 = -16760833 & i3 | (1023 & a3) << 14;
22567      }
22568    }
22569  }
22570  return rt(t3, 64 | i3 | r3), t3;
22571}
22572function De(t3, e3) {
22573  if ("object" != typeof t3) return t3;
22574  if (Array.isArray(t3)) {
22575    var n3 = 0 | t3[Q];
22576    return 0 === t3.length && 1 & n3 ? void 0 : Be(t3, n3, e3);
22577  }
22578  if (null != t3 && t3[q] === ot) return je(t3);
22579  if (t3 instanceof Ee) {
22580    if (2 & (e3 = t3.J)) return t3;
22581    if (!t3.size) return;
22582    if (n3 = it(t3.V()), t3.K) for (t3 = 0; t3 < n3.length; t3++) {
22583      const r3 = n3[t3];
22584      let i3 = r3[1];
22585      i3 = null == i3 || "object" != typeof i3 ? void 0 : null != i3 && i3[q] === ot ? je(i3) : Array.isArray(i3) ? Be(i3, 0 | i3[Q], !!(32 & e3)) : void 0, r3[1] = i3;
22586    }
22587    return n3;
22588  }
22589  return t3 instanceof F ? t3 : void 0;
22590}
22591function Be(t3, e3, n3) {
22592  return 2 & e3 || (!n3 || 4096 & e3 || 16 & e3 ? t3 = Ve(t3, e3, false, n3 && !(16 & e3)) : (nt(t3, 34), 4 & e3 && Object.freeze(t3))), t3;
22593}
22594function Ge(t3, e3, n3) {
22595  return t3 = new t3.constructor(e3), n3 && (t3.h = ct), t3.m = ct, t3;
22596}
22597function je(t3) {
22598  const e3 = t3.v, n3 = 0 | e3[Q];
22599  return at(t3, n3) ? t3 : Ke(t3, e3, n3) ? Ge(t3, e3) : Ve(e3, n3);
22600}
22601function Ve(t3, e3, n3, r3) {
22602  return r3 ??= !!(34 & e3), t3 = Ie(t3, e3, De, r3), r3 = 32, n3 && (r3 |= 2), rt(t3, e3 = 16769217 & e3 | r3), t3;
22603}
22604function Xe(t3) {
22605  const e3 = t3.v, n3 = 0 | e3[Q];
22606  return at(t3, n3) ? Ke(t3, e3, n3) ? Ge(t3, e3, true) : new t3.constructor(Ve(e3, n3, false)) : t3;
22607}
22608function He(t3) {
22609  if (t3.h !== ct) return false;
22610  var e3 = t3.v;
22611  return nt(e3 = Ve(e3, 0 | e3[Q]), 2048), t3.v = e3, t3.h = void 0, t3.m = void 0, true;
22612}
22613function We(t3) {
22614  if (!He(t3) && at(t3, 0 | t3.v[Q])) throw Error();
22615}
22616function ze(t3, e3) {
22617  void 0 === e3 && (e3 = 0 | t3[Q]), 32 & e3 && !(4096 & e3) && rt(t3, 4096 | e3);
22618}
22619function Ke(t3, e3, n3) {
22620  return !!(2 & n3) || !(!(32 & n3) || 4096 & n3) && (rt(e3, 2 | n3), t3.h = ct, true);
22621}
22622function $e(t3, e3, n3, r3, i3) {
22623  if (null !== (e3 = Je(t3.v, e3, n3, i3)) || r3 && t3.m !== ct) return e3;
22624}
22625function Je(t3, e3, n3, r3) {
22626  if (-1 === e3) return null;
22627  const i3 = e3 + (n3 ? 0 : -1), s3 = t3.length - 1;
22628  let o3, a3;
22629  if (!(s3 < 1 + (n3 ? 0 : -1))) {
22630    if (i3 >= s3) if (o3 = t3[s3], null != o3 && "object" == typeof o3 && o3.constructor === Object) n3 = o3[e3], a3 = true;
22631    else {
22632      if (i3 !== s3) return;
22633      n3 = o3;
22634    }
22635    else n3 = t3[i3];
22636    if (r3 && null != n3) {
22637      if (null == (r3 = r3(n3))) return r3;
22638      if (!Object.is(r3, n3)) return a3 ? o3[e3] = r3 : t3[i3] = r3, r3;
22639    }
22640    return n3;
22641  }
22642}
22643function Ze(t3, e3, n3, r3) {
22644  We(t3), Qe(t3 = t3.v, 0 | t3[Q], e3, n3, r3);
22645}
22646function Qe(t3, e3, n3, r3, i3) {
22647  const s3 = n3 + (i3 ? 0 : -1);
22648  var o3 = t3.length - 1;
22649  if (o3 >= 1 + (i3 ? 0 : -1) && s3 >= o3) {
22650    const i4 = t3[o3];
22651    if (null != i4 && "object" == typeof i4 && i4.constructor === Object) return i4[n3] = r3, e3;
22652  }
22653  return s3 <= o3 ? (t3[s3] = r3, e3) : (void 0 !== r3 && (n3 >= (o3 = (e3 ??= 0 | t3[Q]) >> 14 & 1023 || 536870912) ? null != r3 && (t3[o3 + (i3 ? 0 : -1)] = { [n3]: r3 }) : t3[s3] = r3), e3);
22654}
22655function tn() {
22656  return void 0 === lt ? 2 : 4;
22657}
22658function en(t3, e3, n3, r3, i3) {
22659  let s3 = t3.v, o3 = 0 | s3[Q];
22660  r3 = at(t3, o3) ? 1 : r3, i3 = !!i3 || 3 === r3, 2 === r3 && He(t3) && (s3 = t3.v, o3 = 0 | s3[Q]);
22661  let a3 = (t3 = rn(s3, e3)) === tt ? 7 : 0 | t3[Q], c3 = sn(a3, o3);
22662  var h3 = !(4 & c3);
22663  if (h3) {
22664    4 & c3 && (t3 = Vt(t3), a3 = 0, c3 = An(c3, o3), o3 = Qe(s3, o3, e3, t3));
22665    let r4 = 0, i4 = 0;
22666    for (; r4 < t3.length; r4++) {
22667      const e4 = n3(t3[r4]);
22668      null != e4 && (t3[i4++] = e4);
22669    }
22670    i4 < r4 && (t3.length = i4), n3 = -513 & (4 | c3), c3 = n3 &= -1025, c3 &= -4097;
22671  }
22672  return c3 !== a3 && (rt(t3, c3), 2 & c3 && Object.freeze(t3)), nn(t3, c3, s3, o3, e3, r3, h3, i3);
22673}
22674function nn(t3, e3, n3, r3, i3, s3, o3, a3) {
22675  let c3 = e3;
22676  return 1 === s3 || 4 === s3 && (2 & e3 || !(16 & e3) && 32 & r3) ? on(e3) || ((e3 |= !t3.length || o3 && !(4096 & e3) || 32 & r3 && !(4096 & e3 || 16 & e3) ? 2 : 256) !== c3 && rt(t3, e3), Object.freeze(t3)) : (2 === s3 && on(e3) && (t3 = Vt(t3), c3 = 0, e3 = An(e3, r3), r3 = Qe(n3, r3, i3, t3)), on(e3) || (a3 || (e3 |= 16), e3 !== c3 && rt(t3, e3))), 2 & e3 || !(4096 & e3 || 16 & e3) || ze(n3, r3), t3;
22677}
22678function rn(t3, e3, n3) {
22679  return t3 = Je(t3, e3, n3), Array.isArray(t3) ? t3 : tt;
22680}
22681function sn(t3, e3) {
22682  return 2 & e3 && (t3 |= 2), 1 | t3;
22683}
22684function on(t3) {
22685  return !!(2 & t3) && !!(4 & t3) || !!(256 & t3);
22686}
22687function an(t3) {
22688  return ht(t3, true);
22689}
22690function cn(t3) {
22691  t3 = Vt(t3);
22692  for (let e3 = 0; e3 < t3.length; e3++) {
22693    const n3 = t3[e3] = Vt(t3[e3]);
22694    Array.isArray(n3[1]) && (n3[1] = it(n3[1]));
22695  }
22696  return st(t3);
22697}
22698function hn(t3, e3, n3, r3) {
22699  We(t3), Qe(t3 = t3.v, 0 | t3[Q], e3, ("0" === r3 ? 0 === Number(n3) : n3 === r3) ? void 0 : n3);
22700}
22701function un(t3, e3, n3) {
22702  if (2 & e3) throw Error();
22703  const r3 = pt(e3);
22704  let i3 = rn(t3, n3, r3), s3 = i3 === tt ? 7 : 0 | i3[Q], o3 = sn(s3, e3);
22705  return (2 & o3 || on(o3) || 16 & o3) && (o3 === s3 || on(o3) || rt(i3, o3), i3 = Vt(i3), s3 = 0, o3 = An(o3, e3), Qe(t3, e3, n3, i3, r3)), o3 &= -13, o3 !== s3 && rt(i3, o3), i3;
22706}
22707function ln(t3, e3) {
22708  var n3 = Cs;
22709  return pn(fn(t3 = t3.v), t3, void 0, n3) === e3 ? e3 : -1;
22710}
22711function fn(t3) {
22712  if (B) return t3[X] ?? (t3[X] = /* @__PURE__ */ new Map());
22713  if (X in t3) return t3[X];
22714  const e3 = /* @__PURE__ */ new Map();
22715  return Object.defineProperty(t3, X, { value: e3 }), e3;
22716}
22717function dn(t3, e3, n3, r3, i3) {
22718  const s3 = fn(t3), o3 = pn(s3, t3, e3, n3, i3);
22719  return o3 !== r3 && (o3 && (e3 = Qe(t3, e3, o3, void 0, i3)), s3.set(n3, r3)), e3;
22720}
22721function pn(t3, e3, n3, r3, i3) {
22722  let s3 = t3.get(r3);
22723  if (null != s3) return s3;
22724  s3 = 0;
22725  for (let t4 = 0; t4 < r3.length; t4++) {
22726    const o3 = r3[t4];
22727    null != Je(e3, o3, i3) && (0 !== s3 && (n3 = Qe(e3, n3, s3, void 0, i3)), s3 = o3);
22728  }
22729  return t3.set(r3, s3), s3;
22730}
22731function gn(t3, e3, n3) {
22732  let r3 = 0 | t3[Q];
22733  const i3 = pt(r3), s3 = Je(t3, n3, i3);
22734  let o3;
22735  if (null != s3 && s3[q] === ot) {
22736    if (!at(s3)) return He(s3), s3.v;
22737    o3 = s3.v;
22738  } else Array.isArray(s3) && (o3 = s3);
22739  if (o3) {
22740    const t4 = 0 | o3[Q];
22741    2 & t4 && (o3 = Ve(o3, t4));
22742  }
22743  return o3 = Ne(o3, e3), o3 !== s3 && Qe(t3, r3, n3, o3, i3), o3;
22744}
22745function mn(t3, e3, n3, r3, i3) {
22746  let s3 = false;
22747  if (null != (r3 = Je(t3, r3, i3, ((t4) => {
22748    const r4 = fe(t4, n3, false, e3);
22749    return s3 = r4 !== t4 && null != r4, r4;
22750  })))) return s3 && !at(r3) && ze(t3, e3), r3;
22751}
22752function yn(t3, e3, n3, r3) {
22753  let i3 = t3.v, s3 = 0 | i3[Q];
22754  if (null == (e3 = mn(i3, s3, e3, n3, r3))) return e3;
22755  if (s3 = 0 | i3[Q], !at(t3, s3)) {
22756    const o3 = Xe(e3);
22757    o3 !== e3 && (He(t3) && (i3 = t3.v, s3 = 0 | i3[Q]), s3 = Qe(i3, s3, n3, e3 = o3, r3), ze(i3, s3));
22758  }
22759  return e3;
22760}
22761function _n(t3, e3, n3, r3, i3, s3, o3, a3) {
22762  var c3 = at(t3, n3);
22763  s3 = c3 ? 1 : s3, o3 = !!o3 || 3 === s3, c3 = a3 && !c3, (2 === s3 || c3) && He(t3) && (n3 = 0 | (e3 = t3.v)[Q]);
22764  var h3 = (t3 = rn(e3, i3)) === tt ? 7 : 0 | t3[Q], u3 = sn(h3, n3);
22765  if (a3 = !(4 & u3)) {
22766    var l3 = t3, f3 = n3;
22767    const e4 = !!(2 & u3);
22768    e4 && (f3 |= 2);
22769    let i4 = !e4, s4 = true, o4 = 0, a4 = 0;
22770    for (; o4 < l3.length; o4++) {
22771      const t4 = fe(l3[o4], r3, false, f3);
22772      if (t4 instanceof r3) {
22773        if (!e4) {
22774          const e5 = at(t4);
22775          i4 &&= !e5, s4 &&= e5;
22776        }
22777        l3[a4++] = t4;
22778      }
22779    }
22780    a4 < o4 && (l3.length = a4), u3 |= 4, u3 = s4 ? -4097 & u3 : 4096 | u3, u3 = i4 ? 8 | u3 : -9 & u3;
22781  }
22782  if (u3 !== h3 && (rt(t3, u3), 2 & u3 && Object.freeze(t3)), c3 && !(8 & u3 || !t3.length && (1 === s3 || 4 === s3 && (2 & u3 || !(16 & u3) && 32 & n3)))) {
22783    for (on(u3) && (t3 = Vt(t3), u3 = An(u3, n3), n3 = Qe(e3, n3, i3, t3)), r3 = t3, c3 = u3, h3 = 0; h3 < r3.length; h3++) (l3 = r3[h3]) !== (u3 = Xe(l3)) && (r3[h3] = u3);
22784    c3 |= 8, rt(t3, u3 = c3 = r3.length ? 4096 | c3 : -4097 & c3);
22785  }
22786  return nn(t3, u3, e3, n3, i3, s3, a3, o3);
22787}
22788function vn(t3, e3, n3) {
22789  const r3 = t3.v;
22790  return _n(t3, r3, 0 | r3[Q], e3, n3, tn(), false, true);
22791}
22792function En(t3) {
22793  return null == t3 && (t3 = void 0), t3;
22794}
22795function wn(t3, e3, n3, r3, i3) {
22796  return Ze(t3, n3, r3 = En(r3), i3), r3 && !at(r3) && ze(t3.v), t3;
22797}
22798function Tn(t3, e3, n3, r3) {
22799  t: {
22800    var i3 = r3 = En(r3);
22801    We(t3);
22802    const s3 = t3.v;
22803    let o3 = 0 | s3[Q];
22804    if (null == i3) {
22805      const t4 = fn(s3);
22806      if (pn(t4, s3, o3, n3) !== e3) break t;
22807      t4.set(n3, 0);
22808    } else o3 = dn(s3, o3, n3, e3);
22809    Qe(s3, o3, e3, i3);
22810  }
22811  r3 && !at(r3) && ze(t3.v);
22812}
22813function An(t3, e3) {
22814  return -273 & (2 & e3 ? 2 | t3 : -3 & t3);
22815}
22816function bn(t3, e3, n3, r3) {
22817  var i3 = r3;
22818  We(t3), t3 = _n(t3, r3 = t3.v, 0 | r3[Q], n3, e3, 2, true), i3 = null != i3 ? i3 : new n3(), t3.push(i3), e3 = n3 = t3 === tt ? 7 : 0 | t3[Q], (i3 = at(i3)) ? (n3 &= -9, 1 === t3.length && (n3 &= -4097)) : n3 |= 4096, n3 !== e3 && rt(t3, n3), i3 || ze(r3);
22819}
22820function kn(t3, e3, n3) {
22821  return ee($e(t3, e3, void 0, n3));
22822}
22823function Sn(t3, e3) {
22824  return $e(t3, e3, void 0, void 0, $t) ?? 0;
22825}
22826function xn(t3, e3, n3) {
22827  if (null != n3) {
22828    if ("number" != typeof n3) throw N("int32");
22829    if (!zt(n3)) throw N("int32");
22830    n3 |= 0;
22831  }
22832  Ze(t3, e3, n3);
22833}
22834function Ln(t3, e3, n3) {
22835  Ze(t3, e3, qt(n3));
22836}
22837function Rn(t3, e3, n3) {
22838  hn(t3, e3, ue(n3), "");
22839}
22840function In(t3, e3, n3) {
22841  {
22842    We(t3);
22843    const o3 = t3.v;
22844    let a3 = 0 | o3[Q];
22845    if (null == n3) Qe(o3, a3, e3);
22846    else {
22847      var r3 = t3 = n3 === tt ? 7 : 0 | n3[Q], i3 = on(t3), s3 = i3 || Object.isFrozen(n3);
22848      for (i3 || (t3 = 0), s3 || (n3 = Vt(n3), r3 = 0, t3 = An(t3, a3), s3 = false), t3 |= 5, t3 |= (4 & t3 ? 512 & t3 ? 512 : 1024 & t3 ? 1024 : 0 : void 0) ?? 1024, i3 = 0; i3 < n3.length; i3++) {
22849        const e4 = n3[i3], o4 = he(e4);
22850        Object.is(e4, o4) || (s3 && (n3 = Vt(n3), r3 = 0, t3 = An(t3, a3), s3 = false), n3[i3] = o4);
22851      }
22852      t3 !== r3 && (s3 && (n3 = Vt(n3), t3 = An(t3, a3)), rt(n3, t3)), Qe(o3, a3, e3, n3);
22853    }
22854  }
22855}
22856function Fn(t3, e3, n3) {
22857  We(t3), en(t3, e3, le, 2, true).push(he(n3));
22858}
22859function Pn(t3, e3) {
22860  if ("string" == typeof t3) return new Mn(S(t3), e3);
22861  if (Array.isArray(t3)) return new Mn(new Uint8Array(t3), e3);
22862  if (t3.constructor === Uint8Array) return new Mn(t3, false);
22863  if (t3.constructor === ArrayBuffer) return t3 = new Uint8Array(t3), new Mn(t3, false);
22864  if (t3.constructor === F) return e3 = I(t3) || new Uint8Array(0), new Mn(e3, true, t3);
22865  if (t3 instanceof Uint8Array) return t3 = t3.constructor === Uint8Array ? t3 : new Uint8Array(t3.buffer, t3.byteOffset, t3.byteLength), new Mn(t3, false);
22866  throw Error();
22867}
22868function Cn(t3, e3) {
22869  let n3, r3 = 0, i3 = 0, s3 = 0;
22870  const o3 = t3.h;
22871  let a3 = t3.g;
22872  do {
22873    n3 = o3[a3++], r3 |= (127 & n3) << s3, s3 += 7;
22874  } while (s3 < 32 && 128 & n3);
22875  if (s3 > 32) for (i3 |= (127 & n3) >> 4, s3 = 3; s3 < 32 && 128 & n3; s3 += 7) n3 = o3[a3++], i3 |= (127 & n3) << s3;
22876  if (Gn(t3, a3), !(128 & n3)) return e3(r3 >>> 0, i3 >>> 0);
22877  throw Error();
22878}
22879function On(t3) {
22880  let e3 = 0, n3 = t3.g;
22881  const r3 = n3 + 10, i3 = t3.h;
22882  for (; n3 < r3; ) {
22883    const r4 = i3[n3++];
22884    if (e3 |= r4, 0 == (128 & r4)) return Gn(t3, n3), !!(127 & e3);
22885  }
22886  throw Error();
22887}
22888function Nn(t3) {
22889  const e3 = t3.h;
22890  let n3 = t3.g, r3 = e3[n3++], i3 = 127 & r3;
22891  if (128 & r3 && (r3 = e3[n3++], i3 |= (127 & r3) << 7, 128 & r3 && (r3 = e3[n3++], i3 |= (127 & r3) << 14, 128 & r3 && (r3 = e3[n3++], i3 |= (127 & r3) << 21, 128 & r3 && (r3 = e3[n3++], i3 |= r3 << 28, 128 & r3 && 128 & e3[n3++] && 128 & e3[n3++] && 128 & e3[n3++] && 128 & e3[n3++] && 128 & e3[n3++]))))) throw Error();
22892  return Gn(t3, n3), i3;
22893}
22894function Un(t3) {
22895  return Nn(t3) >>> 0;
22896}
22897function Dn(t3) {
22898  var e3 = t3.h;
22899  const n3 = t3.g;
22900  var r3 = e3[n3], i3 = e3[n3 + 1];
22901  const s3 = e3[n3 + 2];
22902  return e3 = e3[n3 + 3], Gn(t3, t3.g + 4), t3 = 2 * ((i3 = (r3 << 0 | i3 << 8 | s3 << 16 | e3 << 24) >>> 0) >> 31) + 1, r3 = i3 >>> 23 & 255, i3 &= 8388607, 255 == r3 ? i3 ? NaN : t3 * (1 / 0) : 0 == r3 ? 1401298464324817e-60 * t3 * i3 : t3 * Math.pow(2, r3 - 150) * (i3 + 8388608);
22903}
22904function Bn(t3) {
22905  return Nn(t3);
22906}
22907function Gn(t3, e3) {
22908  if (t3.g = e3, e3 > t3.l) throw Error();
22909}
22910function jn(t3, e3) {
22911  if (e3 < 0) throw Error();
22912  const n3 = t3.g;
22913  if ((e3 = n3 + e3) > t3.l) throw Error();
22914  return t3.g = e3, n3;
22915}
22916function Vn(t3, e3) {
22917  if (0 == e3) return R();
22918  var n3 = jn(t3, e3);
22919  return t3.Y && t3.j ? n3 = t3.h.subarray(n3, n3 + e3) : (t3 = t3.h, n3 = n3 === (e3 = n3 + e3) ? new Uint8Array(0) : xt ? t3.slice(n3, e3) : new Uint8Array(t3.subarray(n3, e3))), 0 == n3.length ? R() : new F(n3, L);
22920}
22921function Hn(t3, e3, n3, r3) {
22922  if (Qn.length) {
22923    const i3 = Qn.pop();
22924    return i3.o(r3), i3.g.init(t3, e3, n3, r3), i3;
22925  }
22926  return new Zn(t3, e3, n3, r3);
22927}
22928function Wn(t3) {
22929  t3.g.clear(), t3.l = -1, t3.h = -1, Qn.length < 100 && Qn.push(t3);
22930}
22931function zn(t3) {
22932  var e3 = t3.g;
22933  if (e3.g == e3.l) return false;
22934  t3.m = t3.g.g;
22935  var n3 = Un(t3.g);
22936  if (e3 = n3 >>> 3, !((n3 &= 7) >= 0 && n3 <= 5)) throw Error();
22937  if (e3 < 1) throw Error();
22938  return t3.l = e3, t3.h = n3, true;
22939}
22940function Kn(t3) {
22941  switch (t3.h) {
22942    case 0:
22943      0 != t3.h ? Kn(t3) : On(t3.g);
22944      break;
22945    case 1:
22946      Gn(t3 = t3.g, t3.g + 8);
22947      break;
22948    case 2:
22949      if (2 != t3.h) Kn(t3);
22950      else {
22951        var e3 = Un(t3.g);
22952        Gn(t3 = t3.g, t3.g + e3);
22953      }
22954      break;
22955    case 5:
22956      Gn(t3 = t3.g, t3.g + 4);
22957      break;
22958    case 3:
22959      for (e3 = t3.l; ; ) {
22960        if (!zn(t3)) throw Error();
22961        if (4 == t3.h) {
22962          if (t3.l != e3) throw Error();
22963          break;
22964        }
22965        Kn(t3);
22966      }
22967      break;
22968    default:
22969      throw Error();
22970  }
22971}
22972function Yn(t3, e3, n3) {
22973  const r3 = t3.g.l;
22974  var i3 = Un(t3.g);
22975  let s3 = (i3 = t3.g.g + i3) - r3;
22976  if (s3 <= 0 && (t3.g.l = i3, n3(e3, t3, void 0, void 0, void 0), s3 = i3 - t3.g.g), s3) throw Error();
22977  return t3.g.g = i3, t3.g.l = r3, e3;
22978}
22979function qn(t3) {
22980  var e3 = Un(t3.g), a3 = jn(t3 = t3.g, e3);
22981  if (t3 = t3.h, o) {
22982    var c3, h3 = t3;
22983    (c3 = s) || (c3 = s = new TextDecoder("utf-8", { fatal: true })), e3 = a3 + e3, h3 = 0 === a3 && e3 === h3.length ? h3 : h3.subarray(a3, e3);
22984    try {
22985      var u3 = c3.decode(h3);
22986    } catch (t4) {
22987      if (void 0 === i) {
22988        try {
22989          c3.decode(new Uint8Array([128]));
22990        } catch (t5) {
22991        }
22992        try {
22993          c3.decode(new Uint8Array([97])), i = true;
22994        } catch (t5) {
22995          i = false;
22996        }
22997      }
22998      throw !i && (s = void 0), t4;
22999    }
23000  } else {
23001    e3 = (u3 = a3) + e3, a3 = [];
23002    let i3, s3 = null;
23003    for (; u3 < e3; ) {
23004      var l3 = t3[u3++];
23005      l3 < 128 ? a3.push(l3) : l3 < 224 ? u3 >= e3 ? n() : (i3 = t3[u3++], l3 < 194 || 128 != (192 & i3) ? (u3--, n()) : a3.push((31 & l3) << 6 | 63 & i3)) : l3 < 240 ? u3 >= e3 - 1 ? n() : (i3 = t3[u3++], 128 != (192 & i3) || 224 === l3 && i3 < 160 || 237 === l3 && i3 >= 160 || 128 != (192 & (c3 = t3[u3++])) ? (u3--, n()) : a3.push((15 & l3) << 12 | (63 & i3) << 6 | 63 & c3)) : l3 <= 244 ? u3 >= e3 - 2 ? n() : (i3 = t3[u3++], 128 != (192 & i3) || i3 - 144 + (l3 << 28) >> 30 != 0 || 128 != (192 & (c3 = t3[u3++])) || 128 != (192 & (h3 = t3[u3++])) ? (u3--, n()) : (l3 = (7 & l3) << 18 | (63 & i3) << 12 | (63 & c3) << 6 | 63 & h3, l3 -= 65536, a3.push(55296 + (l3 >> 10 & 1023), 56320 + (1023 & l3)))) : n(), a3.length >= 8192 && (s3 = r(s3, a3), a3.length = 0);
23006    }
23007    u3 = r(s3, a3);
23008  }
23009  return u3;
23010}
23011function $n(t3) {
23012  const e3 = Un(t3.g);
23013  return Vn(t3.g, e3);
23014}
23015function Jn(t3, e3, n3) {
23016  var r3 = Un(t3.g);
23017  for (r3 = t3.g.g + r3; t3.g.g < r3; ) n3.push(e3(t3.g));
23018}
23019function tr(t3) {
23020  return t3 ? /^\d+$/.test(t3) ? (Gt(t3), new er(Rt, It)) : null : nr ||= new er(0, 0);
23021}
23022function rr(t3) {
23023  return t3 ? /^-?\d+$/.test(t3) ? (Gt(t3), new ir(Rt, It)) : null : sr ||= new ir(0, 0);
23024}
23025function or(t3, e3, n3) {
23026  for (; n3 > 0 || e3 > 127; ) t3.g.push(127 & e3 | 128), e3 = (e3 >>> 7 | n3 << 25) >>> 0, n3 >>>= 7;
23027  t3.g.push(e3);
23028}
23029function ar(t3, e3) {
23030  for (; e3 > 127; ) t3.g.push(127 & e3 | 128), e3 >>>= 7;
23031  t3.g.push(e3);
23032}
23033function cr(t3, e3) {
23034  if (e3 >= 0) ar(t3, e3);
23035  else {
23036    for (let n3 = 0; n3 < 9; n3++) t3.g.push(127 & e3 | 128), e3 >>= 7;
23037    t3.g.push(1);
23038  }
23039}
23040function hr(t3) {
23041  var e3 = Rt;
23042  t3.g.push(e3 >>> 0 & 255), t3.g.push(e3 >>> 8 & 255), t3.g.push(e3 >>> 16 & 255), t3.g.push(e3 >>> 24 & 255);
23043}
23044function ur(t3, e3) {
23045  0 !== e3.length && (t3.l.push(e3), t3.h += e3.length);
23046}
23047function lr(t3, e3, n3) {
23048  ar(t3.g, 8 * e3 + n3);
23049}
23050function fr(t3, e3) {
23051  return lr(t3, e3, 2), e3 = t3.g.end(), ur(t3, e3), e3.push(t3.h), e3;
23052}
23053function dr(t3, e3) {
23054  var n3 = e3.pop();
23055  for (n3 = t3.h + t3.g.length() - n3; n3 > 127; ) e3.push(127 & n3 | 128), n3 >>>= 7, t3.h++;
23056  e3.push(n3), t3.h++;
23057}
23058function pr(t3, e3, n3) {
23059  lr(t3, e3, 2), ar(t3.g, n3.length), ur(t3, t3.g.end()), ur(t3, n3);
23060}
23061function gr(t3, e3, n3, r3) {
23062  null != n3 && (e3 = fr(t3, e3), r3(n3, t3), dr(t3, e3));
23063}
23064function mr() {
23065  const t3 = class {
23066    constructor() {
23067      throw Error();
23068    }
23069  };
23070  return Object.setPrototypeOf(t3, t3.prototype), t3;
23071}
23072function xr(t3, e3, n3) {
23073  var r3 = t3.v;
23074  H && H in r3 && (r3 = r3[H]) && delete r3[e3.g], e3.h ? e3.j(t3, e3.h, e3.g, n3, e3.l) : e3.j(t3, e3.g, n3, e3.l);
23075}
23076function Ir(t3, e3) {
23077  return new Rr(t3, e3, yr);
23078}
23079function Fr(t3, e3, n3, r3, i3) {
23080  gr(t3, n3, Xr(e3, r3), i3);
23081}
23082function jr(t3, e3, n3, r3) {
23083  var i3 = r3[t3];
23084  if (i3) return i3;
23085  (i3 = {}).qa = r3, i3.T = (function(t4) {
23086    switch (typeof t4) {
23087      case "boolean":
23088        return Pe ||= [0, void 0, true];
23089      case "number":
23090        return t4 > 0 ? void 0 : 0 === t4 ? Ce ||= [0, void 0] : [-t4, void 0];
23091      case "string":
23092        return [0, t4];
23093      case "object":
23094        return t4;
23095    }
23096  })(r3[0]);
23097  var s3 = r3[1];
23098  let o3 = 1;
23099  s3 && s3.constructor === Object && (i3.ba = s3, "function" == typeof (s3 = r3[++o3]) && (i3.ma = true, Br ??= s3, Gr ??= r3[o3 + 1], s3 = r3[o3 += 2]));
23100  const a3 = {};
23101  for (; s3 && Array.isArray(s3) && s3.length && "number" == typeof s3[0] && s3[0] > 0; ) {
23102    for (var c3 = 0; c3 < s3.length; c3++) a3[s3[c3]] = s3;
23103    s3 = r3[++o3];
23104  }
23105  for (c3 = 1; void 0 !== s3; ) {
23106    let t4;
23107    "number" == typeof s3 && (c3 += s3, s3 = r3[++o3]);
23108    var h3 = void 0;
23109    if (s3 instanceof Rr ? t4 = s3 : (t4 = Mr, o3--), t4?.l) {
23110      s3 = r3[++o3], h3 = r3;
23111      var u3 = o3;
23112      "function" == typeof s3 && (s3 = s3(), h3[u3] = s3), h3 = s3;
23113    }
23114    for (u3 = c3 + 1, "number" == typeof (s3 = r3[++o3]) && s3 < 0 && (u3 -= s3, s3 = r3[++o3]); c3 < u3; c3++) {
23115      const r4 = a3[c3];
23116      h3 ? n3(i3, c3, t4, h3, r4) : e3(i3, c3, t4, r4);
23117    }
23118  }
23119  return r3[t3] = i3;
23120}
23121function Vr(t3) {
23122  return Array.isArray(t3) ? t3[0] instanceof Rr ? t3 : [Pr, t3] : [t3, void 0];
23123}
23124function Xr(t3, e3) {
23125  return t3 instanceof Lr ? t3.v : Array.isArray(t3) ? Ne(t3, e3) : void 0;
23126}
23127function Hr(t3, e3, n3, r3) {
23128  const i3 = n3.g;
23129  t3[e3] = r3 ? (t4, e4, n4) => i3(t4, e4, n4, r3) : i3;
23130}
23131function Wr(t3, e3, n3, r3, i3) {
23132  const s3 = n3.g;
23133  let o3, a3;
23134  t3[e3] = (t4, e4, n4) => s3(t4, e4, n4, a3 ||= jr(Or, Hr, Wr, r3).T, o3 ||= zr(r3), i3);
23135}
23136function zr(t3) {
23137  let e3 = t3[Nr];
23138  if (null != e3) return e3;
23139  const n3 = jr(Or, Hr, Wr, t3);
23140  return e3 = n3.ma ? (t4, e4) => Br(t4, e4, n3) : (t4, e4) => {
23141    for (; zn(e4) && 4 != e4.h; ) {
23142      var r3 = e4.l, i3 = n3[r3];
23143      if (null == i3) {
23144        var s3 = n3.ba;
23145        s3 && (s3 = s3[r3]) && (null != (s3 = Yr(s3)) && (i3 = n3[r3] = s3));
23146      }
23147      if (null == i3 || !i3(e4, t4, r3)) {
23148        if (i3 = (s3 = e4).m, Kn(s3), s3.ha) var o3 = void 0;
23149        else o3 = s3.g.g - i3, s3.g.g = i3, o3 = Vn(s3.g, o3);
23150        i3 = void 0, s3 = t4, o3 && ((i3 = s3[H] ?? (s3[H] = new xe()))[r3] ?? (i3[r3] = [])).push(o3);
23151      }
23152    }
23153    return (t4 = ke(t4)) && (t4.da = n3.qa[Dr]), true;
23154  }, t3[Nr] = e3, t3[Dr] = Kr.bind(t3), e3;
23155}
23156function Kr(t3, e3, n3, r3) {
23157  var i3 = this[Or];
23158  const s3 = this[Nr], o3 = Ne(void 0, i3.T), a3 = ke(t3);
23159  if (a3) {
23160    var c3 = false, h3 = i3.ba;
23161    if (h3) {
23162      if (i3 = (e4, n4, i4) => {
23163        if (0 !== i4.length) if (h3[n4]) for (const t4 of i4) {
23164          e4 = Hn(t4);
23165          try {
23166            c3 = true, s3(o3, e4);
23167          } finally {
23168            Wn(e4);
23169          }
23170        }
23171        else r3?.(t3, n4, i4);
23172      }, null == e3) Se(a3, i3);
23173      else if (null != a3) {
23174        const t4 = a3[e3];
23175        t4 && i3(a3, e3, t4);
23176      }
23177      if (c3) {
23178        let r4 = 0 | t3[Q];
23179        if (2 & r4 && 2048 & r4 && !n3?.Ka) throw Error();
23180        const i4 = pt(r4), s4 = (e4, s5) => {
23181          if (null != Je(t3, e4, i4)) {
23182            if (1 === n3?.Qa) return;
23183            throw Error();
23184          }
23185          null != s5 && (r4 = Qe(t3, r4, e4, s5, i4)), delete a3[e4];
23186        };
23187        null == e3 ? ft(o3, 0 | o3[Q], ((t4, e4) => {
23188          s4(t4, e4);
23189        })) : s4(e3, Je(o3, e3, i4));
23190      }
23191    }
23192  }
23193}
23194function Yr(t3) {
23195  const e3 = (t3 = Vr(t3))[0].g;
23196  if (t3 = t3[1]) {
23197    const n3 = zr(t3), r3 = jr(Or, Hr, Wr, t3).T;
23198    return (t4, i3, s3) => e3(t4, i3, s3, r3, n3);
23199  }
23200  return e3;
23201}
23202function qr(t3, e3, n3) {
23203  t3[e3] = n3.h;
23204}
23205function $r(t3, e3, n3, r3) {
23206  let i3, s3;
23207  const o3 = n3.h;
23208  t3[e3] = (t4, e4, n4) => o3(t4, e4, n4, s3 ||= jr(Cr, qr, $r, r3).T, i3 ||= Jr(r3));
23209}
23210function Jr(t3) {
23211  let e3 = t3[Ur];
23212  if (!e3) {
23213    const n3 = jr(Cr, qr, $r, t3);
23214    e3 = (t4, e4) => Zr(t4, e4, n3), t3[Ur] = e3;
23215  }
23216  return e3;
23217}
23218function Zr(t3, e3, n3) {
23219  ft(t3, 0 | t3[Q], ((t4, r3) => {
23220    if (null != r3) {
23221      var i3 = (function(t5, e4) {
23222        var n4 = t5[e4];
23223        if (n4) return n4;
23224        if ((n4 = t5.ba) && (n4 = n4[e4])) {
23225          var r4 = (n4 = Vr(n4))[0].h;
23226          if (n4 = n4[1]) {
23227            const e5 = Jr(n4), i4 = jr(Cr, qr, $r, n4).T;
23228            n4 = t5.ma ? Gr(i4, e5) : (t6, n5, s3) => r4(t6, n5, s3, i4, e5);
23229          } else n4 = r4;
23230          return t5[e4] = n4;
23231        }
23232      })(n3, t4);
23233      i3 ? i3(e3, r3, t4) : t4 < 500 || U(K, 3);
23234    }
23235  })), (t3 = ke(t3)) && Se(t3, ((t4, n4, r3) => {
23236    for (ur(e3, e3.g.end()), t4 = 0; t4 < r3.length; t4++) ur(e3, I(r3[t4]) || new Uint8Array(0));
23237  }));
23238}
23239function ti(t3, e3) {
23240  if (Array.isArray(e3)) {
23241    var n3 = 0 | e3[Q];
23242    if (4 & n3) return e3;
23243    for (var r3 = 0, i3 = 0; r3 < e3.length; r3++) {
23244      const n4 = t3(e3[r3]);
23245      null != n4 && (e3[i3++] = n4);
23246    }
23247    return i3 < r3 && (e3.length = i3), (t3 = -1537 & (5 | n3)) !== n3 && rt(e3, t3), 2 & t3 && Object.freeze(e3), e3;
23248  }
23249}
23250function ei(t3, e3, n3) {
23251  return new Rr(t3, e3, n3);
23252}
23253function ni(t3, e3, n3) {
23254  return new Rr(t3, e3, n3);
23255}
23256function ri(t3, e3, n3) {
23257  Qe(t3, 0 | t3[Q], e3, n3, pt(0 | t3[Q]));
23258}
23259function si(t3, e3, n3) {
23260  null != (e3 = $t(e3)) && (lr(t3, n3, 5), t3 = t3.g, Pt(e3), hr(t3));
23261}
23262function oi(t3, e3, n3) {
23263  if (e3 = (function(t4) {
23264    if (null == t4) return t4;
23265    const e4 = typeof t4;
23266    if ("bigint" === e4) return String(Xt(64, t4));
23267    if (te(t4)) {
23268      if ("string" === e4) return se(t4);
23269      if ("number" === e4) return ie(t4);
23270    }
23271  })(e3), null != e3) {
23272    if ("string" == typeof e3) rr(e3);
23273    if (null != e3) switch (lr(t3, n3, 0), typeof e3) {
23274      case "number":
23275        t3 = t3.g, Mt(e3), or(t3, Rt, It);
23276        break;
23277      case "bigint":
23278        n3 = BigInt.asUintN(64, e3), n3 = new ir(Number(n3 & BigInt(4294967295)), Number(n3 >> BigInt(32))), or(t3.g, n3.h, n3.g);
23279        break;
23280      default:
23281        n3 = rr(e3), or(t3.g, n3.h, n3.g);
23282    }
23283  }
23284}
23285function ai(t3, e3, n3) {
23286  null != (e3 = ee(e3)) && null != e3 && (lr(t3, n3, 0), cr(t3.g, e3));
23287}
23288function ci(t3, e3, n3) {
23289  null != (e3 = Zt(e3)) && (lr(t3, n3, 0), t3.g.g.push(e3 ? 1 : 0));
23290}
23291function hi(t3, e3, n3) {
23292  null != (e3 = le(e3)) && pr(t3, n3, h(e3));
23293}
23294function ui(t3, e3, n3, r3, i3) {
23295  gr(t3, n3, Xr(e3, r3), i3);
23296}
23297function li(t3, e3, n3) {
23298  null != (e3 = null == e3 || "string" == typeof e3 || e3 instanceof F ? e3 : void 0) && pr(t3, n3, Pn(e3, true).buffer);
23299}
23300function fi(t3, e3, n3) {
23301  null != (e3 = ne(e3)) && null != e3 && (lr(t3, n3, 0), ar(t3.g, e3));
23302}
23303function di(t3, e3, n3) {
23304  return (5 === t3.h || 2 === t3.h) && (e3 = un(e3, 0 | e3[Q], n3), 2 == t3.h ? Jn(t3, Dn, e3) : e3.push(Dn(t3.g)), true);
23305}
23306function Ni(t3, e3) {
23307  return new Oi(t3, e3);
23308}
23309function Ui(t3, e3) {
23310  return (n3, r3) => {
23311    {
23312      const s3 = { ea: true };
23313      r3 && Object.assign(s3, r3), n3 = Hn(n3, void 0, void 0, s3);
23314      try {
23315        const r4 = new t3(), s4 = r4.v;
23316        zr(e3)(s4, n3);
23317        var i3 = r4;
23318      } finally {
23319        Wn(n3);
23320      }
23321    }
23322    return i3;
23323  };
23324}
23325function Di(t3) {
23326  return function() {
23327    const e3 = new class {
23328      constructor() {
23329        this.l = [], this.h = 0, this.g = new class {
23330          constructor() {
23331            this.g = [];
23332          }
23333          length() {
23334            return this.g.length;
23335          }
23336          end() {
23337            const t4 = this.g;
23338            return this.g = [], t4;
23339          }
23340        }();
23341      }
23342    }();
23343    Zr(this.v, e3, jr(Cr, qr, $r, t3)), ur(e3, e3.g.end());
23344    const n3 = new Uint8Array(e3.h), r3 = e3.l, i3 = r3.length;
23345    let s3 = 0;
23346    for (let t4 = 0; t4 < i3; t4++) {
23347      const e4 = r3[t4];
23348      n3.set(e4, s3), s3 += e4.length;
23349    }
23350    return e3.l = [n3], n3;
23351  };
23352}
23353function Xi(t3) {
23354  var e3;
23355  return void 0 === ji && (ji = (function() {
23356    let t4 = null;
23357    if (!Vi) return t4;
23358    try {
23359      const e4 = (t5) => t5;
23360      t4 = Vi.createPolicy("goog#html", { createHTML: e4, createScript: e4, createScriptURL: e4 });
23361    } catch (t5) {
23362    }
23363    return t4;
23364  })()), t3 = (e3 = ji) ? e3.createScriptURL(t3) : t3, new class {
23365    constructor(t4) {
23366      this.g = t4;
23367    }
23368    toString() {
23369      return this.g + "";
23370    }
23371  }(t3);
23372}
23373function Hi(t3, ...e3) {
23374  if (0 === e3.length) return Xi(t3[0]);
23375  let n3 = t3[0];
23376  for (let r3 = 0; r3 < e3.length; r3++) n3 += encodeURIComponent(e3[r3]) + t3[r3 + 1];
23377  return Xi(n3);
23378}
23379function ns(t3, e3) {
23380  Fn(t3, 3, e3);
23381}
23382function rs(t3, e3) {
23383  Fn(t3, 4, e3);
23384}
23385function cs(t3, e3) {
23386  bn(t3, 1, is, e3);
23387}
23388function hs(t3, e3) {
23389  Fn(t3, 10, e3);
23390}
23391function us(t3, e3) {
23392  Fn(t3, 15, e3);
23393}
23394function Bo(t3, e3) {
23395  return e3 = e3 ? e3.clone() : new Ns(), void 0 !== t3.displayNamesLocale ? Ze(e3, 1, ue(t3.displayNamesLocale)) : void 0 === t3.displayNamesLocale && Ze(e3, 1), void 0 !== t3.maxResults ? xn(e3, 2, t3.maxResults) : "maxResults" in t3 && Ze(e3, 2), void 0 !== t3.scoreThreshold ? Ln(e3, 3, t3.scoreThreshold) : "scoreThreshold" in t3 && Ze(e3, 3), void 0 !== t3.categoryAllowlist ? In(e3, 4, t3.categoryAllowlist) : "categoryAllowlist" in t3 && Ze(e3, 4), void 0 !== t3.categoryDenylist ? In(e3, 5, t3.categoryDenylist) : "categoryDenylist" in t3 && Ze(e3, 5), e3;
23396}
23397function Go(t3) {
23398  const e3 = Number(t3);
23399  return Number.isSafeInteger(e3) ? e3 : String(t3);
23400}
23401function jo(t3, e3 = -1, n3 = "") {
23402  return { categories: t3.map(((t4) => ({ index: kn(t4, 1) ?? 0 ?? -1, score: Sn(t4, 2) ?? 0, categoryName: le($e(t4, 3)) ?? "" ?? "", displayName: le($e(t4, 4)) ?? "" ?? "" }))), headIndex: e3, headName: n3 };
23403}
23404function Vo(t3) {
23405  const e3 = { classifications: vn(t3, Rs, 1).map(((t4) => jo(yn(t4, gs, 4)?.g() ?? [], kn(t4, 2) ?? 0, le($e(t4, 3)) ?? ""))) };
23406  return null != (function(t4) {
23407    return null == t4 ? t4 : "bigint" == typeof t4 ? (wt(t4) ? t4 = Number(t4) : (t4 = Xt(64, t4), t4 = wt(t4) ? Number(t4) : String(t4)), t4) : te(t4) ? "number" == typeof t4 ? ie(t4) : se(t4) : void 0;
23408  })($e(t3, 2, void 0, void 0, ce)) && (e3.timestampMs = Go($e(t3, 2, void 0, void 0, ce) ?? Ye)), e3;
23409}
23410function Xo(t3) {
23411  var e3 = en(t3, 3, $t, tn()), n3 = en(t3, 2, ee, tn()), r3 = en(t3, 1, le, tn()), i3 = en(t3, 9, le, tn());
23412  const s3 = { categories: [], keypoints: [] };
23413  for (let t4 = 0; t4 < e3.length; t4++) s3.categories.push({ score: e3[t4], index: n3[t4] ?? -1, categoryName: r3[t4] ?? "", displayName: i3[t4] ?? "" });
23414  if ((e3 = yn(t3, Es, 4)?.l()) && (s3.boundingBox = { originX: kn(e3, 1, qe) ?? 0, originY: kn(e3, 2, qe) ?? 0, width: kn(e3, 3, qe) ?? 0, height: kn(e3, 4, qe) ?? 0, angle: 0 }), yn(t3, Es, 4)?.g().length) for (const e4 of yn(t3, Es, 4).g()) s3.keypoints.push({ x: $e(e4, 1, void 0, qe, $t) ?? 0, y: $e(e4, 2, void 0, qe, $t) ?? 0, score: $e(e4, 4, void 0, qe, $t) ?? 0, label: le($e(e4, 3, void 0, qe)) ?? "" });
23415  return s3;
23416}
23417function Ho(t3) {
23418  const e3 = [];
23419  for (const n3 of vn(t3, bs, 1)) e3.push({ x: Sn(n3, 1) ?? 0, y: Sn(n3, 2) ?? 0, z: Sn(n3, 3) ?? 0, visibility: Sn(n3, 4) ?? 0 });
23420  return e3;
23421}
23422function Wo(t3) {
23423  const e3 = [];
23424  for (const n3 of vn(t3, Ts, 1)) e3.push({ x: Sn(n3, 1) ?? 0, y: Sn(n3, 2) ?? 0, z: Sn(n3, 3) ?? 0, visibility: Sn(n3, 4) ?? 0 });
23425  return e3;
23426}
23427function zo(t3) {
23428  return Array.from(t3, ((t4) => t4 > 127 ? t4 - 256 : t4));
23429}
23430function Ko(t3, e3) {
23431  if (t3.length !== e3.length) throw Error(`Cannot compute cosine similarity between embeddings of different sizes (${t3.length} vs. ${e3.length}).`);
23432  let n3 = 0, r3 = 0, i3 = 0;
23433  for (let s3 = 0; s3 < t3.length; s3++) n3 += t3[s3] * e3[s3], r3 += t3[s3] * t3[s3], i3 += e3[s3] * e3[s3];
23434  if (r3 <= 0 || i3 <= 0) throw Error("Cannot compute cosine similarity on embedding with 0 norm.");
23435  return n3 / Math.sqrt(r3 * i3);
23436}
23437async function $o(t3) {
23438  if (t3) return true;
23439  if (void 0 === Yo) try {
23440    await WebAssembly.instantiate(qo), Yo = true;
23441  } catch {
23442    Yo = false;
23443  }
23444  return Yo;
23445}
23446async function Jo(t3, e3, n3) {
23447  return { wasmLoaderPath: `${e3}/${t3}_${n3 = `wasm${n3 ? "_module" : ""}${await $o(n3) ? "" : "_nosimd"}_internal`}.js`, wasmBinaryPath: `${e3}/${t3}_${n3}.wasm` };
23448}
23449function Qo() {
23450  var t3 = navigator;
23451  return "undefined" != typeof OffscreenCanvas && (!(function(t4 = navigator) {
23452    return (t4 = t4.userAgent).includes("Safari") && !t4.includes("Chrome");
23453  })(t3) || !!((t3 = t3.userAgent.match(/Version\/([\d]+).*Safari/)) && t3.length >= 1 && Number(t3[1]) >= 17));
23454}
23455async function ta(t3) {
23456  if ("function" != typeof importScripts) {
23457    const e3 = document.createElement("script");
23458    return e3.src = t3.toString(), e3.crossOrigin = "anonymous", new Promise(((t4, n3) => {
23459      e3.addEventListener("load", (() => {
23460        t4();
23461      }), false), e3.addEventListener("error", ((t5) => {
23462        n3(t5);
23463      }), false), document.body.appendChild(e3);
23464    }));
23465  }
23466  try {
23467    importScripts(t3.toString());
23468  } catch (e3) {
23469    if (!(e3 instanceof TypeError)) throw e3;
23470    await self.import(t3.toString());
23471  }
23472}
23473function ea(t3) {
23474  return void 0 !== t3.videoWidth ? [t3.videoWidth, t3.videoHeight] : void 0 !== t3.naturalWidth ? [t3.naturalWidth, t3.naturalHeight] : void 0 !== t3.displayWidth ? [t3.displayWidth, t3.displayHeight] : [t3.width, t3.height];
23475}
23476function na(t3, e3, n3) {
23477  t3.m || console.error("No wasm multistream support detected: ensure dependency inclusion of :gl_graph_runner_internal_multi_input target"), n3(e3 = t3.i.stringToNewUTF8(e3)), t3.i._free(e3);
23478}
23479function ra(t3, e3, n3) {
23480  if (!t3.i.canvas) throw Error("No OpenGL canvas configured.");
23481  if (n3 ? t3.i._bindTextureToStream(n3) : t3.i._bindTextureToCanvas(), !(n3 = t3.i.canvas.getContext("webgl2") || t3.i.canvas.getContext("webgl"))) throw Error("Failed to obtain WebGL context from the provided canvas. `getContext()` should only be invoked with `webgl` or `webgl2`.");
23482  t3.i.gpuOriginForWebTexturesIsBottomLeft && n3.pixelStorei(n3.UNPACK_FLIP_Y_WEBGL, true), n3.texImage2D(n3.TEXTURE_2D, 0, n3.RGBA, n3.RGBA, n3.UNSIGNED_BYTE, e3), t3.i.gpuOriginForWebTexturesIsBottomLeft && n3.pixelStorei(n3.UNPACK_FLIP_Y_WEBGL, false);
23483  const [r3, i3] = ea(e3);
23484  return !t3.l || r3 === t3.i.canvas.width && i3 === t3.i.canvas.height || (t3.i.canvas.width = r3, t3.i.canvas.height = i3), [r3, i3];
23485}
23486function ia(t3, e3, n3) {
23487  t3.m || console.error("No wasm multistream support detected: ensure dependency inclusion of :gl_graph_runner_internal_multi_input target");
23488  const r3 = new Uint32Array(e3.length);
23489  for (let n4 = 0; n4 < e3.length; n4++) r3[n4] = t3.i.stringToNewUTF8(e3[n4]);
23490  e3 = t3.i._malloc(4 * r3.length), t3.i.HEAPU32.set(r3, e3 >> 2), n3(e3);
23491  for (const e4 of r3) t3.i._free(e4);
23492  t3.i._free(e3);
23493}
23494function sa(t3, e3, n3) {
23495  t3.i.simpleListeners = t3.i.simpleListeners || {}, t3.i.simpleListeners[e3] = n3;
23496}
23497function oa(t3, e3, n3) {
23498  let r3 = [];
23499  t3.i.simpleListeners = t3.i.simpleListeners || {}, t3.i.simpleListeners[e3] = (t4, e4, i3) => {
23500    e4 ? (n3(r3, i3), r3 = []) : r3.push(t4);
23501  };
23502}
23503async function aa(t3, e3, n3, r3) {
23504  return t3 = await (async (t4, e4, n4, r4, i3) => {
23505    if (e4 && await ta(e4), !self.ModuleFactory) throw Error("ModuleFactory not set.");
23506    if (n4 && (await ta(n4), !self.ModuleFactory)) throw Error("ModuleFactory not set.");
23507    return self.Module && i3 && ((e4 = self.Module).locateFile = i3.locateFile, i3.mainScriptUrlOrBlob && (e4.mainScriptUrlOrBlob = i3.mainScriptUrlOrBlob)), i3 = await self.ModuleFactory(self.Module || i3), self.ModuleFactory = self.Module = void 0, new t4(i3, r4);
23508  })(t3, n3.wasmLoaderPath, n3.assetLoaderPath, e3, { locateFile: (t4) => t4.endsWith(".wasm") ? n3.wasmBinaryPath.toString() : n3.assetBinaryPath && t4.endsWith(".data") ? n3.assetBinaryPath.toString() : t4 }), await t3.o(r3), t3;
23509}
23510function ca(t3, e3) {
23511  const n3 = yn(t3.baseOptions, Vs, 1) || new Vs();
23512  "string" == typeof e3 ? (Ze(n3, 2, ue(e3)), Ze(n3, 1)) : e3 instanceof Uint8Array && (Ze(n3, 1, ht(e3, false)), Ze(n3, 2)), wn(t3.baseOptions, 0, 1, n3);
23513}
23514function ha(t3) {
23515  try {
23516    const e3 = t3.H.length;
23517    if (1 === e3) throw Error(t3.H[0].message);
23518    if (e3 > 1) throw Error("Encountered multiple errors: " + t3.H.map(((t4) => t4.message)).join(", "));
23519  } finally {
23520    t3.H = [];
23521  }
23522}
23523function ua(t3, e3) {
23524  t3.C = Math.max(t3.C, e3);
23525}
23526function la(t3, e3) {
23527  t3.B = new is(), Rn(t3.B, 2, "PassThroughCalculator"), ns(t3.B, "free_memory"), rs(t3.B, "free_memory_unused_out"), hs(e3, "free_memory"), cs(e3, t3.B);
23528}
23529function fa(t3, e3) {
23530  ns(t3.B, e3), rs(t3.B, e3 + "_unused_out");
23531}
23532function da(t3) {
23533  t3.g.addBoolToStream(true, "free_memory", t3.C);
23534}
23535function ga(t3, e3) {
23536  if (!t3) throw Error(`Unable to obtain required WebGL resource: ${e3}`);
23537  return t3;
23538}
23539function ya(t3, e3, n3) {
23540  const r3 = t3.g;
23541  if (n3 = ga(r3.createShader(n3), "Failed to create WebGL shader"), r3.shaderSource(n3, e3), r3.compileShader(n3), !r3.getShaderParameter(n3, r3.COMPILE_STATUS)) throw Error(`Could not compile WebGL shader: ${r3.getShaderInfoLog(n3)}`);
23542  return r3.attachShader(t3.h, n3), n3;
23543}
23544function _a(t3, e3) {
23545  const n3 = t3.g, r3 = ga(n3.createVertexArray(), "Failed to create vertex array");
23546  n3.bindVertexArray(r3);
23547  const i3 = ga(n3.createBuffer(), "Failed to create buffer");
23548  n3.bindBuffer(n3.ARRAY_BUFFER, i3), n3.enableVertexAttribArray(t3.O), n3.vertexAttribPointer(t3.O, 2, n3.FLOAT, false, 0, 0), n3.bufferData(n3.ARRAY_BUFFER, new Float32Array([-1, -1, -1, 1, 1, 1, 1, -1]), n3.STATIC_DRAW);
23549  const s3 = ga(n3.createBuffer(), "Failed to create buffer");
23550  return n3.bindBuffer(n3.ARRAY_BUFFER, s3), n3.enableVertexAttribArray(t3.L), n3.vertexAttribPointer(t3.L, 2, n3.FLOAT, false, 0, 0), n3.bufferData(n3.ARRAY_BUFFER, new Float32Array(e3 ? [0, 1, 0, 0, 1, 0, 1, 1] : [0, 0, 0, 1, 1, 1, 1, 0]), n3.STATIC_DRAW), n3.bindBuffer(n3.ARRAY_BUFFER, null), n3.bindVertexArray(null), new ma(n3, r3, i3, s3);
23551}
23552function va(t3, e3) {
23553  if (t3.g) {
23554    if (e3 !== t3.g) throw Error("Cannot change GL context once initialized");
23555  } else t3.g = e3;
23556}
23557function Ea(t3, e3, n3, r3) {
23558  return va(t3, e3), t3.h || (t3.m(), t3.D()), n3 ? (t3.u || (t3.u = _a(t3, true)), n3 = t3.u) : (t3.A || (t3.A = _a(t3, false)), n3 = t3.A), e3.useProgram(t3.h), n3.bind(), t3.l(), t3 = r3(), n3.g.bindVertexArray(null), t3;
23559}
23560function wa(t3, e3, n3) {
23561  return va(t3, e3), t3 = ga(e3.createTexture(), "Failed to create texture"), e3.bindTexture(e3.TEXTURE_2D, t3), e3.texParameteri(e3.TEXTURE_2D, e3.TEXTURE_WRAP_S, e3.CLAMP_TO_EDGE), e3.texParameteri(e3.TEXTURE_2D, e3.TEXTURE_WRAP_T, e3.CLAMP_TO_EDGE), e3.texParameteri(e3.TEXTURE_2D, e3.TEXTURE_MIN_FILTER, n3 ?? e3.LINEAR), e3.texParameteri(e3.TEXTURE_2D, e3.TEXTURE_MAG_FILTER, n3 ?? e3.LINEAR), e3.bindTexture(e3.TEXTURE_2D, null), t3;
23562}
23563function Ta(t3, e3, n3) {
23564  va(t3, e3), t3.B || (t3.B = ga(e3.createFramebuffer(), "Failed to create framebuffe.")), e3.bindFramebuffer(e3.FRAMEBUFFER, t3.B), e3.framebufferTexture2D(e3.FRAMEBUFFER, e3.COLOR_ATTACHMENT0, e3.TEXTURE_2D, n3, 0);
23565}
23566function Aa(t3) {
23567  t3.g?.bindFramebuffer(t3.g.FRAMEBUFFER, null);
23568}
23569function xa(t3, e3) {
23570  switch (e3) {
23571    case 0:
23572      return t3.g.find(((t4) => t4 instanceof Uint8Array));
23573    case 1:
23574      return t3.g.find(((t4) => t4 instanceof Float32Array));
23575    case 2:
23576      return t3.g.find(((t4) => "undefined" != typeof WebGLTexture && t4 instanceof WebGLTexture));
23577    default:
23578      throw Error(`Type is not supported: ${e3}`);
23579  }
23580}
23581function La(t3) {
23582  var e3 = xa(t3, 1);
23583  if (!e3) {
23584    if (e3 = xa(t3, 0)) e3 = new Float32Array(e3).map(((t4) => t4 / 255));
23585    else {
23586      e3 = new Float32Array(t3.width * t3.height);
23587      const r3 = Ia(t3);
23588      var n3 = Ma(t3);
23589      if (Ta(n3, r3, Ra(t3)), "iPad Simulator;iPhone Simulator;iPod Simulator;iPad;iPhone;iPod".split(";").includes(navigator.platform) || navigator.userAgent.includes("Mac") && "document" in self && "ontouchend" in self.document) {
23590        n3 = new Float32Array(t3.width * t3.height * 4), r3.readPixels(0, 0, t3.width, t3.height, r3.RGBA, r3.FLOAT, n3);
23591        for (let t4 = 0, r4 = 0; t4 < e3.length; ++t4, r4 += 4) e3[t4] = n3[r4];
23592      } else r3.readPixels(0, 0, t3.width, t3.height, r3.RED, r3.FLOAT, e3);
23593    }
23594    t3.g.push(e3);
23595  }
23596  return e3;
23597}
23598function Ra(t3) {
23599  let e3 = xa(t3, 2);
23600  if (!e3) {
23601    const n3 = Ia(t3);
23602    e3 = Pa(t3);
23603    const r3 = La(t3), i3 = Fa(t3);
23604    n3.texImage2D(n3.TEXTURE_2D, 0, i3, t3.width, t3.height, 0, n3.RED, n3.FLOAT, r3), Ca(t3);
23605  }
23606  return e3;
23607}
23608function Ia(t3) {
23609  if (!t3.canvas) throw Error("Conversion to different image formats require that a canvas is passed when initializing the image.");
23610  return t3.h || (t3.h = ga(t3.canvas.getContext("webgl2"), "You cannot use a canvas that is already bound to a different type of rendering context.")), t3.h;
23611}
23612function Fa(t3) {
23613  if (t3 = Ia(t3), !Oa) if (t3.getExtension("EXT_color_buffer_float") && t3.getExtension("OES_texture_float_linear") && t3.getExtension("EXT_float_blend")) Oa = t3.R32F;
23614  else {
23615    if (!t3.getExtension("EXT_color_buffer_half_float")) throw Error("GPU does not fully support 4-channel float32 or float16 formats");
23616    Oa = t3.R16F;
23617  }
23618  return Oa;
23619}
23620function Ma(t3) {
23621  return t3.l || (t3.l = new ba()), t3.l;
23622}
23623function Pa(t3) {
23624  const e3 = Ia(t3);
23625  e3.viewport(0, 0, t3.width, t3.height), e3.activeTexture(e3.TEXTURE0);
23626  let n3 = xa(t3, 2);
23627  return n3 || (n3 = wa(Ma(t3), e3, t3.m ? e3.LINEAR : e3.NEAREST), t3.g.push(n3), t3.j = true), e3.bindTexture(e3.TEXTURE_2D, n3), n3;
23628}
23629function Ca(t3) {
23630  t3.h.bindTexture(t3.h.TEXTURE_2D, null);
23631}
23632function Ba(t3) {
23633  return { ...Da, fillColor: (t3 = t3 || {}).color, ...t3 };
23634}
23635function Ga(t3, e3) {
23636  return t3 instanceof Function ? t3(e3) : t3;
23637}
23638function ja(t3, e3, n3) {
23639  return Math.max(Math.min(e3, n3), Math.min(Math.max(e3, n3), t3));
23640}
23641function Va(t3) {
23642  if (!t3.l) throw Error("CPU rendering requested but CanvasRenderingContext2D not provided.");
23643  return t3.l;
23644}
23645function Xa(t3) {
23646  if (!t3.j) throw Error("GPU rendering requested but WebGL2RenderingContext not provided.");
23647  return t3.j;
23648}
23649function Ha(t3, e3, n3) {
23650  if (e3.R()) n3(e3.N());
23651  else {
23652    const r3 = e3.ka() ? e3.ia() : e3.ja();
23653    t3.m = t3.m ?? new ba();
23654    const i3 = Xa(t3);
23655    n3((t3 = new Na([r3], e3.m, false, i3.canvas, t3.m, e3.width, e3.height)).N()), t3.close();
23656  }
23657}
23658function Wa(t3, e3, n3, r3) {
23659  const i3 = (function(t4) {
23660    return t4.g || (t4.g = new ka()), t4.g;
23661  })(t3), s3 = Xa(t3), o3 = Array.isArray(n3) ? new ImageData(new Uint8ClampedArray(n3), 1, 1) : n3;
23662  Ea(i3, s3, true, (() => {
23663    !(function(t5, e4, n4, r4) {
23664      const i4 = t5.g;
23665      if (i4.activeTexture(i4.TEXTURE0), i4.bindTexture(i4.TEXTURE_2D, e4), i4.activeTexture(i4.TEXTURE1), i4.bindTexture(i4.TEXTURE_2D, t5.C), i4.texImage2D(i4.TEXTURE_2D, 0, i4.RGBA, i4.RGBA, i4.UNSIGNED_BYTE, n4), t5.I && (function(t6, e5) {
23666        if (t6 !== e5) return false;
23667        t6 = t6.entries(), e5 = e5.entries();
23668        for (const [r5, i5] of t6) {
23669          t6 = r5;
23670          const s4 = i5;
23671          var n5 = e5.next();
23672          if (n5.done) return false;
23673          const [o4, a3] = n5.value;
23674          if (n5 = a3, t6 !== o4 || s4[0] !== n5[0] || s4[1] !== n5[1] || s4[2] !== n5[2] || s4[3] !== n5[3]) return false;
23675        }
23676        return !!e5.next().done;
23677      })(t5.I, r4)) i4.activeTexture(i4.TEXTURE2), i4.bindTexture(i4.TEXTURE_2D, t5.j);
23678      else {
23679        t5.I = r4;
23680        const e5 = Array(1024).fill(0);
23681        r4.forEach(((t6, n5) => {
23682          if (4 !== t6.length) throw Error(`Color at index ${n5} is not a four-channel value.`);
23683          e5[4 * n5] = t6[0], e5[4 * n5 + 1] = t6[1], e5[4 * n5 + 2] = t6[2], e5[4 * n5 + 3] = t6[3];
23684        })), i4.activeTexture(i4.TEXTURE2), i4.bindTexture(i4.TEXTURE_2D, t5.j), i4.texImage2D(i4.TEXTURE_2D, 0, i4.RGBA, 256, 1, 0, i4.RGBA, i4.UNSIGNED_BYTE, new Uint8Array(e5));
23685      }
23686    })(i3, e3, o3, r3), s3.clearColor(0, 0, 0, 0), s3.clear(s3.COLOR_BUFFER_BIT), s3.drawArrays(s3.TRIANGLE_FAN, 0, 4);
23687    const t4 = i3.g;
23688    t4.activeTexture(t4.TEXTURE0), t4.bindTexture(t4.TEXTURE_2D, null), t4.activeTexture(t4.TEXTURE1), t4.bindTexture(t4.TEXTURE_2D, null), t4.activeTexture(t4.TEXTURE2), t4.bindTexture(t4.TEXTURE_2D, null);
23689  }));
23690}
23691function za(t3, e3, n3, r3) {
23692  const i3 = Xa(t3), s3 = (function(t4) {
23693    return t4.h || (t4.h = new Sa()), t4.h;
23694  })(t3), o3 = Array.isArray(n3) ? new ImageData(new Uint8ClampedArray(n3), 1, 1) : n3, a3 = Array.isArray(r3) ? new ImageData(new Uint8ClampedArray(r3), 1, 1) : r3;
23695  Ea(s3, i3, true, (() => {
23696    var t4 = s3.g;
23697    t4.activeTexture(t4.TEXTURE0), t4.bindTexture(t4.TEXTURE_2D, e3), t4.activeTexture(t4.TEXTURE1), t4.bindTexture(t4.TEXTURE_2D, s3.j), t4.texImage2D(t4.TEXTURE_2D, 0, t4.RGBA, t4.RGBA, t4.UNSIGNED_BYTE, o3), t4.activeTexture(t4.TEXTURE2), t4.bindTexture(t4.TEXTURE_2D, s3.C), t4.texImage2D(t4.TEXTURE_2D, 0, t4.RGBA, t4.RGBA, t4.UNSIGNED_BYTE, a3), i3.clearColor(0, 0, 0, 0), i3.clear(i3.COLOR_BUFFER_BIT), i3.drawArrays(i3.TRIANGLE_FAN, 0, 4), i3.bindTexture(i3.TEXTURE_2D, null), (t4 = s3.g).activeTexture(t4.TEXTURE0), t4.bindTexture(t4.TEXTURE_2D, null), t4.activeTexture(t4.TEXTURE1), t4.bindTexture(t4.TEXTURE_2D, null), t4.activeTexture(t4.TEXTURE2), t4.bindTexture(t4.TEXTURE_2D, null);
23698  }));
23699}
23700function Ya(t3, e3) {
23701  switch (e3) {
23702    case 0:
23703      return t3.g.find(((t4) => t4 instanceof ImageData));
23704    case 1:
23705      return t3.g.find(((t4) => "undefined" != typeof ImageBitmap && t4 instanceof ImageBitmap));
23706    case 2:
23707      return t3.g.find(((t4) => "undefined" != typeof WebGLTexture && t4 instanceof WebGLTexture));
23708    default:
23709      throw Error(`Type is not supported: ${e3}`);
23710  }
23711}
23712function qa(t3) {
23713  var e3 = Ya(t3, 0);
23714  if (!e3) {
23715    e3 = Ja(t3);
23716    const n3 = Za(t3), r3 = new Uint8Array(t3.width * t3.height * 4);
23717    Ta(n3, e3, $a(t3)), e3.readPixels(0, 0, t3.width, t3.height, e3.RGBA, e3.UNSIGNED_BYTE, r3), Aa(n3), e3 = new ImageData(new Uint8ClampedArray(r3.buffer), t3.width, t3.height), t3.g.push(e3);
23718  }
23719  return e3;
23720}
23721function $a(t3) {
23722  let e3 = Ya(t3, 2);
23723  if (!e3) {
23724    const n3 = Ja(t3);
23725    e3 = Qa(t3);
23726    const r3 = Ya(t3, 1) || qa(t3);
23727    n3.texImage2D(n3.TEXTURE_2D, 0, n3.RGBA, n3.RGBA, n3.UNSIGNED_BYTE, r3), tc(t3);
23728  }
23729  return e3;
23730}
23731function Ja(t3) {
23732  if (!t3.canvas) throw Error("Conversion to different image formats require that a canvas is passed when initializing the image.");
23733  return t3.h || (t3.h = ga(t3.canvas.getContext("webgl2"), "You cannot use a canvas that is already bound to a different type of rendering context.")), t3.h;
23734}
23735function Za(t3) {
23736  return t3.l || (t3.l = new ba()), t3.l;
23737}
23738function Qa(t3) {
23739  const e3 = Ja(t3);
23740  e3.viewport(0, 0, t3.width, t3.height), e3.activeTexture(e3.TEXTURE0);
23741  let n3 = Ya(t3, 2);
23742  return n3 || (n3 = wa(Za(t3), e3), t3.g.push(n3), t3.m = true), e3.bindTexture(e3.TEXTURE_2D, n3), n3;
23743}
23744function tc(t3) {
23745  t3.h.bindTexture(t3.h.TEXTURE_2D, null);
23746}
23747function ec(t3) {
23748  const e3 = Ja(t3);
23749  return Ea(Za(t3), e3, true, (() => (function(t4, e4) {
23750    const n3 = t4.canvas;
23751    if (n3.width === t4.width && n3.height === t4.height) return e4();
23752    const r3 = n3.width, i3 = n3.height;
23753    return n3.width = t4.width, n3.height = t4.height, t4 = e4(), n3.width = r3, n3.height = i3, t4;
23754  })(t3, (() => {
23755    if (e3.bindFramebuffer(e3.FRAMEBUFFER, null), e3.clearColor(0, 0, 0, 0), e3.clear(e3.COLOR_BUFFER_BIT), e3.drawArrays(e3.TRIANGLE_FAN, 0, 4), !(t3.canvas instanceof OffscreenCanvas)) throw Error("Conversion to ImageBitmap requires that the MediaPipe Tasks is initialized with an OffscreenCanvas");
23756    return t3.canvas.transferToImageBitmap();
23757  }))));
23758}
23759function ic(...t3) {
23760  return t3.map((([t4, e3]) => ({ start: t4, end: e3 })));
23761}
23762async function cc(t3, e3, n3) {
23763  return (async function(t4, e4, n4, r3) {
23764    return aa(t4, e4, n4, r3);
23765  })(t3, n3.canvas ?? (Qo() ? void 0 : document.createElement("canvas")), e3, n3);
23766}
23767function hc(t3, e3, n3, r3) {
23768  if (t3.U) {
23769    const s3 = new Ls();
23770    if (n3?.regionOfInterest) {
23771      if (!t3.oa) throw Error("This task doesn't support region-of-interest.");
23772      var i3 = n3.regionOfInterest;
23773      if (i3.left >= i3.right || i3.top >= i3.bottom) throw Error("Expected RectF with left < right and top < bottom.");
23774      if (i3.left < 0 || i3.top < 0 || i3.right > 1 || i3.bottom > 1) throw Error("Expected RectF values to be in [0,1].");
23775      Ln(s3, 1, (i3.left + i3.right) / 2), Ln(s3, 2, (i3.top + i3.bottom) / 2), Ln(s3, 4, i3.right - i3.left), Ln(s3, 3, i3.bottom - i3.top);
23776    } else Ln(s3, 1, 0.5), Ln(s3, 2, 0.5), Ln(s3, 4, 1), Ln(s3, 3, 1);
23777    if (n3?.rotationDegrees) {
23778      if (n3?.rotationDegrees % 90 != 0) throw Error("Expected rotation to be a multiple of 90\xB0.");
23779      if (Ln(s3, 5, -Math.PI * n3.rotationDegrees / 180), n3?.rotationDegrees % 180 != 0) {
23780        const [t4, r4] = ea(e3);
23781        n3 = Sn(s3, 3) * r4 / t4, i3 = Sn(s3, 4) * t4 / r4, Ln(s3, 4, n3), Ln(s3, 3, i3);
23782      }
23783    }
23784    t3.g.addProtoToStream(s3.g(), "mediapipe.NormalizedRect", t3.U, r3);
23785  }
23786  t3.g.pa(e3, t3.X, r3 ?? performance.now()), t3.finishProcessing();
23787}
23788function uc(t3, e3, n3) {
23789  if (t3.baseOptions?.g()) throw Error("Task is not initialized with image mode. 'runningMode' must be set to 'IMAGE'.");
23790  hc(t3, e3, n3, t3.C + 1);
23791}
23792function lc(t3, e3, n3, r3) {
23793  if (!t3.baseOptions?.g()) throw Error("Task is not initialized with video mode. 'runningMode' must be set to 'VIDEO'.");
23794  hc(t3, e3, n3, r3);
23795}
23796function fc(t3, e3, n3, r3) {
23797  var i3 = e3.data;
23798  const s3 = e3.width, o3 = s3 * (e3 = e3.height);
23799  if ((i3 instanceof Uint8Array || i3 instanceof Float32Array) && i3.length !== o3) throw Error("Unsupported channel count: " + i3.length / o3);
23800  return t3 = new Na([i3], n3, false, t3.g.i.canvas, t3.P, s3, e3), r3 ? t3.clone() : t3;
23801}
23802function kc(t3) {
23803  t3.j = { faceLandmarks: [], faceBlendshapes: [], facialTransformationMatrixes: [] };
23804}
23805function Lc(t3) {
23806  t3.gestures = [], t3.landmarks = [], t3.worldLandmarks = [], t3.handedness = [];
23807}
23808function Rc(t3) {
23809  return 0 === t3.gestures.length ? { gestures: [], landmarks: [], worldLandmarks: [], handedness: [], handednesses: [] } : { gestures: t3.gestures, landmarks: t3.landmarks, worldLandmarks: t3.worldLandmarks, handedness: t3.handedness, handednesses: t3.handedness };
23810}
23811function Ic(t3, e3 = true) {
23812  const n3 = [];
23813  for (const i3 of t3) {
23814    var r3 = ys(i3);
23815    t3 = [];
23816    for (const n4 of r3.g()) r3 = e3 && null != kn(n4, 1) ? kn(n4, 1) ?? 0 : -1, t3.push({ score: Sn(n4, 2) ?? 0, index: r3, categoryName: le($e(n4, 3)) ?? "" ?? "", displayName: le($e(n4, 4)) ?? "" ?? "" });
23817    n3.push(t3);
23818  }
23819  return n3;
23820}
23821function Mc(t3) {
23822  return { landmarks: t3.landmarks, worldLandmarks: t3.worldLandmarks, handednesses: t3.handedness, handedness: t3.handedness };
23823}
23824function Oc(t3) {
23825  t3.h = { faceLandmarks: [], faceBlendshapes: [], poseLandmarks: [], poseWorldLandmarks: [], poseSegmentationMasks: [], leftHandLandmarks: [], leftHandWorldLandmarks: [], rightHandLandmarks: [], rightHandWorldLandmarks: [] };
23826}
23827function Nc(t3) {
23828  try {
23829    if (!t3.D) return t3.h;
23830    t3.D(t3.h);
23831  } finally {
23832    da(t3);
23833  }
23834}
23835function Uc(t3, e3) {
23836  t3 = ks(t3), e3.push(Ho(t3));
23837}
23838function Vc(t3) {
23839  const e3 = (function(t4) {
23840    return vn(t4, is, 1);
23841  })(t3.ca()).filter(((t4) => (le($e(t4, 1)) ?? "").includes("mediapipe.tasks.TensorsToSegmentationCalculator")));
23842  if (t3.u = [], e3.length > 1) throw Error("The graph has more than one mediapipe.tasks.TensorsToSegmentationCalculator.");
23843  1 === e3.length && (yn(e3[0], Qi, 7)?.j()?.g() ?? /* @__PURE__ */ new Map()).forEach(((e4, n3) => {
23844    t3.u[Number(n3)] = le($e(e4, 1)) ?? "";
23845  }));
23846}
23847function Xc(t3) {
23848  t3.categoryMask = void 0, t3.confidenceMasks = void 0, t3.qualityScores = void 0;
23849}
23850function Hc(t3) {
23851  try {
23852    const e3 = new jc(t3.confidenceMasks, t3.categoryMask, t3.qualityScores);
23853    if (!t3.j) return e3;
23854    t3.j(e3);
23855  } finally {
23856    da(t3);
23857  }
23858}
23859function $c(t3) {
23860  t3.landmarks = [], t3.worldLandmarks = [], t3.segmentationMasks = void 0;
23861}
23862function Jc(t3) {
23863  try {
23864    const e3 = new qc(t3.landmarks, t3.worldLandmarks, t3.segmentationMasks);
23865    if (!t3.u) return e3;
23866    t3.u(e3);
23867  } finally {
23868    da(t3);
23869  }
23870}
23871var t, i, s, o, a, c, l, f, d, g, y, _, w, T, A, b, L, F, M, P, B, j, V, X, H, W, z, K, Y, q, $, J, Z, Q, tt, et, ot, ct, ut, lt, dt, mt, yt, _t, vt, wt, Tt, At, bt, kt, xt, Lt, Rt, It, Xt, Ht, Wt, zt, Kt, Yt, Qt, pe, ge, me, ye, Ee, Ae, xe, Le, Pe, Ce, Ye, qe, Mn, Xn, Zn, Qn, er, nr, ir, sr, yr, _r, vr, Er, wr, Tr, Ar, br, kr, Sr, Lr, Rr, Mr, Pr, Cr, Or, Nr, Ur, Dr, Br, Gr, Qr, ii, pi, gi, mi, yi, _i, vi, Ei, wi, Ti, Ai, bi, ki, Si, xi, Li, Ri, Ii, Fi, Mi, Pi, Ci, Oi, Bi, Gi, ji, Vi, Wi, zi, Ki, Yi, qi, $i, Ji, Zi, Qi, ts, es, is, ss, os, as, ls, fs, ds, ps, gs, ms, ys, _s, vs, Es, ws, Ts, As, bs, ks, Ss, xs, Ls, Rs, Is, Fs, Ms, Ps, Cs, Os, Ns, Us, Ds, Bs, Gs, js, Vs, Xs, Hs, Ws, zs, Ks, Ys, qs, $s, Js, Zs, Qs, to, eo, no, ro, io, so, oo, ao, co, ho, uo, lo, fo, po, go, mo, yo, _o, vo, Eo, wo, To, Ao, bo, ko, So, xo, Lo, Ro, Io, Fo, Mo, Po, Co, Oo, No, Uo, Do, Yo, qo, Zo, pa, ma, ba, ka, Sa, Oa, Na, Ua, Da, Ka, nc, rc, sc, oc, ac, dc, pc, gc, mc, yc, _c, vc, Ec, wc, Tc, Ac, bc, Sc, xc, Fc, Pc, Cc, Dc, Bc, Gc, jc, Wc, zc, Kc, Yc, qc, Zc;
23872var init_vision_bundle = __esm({
23873  "node_modules/@mediapipe/tasks-vision/vision_bundle.mjs"() {
23874    t = "undefined" != typeof self ? self : {};
23875    o = "undefined" != typeof TextDecoder;
23876    c = "undefined" != typeof TextEncoder;
23877    f = e(610401301, false);
23878    d = e(748402147, true);
23879    g = t.navigator;
23880    l = g && g.userAgentData || null, m[" "] = function() {
23881    };
23882    y = {};
23883    _ = null;
23884    w = "undefined" != typeof Uint8Array;
23885    T = !(!(f && l && l.brands.length > 0) && (-1 != p().indexOf("Trident") || -1 != p().indexOf("MSIE"))) && "function" == typeof btoa;
23886    A = /[-_.]/g;
23887    b = { "-": "+", _: "/", ".": "=" };
23888    L = {};
23889    F = class {
23890      h() {
23891        return new Uint8Array(I(this) || 0);
23892      }
23893      constructor(t3, e3) {
23894        if (C(e3), this.g = t3, null != t3 && 0 === t3.length) throw Error("ByteString should be constructed with non-empty values");
23895      }
23896    };
23897    B = "function" == typeof Symbol && "symbol" == typeof /* @__PURE__ */ Symbol();
23898    j = G("jas", void 0, true);
23899    V = G(void 0, "0di");
23900    X = G(void 0, "1oa");
23901    H = G(void 0, /* @__PURE__ */ Symbol());
23902    W = G(void 0, "0ub");
23903    z = G(void 0, "0ubs");
23904    K = G(void 0, "0ubsb");
23905    Y = G(void 0, "0actk");
23906    q = G("m_m", "Pa", true);
23907    $ = G();
23908    J = { Ga: { value: 0, configurable: true, writable: true, enumerable: false } };
23909    Z = Object.defineProperties;
23910    Q = B ? j : "Ga";
23911    et = [];
23912    rt(et, 7), tt = Object.freeze(et);
23913    ot = {};
23914    ct = {};
23915    ut = class {
23916      constructor(t3, e3, n3) {
23917        this.g = t3, this.h = e3, this.l = n3;
23918      }
23919      next() {
23920        const t3 = this.g.next();
23921        return t3.done || (t3.value = this.h.call(this.l, t3.value)), t3;
23922      }
23923      [Symbol.iterator]() {
23924        return this;
23925      }
23926    };
23927    lt = Object.freeze({});
23928    dt = {};
23929    mt = gt(((t3) => "number" == typeof t3));
23930    yt = gt(((t3) => "string" == typeof t3));
23931    _t = gt(((t3) => "boolean" == typeof t3));
23932    vt = "function" == typeof t.BigInt && "bigint" == typeof t.BigInt(0);
23933    wt = gt(((t3) => vt ? t3 >= At && t3 <= kt : "-" === t3[0] ? St(t3, Tt) : St(t3, bt)));
23934    Tt = Number.MIN_SAFE_INTEGER.toString();
23935    At = vt ? BigInt(Number.MIN_SAFE_INTEGER) : void 0;
23936    bt = Number.MAX_SAFE_INTEGER.toString();
23937    kt = vt ? BigInt(Number.MAX_SAFE_INTEGER) : void 0;
23938    xt = "function" == typeof Uint8Array.prototype.slice;
23939    Rt = 0;
23940    It = 0;
23941    Xt = "function" == typeof BigInt ? BigInt.asIntN : void 0;
23942    Ht = "function" == typeof BigInt ? BigInt.asUintN : void 0;
23943    Wt = Number.isSafeInteger;
23944    zt = Number.isFinite;
23945    Kt = Math.trunc;
23946    Yt = Et(0);
23947    Qt = /^-?([1-9][0-9]*|0)(\.[0-9]+)?$/;
23948    pe = {};
23949    ge = (function() {
23950      try {
23951        return m(new class extends Map {
23952          constructor() {
23953            super();
23954          }
23955        }()), false;
23956      } catch {
23957        return true;
23958      }
23959    })();
23960    me = class {
23961      constructor() {
23962        this.g = /* @__PURE__ */ new Map();
23963      }
23964      get(t3) {
23965        return this.g.get(t3);
23966      }
23967      set(t3, e3) {
23968        return this.g.set(t3, e3), this.size = this.g.size, this;
23969      }
23970      delete(t3) {
23971        return t3 = this.g.delete(t3), this.size = this.g.size, t3;
23972      }
23973      clear() {
23974        this.g.clear(), this.size = this.g.size;
23975      }
23976      has(t3) {
23977        return this.g.has(t3);
23978      }
23979      entries() {
23980        return this.g.entries();
23981      }
23982      keys() {
23983        return this.g.keys();
23984      }
23985      values() {
23986        return this.g.values();
23987      }
23988      forEach(t3, e3) {
23989        return this.g.forEach(t3, e3);
23990      }
23991      [Symbol.iterator]() {
23992        return this.entries();
23993      }
23994    };
23995    ye = ge ? (Object.setPrototypeOf(me.prototype, Map.prototype), Object.defineProperties(me.prototype, { size: { value: 0, configurable: true, enumerable: true, writable: true } }), me) : class extends Map {
23996      constructor() {
23997        super();
23998      }
23999    };
24000    Ee = class extends ye {
24001      constructor(t3, e3, n3 = _e, r3 = _e) {
24002        super(), this.J = 0 | t3[Q], this.K = e3, this.S = n3, this.fa = this.K ? we : r3;
24003        for (let i3 = 0; i3 < t3.length; i3++) {
24004          const s3 = t3[i3], o3 = n3(s3[0], false, true);
24005          let a3 = s3[1];
24006          e3 ? void 0 === a3 && (a3 = null) : a3 = r3(s3[1], false, true, void 0, void 0, this.J), super.set(o3, a3);
24007        }
24008      }
24009      V(t3) {
24010        return st(Array.from(super.entries(), t3));
24011      }
24012      clear() {
24013        ve(this), super.clear();
24014      }
24015      delete(t3) {
24016        return ve(this), super.delete(this.S(t3, true, false));
24017      }
24018      entries() {
24019        if (this.K) {
24020          var t3 = super.keys();
24021          t3 = new ut(t3, Te, this);
24022        } else t3 = super.entries();
24023        return t3;
24024      }
24025      values() {
24026        if (this.K) {
24027          var t3 = super.keys();
24028          t3 = new ut(t3, Ee.prototype.get, this);
24029        } else t3 = super.values();
24030        return t3;
24031      }
24032      forEach(t3, e3) {
24033        this.K ? super.forEach(((n3, r3, i3) => {
24034          t3.call(e3, i3.get(r3), r3, i3);
24035        })) : super.forEach(t3, e3);
24036      }
24037      set(t3, e3) {
24038        return ve(this), null == (t3 = this.S(t3, true, false)) ? this : null == e3 ? (super.delete(t3), this) : super.set(t3, this.fa(e3, true, true, this.K, false, this.J));
24039      }
24040      Ma(t3) {
24041        const e3 = this.S(t3[0], false, true);
24042        t3 = t3[1], t3 = this.K ? void 0 === t3 ? null : t3 : this.fa(t3, false, true, void 0, false, this.J), super.set(e3, t3);
24043      }
24044      has(t3) {
24045        return super.has(this.S(t3, false, false));
24046      }
24047      get(t3) {
24048        t3 = this.S(t3, false, false);
24049        const e3 = super.get(t3);
24050        if (void 0 !== e3) {
24051          var n3 = this.K;
24052          return n3 ? ((n3 = this.fa(e3, false, true, n3, this.ra, this.J)) !== e3 && super.set(t3, n3), n3) : e3;
24053        }
24054      }
24055      [Symbol.iterator]() {
24056        return this.entries();
24057      }
24058    };
24059    Ee.prototype.toJSON = void 0;
24060    xe = class {
24061    };
24062    Le = { Ka: true };
24063    Ye = Et(0);
24064    qe = {};
24065    Mn = class {
24066      constructor(t3, e3, n3) {
24067        if (this.buffer = t3, n3 && !e3) throw Error();
24068        this.g = e3;
24069      }
24070    };
24071    Xn = [];
24072    Zn = class {
24073      constructor(t3, e3, n3, r3) {
24074        if (Xn.length) {
24075          const i3 = Xn.pop();
24076          i3.init(t3, e3, n3, r3), t3 = i3;
24077        } else t3 = new class {
24078          constructor(t4, e4, n4, r4) {
24079            this.h = null, this.j = false, this.g = this.l = this.m = 0, this.init(t4, e4, n4, r4);
24080          }
24081          init(t4, e4, n4, { Y: r4 = false, ea: i3 = false } = {}) {
24082            this.Y = r4, this.ea = i3, t4 && (t4 = Pn(t4, this.ea), this.h = t4.buffer, this.j = t4.g, this.m = e4 || 0, this.l = void 0 !== n4 ? this.m + n4 : this.h.length, this.g = this.m);
24083          }
24084          clear() {
24085            this.h = null, this.j = false, this.g = this.l = this.m = 0, this.Y = false;
24086          }
24087        }(t3, e3, n3, r3);
24088        this.g = t3, this.m = this.g.g, this.h = this.l = -1, this.o(r3);
24089      }
24090      o({ ha: t3 = false } = {}) {
24091        this.ha = t3;
24092      }
24093    };
24094    Qn = [];
24095    er = class {
24096      constructor(t3, e3) {
24097        this.h = t3 >>> 0, this.g = e3 >>> 0;
24098      }
24099    };
24100    ir = class {
24101      constructor(t3, e3) {
24102        this.h = t3 >>> 0, this.g = e3 >>> 0;
24103      }
24104    };
24105    yr = mr();
24106    _r = mr();
24107    vr = mr();
24108    Er = mr();
24109    wr = mr();
24110    Tr = mr();
24111    Ar = mr();
24112    br = mr();
24113    kr = mr();
24114    Sr = mr();
24115    Lr = class {
24116      constructor(t3, e3) {
24117        this.v = Ue(t3, e3, void 0, 2048);
24118      }
24119      toJSON() {
24120        return Oe(this);
24121      }
24122      j() {
24123        var t3 = xo, e3 = this.v, n3 = t3.g, r3 = H;
24124        if (B && r3 && null != e3[r3]?.[n3] && U(W, 3), e3 = t3.g, $ && H && void 0 === $ && (r3 = (n3 = this.v)[H]) && (r3 = r3.da)) try {
24125          r3(n3, e3, Le);
24126        } catch (t4) {
24127          u(t4);
24128        }
24129        return t3.h ? t3.m(this, t3.h, t3.g, t3.l) : t3.m(this, t3.g, t3.defaultValue, t3.l);
24130      }
24131      clone() {
24132        const t3 = this.v, e3 = 0 | t3[Q];
24133        return Ke(this, t3, e3) ? Ge(this, t3, true) : new this.constructor(Ve(t3, e3, false));
24134      }
24135    };
24136    Lr.prototype[q] = ot, Lr.prototype.toString = function() {
24137      return this.v.toString();
24138    };
24139    Rr = class {
24140      constructor(t3, e3, n3) {
24141        this.g = t3, this.h = e3, t3 = yr, this.l = !!t3 && n3 === t3 || false;
24142      }
24143    };
24144    Mr = Ir((function(t3, e3, n3, r3, i3) {
24145      return 2 === t3.h && (Yn(t3, gn(e3, r3, n3), i3), true);
24146    }), Fr);
24147    Pr = Ir((function(t3, e3, n3, r3, i3) {
24148      return 2 === t3.h && (Yn(t3, gn(e3, r3, n3), i3), true);
24149    }), Fr);
24150    Cr = /* @__PURE__ */ Symbol();
24151    Or = /* @__PURE__ */ Symbol();
24152    Nr = /* @__PURE__ */ Symbol();
24153    Ur = /* @__PURE__ */ Symbol();
24154    Dr = /* @__PURE__ */ Symbol();
24155    Qr = Et(0);
24156    ii = Ir((function(t3, e3, n3, r3, i3) {
24157      if (2 !== t3.h) return false;
24158      if (t3 = Vt(t3 = Yn(t3, Ne([void 0, void 0], r3), i3)), i3 = pt(r3 = 0 | e3[Q]), 2 & r3) throw Error();
24159      let s3 = Je(e3, n3, i3);
24160      if (s3 instanceof Ee) 0 != (2 & s3.J) ? (s3 = s3.V(), s3.push(t3), Qe(e3, r3, n3, s3, i3)) : s3.Ma(t3);
24161      else if (Array.isArray(s3)) {
24162        var o3 = 0 | s3[Q];
24163        8192 & o3 || rt(s3, o3 |= 8192), 2 & o3 && (s3 = cn(s3), Qe(e3, r3, n3, s3, i3)), s3.push(t3);
24164      } else Qe(e3, r3, n3, st([t3]), i3);
24165      return true;
24166    }), (function(t3, e3, n3, r3, i3) {
24167      if (e3 instanceof Ee) e3.forEach(((e4, s3) => {
24168        gr(t3, n3, Ne([s3, e4], r3), i3);
24169      }));
24170      else if (Array.isArray(e3)) {
24171        for (let s3 = 0; s3 < e3.length; s3++) {
24172          const o3 = e3[s3];
24173          Array.isArray(o3) && gr(t3, n3, Ne(o3, r3), i3);
24174        }
24175        st(e3);
24176      }
24177    }));
24178    pi = ei((function(t3, e3, n3) {
24179      return 5 === t3.h && (ri(e3, n3, Dn(t3.g)), true);
24180    }), si, br);
24181    gi = ni(di, (function(t3, e3, n3) {
24182      if (null != (e3 = ti($t, e3))) for (let o3 = 0; o3 < e3.length; o3++) {
24183        var r3 = t3, i3 = n3, s3 = e3[o3];
24184        null != s3 && (lr(r3, i3, 5), r3 = r3.g, Pt(s3), hr(r3));
24185      }
24186    }), br);
24187    mi = ni(di, (function(t3, e3, n3) {
24188      if (null != (e3 = ti($t, e3)) && e3.length) {
24189        lr(t3, n3, 2), ar(t3.g, 4 * e3.length);
24190        for (let r3 = 0; r3 < e3.length; r3++) n3 = t3.g, Pt(e3[r3]), hr(n3);
24191      }
24192    }), br);
24193    yi = ei((function(t3, e3, n3) {
24194      return 5 === t3.h && (ri(e3, n3, 0 === (t3 = Dn(t3.g)) ? void 0 : t3), true);
24195    }), si, br);
24196    _i = ei((function(t3, e3, n3) {
24197      return 0 !== t3.h ? t3 = false : (ri(e3, n3, Cn(t3.g, Nt)), t3 = true), t3;
24198    }), oi, Tr);
24199    vi = ei((function(t3, e3, n3) {
24200      return 0 !== t3.h ? e3 = false : (ri(e3, n3, (t3 = Cn(t3.g, Nt)) === Qr ? void 0 : t3), e3 = true), e3;
24201    }), oi, Tr);
24202    Ei = ei((function(t3, e3, n3) {
24203      return 0 !== t3.h ? t3 = false : (ri(e3, n3, Cn(t3.g, Ot)), t3 = true), t3;
24204    }), (function(t3, e3, n3) {
24205      if (e3 = (function(t4) {
24206        if (null == t4) return t4;
24207        var e4 = typeof t4;
24208        if ("bigint" === e4) return String(Ht(64, t4));
24209        if (te(t4)) {
24210          if ("string" === e4) return e4 = Kt(Number(t4)), Wt(e4) && e4 >= 0 ? t4 = String(e4) : (-1 !== (e4 = t4.indexOf(".")) && (t4 = t4.substring(0, e4)), (e4 = "-" !== t4[0] && ((e4 = t4.length) < 20 || 20 === e4 && t4 <= "18446744073709551615")) || (Gt(t4), t4 = Ut(Rt, It))), t4;
24211          if ("number" === e4) return (t4 = Kt(t4)) >= 0 && Wt(t4) || (Mt(t4), t4 = Ct(Rt, It)), t4;
24212        }
24213      })(e3), null != e3) {
24214        if ("string" == typeof e3) tr(e3);
24215        if (null != e3) switch (lr(t3, n3, 0), typeof e3) {
24216          case "number":
24217            t3 = t3.g, Mt(e3), or(t3, Rt, It);
24218            break;
24219          case "bigint":
24220            n3 = BigInt.asUintN(64, e3), n3 = new er(Number(n3 & BigInt(4294967295)), Number(n3 >> BigInt(32))), or(t3.g, n3.h, n3.g);
24221            break;
24222          default:
24223            n3 = tr(e3), or(t3.g, n3.h, n3.g);
24224        }
24225      }
24226    }), Ar);
24227    wi = ei((function(t3, e3, n3) {
24228      return 0 === t3.h && (ri(e3, n3, Nn(t3.g)), true);
24229    }), ai, Er);
24230    Ti = ni((function(t3, e3, n3) {
24231      return (0 === t3.h || 2 === t3.h) && (e3 = un(e3, 0 | e3[Q], n3), 2 == t3.h ? Jn(t3, Nn, e3) : e3.push(Nn(t3.g)), true);
24232    }), (function(t3, e3, n3) {
24233      if (null != (e3 = ti(ee, e3)) && e3.length) {
24234        n3 = fr(t3, n3);
24235        for (let n4 = 0; n4 < e3.length; n4++) cr(t3.g, e3[n4]);
24236        dr(t3, n3);
24237      }
24238    }), Er);
24239    Ai = ei((function(t3, e3, n3) {
24240      return 0 === t3.h && (ri(e3, n3, 0 === (t3 = Nn(t3.g)) ? void 0 : t3), true);
24241    }), ai, Er);
24242    bi = ei((function(t3, e3, n3) {
24243      return 0 === t3.h && (ri(e3, n3, On(t3.g)), true);
24244    }), ci, _r);
24245    ki = ei((function(t3, e3, n3) {
24246      return 0 === t3.h && (ri(e3, n3, false === (t3 = On(t3.g)) ? void 0 : t3), true);
24247    }), ci, _r);
24248    Si = ni((function(t3, e3, n3) {
24249      return 2 === t3.h && (t3 = qn(t3), un(e3, 0 | e3[Q], n3).push(t3), true);
24250    }), (function(t3, e3, n3) {
24251      if (null != (e3 = ti(le, e3))) for (let o3 = 0; o3 < e3.length; o3++) {
24252        var r3 = t3, i3 = n3, s3 = e3[o3];
24253        null != s3 && pr(r3, i3, h(s3));
24254      }
24255    }), vr);
24256    xi = ei((function(t3, e3, n3) {
24257      return 2 === t3.h && (ri(e3, n3, "" === (t3 = qn(t3)) ? void 0 : t3), true);
24258    }), hi, vr);
24259    Li = ei((function(t3, e3, n3) {
24260      return 2 === t3.h && (ri(e3, n3, qn(t3)), true);
24261    }), hi, vr);
24262    Ri = (function(t3, e3, n3 = yr) {
24263      return new Rr(t3, e3, n3);
24264    })((function(t3, e3, n3, r3, i3) {
24265      return 2 === t3.h && (r3 = Ne(void 0, r3), un(e3, 0 | e3[Q], n3).push(r3), Yn(t3, r3, i3), true);
24266    }), (function(t3, e3, n3, r3, i3) {
24267      if (Array.isArray(e3)) {
24268        for (let s3 = 0; s3 < e3.length; s3++) ui(t3, e3[s3], n3, r3, i3);
24269        1 & (t3 = 0 | e3[Q]) || rt(e3, 1 | t3);
24270      }
24271    }));
24272    Ii = Ir((function(t3, e3, n3, r3, i3, s3) {
24273      if (2 !== t3.h) return false;
24274      let o3 = 0 | e3[Q];
24275      return dn(e3, o3, s3, n3, pt(o3)), Yn(t3, e3 = gn(e3, r3, n3), i3), true;
24276    }), ui);
24277    Fi = ei((function(t3, e3, n3) {
24278      return 2 === t3.h && (ri(e3, n3, $n(t3)), true);
24279    }), li, kr);
24280    Mi = ni((function(t3, e3, n3) {
24281      return (0 === t3.h || 2 === t3.h) && (e3 = un(e3, 0 | e3[Q], n3), 2 == t3.h ? Jn(t3, Un, e3) : e3.push(Un(t3.g)), true);
24282    }), (function(t3, e3, n3) {
24283      if (null != (e3 = ti(ne, e3))) for (let o3 = 0; o3 < e3.length; o3++) {
24284        var r3 = t3, i3 = n3, s3 = e3[o3];
24285        null != s3 && (lr(r3, i3, 0), ar(r3.g, s3));
24286      }
24287    }), wr);
24288    Pi = ei((function(t3, e3, n3) {
24289      return 0 === t3.h && (ri(e3, n3, 0 === (t3 = Un(t3.g)) ? void 0 : t3), true);
24290    }), fi, wr);
24291    Ci = ei((function(t3, e3, n3) {
24292      return 0 === t3.h && (ri(e3, n3, Nn(t3.g)), true);
24293    }), (function(t3, e3, n3) {
24294      null != (e3 = ee(e3)) && (e3 = parseInt(e3, 10), lr(t3, n3, 0), cr(t3.g, e3));
24295    }), Sr);
24296    Oi = class {
24297      constructor(t3, e3) {
24298        var n3 = Qi;
24299        this.g = t3, this.h = e3, this.m = yn, this.j = wn, this.defaultValue = void 0, this.l = null != n3.Oa ? dt : void 0;
24300      }
24301      register() {
24302        m(this);
24303      }
24304    };
24305    Bi = class extends Lr {
24306      constructor(t3) {
24307        super(t3);
24308      }
24309    };
24310    Gi = [0, xi, ei((function(t3, e3, n3) {
24311      return 2 === t3.h && (ri(e3, n3, (t3 = $n(t3)) === R() ? void 0 : t3), true);
24312    }), (function(t3, e3, n3) {
24313      if (null != e3) {
24314        if (e3 instanceof Lr) {
24315          const r3 = e3.Ra;
24316          return void (r3 ? (e3 = r3(e3), null != e3 && pr(t3, n3, Pn(e3, true).buffer)) : U(K, 3));
24317        }
24318        if (Array.isArray(e3)) return void U(K, 3);
24319      }
24320      li(t3, e3, n3);
24321    }), kr)];
24322    Vi = globalThis.trustedTypes;
24323    Wi = [0, wi, Ci, bi, -1, Ti, Ci, -1, bi];
24324    zi = class extends Lr {
24325      constructor(t3) {
24326        super(t3);
24327      }
24328    };
24329    Ki = [0, bi, Li, bi, Ci, -1, ni((function(t3, e3, n3) {
24330      return (0 === t3.h || 2 === t3.h) && (e3 = un(e3, 0 | e3[Q], n3), 2 == t3.h ? Jn(t3, Bn, e3) : e3.push(Nn(t3.g)), true);
24331    }), (function(t3, e3, n3) {
24332      if (null != (e3 = ti(ee, e3)) && e3.length) {
24333        n3 = fr(t3, n3);
24334        for (let n4 = 0; n4 < e3.length; n4++) cr(t3.g, e3[n4]);
24335        dr(t3, n3);
24336      }
24337    }), Sr), Li, -1, [0, bi, -1], Ci, bi, -1];
24338    Yi = [0, 3, bi, -1, 2, [0, [2], wi, Ii, [0, ei((function(t3, e3, n3) {
24339      return 0 === t3.h && (ri(e3, n3, Un(t3.g)), true);
24340    }), fi, wr)]], [0, Ci, bi, Ci, bi, Ci, bi, Li, -1], [0, [3, 4], Li, -1, Ii, [0, wi], Ii, [0, Ci]], [0]];
24341    qi = [0, Li, -2];
24342    $i = class extends Lr {
24343      constructor(t3) {
24344        super(t3);
24345      }
24346    };
24347    Ji = [0];
24348    Zi = [0, wi, bi, 1, bi, -4];
24349    Qi = class extends Lr {
24350      constructor(t3) {
24351        super(t3, 2);
24352      }
24353    };
24354    ts = {};
24355    ts[336783863] = [0, Li, bi, -1, wi, [0, [1, 2, 3, 4, 5, 6, 7, 8, 9], Ii, Ji, Ii, Ki, Ii, qi, Ii, Zi, Ii, Wi, Ii, [0, Li, -2], Ii, [0, Li, Ci], Ii, Yi, Ii, [0, Ci, -1, bi]], [0, Li], bi, [0, [1, 3], [2, 4], Ii, [0, Ti], -1, Ii, [0, Si], -1, Ri, [0, Li, -1]], Li];
24356    es = [0, vi, -1, ki, -3, vi, Ti, xi, Ai, vi, -1, ki, Ai, ki, -2, xi];
24357    is = class extends Lr {
24358      constructor(t3) {
24359        super(t3, 500);
24360      }
24361      o(t3) {
24362        return wn(this, 0, 7, t3);
24363      }
24364    };
24365    ss = [-1, {}];
24366    os = [0, Li, 1, ss];
24367    as = [0, Li, Si, ss];
24368    ls = class extends Lr {
24369      constructor(t3) {
24370        super(t3, 500);
24371      }
24372      o(t3) {
24373        return wn(this, 0, 1001, t3);
24374      }
24375    };
24376    fs = [-500, Ri, [-500, xi, -1, Si, -3, [-2, ts, bi], Ri, Gi, Ai, -1, os, as, Ri, [0, xi, ki], xi, es, Ai, Si, 987, Si], 4, Ri, [-500, Li, -1, [-1, {}], 998, Li], Ri, [-500, Li, Si, -1, [-2, {}, bi], 997, Si, -1], Ai, Ri, [-500, Li, Si, ss, 998, Si], Si, Ai, os, as, Ri, [0, xi, -1, ss], Si, -2, es, xi, -1, ki, [0, ki, Pi], 978, ss, Ri, Gi];
24377    ls.prototype.g = Di(fs);
24378    ds = Ui(ls, fs);
24379    ps = class extends Lr {
24380      constructor(t3) {
24381        super(t3);
24382      }
24383    };
24384    gs = class extends Lr {
24385      constructor(t3) {
24386        super(t3);
24387      }
24388      g() {
24389        return vn(this, ps, 1);
24390      }
24391    };
24392    ms = [0, Ri, [0, wi, pi, Li, -1]];
24393    ys = Ui(gs, ms);
24394    _s = class extends Lr {
24395      constructor(t3) {
24396        super(t3);
24397      }
24398    };
24399    vs = class extends Lr {
24400      constructor(t3) {
24401        super(t3);
24402      }
24403    };
24404    Es = class extends Lr {
24405      constructor(t3) {
24406        super(t3);
24407      }
24408      l() {
24409        return yn(this, _s, 2);
24410      }
24411      g() {
24412        return vn(this, vs, 5);
24413      }
24414    };
24415    ws = Ui(class extends Lr {
24416      constructor(t3) {
24417        super(t3);
24418      }
24419    }, [0, Si, Ti, mi, [0, Ci, [0, wi, -3], [0, pi, -3], [0, wi, -1, [0, Ri, [0, wi, -2]]], Ri, [0, pi, -1, Li, pi]], Li, -1, _i, Ri, [0, wi, pi], Si, _i]);
24420    Ts = class extends Lr {
24421      constructor(t3) {
24422        super(t3);
24423      }
24424    };
24425    As = Ui(class extends Lr {
24426      constructor(t3) {
24427        super(t3);
24428      }
24429    }, [0, Ri, [0, pi, -4]]);
24430    bs = class extends Lr {
24431      constructor(t3) {
24432        super(t3);
24433      }
24434    };
24435    ks = Ui(class extends Lr {
24436      constructor(t3) {
24437        super(t3);
24438      }
24439    }, [0, Ri, [0, pi, -4]]);
24440    Ss = class extends Lr {
24441      constructor(t3) {
24442        super(t3);
24443      }
24444    };
24445    xs = [0, wi, -1, mi, Ci];
24446    Ls = class extends Lr {
24447      constructor(t3) {
24448        super(t3);
24449      }
24450    };
24451    Ls.prototype.g = Di([0, pi, -4, _i]);
24452    Rs = class extends Lr {
24453      constructor(t3) {
24454        super(t3);
24455      }
24456    };
24457    Is = Ui(class extends Lr {
24458      constructor(t3) {
24459        super(t3);
24460      }
24461    }, [0, Ri, [0, 1, wi, Li, ms], _i]);
24462    Fs = class extends Lr {
24463      constructor(t3) {
24464        super(t3);
24465      }
24466    };
24467    Ms = class extends Lr {
24468      constructor(t3) {
24469        super(t3);
24470      }
24471      na() {
24472        const t3 = $e(this, 1, void 0, void 0, an);
24473        return null == t3 ? R() : t3;
24474      }
24475    };
24476    Ps = class extends Lr {
24477      constructor(t3) {
24478        super(t3);
24479      }
24480    };
24481    Cs = [1, 2];
24482    Os = Ui(class extends Lr {
24483      constructor(t3) {
24484        super(t3);
24485      }
24486    }, [0, Ri, [0, Cs, Ii, [0, mi], Ii, [0, Fi], wi, Li], _i]);
24487    Ns = class extends Lr {
24488      constructor(t3) {
24489        super(t3);
24490      }
24491    };
24492    Us = [0, Li, wi, pi, Si, -1];
24493    Ds = class extends Lr {
24494      constructor(t3) {
24495        super(t3);
24496      }
24497    };
24498    Bs = [0, bi, -1];
24499    Gs = class extends Lr {
24500      constructor(t3) {
24501        super(t3);
24502      }
24503    };
24504    js = [1, 2, 3, 4, 5, 6];
24505    Vs = class extends Lr {
24506      constructor(t3) {
24507        super(t3);
24508      }
24509      g() {
24510        return null != $e(this, 1, void 0, void 0, an);
24511      }
24512      l() {
24513        return null != le($e(this, 2));
24514      }
24515    };
24516    Xs = class extends Lr {
24517      constructor(t3) {
24518        super(t3);
24519      }
24520      g() {
24521        return Zt($e(this, 2)) ?? false;
24522      }
24523    };
24524    Hs = [0, Fi, Li, [0, wi, _i, -1], [0, Ei, _i]];
24525    Ws = [0, Hs, bi, [0, js, Ii, Zi, Ii, Ki, Ii, Wi, Ii, Ji, Ii, qi, Ii, Yi], Ci];
24526    zs = class extends Lr {
24527      constructor(t3) {
24528        super(t3);
24529      }
24530    };
24531    Ks = [0, Ws, pi, -1, wi];
24532    Ys = Ni(502141897, zs);
24533    ts[502141897] = Ks;
24534    qs = Ui(class extends Lr {
24535      constructor(t3) {
24536        super(t3);
24537      }
24538    }, [0, [0, Ci, -1, gi, Mi], xs]);
24539    $s = class extends Lr {
24540      constructor(t3) {
24541        super(t3);
24542      }
24543    };
24544    Js = class extends Lr {
24545      constructor(t3) {
24546        super(t3);
24547      }
24548    };
24549    Zs = [0, Ws, pi, [0, Ws], bi];
24550    Qs = Ni(508968150, Js);
24551    ts[508968150] = [0, Ws, Ks, Zs, pi, [0, [0, Hs]]], ts[508968149] = Zs;
24552    to = class extends Lr {
24553      constructor(t3) {
24554        super(t3);
24555      }
24556      l() {
24557        return yn(this, Ns, 2);
24558      }
24559      g() {
24560        Ze(this, 2);
24561      }
24562    };
24563    eo = [0, Ws, Us];
24564    ts[478825465] = eo;
24565    no = class extends Lr {
24566      constructor(t3) {
24567        super(t3);
24568      }
24569    };
24570    ro = class extends Lr {
24571      constructor(t3) {
24572        super(t3);
24573      }
24574    };
24575    io = class extends Lr {
24576      constructor(t3) {
24577        super(t3);
24578      }
24579    };
24580    so = class extends Lr {
24581      constructor(t3) {
24582        super(t3);
24583      }
24584    };
24585    oo = class extends Lr {
24586      constructor(t3) {
24587        super(t3);
24588      }
24589    };
24590    ao = [0, Ws, [0, Ws], eo, -1];
24591    co = [0, Ws, pi, wi];
24592    ho = [0, Ws, pi];
24593    uo = [0, Ws, co, ho, pi];
24594    lo = Ni(479097054, oo);
24595    ts[479097054] = [0, Ws, uo, ao], ts[463370452] = ao, ts[464864288] = co;
24596    fo = Ni(462713202, so);
24597    ts[462713202] = uo, ts[474472470] = ho;
24598    po = class extends Lr {
24599      constructor(t3) {
24600        super(t3);
24601      }
24602    };
24603    go = class extends Lr {
24604      constructor(t3) {
24605        super(t3);
24606      }
24607    };
24608    mo = class extends Lr {
24609      constructor(t3) {
24610        super(t3);
24611      }
24612    };
24613    yo = class extends Lr {
24614      constructor(t3) {
24615        super(t3);
24616      }
24617    };
24618    _o = [0, Ws, pi, -1, wi];
24619    vo = [0, Ws, pi, bi];
24620    yo.prototype.g = Di([0, Ws, ho, [0, Ws], Ks, Zs, _o, vo]);
24621    Eo = class extends Lr {
24622      constructor(t3) {
24623        super(t3);
24624      }
24625    };
24626    wo = Ni(456383383, Eo);
24627    ts[456383383] = [0, Ws, Us];
24628    To = class extends Lr {
24629      constructor(t3) {
24630        super(t3);
24631      }
24632    };
24633    Ao = Ni(476348187, To);
24634    ts[476348187] = [0, Ws, Bs];
24635    bo = class extends Lr {
24636      constructor(t3) {
24637        super(t3);
24638      }
24639    };
24640    ko = class extends Lr {
24641      constructor(t3) {
24642        super(t3);
24643      }
24644    };
24645    So = [0, Ci, -1];
24646    xo = Ni(458105876, class extends Lr {
24647      constructor(t3) {
24648        super(t3);
24649      }
24650      g() {
24651        let t3;
24652        var e3 = this.v;
24653        const n3 = 0 | e3[Q];
24654        return t3 = at(this, n3), e3 = (function(t4, e4, n4, r3) {
24655          var i3 = ko;
24656          !r3 && He(t4) && (n4 = 0 | (e4 = t4.v)[Q]);
24657          var s3 = Je(e4, 2);
24658          if (t4 = false, null == s3) {
24659            if (r3) return be();
24660            s3 = [];
24661          } else if (s3.constructor === Ee) {
24662            if (!(2 & s3.J) || r3) return s3;
24663            s3 = s3.V();
24664          } else Array.isArray(s3) ? t4 = !!(2 & (0 | s3[Q])) : s3 = [];
24665          if (r3) {
24666            if (!s3.length) return be();
24667            t4 || (t4 = true, it(s3));
24668          } else t4 && (t4 = false, st(s3), s3 = cn(s3));
24669          return !t4 && 32 & n4 && nt(s3, 32), n4 = Qe(e4, n4, 2, r3 = new Ee(s3, i3, de, void 0)), t4 || ze(e4, n4), r3;
24670        })(this, e3, n3, t3), !t3 && ko && (e3.ra = true), e3;
24671      }
24672    });
24673    ts[458105876] = [0, So, ii, [true, _i, [0, Li, -1, Si]], [0, Ti, bi, Ci]];
24674    Lo = class extends Lr {
24675      constructor(t3) {
24676        super(t3);
24677      }
24678    };
24679    Ro = Ni(458105758, Lo);
24680    ts[458105758] = [0, Ws, Li, So];
24681    Io = class extends Lr {
24682      constructor(t3) {
24683        super(t3);
24684      }
24685    };
24686    Fo = [0, yi, -1, ki];
24687    Mo = class extends Lr {
24688      constructor(t3) {
24689        super(t3);
24690      }
24691    };
24692    Po = class extends Lr {
24693      constructor(t3) {
24694        super(t3);
24695      }
24696    };
24697    Co = [1, 2];
24698    Po.prototype.g = Di([0, Co, Ii, Fo, Ii, [0, Ri, Fo]]);
24699    Oo = class extends Lr {
24700      constructor(t3) {
24701        super(t3);
24702      }
24703    };
24704    No = Ni(443442058, Oo);
24705    ts[443442058] = [0, Ws, Li, wi, pi, Si, -1, bi, pi], ts[514774813] = _o;
24706    Uo = class extends Lr {
24707      constructor(t3) {
24708        super(t3);
24709      }
24710    };
24711    Do = Ni(516587230, Uo);
24712    ts[516587230] = [0, Ws, _o, vo, pi], ts[518928384] = vo;
24713    qo = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 10, 1, 8, 0, 65, 0, 253, 15, 253, 98, 11]);
24714    Zo = class {
24715    };
24716    Zo.forVisionTasks = function(t3, e3 = false) {
24717      return Jo("vision", t3 ?? Hi``, e3);
24718    }, Zo.forTextTasks = function(t3, e3 = false) {
24719      return Jo("text", t3 ?? Hi``, e3);
24720    }, Zo.forGenAiTasks = function(t3, e3 = false) {
24721      return Jo("genai", t3 ?? Hi``, e3);
24722    }, Zo.forAudioTasks = function(t3, e3 = false) {
24723      return Jo("audio", t3 ?? Hi``, e3);
24724    }, Zo.isSimdSupported = function(t3 = false) {
24725      return $o(t3);
24726    };
24727    pa = class {
24728      constructor(t3) {
24729        this.g = t3, this.H = [], this.C = 0, this.g.setAutoRenderToScreen(false);
24730      }
24731      l(t3, e3 = true) {
24732        if (e3) {
24733          const e4 = t3.baseOptions || {};
24734          if (t3.baseOptions?.modelAssetBuffer && t3.baseOptions?.modelAssetPath) throw Error("Cannot set both baseOptions.modelAssetPath and baseOptions.modelAssetBuffer");
24735          if (!(yn(this.baseOptions, Vs, 1)?.g() || yn(this.baseOptions, Vs, 1)?.l() || t3.baseOptions?.modelAssetBuffer || t3.baseOptions?.modelAssetPath)) throw Error("Either baseOptions.modelAssetPath or baseOptions.modelAssetBuffer must be set");
24736          if ((function(t4, e5) {
24737            let n3 = yn(t4.baseOptions, Gs, 3);
24738            if (!n3) {
24739              var r3 = n3 = new Gs(), i3 = new $i();
24740              Tn(r3, 4, js, i3);
24741            }
24742            "delegate" in e5 && ("GPU" === e5.delegate ? (e5 = n3, r3 = new zi(), Tn(e5, 2, js, r3)) : (e5 = n3, r3 = new $i(), Tn(e5, 4, js, r3))), wn(t4.baseOptions, 0, 3, n3);
24743          })(this, e4), e4.modelAssetPath) return fetch(e4.modelAssetPath.toString()).then(((t4) => {
24744            if (t4.ok) return t4.arrayBuffer();
24745            throw Error(`Failed to fetch model: ${e4.modelAssetPath} (${t4.status})`);
24746          })).then(((t4) => {
24747            try {
24748              this.g.i.FS_unlink("/model.dat");
24749            } catch {
24750            }
24751            this.g.i.FS_createDataFile("/", "model.dat", new Uint8Array(t4), true, false, false), ca(this, "/model.dat"), this.m(), this.L();
24752          }));
24753          if (e4.modelAssetBuffer instanceof Uint8Array) ca(this, e4.modelAssetBuffer);
24754          else if (e4.modelAssetBuffer) return (async function(t4) {
24755            const e5 = [];
24756            for (var n3 = 0; ; ) {
24757              const { done: r3, value: i3 } = await t4.read();
24758              if (r3) break;
24759              e5.push(i3), n3 += i3.length;
24760            }
24761            if (0 === e5.length) return new Uint8Array(0);
24762            if (1 === e5.length) return e5[0];
24763            t4 = new Uint8Array(n3), n3 = 0;
24764            for (const r3 of e5) t4.set(r3, n3), n3 += r3.length;
24765            return t4;
24766          })(e4.modelAssetBuffer).then(((t4) => {
24767            ca(this, t4), this.m(), this.L();
24768          }));
24769        }
24770        return this.m(), this.L(), Promise.resolve();
24771      }
24772      L() {
24773      }
24774      ca() {
24775        let t3;
24776        if (this.g.ca(((e3) => {
24777          t3 = ds(e3);
24778        })), !t3) throw Error("Failed to retrieve CalculatorGraphConfig");
24779        return t3;
24780      }
24781      setGraph(t3, e3) {
24782        this.g.attachErrorListener(((t4, e4) => {
24783          this.H.push(Error(e4));
24784        })), this.g.Ja(), this.g.setGraph(t3, e3), this.B = void 0, ha(this);
24785      }
24786      finishProcessing() {
24787        this.g.finishProcessing(), ha(this);
24788      }
24789      close() {
24790        this.B = void 0, this.g.closeGraph();
24791      }
24792    };
24793    pa.prototype.close = pa.prototype.close;
24794    ma = class {
24795      constructor(t3, e3, n3, r3) {
24796        this.g = t3, this.h = e3, this.m = n3, this.l = r3;
24797      }
24798      bind() {
24799        this.g.bindVertexArray(this.h);
24800      }
24801      close() {
24802        this.g.deleteVertexArray(this.h), this.g.deleteBuffer(this.m), this.g.deleteBuffer(this.l);
24803      }
24804    };
24805    ba = class {
24806      H() {
24807        return "\n  precision mediump float;\n  varying vec2 vTex;\n  uniform sampler2D inputTexture;\n  void main() {\n    gl_FragColor = texture2D(inputTexture, vTex);\n  }\n ";
24808      }
24809      m() {
24810        const t3 = this.g;
24811        if (this.h = ga(t3.createProgram(), "Failed to create WebGL program"), this.X = ya(this, "\n  attribute vec2 aVertex;\n  attribute vec2 aTex;\n  varying vec2 vTex;\n  void main(void) {\n    gl_Position = vec4(aVertex, 0.0, 1.0);\n    vTex = aTex;\n  }", t3.VERTEX_SHADER), this.W = ya(this, this.H(), t3.FRAGMENT_SHADER), t3.linkProgram(this.h), !t3.getProgramParameter(this.h, t3.LINK_STATUS)) throw Error(`Error during program linking: ${t3.getProgramInfoLog(this.h)}`);
24812        this.O = t3.getAttribLocation(this.h, "aVertex"), this.L = t3.getAttribLocation(this.h, "aTex");
24813      }
24814      D() {
24815      }
24816      l() {
24817      }
24818      close() {
24819        if (this.h) {
24820          const t3 = this.g;
24821          t3.deleteProgram(this.h), t3.deleteShader(this.X), t3.deleteShader(this.W);
24822        }
24823        this.B && this.g.deleteFramebuffer(this.B), this.A && this.A.close(), this.u && this.u.close();
24824      }
24825    };
24826    ka = class extends ba {
24827      H() {
24828        return "\n  precision mediump float;\n  uniform sampler2D backgroundTexture;\n  uniform sampler2D maskTexture;\n  uniform sampler2D colorMappingTexture;\n  varying vec2 vTex;\n  void main() {\n    vec4 backgroundColor = texture2D(backgroundTexture, vTex);\n    float category = texture2D(maskTexture, vTex).r;\n    vec4 categoryColor = texture2D(colorMappingTexture, vec2(category, 0.0));\n    gl_FragColor = mix(backgroundColor, categoryColor, categoryColor.a);\n  }\n ";
24829      }
24830      D() {
24831        const t3 = this.g;
24832        t3.activeTexture(t3.TEXTURE1), this.C = wa(this, t3, t3.LINEAR), t3.activeTexture(t3.TEXTURE2), this.j = wa(this, t3, t3.NEAREST);
24833      }
24834      m() {
24835        super.m();
24836        const t3 = this.g;
24837        this.P = ga(t3.getUniformLocation(this.h, "backgroundTexture"), "Uniform location"), this.U = ga(t3.getUniformLocation(this.h, "colorMappingTexture"), "Uniform location"), this.M = ga(t3.getUniformLocation(this.h, "maskTexture"), "Uniform location");
24838      }
24839      l() {
24840        super.l();
24841        const t3 = this.g;
24842        t3.uniform1i(this.M, 0), t3.uniform1i(this.P, 1), t3.uniform1i(this.U, 2);
24843      }
24844      close() {
24845        this.C && this.g.deleteTexture(this.C), this.j && this.g.deleteTexture(this.j), super.close();
24846      }
24847    };
24848    Sa = class extends ba {
24849      H() {
24850        return "\n  precision mediump float;\n  uniform sampler2D maskTexture;\n  uniform sampler2D defaultTexture;\n  uniform sampler2D overlayTexture;\n  varying vec2 vTex;\n  void main() {\n    float confidence = texture2D(maskTexture, vTex).r;\n    vec4 defaultColor = texture2D(defaultTexture, vTex);\n    vec4 overlayColor = texture2D(overlayTexture, vTex);\n    // Apply the alpha from the overlay and merge in the default color\n    overlayColor = mix(defaultColor, overlayColor, overlayColor.a);\n    gl_FragColor = mix(defaultColor, overlayColor, confidence);\n  }\n ";
24851      }
24852      D() {
24853        const t3 = this.g;
24854        t3.activeTexture(t3.TEXTURE1), this.j = wa(this, t3), t3.activeTexture(t3.TEXTURE2), this.C = wa(this, t3);
24855      }
24856      m() {
24857        super.m();
24858        const t3 = this.g;
24859        this.M = ga(t3.getUniformLocation(this.h, "defaultTexture"), "Uniform location"), this.P = ga(t3.getUniformLocation(this.h, "overlayTexture"), "Uniform location"), this.I = ga(t3.getUniformLocation(this.h, "maskTexture"), "Uniform location");
24860      }
24861      l() {
24862        super.l();
24863        const t3 = this.g;
24864        t3.uniform1i(this.I, 0), t3.uniform1i(this.M, 1), t3.uniform1i(this.P, 2);
24865      }
24866      close() {
24867        this.j && this.g.deleteTexture(this.j), this.C && this.g.deleteTexture(this.C), super.close();
24868      }
24869    };
24870    Na = class {
24871      constructor(t3, e3, n3, r3, i3, s3, o3) {
24872        this.g = t3, this.m = e3, this.j = n3, this.canvas = r3, this.l = i3, this.width = s3, this.height = o3, this.j && (0 === --Ua && console.error("You seem to be creating MPMask instances without invoking .close(). This leaks resources."));
24873      }
24874      Fa() {
24875        return !!xa(this, 0);
24876      }
24877      ka() {
24878        return !!xa(this, 1);
24879      }
24880      R() {
24881        return !!xa(this, 2);
24882      }
24883      ja() {
24884        return (e3 = xa(t3 = this, 0)) || (e3 = La(t3), e3 = new Uint8Array(e3.map(((t4) => Math.round(255 * t4)))), t3.g.push(e3)), e3;
24885        var t3, e3;
24886      }
24887      ia() {
24888        return La(this);
24889      }
24890      N() {
24891        return Ra(this);
24892      }
24893      clone() {
24894        const t3 = [];
24895        for (const e3 of this.g) {
24896          let n3;
24897          if (e3 instanceof Uint8Array) n3 = new Uint8Array(e3);
24898          else if (e3 instanceof Float32Array) n3 = new Float32Array(e3);
24899          else {
24900            if (!(e3 instanceof WebGLTexture)) throw Error(`Type is not supported: ${e3}`);
24901            {
24902              const t4 = Ia(this), e4 = Ma(this);
24903              t4.activeTexture(t4.TEXTURE1), n3 = wa(e4, t4, this.m ? t4.LINEAR : t4.NEAREST), t4.bindTexture(t4.TEXTURE_2D, n3);
24904              const r3 = Fa(this);
24905              t4.texImage2D(t4.TEXTURE_2D, 0, r3, this.width, this.height, 0, t4.RED, t4.FLOAT, null), t4.bindTexture(t4.TEXTURE_2D, null), Ta(e4, t4, n3), Ea(e4, t4, false, (() => {
24906                Pa(this), t4.clearColor(0, 0, 0, 0), t4.clear(t4.COLOR_BUFFER_BIT), t4.drawArrays(t4.TRIANGLE_FAN, 0, 4), Ca(this);
24907              })), Aa(e4), Ca(this);
24908            }
24909          }
24910          t3.push(n3);
24911        }
24912        return new Na(t3, this.m, this.R(), this.canvas, this.l, this.width, this.height);
24913      }
24914      close() {
24915        this.j && Ia(this).deleteTexture(xa(this, 2)), Ua = -1;
24916      }
24917    };
24918    Na.prototype.close = Na.prototype.close, Na.prototype.clone = Na.prototype.clone, Na.prototype.getAsWebGLTexture = Na.prototype.N, Na.prototype.getAsFloat32Array = Na.prototype.ia, Na.prototype.getAsUint8Array = Na.prototype.ja, Na.prototype.hasWebGLTexture = Na.prototype.R, Na.prototype.hasFloat32Array = Na.prototype.ka, Na.prototype.hasUint8Array = Na.prototype.Fa;
24919    Ua = 250;
24920    Da = { color: "white", lineWidth: 4, radius: 6 };
24921    Ka = class {
24922      constructor(t3, e3) {
24923        "undefined" != typeof CanvasRenderingContext2D && t3 instanceof CanvasRenderingContext2D || t3 instanceof OffscreenCanvasRenderingContext2D ? (this.l = t3, this.j = e3) : this.j = t3;
24924      }
24925      ya(t3, e3) {
24926        if (t3) {
24927          var n3 = Va(this);
24928          e3 = Ba(e3), n3.save();
24929          var r3 = n3.canvas, i3 = 0;
24930          for (const s3 of t3) n3.fillStyle = Ga(e3.fillColor, { index: i3, from: s3 }), n3.strokeStyle = Ga(e3.color, { index: i3, from: s3 }), n3.lineWidth = Ga(e3.lineWidth, { index: i3, from: s3 }), (t3 = new Path2D()).arc(s3.x * r3.width, s3.y * r3.height, Ga(e3.radius, { index: i3, from: s3 }), 0, 2 * Math.PI), n3.fill(t3), n3.stroke(t3), ++i3;
24931          n3.restore();
24932        }
24933      }
24934      xa(t3, e3, n3) {
24935        if (t3 && e3) {
24936          var r3 = Va(this);
24937          n3 = Ba(n3), r3.save();
24938          var i3 = r3.canvas, s3 = 0;
24939          for (const o3 of e3) {
24940            r3.beginPath(), e3 = t3[o3.start];
24941            const a3 = t3[o3.end];
24942            e3 && a3 && (r3.strokeStyle = Ga(n3.color, { index: s3, from: e3, to: a3 }), r3.lineWidth = Ga(n3.lineWidth, { index: s3, from: e3, to: a3 }), r3.moveTo(e3.x * i3.width, e3.y * i3.height), r3.lineTo(a3.x * i3.width, a3.y * i3.height)), ++s3, r3.stroke();
24943          }
24944          r3.restore();
24945        }
24946      }
24947      ua(t3, e3) {
24948        const n3 = Va(this);
24949        e3 = Ba(e3), n3.save(), n3.beginPath(), n3.lineWidth = Ga(e3.lineWidth, {}), n3.strokeStyle = Ga(e3.color, {}), n3.fillStyle = Ga(e3.fillColor, {}), n3.moveTo(t3.originX, t3.originY), n3.lineTo(t3.originX + t3.width, t3.originY), n3.lineTo(t3.originX + t3.width, t3.originY + t3.height), n3.lineTo(t3.originX, t3.originY + t3.height), n3.lineTo(t3.originX, t3.originY), n3.stroke(), n3.fill(), n3.restore();
24950      }
24951      va(t3, e3, n3 = [0, 0, 0, 255]) {
24952        this.l ? (function(t4, e4, n4, r3) {
24953          const i3 = Xa(t4);
24954          Ha(t4, e4, ((e5) => {
24955            Wa(t4, e5, n4, r3), (e5 = Va(t4)).drawImage(i3.canvas, 0, 0, e5.canvas.width, e5.canvas.height);
24956          }));
24957        })(this, t3, n3, e3) : Wa(this, t3.N(), n3, e3);
24958      }
24959      wa(t3, e3, n3) {
24960        this.l ? (function(t4, e4, n4, r3) {
24961          const i3 = Xa(t4);
24962          Ha(t4, e4, ((e5) => {
24963            za(t4, e5, n4, r3), (e5 = Va(t4)).drawImage(i3.canvas, 0, 0, e5.canvas.width, e5.canvas.height);
24964          }));
24965        })(this, t3, e3, n3) : za(this, t3.N(), e3, n3);
24966      }
24967      close() {
24968        this.g?.close(), this.g = void 0, this.h?.close(), this.h = void 0, this.m?.close(), this.m = void 0;
24969      }
24970    };
24971    Ka.prototype.close = Ka.prototype.close, Ka.prototype.drawConfidenceMask = Ka.prototype.wa, Ka.prototype.drawCategoryMask = Ka.prototype.va, Ka.prototype.drawBoundingBox = Ka.prototype.ua, Ka.prototype.drawConnectors = Ka.prototype.xa, Ka.prototype.drawLandmarks = Ka.prototype.ya, Ka.lerp = function(t3, e3, n3, r3, i3) {
24972      return ja(r3 * (1 - (t3 - e3) / (n3 - e3)) + i3 * (1 - (n3 - t3) / (n3 - e3)), r3, i3);
24973    }, Ka.clamp = ja;
24974    nc = class {
24975      constructor(t3, e3, n3, r3, i3, s3, o3) {
24976        this.g = t3, this.j = e3, this.m = n3, this.canvas = r3, this.l = i3, this.width = s3, this.height = o3, (this.j || this.m) && (0 === --rc && console.error("You seem to be creating MPImage instances without invoking .close(). This leaks resources."));
24977      }
24978      Ea() {
24979        return !!Ya(this, 0);
24980      }
24981      la() {
24982        return !!Ya(this, 1);
24983      }
24984      R() {
24985        return !!Ya(this, 2);
24986      }
24987      Ca() {
24988        return qa(this);
24989      }
24990      Ba() {
24991        var t3 = Ya(this, 1);
24992        return t3 || ($a(this), Qa(this), t3 = ec(this), tc(this), this.g.push(t3), this.j = true), t3;
24993      }
24994      N() {
24995        return $a(this);
24996      }
24997      clone() {
24998        const t3 = [];
24999        for (const e3 of this.g) {
25000          let n3;
25001          if (e3 instanceof ImageData) n3 = new ImageData(e3.data, this.width, this.height);
25002          else if (e3 instanceof WebGLTexture) {
25003            const t4 = Ja(this), e4 = Za(this);
25004            t4.activeTexture(t4.TEXTURE1), n3 = wa(e4, t4), t4.bindTexture(t4.TEXTURE_2D, n3), t4.texImage2D(t4.TEXTURE_2D, 0, t4.RGBA, this.width, this.height, 0, t4.RGBA, t4.UNSIGNED_BYTE, null), t4.bindTexture(t4.TEXTURE_2D, null), Ta(e4, t4, n3), Ea(e4, t4, false, (() => {
25005              Qa(this), t4.clearColor(0, 0, 0, 0), t4.clear(t4.COLOR_BUFFER_BIT), t4.drawArrays(t4.TRIANGLE_FAN, 0, 4), tc(this);
25006            })), Aa(e4), tc(this);
25007          } else {
25008            if (!(e3 instanceof ImageBitmap)) throw Error(`Type is not supported: ${e3}`);
25009            $a(this), Qa(this), n3 = ec(this), tc(this);
25010          }
25011          t3.push(n3);
25012        }
25013        return new nc(t3, this.la(), this.R(), this.canvas, this.l, this.width, this.height);
25014      }
25015      close() {
25016        this.j && Ya(this, 1).close(), this.m && Ja(this).deleteTexture(Ya(this, 2)), rc = -1;
25017      }
25018    };
25019    nc.prototype.close = nc.prototype.close, nc.prototype.clone = nc.prototype.clone, nc.prototype.getAsWebGLTexture = nc.prototype.N, nc.prototype.getAsImageBitmap = nc.prototype.Ba, nc.prototype.getAsImageData = nc.prototype.Ca, nc.prototype.hasWebGLTexture = nc.prototype.R, nc.prototype.hasImageBitmap = nc.prototype.la, nc.prototype.hasImageData = nc.prototype.Ea;
25020    rc = 250;
25021    sc = /* @__PURE__ */ (function(t3) {
25022      return class extends t3 {
25023        Ja() {
25024          this.i._registerModelResourcesGraphService();
25025        }
25026      };
25027    })((oc = class {
25028      constructor(t3, e3) {
25029        this.l = true, this.i = t3, this.g = null, this.h = 0, this.m = "function" == typeof this.i._addIntToInputStream, void 0 !== e3 ? this.i.canvas = e3 : Qo() ? this.i.canvas = new OffscreenCanvas(1, 1) : (console.warn("OffscreenCanvas not supported and GraphRunner constructor glCanvas parameter is undefined. Creating backup canvas."), this.i.canvas = document.createElement("canvas"));
25030      }
25031      async initializeGraph(t3) {
25032        const e3 = await (await fetch(t3)).arrayBuffer();
25033        t3 = !(t3.endsWith(".pbtxt") || t3.endsWith(".textproto")), this.setGraph(new Uint8Array(e3), t3);
25034      }
25035      setGraphFromString(t3) {
25036        this.setGraph(new TextEncoder().encode(t3), false);
25037      }
25038      setGraph(t3, e3) {
25039        const n3 = t3.length, r3 = this.i._malloc(n3);
25040        this.i.HEAPU8.set(t3, r3), e3 ? this.i._changeBinaryGraph(n3, r3) : this.i._changeTextGraph(n3, r3), this.i._free(r3);
25041      }
25042      configureAudio(t3, e3, n3, r3, i3) {
25043        this.i._configureAudio || console.warn('Attempting to use configureAudio without support for input audio. Is build dep ":gl_graph_runner_audio" missing?'), na(this, r3 || "input_audio", ((r4) => {
25044          na(this, i3 = i3 || "audio_header", ((i4) => {
25045            this.i._configureAudio(r4, i4, t3, e3 ?? 0, n3);
25046          }));
25047        }));
25048      }
25049      setAutoResizeCanvas(t3) {
25050        this.l = t3;
25051      }
25052      setAutoRenderToScreen(t3) {
25053        this.i._setAutoRenderToScreen(t3);
25054      }
25055      setGpuBufferVerticalFlip(t3) {
25056        this.i.gpuOriginForWebTexturesIsBottomLeft = t3;
25057      }
25058      ca(t3) {
25059        sa(this, "__graph_config__", ((e3) => {
25060          t3(e3);
25061        })), na(this, "__graph_config__", ((t4) => {
25062          this.i._getGraphConfig(t4, void 0);
25063        })), delete this.i.simpleListeners.__graph_config__;
25064      }
25065      attachErrorListener(t3) {
25066        this.i.errorListener = t3;
25067      }
25068      attachEmptyPacketListener(t3, e3) {
25069        this.i.emptyPacketListeners = this.i.emptyPacketListeners || {}, this.i.emptyPacketListeners[t3] = e3;
25070      }
25071      addAudioToStream(t3, e3, n3) {
25072        this.addAudioToStreamWithShape(t3, 0, 0, e3, n3);
25073      }
25074      addAudioToStreamWithShape(t3, e3, n3, r3, i3) {
25075        const s3 = 4 * t3.length;
25076        this.h !== s3 && (this.g && this.i._free(this.g), this.g = this.i._malloc(s3), this.h = s3), this.i.HEAPF32.set(t3, this.g / 4), na(this, r3, ((t4) => {
25077          this.i._addAudioToInputStream(this.g, e3, n3, t4, i3);
25078        }));
25079      }
25080      addGpuBufferToStream(t3, e3, n3) {
25081        na(this, e3, ((e4) => {
25082          const [r3, i3] = ra(this, t3, e4);
25083          this.i._addBoundTextureToStream(e4, r3, i3, n3);
25084        }));
25085      }
25086      addBoolToStream(t3, e3, n3) {
25087        na(this, e3, ((e4) => {
25088          this.i._addBoolToInputStream(t3, e4, n3);
25089        }));
25090      }
25091      addDoubleToStream(t3, e3, n3) {
25092        na(this, e3, ((e4) => {
25093          this.i._addDoubleToInputStream(t3, e4, n3);
25094        }));
25095      }
25096      addFloatToStream(t3, e3, n3) {
25097        na(this, e3, ((e4) => {
25098          this.i._addFloatToInputStream(t3, e4, n3);
25099        }));
25100      }
25101      addIntToStream(t3, e3, n3) {
25102        na(this, e3, ((e4) => {
25103          this.i._addIntToInputStream(t3, e4, n3);
25104        }));
25105      }
25106      addUintToStream(t3, e3, n3) {
25107        na(this, e3, ((e4) => {
25108          this.i._addUintToInputStream(t3, e4, n3);
25109        }));
25110      }
25111      addStringToStream(t3, e3, n3) {
25112        na(this, e3, ((e4) => {
25113          na(this, t3, ((t4) => {
25114            this.i._addStringToInputStream(t4, e4, n3);
25115          }));
25116        }));
25117      }
25118      addStringRecordToStream(t3, e3, n3) {
25119        na(this, e3, ((e4) => {
25120          ia(this, Object.keys(t3), ((r3) => {
25121            ia(this, Object.values(t3), ((i3) => {
25122              this.i._addFlatHashMapToInputStream(r3, i3, Object.keys(t3).length, e4, n3);
25123            }));
25124          }));
25125        }));
25126      }
25127      addProtoToStream(t3, e3, n3, r3) {
25128        na(this, n3, ((n4) => {
25129          na(this, e3, ((e4) => {
25130            const i3 = this.i._malloc(t3.length);
25131            this.i.HEAPU8.set(t3, i3), this.i._addProtoToInputStream(i3, t3.length, e4, n4, r3), this.i._free(i3);
25132          }));
25133        }));
25134      }
25135      addEmptyPacketToStream(t3, e3) {
25136        na(this, t3, ((t4) => {
25137          this.i._addEmptyPacketToInputStream(t4, e3);
25138        }));
25139      }
25140      addBoolVectorToStream(t3, e3, n3) {
25141        na(this, e3, ((e4) => {
25142          const r3 = this.i._allocateBoolVector(t3.length);
25143          if (!r3) throw Error("Unable to allocate new bool vector on heap.");
25144          for (const e5 of t3) this.i._addBoolVectorEntry(r3, e5);
25145          this.i._addBoolVectorToInputStream(r3, e4, n3);
25146        }));
25147      }
25148      addDoubleVectorToStream(t3, e3, n3) {
25149        na(this, e3, ((e4) => {
25150          const r3 = this.i._allocateDoubleVector(t3.length);
25151          if (!r3) throw Error("Unable to allocate new double vector on heap.");
25152          for (const e5 of t3) this.i._addDoubleVectorEntry(r3, e5);
25153          this.i._addDoubleVectorToInputStream(r3, e4, n3);
25154        }));
25155      }
25156      addFloatVectorToStream(t3, e3, n3) {
25157        na(this, e3, ((e4) => {
25158          const r3 = this.i._allocateFloatVector(t3.length);
25159          if (!r3) throw Error("Unable to allocate new float vector on heap.");
25160          for (const e5 of t3) this.i._addFloatVectorEntry(r3, e5);
25161          this.i._addFloatVectorToInputStream(r3, e4, n3);
25162        }));
25163      }
25164      addIntVectorToStream(t3, e3, n3) {
25165        na(this, e3, ((e4) => {
25166          const r3 = this.i._allocateIntVector(t3.length);
25167          if (!r3) throw Error("Unable to allocate new int vector on heap.");
25168          for (const e5 of t3) this.i._addIntVectorEntry(r3, e5);
25169          this.i._addIntVectorToInputStream(r3, e4, n3);
25170        }));
25171      }
25172      addUintVectorToStream(t3, e3, n3) {
25173        na(this, e3, ((e4) => {
25174          const r3 = this.i._allocateUintVector(t3.length);
25175          if (!r3) throw Error("Unable to allocate new unsigned int vector on heap.");
25176          for (const e5 of t3) this.i._addUintVectorEntry(r3, e5);
25177          this.i._addUintVectorToInputStream(r3, e4, n3);
25178        }));
25179      }
25180      addStringVectorToStream(t3, e3, n3) {
25181        na(this, e3, ((e4) => {
25182          const r3 = this.i._allocateStringVector(t3.length);
25183          if (!r3) throw Error("Unable to allocate new string vector on heap.");
25184          for (const e5 of t3) na(this, e5, ((t4) => {
25185            this.i._addStringVectorEntry(r3, t4);
25186          }));
25187          this.i._addStringVectorToInputStream(r3, e4, n3);
25188        }));
25189      }
25190      addBoolToInputSidePacket(t3, e3) {
25191        na(this, e3, ((e4) => {
25192          this.i._addBoolToInputSidePacket(t3, e4);
25193        }));
25194      }
25195      addDoubleToInputSidePacket(t3, e3) {
25196        na(this, e3, ((e4) => {
25197          this.i._addDoubleToInputSidePacket(t3, e4);
25198        }));
25199      }
25200      addFloatToInputSidePacket(t3, e3) {
25201        na(this, e3, ((e4) => {
25202          this.i._addFloatToInputSidePacket(t3, e4);
25203        }));
25204      }
25205      addIntToInputSidePacket(t3, e3) {
25206        na(this, e3, ((e4) => {
25207          this.i._addIntToInputSidePacket(t3, e4);
25208        }));
25209      }
25210      addUintToInputSidePacket(t3, e3) {
25211        na(this, e3, ((e4) => {
25212          this.i._addUintToInputSidePacket(t3, e4);
25213        }));
25214      }
25215      addStringToInputSidePacket(t3, e3) {
25216        na(this, e3, ((e4) => {
25217          na(this, t3, ((t4) => {
25218            this.i._addStringToInputSidePacket(t4, e4);
25219          }));
25220        }));
25221      }
25222      addProtoToInputSidePacket(t3, e3, n3) {
25223        na(this, n3, ((n4) => {
25224          na(this, e3, ((e4) => {
25225            const r3 = this.i._malloc(t3.length);
25226            this.i.HEAPU8.set(t3, r3), this.i._addProtoToInputSidePacket(r3, t3.length, e4, n4), this.i._free(r3);
25227          }));
25228        }));
25229      }
25230      addBoolVectorToInputSidePacket(t3, e3) {
25231        na(this, e3, ((e4) => {
25232          const n3 = this.i._allocateBoolVector(t3.length);
25233          if (!n3) throw Error("Unable to allocate new bool vector on heap.");
25234          for (const e5 of t3) this.i._addBoolVectorEntry(n3, e5);
25235          this.i._addBoolVectorToInputSidePacket(n3, e4);
25236        }));
25237      }
25238      addDoubleVectorToInputSidePacket(t3, e3) {
25239        na(this, e3, ((e4) => {
25240          const n3 = this.i._allocateDoubleVector(t3.length);
25241          if (!n3) throw Error("Unable to allocate new double vector on heap.");
25242          for (const e5 of t3) this.i._addDoubleVectorEntry(n3, e5);
25243          this.i._addDoubleVectorToInputSidePacket(n3, e4);
25244        }));
25245      }
25246      addFloatVectorToInputSidePacket(t3, e3) {
25247        na(this, e3, ((e4) => {
25248          const n3 = this.i._allocateFloatVector(t3.length);
25249          if (!n3) throw Error("Unable to allocate new float vector on heap.");
25250          for (const e5 of t3) this.i._addFloatVectorEntry(n3, e5);
25251          this.i._addFloatVectorToInputSidePacket(n3, e4);
25252        }));
25253      }
25254      addIntVectorToInputSidePacket(t3, e3) {
25255        na(this, e3, ((e4) => {
25256          const n3 = this.i._allocateIntVector(t3.length);
25257          if (!n3) throw Error("Unable to allocate new int vector on heap.");
25258          for (const e5 of t3) this.i._addIntVectorEntry(n3, e5);
25259          this.i._addIntVectorToInputSidePacket(n3, e4);
25260        }));
25261      }
25262      addUintVectorToInputSidePacket(t3, e3) {
25263        na(this, e3, ((e4) => {
25264          const n3 = this.i._allocateUintVector(t3.length);
25265          if (!n3) throw Error("Unable to allocate new unsigned int vector on heap.");
25266          for (const e5 of t3) this.i._addUintVectorEntry(n3, e5);
25267          this.i._addUintVectorToInputSidePacket(n3, e4);
25268        }));
25269      }
25270      addStringVectorToInputSidePacket(t3, e3) {
25271        na(this, e3, ((e4) => {
25272          const n3 = this.i._allocateStringVector(t3.length);
25273          if (!n3) throw Error("Unable to allocate new string vector on heap.");
25274          for (const e5 of t3) na(this, e5, ((t4) => {
25275            this.i._addStringVectorEntry(n3, t4);
25276          }));
25277          this.i._addStringVectorToInputSidePacket(n3, e4);
25278        }));
25279      }
25280      attachBoolListener(t3, e3) {
25281        sa(this, t3, e3), na(this, t3, ((t4) => {
25282          this.i._attachBoolListener(t4);
25283        }));
25284      }
25285      attachBoolVectorListener(t3, e3) {
25286        oa(this, t3, e3), na(this, t3, ((t4) => {
25287          this.i._attachBoolVectorListener(t4);
25288        }));
25289      }
25290      attachIntListener(t3, e3) {
25291        sa(this, t3, e3), na(this, t3, ((t4) => {
25292          this.i._attachIntListener(t4);
25293        }));
25294      }
25295      attachIntVectorListener(t3, e3) {
25296        oa(this, t3, e3), na(this, t3, ((t4) => {
25297          this.i._attachIntVectorListener(t4);
25298        }));
25299      }
25300      attachUintListener(t3, e3) {
25301        sa(this, t3, e3), na(this, t3, ((t4) => {
25302          this.i._attachUintListener(t4);
25303        }));
25304      }
25305      attachUintVectorListener(t3, e3) {
25306        oa(this, t3, e3), na(this, t3, ((t4) => {
25307          this.i._attachUintVectorListener(t4);
25308        }));
25309      }
25310      attachDoubleListener(t3, e3) {
25311        sa(this, t3, e3), na(this, t3, ((t4) => {
25312          this.i._attachDoubleListener(t4);
25313        }));
25314      }
25315      attachDoubleVectorListener(t3, e3) {
25316        oa(this, t3, e3), na(this, t3, ((t4) => {
25317          this.i._attachDoubleVectorListener(t4);
25318        }));
25319      }
25320      attachFloatListener(t3, e3) {
25321        sa(this, t3, e3), na(this, t3, ((t4) => {
25322          this.i._attachFloatListener(t4);
25323        }));
25324      }
25325      attachFloatVectorListener(t3, e3) {
25326        oa(this, t3, e3), na(this, t3, ((t4) => {
25327          this.i._attachFloatVectorListener(t4);
25328        }));
25329      }
25330      attachStringListener(t3, e3) {
25331        sa(this, t3, e3), na(this, t3, ((t4) => {
25332          this.i._attachStringListener(t4);
25333        }));
25334      }
25335      attachStringVectorListener(t3, e3) {
25336        oa(this, t3, e3), na(this, t3, ((t4) => {
25337          this.i._attachStringVectorListener(t4);
25338        }));
25339      }
25340      attachProtoListener(t3, e3, n3) {
25341        sa(this, t3, e3), na(this, t3, ((t4) => {
25342          this.i._attachProtoListener(t4, n3 || false);
25343        }));
25344      }
25345      attachProtoVectorListener(t3, e3, n3) {
25346        oa(this, t3, e3), na(this, t3, ((t4) => {
25347          this.i._attachProtoVectorListener(t4, n3 || false);
25348        }));
25349      }
25350      attachAudioListener(t3, e3, n3) {
25351        this.i._attachAudioListener || console.warn('Attempting to use attachAudioListener without support for output audio. Is build dep ":gl_graph_runner_audio_out" missing?'), sa(this, t3, ((t4, n4) => {
25352          t4 = new Float32Array(t4.buffer, t4.byteOffset, t4.length / 4), e3(t4, n4);
25353        })), na(this, t3, ((t4) => {
25354          this.i._attachAudioListener(t4, n3 || false);
25355        }));
25356      }
25357      finishProcessing() {
25358        this.i._waitUntilIdle();
25359      }
25360      closeGraph() {
25361        this.i._closeGraph(), this.i.simpleListeners = void 0, this.i.emptyPacketListeners = void 0;
25362      }
25363    }, class extends oc {
25364      get ga() {
25365        return this.i;
25366      }
25367      pa(t3, e3, n3) {
25368        na(this, e3, ((e4) => {
25369          const [r3, i3] = ra(this, t3, e4);
25370          this.ga._addBoundTextureAsImageToStream(e4, r3, i3, n3);
25371        }));
25372      }
25373      Z(t3, e3) {
25374        sa(this, t3, e3), na(this, t3, ((t4) => {
25375          this.ga._attachImageListener(t4);
25376        }));
25377      }
25378      aa(t3, e3) {
25379        oa(this, t3, e3), na(this, t3, ((t4) => {
25380          this.ga._attachImageVectorListener(t4);
25381        }));
25382      }
25383    }));
25384    ac = class extends sc {
25385    };
25386    dc = class extends pa {
25387      constructor(t3, e3, n3, r3) {
25388        super(t3), this.g = t3, this.X = e3, this.U = n3, this.oa = r3, this.P = new ba();
25389      }
25390      l(t3, e3 = true) {
25391        if ("runningMode" in t3 && Ze(this.baseOptions, 2, Jt(!!t3.runningMode && "IMAGE" !== t3.runningMode)), void 0 !== t3.canvas && this.g.i.canvas !== t3.canvas) throw Error("You must create a new task to reset the canvas.");
25392        return super.l(t3, e3);
25393      }
25394      close() {
25395        this.P.close(), super.close();
25396      }
25397    };
25398    dc.prototype.close = dc.prototype.close;
25399    pc = class extends dc {
25400      constructor(t3, e3) {
25401        super(new ac(t3, e3), "image_in", "norm_rect_in", false), this.j = { detections: [] }, wn(t3 = this.h = new zs(), 0, 1, e3 = new Xs()), Ln(this.h, 2, 0.5), Ln(this.h, 3, 0.3);
25402      }
25403      get baseOptions() {
25404        return yn(this.h, Xs, 1);
25405      }
25406      set baseOptions(t3) {
25407        wn(this.h, 0, 1, t3);
25408      }
25409      o(t3) {
25410        return "minDetectionConfidence" in t3 && Ln(this.h, 2, t3.minDetectionConfidence ?? 0.5), "minSuppressionThreshold" in t3 && Ln(this.h, 3, t3.minSuppressionThreshold ?? 0.3), this.l(t3);
25411      }
25412      F(t3, e3) {
25413        return this.j = { detections: [] }, uc(this, t3, e3), this.j;
25414      }
25415      G(t3, e3, n3) {
25416        return this.j = { detections: [] }, lc(this, t3, n3, e3), this.j;
25417      }
25418      m() {
25419        var t3 = new ls();
25420        hs(t3, "image_in"), hs(t3, "norm_rect_in"), us(t3, "detections");
25421        const e3 = new Qi();
25422        xr(e3, Ys, this.h);
25423        const n3 = new is();
25424        Rn(n3, 2, "mediapipe.tasks.vision.face_detector.FaceDetectorGraph"), ns(n3, "IMAGE:image_in"), ns(n3, "NORM_RECT:norm_rect_in"), rs(n3, "DETECTIONS:detections"), n3.o(e3), cs(t3, n3), this.g.attachProtoVectorListener("detections", ((t4, e4) => {
25425          for (const e5 of t4) t4 = ws(e5), this.j.detections.push(Xo(t4));
25426          ua(this, e4);
25427        })), this.g.attachEmptyPacketListener("detections", ((t4) => {
25428          ua(this, t4);
25429        })), t3 = t3.g(), this.setGraph(new Uint8Array(t3), true);
25430      }
25431    };
25432    pc.prototype.detectForVideo = pc.prototype.G, pc.prototype.detect = pc.prototype.F, pc.prototype.setOptions = pc.prototype.o, pc.createFromModelPath = async function(t3, e3) {
25433      return cc(pc, t3, { baseOptions: { modelAssetPath: e3 } });
25434    }, pc.createFromModelBuffer = function(t3, e3) {
25435      return cc(pc, t3, { baseOptions: { modelAssetBuffer: e3 } });
25436    }, pc.createFromOptions = function(t3, e3) {
25437      return cc(pc, t3, e3);
25438    };
25439    gc = ic([61, 146], [146, 91], [91, 181], [181, 84], [84, 17], [17, 314], [314, 405], [405, 321], [321, 375], [375, 291], [61, 185], [185, 40], [40, 39], [39, 37], [37, 0], [0, 267], [267, 269], [269, 270], [270, 409], [409, 291], [78, 95], [95, 88], [88, 178], [178, 87], [87, 14], [14, 317], [317, 402], [402, 318], [318, 324], [324, 308], [78, 191], [191, 80], [80, 81], [81, 82], [82, 13], [13, 312], [312, 311], [311, 310], [310, 415], [415, 308]);
25440    mc = ic([263, 249], [249, 390], [390, 373], [373, 374], [374, 380], [380, 381], [381, 382], [382, 362], [263, 466], [466, 388], [388, 387], [387, 386], [386, 385], [385, 384], [384, 398], [398, 362]);
25441    yc = ic([276, 283], [283, 282], [282, 295], [295, 285], [300, 293], [293, 334], [334, 296], [296, 336]);
25442    _c = ic([474, 475], [475, 476], [476, 477], [477, 474]);
25443    vc = ic([33, 7], [7, 163], [163, 144], [144, 145], [145, 153], [153, 154], [154, 155], [155, 133], [33, 246], [246, 161], [161, 160], [160, 159], [159, 158], [158, 157], [157, 173], [173, 133]);
25444    Ec = ic([46, 53], [53, 52], [52, 65], [65, 55], [70, 63], [63, 105], [105, 66], [66, 107]);
25445    wc = ic([469, 470], [470, 471], [471, 472], [472, 469]);
25446    Tc = ic([10, 338], [338, 297], [297, 332], [332, 284], [284, 251], [251, 389], [389, 356], [356, 454], [454, 323], [323, 361], [361, 288], [288, 397], [397, 365], [365, 379], [379, 378], [378, 400], [400, 377], [377, 152], [152, 148], [148, 176], [176, 149], [149, 150], [150, 136], [136, 172], [172, 58], [58, 132], [132, 93], [93, 234], [234, 127], [127, 162], [162, 21], [21, 54], [54, 103], [103, 67], [67, 109], [109, 10]);
25447    Ac = [...gc, ...mc, ...yc, ...vc, ...Ec, ...Tc];
25448    bc = ic([127, 34], [34, 139], [139, 127], [11, 0], [0, 37], [37, 11], [232, 231], [231, 120], [120, 232], [72, 37], [37, 39], [39, 72], [128, 121], [121, 47], [47, 128], [232, 121], [121, 128], [128, 232], [104, 69], [69, 67], [67, 104], [175, 171], [171, 148], [148, 175], [118, 50], [50, 101], [101, 118], [73, 39], [39, 40], [40, 73], [9, 151], [151, 108], [108, 9], [48, 115], [115, 131], [131, 48], [194, 204], [204, 211], [211, 194], [74, 40], [40, 185], [185, 74], [80, 42], [42, 183], [183, 80], [40, 92], [92, 186], [186, 40], [230, 229], [229, 118], [118, 230], [202, 212], [212, 214], [214, 202], [83, 18], [18, 17], [17, 83], [76, 61], [61, 146], [146, 76], [160, 29], [29, 30], [30, 160], [56, 157], [157, 173], [173, 56], [106, 204], [204, 194], [194, 106], [135, 214], [214, 192], [192, 135], [203, 165], [165, 98], [98, 203], [21, 71], [71, 68], [68, 21], [51, 45], [45, 4], [4, 51], [144, 24], [24, 23], [23, 144], [77, 146], [146, 91], [91, 77], [205, 50], [50, 187], [187, 205], [201, 200], [200, 18], [18, 201], [91, 106], [106, 182], [182, 91], [90, 91], [91, 181], [181, 90], [85, 84], [84, 17], [17, 85], [206, 203], [203, 36], [36, 206], [148, 171], [171, 140], [140, 148], [92, 40], [40, 39], [39, 92], [193, 189], [189, 244], [244, 193], [159, 158], [158, 28], [28, 159], [247, 246], [246, 161], [161, 247], [236, 3], [3, 196], [196, 236], [54, 68], [68, 104], [104, 54], [193, 168], [168, 8], [8, 193], [117, 228], [228, 31], [31, 117], [189, 193], [193, 55], [55, 189], [98, 97], [97, 99], [99, 98], [126, 47], [47, 100], [100, 126], [166, 79], [79, 218], [218, 166], [155, 154], [154, 26], [26, 155], [209, 49], [49, 131], [131, 209], [135, 136], [136, 150], [150, 135], [47, 126], [126, 217], [217, 47], [223, 52], [52, 53], [53, 223], [45, 51], [51, 134], [134, 45], [211, 170], [170, 140], [140, 211], [67, 69], [69, 108], [108, 67], [43, 106], [106, 91], [91, 43], [230, 119], [119, 120], [120, 230], [226, 130], [130, 247], [247, 226], [63, 53], [53, 52], [52, 63], [238, 20], [20, 242], [242, 238], [46, 70], [70, 156], [156, 46], [78, 62], [62, 96], [96, 78], [46, 53], [53, 63], [63, 46], [143, 34], [34, 227], [227, 143], [123, 117], [117, 111], [111, 123], [44, 125], [125, 19], [19, 44], [236, 134], [134, 51], [51, 236], [216, 206], [206, 205], [205, 216], [154, 153], [153, 22], [22, 154], [39, 37], [37, 167], [167, 39], [200, 201], [201, 208], [208, 200], [36, 142], [142, 100], [100, 36], [57, 212], [212, 202], [202, 57], [20, 60], [60, 99], [99, 20], [28, 158], [158, 157], [157, 28], [35, 226], [226, 113], [113, 35], [160, 159], [159, 27], [27, 160], [204, 202], [202, 210], [210, 204], [113, 225], [225, 46], [46, 113], [43, 202], [202, 204], [204, 43], [62, 76], [76, 77], [77, 62], [137, 123], [123, 116], [116, 137], [41, 38], [38, 72], [72, 41], [203, 129], [129, 142], [142, 203], [64, 98], [98, 240], [240, 64], [49, 102], [102, 64], [64, 49], [41, 73], [73, 74], [74, 41], [212, 216], [216, 207], [207, 212], [42, 74], [74, 184], [184, 42], [169, 170], [170, 211], [211, 169], [170, 149], [149, 176], [176, 170], [105, 66], [66, 69], [69, 105], [122, 6], [6, 168], [168, 122], [123, 147], [147, 187], [187, 123], [96, 77], [77, 90], [90, 96], [65, 55], [55, 107], [107, 65], [89, 90], [90, 180], [180, 89], [101, 100], [100, 120], [120, 101], [63, 105], [105, 104], [104, 63], [93, 137], [137, 227], [227, 93], [15, 86], [86, 85], [85, 15], [129, 102], [102, 49], [49, 129], [14, 87], [87, 86], [86, 14], [55, 8], [8, 9], [9, 55], [100, 47], [47, 121], [121, 100], [145, 23], [23, 22], [22, 145], [88, 89], [89, 179], [179, 88], [6, 122], [122, 196], [196, 6], [88, 95], [95, 96], [96, 88], [138, 172], [172, 136], [136, 138], [215, 58], [58, 172], [172, 215], [115, 48], [48, 219], [219, 115], [42, 80], [80, 81], [81, 42], [195, 3], [3, 51], [51, 195], [43, 146], [146, 61], [61, 43], [171, 175], [175, 199], [199, 171], [81, 82], [82, 38], [38, 81], [53, 46], [46, 225], [225, 53], [144, 163], [163, 110], [110, 144], [52, 65], [65, 66], [66, 52], [229, 228], [228, 117], [117, 229], [34, 127], [127, 234], [234, 34], [107, 108], [108, 69], [69, 107], [109, 108], [108, 151], [151, 109], [48, 64], [64, 235], [235, 48], [62, 78], [78, 191], [191, 62], [129, 209], [209, 126], [126, 129], [111, 35], [35, 143], [143, 111], [117, 123], [123, 50], [50, 117], [222, 65], [65, 52], [52, 222], [19, 125], [125, 141], [141, 19], [221, 55], [55, 65], [65, 221], [3, 195], [195, 197], [197, 3], [25, 7], [7, 33], [33, 25], [220, 237], [237, 44], [44, 220], [70, 71], [71, 139], [139, 70], [122, 193], [193, 245], [245, 122], [247, 130], [130, 33], [33, 247], [71, 21], [21, 162], [162, 71], [170, 169], [169, 150], [150, 170], [188, 174], [174, 196], [196, 188], [216, 186], [186, 92], [92, 216], [2, 97], [97, 167], [167, 2], [141, 125], [125, 241], [241, 141], [164, 167], [167, 37], [37, 164], [72, 38], [38, 12], [12, 72], [38, 82], [82, 13], [13, 38], [63, 68], [68, 71], [71, 63], [226, 35], [35, 111], [111, 226], [101, 50], [50, 205], [205, 101], [206, 92], [92, 165], [165, 206], [209, 198], [198, 217], [217, 209], [165, 167], [167, 97], [97, 165], [220, 115], [115, 218], [218, 220], [133, 112], [112, 243], [243, 133], [239, 238], [238, 241], [241, 239], [214, 135], [135, 169], [169, 214], [190, 173], [173, 133], [133, 190], [171, 208], [208, 32], [32, 171], [125, 44], [44, 237], [237, 125], [86, 87], [87, 178], [178, 86], [85, 86], [86, 179], [179, 85], [84, 85], [85, 180], [180, 84], [83, 84], [84, 181], [181, 83], [201, 83], [83, 182], [182, 201], [137, 93], [93, 132], [132, 137], [76, 62], [62, 183], [183, 76], [61, 76], [76, 184], [184, 61], [57, 61], [61, 185], [185, 57], [212, 57], [57, 186], [186, 212], [214, 207], [207, 187], [187, 214], [34, 143], [143, 156], [156, 34], [79, 239], [239, 237], [237, 79], [123, 137], [137, 177], [177, 123], [44, 1], [1, 4], [4, 44], [201, 194], [194, 32], [32, 201], [64, 102], [102, 129], [129, 64], [213, 215], [215, 138], [138, 213], [59, 166], [166, 219], [219, 59], [242, 99], [99, 97], [97, 242], [2, 94], [94, 141], [141, 2], [75, 59], [59, 235], [235, 75], [24, 110], [110, 228], [228, 24], [25, 130], [130, 226], [226, 25], [23, 24], [24, 229], [229, 23], [22, 23], [23, 230], [230, 22], [26, 22], [22, 231], [231, 26], [112, 26], [26, 232], [232, 112], [189, 190], [190, 243], [243, 189], [221, 56], [56, 190], [190, 221], [28, 56], [56, 221], [221, 28], [27, 28], [28, 222], [222, 27], [29, 27], [27, 223], [223, 29], [30, 29], [29, 224], [224, 30], [247, 30], [30, 225], [225, 247], [238, 79], [79, 20], [20, 238], [166, 59], [59, 75], [75, 166], [60, 75], [75, 240], [240, 60], [147, 177], [177, 215], [215, 147], [20, 79], [79, 166], [166, 20], [187, 147], [147, 213], [213, 187], [112, 233], [233, 244], [244, 112], [233, 128], [128, 245], [245, 233], [128, 114], [114, 188], [188, 128], [114, 217], [217, 174], [174, 114], [131, 115], [115, 220], [220, 131], [217, 198], [198, 236], [236, 217], [198, 131], [131, 134], [134, 198], [177, 132], [132, 58], [58, 177], [143, 35], [35, 124], [124, 143], [110, 163], [163, 7], [7, 110], [228, 110], [110, 25], [25, 228], [356, 389], [389, 368], [368, 356], [11, 302], [302, 267], [267, 11], [452, 350], [350, 349], [349, 452], [302, 303], [303, 269], [269, 302], [357, 343], [343, 277], [277, 357], [452, 453], [453, 357], [357, 452], [333, 332], [332, 297], [297, 333], [175, 152], [152, 377], [377, 175], [347, 348], [348, 330], [330, 347], [303, 304], [304, 270], [270, 303], [9, 336], [336, 337], [337, 9], [278, 279], [279, 360], [360, 278], [418, 262], [262, 431], [431, 418], [304, 408], [408, 409], [409, 304], [310, 415], [415, 407], [407, 310], [270, 409], [409, 410], [410, 270], [450, 348], [348, 347], [347, 450], [422, 430], [430, 434], [434, 422], [313, 314], [314, 17], [17, 313], [306, 307], [307, 375], [375, 306], [387, 388], [388, 260], [260, 387], [286, 414], [414, 398], [398, 286], [335, 406], [406, 418], [418, 335], [364, 367], [367, 416], [416, 364], [423, 358], [358, 327], [327, 423], [251, 284], [284, 298], [298, 251], [281, 5], [5, 4], [4, 281], [373, 374], [374, 253], [253, 373], [307, 320], [320, 321], [321, 307], [425, 427], [427, 411], [411, 425], [421, 313], [313, 18], [18, 421], [321, 405], [405, 406], [406, 321], [320, 404], [404, 405], [405, 320], [315, 16], [16, 17], [17, 315], [426, 425], [425, 266], [266, 426], [377, 400], [400, 369], [369, 377], [322, 391], [391, 269], [269, 322], [417, 465], [465, 464], [464, 417], [386, 257], [257, 258], [258, 386], [466, 260], [260, 388], [388, 466], [456, 399], [399, 419], [419, 456], [284, 332], [332, 333], [333, 284], [417, 285], [285, 8], [8, 417], [346, 340], [340, 261], [261, 346], [413, 441], [441, 285], [285, 413], [327, 460], [460, 328], [328, 327], [355, 371], [371, 329], [329, 355], [392, 439], [439, 438], [438, 392], [382, 341], [341, 256], [256, 382], [429, 420], [420, 360], [360, 429], [364, 394], [394, 379], [379, 364], [277, 343], [343, 437], [437, 277], [443, 444], [444, 283], [283, 443], [275, 440], [440, 363], [363, 275], [431, 262], [262, 369], [369, 431], [297, 338], [338, 337], [337, 297], [273, 375], [375, 321], [321, 273], [450, 451], [451, 349], [349, 450], [446, 342], [342, 467], [467, 446], [293, 334], [334, 282], [282, 293], [458, 461], [461, 462], [462, 458], [276, 353], [353, 383], [383, 276], [308, 324], [324, 325], [325, 308], [276, 300], [300, 293], [293, 276], [372, 345], [345, 447], [447, 372], [352, 345], [345, 340], [340, 352], [274, 1], [1, 19], [19, 274], [456, 248], [248, 281], [281, 456], [436, 427], [427, 425], [425, 436], [381, 256], [256, 252], [252, 381], [269, 391], [391, 393], [393, 269], [200, 199], [199, 428], [428, 200], [266, 330], [330, 329], [329, 266], [287, 273], [273, 422], [422, 287], [250, 462], [462, 328], [328, 250], [258, 286], [286, 384], [384, 258], [265, 353], [353, 342], [342, 265], [387, 259], [259, 257], [257, 387], [424, 431], [431, 430], [430, 424], [342, 353], [353, 276], [276, 342], [273, 335], [335, 424], [424, 273], [292, 325], [325, 307], [307, 292], [366, 447], [447, 345], [345, 366], [271, 303], [303, 302], [302, 271], [423, 266], [266, 371], [371, 423], [294, 455], [455, 460], [460, 294], [279, 278], [278, 294], [294, 279], [271, 272], [272, 304], [304, 271], [432, 434], [434, 427], [427, 432], [272, 407], [407, 408], [408, 272], [394, 430], [430, 431], [431, 394], [395, 369], [369, 400], [400, 395], [334, 333], [333, 299], [299, 334], [351, 417], [417, 168], [168, 351], [352, 280], [280, 411], [411, 352], [325, 319], [319, 320], [320, 325], [295, 296], [296, 336], [336, 295], [319, 403], [403, 404], [404, 319], [330, 348], [348, 349], [349, 330], [293, 298], [298, 333], [333, 293], [323, 454], [454, 447], [447, 323], [15, 16], [16, 315], [315, 15], [358, 429], [429, 279], [279, 358], [14, 15], [15, 316], [316, 14], [285, 336], [336, 9], [9, 285], [329, 349], [349, 350], [350, 329], [374, 380], [380, 252], [252, 374], [318, 402], [402, 403], [403, 318], [6, 197], [197, 419], [419, 6], [318, 319], [319, 325], [325, 318], [367, 364], [364, 365], [365, 367], [435, 367], [367, 397], [397, 435], [344, 438], [438, 439], [439, 344], [272, 271], [271, 311], [311, 272], [195, 5], [5, 281], [281, 195], [273, 287], [287, 291], [291, 273], [396, 428], [428, 199], [199, 396], [311, 271], [271, 268], [268, 311], [283, 444], [444, 445], [445, 283], [373, 254], [254, 339], [339, 373], [282, 334], [334, 296], [296, 282], [449, 347], [347, 346], [346, 449], [264, 447], [447, 454], [454, 264], [336, 296], [296, 299], [299, 336], [338, 10], [10, 151], [151, 338], [278, 439], [439, 455], [455, 278], [292, 407], [407, 415], [415, 292], [358, 371], [371, 355], [355, 358], [340, 345], [345, 372], [372, 340], [346, 347], [347, 280], [280, 346], [442, 443], [443, 282], [282, 442], [19, 94], [94, 370], [370, 19], [441, 442], [442, 295], [295, 441], [248, 419], [419, 197], [197, 248], [263, 255], [255, 359], [359, 263], [440, 275], [275, 274], [274, 440], [300, 383], [383, 368], [368, 300], [351, 412], [412, 465], [465, 351], [263, 467], [467, 466], [466, 263], [301, 368], [368, 389], [389, 301], [395, 378], [378, 379], [379, 395], [412, 351], [351, 419], [419, 412], [436, 426], [426, 322], [322, 436], [2, 164], [164, 393], [393, 2], [370, 462], [462, 461], [461, 370], [164, 0], [0, 267], [267, 164], [302, 11], [11, 12], [12, 302], [268, 12], [12, 13], [13, 268], [293, 300], [300, 301], [301, 293], [446, 261], [261, 340], [340, 446], [330, 266], [266, 425], [425, 330], [426, 423], [423, 391], [391, 426], [429, 355], [355, 437], [437, 429], [391, 327], [327, 326], [326, 391], [440, 457], [457, 438], [438, 440], [341, 382], [382, 362], [362, 341], [459, 457], [457, 461], [461, 459], [434, 430], [430, 394], [394, 434], [414, 463], [463, 362], [362, 414], [396, 369], [369, 262], [262, 396], [354, 461], [461, 457], [457, 354], [316, 403], [403, 402], [402, 316], [315, 404], [404, 403], [403, 315], [314, 405], [405, 404], [404, 314], [313, 406], [406, 405], [405, 313], [421, 418], [418, 406], [406, 421], [366, 401], [401, 361], [361, 366], [306, 408], [408, 407], [407, 306], [291, 409], [409, 408], [408, 291], [287, 410], [410, 409], [409, 287], [432, 436], [436, 410], [410, 432], [434, 416], [416, 411], [411, 434], [264, 368], [368, 383], [383, 264], [309, 438], [438, 457], [457, 309], [352, 376], [376, 401], [401, 352], [274, 275], [275, 4], [4, 274], [421, 428], [428, 262], [262, 421], [294, 327], [327, 358], [358, 294], [433, 416], [416, 367], [367, 433], [289, 455], [455, 439], [439, 289], [462, 370], [370, 326], [326, 462], [2, 326], [326, 370], [370, 2], [305, 460], [460, 455], [455, 305], [254, 449], [449, 448], [448, 254], [255, 261], [261, 446], [446, 255], [253, 450], [450, 449], [449, 253], [252, 451], [451, 450], [450, 252], [256, 452], [452, 451], [451, 256], [341, 453], [453, 452], [452, 341], [413, 464], [464, 463], [463, 413], [441, 413], [413, 414], [414, 441], [258, 442], [442, 441], [441, 258], [257, 443], [443, 442], [442, 257], [259, 444], [444, 443], [443, 259], [260, 445], [445, 444], [444, 260], [467, 342], [342, 445], [445, 467], [459, 458], [458, 250], [250, 459], [289, 392], [392, 290], [290, 289], [290, 328], [328, 460], [460, 290], [376, 433], [433, 435], [435, 376], [250, 290], [290, 392], [392, 250], [411, 416], [416, 433], [433, 411], [341, 463], [463, 464], [464, 341], [453, 464], [464, 465], [465, 453], [357, 465], [465, 412], [412, 357], [343, 412], [412, 399], [399, 343], [360, 363], [363, 440], [440, 360], [437, 399], [399, 456], [456, 437], [420, 456], [456, 363], [363, 420], [401, 435], [435, 288], [288, 401], [372, 383], [383, 353], [353, 372], [339, 255], [255, 249], [249, 339], [448, 261], [261, 255], [255, 448], [133, 243], [243, 190], [190, 133], [133, 155], [155, 112], [112, 133], [33, 246], [246, 247], [247, 33], [33, 130], [130, 25], [25, 33], [398, 384], [384, 286], [286, 398], [362, 398], [398, 414], [414, 362], [362, 463], [463, 341], [341, 362], [263, 359], [359, 467], [467, 263], [263, 249], [249, 255], [255, 263], [466, 467], [467, 260], [260, 466], [75, 60], [60, 166], [166, 75], [238, 239], [239, 79], [79, 238], [162, 127], [127, 139], [139, 162], [72, 11], [11, 37], [37, 72], [121, 232], [232, 120], [120, 121], [73, 72], [72, 39], [39, 73], [114, 128], [128, 47], [47, 114], [233, 232], [232, 128], [128, 233], [103, 104], [104, 67], [67, 103], [152, 175], [175, 148], [148, 152], [119, 118], [118, 101], [101, 119], [74, 73], [73, 40], [40, 74], [107, 9], [9, 108], [108, 107], [49, 48], [48, 131], [131, 49], [32, 194], [194, 211], [211, 32], [184, 74], [74, 185], [185, 184], [191, 80], [80, 183], [183, 191], [185, 40], [40, 186], [186, 185], [119, 230], [230, 118], [118, 119], [210, 202], [202, 214], [214, 210], [84, 83], [83, 17], [17, 84], [77, 76], [76, 146], [146, 77], [161, 160], [160, 30], [30, 161], [190, 56], [56, 173], [173, 190], [182, 106], [106, 194], [194, 182], [138, 135], [135, 192], [192, 138], [129, 203], [203, 98], [98, 129], [54, 21], [21, 68], [68, 54], [5, 51], [51, 4], [4, 5], [145, 144], [144, 23], [23, 145], [90, 77], [77, 91], [91, 90], [207, 205], [205, 187], [187, 207], [83, 201], [201, 18], [18, 83], [181, 91], [91, 182], [182, 181], [180, 90], [90, 181], [181, 180], [16, 85], [85, 17], [17, 16], [205, 206], [206, 36], [36, 205], [176, 148], [148, 140], [140, 176], [165, 92], [92, 39], [39, 165], [245, 193], [193, 244], [244, 245], [27, 159], [159, 28], [28, 27], [30, 247], [247, 161], [161, 30], [174, 236], [236, 196], [196, 174], [103, 54], [54, 104], [104, 103], [55, 193], [193, 8], [8, 55], [111, 117], [117, 31], [31, 111], [221, 189], [189, 55], [55, 221], [240, 98], [98, 99], [99, 240], [142, 126], [126, 100], [100, 142], [219, 166], [166, 218], [218, 219], [112, 155], [155, 26], [26, 112], [198, 209], [209, 131], [131, 198], [169, 135], [135, 150], [150, 169], [114, 47], [47, 217], [217, 114], [224, 223], [223, 53], [53, 224], [220, 45], [45, 134], [134, 220], [32, 211], [211, 140], [140, 32], [109, 67], [67, 108], [108, 109], [146, 43], [43, 91], [91, 146], [231, 230], [230, 120], [120, 231], [113, 226], [226, 247], [247, 113], [105, 63], [63, 52], [52, 105], [241, 238], [238, 242], [242, 241], [124, 46], [46, 156], [156, 124], [95, 78], [78, 96], [96, 95], [70, 46], [46, 63], [63, 70], [116, 143], [143, 227], [227, 116], [116, 123], [123, 111], [111, 116], [1, 44], [44, 19], [19, 1], [3, 236], [236, 51], [51, 3], [207, 216], [216, 205], [205, 207], [26, 154], [154, 22], [22, 26], [165, 39], [39, 167], [167, 165], [199, 200], [200, 208], [208, 199], [101, 36], [36, 100], [100, 101], [43, 57], [57, 202], [202, 43], [242, 20], [20, 99], [99, 242], [56, 28], [28, 157], [157, 56], [124, 35], [35, 113], [113, 124], [29, 160], [160, 27], [27, 29], [211, 204], [204, 210], [210, 211], [124, 113], [113, 46], [46, 124], [106, 43], [43, 204], [204, 106], [96, 62], [62, 77], [77, 96], [227, 137], [137, 116], [116, 227], [73, 41], [41, 72], [72, 73], [36, 203], [203, 142], [142, 36], [235, 64], [64, 240], [240, 235], [48, 49], [49, 64], [64, 48], [42, 41], [41, 74], [74, 42], [214, 212], [212, 207], [207, 214], [183, 42], [42, 184], [184, 183], [210, 169], [169, 211], [211, 210], [140, 170], [170, 176], [176, 140], [104, 105], [105, 69], [69, 104], [193, 122], [122, 168], [168, 193], [50, 123], [123, 187], [187, 50], [89, 96], [96, 90], [90, 89], [66, 65], [65, 107], [107, 66], [179, 89], [89, 180], [180, 179], [119, 101], [101, 120], [120, 119], [68, 63], [63, 104], [104, 68], [234, 93], [93, 227], [227, 234], [16, 15], [15, 85], [85, 16], [209, 129], [129, 49], [49, 209], [15, 14], [14, 86], [86, 15], [107, 55], [55, 9], [9, 107], [120, 100], [100, 121], [121, 120], [153, 145], [145, 22], [22, 153], [178, 88], [88, 179], [179, 178], [197, 6], [6, 196], [196, 197], [89, 88], [88, 96], [96, 89], [135, 138], [138, 136], [136, 135], [138, 215], [215, 172], [172, 138], [218, 115], [115, 219], [219, 218], [41, 42], [42, 81], [81, 41], [5, 195], [195, 51], [51, 5], [57, 43], [43, 61], [61, 57], [208, 171], [171, 199], [199, 208], [41, 81], [81, 38], [38, 41], [224, 53], [53, 225], [225, 224], [24, 144], [144, 110], [110, 24], [105, 52], [52, 66], [66, 105], [118, 229], [229, 117], [117, 118], [227, 34], [34, 234], [234, 227], [66, 107], [107, 69], [69, 66], [10, 109], [109, 151], [151, 10], [219, 48], [48, 235], [235, 219], [183, 62], [62, 191], [191, 183], [142, 129], [129, 126], [126, 142], [116, 111], [111, 143], [143, 116], [118, 117], [117, 50], [50, 118], [223, 222], [222, 52], [52, 223], [94, 19], [19, 141], [141, 94], [222, 221], [221, 65], [65, 222], [196, 3], [3, 197], [197, 196], [45, 220], [220, 44], [44, 45], [156, 70], [70, 139], [139, 156], [188, 122], [122, 245], [245, 188], [139, 71], [71, 162], [162, 139], [149, 170], [170, 150], [150, 149], [122, 188], [188, 196], [196, 122], [206, 216], [216, 92], [92, 206], [164, 2], [2, 167], [167, 164], [242, 141], [141, 241], [241, 242], [0, 164], [164, 37], [37, 0], [11, 72], [72, 12], [12, 11], [12, 38], [38, 13], [13, 12], [70, 63], [63, 71], [71, 70], [31, 226], [226, 111], [111, 31], [36, 101], [101, 205], [205, 36], [203, 206], [206, 165], [165, 203], [126, 209], [209, 217], [217, 126], [98, 165], [165, 97], [97, 98], [237, 220], [220, 218], [218, 237], [237, 239], [239, 241], [241, 237], [210, 214], [214, 169], [169, 210], [140, 171], [171, 32], [32, 140], [241, 125], [125, 237], [237, 241], [179, 86], [86, 178], [178, 179], [180, 85], [85, 179], [179, 180], [181, 84], [84, 180], [180, 181], [182, 83], [83, 181], [181, 182], [194, 201], [201, 182], [182, 194], [177, 137], [137, 132], [132, 177], [184, 76], [76, 183], [183, 184], [185, 61], [61, 184], [184, 185], [186, 57], [57, 185], [185, 186], [216, 212], [212, 186], [186, 216], [192, 214], [214, 187], [187, 192], [139, 34], [34, 156], [156, 139], [218, 79], [79, 237], [237, 218], [147, 123], [123, 177], [177, 147], [45, 44], [44, 4], [4, 45], [208, 201], [201, 32], [32, 208], [98, 64], [64, 129], [129, 98], [192, 213], [213, 138], [138, 192], [235, 59], [59, 219], [219, 235], [141, 242], [242, 97], [97, 141], [97, 2], [2, 141], [141, 97], [240, 75], [75, 235], [235, 240], [229, 24], [24, 228], [228, 229], [31, 25], [25, 226], [226, 31], [230, 23], [23, 229], [229, 230], [231, 22], [22, 230], [230, 231], [232, 26], [26, 231], [231, 232], [233, 112], [112, 232], [232, 233], [244, 189], [189, 243], [243, 244], [189, 221], [221, 190], [190, 189], [222, 28], [28, 221], [221, 222], [223, 27], [27, 222], [222, 223], [224, 29], [29, 223], [223, 224], [225, 30], [30, 224], [224, 225], [113, 247], [247, 225], [225, 113], [99, 60], [60, 240], [240, 99], [213, 147], [147, 215], [215, 213], [60, 20], [20, 166], [166, 60], [192, 187], [187, 213], [213, 192], [243, 112], [112, 244], [244, 243], [244, 233], [233, 245], [245, 244], [245, 128], [128, 188], [188, 245], [188, 114], [114, 174], [174, 188], [134, 131], [131, 220], [220, 134], [174, 217], [217, 236], [236, 174], [236, 198], [198, 134], [134, 236], [215, 177], [177, 58], [58, 215], [156, 143], [143, 124], [124, 156], [25, 110], [110, 7], [7, 25], [31, 228], [228, 25], [25, 31], [264, 356], [356, 368], [368, 264], [0, 11], [11, 267], [267, 0], [451, 452], [452, 349], [349, 451], [267, 302], [302, 269], [269, 267], [350, 357], [357, 277], [277, 350], [350, 452], [452, 357], [357, 350], [299, 333], [333, 297], [297, 299], [396, 175], [175, 377], [377, 396], [280, 347], [347, 330], [330, 280], [269, 303], [303, 270], [270, 269], [151, 9], [9, 337], [337, 151], [344, 278], [278, 360], [360, 344], [424, 418], [418, 431], [431, 424], [270, 304], [304, 409], [409, 270], [272, 310], [310, 407], [407, 272], [322, 270], [270, 410], [410, 322], [449, 450], [450, 347], [347, 449], [432, 422], [422, 434], [434, 432], [18, 313], [313, 17], [17, 18], [291, 306], [306, 375], [375, 291], [259, 387], [387, 260], [260, 259], [424, 335], [335, 418], [418, 424], [434, 364], [364, 416], [416, 434], [391, 423], [423, 327], [327, 391], [301, 251], [251, 298], [298, 301], [275, 281], [281, 4], [4, 275], [254, 373], [373, 253], [253, 254], [375, 307], [307, 321], [321, 375], [280, 425], [425, 411], [411, 280], [200, 421], [421, 18], [18, 200], [335, 321], [321, 406], [406, 335], [321, 320], [320, 405], [405, 321], [314, 315], [315, 17], [17, 314], [423, 426], [426, 266], [266, 423], [396, 377], [377, 369], [369, 396], [270, 322], [322, 269], [269, 270], [413, 417], [417, 464], [464, 413], [385, 386], [386, 258], [258, 385], [248, 456], [456, 419], [419, 248], [298, 284], [284, 333], [333, 298], [168, 417], [417, 8], [8, 168], [448, 346], [346, 261], [261, 448], [417, 413], [413, 285], [285, 417], [326, 327], [327, 328], [328, 326], [277, 355], [355, 329], [329, 277], [309, 392], [392, 438], [438, 309], [381, 382], [382, 256], [256, 381], [279, 429], [429, 360], [360, 279], [365, 364], [364, 379], [379, 365], [355, 277], [277, 437], [437, 355], [282, 443], [443, 283], [283, 282], [281, 275], [275, 363], [363, 281], [395, 431], [431, 369], [369, 395], [299, 297], [297, 337], [337, 299], [335, 273], [273, 321], [321, 335], [348, 450], [450, 349], [349, 348], [359, 446], [446, 467], [467, 359], [283, 293], [293, 282], [282, 283], [250, 458], [458, 462], [462, 250], [300, 276], [276, 383], [383, 300], [292, 308], [308, 325], [325, 292], [283, 276], [276, 293], [293, 283], [264, 372], [372, 447], [447, 264], [346, 352], [352, 340], [340, 346], [354, 274], [274, 19], [19, 354], [363, 456], [456, 281], [281, 363], [426, 436], [436, 425], [425, 426], [380, 381], [381, 252], [252, 380], [267, 269], [269, 393], [393, 267], [421, 200], [200, 428], [428, 421], [371, 266], [266, 329], [329, 371], [432, 287], [287, 422], [422, 432], [290, 250], [250, 328], [328, 290], [385, 258], [258, 384], [384, 385], [446, 265], [265, 342], [342, 446], [386, 387], [387, 257], [257, 386], [422, 424], [424, 430], [430, 422], [445, 342], [342, 276], [276, 445], [422, 273], [273, 424], [424, 422], [306, 292], [292, 307], [307, 306], [352, 366], [366, 345], [345, 352], [268, 271], [271, 302], [302, 268], [358, 423], [423, 371], [371, 358], [327, 294], [294, 460], [460, 327], [331, 279], [279, 294], [294, 331], [303, 271], [271, 304], [304, 303], [436, 432], [432, 427], [427, 436], [304, 272], [272, 408], [408, 304], [395, 394], [394, 431], [431, 395], [378, 395], [395, 400], [400, 378], [296, 334], [334, 299], [299, 296], [6, 351], [351, 168], [168, 6], [376, 352], [352, 411], [411, 376], [307, 325], [325, 320], [320, 307], [285, 295], [295, 336], [336, 285], [320, 319], [319, 404], [404, 320], [329, 330], [330, 349], [349, 329], [334, 293], [293, 333], [333, 334], [366, 323], [323, 447], [447, 366], [316, 15], [15, 315], [315, 316], [331, 358], [358, 279], [279, 331], [317, 14], [14, 316], [316, 317], [8, 285], [285, 9], [9, 8], [277, 329], [329, 350], [350, 277], [253, 374], [374, 252], [252, 253], [319, 318], [318, 403], [403, 319], [351, 6], [6, 419], [419, 351], [324, 318], [318, 325], [325, 324], [397, 367], [367, 365], [365, 397], [288, 435], [435, 397], [397, 288], [278, 344], [344, 439], [439, 278], [310, 272], [272, 311], [311, 310], [248, 195], [195, 281], [281, 248], [375, 273], [273, 291], [291, 375], [175, 396], [396, 199], [199, 175], [312, 311], [311, 268], [268, 312], [276, 283], [283, 445], [445, 276], [390, 373], [373, 339], [339, 390], [295, 282], [282, 296], [296, 295], [448, 449], [449, 346], [346, 448], [356, 264], [264, 454], [454, 356], [337, 336], [336, 299], [299, 337], [337, 338], [338, 151], [151, 337], [294, 278], [278, 455], [455, 294], [308, 292], [292, 415], [415, 308], [429, 358], [358, 355], [355, 429], [265, 340], [340, 372], [372, 265], [352, 346], [346, 280], [280, 352], [295, 442], [442, 282], [282, 295], [354, 19], [19, 370], [370, 354], [285, 441], [441, 295], [295, 285], [195, 248], [248, 197], [197, 195], [457, 440], [440, 274], [274, 457], [301, 300], [300, 368], [368, 301], [417, 351], [351, 465], [465, 417], [251, 301], [301, 389], [389, 251], [394, 395], [395, 379], [379, 394], [399, 412], [412, 419], [419, 399], [410, 436], [436, 322], [322, 410], [326, 2], [2, 393], [393, 326], [354, 370], [370, 461], [461, 354], [393, 164], [164, 267], [267, 393], [268, 302], [302, 12], [12, 268], [312, 268], [268, 13], [13, 312], [298, 293], [293, 301], [301, 298], [265, 446], [446, 340], [340, 265], [280, 330], [330, 425], [425, 280], [322, 426], [426, 391], [391, 322], [420, 429], [429, 437], [437, 420], [393, 391], [391, 326], [326, 393], [344, 440], [440, 438], [438, 344], [458, 459], [459, 461], [461, 458], [364, 434], [434, 394], [394, 364], [428, 396], [396, 262], [262, 428], [274, 354], [354, 457], [457, 274], [317, 316], [316, 402], [402, 317], [316, 315], [315, 403], [403, 316], [315, 314], [314, 404], [404, 315], [314, 313], [313, 405], [405, 314], [313, 421], [421, 406], [406, 313], [323, 366], [366, 361], [361, 323], [292, 306], [306, 407], [407, 292], [306, 291], [291, 408], [408, 306], [291, 287], [287, 409], [409, 291], [287, 432], [432, 410], [410, 287], [427, 434], [434, 411], [411, 427], [372, 264], [264, 383], [383, 372], [459, 309], [309, 457], [457, 459], [366, 352], [352, 401], [401, 366], [1, 274], [274, 4], [4, 1], [418, 421], [421, 262], [262, 418], [331, 294], [294, 358], [358, 331], [435, 433], [433, 367], [367, 435], [392, 289], [289, 439], [439, 392], [328, 462], [462, 326], [326, 328], [94, 2], [2, 370], [370, 94], [289, 305], [305, 455], [455, 289], [339, 254], [254, 448], [448, 339], [359, 255], [255, 446], [446, 359], [254, 253], [253, 449], [449, 254], [253, 252], [252, 450], [450, 253], [252, 256], [256, 451], [451, 252], [256, 341], [341, 452], [452, 256], [414, 413], [413, 463], [463, 414], [286, 441], [441, 414], [414, 286], [286, 258], [258, 441], [441, 286], [258, 257], [257, 442], [442, 258], [257, 259], [259, 443], [443, 257], [259, 260], [260, 444], [444, 259], [260, 467], [467, 445], [445, 260], [309, 459], [459, 250], [250, 309], [305, 289], [289, 290], [290, 305], [305, 290], [290, 460], [460, 305], [401, 376], [376, 435], [435, 401], [309, 250], [250, 392], [392, 309], [376, 411], [411, 433], [433, 376], [453, 341], [341, 464], [464, 453], [357, 453], [453, 465], [465, 357], [343, 357], [357, 412], [412, 343], [437, 343], [343, 399], [399, 437], [344, 360], [360, 440], [440, 344], [420, 437], [437, 456], [456, 420], [360, 420], [420, 363], [363, 360], [361, 401], [401, 288], [288, 361], [265, 372], [372, 353], [353, 265], [390, 339], [339, 249], [249, 390], [339, 448], [448, 255], [255, 339]);
25449    Sc = class extends dc {
25450      constructor(t3, e3) {
25451        super(new ac(t3, e3), "image_in", "norm_rect", false), this.j = { faceLandmarks: [], faceBlendshapes: [], facialTransformationMatrixes: [] }, this.outputFacialTransformationMatrixes = this.outputFaceBlendshapes = false, wn(t3 = this.h = new Js(), 0, 1, e3 = new Xs()), this.A = new $s(), wn(this.h, 0, 3, this.A), this.u = new zs(), wn(this.h, 0, 2, this.u), xn(this.u, 4, 1), Ln(this.u, 2, 0.5), Ln(this.A, 2, 0.5), Ln(this.h, 4, 0.5);
25452      }
25453      get baseOptions() {
25454        return yn(this.h, Xs, 1);
25455      }
25456      set baseOptions(t3) {
25457        wn(this.h, 0, 1, t3);
25458      }
25459      o(t3) {
25460        return "numFaces" in t3 && xn(this.u, 4, t3.numFaces ?? 1), "minFaceDetectionConfidence" in t3 && Ln(this.u, 2, t3.minFaceDetectionConfidence ?? 0.5), "minTrackingConfidence" in t3 && Ln(this.h, 4, t3.minTrackingConfidence ?? 0.5), "minFacePresenceConfidence" in t3 && Ln(this.A, 2, t3.minFacePresenceConfidence ?? 0.5), "outputFaceBlendshapes" in t3 && (this.outputFaceBlendshapes = !!t3.outputFaceBlendshapes), "outputFacialTransformationMatrixes" in t3 && (this.outputFacialTransformationMatrixes = !!t3.outputFacialTransformationMatrixes), this.l(t3);
25461      }
25462      F(t3, e3) {
25463        return kc(this), uc(this, t3, e3), this.j;
25464      }
25465      G(t3, e3, n3) {
25466        return kc(this), lc(this, t3, n3, e3), this.j;
25467      }
25468      m() {
25469        var t3 = new ls();
25470        hs(t3, "image_in"), hs(t3, "norm_rect"), us(t3, "face_landmarks");
25471        const e3 = new Qi();
25472        xr(e3, Qs, this.h);
25473        const n3 = new is();
25474        Rn(n3, 2, "mediapipe.tasks.vision.face_landmarker.FaceLandmarkerGraph"), ns(n3, "IMAGE:image_in"), ns(n3, "NORM_RECT:norm_rect"), rs(n3, "NORM_LANDMARKS:face_landmarks"), n3.o(e3), cs(t3, n3), this.g.attachProtoVectorListener("face_landmarks", ((t4, e4) => {
25475          for (const e5 of t4) t4 = ks(e5), this.j.faceLandmarks.push(Ho(t4));
25476          ua(this, e4);
25477        })), this.g.attachEmptyPacketListener("face_landmarks", ((t4) => {
25478          ua(this, t4);
25479        })), this.outputFaceBlendshapes && (us(t3, "blendshapes"), rs(n3, "BLENDSHAPES:blendshapes"), this.g.attachProtoVectorListener("blendshapes", ((t4, e4) => {
25480          if (this.outputFaceBlendshapes) for (const e5 of t4) t4 = ys(e5), this.j.faceBlendshapes.push(jo(t4.g() ?? []));
25481          ua(this, e4);
25482        })), this.g.attachEmptyPacketListener("blendshapes", ((t4) => {
25483          ua(this, t4);
25484        }))), this.outputFacialTransformationMatrixes && (us(t3, "face_geometry"), rs(n3, "FACE_GEOMETRY:face_geometry"), this.g.attachProtoVectorListener("face_geometry", ((t4, e4) => {
25485          if (this.outputFacialTransformationMatrixes) for (const e5 of t4) (t4 = yn(t4 = qs(e5), Ss, 2)) && this.j.facialTransformationMatrixes.push({ rows: kn(t4, 1) ?? 0 ?? 0, columns: kn(t4, 2) ?? 0 ?? 0, data: en(t4, 3, $t, tn()).slice() ?? [] });
25486          ua(this, e4);
25487        })), this.g.attachEmptyPacketListener("face_geometry", ((t4) => {
25488          ua(this, t4);
25489        }))), t3 = t3.g(), this.setGraph(new Uint8Array(t3), true);
25490      }
25491    };
25492    Sc.prototype.detectForVideo = Sc.prototype.G, Sc.prototype.detect = Sc.prototype.F, Sc.prototype.setOptions = Sc.prototype.o, Sc.createFromModelPath = function(t3, e3) {
25493      return cc(Sc, t3, { baseOptions: { modelAssetPath: e3 } });
25494    }, Sc.createFromModelBuffer = function(t3, e3) {
25495      return cc(Sc, t3, { baseOptions: { modelAssetBuffer: e3 } });
25496    }, Sc.createFromOptions = function(t3, e3) {
25497      return cc(Sc, t3, e3);
25498    }, Sc.FACE_LANDMARKS_LIPS = gc, Sc.FACE_LANDMARKS_LEFT_EYE = mc, Sc.FACE_LANDMARKS_LEFT_EYEBROW = yc, Sc.FACE_LANDMARKS_LEFT_IRIS = _c, Sc.FACE_LANDMARKS_RIGHT_EYE = vc, Sc.FACE_LANDMARKS_RIGHT_EYEBROW = Ec, Sc.FACE_LANDMARKS_RIGHT_IRIS = wc, Sc.FACE_LANDMARKS_FACE_OVAL = Tc, Sc.FACE_LANDMARKS_CONTOURS = Ac, Sc.FACE_LANDMARKS_TESSELATION = bc;
25499    xc = ic([0, 1], [1, 2], [2, 3], [3, 4], [0, 5], [5, 6], [6, 7], [7, 8], [5, 9], [9, 10], [10, 11], [11, 12], [9, 13], [13, 14], [14, 15], [15, 16], [13, 17], [0, 17], [17, 18], [18, 19], [19, 20]);
25500    Fc = class extends dc {
25501      constructor(t3, e3) {
25502        super(new ac(t3, e3), "image_in", "norm_rect", false), this.gestures = [], this.landmarks = [], this.worldLandmarks = [], this.handedness = [], wn(t3 = this.j = new oo(), 0, 1, e3 = new Xs()), this.u = new so(), wn(this.j, 0, 2, this.u), this.D = new io(), wn(this.u, 0, 3, this.D), this.A = new ro(), wn(this.u, 0, 2, this.A), this.h = new no(), wn(this.j, 0, 3, this.h), Ln(this.A, 2, 0.5), Ln(this.u, 4, 0.5), Ln(this.D, 2, 0.5);
25503      }
25504      get baseOptions() {
25505        return yn(this.j, Xs, 1);
25506      }
25507      set baseOptions(t3) {
25508        wn(this.j, 0, 1, t3);
25509      }
25510      o(t3) {
25511        if (xn(this.A, 3, t3.numHands ?? 1), "minHandDetectionConfidence" in t3 && Ln(this.A, 2, t3.minHandDetectionConfidence ?? 0.5), "minTrackingConfidence" in t3 && Ln(this.u, 4, t3.minTrackingConfidence ?? 0.5), "minHandPresenceConfidence" in t3 && Ln(this.D, 2, t3.minHandPresenceConfidence ?? 0.5), t3.cannedGesturesClassifierOptions) {
25512          var e3 = new to(), n3 = e3, r3 = Bo(t3.cannedGesturesClassifierOptions, yn(this.h, to, 3)?.l());
25513          wn(n3, 0, 2, r3), wn(this.h, 0, 3, e3);
25514        } else void 0 === t3.cannedGesturesClassifierOptions && yn(this.h, to, 3)?.g();
25515        return t3.customGesturesClassifierOptions ? (wn(n3 = e3 = new to(), 0, 2, r3 = Bo(t3.customGesturesClassifierOptions, yn(this.h, to, 4)?.l())), wn(this.h, 0, 4, e3)) : void 0 === t3.customGesturesClassifierOptions && yn(this.h, to, 4)?.g(), this.l(t3);
25516      }
25517      Ha(t3, e3) {
25518        return Lc(this), uc(this, t3, e3), Rc(this);
25519      }
25520      Ia(t3, e3, n3) {
25521        return Lc(this), lc(this, t3, n3, e3), Rc(this);
25522      }
25523      m() {
25524        var t3 = new ls();
25525        hs(t3, "image_in"), hs(t3, "norm_rect"), us(t3, "hand_gestures"), us(t3, "hand_landmarks"), us(t3, "world_hand_landmarks"), us(t3, "handedness");
25526        const e3 = new Qi();
25527        xr(e3, lo, this.j);
25528        const n3 = new is();
25529        Rn(n3, 2, "mediapipe.tasks.vision.gesture_recognizer.GestureRecognizerGraph"), ns(n3, "IMAGE:image_in"), ns(n3, "NORM_RECT:norm_rect"), rs(n3, "HAND_GESTURES:hand_gestures"), rs(n3, "LANDMARKS:hand_landmarks"), rs(n3, "WORLD_LANDMARKS:world_hand_landmarks"), rs(n3, "HANDEDNESS:handedness"), n3.o(e3), cs(t3, n3), this.g.attachProtoVectorListener("hand_landmarks", ((t4, e4) => {
25530          for (const e5 of t4) {
25531            t4 = ks(e5);
25532            const n4 = [];
25533            for (const e6 of vn(t4, bs, 1)) n4.push({ x: Sn(e6, 1) ?? 0, y: Sn(e6, 2) ?? 0, z: Sn(e6, 3) ?? 0, visibility: Sn(e6, 4) ?? 0 });
25534            this.landmarks.push(n4);
25535          }
25536          ua(this, e4);
25537        })), this.g.attachEmptyPacketListener("hand_landmarks", ((t4) => {
25538          ua(this, t4);
25539        })), this.g.attachProtoVectorListener("world_hand_landmarks", ((t4, e4) => {
25540          for (const e5 of t4) {
25541            t4 = As(e5);
25542            const n4 = [];
25543            for (const e6 of vn(t4, Ts, 1)) n4.push({ x: Sn(e6, 1) ?? 0, y: Sn(e6, 2) ?? 0, z: Sn(e6, 3) ?? 0, visibility: Sn(e6, 4) ?? 0 });
25544            this.worldLandmarks.push(n4);
25545          }
25546          ua(this, e4);
25547        })), this.g.attachEmptyPacketListener("world_hand_landmarks", ((t4) => {
25548          ua(this, t4);
25549        })), this.g.attachProtoVectorListener("hand_gestures", ((t4, e4) => {
25550          this.gestures.push(...Ic(t4, false)), ua(this, e4);
25551        })), this.g.attachEmptyPacketListener("hand_gestures", ((t4) => {
25552          ua(this, t4);
25553        })), this.g.attachProtoVectorListener("handedness", ((t4, e4) => {
25554          this.handedness.push(...Ic(t4)), ua(this, e4);
25555        })), this.g.attachEmptyPacketListener("handedness", ((t4) => {
25556          ua(this, t4);
25557        })), t3 = t3.g(), this.setGraph(new Uint8Array(t3), true);
25558      }
25559    };
25560    Fc.prototype.recognizeForVideo = Fc.prototype.Ia, Fc.prototype.recognize = Fc.prototype.Ha, Fc.prototype.setOptions = Fc.prototype.o, Fc.createFromModelPath = function(t3, e3) {
25561      return cc(Fc, t3, { baseOptions: { modelAssetPath: e3 } });
25562    }, Fc.createFromModelBuffer = function(t3, e3) {
25563      return cc(Fc, t3, { baseOptions: { modelAssetBuffer: e3 } });
25564    }, Fc.createFromOptions = function(t3, e3) {
25565      return cc(Fc, t3, e3);
25566    }, Fc.HAND_CONNECTIONS = xc;
25567    Pc = class extends dc {
25568      constructor(t3, e3) {
25569        super(new ac(t3, e3), "image_in", "norm_rect", false), this.landmarks = [], this.worldLandmarks = [], this.handedness = [], wn(t3 = this.h = new so(), 0, 1, e3 = new Xs()), this.u = new io(), wn(this.h, 0, 3, this.u), this.j = new ro(), wn(this.h, 0, 2, this.j), xn(this.j, 3, 1), Ln(this.j, 2, 0.5), Ln(this.u, 2, 0.5), Ln(this.h, 4, 0.5);
25570      }
25571      get baseOptions() {
25572        return yn(this.h, Xs, 1);
25573      }
25574      set baseOptions(t3) {
25575        wn(this.h, 0, 1, t3);
25576      }
25577      o(t3) {
25578        return "numHands" in t3 && xn(this.j, 3, t3.numHands ?? 1), "minHandDetectionConfidence" in t3 && Ln(this.j, 2, t3.minHandDetectionConfidence ?? 0.5), "minTrackingConfidence" in t3 && Ln(this.h, 4, t3.minTrackingConfidence ?? 0.5), "minHandPresenceConfidence" in t3 && Ln(this.u, 2, t3.minHandPresenceConfidence ?? 0.5), this.l(t3);
25579      }
25580      F(t3, e3) {
25581        return this.landmarks = [], this.worldLandmarks = [], this.handedness = [], uc(this, t3, e3), Mc(this);
25582      }
25583      G(t3, e3, n3) {
25584        return this.landmarks = [], this.worldLandmarks = [], this.handedness = [], lc(this, t3, n3, e3), Mc(this);
25585      }
25586      m() {
25587        var t3 = new ls();
25588        hs(t3, "image_in"), hs(t3, "norm_rect"), us(t3, "hand_landmarks"), us(t3, "world_hand_landmarks"), us(t3, "handedness");
25589        const e3 = new Qi();
25590        xr(e3, fo, this.h);
25591        const n3 = new is();
25592        Rn(n3, 2, "mediapipe.tasks.vision.hand_landmarker.HandLandmarkerGraph"), ns(n3, "IMAGE:image_in"), ns(n3, "NORM_RECT:norm_rect"), rs(n3, "LANDMARKS:hand_landmarks"), rs(n3, "WORLD_LANDMARKS:world_hand_landmarks"), rs(n3, "HANDEDNESS:handedness"), n3.o(e3), cs(t3, n3), this.g.attachProtoVectorListener("hand_landmarks", ((t4, e4) => {
25593          for (const e5 of t4) t4 = ks(e5), this.landmarks.push(Ho(t4));
25594          ua(this, e4);
25595        })), this.g.attachEmptyPacketListener("hand_landmarks", ((t4) => {
25596          ua(this, t4);
25597        })), this.g.attachProtoVectorListener("world_hand_landmarks", ((t4, e4) => {
25598          for (const e5 of t4) t4 = As(e5), this.worldLandmarks.push(Wo(t4));
25599          ua(this, e4);
25600        })), this.g.attachEmptyPacketListener("world_hand_landmarks", ((t4) => {
25601          ua(this, t4);
25602        })), this.g.attachProtoVectorListener("handedness", ((t4, e4) => {
25603          var n4 = this.handedness, r3 = n4.push;
25604          const i3 = [];
25605          for (const e5 of t4) {
25606            t4 = ys(e5);
25607            const n5 = [];
25608            for (const e6 of t4.g()) n5.push({ score: Sn(e6, 2) ?? 0, index: kn(e6, 1) ?? 0 ?? -1, categoryName: le($e(e6, 3)) ?? "" ?? "", displayName: le($e(e6, 4)) ?? "" ?? "" });
25609            i3.push(n5);
25610          }
25611          r3.call(n4, ...i3), ua(this, e4);
25612        })), this.g.attachEmptyPacketListener("handedness", ((t4) => {
25613          ua(this, t4);
25614        })), t3 = t3.g(), this.setGraph(new Uint8Array(t3), true);
25615      }
25616    };
25617    Pc.prototype.detectForVideo = Pc.prototype.G, Pc.prototype.detect = Pc.prototype.F, Pc.prototype.setOptions = Pc.prototype.o, Pc.createFromModelPath = function(t3, e3) {
25618      return cc(Pc, t3, { baseOptions: { modelAssetPath: e3 } });
25619    }, Pc.createFromModelBuffer = function(t3, e3) {
25620      return cc(Pc, t3, { baseOptions: { modelAssetBuffer: e3 } });
25621    }, Pc.createFromOptions = function(t3, e3) {
25622      return cc(Pc, t3, e3);
25623    }, Pc.HAND_CONNECTIONS = xc;
25624    Cc = ic([0, 1], [1, 2], [2, 3], [3, 7], [0, 4], [4, 5], [5, 6], [6, 8], [9, 10], [11, 12], [11, 13], [13, 15], [15, 17], [15, 19], [15, 21], [17, 19], [12, 14], [14, 16], [16, 18], [16, 20], [16, 22], [18, 20], [11, 23], [12, 24], [23, 24], [23, 25], [24, 26], [25, 27], [26, 28], [27, 29], [28, 30], [29, 31], [30, 32], [27, 31], [28, 32]);
25625    Dc = class extends dc {
25626      constructor(t3, e3) {
25627        super(new ac(t3, e3), "input_frames_image", null, false), this.h = { faceLandmarks: [], faceBlendshapes: [], poseLandmarks: [], poseWorldLandmarks: [], poseSegmentationMasks: [], leftHandLandmarks: [], leftHandWorldLandmarks: [], rightHandLandmarks: [], rightHandWorldLandmarks: [] }, this.outputPoseSegmentationMasks = this.outputFaceBlendshapes = false, wn(t3 = this.j = new yo(), 0, 1, e3 = new Xs()), this.I = new io(), wn(this.j, 0, 2, this.I), this.W = new po(), wn(this.j, 0, 3, this.W), this.u = new zs(), wn(this.j, 0, 4, this.u), this.O = new $s(), wn(this.j, 0, 5, this.O), this.A = new go(), wn(this.j, 0, 6, this.A), this.M = new mo(), wn(this.j, 0, 7, this.M), Ln(this.u, 2, 0.5), Ln(this.u, 3, 0.3), Ln(this.O, 2, 0.5), Ln(this.A, 2, 0.5), Ln(this.A, 3, 0.3), Ln(this.M, 2, 0.5), Ln(this.I, 2, 0.5);
25628      }
25629      get baseOptions() {
25630        return yn(this.j, Xs, 1);
25631      }
25632      set baseOptions(t3) {
25633        wn(this.j, 0, 1, t3);
25634      }
25635      o(t3) {
25636        return "minFaceDetectionConfidence" in t3 && Ln(this.u, 2, t3.minFaceDetectionConfidence ?? 0.5), "minFaceSuppressionThreshold" in t3 && Ln(this.u, 3, t3.minFaceSuppressionThreshold ?? 0.3), "minFacePresenceConfidence" in t3 && Ln(this.O, 2, t3.minFacePresenceConfidence ?? 0.5), "outputFaceBlendshapes" in t3 && (this.outputFaceBlendshapes = !!t3.outputFaceBlendshapes), "minPoseDetectionConfidence" in t3 && Ln(this.A, 2, t3.minPoseDetectionConfidence ?? 0.5), "minPoseSuppressionThreshold" in t3 && Ln(this.A, 3, t3.minPoseSuppressionThreshold ?? 0.3), "minPosePresenceConfidence" in t3 && Ln(this.M, 2, t3.minPosePresenceConfidence ?? 0.5), "outputPoseSegmentationMasks" in t3 && (this.outputPoseSegmentationMasks = !!t3.outputPoseSegmentationMasks), "minHandLandmarksConfidence" in t3 && Ln(this.I, 2, t3.minHandLandmarksConfidence ?? 0.5), this.l(t3);
25637      }
25638      F(t3, e3, n3) {
25639        const r3 = "function" != typeof e3 ? e3 : {};
25640        return this.D = "function" == typeof e3 ? e3 : n3, Oc(this), uc(this, t3, r3), Nc(this);
25641      }
25642      G(t3, e3, n3, r3) {
25643        const i3 = "function" != typeof n3 ? n3 : {};
25644        return this.D = "function" == typeof n3 ? n3 : r3, Oc(this), lc(this, t3, i3, e3), Nc(this);
25645      }
25646      m() {
25647        var t3 = new ls();
25648        hs(t3, "input_frames_image"), us(t3, "pose_landmarks"), us(t3, "pose_world_landmarks"), us(t3, "face_landmarks"), us(t3, "left_hand_landmarks"), us(t3, "left_hand_world_landmarks"), us(t3, "right_hand_landmarks"), us(t3, "right_hand_world_landmarks");
25649        const e3 = new Qi(), n3 = new Bi();
25650        Rn(n3, 1, "type.googleapis.com/mediapipe.tasks.vision.holistic_landmarker.proto.HolisticLandmarkerGraphOptions"), (function(t4, e4) {
25651          if (null != e4) if (Array.isArray(e4)) Ze(t4, 2, Ie(e4, 0, Me));
25652          else {
25653            if (!("string" == typeof e4 || e4 instanceof F || x(e4))) throw Error("invalid value in Any.value field: " + e4 + " expected a ByteString, a base64 encoded string, a Uint8Array or a jspb array");
25654            hn(t4, 2, ht(e4, false), R());
25655          }
25656        })(n3, this.j.g());
25657        const r3 = new is();
25658        Rn(r3, 2, "mediapipe.tasks.vision.holistic_landmarker.HolisticLandmarkerGraph"), bn(r3, 8, Bi, n3), ns(r3, "IMAGE:input_frames_image"), rs(r3, "POSE_LANDMARKS:pose_landmarks"), rs(r3, "POSE_WORLD_LANDMARKS:pose_world_landmarks"), rs(r3, "FACE_LANDMARKS:face_landmarks"), rs(r3, "LEFT_HAND_LANDMARKS:left_hand_landmarks"), rs(r3, "LEFT_HAND_WORLD_LANDMARKS:left_hand_world_landmarks"), rs(r3, "RIGHT_HAND_LANDMARKS:right_hand_landmarks"), rs(r3, "RIGHT_HAND_WORLD_LANDMARKS:right_hand_world_landmarks"), r3.o(e3), cs(t3, r3), la(this, t3), this.g.attachProtoListener("pose_landmarks", ((t4, e4) => {
25659          Uc(t4, this.h.poseLandmarks), ua(this, e4);
25660        })), this.g.attachEmptyPacketListener("pose_landmarks", ((t4) => {
25661          ua(this, t4);
25662        })), this.g.attachProtoListener("pose_world_landmarks", ((t4, e4) => {
25663          var n4 = this.h.poseWorldLandmarks;
25664          t4 = As(t4), n4.push(Wo(t4)), ua(this, e4);
25665        })), this.g.attachEmptyPacketListener("pose_world_landmarks", ((t4) => {
25666          ua(this, t4);
25667        })), this.outputPoseSegmentationMasks && (rs(r3, "POSE_SEGMENTATION_MASK:pose_segmentation_mask"), fa(this, "pose_segmentation_mask"), this.g.Z("pose_segmentation_mask", ((t4, e4) => {
25668          this.h.poseSegmentationMasks = [fc(this, t4, true, !this.D)], ua(this, e4);
25669        })), this.g.attachEmptyPacketListener("pose_segmentation_mask", ((t4) => {
25670          this.h.poseSegmentationMasks = [], ua(this, t4);
25671        }))), this.g.attachProtoListener("face_landmarks", ((t4, e4) => {
25672          Uc(t4, this.h.faceLandmarks), ua(this, e4);
25673        })), this.g.attachEmptyPacketListener("face_landmarks", ((t4) => {
25674          ua(this, t4);
25675        })), this.outputFaceBlendshapes && (us(t3, "extra_blendshapes"), rs(r3, "FACE_BLENDSHAPES:extra_blendshapes"), this.g.attachProtoListener("extra_blendshapes", ((t4, e4) => {
25676          var n4 = this.h.faceBlendshapes;
25677          this.outputFaceBlendshapes && (t4 = ys(t4), n4.push(jo(t4.g() ?? []))), ua(this, e4);
25678        })), this.g.attachEmptyPacketListener("extra_blendshapes", ((t4) => {
25679          ua(this, t4);
25680        }))), this.g.attachProtoListener("left_hand_landmarks", ((t4, e4) => {
25681          Uc(t4, this.h.leftHandLandmarks), ua(this, e4);
25682        })), this.g.attachEmptyPacketListener("left_hand_landmarks", ((t4) => {
25683          ua(this, t4);
25684        })), this.g.attachProtoListener("left_hand_world_landmarks", ((t4, e4) => {
25685          var n4 = this.h.leftHandWorldLandmarks;
25686          t4 = As(t4), n4.push(Wo(t4)), ua(this, e4);
25687        })), this.g.attachEmptyPacketListener("left_hand_world_landmarks", ((t4) => {
25688          ua(this, t4);
25689        })), this.g.attachProtoListener("right_hand_landmarks", ((t4, e4) => {
25690          Uc(t4, this.h.rightHandLandmarks), ua(this, e4);
25691        })), this.g.attachEmptyPacketListener("right_hand_landmarks", ((t4) => {
25692          ua(this, t4);
25693        })), this.g.attachProtoListener("right_hand_world_landmarks", ((t4, e4) => {
25694          var n4 = this.h.rightHandWorldLandmarks;
25695          t4 = As(t4), n4.push(Wo(t4)), ua(this, e4);
25696        })), this.g.attachEmptyPacketListener("right_hand_world_landmarks", ((t4) => {
25697          ua(this, t4);
25698        })), t3 = t3.g(), this.setGraph(new Uint8Array(t3), true);
25699      }
25700    };
25701    Dc.prototype.detectForVideo = Dc.prototype.G, Dc.prototype.detect = Dc.prototype.F, Dc.prototype.setOptions = Dc.prototype.o, Dc.createFromModelPath = function(t3, e3) {
25702      return cc(Dc, t3, { baseOptions: { modelAssetPath: e3 } });
25703    }, Dc.createFromModelBuffer = function(t3, e3) {
25704      return cc(Dc, t3, { baseOptions: { modelAssetBuffer: e3 } });
25705    }, Dc.createFromOptions = function(t3, e3) {
25706      return cc(Dc, t3, e3);
25707    }, Dc.HAND_CONNECTIONS = xc, Dc.POSE_CONNECTIONS = Cc, Dc.FACE_LANDMARKS_LIPS = gc, Dc.FACE_LANDMARKS_LEFT_EYE = mc, Dc.FACE_LANDMARKS_LEFT_EYEBROW = yc, Dc.FACE_LANDMARKS_LEFT_IRIS = _c, Dc.FACE_LANDMARKS_RIGHT_EYE = vc, Dc.FACE_LANDMARKS_RIGHT_EYEBROW = Ec, Dc.FACE_LANDMARKS_RIGHT_IRIS = wc, Dc.FACE_LANDMARKS_FACE_OVAL = Tc, Dc.FACE_LANDMARKS_CONTOURS = Ac, Dc.FACE_LANDMARKS_TESSELATION = bc;
25708    Bc = class extends dc {
25709      constructor(t3, e3) {
25710        super(new ac(t3, e3), "input_image", "norm_rect", true), this.j = { classifications: [] }, wn(t3 = this.h = new Eo(), 0, 1, e3 = new Xs());
25711      }
25712      get baseOptions() {
25713        return yn(this.h, Xs, 1);
25714      }
25715      set baseOptions(t3) {
25716        wn(this.h, 0, 1, t3);
25717      }
25718      o(t3) {
25719        return wn(this.h, 0, 2, Bo(t3, yn(this.h, Ns, 2))), this.l(t3);
25720      }
25721      sa(t3, e3) {
25722        return this.j = { classifications: [] }, uc(this, t3, e3), this.j;
25723      }
25724      ta(t3, e3, n3) {
25725        return this.j = { classifications: [] }, lc(this, t3, n3, e3), this.j;
25726      }
25727      m() {
25728        var t3 = new ls();
25729        hs(t3, "input_image"), hs(t3, "norm_rect"), us(t3, "classifications");
25730        const e3 = new Qi();
25731        xr(e3, wo, this.h);
25732        const n3 = new is();
25733        Rn(n3, 2, "mediapipe.tasks.vision.image_classifier.ImageClassifierGraph"), ns(n3, "IMAGE:input_image"), ns(n3, "NORM_RECT:norm_rect"), rs(n3, "CLASSIFICATIONS:classifications"), n3.o(e3), cs(t3, n3), this.g.attachProtoListener("classifications", ((t4, e4) => {
25734          this.j = Vo(Is(t4)), ua(this, e4);
25735        })), this.g.attachEmptyPacketListener("classifications", ((t4) => {
25736          ua(this, t4);
25737        })), t3 = t3.g(), this.setGraph(new Uint8Array(t3), true);
25738      }
25739    };
25740    Bc.prototype.classifyForVideo = Bc.prototype.ta, Bc.prototype.classify = Bc.prototype.sa, Bc.prototype.setOptions = Bc.prototype.o, Bc.createFromModelPath = function(t3, e3) {
25741      return cc(Bc, t3, { baseOptions: { modelAssetPath: e3 } });
25742    }, Bc.createFromModelBuffer = function(t3, e3) {
25743      return cc(Bc, t3, { baseOptions: { modelAssetBuffer: e3 } });
25744    }, Bc.createFromOptions = function(t3, e3) {
25745      return cc(Bc, t3, e3);
25746    };
25747    Gc = class extends dc {
25748      constructor(t3, e3) {
25749        super(new ac(t3, e3), "image_in", "norm_rect", true), this.h = new To(), this.embeddings = { embeddings: [] }, wn(t3 = this.h, 0, 1, e3 = new Xs());
25750      }
25751      get baseOptions() {
25752        return yn(this.h, Xs, 1);
25753      }
25754      set baseOptions(t3) {
25755        wn(this.h, 0, 1, t3);
25756      }
25757      o(t3) {
25758        var e3 = this.h, n3 = yn(this.h, Ds, 2);
25759        return n3 = n3 ? n3.clone() : new Ds(), void 0 !== t3.l2Normalize ? Ze(n3, 1, Jt(t3.l2Normalize)) : "l2Normalize" in t3 && Ze(n3, 1), void 0 !== t3.quantize ? Ze(n3, 2, Jt(t3.quantize)) : "quantize" in t3 && Ze(n3, 2), wn(e3, 0, 2, n3), this.l(t3);
25760      }
25761      za(t3, e3) {
25762        return uc(this, t3, e3), this.embeddings;
25763      }
25764      Aa(t3, e3, n3) {
25765        return lc(this, t3, n3, e3), this.embeddings;
25766      }
25767      m() {
25768        var t3 = new ls();
25769        hs(t3, "image_in"), hs(t3, "norm_rect"), us(t3, "embeddings_out");
25770        const e3 = new Qi();
25771        xr(e3, Ao, this.h);
25772        const n3 = new is();
25773        Rn(n3, 2, "mediapipe.tasks.vision.image_embedder.ImageEmbedderGraph"), ns(n3, "IMAGE:image_in"), ns(n3, "NORM_RECT:norm_rect"), rs(n3, "EMBEDDINGS:embeddings_out"), n3.o(e3), cs(t3, n3), this.g.attachProtoListener("embeddings_out", ((t4, e4) => {
25774          t4 = Os(t4), this.embeddings = (function(t5) {
25775            return { embeddings: vn(t5, Ps, 1).map(((t6) => {
25776              const e5 = { headIndex: kn(t6, 3) ?? 0 ?? -1, headName: le($e(t6, 4)) ?? "" ?? "" };
25777              var n4 = t6.v;
25778              return void 0 !== mn(n4, 0 | n4[Q], Fs, ln(t6, 1)) ? (t6 = en(t6 = yn(t6, Fs, ln(t6, 1), void 0), 1, $t, tn()), e5.floatEmbedding = t6.slice()) : (n4 = new Uint8Array(0), e5.quantizedEmbedding = yn(t6, Ms, ln(t6, 2), void 0)?.na()?.h() ?? n4), e5;
25779            })), timestampMs: Go($e(t5, 2, void 0, void 0, ce) ?? Ye) };
25780          })(t4), ua(this, e4);
25781        })), this.g.attachEmptyPacketListener("embeddings_out", ((t4) => {
25782          ua(this, t4);
25783        })), t3 = t3.g(), this.setGraph(new Uint8Array(t3), true);
25784      }
25785    };
25786    Gc.cosineSimilarity = function(t3, e3) {
25787      if (t3.floatEmbedding && e3.floatEmbedding) t3 = Ko(t3.floatEmbedding, e3.floatEmbedding);
25788      else {
25789        if (!t3.quantizedEmbedding || !e3.quantizedEmbedding) throw Error("Cannot compute cosine similarity between quantized and float embeddings.");
25790        t3 = Ko(zo(t3.quantizedEmbedding), zo(e3.quantizedEmbedding));
25791      }
25792      return t3;
25793    }, Gc.prototype.embedForVideo = Gc.prototype.Aa, Gc.prototype.embed = Gc.prototype.za, Gc.prototype.setOptions = Gc.prototype.o, Gc.createFromModelPath = function(t3, e3) {
25794      return cc(Gc, t3, { baseOptions: { modelAssetPath: e3 } });
25795    }, Gc.createFromModelBuffer = function(t3, e3) {
25796      return cc(Gc, t3, { baseOptions: { modelAssetBuffer: e3 } });
25797    }, Gc.createFromOptions = function(t3, e3) {
25798      return cc(Gc, t3, e3);
25799    };
25800    jc = class {
25801      constructor(t3, e3, n3) {
25802        this.confidenceMasks = t3, this.categoryMask = e3, this.qualityScores = n3;
25803      }
25804      close() {
25805        this.confidenceMasks?.forEach(((t3) => {
25806          t3.close();
25807        })), this.categoryMask?.close();
25808      }
25809    };
25810    jc.prototype.close = jc.prototype.close;
25811    Wc = class extends dc {
25812      constructor(t3, e3) {
25813        super(new ac(t3, e3), "image_in", "norm_rect", false), this.u = [], this.outputCategoryMask = false, this.outputConfidenceMasks = true, this.h = new Lo(), this.A = new bo(), wn(this.h, 0, 3, this.A), wn(t3 = this.h, 0, 1, e3 = new Xs());
25814      }
25815      get baseOptions() {
25816        return yn(this.h, Xs, 1);
25817      }
25818      set baseOptions(t3) {
25819        wn(this.h, 0, 1, t3);
25820      }
25821      o(t3) {
25822        return void 0 !== t3.displayNamesLocale ? Ze(this.h, 2, ue(t3.displayNamesLocale)) : "displayNamesLocale" in t3 && Ze(this.h, 2), "outputCategoryMask" in t3 && (this.outputCategoryMask = t3.outputCategoryMask ?? false), "outputConfidenceMasks" in t3 && (this.outputConfidenceMasks = t3.outputConfidenceMasks ?? true), super.l(t3);
25823      }
25824      L() {
25825        Vc(this);
25826      }
25827      segment(t3, e3, n3) {
25828        const r3 = "function" != typeof e3 ? e3 : {};
25829        return this.j = "function" == typeof e3 ? e3 : n3, Xc(this), uc(this, t3, r3), Hc(this);
25830      }
25831      La(t3, e3, n3, r3) {
25832        const i3 = "function" != typeof n3 ? n3 : {};
25833        return this.j = "function" == typeof n3 ? n3 : r3, Xc(this), lc(this, t3, i3, e3), Hc(this);
25834      }
25835      Da() {
25836        return this.u;
25837      }
25838      m() {
25839        var t3 = new ls();
25840        hs(t3, "image_in"), hs(t3, "norm_rect");
25841        const e3 = new Qi();
25842        xr(e3, Ro, this.h);
25843        const n3 = new is();
25844        Rn(n3, 2, "mediapipe.tasks.vision.image_segmenter.ImageSegmenterGraph"), ns(n3, "IMAGE:image_in"), ns(n3, "NORM_RECT:norm_rect"), n3.o(e3), cs(t3, n3), la(this, t3), this.outputConfidenceMasks && (us(t3, "confidence_masks"), rs(n3, "CONFIDENCE_MASKS:confidence_masks"), fa(this, "confidence_masks"), this.g.aa("confidence_masks", ((t4, e4) => {
25845          this.confidenceMasks = t4.map(((t5) => fc(this, t5, true, !this.j))), ua(this, e4);
25846        })), this.g.attachEmptyPacketListener("confidence_masks", ((t4) => {
25847          this.confidenceMasks = [], ua(this, t4);
25848        }))), this.outputCategoryMask && (us(t3, "category_mask"), rs(n3, "CATEGORY_MASK:category_mask"), fa(this, "category_mask"), this.g.Z("category_mask", ((t4, e4) => {
25849          this.categoryMask = fc(this, t4, false, !this.j), ua(this, e4);
25850        })), this.g.attachEmptyPacketListener("category_mask", ((t4) => {
25851          this.categoryMask = void 0, ua(this, t4);
25852        }))), us(t3, "quality_scores"), rs(n3, "QUALITY_SCORES:quality_scores"), this.g.attachFloatVectorListener("quality_scores", ((t4, e4) => {
25853          this.qualityScores = t4, ua(this, e4);
25854        })), this.g.attachEmptyPacketListener("quality_scores", ((t4) => {
25855          this.categoryMask = void 0, ua(this, t4);
25856        })), t3 = t3.g(), this.setGraph(new Uint8Array(t3), true);
25857      }
25858    };
25859    Wc.prototype.getLabels = Wc.prototype.Da, Wc.prototype.segmentForVideo = Wc.prototype.La, Wc.prototype.segment = Wc.prototype.segment, Wc.prototype.setOptions = Wc.prototype.o, Wc.createFromModelPath = function(t3, e3) {
25860      return cc(Wc, t3, { baseOptions: { modelAssetPath: e3 } });
25861    }, Wc.createFromModelBuffer = function(t3, e3) {
25862      return cc(Wc, t3, { baseOptions: { modelAssetBuffer: e3 } });
25863    }, Wc.createFromOptions = function(t3, e3) {
25864      return cc(Wc, t3, e3);
25865    };
25866    zc = class {
25867      constructor(t3, e3, n3) {
25868        this.confidenceMasks = t3, this.categoryMask = e3, this.qualityScores = n3;
25869      }
25870      close() {
25871        this.confidenceMasks?.forEach(((t3) => {
25872          t3.close();
25873        })), this.categoryMask?.close();
25874      }
25875    };
25876    zc.prototype.close = zc.prototype.close;
25877    Kc = class extends dc {
25878      constructor(t3, e3) {
25879        super(new ac(t3, e3), "image_in", "norm_rect_in", false), this.outputCategoryMask = false, this.outputConfidenceMasks = true, this.h = new Lo(), this.u = new bo(), wn(this.h, 0, 3, this.u), wn(t3 = this.h, 0, 1, e3 = new Xs());
25880      }
25881      get baseOptions() {
25882        return yn(this.h, Xs, 1);
25883      }
25884      set baseOptions(t3) {
25885        wn(this.h, 0, 1, t3);
25886      }
25887      o(t3) {
25888        return "outputCategoryMask" in t3 && (this.outputCategoryMask = t3.outputCategoryMask ?? false), "outputConfidenceMasks" in t3 && (this.outputConfidenceMasks = t3.outputConfidenceMasks ?? true), super.l(t3);
25889      }
25890      segment(t3, e3, n3, r3) {
25891        const i3 = "function" != typeof n3 ? n3 : {};
25892        if (this.j = "function" == typeof n3 ? n3 : r3, this.qualityScores = this.categoryMask = this.confidenceMasks = void 0, n3 = this.C + 1, r3 = new Po(), e3.keypoint && e3.scribble) throw Error("Cannot provide both keypoint and scribble.");
25893        if (e3.keypoint) {
25894          var s3 = new Io();
25895          hn(s3, 3, Jt(true), false), hn(s3, 1, qt(e3.keypoint.x), 0), hn(s3, 2, qt(e3.keypoint.y), 0), Tn(r3, 1, Co, s3);
25896        } else {
25897          if (!e3.scribble) throw Error("Must provide either a keypoint or a scribble.");
25898          {
25899            const t4 = new Mo();
25900            for (s3 of e3.scribble) hn(e3 = new Io(), 3, Jt(true), false), hn(e3, 1, qt(s3.x), 0), hn(e3, 2, qt(s3.y), 0), bn(t4, 1, Io, e3);
25901            Tn(r3, 2, Co, t4);
25902          }
25903        }
25904        this.g.addProtoToStream(r3.g(), "mediapipe.tasks.vision.interactive_segmenter.proto.RegionOfInterest", "roi_in", n3), uc(this, t3, i3);
25905        t: {
25906          try {
25907            const t4 = new zc(this.confidenceMasks, this.categoryMask, this.qualityScores);
25908            if (!this.j) {
25909              var o3 = t4;
25910              break t;
25911            }
25912            this.j(t4);
25913          } finally {
25914            da(this);
25915          }
25916          o3 = void 0;
25917        }
25918        return o3;
25919      }
25920      m() {
25921        var t3 = new ls();
25922        hs(t3, "image_in"), hs(t3, "roi_in"), hs(t3, "norm_rect_in");
25923        const e3 = new Qi();
25924        xr(e3, Ro, this.h);
25925        const n3 = new is();
25926        Rn(n3, 2, "mediapipe.tasks.vision.interactive_segmenter.InteractiveSegmenterGraphV2"), ns(n3, "IMAGE:image_in"), ns(n3, "ROI:roi_in"), ns(n3, "NORM_RECT:norm_rect_in"), n3.o(e3), cs(t3, n3), la(this, t3), this.outputConfidenceMasks && (us(t3, "confidence_masks"), rs(n3, "CONFIDENCE_MASKS:confidence_masks"), fa(this, "confidence_masks"), this.g.aa("confidence_masks", ((t4, e4) => {
25927          this.confidenceMasks = t4.map(((t5) => fc(this, t5, true, !this.j))), ua(this, e4);
25928        })), this.g.attachEmptyPacketListener("confidence_masks", ((t4) => {
25929          this.confidenceMasks = [], ua(this, t4);
25930        }))), this.outputCategoryMask && (us(t3, "category_mask"), rs(n3, "CATEGORY_MASK:category_mask"), fa(this, "category_mask"), this.g.Z("category_mask", ((t4, e4) => {
25931          this.categoryMask = fc(this, t4, false, !this.j), ua(this, e4);
25932        })), this.g.attachEmptyPacketListener("category_mask", ((t4) => {
25933          this.categoryMask = void 0, ua(this, t4);
25934        }))), us(t3, "quality_scores"), rs(n3, "QUALITY_SCORES:quality_scores"), this.g.attachFloatVectorListener("quality_scores", ((t4, e4) => {
25935          this.qualityScores = t4, ua(this, e4);
25936        })), this.g.attachEmptyPacketListener("quality_scores", ((t4) => {
25937          this.categoryMask = void 0, ua(this, t4);
25938        })), t3 = t3.g(), this.setGraph(new Uint8Array(t3), true);
25939      }
25940    };
25941    Kc.prototype.segment = Kc.prototype.segment, Kc.prototype.setOptions = Kc.prototype.o, Kc.createFromModelPath = function(t3, e3) {
25942      return cc(Kc, t3, { baseOptions: { modelAssetPath: e3 } });
25943    }, Kc.createFromModelBuffer = function(t3, e3) {
25944      return cc(Kc, t3, { baseOptions: { modelAssetBuffer: e3 } });
25945    }, Kc.createFromOptions = function(t3, e3) {
25946      return cc(Kc, t3, e3);
25947    };
25948    Yc = class extends dc {
25949      constructor(t3, e3) {
25950        super(new ac(t3, e3), "input_frame_gpu", "norm_rect", false), this.j = { detections: [] }, wn(t3 = this.h = new Oo(), 0, 1, e3 = new Xs());
25951      }
25952      get baseOptions() {
25953        return yn(this.h, Xs, 1);
25954      }
25955      set baseOptions(t3) {
25956        wn(this.h, 0, 1, t3);
25957      }
25958      o(t3) {
25959        return void 0 !== t3.displayNamesLocale ? Ze(this.h, 2, ue(t3.displayNamesLocale)) : "displayNamesLocale" in t3 && Ze(this.h, 2), void 0 !== t3.maxResults ? xn(this.h, 3, t3.maxResults) : "maxResults" in t3 && Ze(this.h, 3), void 0 !== t3.scoreThreshold ? Ln(this.h, 4, t3.scoreThreshold) : "scoreThreshold" in t3 && Ze(this.h, 4), void 0 !== t3.categoryAllowlist ? In(this.h, 5, t3.categoryAllowlist) : "categoryAllowlist" in t3 && Ze(this.h, 5), void 0 !== t3.categoryDenylist ? In(this.h, 6, t3.categoryDenylist) : "categoryDenylist" in t3 && Ze(this.h, 6), this.l(t3);
25960      }
25961      F(t3, e3) {
25962        return this.j = { detections: [] }, uc(this, t3, e3), this.j;
25963      }
25964      G(t3, e3, n3) {
25965        return this.j = { detections: [] }, lc(this, t3, n3, e3), this.j;
25966      }
25967      m() {
25968        var t3 = new ls();
25969        hs(t3, "input_frame_gpu"), hs(t3, "norm_rect"), us(t3, "detections");
25970        const e3 = new Qi();
25971        xr(e3, No, this.h);
25972        const n3 = new is();
25973        Rn(n3, 2, "mediapipe.tasks.vision.ObjectDetectorGraph"), ns(n3, "IMAGE:input_frame_gpu"), ns(n3, "NORM_RECT:norm_rect"), rs(n3, "DETECTIONS:detections"), n3.o(e3), cs(t3, n3), this.g.attachProtoVectorListener("detections", ((t4, e4) => {
25974          for (const e5 of t4) t4 = ws(e5), this.j.detections.push(Xo(t4));
25975          ua(this, e4);
25976        })), this.g.attachEmptyPacketListener("detections", ((t4) => {
25977          ua(this, t4);
25978        })), t3 = t3.g(), this.setGraph(new Uint8Array(t3), true);
25979      }
25980    };
25981    Yc.prototype.detectForVideo = Yc.prototype.G, Yc.prototype.detect = Yc.prototype.F, Yc.prototype.setOptions = Yc.prototype.o, Yc.createFromModelPath = async function(t3, e3) {
25982      return cc(Yc, t3, { baseOptions: { modelAssetPath: e3 } });
25983    }, Yc.createFromModelBuffer = function(t3, e3) {
25984      return cc(Yc, t3, { baseOptions: { modelAssetBuffer: e3 } });
25985    }, Yc.createFromOptions = function(t3, e3) {
25986      return cc(Yc, t3, e3);
25987    };
25988    qc = class {
25989      constructor(t3, e3, n3) {
25990        this.landmarks = t3, this.worldLandmarks = e3, this.segmentationMasks = n3;
25991      }
25992      close() {
25993        this.segmentationMasks?.forEach(((t3) => {
25994          t3.close();
25995        }));
25996      }
25997    };
25998    qc.prototype.close = qc.prototype.close;
25999    Zc = class extends dc {
26000      constructor(t3, e3) {
26001        super(new ac(t3, e3), "image_in", "norm_rect", false), this.landmarks = [], this.worldLandmarks = [], this.outputSegmentationMasks = false, wn(t3 = this.h = new Uo(), 0, 1, e3 = new Xs()), this.A = new mo(), wn(this.h, 0, 3, this.A), this.j = new go(), wn(this.h, 0, 2, this.j), xn(this.j, 4, 1), Ln(this.j, 2, 0.5), Ln(this.A, 2, 0.5), Ln(this.h, 4, 0.5);
26002      }
26003      get baseOptions() {
26004        return yn(this.h, Xs, 1);
26005      }
26006      set baseOptions(t3) {
26007        wn(this.h, 0, 1, t3);
26008      }
26009      o(t3) {
26010        return "numPoses" in t3 && xn(this.j, 4, t3.numPoses ?? 1), "minPoseDetectionConfidence" in t3 && Ln(this.j, 2, t3.minPoseDetectionConfidence ?? 0.5), "minTrackingConfidence" in t3 && Ln(this.h, 4, t3.minTrackingConfidence ?? 0.5), "minPosePresenceConfidence" in t3 && Ln(this.A, 2, t3.minPosePresenceConfidence ?? 0.5), "outputSegmentationMasks" in t3 && (this.outputSegmentationMasks = t3.outputSegmentationMasks ?? false), this.l(t3);
26011      }
26012      F(t3, e3, n3) {
26013        const r3 = "function" != typeof e3 ? e3 : {};
26014        return this.u = "function" == typeof e3 ? e3 : n3, $c(this), uc(this, t3, r3), Jc(this);
26015      }
26016      G(t3, e3, n3, r3) {
26017        const i3 = "function" != typeof n3 ? n3 : {};
26018        return this.u = "function" == typeof n3 ? n3 : r3, $c(this), lc(this, t3, i3, e3), Jc(this);
26019      }
26020      m() {
26021        var t3 = new ls();
26022        hs(t3, "image_in"), hs(t3, "norm_rect"), us(t3, "normalized_landmarks"), us(t3, "world_landmarks"), us(t3, "segmentation_masks");
26023        const e3 = new Qi();
26024        xr(e3, Do, this.h);
26025        const n3 = new is();
26026        Rn(n3, 2, "mediapipe.tasks.vision.pose_landmarker.PoseLandmarkerGraph"), ns(n3, "IMAGE:image_in"), ns(n3, "NORM_RECT:norm_rect"), rs(n3, "NORM_LANDMARKS:normalized_landmarks"), rs(n3, "WORLD_LANDMARKS:world_landmarks"), n3.o(e3), cs(t3, n3), la(this, t3), this.g.attachProtoVectorListener("normalized_landmarks", ((t4, e4) => {
26027          this.landmarks = [];
26028          for (const e5 of t4) t4 = ks(e5), this.landmarks.push(Ho(t4));
26029          ua(this, e4);
26030        })), this.g.attachEmptyPacketListener("normalized_landmarks", ((t4) => {
26031          this.landmarks = [], ua(this, t4);
26032        })), this.g.attachProtoVectorListener("world_landmarks", ((t4, e4) => {
26033          this.worldLandmarks = [];
26034          for (const e5 of t4) t4 = As(e5), this.worldLandmarks.push(Wo(t4));
26035          ua(this, e4);
26036        })), this.g.attachEmptyPacketListener("world_landmarks", ((t4) => {
26037          this.worldLandmarks = [], ua(this, t4);
26038        })), this.outputSegmentationMasks && (rs(n3, "SEGMENTATION_MASK:segmentation_masks"), fa(this, "segmentation_masks"), this.g.aa("segmentation_masks", ((t4, e4) => {
26039          this.segmentationMasks = t4.map(((t5) => fc(this, t5, true, !this.u))), ua(this, e4);
26040        })), this.g.attachEmptyPacketListener("segmentation_masks", ((t4) => {
26041          this.segmentationMasks = [], ua(this, t4);
26042        }))), t3 = t3.g(), this.setGraph(new Uint8Array(t3), true);
26043      }
26044    };
26045    Zc.prototype.detectForVideo = Zc.prototype.G, Zc.prototype.detect = Zc.prototype.F, Zc.prototype.setOptions = Zc.prototype.o, Zc.createFromModelPath = function(t3, e3) {
26046      return cc(Zc, t3, { baseOptions: { modelAssetPath: e3 } });
26047    }, Zc.createFromModelBuffer = function(t3, e3) {
26048      return cc(Zc, t3, { baseOptions: { modelAssetBuffer: e3 } });
26049    }, Zc.createFromOptions = function(t3, e3) {
26050      return cc(Zc, t3, e3);
26051    }, Zc.POSE_CONNECTIONS = Cc;
26052  }
26053});
26054
vendor: 341,595 bytes, lines 26055-32509
26055// node_modules/@daily-co/daily-js/dist/daily-esm.js
26056var daily_esm_exports = {};
26057__export(daily_esm_exports, {
26058  DAILY_ACCESS_LEVEL_FULL: () => vi2,
26059  DAILY_ACCESS_LEVEL_LOBBY: () => gi2,
26060  DAILY_ACCESS_LEVEL_NONE: () => mi2,
26061  DAILY_ACCESS_UNKNOWN: () => fi2,
26062  DAILY_CAMERA_ERROR_CAM_AND_MIC_IN_USE: () => Ii2,
26063  DAILY_CAMERA_ERROR_CAM_IN_USE: () => Ai2,
26064  DAILY_CAMERA_ERROR_CONSTRAINTS: () => Ni2,
26065  DAILY_CAMERA_ERROR_MIC_IN_USE: () => ji2,
26066  DAILY_CAMERA_ERROR_NOT_FOUND: () => Di2,
26067  DAILY_CAMERA_ERROR_PERMISSIONS: () => xi2,
26068  DAILY_CAMERA_ERROR_UNDEF_MEDIADEVICES: () => Li2,
26069  DAILY_CAMERA_ERROR_UNKNOWN: () => Ri2,
26070  DAILY_EVENT_ACCESS_STATE_UPDATED: () => Zi2,
26071  DAILY_EVENT_ACTIVE_SPEAKER_CHANGE: () => Eo2,
26072  DAILY_EVENT_ACTIVE_SPEAKER_MODE_CHANGE: () => To2,
26073  DAILY_EVENT_APP_MSG: () => yo2,
26074  DAILY_EVENT_CAMERA_ERROR: () => zi2,
26075  DAILY_EVENT_CPU_LOAD_CHANGE: () => Ao2,
26076  DAILY_EVENT_ERROR: () => Jo2,
26077  DAILY_EVENT_EXIT_FULLSCREEN: () => xo2,
26078  DAILY_EVENT_FACE_COUNTS_UPDATED: () => jo2,
26079  DAILY_EVENT_FULLSCREEN: () => Io2,
26080  DAILY_EVENT_IFRAME_LAUNCH_CONFIG: () => Bi2,
26081  DAILY_EVENT_IFRAME_READY_FOR_LAUNCH_CONFIG: () => Fi2,
26082  DAILY_EVENT_INPUT_SETTINGS_UPDATED: () => Uo2,
26083  DAILY_EVENT_JOINED_MEETING: () => Hi2,
26084  DAILY_EVENT_JOINING_MEETING: () => Wi2,
26085  DAILY_EVENT_LANG_UPDATED: () => Fo2,
26086  DAILY_EVENT_LEFT_MEETING: () => Gi2,
26087  DAILY_EVENT_LIVE_STREAMING_ERROR: () => Ro2,
26088  DAILY_EVENT_LIVE_STREAMING_STARTED: () => Lo2,
26089  DAILY_EVENT_LIVE_STREAMING_STOPPED: () => No2,
26090  DAILY_EVENT_LIVE_STREAMING_UPDATED: () => Do2,
26091  DAILY_EVENT_LOADED: () => $i2,
26092  DAILY_EVENT_LOADING: () => Vi2,
26093  DAILY_EVENT_LOAD_ATTEMPT_FAILED: () => Ji2,
26094  DAILY_EVENT_LOCAL_SCREEN_SHARE_CANCELED: () => Co2,
26095  DAILY_EVENT_LOCAL_SCREEN_SHARE_STARTED: () => ko2,
26096  DAILY_EVENT_LOCAL_SCREEN_SHARE_STOPPED: () => Mo2,
26097  DAILY_EVENT_MEETING_SESSION_DATA_ERROR: () => no2,
26098  DAILY_EVENT_MEETING_SESSION_STATE_UPDATED: () => to2,
26099  DAILY_EVENT_MEETING_SESSION_SUMMARY_UPDATED: () => eo2,
26100  DAILY_EVENT_NETWORK_CONNECTION: () => Po2,
26101  DAILY_EVENT_NETWORK_QUALITY_CHANGE: () => Oo2,
26102  DAILY_EVENT_NONFATAL_ERROR: () => Vo2,
26103  DAILY_EVENT_PARTICIPANT_COUNTS_UPDATED: () => Xi2,
26104  DAILY_EVENT_PARTICIPANT_JOINED: () => Qi2,
26105  DAILY_EVENT_PARTICIPANT_LEFT: () => Yi2,
26106  DAILY_EVENT_PARTICIPANT_UPDATED: () => Ki2,
26107  DAILY_EVENT_RECEIVE_SETTINGS_UPDATED: () => Bo2,
26108  DAILY_EVENT_RECORDING_DATA: () => mo2,
26109  DAILY_EVENT_RECORDING_ERROR: () => vo2,
26110  DAILY_EVENT_RECORDING_STARTED: () => po2,
26111  DAILY_EVENT_RECORDING_STATS: () => fo2,
26112  DAILY_EVENT_RECORDING_STOPPED: () => ho2,
26113  DAILY_EVENT_RECORDING_UPLOAD_COMPLETED: () => go2,
26114  DAILY_EVENT_REMOTE_MEDIA_PLAYER_STARTED: () => _o2,
26115  DAILY_EVENT_REMOTE_MEDIA_PLAYER_STOPPED: () => So2,
26116  DAILY_EVENT_REMOTE_MEDIA_PLAYER_UPDATED: () => wo2,
26117  DAILY_EVENT_STARTED_CAMERA: () => qi2,
26118  DAILY_EVENT_THEME_UPDATED: () => Ui2,
26119  DAILY_EVENT_TRACK_STARTED: () => so2,
26120  DAILY_EVENT_TRACK_STOPPED: () => ao2,
26121  DAILY_EVENT_TRANSCRIPTION_ERROR: () => uo2,
26122  DAILY_EVENT_TRANSCRIPTION_MSG: () => bo2,
26123  DAILY_EVENT_TRANSCRIPTION_STARTED: () => co2,
26124  DAILY_EVENT_TRANSCRIPTION_STOPPED: () => lo2,
26125  DAILY_EVENT_WAITING_PARTICIPANT_ADDED: () => ro2,
26126  DAILY_EVENT_WAITING_PARTICIPANT_REMOVED: () => oo2,
26127  DAILY_EVENT_WAITING_PARTICIPANT_UPDATED: () => io2,
26128  DAILY_FATAL_ERROR_CONNECTION: () => Pi2,
26129  DAILY_FATAL_ERROR_EJECTED: () => _i2,
26130  DAILY_FATAL_ERROR_EOL: () => Ti2,
26131  DAILY_FATAL_ERROR_EXP_ROOM: () => ki2,
26132  DAILY_FATAL_ERROR_EXP_TOKEN: () => Mi2,
26133  DAILY_FATAL_ERROR_MEETING_FULL: () => Ei2,
26134  DAILY_FATAL_ERROR_NBF_ROOM: () => wi2,
26135  DAILY_FATAL_ERROR_NBF_TOKEN: () => Si2,
26136  DAILY_FATAL_ERROR_NOT_ALLOWED: () => Oi2,
26137  DAILY_FATAL_ERROR_NO_ROOM: () => Ci2,
26138  DAILY_RECEIVE_SETTINGS_ALL_PARTICIPANTS_KEY: () => bi2,
26139  DAILY_RECEIVE_SETTINGS_BASE_KEY: () => yi2,
26140  DAILY_STATE_ERROR: () => ai2,
26141  DAILY_STATE_JOINED: () => oi2,
26142  DAILY_STATE_JOINING: () => ii2,
26143  DAILY_STATE_LEFT: () => si2,
26144  DAILY_STATE_NEW: () => ti2,
26145  DAILY_TRACK_STATE_BLOCKED: () => ci2,
26146  DAILY_TRACK_STATE_INTERRUPTED: () => pi2,
26147  DAILY_TRACK_STATE_LOADING: () => di2,
26148  DAILY_TRACK_STATE_OFF: () => li2,
26149  DAILY_TRACK_STATE_PLAYABLE: () => hi2,
26150  DAILY_TRACK_STATE_SENDABLE: () => ui2,
26151  default: () => Ha2
26152});
26153function e2(e3, t3) {
26154  if (null == e3) return {};
26155  var n3, r3, i3 = (function(e4, t4) {
26156    if (null == e4) return {};
26157    var n4 = {};
26158    for (var r4 in e4) if ({}.hasOwnProperty.call(e4, r4)) {
26159      if (-1 !== t4.indexOf(r4)) continue;
26160      n4[r4] = e4[r4];
26161    }
26162    return n4;
26163  })(e3, t3);
26164  if (Object.getOwnPropertySymbols) {
26165    var o3 = Object.getOwnPropertySymbols(e3);
26166    for (r3 = 0; r3 < o3.length; r3++) n3 = o3[r3], -1 === t3.indexOf(n3) && {}.propertyIsEnumerable.call(e3, n3) && (i3[n3] = e3[n3]);
26167  }
26168  return i3;
26169}
26170function t2(e3, t3) {
26171  if (!(e3 instanceof t3)) throw new TypeError("Cannot call a class as a function");
26172}
26173function n2(e3) {
26174  return n2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e4) {
26175    return typeof e4;
26176  } : function(e4) {
26177    return e4 && "function" == typeof Symbol && e4.constructor === Symbol && e4 !== Symbol.prototype ? "symbol" : typeof e4;
26178  }, n2(e3);
26179}
26180function r2(e3) {
26181  var t3 = (function(e4, t4) {
26182    if ("object" != n2(e4) || !e4) return e4;
26183    var r3 = e4[Symbol.toPrimitive];
26184    if (void 0 !== r3) {
26185      var i3 = r3.call(e4, t4 || "default");
26186      if ("object" != n2(i3)) return i3;
26187      throw new TypeError("@@toPrimitive must return a primitive value.");
26188    }
26189    return ("string" === t4 ? String : Number)(e4);
26190  })(e3, "string");
26191  return "symbol" == n2(t3) ? t3 : t3 + "";
26192}
26193function i2(e3, t3) {
26194  for (var n3 = 0; n3 < t3.length; n3++) {
26195    var i3 = t3[n3];
26196    i3.enumerable = i3.enumerable || false, i3.configurable = true, "value" in i3 && (i3.writable = true), Object.defineProperty(e3, r2(i3.key), i3);
26197  }
26198}
26199function o2(e3, t3, n3) {
26200  return t3 && i2(e3.prototype, t3), n3 && i2(e3, n3), Object.defineProperty(e3, "prototype", { writable: false }), e3;
26201}
26202function s2(e3, t3) {
26203  if (t3 && ("object" == n2(t3) || "function" == typeof t3)) return t3;
26204  if (void 0 !== t3) throw new TypeError("Derived constructors may only return object or undefined");
26205  return (function(e4) {
26206    if (void 0 === e4) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
26207    return e4;
26208  })(e3);
26209}
26210function a2(e3) {
26211  return a2 = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e4) {
26212    return e4.__proto__ || Object.getPrototypeOf(e4);
26213  }, a2(e3);
26214}
26215function c2(e3, t3) {
26216  return c2 = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e4, t4) {
26217    return e4.__proto__ = t4, e4;
26218  }, c2(e3, t3);
26219}
26220function l2(e3, t3) {
26221  if ("function" != typeof t3 && null !== t3) throw new TypeError("Super expression must either be null or a function");
26222  e3.prototype = Object.create(t3 && t3.prototype, { constructor: { value: e3, writable: true, configurable: true } }), Object.defineProperty(e3, "prototype", { writable: false }), t3 && c2(e3, t3);
26223}
26224function u2(e3, t3, n3) {
26225  return (t3 = r2(t3)) in e3 ? Object.defineProperty(e3, t3, { value: n3, enumerable: true, configurable: true, writable: true }) : e3[t3] = n3, e3;
26226}
26227function d2(e3, t3, n3, r3, i3, o3, s3) {
26228  try {
26229    var a3 = e3[o3](s3), c3 = a3.value;
26230  } catch (e4) {
26231    return void n3(e4);
26232  }
26233  a3.done ? t3(c3) : Promise.resolve(c3).then(r3, i3);
26234}
26235function p2(e3) {
26236  return function() {
26237    var t3 = this, n3 = arguments;
26238    return new Promise((function(r3, i3) {
26239      var o3 = e3.apply(t3, n3);
26240      function s3(e4) {
26241        d2(o3, r3, i3, s3, a3, "next", e4);
26242      }
26243      function a3(e4) {
26244        d2(o3, r3, i3, s3, a3, "throw", e4);
26245      }
26246      s3(void 0);
26247    }));
26248  };
26249}
26250function h2(e3, t3) {
26251  (null == t3 || t3 > e3.length) && (t3 = e3.length);
26252  for (var n3 = 0, r3 = Array(t3); n3 < t3; n3++) r3[n3] = e3[n3];
26253  return r3;
26254}
26255function f2(e3, t3) {
26256  return (function(e4) {
26257    if (Array.isArray(e4)) return e4;
26258  })(e3) || (function(e4, t4) {
26259    var n3 = null == e4 ? null : "undefined" != typeof Symbol && e4[Symbol.iterator] || e4["@@iterator"];
26260    if (null != n3) {
26261      var r3, i3, o3, s3, a3 = [], c3 = true, l3 = false;
26262      try {
26263        if (o3 = (n3 = n3.call(e4)).next, 0 === t4) {
26264          if (Object(n3) !== n3) return;
26265          c3 = false;
26266        } else for (; !(c3 = (r3 = o3.call(n3)).done) && (a3.push(r3.value), a3.length !== t4); c3 = true) ;
26267      } catch (e5) {
26268        l3 = true, i3 = e5;
26269      } finally {
26270        try {
26271          if (!c3 && null != n3.return && (s3 = n3.return(), Object(s3) !== s3)) return;
26272        } finally {
26273          if (l3) throw i3;
26274        }
26275      }
26276      return a3;
26277    }
26278  })(e3, t3) || (function(e4, t4) {
26279    if (e4) {
26280      if ("string" == typeof e4) return h2(e4, t4);
26281      var n3 = {}.toString.call(e4).slice(8, -1);
26282      return "Object" === n3 && e4.constructor && (n3 = e4.constructor.name), "Map" === n3 || "Set" === n3 ? Array.from(e4) : "Arguments" === n3 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n3) ? h2(e4, t4) : void 0;
26283    }
26284  })(e3, t3) || (function() {
26285    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
26286  })();
26287}
26288function v2(e3) {
26289  return e3 && e3.__esModule && Object.prototype.hasOwnProperty.call(e3, "default") ? e3.default : e3;
26290}
26291function w2(e3, t3, n3) {
26292  for (n3 of e3.keys()) if (S2(n3, t3)) return n3;
26293}
26294function S2(e3, t3) {
26295  var n3, r3, i3;
26296  if (e3 === t3) return true;
26297  if (e3 && t3 && (n3 = e3.constructor) === t3.constructor) {
26298    if (n3 === Date) return e3.getTime() === t3.getTime();
26299    if (n3 === RegExp) return e3.toString() === t3.toString();
26300    if (n3 === Array) {
26301      if ((r3 = e3.length) === t3.length) for (; r3-- && S2(e3[r3], t3[r3]); ) ;
26302      return -1 === r3;
26303    }
26304    if (n3 === Set) {
26305      if (e3.size !== t3.size) return false;
26306      for (r3 of e3) {
26307        if ((i3 = r3) && "object" == typeof i3 && !(i3 = w2(t3, i3))) return false;
26308        if (!t3.has(i3)) return false;
26309      }
26310      return true;
26311    }
26312    if (n3 === Map) {
26313      if (e3.size !== t3.size) return false;
26314      for (r3 of e3) {
26315        if ((i3 = r3[0]) && "object" == typeof i3 && !(i3 = w2(t3, i3))) return false;
26316        if (!S2(r3[1], t3.get(i3))) return false;
26317      }
26318      return true;
26319    }
26320    if (n3 === ArrayBuffer) e3 = new Uint8Array(e3), t3 = new Uint8Array(t3);
26321    else if (n3 === DataView) {
26322      if ((r3 = e3.byteLength) === t3.byteLength) for (; r3-- && e3.getInt8(r3) === t3.getInt8(r3); ) ;
26323      return -1 === r3;
26324    }
26325    if (ArrayBuffer.isView(e3)) {
26326      if ((r3 = e3.byteLength) === t3.byteLength) for (; r3-- && e3[r3] === t3[r3]; ) ;
26327      return -1 === r3;
26328    }
26329    if (!n3 || "object" == typeof e3) {
26330      for (n3 in r3 = 0, e3) {
26331        if (_2.call(e3, n3) && ++r3 && !_2.call(t3, n3)) return false;
26332        if (!(n3 in t3) || !S2(e3[n3], t3[n3])) return false;
26333      }
26334      return Object.keys(t3).length === r3;
26335    }
26336  }
26337  return e3 != e3 && t3 != t3;
26338}
26339function N2() {
26340  return Date.now() + Math.random().toString();
26341}
26342function R2() {
26343  throw new Error("Method must be implemented in subclass");
26344}
26345function F2(e3, t3) {
26346  return null != t3 && t3.proxyUrl ? t3.proxyUrl + ("/" === t3.proxyUrl.slice(-1) ? "" : "/") + e3.substring(8) : e3;
26347}
26348function B2(e3) {
26349  return null != e3 && e3.callObjectBundleUrlOverride ? e3.callObjectBundleUrlOverride : F2("https://c.daily.co/call-machine/versioned/".concat("0.82.0", "/static/call-machine-object-bundle.js"), e3);
26350}
26351function U2(e3) {
26352  try {
26353    new URL(e3);
26354  } catch (e4) {
26355    return false;
26356  }
26357  return true;
26358}
26359function q2(e3, t3, n3) {
26360  const r3 = n3 || $2, i3 = r3.__SENTRY__ = r3.__SENTRY__ || {}, o3 = i3[J2] = i3[J2] || {};
26361  return o3[e3] || (o3[e3] = t3());
26362}
26363function G2(e3) {
26364  if (!("console" in $2)) return e3();
26365  const t3 = $2.console, n3 = {}, r3 = Object.keys(H2);
26366  r3.forEach(((e4) => {
26367    const r4 = H2[e4];
26368    n3[e4] = t3[e4], t3[e4] = r4;
26369  }));
26370  try {
26371    return e3();
26372  } finally {
26373    r3.forEach(((e4) => {
26374      t3[e4] = n3[e4];
26375    }));
26376  }
26377}
26378function Z2(e3) {
26379  return e3[e3.length - 1] || {};
26380}
26381function te2(e3) {
26382  try {
26383    return e3 && "function" == typeof e3 && e3.name || ee2;
26384  } catch (e4) {
26385    return ee2;
26386  }
26387}
26388function ne2(e3) {
26389  const t3 = e3.exception;
26390  if (t3) {
26391    const e4 = [];
26392    try {
26393      return t3.values.forEach(((t4) => {
26394        t4.stacktrace.frames && e4.push(...t4.stacktrace.frames);
26395      })), e4;
26396    } catch (e5) {
26397      return;
26398    }
26399  }
26400}
26401function oe2(e3, t3) {
26402  re2[e3] = re2[e3] || [], re2[e3].push(t3);
26403}
26404function se2(e3, t3) {
26405  if (!ie2[e3]) {
26406    ie2[e3] = true;
26407    try {
26408      t3();
26409    } catch (t4) {
26410      z2 && Q2.error(`Error while instrumenting ${e3}`, t4);
26411    }
26412  }
26413}
26414function ae2(e3, t3) {
26415  const n3 = e3 && re2[e3];
26416  if (n3) for (const r3 of n3) try {
26417    r3(t3);
26418  } catch (t4) {
26419    z2 && Q2.error(`Error while triggering instrumentation handler.
26420Type: ${e3}
26421Name: ${te2(r3)}
26422Error:`, t4);
26423  }
26424}
26425function le2() {
26426  ce2 = $2.onerror, $2.onerror = function(e3, t3, n3, r3, i3) {
26427    return ae2("error", { column: r3, error: i3, line: n3, msg: e3, url: t3 }), !!ce2 && ce2.apply(this, arguments);
26428  }, $2.onerror.__SENTRY_INSTRUMENTED__ = true;
26429}
26430function de2() {
26431  ue2 = $2.onunhandledrejection, $2.onunhandledrejection = function(e3) {
26432    return ae2("unhandledrejection", e3), !ue2 || ue2.apply(this, arguments);
26433  }, $2.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;
26434}
26435function pe2() {
26436  return he2($2), $2;
26437}
26438function he2(e3) {
26439  const t3 = e3.__SENTRY__ = e3.__SENTRY__ || {};
26440  return t3.version = t3.version || J2, t3[J2] = t3[J2] || {};
26441}
26442function ve2(e3) {
26443  switch (fe2.call(e3)) {
26444    case "[object Error]":
26445    case "[object Exception]":
26446    case "[object DOMException]":
26447    case "[object WebAssembly.Exception]":
26448      return true;
26449    default:
26450      return Ce2(e3, Error);
26451  }
26452}
26453function ge2(e3, t3) {
26454  return fe2.call(e3) === `[object ${t3}]`;
26455}
26456function me2(e3) {
26457  return ge2(e3, "ErrorEvent");
26458}
26459function ye2(e3) {
26460  return ge2(e3, "DOMError");
26461}
26462function be2(e3) {
26463  return ge2(e3, "String");
26464}
26465function _e2(e3) {
26466  return "object" == typeof e3 && null !== e3 && "__sentry_template_string__" in e3 && "__sentry_template_values__" in e3;
26467}
26468function we2(e3) {
26469  return null === e3 || _e2(e3) || "object" != typeof e3 && "function" != typeof e3;
26470}
26471function Se2(e3) {
26472  return ge2(e3, "Object");
26473}
26474function ke2(e3) {
26475  return "undefined" != typeof Event && Ce2(e3, Event);
26476}
26477function Me2(e3) {
26478  return Boolean(e3 && e3.then && "function" == typeof e3.then);
26479}
26480function Ce2(e3, t3) {
26481  try {
26482    return e3 instanceof t3;
26483  } catch (e4) {
26484    return false;
26485  }
26486}
26487function Ee2(e3) {
26488  return !("object" != typeof e3 || null === e3 || !e3.__isVue && !e3._isVue);
26489}
26490function Oe2(e3, t3 = {}) {
26491  if (!e3) return "<unknown>";
26492  try {
26493    let n3 = e3;
26494    const r3 = 5, i3 = [];
26495    let o3 = 0, s3 = 0;
26496    const a3 = " > ", c3 = a3.length;
26497    let l3;
26498    const u3 = Array.isArray(t3) ? t3 : t3.keyAttrs, d3 = !Array.isArray(t3) && t3.maxStringLength || 80;
26499    for (; n3 && o3++ < r3 && (l3 = Pe2(n3, u3), !("html" === l3 || o3 > 1 && s3 + i3.length * c3 + l3.length >= d3)); ) i3.push(l3), s3 += l3.length, n3 = n3.parentNode;
26500    return i3.reverse().join(a3);
26501  } catch (e4) {
26502    return "<unknown>";
26503  }
26504}
26505function Pe2(e3, t3) {
26506  const n3 = e3, r3 = [];
26507  if (!n3 || !n3.tagName) return "";
26508  if (Te2.HTMLElement && n3 instanceof HTMLElement && n3.dataset) {
26509    if (n3.dataset.sentryComponent) return n3.dataset.sentryComponent;
26510    if (n3.dataset.sentryElement) return n3.dataset.sentryElement;
26511  }
26512  r3.push(n3.tagName.toLowerCase());
26513  const i3 = t3 && t3.length ? t3.filter(((e4) => n3.getAttribute(e4))).map(((e4) => [e4, n3.getAttribute(e4)])) : null;
26514  if (i3 && i3.length) i3.forEach(((e4) => {
26515    r3.push(`[${e4[0]}="${e4[1]}"]`);
26516  }));
26517  else {
26518    n3.id && r3.push(`#${n3.id}`);
26519    const e4 = n3.className;
26520    if (e4 && be2(e4)) {
26521      const t4 = e4.split(/\s+/);
26522      for (const e5 of t4) r3.push(`.${e5}`);
26523    }
26524  }
26525  const o3 = ["aria-label", "type", "name", "title", "alt"];
26526  for (const e4 of o3) {
26527    const t4 = n3.getAttribute(e4);
26528    t4 && r3.push(`[${e4}="${t4}"]`);
26529  }
26530  return r3.join("");
26531}
26532function Ae2(e3, t3 = 0) {
26533  return "string" != typeof e3 || 0 === t3 || e3.length <= t3 ? e3 : `${e3.slice(0, t3)}...`;
26534}
26535function je2(e3, t3) {
26536  if (!Array.isArray(e3)) return "";
26537  const n3 = [];
26538  for (let t4 = 0; t4 < e3.length; t4++) {
26539    const r3 = e3[t4];
26540    try {
26541      Ee2(r3) ? n3.push("[VueViewModel]") : n3.push(String(r3));
26542    } catch (e4) {
26543      n3.push("[value cannot be serialized]");
26544    }
26545  }
26546  return n3.join(t3);
26547}
26548function Ie2(e3, t3, n3 = false) {
26549  return !!be2(e3) && (ge2(t3, "RegExp") ? t3.test(e3) : !!be2(t3) && (n3 ? e3 === t3 : e3.includes(t3)));
26550}
26551function xe2(e3, t3 = [], n3 = false) {
26552  return t3.some(((t4) => Ie2(e3, t4, n3)));
26553}
26554function Le2(e3, t3, n3) {
26555  if (!(t3 in e3)) return;
26556  const r3 = e3[t3], i3 = n3(r3);
26557  "function" == typeof i3 && Ne2(i3, r3);
26558  try {
26559    e3[t3] = i3;
26560  } catch (n4) {
26561    z2 && Q2.log(`Failed to replace method "${t3}" in object`, e3);
26562  }
26563}
26564function De2(e3, t3, n3) {
26565  try {
26566    Object.defineProperty(e3, t3, { value: n3, writable: true, configurable: true });
26567  } catch (n4) {
26568    z2 && Q2.log(`Failed to add non-enumerable property "${t3}" to object`, e3);
26569  }
26570}
26571function Ne2(e3, t3) {
26572  try {
26573    const n3 = t3.prototype || {};
26574    e3.prototype = t3.prototype = n3, De2(e3, "__sentry_original__", t3);
26575  } catch (e4) {
26576  }
26577}
26578function Re2(e3) {
26579  return e3.__sentry_original__;
26580}
26581function Fe2(e3) {
26582  if (ve2(e3)) return { message: e3.message, name: e3.name, stack: e3.stack, ...Ue2(e3) };
26583  if (ke2(e3)) {
26584    const t3 = { type: e3.type, target: Be2(e3.target), currentTarget: Be2(e3.currentTarget), ...Ue2(e3) };
26585    return "undefined" != typeof CustomEvent && Ce2(e3, CustomEvent) && (t3.detail = e3.detail), t3;
26586  }
26587  return e3;
26588}
26589function Be2(e3) {
26590  try {
26591    return t3 = e3, "undefined" != typeof Element && Ce2(t3, Element) ? Oe2(e3) : Object.prototype.toString.call(e3);
26592  } catch (e4) {
26593    return "<unknown>";
26594  }
26595  var t3;
26596}
26597function Ue2(e3) {
26598  if ("object" == typeof e3 && null !== e3) {
26599    const t3 = {};
26600    for (const n3 in e3) Object.prototype.hasOwnProperty.call(e3, n3) && (t3[n3] = e3[n3]);
26601    return t3;
26602  }
26603  return {};
26604}
26605function Ve2(e3) {
26606  return Je2(e3, /* @__PURE__ */ new Map());
26607}
26608function Je2(e3, t3) {
26609  if ((function(e4) {
26610    if (!Se2(e4)) return false;
26611    try {
26612      const t4 = Object.getPrototypeOf(e4).constructor.name;
26613      return !t4 || "Object" === t4;
26614    } catch (e5) {
26615      return true;
26616    }
26617  })(e3)) {
26618    const n3 = t3.get(e3);
26619    if (void 0 !== n3) return n3;
26620    const r3 = {};
26621    t3.set(e3, r3);
26622    for (const n4 of Object.getOwnPropertyNames(e3)) void 0 !== e3[n4] && (r3[n4] = Je2(e3[n4], t3));
26623    return r3;
26624  }
26625  if (Array.isArray(e3)) {
26626    const n3 = t3.get(e3);
26627    if (void 0 !== n3) return n3;
26628    const r3 = [];
26629    return t3.set(e3, r3), e3.forEach(((e4) => {
26630      r3.push(Je2(e4, t3));
26631    })), r3;
26632  }
26633  return e3;
26634}
26635function $e2() {
26636  return Date.now() / 1e3;
26637}
26638function ze2() {
26639  const e3 = $2, t3 = e3.crypto || e3.msCrypto;
26640  let n3 = () => 16 * Math.random();
26641  try {
26642    if (t3 && t3.randomUUID) return t3.randomUUID().replace(/-/g, "");
26643    t3 && t3.getRandomValues && (n3 = () => {
26644      const e4 = new Uint8Array(1);
26645      return t3.getRandomValues(e4), e4[0];
26646    });
26647  } catch (e4) {
26648  }
26649  return ("10000000100040008000" + 1e11).replace(/[018]/g, ((e4) => (e4 ^ (15 & n3()) >> e4 / 4).toString(16)));
26650}
26651function We2(e3) {
26652  return e3.exception && e3.exception.values ? e3.exception.values[0] : void 0;
26653}
26654function He2(e3) {
26655  const { message: t3, event_id: n3 } = e3;
26656  if (t3) return t3;
26657  const r3 = We2(e3);
26658  return r3 ? r3.type && r3.value ? `${r3.type}: ${r3.value}` : r3.type || r3.value || n3 || "<unknown>" : n3 || "<unknown>";
26659}
26660function Ge2(e3, t3, n3) {
26661  const r3 = e3.exception = e3.exception || {}, i3 = r3.values = r3.values || [], o3 = i3[0] = i3[0] || {};
26662  o3.value || (o3.value = t3 || ""), o3.type || (o3.type = n3 || "Error");
26663}
26664function Qe2(e3, t3) {
26665  const n3 = We2(e3);
26666  if (!n3) return;
26667  const r3 = n3.mechanism;
26668  if (n3.mechanism = { type: "generic", handled: true, ...r3, ...t3 }, t3 && "data" in t3) {
26669    const e4 = { ...r3 && r3.data, ...t3.data };
26670    n3.mechanism.data = e4;
26671  }
26672}
26673function Ke2(e3) {
26674  if ((function(e4) {
26675    try {
26676      return e4.__sentry_captured__;
26677    } catch (e5) {
26678    }
26679  })(e3)) return true;
26680  try {
26681    De2(e3, "__sentry_captured__", true);
26682  } catch (e4) {
26683  }
26684  return false;
26685}
26686function Xe2(e3) {
26687  return new et2(((t3) => {
26688    t3(e3);
26689  }));
26690}
26691function Ze2(e3) {
26692  return new et2(((t3, n3) => {
26693    n3(e3);
26694  }));
26695}
26696function tt2(e3) {
26697  const t3 = qe2(), n3 = { sid: ze2(), init: true, timestamp: t3, started: t3, duration: 0, status: "ok", errors: 0, ignoreDuration: false, toJSON: () => (function(e4) {
26698    return Ve2({ sid: `${e4.sid}`, init: e4.init, started: new Date(1e3 * e4.started).toISOString(), timestamp: new Date(1e3 * e4.timestamp).toISOString(), status: e4.status, errors: e4.errors, did: "number" == typeof e4.did || "string" == typeof e4.did ? `${e4.did}` : void 0, duration: e4.duration, abnormal_mechanism: e4.abnormal_mechanism, attrs: { release: e4.release, environment: e4.environment, ip_address: e4.ipAddress, user_agent: e4.userAgent } });
26699  })(n3) };
26700  return e3 && nt2(n3, e3), n3;
26701}
26702function nt2(e3, t3 = {}) {
26703  if (t3.user && (!e3.ipAddress && t3.user.ip_address && (e3.ipAddress = t3.user.ip_address), e3.did || t3.did || (e3.did = t3.user.id || t3.user.email || t3.user.username)), e3.timestamp = t3.timestamp || qe2(), t3.abnormal_mechanism && (e3.abnormal_mechanism = t3.abnormal_mechanism), t3.ignoreDuration && (e3.ignoreDuration = t3.ignoreDuration), t3.sid && (e3.sid = 32 === t3.sid.length ? t3.sid : ze2()), void 0 !== t3.init && (e3.init = t3.init), !e3.did && t3.did && (e3.did = `${t3.did}`), "number" == typeof t3.started && (e3.started = t3.started), e3.ignoreDuration) e3.duration = void 0;
26704  else if ("number" == typeof t3.duration) e3.duration = t3.duration;
26705  else {
26706    const t4 = e3.timestamp - e3.started;
26707    e3.duration = t4 >= 0 ? t4 : 0;
26708  }
26709  t3.release && (e3.release = t3.release), t3.environment && (e3.environment = t3.environment), !e3.ipAddress && t3.ipAddress && (e3.ipAddress = t3.ipAddress), !e3.userAgent && t3.userAgent && (e3.userAgent = t3.userAgent), "number" == typeof t3.errors && (e3.errors = t3.errors), t3.status && (e3.status = t3.status);
26710}
26711function rt2() {
26712  return ze2();
26713}
26714function it2() {
26715  return ze2().substring(16);
26716}
26717function ot2(e3, t3, n3 = 2) {
26718  if (!t3 || "object" != typeof t3 || n3 <= 0) return t3;
26719  if (e3 && t3 && 0 === Object.keys(t3).length) return e3;
26720  const r3 = { ...e3 };
26721  for (const e4 in t3) Object.prototype.hasOwnProperty.call(t3, e4) && (r3[e4] = ot2(r3[e4], t3[e4], n3 - 1));
26722  return r3;
26723}
26724function at2(e3, t3) {
26725  t3 ? De2(e3, st2, t3) : delete e3[st2];
26726}
26727function ct2(e3) {
26728  return e3[st2];
26729}
26730function pt2() {
26731  const e3 = he2(pe2());
26732  return e3.stack = e3.stack || new dt2(q2("defaultCurrentScope", (() => new ut2())), q2("defaultIsolationScope", (() => new ut2())));
26733}
26734function ht2(e3) {
26735  return pt2().withScope(e3);
26736}
26737function ft2(e3, t3) {
26738  const n3 = pt2();
26739  return n3.withScope((() => (n3.getStackTop().scope = e3, t3(e3))));
26740}
26741function vt2(e3) {
26742  return pt2().withScope((() => e3(pt2().getIsolationScope())));
26743}
26744function gt2(e3) {
26745  const t3 = he2(e3);
26746  return t3.acs ? t3.acs : { withIsolationScope: vt2, withScope: ht2, withSetScope: ft2, withSetIsolationScope: (e4, t4) => vt2(t4), getCurrentScope: () => pt2().getScope(), getIsolationScope: () => pt2().getIsolationScope() };
26747}
26748function mt2() {
26749  return gt2(pe2()).getCurrentScope();
26750}
26751function yt2() {
26752  return gt2(pe2()).getIsolationScope();
26753}
26754function bt2() {
26755  return mt2().getClient();
26756}
26757function _t2(e3) {
26758  const t3 = e3.getPropagationContext(), { traceId: n3, spanId: r3, parentSpanId: i3 } = t3;
26759  return Ve2({ trace_id: n3, span_id: r3, parent_span_id: i3 });
26760}
26761function wt2(e3) {
26762  const t3 = e3._sentryMetrics;
26763  if (!t3) return;
26764  const n3 = {};
26765  for (const [, [e4, r3]] of t3) {
26766    (n3[e4] || (n3[e4] = [])).push(Ve2(r3));
26767  }
26768  return n3;
26769}
26770function kt2(e3) {
26771  const t3 = (function(e4) {
26772    if (!e4 || !be2(e4) && !Array.isArray(e4)) return;
26773    if (Array.isArray(e4)) return e4.reduce(((e5, t4) => {
26774      const n4 = Mt2(t4);
26775      return Object.entries(n4).forEach((([t5, n5]) => {
26776        e5[t5] = n5;
26777      })), e5;
26778    }), {});
26779    return Mt2(e4);
26780  })(e3);
26781  if (!t3) return;
26782  const n3 = Object.entries(t3).reduce(((e4, [t4, n4]) => {
26783    if (t4.match(St2)) {
26784      e4[t4.slice(7)] = n4;
26785    }
26786    return e4;
26787  }), {});
26788  return Object.keys(n3).length > 0 ? n3 : void 0;
26789}
26790function Mt2(e3) {
26791  return e3.split(",").map(((e4) => e4.split("=").map(((e5) => decodeURIComponent(e5.trim()))))).reduce(((e4, [t3, n3]) => (t3 && n3 && (e4[t3] = n3), e4)), {});
26792}
26793function Et2(e3) {
26794  const { spanId: t3, traceId: n3, isRemote: r3 } = e3.spanContext();
26795  return Ve2({ parent_span_id: r3 ? t3 : Pt2(e3).parent_span_id, span_id: r3 ? it2() : t3, trace_id: n3 });
26796}
26797function Tt2(e3) {
26798  return "number" == typeof e3 ? Ot2(e3) : Array.isArray(e3) ? e3[0] + e3[1] / 1e9 : e3 instanceof Date ? Ot2(e3.getTime()) : qe2();
26799}
26800function Ot2(e3) {
26801  return e3 > 9999999999 ? e3 / 1e3 : e3;
26802}
26803function Pt2(e3) {
26804  if ((function(e4) {
26805    return "function" == typeof e4.getSpanJSON;
26806  })(e3)) return e3.getSpanJSON();
26807  try {
26808    const { spanId: t3, traceId: n3 } = e3.spanContext();
26809    if ((function(e4) {
26810      const t4 = e4;
26811      return !!(t4.attributes && t4.startTime && t4.name && t4.endTime && t4.status);
26812    })(e3)) {
26813      const { attributes: r3, startTime: i3, name: o3, endTime: s3, parentSpanId: a3, status: c3 } = e3;
26814      return Ve2({ span_id: t3, trace_id: n3, data: r3, description: o3, parent_span_id: a3, start_timestamp: Tt2(i3), timestamp: Tt2(s3) || void 0, status: At2(c3), op: r3["sentry.op"], origin: r3["sentry.origin"], _metrics_summary: wt2(e3) });
26815    }
26816    return { span_id: t3, trace_id: n3 };
26817  } catch (e4) {
26818    return {};
26819  }
26820}
26821function At2(e3) {
26822  if (e3 && 0 !== e3.code) return 1 === e3.code ? "ok" : e3.message || "unknown_error";
26823}
26824function jt2(e3) {
26825  return e3._sentryRootSpan || e3;
26826}
26827function It2() {
26828  Ct2 || (G2((() => {
26829    console.warn("[Sentry] Deprecation warning: Returning null from `beforeSendSpan` will be disallowed from SDK version 9.0.0 onwards. The callback will only support mutating spans. To drop certain spans, configure the respective integrations directly.");
26830  })), Ct2 = true);
26831}
26832function Lt2(e3, t3) {
26833  const n3 = t3.getOptions(), { publicKey: r3 } = t3.getDsn() || {}, i3 = Ve2({ environment: n3.environment || xt2, release: n3.release, public_key: r3, trace_id: e3 });
26834  return t3.emit("createDsc", i3), i3;
26835}
26836function Dt2(e3) {
26837  const t3 = bt2();
26838  if (!t3) return {};
26839  const n3 = jt2(e3), r3 = n3._frozenDsc;
26840  if (r3) return r3;
26841  const i3 = n3.spanContext().traceState, o3 = i3 && i3.get("sentry.dsc"), s3 = o3 && kt2(o3);
26842  if (s3) return s3;
26843  const a3 = Lt2(e3.spanContext().traceId, t3), c3 = Pt2(n3), l3 = c3.data || {}, u3 = l3["sentry.sample_rate"];
26844  null != u3 && (a3.sample_rate = `${u3}`);
26845  const d3 = l3["sentry.source"], p3 = c3.description;
26846  return "url" !== d3 && p3 && (a3.transaction = p3), (function(e4) {
26847    if ("boolean" == typeof __SENTRY_TRACING__ && !__SENTRY_TRACING__) return false;
26848    const t4 = bt2(), n4 = e4 || t4 && t4.getOptions();
26849    return !!n4 && (n4.enableTracing || "tracesSampleRate" in n4 || "tracesSampler" in n4);
26850  })() && (a3.sampled = String((function(e4) {
26851    const { traceFlags: t4 } = e4.spanContext();
26852    return 1 === t4;
26853  })(n3))), t3.emit("createDsc", a3, n3), a3;
26854}
26855function Rt2(e3, t3 = false) {
26856  const { host: n3, path: r3, pass: i3, port: o3, projectId: s3, protocol: a3, publicKey: c3 } = e3;
26857  return `${a3}://${c3}${t3 && i3 ? `:${i3}` : ""}@${n3}${o3 ? `:${o3}` : ""}/${r3 ? `${r3}/` : r3}${s3}`;
26858}
26859function Ft2(e3) {
26860  return { protocol: e3.protocol, publicKey: e3.publicKey || "", pass: e3.pass || "", host: e3.host, port: e3.port || "", path: e3.path || "", projectId: e3.projectId };
26861}
26862function Bt2(e3) {
26863  const t3 = "string" == typeof e3 ? (function(e4) {
26864    const t4 = Nt2.exec(e4);
26865    if (!t4) return void G2((() => {
26866      console.error(`Invalid Sentry Dsn: ${e4}`);
26867    }));
26868    const [n3, r3, i3 = "", o3 = "", s3 = "", a3 = ""] = t4.slice(1);
26869    let c3 = "", l3 = a3;
26870    const u3 = l3.split("/");
26871    if (u3.length > 1 && (c3 = u3.slice(0, -1).join("/"), l3 = u3.pop()), l3) {
26872      const e5 = l3.match(/^\d+/);
26873      e5 && (l3 = e5[0]);
26874    }
26875    return Ft2({ host: o3, pass: i3, path: c3, projectId: l3, port: s3, protocol: n3, publicKey: r3 });
26876  })(e3) : Ft2(e3);
26877  if (t3 && (function(e4) {
26878    if (!z2) return true;
26879    const { port: t4, projectId: n3, protocol: r3 } = e4;
26880    return !(["protocol", "publicKey", "host", "projectId"].find(((t5) => !e4[t5] && (Q2.error(`Invalid Sentry Dsn: ${t5} missing`), true))) || (n3.match(/^\d+$/) ? /* @__PURE__ */ (function(e5) {
26881      return "http" === e5 || "https" === e5;
26882    })(r3) ? t4 && isNaN(parseInt(t4, 10)) && (Q2.error(`Invalid Sentry Dsn: Invalid port ${t4}`), 1) : (Q2.error(`Invalid Sentry Dsn: Invalid protocol ${r3}`), 1) : (Q2.error(`Invalid Sentry Dsn: Invalid projectId ${n3}`), 1)));
26883  })(t3)) return t3;
26884}
26885function Ut2(e3, t3 = 100, n3 = 1 / 0) {
26886  try {
26887    return Jt2("", e3, t3, n3);
26888  } catch (e4) {
26889    return { ERROR: `**non-serializable** (${e4})` };
26890  }
26891}
26892function Vt2(e3, t3 = 3, n3 = 102400) {
26893  const r3 = Ut2(e3, t3);
26894  return i3 = r3, (function(e4) {
26895    return ~-encodeURI(e4).split(/%..|./).length;
26896  })(JSON.stringify(i3)) > n3 ? Vt2(e3, t3 - 1, n3) : r3;
26897  var i3;
26898}
26899function Jt2(e3, t3, n3 = 1 / 0, r3 = 1 / 0, i3 = /* @__PURE__ */ (function() {
26900  const e4 = "function" == typeof WeakSet, t4 = e4 ? /* @__PURE__ */ new WeakSet() : [];
26901  return [function(n4) {
26902    if (e4) return !!t4.has(n4) || (t4.add(n4), false);
26903    for (let e5 = 0; e5 < t4.length; e5++) if (t4[e5] === n4) return true;
26904    return t4.push(n4), false;
26905  }, function(n4) {
26906    if (e4) t4.delete(n4);
26907    else for (let e5 = 0; e5 < t4.length; e5++) if (t4[e5] === n4) {
26908      t4.splice(e5, 1);
26909      break;
26910    }
26911  }];
26912})()) {
26913  const [o3, s3] = i3;
26914  if (null == t3 || ["boolean", "string"].includes(typeof t3) || "number" == typeof t3 && Number.isFinite(t3)) return t3;
26915  const a3 = (function(e4, t4) {
26916    try {
26917      if ("domain" === e4 && t4 && "object" == typeof t4 && t4._events) return "[Domain]";
26918      if ("domainEmitter" === e4) return "[DomainEmitter]";
26919      if ("undefined" != typeof global && t4 === global) return "[Global]";
26920      if ("undefined" != typeof window && t4 === window) return "[Window]";
26921      if ("undefined" != typeof document && t4 === document) return "[Document]";
26922      if (Ee2(t4)) return "[VueViewModel]";
26923      if (Se2(n4 = t4) && "nativeEvent" in n4 && "preventDefault" in n4 && "stopPropagation" in n4) return "[SyntheticEvent]";
26924      if ("number" == typeof t4 && !Number.isFinite(t4)) return `[${t4}]`;
26925      if ("function" == typeof t4) return `[Function: ${te2(t4)}]`;
26926      if ("symbol" == typeof t4) return `[${String(t4)}]`;
26927      if ("bigint" == typeof t4) return `[BigInt: ${String(t4)}]`;
26928      const r4 = (function(e5) {
26929        const t5 = Object.getPrototypeOf(e5);
26930        return t5 ? t5.constructor.name : "null prototype";
26931      })(t4);
26932      return /^HTML(\w*)Element$/.test(r4) ? `[HTMLElement: ${r4}]` : `[object ${r4}]`;
26933    } catch (e5) {
26934      return `**non-serializable** (${e5})`;
26935    }
26936    var n4;
26937  })(e3, t3);
26938  if (!a3.startsWith("[object ")) return a3;
26939  if (t3.__sentry_skip_normalization__) return t3;
26940  const c3 = "number" == typeof t3.__sentry_override_normalization_depth__ ? t3.__sentry_override_normalization_depth__ : n3;
26941  if (0 === c3) return a3.replace("object ", "");
26942  if (o3(t3)) return "[Circular ~]";
26943  const l3 = t3;
26944  if (l3 && "function" == typeof l3.toJSON) try {
26945    return Jt2("", l3.toJSON(), c3 - 1, r3, i3);
26946  } catch (e4) {
26947  }
26948  const u3 = Array.isArray(t3) ? [] : {};
26949  let d3 = 0;
26950  const p3 = Fe2(t3);
26951  for (const e4 in p3) {
26952    if (!Object.prototype.hasOwnProperty.call(p3, e4)) continue;
26953    if (d3 >= r3) {
26954      u3[e4] = "[MaxProperties ~]";
26955      break;
26956    }
26957    const t4 = p3[e4];
26958    u3[e4] = Jt2(e4, t4, c3 - 1, r3, i3), d3++;
26959  }
26960  return s3(t3), u3;
26961}
26962function $t2(e3, t3 = []) {
26963  return [e3, t3];
26964}
26965function qt2(e3, t3) {
26966  const [n3, r3] = e3;
26967  return [n3, [...r3, t3]];
26968}
26969function zt2(e3, t3) {
26970  const n3 = e3[1];
26971  for (const e4 of n3) {
26972    if (t3(e4, e4[0].type)) return true;
26973  }
26974  return false;
26975}
26976function Wt2(e3) {
26977  return $2.__SENTRY__ && $2.__SENTRY__.encodePolyfill ? $2.__SENTRY__.encodePolyfill(e3) : new TextEncoder().encode(e3);
26978}
26979function Ht2(e3) {
26980  const [t3, n3] = e3;
26981  let r3 = JSON.stringify(t3);
26982  function i3(e4) {
26983    "string" == typeof r3 ? r3 = "string" == typeof e4 ? r3 + e4 : [Wt2(r3), e4] : r3.push("string" == typeof e4 ? Wt2(e4) : e4);
26984  }
26985  for (const e4 of n3) {
26986    const [t4, n4] = e4;
26987    if (i3(`
26988${JSON.stringify(t4)}
26989`), "string" == typeof n4 || n4 instanceof Uint8Array) i3(n4);
26990    else {
26991      let e5;
26992      try {
26993        e5 = JSON.stringify(n4);
26994      } catch (t5) {
26995        e5 = JSON.stringify(Ut2(n4));
26996      }
26997      i3(e5);
26998    }
26999  }
27000  return "string" == typeof r3 ? r3 : (function(e4) {
27001    const t4 = e4.reduce(((e5, t5) => e5 + t5.length), 0), n4 = new Uint8Array(t4);
27002    let r4 = 0;
27003    for (const t5 of e4) n4.set(t5, r4), r4 += t5.length;
27004    return n4;
27005  })(r3);
27006}
27007function Gt2(e3) {
27008  const t3 = "string" == typeof e3.data ? Wt2(e3.data) : e3.data;
27009  return [Ve2({ type: "attachment", length: t3.length, filename: e3.filename, content_type: e3.contentType, attachment_type: e3.attachmentType }), t3];
27010}
27011function Kt2(e3) {
27012  return Qt2[e3];
27013}
27014function Yt2(e3) {
27015  if (!e3 || !e3.sdk) return;
27016  const { name: t3, version: n3 } = e3.sdk;
27017  return { name: t3, version: n3 };
27018}
27019function Xt2(e3, t3, n3, r3) {
27020  const i3 = Yt2(n3), o3 = e3.type && "replay_event" !== e3.type ? e3.type : "event";
27021  !(function(e4, t4) {
27022    t4 && (e4.sdk = e4.sdk || {}, e4.sdk.name = e4.sdk.name || t4.name, e4.sdk.version = e4.sdk.version || t4.version, e4.sdk.integrations = [...e4.sdk.integrations || [], ...t4.integrations || []], e4.sdk.packages = [...e4.sdk.packages || [], ...t4.packages || []]);
27023  })(e3, n3 && n3.sdk);
27024  const s3 = (function(e4, t4, n4, r4) {
27025    const i4 = e4.sdkProcessingMetadata && e4.sdkProcessingMetadata.dynamicSamplingContext;
27026    return { event_id: e4.event_id, sent_at: (/* @__PURE__ */ new Date()).toISOString(), ...t4 && { sdk: t4 }, ...!!n4 && r4 && { dsn: Rt2(r4) }, ...i4 && { trace: Ve2({ ...i4 }) } };
27027  })(e3, i3, r3, t3);
27028  delete e3.sdkProcessingMetadata;
27029  return $t2(s3, [[{ type: o3 }, e3]]);
27030}
27031function Zt2(e3, t3, n3, r3 = 0) {
27032  return new et2(((i3, o3) => {
27033    const s3 = e3[r3];
27034    if (null === t3 || "function" != typeof s3) i3(t3);
27035    else {
27036      const a3 = s3({ ...t3 }, n3);
27037      V2 && s3.id && null === a3 && Q2.log(`Event processor "${s3.id}" dropped event`), Me2(a3) ? a3.then(((t4) => Zt2(e3, t4, n3, r3 + 1).then(i3))).then(null, o3) : Zt2(e3, a3, n3, r3 + 1).then(i3).then(null, o3);
27038    }
27039  }));
27040}
27041function rn2(e3, t3) {
27042  const { fingerprint: n3, span: r3, breadcrumbs: i3, sdkProcessingMetadata: o3 } = t3;
27043  !(function(e4, t4) {
27044    const { extra: n4, tags: r4, user: i4, contexts: o4, level: s3, transactionName: a3 } = t4, c3 = Ve2(n4);
27045    c3 && Object.keys(c3).length && (e4.extra = { ...c3, ...e4.extra });
27046    const l3 = Ve2(r4);
27047    l3 && Object.keys(l3).length && (e4.tags = { ...l3, ...e4.tags });
27048    const u3 = Ve2(i4);
27049    u3 && Object.keys(u3).length && (e4.user = { ...u3, ...e4.user });
27050    const d3 = Ve2(o4);
27051    d3 && Object.keys(d3).length && (e4.contexts = { ...d3, ...e4.contexts });
27052    s3 && (e4.level = s3);
27053    a3 && "transaction" !== e4.type && (e4.transaction = a3);
27054  })(e3, t3), r3 && (function(e4, t4) {
27055    e4.contexts = { trace: Et2(t4), ...e4.contexts }, e4.sdkProcessingMetadata = { dynamicSamplingContext: Dt2(t4), ...e4.sdkProcessingMetadata };
27056    const n4 = jt2(t4), r4 = Pt2(n4).description;
27057    r4 && !e4.transaction && "transaction" === e4.type && (e4.transaction = r4);
27058  })(e3, r3), (function(e4, t4) {
27059    e4.fingerprint = e4.fingerprint ? Array.isArray(e4.fingerprint) ? e4.fingerprint : [e4.fingerprint] : [], t4 && (e4.fingerprint = e4.fingerprint.concat(t4));
27060    e4.fingerprint && !e4.fingerprint.length && delete e4.fingerprint;
27061  })(e3, n3), (function(e4, t4) {
27062    const n4 = [...e4.breadcrumbs || [], ...t4];
27063    e4.breadcrumbs = n4.length ? n4 : void 0;
27064  })(e3, i3), (function(e4, t4) {
27065    e4.sdkProcessingMetadata = { ...e4.sdkProcessingMetadata, ...t4 };
27066  })(e3, o3);
27067}
27068function on2(e3, t3) {
27069  const { extra: n3, tags: r3, user: i3, contexts: o3, level: s3, sdkProcessingMetadata: a3, breadcrumbs: c3, fingerprint: l3, eventProcessors: u3, attachments: d3, propagationContext: p3, transactionName: h3, span: f3 } = t3;
27070  sn2(e3, "extra", n3), sn2(e3, "tags", r3), sn2(e3, "user", i3), sn2(e3, "contexts", o3), e3.sdkProcessingMetadata = ot2(e3.sdkProcessingMetadata, a3, 2), s3 && (e3.level = s3), h3 && (e3.transactionName = h3), f3 && (e3.span = f3), c3.length && (e3.breadcrumbs = [...e3.breadcrumbs, ...c3]), l3.length && (e3.fingerprint = [...e3.fingerprint, ...l3]), u3.length && (e3.eventProcessors = [...e3.eventProcessors, ...u3]), d3.length && (e3.attachments = [...e3.attachments, ...d3]), e3.propagationContext = { ...e3.propagationContext, ...p3 };
27071}
27072function sn2(e3, t3, n3) {
27073  e3[t3] = ot2(e3[t3], n3, 1);
27074}
27075function an2(e3, t3, n3, r3, i3, o3) {
27076  const { normalizeDepth: s3 = 3, normalizeMaxBreadth: a3 = 1e3 } = e3, c3 = { ...t3, event_id: t3.event_id || n3.event_id || ze2(), timestamp: t3.timestamp || $e2() }, l3 = n3.integrations || e3.integrations.map(((e4) => e4.name));
27077  !(function(e4, t4) {
27078    const { environment: n4, release: r4, dist: i4, maxValueLength: o4 = 250 } = t4;
27079    e4.environment = e4.environment || n4 || xt2, !e4.release && r4 && (e4.release = r4);
27080    !e4.dist && i4 && (e4.dist = i4);
27081    e4.message && (e4.message = Ae2(e4.message, o4));
27082    const s4 = e4.exception && e4.exception.values && e4.exception.values[0];
27083    s4 && s4.value && (s4.value = Ae2(s4.value, o4));
27084    const a4 = e4.request;
27085    a4 && a4.url && (a4.url = Ae2(a4.url, o4));
27086  })(c3, e3), (function(e4, t4) {
27087    t4.length > 0 && (e4.sdk = e4.sdk || {}, e4.sdk.integrations = [...e4.sdk.integrations || [], ...t4]);
27088  })(c3, l3), i3 && i3.emit("applyFrameMetadata", t3), void 0 === t3.type && (function(e4, t4) {
27089    const n4 = (function(e5) {
27090      const t5 = $2._sentryDebugIds;
27091      if (!t5) return {};
27092      const n5 = Object.keys(t5);
27093      return nn2 && n5.length === tn2 || (tn2 = n5.length, nn2 = n5.reduce(((n6, r4) => {
27094        en2 || (en2 = {});
27095        const i4 = en2[r4];
27096        if (i4) n6[i4[0]] = i4[1];
27097        else {
27098          const i5 = e5(r4);
27099          for (let e6 = i5.length - 1; e6 >= 0; e6--) {
27100            const o4 = i5[e6], s4 = o4 && o4.filename, a4 = t5[r4];
27101            if (s4 && a4) {
27102              n6[s4] = a4, en2[r4] = [s4, a4];
27103              break;
27104            }
27105          }
27106        }
27107        return n6;
27108      }), {})), nn2;
27109    })(t4);
27110    try {
27111      e4.exception.values.forEach(((e5) => {
27112        e5.stacktrace.frames.forEach(((e6) => {
27113          n4 && e6.filename && (e6.debug_id = n4[e6.filename]);
27114        }));
27115      }));
27116    } catch (e5) {
27117    }
27118  })(c3, e3.stackParser);
27119  const u3 = (function(e4, t4) {
27120    if (!t4) return e4;
27121    const n4 = e4 ? e4.clone() : new ut2();
27122    return n4.update(t4), n4;
27123  })(r3, n3.captureContext);
27124  n3.mechanism && Qe2(c3, n3.mechanism);
27125  const d3 = i3 ? i3.getEventProcessors() : [], p3 = q2("globalScope", (() => new ut2())).getScopeData();
27126  if (o3) {
27127    on2(p3, o3.getScopeData());
27128  }
27129  if (u3) {
27130    on2(p3, u3.getScopeData());
27131  }
27132  const h3 = [...n3.attachments || [], ...p3.attachments];
27133  h3.length && (n3.attachments = h3), rn2(c3, p3);
27134  return Zt2([...d3, ...p3.eventProcessors], c3, n3).then(((e4) => (e4 && (function(e5) {
27135    const t4 = {};
27136    try {
27137      e5.exception.values.forEach(((e6) => {
27138        e6.stacktrace.frames.forEach(((e7) => {
27139          e7.debug_id && (e7.abs_path ? t4[e7.abs_path] = e7.debug_id : e7.filename && (t4[e7.filename] = e7.debug_id), delete e7.debug_id);
27140        }));
27141      }));
27142    } catch (e6) {
27143    }
27144    if (0 === Object.keys(t4).length) return;
27145    e5.debug_meta = e5.debug_meta || {}, e5.debug_meta.images = e5.debug_meta.images || [];
27146    const n4 = e5.debug_meta.images;
27147    Object.entries(t4).forEach((([e6, t5]) => {
27148      n4.push({ type: "sourcemap", code_file: e6, debug_id: t5 });
27149    }));
27150  })(e4), "number" == typeof s3 && s3 > 0 ? (function(e5, t4, n4) {
27151    if (!e5) return null;
27152    const r4 = { ...e5, ...e5.breadcrumbs && { breadcrumbs: e5.breadcrumbs.map(((e6) => ({ ...e6, ...e6.data && { data: Ut2(e6.data, t4, n4) } }))) }, ...e5.user && { user: Ut2(e5.user, t4, n4) }, ...e5.contexts && { contexts: Ut2(e5.contexts, t4, n4) }, ...e5.extra && { extra: Ut2(e5.extra, t4, n4) } };
27153    e5.contexts && e5.contexts.trace && r4.contexts && (r4.contexts.trace = e5.contexts.trace, e5.contexts.trace.data && (r4.contexts.trace.data = Ut2(e5.contexts.trace.data, t4, n4)));
27154    e5.spans && (r4.spans = e5.spans.map(((e6) => ({ ...e6, ...e6.data && { data: Ut2(e6.data, t4, n4) } }))));
27155    e5.contexts && e5.contexts.flags && r4.contexts && (r4.contexts.flags = Ut2(e5.contexts.flags, 3, n4));
27156    return r4;
27157  })(e4, s3, a3) : e4)));
27158}
27159function cn2(e3) {
27160  if (e3) return (function(e4) {
27161    return e4 instanceof ut2 || "function" == typeof e4;
27162  })(e3) || (function(e4) {
27163    return Object.keys(e4).some(((e5) => ln2.includes(e5)));
27164  })(e3) ? { captureContext: e3 } : e3;
27165}
27166function un2(e3, t3) {
27167  return mt2().captureEvent(e3, t3);
27168}
27169function dn2(e3) {
27170  const t3 = bt2(), n3 = yt2(), r3 = mt2(), { release: i3, environment: o3 = xt2 } = t3 && t3.getOptions() || {}, { userAgent: s3 } = $2.navigator || {}, a3 = tt2({ release: i3, environment: o3, user: r3.getUser() || n3.getUser(), ...s3 && { userAgent: s3 }, ...e3 }), c3 = n3.getSession();
27171  return c3 && "ok" === c3.status && nt2(c3, { status: "exited" }), pn2(), n3.setSession(a3), r3.setSession(a3), a3;
27172}
27173function pn2() {
27174  const e3 = yt2(), t3 = mt2(), n3 = t3.getSession() || e3.getSession();
27175  n3 && (function(e4, t4) {
27176    let n4 = {};
27177    t4 ? n4 = { status: t4 } : "ok" === e4.status && (n4 = { status: "exited" }), nt2(e4, n4);
27178  })(n3), hn2(), e3.setSession(), t3.setSession();
27179}
27180function hn2() {
27181  const e3 = yt2(), t3 = mt2(), n3 = bt2(), r3 = t3.getSession() || e3.getSession();
27182  r3 && n3 && n3.captureSession(r3);
27183}
27184function fn2(e3 = false) {
27185  e3 ? pn2() : hn2();
27186}
27187function vn2(e3, t3, n3) {
27188  return t3 || `${(function(e4) {
27189    return `${(function(e5) {
27190      const t4 = e5.protocol ? `${e5.protocol}:` : "", n4 = e5.port ? `:${e5.port}` : "";
27191      return `${t4}//${e5.host}${n4}${e5.path ? `/${e5.path}` : ""}/api/`;
27192    })(e4)}${e4.projectId}/envelope/`;
27193  })(e3)}?${(function(e4, t4) {
27194    const n4 = { sentry_version: "7" };
27195    return e4.publicKey && (n4.sentry_key = e4.publicKey), t4 && (n4.sentry_client = `${t4.name}/${t4.version}`), new URLSearchParams(n4).toString();
27196  })(e3, n3)}`;
27197}
27198function mn2(e3, t3) {
27199  for (const n3 of t3) n3 && n3.afterAllSetup && n3.afterAllSetup(e3);
27200}
27201function yn2(e3, t3, n3) {
27202  if (n3[t3.name]) V2 && Q2.log(`Integration skipped because it was already installed: ${t3.name}`);
27203  else {
27204    if (n3[t3.name] = t3, -1 === gn2.indexOf(t3.name) && "function" == typeof t3.setupOnce && (t3.setupOnce(), gn2.push(t3.name)), t3.setup && "function" == typeof t3.setup && t3.setup(e3), "function" == typeof t3.preprocessEvent) {
27205      const n4 = t3.preprocessEvent.bind(t3);
27206      e3.on("preprocessEvent", ((t4, r3) => n4(t4, r3, e3)));
27207    }
27208    if ("function" == typeof t3.processEvent) {
27209      const n4 = t3.processEvent.bind(t3), r3 = Object.assign(((t4, r4) => n4(t4, r4, e3)), { id: t3.name });
27210      e3.addEventProcessor(r3);
27211    }
27212    V2 && Q2.log(`Integration installed: ${t3.name}`);
27213  }
27214}
27215function Sn2(e3) {
27216  return void 0 === e3.type;
27217}
27218function kn2(e3) {
27219  return "transaction" === e3.type;
27220}
27221function Mn2(e3) {
27222  const t3 = [];
27223  function n3(e4) {
27224    return t3.splice(t3.indexOf(e4), 1)[0] || Promise.resolve(void 0);
27225  }
27226  return { $: t3, add: function(r3) {
27227    if (!(void 0 === e3 || t3.length < e3)) return Ze2(new bn2("Not adding Promise because buffer limit was reached."));
27228    const i3 = r3();
27229    return -1 === t3.indexOf(i3) && t3.push(i3), i3.then((() => n3(i3))).then(null, (() => n3(i3).then(null, (() => {
27230    })))), i3;
27231  }, drain: function(e4) {
27232    return new et2(((n4, r3) => {
27233      let i3 = t3.length;
27234      if (!i3) return n4(true);
27235      const o3 = setTimeout((() => {
27236        e4 && e4 > 0 && n4(false);
27237      }), e4);
27238      t3.forEach(((e5) => {
27239        Xe2(e5).then((() => {
27240          --i3 || (clearTimeout(o3), n4(true));
27241        }), r3);
27242      }));
27243    }));
27244  } };
27245}
27246function Cn2(e3, { statusCode: t3, headers: n3 }, r3 = Date.now()) {
27247  const i3 = { ...e3 }, o3 = n3 && n3["x-sentry-rate-limits"], s3 = n3 && n3["retry-after"];
27248  if (o3) for (const e4 of o3.trim().split(",")) {
27249    const [t4, n4, , , o4] = e4.split(":", 5), s4 = parseInt(t4, 10), a3 = 1e3 * (isNaN(s4) ? 60 : s4);
27250    if (n4) for (const e5 of n4.split(";")) "metric_bucket" === e5 && o4 && !o4.split(";").includes("custom") || (i3[e5] = r3 + a3);
27251    else i3.all = r3 + a3;
27252  }
27253  else s3 ? i3.all = r3 + (function(e4, t4 = Date.now()) {
27254    const n4 = parseInt(`${e4}`, 10);
27255    if (!isNaN(n4)) return 1e3 * n4;
27256    const r4 = Date.parse(`${e4}`);
27257    return isNaN(r4) ? 6e4 : r4 - t4;
27258  })(s3, r3) : 429 === t3 && (i3.all = r3 + 6e4);
27259  return i3;
27260}
27261function En2(e3, t3, n3 = Mn2(e3.bufferSize || 64)) {
27262  let r3 = {};
27263  return { send: function(i3) {
27264    const o3 = [];
27265    if (zt2(i3, ((t4, n4) => {
27266      const i4 = Kt2(n4);
27267      if ((function(e4, t5, n5 = Date.now()) {
27268        return (function(e5, t6) {
27269          return e5[t6] || e5.all || 0;
27270        })(e4, t5) > n5;
27271      })(r3, i4)) {
27272        const r4 = Tn2(t4, n4);
27273        e3.recordDroppedEvent("ratelimit_backoff", i4, r4);
27274      } else o3.push(t4);
27275    })), 0 === o3.length) return Xe2({});
27276    const s3 = $t2(i3[0], o3), a3 = (t4) => {
27277      zt2(s3, ((n4, r4) => {
27278        const i4 = Tn2(n4, r4);
27279        e3.recordDroppedEvent(t4, Kt2(r4), i4);
27280      }));
27281    };
27282    return n3.add((() => t3({ body: Ht2(s3) }).then(((e4) => (void 0 !== e4.statusCode && (e4.statusCode < 200 || e4.statusCode >= 300) && V2 && Q2.warn(`Sentry responded with status code ${e4.statusCode} to sent event.`), r3 = Cn2(r3, e4), e4)), ((e4) => {
27283      throw a3("network_error"), e4;
27284    })))).then(((e4) => e4), ((e4) => {
27285      if (e4 instanceof bn2) return V2 && Q2.error("Skipped sending event because buffer is full."), a3("queue_overflow"), Xe2({});
27286      throw e4;
27287    }));
27288  }, flush: (e4) => n3.drain(e4) };
27289}
27290function Tn2(e3, t3) {
27291  if ("event" === t3 || "transaction" === t3) return Array.isArray(e3) ? e3[1] : void 0;
27292}
27293function Pn2(e3, t3) {
27294  const n3 = bt2(), r3 = yt2();
27295  if (!n3) return;
27296  const { beforeBreadcrumb: i3 = null, maxBreadcrumbs: o3 = On2 } = n3.getOptions();
27297  if (o3 <= 0) return;
27298  const s3 = { timestamp: $e2(), ...e3 }, a3 = i3 ? G2((() => i3(s3, t3))) : s3;
27299  null !== a3 && (n3.emit && n3.emit("beforeAddBreadcrumb", a3, t3), r3.addBreadcrumb(a3, o3));
27300}
27301function Dn2(e3) {
27302  try {
27303    let t3;
27304    try {
27305      t3 = e3.exception.values[0].stacktrace.frames;
27306    } catch (e4) {
27307    }
27308    return t3 ? (function(e4 = []) {
27309      for (let t4 = e4.length - 1; t4 >= 0; t4--) {
27310        const n3 = e4[t4];
27311        if (n3 && "<anonymous>" !== n3.filename && "[native code]" !== n3.filename) return n3.filename || null;
27312      }
27313      return null;
27314    })(t3) : null;
27315  } catch (t3) {
27316    return V2 && Q2.error(`Cannot extract url for event ${He2(e3)}`), null;
27317  }
27318}
27319function Nn2(e3, t3, n3 = 250, r3, i3, o3, s3) {
27320  if (!(o3.exception && o3.exception.values && s3 && Ce2(s3.originalException, Error))) return;
27321  const a3 = o3.exception.values.length > 0 ? o3.exception.values[o3.exception.values.length - 1] : void 0;
27322  var c3, l3;
27323  a3 && (o3.exception.values = (c3 = Rn2(e3, t3, i3, s3.originalException, r3, o3.exception.values, a3, 0), l3 = n3, c3.map(((e4) => (e4.value && (e4.value = Ae2(e4.value, l3)), e4)))));
27324}
27325function Rn2(e3, t3, n3, r3, i3, o3, s3, a3) {
27326  if (o3.length >= n3 + 1) return o3;
27327  let c3 = [...o3];
27328  if (Ce2(r3[i3], Error)) {
27329    Fn2(s3, a3);
27330    const o4 = e3(t3, r3[i3]), l3 = c3.length;
27331    Bn2(o4, i3, l3, a3), c3 = Rn2(e3, t3, n3, r3[i3], i3, [o4, ...c3], o4, l3);
27332  }
27333  return Array.isArray(r3.errors) && r3.errors.forEach(((r4, o4) => {
27334    if (Ce2(r4, Error)) {
27335      Fn2(s3, a3);
27336      const l3 = e3(t3, r4), u3 = c3.length;
27337      Bn2(l3, `errors[${o4}]`, u3, a3), c3 = Rn2(e3, t3, n3, r4, i3, [l3, ...c3], l3, u3);
27338    }
27339  })), c3;
27340}
27341function Fn2(e3, t3) {
27342  e3.mechanism = e3.mechanism || { type: "generic", handled: true }, e3.mechanism = { ...e3.mechanism, ..."AggregateError" === e3.type && { is_exception_group: true }, exception_id: t3 };
27343}
27344function Bn2(e3, t3, n3, r3) {
27345  e3.mechanism = e3.mechanism || { type: "generic", handled: true }, e3.mechanism = { ...e3.mechanism, type: "chained", source: t3, exception_id: n3, parent_id: r3 };
27346}
27347function Un2(e3) {
27348  if (!e3) return {};
27349  const t3 = e3.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);
27350  if (!t3) return {};
27351  const n3 = t3[6] || "", r3 = t3[8] || "";
27352  return { host: t3[4], path: t3[5], protocol: t3[2], search: n3, hash: r3, relative: t3[5] + n3 + r3 };
27353}
27354function Vn2() {
27355  "console" in $2 && W2.forEach((function(e3) {
27356    e3 in $2.console && Le2($2.console, e3, (function(t3) {
27357      return H2[e3] = t3, function(...t4) {
27358        ae2("console", { args: t4, level: e3 });
27359        const n3 = H2[e3];
27360        n3 && n3.apply($2.console, t4);
27361      };
27362    }));
27363  }));
27364}
27365function Jn2(e3) {
27366  return "warn" === e3 ? "warning" : ["fatal", "error", "warning", "log", "info", "debug"].includes(e3) ? e3 : "log";
27367}
27368function qn2(e3, t3) {
27369  let n3 = ne2(e3), r3 = ne2(t3);
27370  if (!n3 && !r3) return true;
27371  if (n3 && !r3 || !n3 && r3) return false;
27372  if (r3.length !== n3.length) return false;
27373  for (let e4 = 0; e4 < r3.length; e4++) {
27374    const t4 = r3[e4], i3 = n3[e4];
27375    if (t4.filename !== i3.filename || t4.lineno !== i3.lineno || t4.colno !== i3.colno || t4.function !== i3.function) return false;
27376  }
27377  return true;
27378}
27379function zn2(e3, t3) {
27380  let n3 = e3.fingerprint, r3 = t3.fingerprint;
27381  if (!n3 && !r3) return true;
27382  if (n3 && !r3 || !n3 && r3) return false;
27383  try {
27384    return !(n3.join("") !== r3.join(""));
27385  } catch (e4) {
27386    return false;
27387  }
27388}
27389function Wn2(e3) {
27390  return e3.exception && e3.exception.values && e3.exception.values[0];
27391}
27392function Hn2(e3) {
27393  return void 0 === e3 ? void 0 : e3 >= 400 && e3 < 500 ? "warning" : e3 >= 500 ? "error" : void 0;
27394}
27395function Qn2(e3) {
27396  return e3 && /^function\s+\w+\(\)\s+\{\s+\[native code\]\s+\}$/.test(e3.toString());
27397}
27398function Kn2() {
27399  if ("string" == typeof EdgeRuntime) return true;
27400  if (!(function() {
27401    if (!("fetch" in Gn2)) return false;
27402    try {
27403      return new Headers(), new Request("http://www.example.com"), new Response(), true;
27404    } catch (e4) {
27405      return false;
27406    }
27407  })()) return false;
27408  if (Qn2(Gn2.fetch)) return true;
27409  let e3 = false;
27410  const t3 = Gn2.document;
27411  if (t3 && "function" == typeof t3.createElement) try {
27412    const n3 = t3.createElement("iframe");
27413    n3.hidden = true, t3.head.appendChild(n3), n3.contentWindow && n3.contentWindow.fetch && (e3 = Qn2(n3.contentWindow.fetch)), t3.head.removeChild(n3);
27414  } catch (e4) {
27415    z2 && Q2.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ", e4);
27416  }
27417  return e3;
27418}
27419function Yn2(e3, t3) {
27420  const n3 = "fetch";
27421  oe2(n3, e3), se2(n3, (() => (function(e4, t4 = false) {
27422    if (t4 && !Kn2()) return;
27423    Le2($2, "fetch", (function(t5) {
27424      return function(...n4) {
27425        const r3 = new Error(), { method: i3, url: o3 } = (function(e5) {
27426          if (0 === e5.length) return { method: "GET", url: "" };
27427          if (2 === e5.length) {
27428            const [t7, n5] = e5;
27429            return { url: Zn2(t7), method: Xn2(n5, "method") ? String(n5.method).toUpperCase() : "GET" };
27430          }
27431          const t6 = e5[0];
27432          return { url: Zn2(t6), method: Xn2(t6, "method") ? String(t6.method).toUpperCase() : "GET" };
27433        })(n4), s3 = { args: n4, fetchData: { method: i3, url: o3 }, startTimestamp: 1e3 * qe2(), virtualError: r3 };
27434        return e4 || ae2("fetch", { ...s3 }), t5.apply($2, n4).then((async (t6) => (e4 ? e4(t6) : ae2("fetch", { ...s3, endTimestamp: 1e3 * qe2(), response: t6 }), t6)), ((e5) => {
27435          throw ae2("fetch", { ...s3, endTimestamp: 1e3 * qe2(), error: e5 }), ve2(e5) && void 0 === e5.stack && (e5.stack = r3.stack, De2(e5, "framesToPop", 1)), e5;
27436        }));
27437      };
27438    }));
27439  })(void 0, t3)));
27440}
27441function Xn2(e3, t3) {
27442  return !!e3 && "object" == typeof e3 && !!e3[t3];
27443}
27444function Zn2(e3) {
27445  return "string" == typeof e3 ? e3 : e3 ? Xn2(e3, "url") ? e3.url : e3.toString ? e3.toString() : "" : "";
27446}
27447function rr2() {
27448  return nr2 > 0;
27449}
27450function ir2(e3, t3 = {}) {
27451  if (!/* @__PURE__ */ (function(e4) {
27452    return "function" == typeof e4;
27453  })(e3)) return e3;
27454  try {
27455    const t4 = e3.__sentry_wrapped__;
27456    if (t4) return "function" == typeof t4 ? t4 : e3;
27457    if (Re2(e3)) return e3;
27458  } catch (t4) {
27459    return e3;
27460  }
27461  const n3 = function(...n4) {
27462    try {
27463      const r3 = n4.map(((e4) => ir2(e4, t3)));
27464      return e3.apply(this, r3);
27465    } catch (e4) {
27466      throw nr2++, setTimeout((() => {
27467        nr2--;
27468      })), (function(...e5) {
27469        const t4 = gt2(pe2());
27470        if (2 === e5.length) {
27471          const [n5, r3] = e5;
27472          return n5 ? t4.withSetScope(n5, r3) : t4.withScope(r3);
27473        }
27474        t4.withScope(e5[0]);
27475      })(((r3) => {
27476        var i3, o3;
27477        r3.addEventProcessor(((e5) => (t3.mechanism && (Ge2(e5, void 0, void 0), Qe2(e5, t3.mechanism)), e5.extra = { ...e5.extra, arguments: n4 }, e5))), i3 = e4, mt2().captureException(i3, cn2(o3));
27478      })), e4;
27479    }
27480  };
27481  try {
27482    for (const t4 in e3) Object.prototype.hasOwnProperty.call(e3, t4) && (n3[t4] = e3[t4]);
27483  } catch (e4) {
27484  }
27485  Ne2(n3, e3), De2(e3, "__sentry_wrapped__", n3);
27486  try {
27487    Object.getOwnPropertyDescriptor(n3, "name").configurable && Object.defineProperty(n3, "name", { get: () => e3.name });
27488  } catch (e4) {
27489  }
27490  return n3;
27491}
27492function sr2(e3, t3) {
27493  const n3 = lr2(e3, t3), r3 = { type: pr2(t3), value: hr2(t3) };
27494  return n3.length && (r3.stacktrace = { frames: n3 }), void 0 === r3.type && "" === r3.value && (r3.value = "Unrecoverable error caught"), r3;
27495}
27496function ar2(e3, t3, n3, r3) {
27497  const i3 = bt2(), o3 = i3 && i3.getOptions().normalizeDepth, s3 = (function(e4) {
27498    for (const t4 in e4) if (Object.prototype.hasOwnProperty.call(e4, t4)) {
27499      const n4 = e4[t4];
27500      if (n4 instanceof Error) return n4;
27501    }
27502    return;
27503  })(t3), a3 = { __serialized__: Vt2(t3, o3) };
27504  if (s3) return { exception: { values: [sr2(e3, s3)] }, extra: a3 };
27505  const c3 = { exception: { values: [{ type: ke2(t3) ? t3.constructor.name : r3 ? "UnhandledRejection" : "Error", value: gr2(t3, { isUnhandledRejection: r3 }) }] }, extra: a3 };
27506  if (n3) {
27507    const t4 = lr2(e3, n3);
27508    t4.length && (c3.exception.values[0].stacktrace = { frames: t4 });
27509  }
27510  return c3;
27511}
27512function cr2(e3, t3) {
27513  return { exception: { values: [sr2(e3, t3)] } };
27514}
27515function lr2(e3, t3) {
27516  const n3 = t3.stacktrace || t3.stack || "", r3 = (function(e4) {
27517    if (e4 && ur2.test(e4.message)) return 1;
27518    return 0;
27519  })(t3), i3 = (function(e4) {
27520    if ("number" == typeof e4.framesToPop) return e4.framesToPop;
27521    return 0;
27522  })(t3);
27523  try {
27524    return e3(n3, r3, i3);
27525  } catch (e4) {
27526  }
27527  return [];
27528}
27529function dr2(e3) {
27530  return "undefined" != typeof WebAssembly && void 0 !== WebAssembly.Exception && e3 instanceof WebAssembly.Exception;
27531}
27532function pr2(e3) {
27533  const t3 = e3 && e3.name;
27534  if (!t3 && dr2(e3)) {
27535    return e3.message && Array.isArray(e3.message) && 2 == e3.message.length ? e3.message[0] : "WebAssembly.Exception";
27536  }
27537  return t3;
27538}
27539function hr2(e3) {
27540  const t3 = e3 && e3.message;
27541  return t3 ? t3.error && "string" == typeof t3.error.message ? t3.error.message : dr2(e3) && Array.isArray(e3.message) && 2 == e3.message.length ? e3.message[1] : t3 : "No error message";
27542}
27543function fr2(e3, t3, n3, r3, i3) {
27544  let o3;
27545  if (me2(t3) && t3.error) {
27546    return cr2(e3, t3.error);
27547  }
27548  if (ye2(t3) || ge2(t3, "DOMException")) {
27549    const i4 = t3;
27550    if ("stack" in t3) o3 = cr2(e3, t3);
27551    else {
27552      const t4 = i4.name || (ye2(i4) ? "DOMError" : "DOMException"), s3 = i4.message ? `${t4}: ${i4.message}` : t4;
27553      o3 = vr2(e3, s3, n3, r3), Ge2(o3, s3);
27554    }
27555    return "code" in i4 && (o3.tags = { ...o3.tags, "DOMException.code": `${i4.code}` }), o3;
27556  }
27557  if (ve2(t3)) return cr2(e3, t3);
27558  if (Se2(t3) || ke2(t3)) {
27559    return o3 = ar2(e3, t3, n3, i3), Qe2(o3, { synthetic: true }), o3;
27560  }
27561  return o3 = vr2(e3, t3, n3, r3), Ge2(o3, `${t3}`, void 0), Qe2(o3, { synthetic: true }), o3;
27562}
27563function vr2(e3, t3, n3, r3) {
27564  const i3 = {};
27565  if (r3 && n3) {
27566    const r4 = lr2(e3, n3);
27567    r4.length && (i3.exception = { values: [{ value: t3, stacktrace: { frames: r4 } }] }), Qe2(i3, { synthetic: true });
27568  }
27569  if (_e2(t3)) {
27570    const { __sentry_template_string__: e4, __sentry_template_values__: n4 } = t3;
27571    return i3.logentry = { message: e4, params: n4 }, i3;
27572  }
27573  return i3.message = t3, i3;
27574}
27575function gr2(e3, { isUnhandledRejection: t3 }) {
27576  const n3 = (function(e4, t4 = 40) {
27577    const n4 = Object.keys(Fe2(e4));
27578    n4.sort();
27579    const r4 = n4[0];
27580    if (!r4) return "[object has no keys]";
27581    if (r4.length >= t4) return Ae2(r4, t4);
27582    for (let e5 = n4.length; e5 > 0; e5--) {
27583      const r5 = n4.slice(0, e5).join(", ");
27584      if (!(r5.length > t4)) return e5 === n4.length ? r5 : Ae2(r5, t4);
27585    }
27586    return "";
27587  })(e3), r3 = t3 ? "promise rejection" : "exception";
27588  if (me2(e3)) return `Event \`ErrorEvent\` captured as ${r3} with message \`${e3.message}\``;
27589  if (ke2(e3)) {
27590    return `Event \`${(function(e4) {
27591      try {
27592        const t4 = Object.getPrototypeOf(e4);
27593        return t4 ? t4.constructor.name : void 0;
27594      } catch (e5) {
27595      }
27596    })(e3)}\` (type=${e3.type}) captured as ${r3}`;
27597  }
27598  return `Object captured as ${r3} with keys: ${n3}`;
27599}
27600function Mr2() {
27601  if (!br2.document) return;
27602  const e3 = ae2.bind(null, "dom"), t3 = Cr2(e3, true);
27603  br2.document.addEventListener("click", t3, false), br2.document.addEventListener("keypress", t3, false), ["EventTarget", "Node"].forEach(((t4) => {
27604    const n3 = br2[t4], r3 = n3 && n3.prototype;
27605    r3 && r3.hasOwnProperty && r3.hasOwnProperty("addEventListener") && (Le2(r3, "addEventListener", (function(t5) {
27606      return function(n4, r4, i3) {
27607        if ("click" === n4 || "keypress" == n4) try {
27608          const r5 = this.__sentry_instrumentation_handlers__ = this.__sentry_instrumentation_handlers__ || {}, o3 = r5[n4] = r5[n4] || { refCount: 0 };
27609          if (!o3.handler) {
27610            const r6 = Cr2(e3);
27611            o3.handler = r6, t5.call(this, n4, r6, i3);
27612          }
27613          o3.refCount++;
27614        } catch (e4) {
27615        }
27616        return t5.call(this, n4, r4, i3);
27617      };
27618    })), Le2(r3, "removeEventListener", (function(e4) {
27619      return function(t5, n4, r4) {
27620        if ("click" === t5 || "keypress" == t5) try {
27621          const n5 = this.__sentry_instrumentation_handlers__ || {}, i3 = n5[t5];
27622          i3 && (i3.refCount--, i3.refCount <= 0 && (e4.call(this, t5, i3.handler, r4), i3.handler = void 0, delete n5[t5]), 0 === Object.keys(n5).length && delete this.__sentry_instrumentation_handlers__);
27623        } catch (e5) {
27624        }
27625        return e4.call(this, t5, n4, r4);
27626      };
27627    })));
27628  }));
27629}
27630function Cr2(e3, t3 = false) {
27631  return (n3) => {
27632    if (!n3 || n3._sentryCaptured) return;
27633    const r3 = (function(e4) {
27634      try {
27635        return e4.target;
27636      } catch (e5) {
27637        return null;
27638      }
27639    })(n3);
27640    if ((function(e4, t4) {
27641      return "keypress" === e4 && (!t4 || !t4.tagName || "INPUT" !== t4.tagName && "TEXTAREA" !== t4.tagName && !t4.isContentEditable);
27642    })(n3.type, r3)) return;
27643    De2(n3, "_sentryCaptured", true), r3 && !r3._sentryId && De2(r3, "_sentryId", ze2());
27644    const i3 = "keypress" === n3.type ? "input" : n3.type;
27645    if (!(function(e4) {
27646      if (e4.type !== wr2) return false;
27647      try {
27648        if (!e4.target || e4.target._sentryId !== Sr2) return false;
27649      } catch (e5) {
27650      }
27651      return true;
27652    })(n3)) {
27653      e3({ event: n3, name: i3, global: t3 }), wr2 = n3.type, Sr2 = r3 ? r3._sentryId : void 0;
27654    }
27655    clearTimeout(_r2), _r2 = br2.setTimeout((() => {
27656      Sr2 = void 0, wr2 = void 0;
27657    }), 1e3);
27658  };
27659}
27660function Er2(e3) {
27661  const t3 = "history";
27662  oe2(t3, e3), se2(t3, Tr2);
27663}
27664function Tr2() {
27665  if (!(function() {
27666    const e4 = er2.chrome, t4 = e4 && e4.app && e4.app.runtime, n3 = "history" in er2 && !!er2.history.pushState && !!er2.history.replaceState;
27667    return !t4 && n3;
27668  })()) return;
27669  const e3 = br2.onpopstate;
27670  function t3(e4) {
27671    return function(...t4) {
27672      const n3 = t4.length > 2 ? t4[2] : void 0;
27673      if (n3) {
27674        const e5 = kr2, t5 = String(n3);
27675        kr2 = t5;
27676        ae2("history", { from: e5, to: t5 });
27677      }
27678      return e4.apply(this, t4);
27679    };
27680  }
27681  br2.onpopstate = function(...t4) {
27682    const n3 = br2.location.href, r3 = kr2;
27683    kr2 = n3;
27684    if (ae2("history", { from: r3, to: n3 }), e3) try {
27685      return e3.apply(this, t4);
27686    } catch (e4) {
27687    }
27688  }, Le2(br2.history, "pushState", t3), Le2(br2.history, "replaceState", t3);
27689}
27690function Pr2(e3) {
27691  Or2[e3] = void 0;
27692}
27693function jr2() {
27694  if (!br2.XMLHttpRequest) return;
27695  const e3 = XMLHttpRequest.prototype;
27696  e3.open = new Proxy(e3.open, { apply(e4, t3, n3) {
27697    const r3 = new Error(), i3 = 1e3 * qe2(), o3 = be2(n3[0]) ? n3[0].toUpperCase() : void 0, s3 = (function(e5) {
27698      if (be2(e5)) return e5;
27699      try {
27700        return e5.toString();
27701      } catch (e6) {
27702      }
27703      return;
27704    })(n3[1]);
27705    if (!o3 || !s3) return e4.apply(t3, n3);
27706    t3[Ar2] = { method: o3, url: s3, request_headers: {} }, "POST" === o3 && s3.match(/sentry_key/) && (t3.__sentry_own_request__ = true);
27707    const a3 = () => {
27708      const e5 = t3[Ar2];
27709      if (e5 && 4 === t3.readyState) {
27710        try {
27711          e5.status_code = t3.status;
27712        } catch (e6) {
27713        }
27714        ae2("xhr", { endTimestamp: 1e3 * qe2(), startTimestamp: i3, xhr: t3, virtualError: r3 });
27715      }
27716    };
27717    return "onreadystatechange" in t3 && "function" == typeof t3.onreadystatechange ? t3.onreadystatechange = new Proxy(t3.onreadystatechange, { apply: (e5, t4, n4) => (a3(), e5.apply(t4, n4)) }) : t3.addEventListener("readystatechange", a3), t3.setRequestHeader = new Proxy(t3.setRequestHeader, { apply(e5, t4, n4) {
27718      const [r4, i4] = n4, o4 = t4[Ar2];
27719      return o4 && be2(r4) && be2(i4) && (o4.request_headers[r4.toLowerCase()] = i4), e5.apply(t4, n4);
27720    } }), e4.apply(t3, n3);
27721  } }), e3.send = new Proxy(e3.send, { apply(e4, t3, n3) {
27722    const r3 = t3[Ar2];
27723    if (!r3) return e4.apply(t3, n3);
27724    void 0 !== n3[0] && (r3.body = n3[0]);
27725    return ae2("xhr", { startTimestamp: 1e3 * qe2(), xhr: t3 }), e4.apply(t3, n3);
27726  } });
27727}
27728function Ir2(e3, t3 = (function(e4) {
27729  const t4 = Or2[e4];
27730  if (t4) return t4;
27731  let n3 = br2[e4];
27732  if (Qn2(n3)) return Or2[e4] = n3.bind(br2);
27733  const r3 = br2.document;
27734  if (r3 && "function" == typeof r3.createElement) try {
27735    const t5 = r3.createElement("iframe");
27736    t5.hidden = true, r3.head.appendChild(t5);
27737    const i3 = t5.contentWindow;
27738    i3 && i3[e4] && (n3 = i3[e4]), r3.head.removeChild(t5);
27739  } catch (t5) {
27740    yr2 && Q2.warn(`Could not create sandbox iframe for ${e4} check, bailing to window.${e4}: `, t5);
27741  }
27742  return n3 ? Or2[e4] = n3.bind(br2) : n3;
27743})("fetch")) {
27744  let n3 = 0, r3 = 0;
27745  return En2(e3, (function(i3) {
27746    const o3 = i3.body.length;
27747    n3 += o3, r3++;
27748    const s3 = { body: i3.body, method: "POST", referrerPolicy: "origin", headers: e3.headers, keepalive: n3 <= 6e4 && r3 < 15, ...e3.fetchOptions };
27749    if (!t3) return Pr2("fetch"), Ze2("No fetch implementation available");
27750    try {
27751      return t3(e3.url, s3).then(((e4) => (n3 -= o3, r3--, { statusCode: e4.status, headers: { "x-sentry-rate-limits": e4.headers.get("X-Sentry-Rate-Limits"), "retry-after": e4.headers.get("Retry-After") } })));
27752    } catch (e4) {
27753      return Pr2("fetch"), n3 -= o3, r3--, Ze2(e4);
27754    }
27755  }));
27756}
27757function xr2(e3, t3, n3, r3) {
27758  const i3 = { filename: e3, function: "<anonymous>" === t3 ? K2 : t3, in_app: true };
27759  return void 0 !== n3 && (i3.lineno = n3), void 0 !== r3 && (i3.colno = r3), i3;
27760}
27761function zr2(e3) {
27762  return function(...t3) {
27763    const n3 = t3[0];
27764    return t3[0] = ir2(n3, { mechanism: { data: { function: te2(e3) }, handled: false, type: "instrument" } }), e3.apply(this, t3);
27765  };
27766}
27767function Wr2(e3) {
27768  return function(t3) {
27769    return e3.apply(this, [ir2(t3, { mechanism: { data: { function: "requestAnimationFrame", handler: te2(e3) }, handled: false, type: "instrument" } })]);
27770  };
27771}
27772function Hr2(e3) {
27773  return function(...t3) {
27774    const n3 = this;
27775    return ["onload", "onerror", "onprogress", "onreadystatechange"].forEach(((e4) => {
27776      e4 in n3 && "function" == typeof n3[e4] && Le2(n3, e4, (function(t4) {
27777        const n4 = { mechanism: { data: { function: e4, handler: te2(t4) }, handled: false, type: "instrument" } }, r3 = Re2(t4);
27778        return r3 && (n4.mechanism.data.handler = te2(r3)), ir2(t4, n4);
27779      }));
27780    })), e3.apply(this, t3);
27781  };
27782}
27783function Gr2(e3) {
27784  const t3 = tr2[e3], n3 = t3 && t3.prototype;
27785  n3 && n3.hasOwnProperty && n3.hasOwnProperty("addEventListener") && (Le2(n3, "addEventListener", (function(t4) {
27786    return function(n4, r3, i3) {
27787      try {
27788        "function" == typeof r3.handleEvent && (r3.handleEvent = ir2(r3.handleEvent, { mechanism: { data: { function: "handleEvent", handler: te2(r3), target: e3 }, handled: false, type: "instrument" } }));
27789      } catch (e4) {
27790      }
27791      return t4.apply(this, [n4, ir2(r3, { mechanism: { data: { function: "addEventListener", handler: te2(r3), target: e3 }, handled: false, type: "instrument" } }), i3]);
27792    };
27793  })), Le2(n3, "removeEventListener", (function(e4) {
27794    return function(t4, n4, r3) {
27795      try {
27796        const i3 = n4.__sentry_wrapped__;
27797        i3 && e4.call(this, t4, i3, r3);
27798      } catch (e5) {
27799      }
27800      return e4.call(this, t4, n4, r3);
27801    };
27802  })));
27803}
27804function Yr2(e3) {
27805  or2 && Q2.log(`Global Handler attached: ${e3}`);
27806}
27807function Xr2() {
27808  const e3 = bt2();
27809  return e3 && e3.getOptions() || { stackParser: () => [], attachStacktrace: false };
27810}
27811function rs2() {
27812  return !is2() && "undefined" != typeof window && window.navigator && window.navigator.userAgent ? window.navigator.userAgent : "";
27813}
27814function is2() {
27815  return "undefined" != typeof navigator && navigator.product && "ReactNative" === navigator.product;
27816}
27817function os2() {
27818  return navigator && navigator.mediaDevices && navigator.mediaDevices.getUserMedia;
27819}
27820function ss2() {
27821  return !!(navigator && navigator.mediaDevices && navigator.mediaDevices.getDisplayMedia) && ((function(e3, t3) {
27822    if (!e3 || !t3) return true;
27823    switch (e3) {
27824      case "Chrome":
27825        return t3.major >= 75;
27826      case "Safari":
27827        return RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection") && !(13 === t3.major && 0 === t3.minor && 0 === t3.point);
27828      case "Firefox":
27829        return t3.major >= 67;
27830    }
27831    return true;
27832  })(ms2(), ys2()) || is2());
27833}
27834function as2() {
27835  if (is2()) return false;
27836  if (!document) return false;
27837  var e3 = document.createElement("iframe");
27838  return !!e3.requestFullscreen || !!e3.webkitRequestFullscreen;
27839}
27840function ps2() {
27841  var e3 = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
27842  return !is2() && (ds2 !== cs2 && (e3 ? (function() {
27843    if (gs2()) return false;
27844    return ["Chrome", "Firefox"].includes(ms2());
27845  })() : (function() {
27846    if (gs2()) return false;
27847    var e4 = ms2();
27848    if ("Safari" === e4) {
27849      var t3 = Ss2();
27850      if (t3.major < 15 || 15 === t3.major && t3.minor < 4) return false;
27851    }
27852    if ("Chrome" === e4) {
27853      return bs2().major >= 77;
27854    }
27855    if ("Firefox" === e4) {
27856      return ks2().major >= 97;
27857    }
27858    return ["Chrome", "Firefox", "Safari"].includes(e4);
27859  })()));
27860}
27861function hs2() {
27862  if (is2()) return false;
27863  if (vs2()) return false;
27864  if ("undefined" == typeof AudioWorkletNode) return false;
27865  switch (ms2()) {
27866    case "Chrome":
27867    case "Firefox":
27868      return true;
27869    case "Safari":
27870      var e3 = ys2();
27871      return e3.major > 17 || 17 === e3.major && e3.minor >= 4;
27872  }
27873  return false;
27874}
27875function fs2() {
27876  return os2() && !(function() {
27877    var e3, t3 = ms2();
27878    if (!rs2()) return true;
27879    switch (t3) {
27880      case "Chrome":
27881        return (e3 = bs2()).major && e3.major > 0 && e3.major < 75;
27882      case "Firefox":
27883        return (e3 = ks2()).major < 91;
27884      case "Safari":
27885        return (e3 = Ss2()).major < 13 || 13 === e3.major && e3.minor < 1;
27886      default:
27887        return true;
27888    }
27889  })();
27890}
27891function vs2() {
27892  return rs2().match(/Linux; Android/);
27893}
27894function gs2() {
27895  var e3, t3 = rs2(), n3 = t3.match(/Mac/) && (!is2() && "undefined" != typeof window && null !== (e3 = window) && void 0 !== e3 && null !== (e3 = e3.navigator) && void 0 !== e3 && e3.maxTouchPoints ? window.navigator.maxTouchPoints : 0) >= 5;
27896  return !!(t3.match(/Mobi/) || t3.match(/Android/) || n3) || (!!rs2().match(/DailyAnd\//) || void 0);
27897}
27898function ms2() {
27899  if ("undefined" != typeof window) {
27900    var e3 = rs2();
27901    return _s2() ? "Safari" : e3.indexOf("Edge") > -1 ? "Edge" : e3.match(/Chrome\//) ? "Chrome" : e3.indexOf("Safari") > -1 || ws2() ? "Safari" : e3.indexOf("Firefox") > -1 ? "Firefox" : e3.indexOf("MSIE") > -1 || e3.indexOf(".NET") > -1 ? "IE" : "Unknown Browser";
27902  }
27903}
27904function ys2() {
27905  switch (ms2()) {
27906    case "Chrome":
27907      return bs2();
27908    case "Safari":
27909      return Ss2();
27910    case "Firefox":
27911      return ks2();
27912    case "Edge":
27913      return (function() {
27914        var e3 = 0, t3 = 0;
27915        if ("undefined" != typeof window) {
27916          var n3 = rs2().match(/Edge\/(\d+).(\d+)/);
27917          if (n3) try {
27918            e3 = parseInt(n3[1]), t3 = parseInt(n3[2]);
27919          } catch (e4) {
27920          }
27921        }
27922        return { major: e3, minor: t3 };
27923      })();
27924  }
27925}
27926function bs2() {
27927  var e3 = 0, t3 = 0, n3 = 0, r3 = 0, i3 = false;
27928  if ("undefined" != typeof window) {
27929    var o3 = rs2(), s3 = o3.match(/Chrome\/(\d+).(\d+).(\d+).(\d+)/);
27930    if (s3) try {
27931      e3 = parseInt(s3[1]), t3 = parseInt(s3[2]), n3 = parseInt(s3[3]), r3 = parseInt(s3[4]), i3 = o3.indexOf("OPR/") > -1;
27932    } catch (e4) {
27933    }
27934  }
27935  return { major: e3, minor: t3, build: n3, patch: r3, opera: i3 };
27936}
27937function _s2() {
27938  return !!rs2().match(/iPad|iPhone|iPod/i) && os2();
27939}
27940function ws2() {
27941  return rs2().indexOf("AppleWebKit/605.1.15") > -1;
27942}
27943function Ss2() {
27944  var e3 = 0, t3 = 0, n3 = 0;
27945  if ("undefined" != typeof window) {
27946    var r3 = rs2().match(/Version\/(\d+).(\d+)(.(\d+))?/);
27947    if (r3) try {
27948      e3 = parseInt(r3[1]), t3 = parseInt(r3[2]), n3 = parseInt(r3[4]);
27949    } catch (e4) {
27950    }
27951    else (_s2() || ws2()) && (e3 = 14, t3 = 0, n3 = 3);
27952  }
27953  return { major: e3, minor: t3, point: n3 };
27954}
27955function ks2() {
27956  var e3 = 0, t3 = 0;
27957  if ("undefined" != typeof window) {
27958    var n3 = rs2().match(/Firefox\/(\d+).(\d+)/);
27959    if (n3) try {
27960      e3 = parseInt(n3[1]), t3 = parseInt(n3[2]);
27961    } catch (e4) {
27962    }
27963  }
27964  return { major: e3, minor: t3 };
27965}
27966function Cs2(e3, t3) {
27967  var n3 = Object.keys(e3);
27968  if (Object.getOwnPropertySymbols) {
27969    var r3 = Object.getOwnPropertySymbols(e3);
27970    t3 && (r3 = r3.filter((function(t4) {
27971      return Object.getOwnPropertyDescriptor(e3, t4).enumerable;
27972    }))), n3.push.apply(n3, r3);
27973  }
27974  return n3;
27975}
27976function Es2(e3) {
27977  for (var t3 = 1; t3 < arguments.length; t3++) {
27978    var n3 = null != arguments[t3] ? arguments[t3] : {};
27979    t3 % 2 ? Cs2(Object(n3), true).forEach((function(t4) {
27980      u2(e3, t4, n3[t4]);
27981    })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e3, Object.getOwnPropertyDescriptors(n3)) : Cs2(Object(n3)).forEach((function(t4) {
27982      Object.defineProperty(e3, t4, Object.getOwnPropertyDescriptor(n3, t4));
27983    }));
27984  }
27985  return e3;
27986}
27987function Ts2() {
27988  try {
27989    var e3 = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {
27990    })));
27991  } catch (e4) {
27992  }
27993  return (Ts2 = function() {
27994    return !!e3;
27995  })();
27996}
27997function Ps2(e3, t3) {
27998  var n3 = Object.keys(e3);
27999  if (Object.getOwnPropertySymbols) {
28000    var r3 = Object.getOwnPropertySymbols(e3);
28001    t3 && (r3 = r3.filter((function(t4) {
28002      return Object.getOwnPropertyDescriptor(e3, t4).enumerable;
28003    }))), n3.push.apply(n3, r3);
28004  }
28005  return n3;
28006}
28007function As2() {
28008  try {
28009    var e3 = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {
28010    })));
28011  } catch (e4) {
28012  }
28013  return (As2 = function() {
28014    return !!e3;
28015  })();
28016}
28017function Ns2() {
28018  try {
28019    var e3 = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {
28020    })));
28021  } catch (e4) {
28022  }
28023  return (Ns2 = function() {
28024    return !!e3;
28025  })();
28026}
28027function Rs2(e3) {
28028  var t3 = "function" == typeof Map ? /* @__PURE__ */ new Map() : void 0;
28029  return Rs2 = function(e4) {
28030    if (null === e4 || !(function(e5) {
28031      try {
28032        return -1 !== Function.toString.call(e5).indexOf("[native code]");
28033      } catch (t4) {
28034        return "function" == typeof e5;
28035      }
28036    })(e4)) return e4;
28037    if ("function" != typeof e4) throw new TypeError("Super expression must either be null or a function");
28038    if (void 0 !== t3) {
28039      if (t3.has(e4)) return t3.get(e4);
28040      t3.set(e4, n3);
28041    }
28042    function n3() {
28043      return (function(e5, t4, n4) {
28044        if (Ns2()) return Reflect.construct.apply(null, arguments);
28045        var r3 = [null];
28046        r3.push.apply(r3, t4);
28047        var i3 = new (e5.bind.apply(e5, r3))();
28048        return n4 && c2(i3, n4.prototype), i3;
28049      })(e4, arguments, a2(this).constructor);
28050    }
28051    return n3.prototype = Object.create(e4.prototype, { constructor: { value: n3, enumerable: false, writable: true, configurable: true } }), c2(n3, e4);
28052  }, Rs2(e3);
28053}
28054function Fs2() {
28055  try {
28056    var e3 = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {
28057    })));
28058  } catch (e4) {
28059  }
28060  return (Fs2 = function() {
28061    return !!e3;
28062  })();
28063}
28064function Bs2(e3) {
28065  var t3, n3 = null === (t3 = window._daily) || void 0 === t3 ? void 0 : t3.pendings;
28066  if (n3) {
28067    var r3 = n3.indexOf(e3);
28068    -1 !== r3 && n3.splice(r3, 1);
28069  }
28070}
28071function Zs2(e3, t3) {
28072  for (var n3 = t3.getState(), r3 = 0, i3 = ["cam", "screen"]; r3 < i3.length; r3++) for (var o3 = i3[r3], s3 = 0, a3 = ["video", "audio"]; s3 < a3.length; s3++) {
28073    var c3 = a3[s3], l3 = "cam" === o3 ? c3 : "screen".concat(c3.charAt(0).toUpperCase() + c3.slice(1)), u3 = e3.tracks[l3];
28074    if (u3) {
28075      var d3 = e3.local ? Gs2(n3, o3, c3) : Qs2(n3, e3.session_id, o3, c3);
28076      "playable" === u3.state && (u3.track = d3), u3.persistentTrack = d3;
28077    }
28078  }
28079}
28080function ea2(e3, t3) {
28081  try {
28082    var n3 = t3.getState();
28083    for (var r3 in e3.tracks) if (!ta2(r3)) {
28084      var i3 = e3.tracks[r3].kind;
28085      if (i3) {
28086        var o3 = e3.tracks[r3];
28087        if (o3) {
28088          var s3 = e3.local ? Xs2(n3, r3) : Qs2(n3, e3.session_id, r3, i3);
28089          "playable" === o3.state && (e3.tracks[r3].track = s3), o3.persistentTrack = s3;
28090        }
28091      } else console.error("unknown type for custom track");
28092    }
28093  } catch (e4) {
28094    console.error(e4);
28095  }
28096}
28097function ta2(e3) {
28098  return ["video", "audio", "screenVideo", "screenAudio"].includes(e3);
28099}
28100function na2(e3, t3, n3) {
28101  var r3 = n3.getState();
28102  if (e3.local) {
28103    if (e3.audio) try {
28104      e3.audioTrack = r3.local.streams.cam.stream.getAudioTracks()[0], e3.audioTrack || (e3.audio = false);
28105    } catch (e4) {
28106    }
28107    if (e3.video) try {
28108      e3.videoTrack = r3.local.streams.cam.stream.getVideoTracks()[0], e3.videoTrack || (e3.video = false);
28109    } catch (e4) {
28110    }
28111    if (e3.screen) try {
28112      e3.screenVideoTrack = r3.local.streams.screen.stream.getVideoTracks()[0], e3.screenAudioTrack = r3.local.streams.screen.stream.getAudioTracks()[0], e3.screenVideoTrack || e3.screenAudioTrack || (e3.screen = false);
28113    } catch (e4) {
28114    }
28115  } else {
28116    var i3 = true;
28117    try {
28118      var o3 = r3.participants[e3.session_id];
28119      o3 && o3.public && o3.public.rtcType && "peer-to-peer" === o3.public.rtcType.impl && o3.private && !["connected", "completed"].includes(o3.private.peeringState) && (i3 = false);
28120    } catch (e4) {
28121      console.error(e4);
28122    }
28123    if (!i3) return e3.audio = false, e3.audioTrack = false, e3.video = false, e3.videoTrack = false, e3.screen = false, void (e3.screenTrack = false);
28124    try {
28125      r3.streams;
28126      if (e3.audio && Hs2(r3, e3.session_id, "cam-audio")) {
28127        var s3 = Qs2(r3, e3.session_id, "cam", "audio");
28128        s3 && (t3 && t3.audioTrack && t3.audioTrack.id === s3.id ? e3.audioTrack = s3 : s3.muted || (e3.audioTrack = s3)), e3.audioTrack || (e3.audio = false);
28129      }
28130      if (e3.video && Hs2(r3, e3.session_id, "cam-video")) {
28131        var a3 = Qs2(r3, e3.session_id, "cam", "video");
28132        a3 && (t3 && t3.videoTrack && t3.videoTrack.id === a3.id ? e3.videoTrack = a3 : a3.muted || (e3.videoTrack = a3)), e3.videoTrack || (e3.video = false);
28133      }
28134      if (e3.screen && Hs2(r3, e3.session_id, "screen-audio")) {
28135        var c3 = Qs2(r3, e3.session_id, "screen", "audio");
28136        c3 && (t3 && t3.screenAudioTrack && t3.screenAudioTrack.id === c3.id ? e3.screenAudioTrack = c3 : c3.muted || (e3.screenAudioTrack = c3));
28137      }
28138      if (e3.screen && Hs2(r3, e3.session_id, "screen-video")) {
28139        var l3 = Qs2(r3, e3.session_id, "screen", "video");
28140        l3 && (t3 && t3.screenVideoTrack && t3.screenVideoTrack.id === l3.id ? e3.screenVideoTrack = l3 : l3.muted || (e3.screenVideoTrack = l3));
28141      }
28142      e3.screenVideoTrack || e3.screenAudioTrack || (e3.screen = false);
28143    } catch (e4) {
28144      console.error("unexpected error matching up tracks", e4);
28145    }
28146  }
28147}
28148function ra2(e3, t3) {
28149  var n3 = "undefined" != typeof Symbol && e3[Symbol.iterator] || e3["@@iterator"];
28150  if (!n3) {
28151    if (Array.isArray(e3) || (n3 = (function(e4, t4) {
28152      if (e4) {
28153        if ("string" == typeof e4) return ia2(e4, t4);
28154        var n4 = {}.toString.call(e4).slice(8, -1);
28155        return "Object" === n4 && e4.constructor && (n4 = e4.constructor.name), "Map" === n4 || "Set" === n4 ? Array.from(e4) : "Arguments" === n4 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n4) ? ia2(e4, t4) : void 0;
28156      }
28157    })(e3)) || t3 && e3 && "number" == typeof e3.length) {
28158      n3 && (e3 = n3);
28159      var r3 = 0, i3 = function() {
28160      };
28161      return { s: i3, n: function() {
28162        return r3 >= e3.length ? { done: true } : { done: false, value: e3[r3++] };
28163      }, e: function(e4) {
28164        throw e4;
28165      }, f: i3 };
28166    }
28167    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
28168  }
28169  var o3, s3 = true, a3 = false;
28170  return { s: function() {
28171    n3 = n3.call(e3);
28172  }, n: function() {
28173    var e4 = n3.next();
28174    return s3 = e4.done, e4;
28175  }, e: function(e4) {
28176    a3 = true, o3 = e4;
28177  }, f: function() {
28178    try {
28179      s3 || null == n3.return || n3.return();
28180    } finally {
28181      if (a3) throw o3;
28182    }
28183  } };
28184}
28185function ia2(e3, t3) {
28186  (null == t3 || t3 > e3.length) && (t3 = e3.length);
28187  for (var n3 = 0, r3 = Array(t3); n3 < t3; n3++) r3[n3] = e3[n3];
28188  return r3;
28189}
28190function aa2(e3, t3) {
28191  var n3 = "undefined" != typeof Symbol && e3[Symbol.iterator] || e3["@@iterator"];
28192  if (!n3) {
28193    if (Array.isArray(e3) || (n3 = (function(e4, t4) {
28194      if (e4) {
28195        if ("string" == typeof e4) return ca2(e4, t4);
28196        var n4 = {}.toString.call(e4).slice(8, -1);
28197        return "Object" === n4 && e4.constructor && (n4 = e4.constructor.name), "Map" === n4 || "Set" === n4 ? Array.from(e4) : "Arguments" === n4 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n4) ? ca2(e4, t4) : void 0;
28198      }
28199    })(e3)) || t3 && e3 && "number" == typeof e3.length) {
28200      n3 && (e3 = n3);
28201      var r3 = 0, i3 = function() {
28202      };
28203      return { s: i3, n: function() {
28204        return r3 >= e3.length ? { done: true } : { done: false, value: e3[r3++] };
28205      }, e: function(e4) {
28206        throw e4;
28207      }, f: i3 };
28208    }
28209    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
28210  }
28211  var o3, s3 = true, a3 = false;
28212  return { s: function() {
28213    n3 = n3.call(e3);
28214  }, n: function() {
28215    var e4 = n3.next();
28216    return s3 = e4.done, e4;
28217  }, e: function(e4) {
28218    a3 = true, o3 = e4;
28219  }, f: function() {
28220    try {
28221      s3 || null == n3.return || n3.return();
28222    } finally {
28223      if (a3) throw o3;
28224    }
28225  } };
28226}
28227function ca2(e3, t3) {
28228  (null == t3 || t3 > e3.length) && (t3 = e3.length);
28229  for (var n3 = 0, r3 = Array(t3); n3 < t3; n3++) r3[n3] = e3[n3];
28230  return r3;
28231}
28232function da2(e3) {
28233  ha2() ? (function(e4) {
28234    oa2.has(e4) || (oa2.set(e4, {}), navigator.mediaDevices.enumerateDevices().then((function(t3) {
28235      oa2.has(e4) && (oa2.get(e4).lastDevicesString = JSON.stringify(t3), sa2 || (sa2 = (function() {
28236        var e5 = p2((function* () {
28237          var e6, t4 = yield navigator.mediaDevices.enumerateDevices(), n3 = ra2(oa2.keys());
28238          try {
28239            for (n3.s(); !(e6 = n3.n()).done; ) {
28240              var r3 = e6.value, i3 = JSON.stringify(t4);
28241              i3 !== oa2.get(r3).lastDevicesString && (oa2.get(r3).lastDevicesString = i3, r3(t4));
28242            }
28243          } catch (e7) {
28244            n3.e(e7);
28245          } finally {
28246            n3.f();
28247          }
28248        }));
28249        return function() {
28250          return e5.apply(this, arguments);
28251        };
28252      })(), navigator.mediaDevices.addEventListener("devicechange", sa2)));
28253    })).catch((function() {
28254    })));
28255  })(e3) : (function(e4) {
28256    la2.has(e4) || (la2.set(e4, {}), navigator.mediaDevices.enumerateDevices().then((function(t3) {
28257      la2.has(e4) && (la2.get(e4).lastDevicesString = JSON.stringify(t3), ua2 || (ua2 = setInterval(p2((function* () {
28258        var e5, t4 = yield navigator.mediaDevices.enumerateDevices(), n3 = aa2(la2.keys());
28259        try {
28260          for (n3.s(); !(e5 = n3.n()).done; ) {
28261            var r3 = e5.value, i3 = JSON.stringify(t4);
28262            i3 !== la2.get(r3).lastDevicesString && (la2.get(r3).lastDevicesString = i3, r3(t4));
28263          }
28264        } catch (e6) {
28265          n3.e(e6);
28266        } finally {
28267          n3.f();
28268        }
28269      })), 3e3)));
28270    })));
28271  })(e3);
28272}
28273function pa2(e3) {
28274  ha2() ? (function(e4) {
28275    oa2.has(e4) && (oa2.delete(e4), 0 === oa2.size && sa2 && (navigator.mediaDevices.removeEventListener("devicechange", sa2), sa2 = null));
28276  })(e3) : (function(e4) {
28277    la2.has(e4) && (la2.delete(e4), 0 === la2.size && ua2 && (clearInterval(ua2), ua2 = null));
28278  })(e3);
28279}
28280function ha2() {
28281  var e3;
28282  return is2() || void 0 !== (null === (e3 = navigator.mediaDevices) || void 0 === e3 ? void 0 : e3.ondevicechange);
28283}
28284function va2(e3, t3) {
28285  var n3 = t3.isLocalScreenVideo;
28286  return e3 && "live" === e3.readyState && !(function(e4, t4) {
28287    return (!t4.isLocalScreenVideo || "Chrome" !== ms2()) && e4.muted && !fa2.has(e4.id);
28288  })(e3, { isLocalScreenVideo: n3 });
28289}
28290function ga2(e3, t3) {
28291  var n3 = Object.keys(e3);
28292  if (Object.getOwnPropertySymbols) {
28293    var r3 = Object.getOwnPropertySymbols(e3);
28294    t3 && (r3 = r3.filter((function(t4) {
28295      return Object.getOwnPropertyDescriptor(e3, t4).enumerable;
28296    }))), n3.push.apply(n3, r3);
28297  }
28298  return n3;
28299}
28300function ma2(e3) {
28301  for (var t3 = 1; t3 < arguments.length; t3++) {
28302    var n3 = null != arguments[t3] ? arguments[t3] : {};
28303    t3 % 2 ? ga2(Object(n3), true).forEach((function(t4) {
28304      u2(e3, t4, n3[t4]);
28305    })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e3, Object.getOwnPropertyDescriptors(n3)) : ga2(Object(n3)).forEach((function(t4) {
28306      Object.defineProperty(e3, t4, Object.getOwnPropertyDescriptor(n3, t4));
28307    }));
28308  }
28309  return e3;
28310}
28311function Pa2(e3, t3) {
28312  var n3 = Object.keys(e3);
28313  if (Object.getOwnPropertySymbols) {
28314    var r3 = Object.getOwnPropertySymbols(e3);
28315    t3 && (r3 = r3.filter((function(t4) {
28316      return Object.getOwnPropertyDescriptor(e3, t4).enumerable;
28317    }))), n3.push.apply(n3, r3);
28318  }
28319  return n3;
28320}
28321function Aa2(e3) {
28322  for (var t3 = 1; t3 < arguments.length; t3++) {
28323    var n3 = null != arguments[t3] ? arguments[t3] : {};
28324    t3 % 2 ? Pa2(Object(n3), true).forEach((function(t4) {
28325      u2(e3, t4, n3[t4]);
28326    })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e3, Object.getOwnPropertyDescriptors(n3)) : Pa2(Object(n3)).forEach((function(t4) {
28327      Object.defineProperty(e3, t4, Object.getOwnPropertyDescriptor(n3, t4));
28328    }));
28329  }
28330  return e3;
28331}
28332function ja2() {
28333  try {
28334    var e3 = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {
28335    })));
28336  } catch (e4) {
28337  }
28338  return (ja2 = function() {
28339    return !!e3;
28340  })();
28341}
28342function Ia2(e3, t3) {
28343  var n3 = "undefined" != typeof Symbol && e3[Symbol.iterator] || e3["@@iterator"];
28344  if (!n3) {
28345    if (Array.isArray(e3) || (n3 = (function(e4, t4) {
28346      if (e4) {
28347        if ("string" == typeof e4) return xa2(e4, t4);
28348        var n4 = {}.toString.call(e4).slice(8, -1);
28349        return "Object" === n4 && e4.constructor && (n4 = e4.constructor.name), "Map" === n4 || "Set" === n4 ? Array.from(e4) : "Arguments" === n4 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n4) ? xa2(e4, t4) : void 0;
28350      }
28351    })(e3)) || t3 && e3 && "number" == typeof e3.length) {
28352      n3 && (e3 = n3);
28353      var r3 = 0, i3 = function() {
28354      };
28355      return { s: i3, n: function() {
28356        return r3 >= e3.length ? { done: true } : { done: false, value: e3[r3++] };
28357      }, e: function(e4) {
28358        throw e4;
28359      }, f: i3 };
28360    }
28361    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
28362  }
28363  var o3, s3 = true, a3 = false;
28364  return { s: function() {
28365    n3 = n3.call(e3);
28366  }, n: function() {
28367    var e4 = n3.next();
28368    return s3 = e4.done, e4;
28369  }, e: function(e4) {
28370    a3 = true, o3 = e4;
28371  }, f: function() {
28372    try {
28373      s3 || null == n3.return || n3.return();
28374    } finally {
28375      if (a3) throw o3;
28376    }
28377  } };
28378}
28379function xa2(e3, t3) {
28380  (null == t3 || t3 > e3.length) && (t3 = e3.length);
28381  for (var n3 = 0, r3 = Array(t3); n3 < t3; n3++) r3[n3] = e3[n3];
28382  return r3;
28383}
28384function Ga2(e3, t3) {
28385  var n3 = {};
28386  for (var r3 in e3) if (e3[r3] instanceof MediaStreamTrack) console.warn("MediaStreamTrack found in props or cache.", r3), n3[r3] = Qo2;
28387  else if ("dailyConfig" === r3) {
28388    if (e3[r3].modifyLocalSdpHook) {
28389      var i3 = window._daily.instances[t3].customCallbacks || {};
28390      i3.modifyLocalSdpHook = e3[r3].modifyLocalSdpHook, window._daily.instances[t3].customCallbacks = i3, delete e3[r3].modifyLocalSdpHook;
28391    }
28392    if (e3[r3].modifyRemoteSdpHook) {
28393      var o3 = window._daily.instances[t3].customCallbacks || {};
28394      o3.modifyRemoteSdpHook = e3[r3].modifyRemoteSdpHook, window._daily.instances[t3].customCallbacks = o3, delete e3[r3].modifyRemoteSdpHook;
28395    }
28396    n3[r3] = e3[r3];
28397  } else n3[r3] = e3[r3];
28398  return n3;
28399}
28400function Qa2(e3) {
28401  var t3 = arguments.length > 2 ? arguments[2] : void 0;
28402  if (e3 !== oi2) {
28403    var n3 = "".concat(arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "This daily-js method", " only supported after join.");
28404    throw t3 && (n3 += " ".concat(t3)), console.error(n3), new Error(n3);
28405  }
28406}
28407function Ka2(e3, t3) {
28408  return [ii2, oi2].includes(e3) || t3;
28409}
28410function Ya2(e3, t3) {
28411  var n3 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "This daily-js method", r3 = arguments.length > 3 ? arguments[3] : void 0;
28412  if (Ka2(e3, t3)) {
28413    var i3 = "".concat(n3, " not supported after joining a meeting.");
28414    throw r3 && (i3 += " ".concat(r3)), console.error(i3), new Error(i3);
28415  }
28416}
28417function Xa2(e3) {
28418  var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "This daily-js method", n3 = arguments.length > 2 ? arguments[2] : void 0;
28419  if (!e3) {
28420    var r3 = "".concat(t3, arguments.length > 3 && void 0 !== arguments[3] && arguments[3] ? " requires preAuth() or startCamera() to initialize call state." : " requires preAuth(), startCamera(), or join() to initialize call state.");
28421    throw n3 && (r3 += " ".concat(n3)), console.error(r3), new Error(r3);
28422  }
28423}
28424function Za2(e3) {
28425  if (e3) {
28426    var t3 = "A pre-call quality test is in progress. Please try ".concat(arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "This daily-js method", " again once testing has completed. Use stopTestCallQuality() to end it early.");
28427    throw console.error(t3), new Error(t3);
28428  }
28429}
28430function ec2(e3) {
28431  if (!e3) {
28432    var t3 = "".concat(arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "This daily-js method", " is only supported on custom callObject instances");
28433    throw console.error(t3), new Error(t3);
28434  }
28435}
28436function tc2(e3) {
28437  if (e3) {
28438    var t3 = "".concat(arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "This daily-js method", " is only supported as part of Daily's Prebuilt");
28439    throw console.error(t3), new Error(t3);
28440  }
28441}
28442function nc2() {
28443  if (is2()) throw new Error("This daily-js method is not currently supported in React Native");
28444}
28445function rc2() {
28446  if (!is2()) throw new Error("This daily-js method is only supported in React Native");
28447}
28448function ic2(e3) {
28449  if (void 0 === e3) return true;
28450  var t3;
28451  if ("string" == typeof e3) t3 = e3;
28452  else try {
28453    t3 = JSON.stringify(e3), S2(JSON.parse(t3), e3) || console.warn("The userData provided will be modified when serialized.");
28454  } catch (e4) {
28455    throw Error("userData must be serializable to JSON: ".concat(e4));
28456  }
28457  if (t3.length > 4096) throw Error("userData is too large (".concat(t3.length, " characters). Maximum size suppported is ").concat(4096, "."));
28458  return true;
28459}
28460function oc2(e3, t3) {
28461  for (var n3 = t3.allowAllParticipantsKey, r3 = function(e4) {
28462    var t4 = ["local"];
28463    return n3 || t4.push("*"), e4 && !t4.includes(e4);
28464  }, i3 = function(e4) {
28465    return !!(void 0 === e4.layer || Number.isInteger(e4.layer) && e4.layer >= 0 || "inherit" === e4.layer);
28466  }, o3 = function(e4) {
28467    return !!e4 && (!(e4.video && !i3(e4.video)) && !(e4.screenVideo && !i3(e4.screenVideo)));
28468  }, s3 = 0, a3 = Object.entries(e3); s3 < a3.length; s3++) {
28469    var c3 = f2(a3[s3], 2), l3 = c3[0], u3 = c3[1];
28470    if (!r3(l3) || !o3(u3)) return false;
28471  }
28472  return true;
28473}
28474function sc2(e3) {
28475  if ("object" !== n2(e3)) return false;
28476  for (var t3 = 0, r3 = Object.entries(e3); t3 < r3.length; t3++) {
28477    var i3 = f2(r3[t3], 2), o3 = i3[0], s3 = i3[1];
28478    switch (o3) {
28479      case "video":
28480        if ("object" !== n2(s3)) return false;
28481        for (var a3 = 0, c3 = Object.entries(s3); a3 < c3.length; a3++) {
28482          var l3 = f2(c3[a3], 2), u3 = l3[0], d3 = l3[1];
28483          switch (u3) {
28484            case "processor":
28485              if (!lc2(d3)) return false;
28486              break;
28487            case "settings":
28488              if (!uc2(d3)) return false;
28489              break;
28490            default:
28491              return false;
28492          }
28493        }
28494        break;
28495      case "audio":
28496        if ("object" !== n2(s3)) return false;
28497        for (var p3 = 0, h3 = Object.entries(s3); p3 < h3.length; p3++) {
28498          var v3 = f2(h3[p3], 2), g3 = v3[0], m3 = v3[1];
28499          switch (g3) {
28500            case "processor":
28501              if (!cc2(m3)) return false;
28502              break;
28503            case "settings":
28504              if (!uc2(m3)) return false;
28505              break;
28506            default:
28507              return false;
28508          }
28509        }
28510        break;
28511      default:
28512        return false;
28513    }
28514  }
28515  return true;
28516}
28517function ac2(e3, t3, n3) {
28518  var r3, i3 = [];
28519  e3.video && e3.video.processor && (ps2(null !== (r3 = null == t3 ? void 0 : t3.useLegacyVideoProcessor) && void 0 !== r3 && r3) || (e3.video.settings ? delete e3.video.processor : delete e3.video, i3.push("video")));
28520  e3.audio && e3.audio.processor && (hs2() || (e3.audio.settings ? delete e3.audio.processor : delete e3.audio, i3.push("audio"))), i3.length > 0 && console.error("Ignoring settings for browser- or platform-unsupported input processor(s): ".concat(i3.join(", "))), e3.audio && e3.audio.settings && (e3.audio.settings.customTrack ? (n3.audioTrack = e3.audio.settings.customTrack, e3.audio.settings = { customTrack: Qo2 }) : delete n3.audioTrack), e3.video && e3.video.settings && (e3.video.settings.customTrack ? (n3.videoTrack = e3.video.settings.customTrack, e3.video.settings = { customTrack: Qo2 }) : delete n3.videoTrack);
28521}
28522function cc2(e3) {
28523  if (is2()) return console.warn("Video processing is not yet supported in React Native"), false;
28524  var t3 = ["type"];
28525  return !!e3 && ("object" === n2(e3) && (Object.keys(e3).filter((function(e4) {
28526    return !t3.includes(e4);
28527  })).forEach((function(t4) {
28528    console.warn("invalid key inputSettings -> audio -> processor : ".concat(t4)), delete e3[t4];
28529  })), !!(function(e4) {
28530    if ("string" != typeof e4) return false;
28531    if (!Object.values(Yo2).includes(e4)) return console.error("inputSettings audio processor type invalid"), false;
28532    return true;
28533  })(e3.type)));
28534}
28535function lc2(e3) {
28536  if (is2()) return console.warn("Video processing is not yet supported in React Native"), false;
28537  var t3 = ["type", "config"];
28538  if (!e3) return false;
28539  if ("object" !== n2(e3)) return false;
28540  if (!(function(e4) {
28541    if ("string" != typeof e4) return false;
28542    if (!Object.values(Ko2).includes(e4)) return console.error("inputSettings video processor type invalid"), false;
28543    return true;
28544  })(e3.type)) return false;
28545  if (e3.config) {
28546    if ("object" !== n2(e3.config)) return false;
28547    if (!(function(e4, t4) {
28548      var n3 = Object.keys(t4);
28549      if (0 === n3.length) return true;
28550      var r3 = "invalid object in inputSettings -> video -> processor -> config";
28551      switch (e4) {
28552        case Ko2.BGBLUR:
28553          return n3.length > 1 || "strength" !== n3[0] ? (console.error(r3), false) : !("number" != typeof t4.strength || t4.strength <= 0 || t4.strength > 1 || isNaN(t4.strength)) || (console.error("".concat(r3, "; expected: {0 < strength <= 1}, got: ").concat(t4.strength)), false);
28554        case Ko2.BGIMAGE:
28555          return !(void 0 !== t4.source && !(function(e5) {
28556            if ("default" === e5.source) return e5.type = "default", true;
28557            if (e5.source instanceof ArrayBuffer) return true;
28558            if (U2(e5.source)) return e5.type = "url", !!(function(e6) {
28559              var t6 = new URL(e6), n5 = t6.pathname;
28560              if ("data:" === t6.protocol) try {
28561                var r4 = n5.substring(n5.indexOf(":") + 1, n5.indexOf(";")).split("/")[1];
28562                return Zo2.includes(r4);
28563              } catch (e7) {
28564                return console.error("failed to deduce blob content type", e7), false;
28565              }
28566              var i3 = n5.split(".").at(-1).toLowerCase().trim();
28567              return Zo2.includes(i3);
28568            })(e5.source) || (console.error("invalid image type; supported types: [".concat(Zo2.join(", "), "]")), false);
28569            return t5 = e5.source, n4 = Number(t5), isNaN(n4) || !Number.isInteger(n4) || n4 <= 0 || n4 > 10 ? (console.error("invalid image selection; must be an int, > 0, <= ".concat(10)), false) : (e5.type = "daily-preselect", true);
28570            var t5, n4;
28571          })(t4));
28572        default:
28573          return true;
28574      }
28575    })(e3.type, e3.config)) return false;
28576  }
28577  return Object.keys(e3).filter((function(e4) {
28578    return !t3.includes(e4);
28579  })).forEach((function(t4) {
28580    console.warn("invalid key inputSettings -> video -> processor : ".concat(t4)), delete e3[t4];
28581  })), true;
28582}
28583function uc2(e3) {
28584  return "object" === n2(e3) && (!e3.customTrack || e3.customTrack instanceof MediaStreamTrack);
28585}
28586function dc2() {
28587  var e3 = Object.values(Ko2).join(" | "), t3 = Object.values(Yo2).join(" | ");
28588  return "inputSettings must be of the form: { video?: { processor?: { type: [ ".concat(e3, " ], config?: {} } }, audio?: { processor: {type: [ ").concat(t3, " ] } } }");
28589}
28590function pc2(e3) {
28591  var t3 = e3.allowAllParticipantsKey;
28592  return "receiveSettings must be of the form { [<remote participant id> | ".concat(yi2).concat(t3 ? ' | "'.concat("*", '"') : "", "]: ") + '{ [video: [{ layer: [<non-negative integer> | "inherit"] } | "inherit"]], [screenVideo: [{ layer: [<non-negative integer> | "inherit"] } | "inherit"]] }}}';
28593}
28594function hc2() {
28595  return "customIntegrations should be an object of type ".concat(JSON.stringify(qa2), ".");
28596}
28597function fc2(e3) {
28598  if (e3 && "object" !== n2(e3) || Array.isArray(e3)) return console.error("customTrayButtons should be an Object of the type ".concat(JSON.stringify($a2), ".")), false;
28599  if (e3) for (var t3 = 0, r3 = Object.entries(e3); t3 < r3.length; t3++) for (var i3 = f2(r3[t3], 1)[0], o3 = 0, s3 = Object.entries(e3[i3]); o3 < s3.length; o3++) {
28600    var a3 = f2(s3[o3], 2), c3 = a3[0], l3 = a3[1], u3 = $a2.id[c3];
28601    if (!u3) return console.error("customTrayButton does not support key ".concat(c3)), false;
28602    switch (c3) {
28603      case "iconPath":
28604      case "iconPathDarkMode":
28605        if (!U2(l3)) return console.error("customTrayButton ".concat(c3, " should be a url.")), false;
28606        break;
28607      case "visualState":
28608        if (!["default", "sidebar-open", "active"].includes(l3)) return console.error("customTrayButton ".concat(c3, " should be ").concat(u3, ". Got: ").concat(l3)), false;
28609        break;
28610      default:
28611        if (n2(l3) !== u3) return console.error("customTrayButton ".concat(c3, " should be a ").concat(u3, ".")), false;
28612    }
28613  }
28614  return true;
28615}
28616function vc2(e3) {
28617  if (!e3 || e3 && "object" !== n2(e3) || Array.isArray(e3)) return console.error(hc2()), false;
28618  for (var t3 = function(e4) {
28619    return "".concat(e4, " should be ").concat(qa2.id[e4]);
28620  }, r3 = function(e4, t4) {
28621    return console.error("customIntegration ".concat(e4, ": ").concat(t4));
28622  }, i3 = 0, o3 = Object.entries(e3); i3 < o3.length; i3++) {
28623    var s3 = f2(o3[i3], 1)[0];
28624    if (!("label" in e3[s3])) return r3(s3, "label is required"), false;
28625    if (!("location" in e3[s3])) return r3(s3, "location is required"), false;
28626    if (!("src" in e3[s3]) && !("srcdoc" in e3[s3])) return r3(s3, "src or srcdoc is required"), false;
28627    for (var a3 = 0, c3 = Object.entries(e3[s3]); a3 < c3.length; a3++) {
28628      var l3 = f2(c3[a3], 2), u3 = l3[0], d3 = l3[1];
28629      switch (u3) {
28630        case "allow":
28631        case "csp":
28632        case "name":
28633        case "referrerPolicy":
28634        case "sandbox":
28635          if ("string" != typeof d3) return r3(s3, t3(u3)), false;
28636          break;
28637        case "iconURL":
28638          if (!U2(d3)) return r3(s3, "".concat(u3, " should be a url")), false;
28639          break;
28640        case "src":
28641          if ("srcdoc" in e3[s3]) return r3(s3, "cannot have both src and srcdoc"), false;
28642          if (!U2(d3)) return r3(s3, 'src "'.concat(d3, '" is not a valid URL')), false;
28643          break;
28644        case "srcdoc":
28645          if ("src" in e3[s3]) return r3(s3, "cannot have both src and srcdoc"), false;
28646          if ("string" != typeof d3) return r3(s3, t3(u3)), false;
28647          break;
28648        case "location":
28649          if (!["main", "sidebar"].includes(d3)) return r3(s3, t3(u3)), false;
28650          break;
28651        case "controlledBy":
28652          if ("*" !== d3 && "owners" !== d3 && (!Array.isArray(d3) || d3.some((function(e4) {
28653            return "string" != typeof e4;
28654          })))) return r3(s3, t3(u3)), false;
28655          break;
28656        case "shared":
28657          if ((!Array.isArray(d3) || d3.some((function(e4) {
28658            return "string" != typeof e4;
28659          }))) && "owners" !== d3 && "boolean" != typeof d3) return r3(s3, t3(u3)), false;
28660          break;
28661        default:
28662          if (!qa2.id[u3]) return console.error("customIntegration does not support key ".concat(u3)), false;
28663      }
28664    }
28665  }
28666  return true;
28667}
28668function gc2(e3, t3) {
28669  if (void 0 === t3) return false;
28670  switch (n2(t3)) {
28671    case "string":
28672      return n2(e3) === t3;
28673    case "object":
28674      if ("object" !== n2(e3)) return false;
28675      for (var r3 in e3) if (!gc2(e3[r3], t3[r3])) return false;
28676      return true;
28677    default:
28678      return false;
28679  }
28680}
28681function mc2(e3, t3) {
28682  var n3 = e3.sessionId, r3 = e3.toEndPoint, i3 = e3.callerId, o3 = e3.useSipRefer;
28683  if (!n3 || !r3) throw new Error("".concat(t3, "() requires a sessionId and toEndPoint"));
28684  if ("string" != typeof n3 || "string" != typeof r3) throw new Error("Invalid paramater: sessionId and toEndPoint must be of type string");
28685  if (o3 && !r3.startsWith("sip:")) throw new Error('"toEndPoint" must be a "sip" address');
28686  if (!r3.startsWith("sip:") && !r3.startsWith("+")) throw new Error("toEndPoint: ".concat(r3, ' must starts with either "sip:" or "+"'));
28687  if (i3 && "string" != typeof i3) throw new Error("callerId must be of type string");
28688  if (i3 && !r3.startsWith("+")) throw new Error("callerId is only valid when transferring to a PSTN number");
28689}
28690function yc2(e3) {
28691  if ("object" !== n2(e3)) throw new Error('RemoteMediaPlayerSettings: must be "object" type');
28692  if (e3.state && !Object.values(Xo2).includes(e3.state)) throw new Error("Invalid value for RemoteMediaPlayerSettings.state, valid values are: " + JSON.stringify(Xo2));
28693  if (e3.volume) {
28694    if ("number" != typeof e3.volume) throw new Error('RemoteMediaPlayerSettings.volume: must be "number" type');
28695    if (e3.volume < 0 || e3.volume > 2) throw new Error("RemoteMediaPlayerSettings.volume: must be between 0.0 - 2.0");
28696  }
28697}
28698function bc2(e3, t3, n3) {
28699  return !("number" != typeof e3 || e3 < t3 || e3 > n3);
28700}
28701function _c2(e3, t3) {
28702  return e3 && !t3 && delete e3.data, e3;
28703}
28704var g2, m2, y2, b2, _2, k2, M2, C2, E2, T2, O2, P2, A2, j2, I2, x2, L2, D2, V2, J2, $2, z2, W2, H2, Q2, K2, Y2, X2, ee2, re2, ie2, ce2, ue2, fe2, Te2, qe2, Ye2, et2, st2, lt2, ut2, dt2, St2, Ct2, xt2, Nt2, Qt2, en2, tn2, nn2, ln2, gn2, bn2, _n2, wn2, On2, An2, jn2, In2, xn2, Ln2, $n2, Gn2, er2, tr2, nr2, or2, ur2, mr2, yr2, br2, _r2, wr2, Sr2, kr2, Or2, Ar2, Lr2, Dr2, Nr2, Rr2, Fr2, Br2, Ur2, Vr2, Jr2, $r2, qr2, Qr2, Kr2, Zr2, ei2, ti2, ni2, ri2, ii2, oi2, si2, ai2, ci2, li2, ui2, di2, pi2, hi2, fi2, vi2, gi2, mi2, yi2, bi2, _i2, wi2, Si2, ki2, Mi2, Ci2, Ei2, Ti2, Oi2, Pi2, Ai2, ji2, Ii2, xi2, Li2, Di2, Ni2, Ri2, Fi2, Bi2, Ui2, Vi2, Ji2, $i2, qi2, zi2, Wi2, Hi2, Gi2, Qi2, Ki2, Yi2, Xi2, Zi2, eo2, to2, no2, ro2, io2, oo2, so2, ao2, co2, lo2, uo2, po2, ho2, fo2, vo2, go2, mo2, yo2, bo2, _o2, wo2, So2, ko2, Mo2, Co2, Eo2, To2, Oo2, Po2, Ao2, jo2, Io2, xo2, Lo2, Do2, No2, Ro2, Fo2, Bo2, Uo2, Vo2, Jo2, $o2, qo2, zo2, Wo2, Ho2, Go2, Qo2, Ko2, Yo2, Xo2, Zo2, es2, ts2, ns2, cs2, ls2, us2, ds2, Ms2, Os2, js2, Is2, xs2, Ls2, Ds2, Us2, Vs2, Js2, $s2, qs2, zs2, Ws2, Hs2, Gs2, Qs2, Ks2, Ys2, Xs2, oa2, sa2, la2, ua2, fa2, ya2, ba2, _a2, wa2, Sa2, ka2, Ma2, Ca2, Ea2, Ta2, Oa2, La2, Da2, Na2, Ra2, Fa2, Ba2, Ua2, Va2, Ja2, $a2, qa2, za2, Wa2, Ha2;
28705var init_daily_esm = __esm({
28706  "node_modules/@daily-co/daily-js/dist/daily-esm.js"() {
28707    m2 = { exports: {} };
28708    y2 = (function() {
28709      if (g2) return m2.exports;
28710      g2 = 1;
28711      var e3, t3 = "object" == typeof Reflect ? Reflect : null, n3 = t3 && "function" == typeof t3.apply ? t3.apply : function(e4, t4, n4) {
28712        return Function.prototype.apply.call(e4, t4, n4);
28713      };
28714      e3 = t3 && "function" == typeof t3.ownKeys ? t3.ownKeys : Object.getOwnPropertySymbols ? function(e4) {
28715        return Object.getOwnPropertyNames(e4).concat(Object.getOwnPropertySymbols(e4));
28716      } : function(e4) {
28717        return Object.getOwnPropertyNames(e4);
28718      };
28719      var r3 = Number.isNaN || function(e4) {
28720        return e4 != e4;
28721      };
28722      function i3() {
28723        i3.init.call(this);
28724      }
28725      m2.exports = i3, m2.exports.once = function(e4, t4) {
28726        return new Promise((function(n4, r4) {
28727          function i4(n5) {
28728            e4.removeListener(t4, o4), r4(n5);
28729          }
28730          function o4() {
28731            "function" == typeof e4.removeListener && e4.removeListener("error", i4), n4([].slice.call(arguments));
28732          }
28733          f3(e4, t4, o4, { once: true }), "error" !== t4 && (function(e5, t5, n5) {
28734            "function" == typeof e5.on && f3(e5, "error", t5, n5);
28735          })(e4, i4, { once: true });
28736        }));
28737      }, i3.EventEmitter = i3, i3.prototype._events = void 0, i3.prototype._eventsCount = 0, i3.prototype._maxListeners = void 0;
28738      var o3 = 10;
28739      function s3(e4) {
28740        if ("function" != typeof e4) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e4);
28741      }
28742      function a3(e4) {
28743        return void 0 === e4._maxListeners ? i3.defaultMaxListeners : e4._maxListeners;
28744      }
28745      function c3(e4, t4, n4, r4) {
28746        var i4, o4, c4, l4;
28747        if (s3(n4), void 0 === (o4 = e4._events) ? (o4 = e4._events = /* @__PURE__ */ Object.create(null), e4._eventsCount = 0) : (void 0 !== o4.newListener && (e4.emit("newListener", t4, n4.listener ? n4.listener : n4), o4 = e4._events), c4 = o4[t4]), void 0 === c4) c4 = o4[t4] = n4, ++e4._eventsCount;
28748        else if ("function" == typeof c4 ? c4 = o4[t4] = r4 ? [n4, c4] : [c4, n4] : r4 ? c4.unshift(n4) : c4.push(n4), (i4 = a3(e4)) > 0 && c4.length > i4 && !c4.warned) {
28749          c4.warned = true;
28750          var u4 = new Error("Possible EventEmitter memory leak detected. " + c4.length + " " + String(t4) + " listeners added. Use emitter.setMaxListeners() to increase limit");
28751          u4.name = "MaxListenersExceededWarning", u4.emitter = e4, u4.type = t4, u4.count = c4.length, l4 = u4, console && console.warn && console.warn(l4);
28752        }
28753        return e4;
28754      }
28755      function l3() {
28756        if (!this.fired) return this.target.removeListener(this.type, this.wrapFn), this.fired = true, 0 === arguments.length ? this.listener.call(this.target) : this.listener.apply(this.target, arguments);
28757      }
28758      function u3(e4, t4, n4) {
28759        var r4 = { fired: false, wrapFn: void 0, target: e4, type: t4, listener: n4 }, i4 = l3.bind(r4);
28760        return i4.listener = n4, r4.wrapFn = i4, i4;
28761      }
28762      function d3(e4, t4, n4) {
28763        var r4 = e4._events;
28764        if (void 0 === r4) return [];
28765        var i4 = r4[t4];
28766        return void 0 === i4 ? [] : "function" == typeof i4 ? n4 ? [i4.listener || i4] : [i4] : n4 ? (function(e5) {
28767          for (var t5 = new Array(e5.length), n5 = 0; n5 < t5.length; ++n5) t5[n5] = e5[n5].listener || e5[n5];
28768          return t5;
28769        })(i4) : h3(i4, i4.length);
28770      }
28771      function p3(e4) {
28772        var t4 = this._events;
28773        if (void 0 !== t4) {
28774          var n4 = t4[e4];
28775          if ("function" == typeof n4) return 1;
28776          if (void 0 !== n4) return n4.length;
28777        }
28778        return 0;
28779      }
28780      function h3(e4, t4) {
28781        for (var n4 = new Array(t4), r4 = 0; r4 < t4; ++r4) n4[r4] = e4[r4];
28782        return n4;
28783      }
28784      function f3(e4, t4, n4, r4) {
28785        if ("function" == typeof e4.on) r4.once ? e4.once(t4, n4) : e4.on(t4, n4);
28786        else {
28787          if ("function" != typeof e4.addEventListener) throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof e4);
28788          e4.addEventListener(t4, (function i4(o4) {
28789            r4.once && e4.removeEventListener(t4, i4), n4(o4);
28790          }));
28791        }
28792      }
28793      return Object.defineProperty(i3, "defaultMaxListeners", { enumerable: true, get: function() {
28794        return o3;
28795      }, set: function(e4) {
28796        if ("number" != typeof e4 || e4 < 0 || r3(e4)) throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + e4 + ".");
28797        o3 = e4;
28798      } }), i3.init = function() {
28799        void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0;
28800      }, i3.prototype.setMaxListeners = function(e4) {
28801        if ("number" != typeof e4 || e4 < 0 || r3(e4)) throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + e4 + ".");
28802        return this._maxListeners = e4, this;
28803      }, i3.prototype.getMaxListeners = function() {
28804        return a3(this);
28805      }, i3.prototype.emit = function(e4) {
28806        for (var t4 = [], r4 = 1; r4 < arguments.length; r4++) t4.push(arguments[r4]);
28807        var i4 = "error" === e4, o4 = this._events;
28808        if (void 0 !== o4) i4 = i4 && void 0 === o4.error;
28809        else if (!i4) return false;
28810        if (i4) {
28811          var s4;
28812          if (t4.length > 0 && (s4 = t4[0]), s4 instanceof Error) throw s4;
28813          var a4 = new Error("Unhandled error." + (s4 ? " (" + s4.message + ")" : ""));
28814          throw a4.context = s4, a4;
28815        }
28816        var c4 = o4[e4];
28817        if (void 0 === c4) return false;
28818        if ("function" == typeof c4) n3(c4, this, t4);
28819        else {
28820          var l4 = c4.length, u4 = h3(c4, l4);
28821          for (r4 = 0; r4 < l4; ++r4) n3(u4[r4], this, t4);
28822        }
28823        return true;
28824      }, i3.prototype.addListener = function(e4, t4) {
28825        return c3(this, e4, t4, false);
28826      }, i3.prototype.on = i3.prototype.addListener, i3.prototype.prependListener = function(e4, t4) {
28827        return c3(this, e4, t4, true);
28828      }, i3.prototype.once = function(e4, t4) {
28829        return s3(t4), this.on(e4, u3(this, e4, t4)), this;
28830      }, i3.prototype.prependOnceListener = function(e4, t4) {
28831        return s3(t4), this.prependListener(e4, u3(this, e4, t4)), this;
28832      }, i3.prototype.removeListener = function(e4, t4) {
28833        var n4, r4, i4, o4, a4;
28834        if (s3(t4), void 0 === (r4 = this._events)) return this;
28835        if (void 0 === (n4 = r4[e4])) return this;
28836        if (n4 === t4 || n4.listener === t4) 0 == --this._eventsCount ? this._events = /* @__PURE__ */ Object.create(null) : (delete r4[e4], r4.removeListener && this.emit("removeListener", e4, n4.listener || t4));
28837        else if ("function" != typeof n4) {
28838          for (i4 = -1, o4 = n4.length - 1; o4 >= 0; o4--) if (n4[o4] === t4 || n4[o4].listener === t4) {
28839            a4 = n4[o4].listener, i4 = o4;
28840            break;
28841          }
28842          if (i4 < 0) return this;
28843          0 === i4 ? n4.shift() : (function(e5, t5) {
28844            for (; t5 + 1 < e5.length; t5++) e5[t5] = e5[t5 + 1];
28845            e5.pop();
28846          })(n4, i4), 1 === n4.length && (r4[e4] = n4[0]), void 0 !== r4.removeListener && this.emit("removeListener", e4, a4 || t4);
28847        }
28848        return this;
28849      }, i3.prototype.off = i3.prototype.removeListener, i3.prototype.removeAllListeners = function(e4) {
28850        var t4, n4, r4;
28851        if (void 0 === (n4 = this._events)) return this;
28852        if (void 0 === n4.removeListener) return 0 === arguments.length ? (this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0) : void 0 !== n4[e4] && (0 == --this._eventsCount ? this._events = /* @__PURE__ */ Object.create(null) : delete n4[e4]), this;
28853        if (0 === arguments.length) {
28854          var i4, o4 = Object.keys(n4);
28855          for (r4 = 0; r4 < o4.length; ++r4) "removeListener" !== (i4 = o4[r4]) && this.removeAllListeners(i4);
28856          return this.removeAllListeners("removeListener"), this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0, this;
28857        }
28858        if ("function" == typeof (t4 = n4[e4])) this.removeListener(e4, t4);
28859        else if (void 0 !== t4) for (r4 = t4.length - 1; r4 >= 0; r4--) this.removeListener(e4, t4[r4]);
28860        return this;
28861      }, i3.prototype.listeners = function(e4) {
28862        return d3(this, e4, true);
28863      }, i3.prototype.rawListeners = function(e4) {
28864        return d3(this, e4, false);
28865      }, i3.listenerCount = function(e4, t4) {
28866        return "function" == typeof e4.listenerCount ? e4.listenerCount(t4) : p3.call(e4, t4);
28867      }, i3.prototype.listenerCount = p3, i3.prototype.eventNames = function() {
28868        return this._eventsCount > 0 ? e3(this._events) : [];
28869      }, m2.exports;
28870    })();
28871    b2 = v2(y2);
28872    _2 = Object.prototype.hasOwnProperty;
28873    k2 = { "Amazon Silk": "amazon_silk", "Android Browser": "android", Bada: "bada", BlackBerry: "blackberry", Chrome: "chrome", Chromium: "chromium", Electron: "electron", Epiphany: "epiphany", Firefox: "firefox", Focus: "focus", Generic: "generic", "Google Search": "google_search", Googlebot: "googlebot", "Internet Explorer": "ie", "K-Meleon": "k_meleon", Maxthon: "maxthon", "Microsoft Edge": "edge", "MZ Browser": "mz", "NAVER Whale Browser": "naver", Opera: "opera", "Opera Coast": "opera_coast", PhantomJS: "phantomjs", Puffin: "puffin", QupZilla: "qupzilla", QQ: "qq", QQLite: "qqlite", Safari: "safari", Sailfish: "sailfish", "Samsung Internet for Android": "samsung_internet", SeaMonkey: "seamonkey", Sleipnir: "sleipnir", Swing: "swing", Tizen: "tizen", "UC Browser": "uc", Vivaldi: "vivaldi", "WebOS Browser": "webos", WeChat: "wechat", "Yandex Browser": "yandex", Roku: "roku" };
28874    M2 = { amazon_silk: "Amazon Silk", android: "Android Browser", bada: "Bada", blackberry: "BlackBerry", chrome: "Chrome", chromium: "Chromium", electron: "Electron", epiphany: "Epiphany", firefox: "Firefox", focus: "Focus", generic: "Generic", googlebot: "Googlebot", google_search: "Google Search", ie: "Internet Explorer", k_meleon: "K-Meleon", maxthon: "Maxthon", edge: "Microsoft Edge", mz: "MZ Browser", naver: "NAVER Whale Browser", opera: "Opera", opera_coast: "Opera Coast", phantomjs: "PhantomJS", puffin: "Puffin", qupzilla: "QupZilla", qq: "QQ Browser", qqlite: "QQ Browser Lite", safari: "Safari", sailfish: "Sailfish", samsung_internet: "Samsung Internet for Android", seamonkey: "SeaMonkey", sleipnir: "Sleipnir", swing: "Swing", tizen: "Tizen", uc: "UC Browser", vivaldi: "Vivaldi", webos: "WebOS Browser", wechat: "WeChat", yandex: "Yandex Browser" };
28875    C2 = { tablet: "tablet", mobile: "mobile", desktop: "desktop", tv: "tv" };
28876    E2 = { WindowsPhone: "Windows Phone", Windows: "Windows", MacOS: "macOS", iOS: "iOS", Android: "Android", WebOS: "WebOS", BlackBerry: "BlackBerry", Bada: "Bada", Tizen: "Tizen", Linux: "Linux", ChromeOS: "Chrome OS", PlayStation4: "PlayStation 4", Roku: "Roku" };
28877    T2 = { EdgeHTML: "EdgeHTML", Blink: "Blink", Trident: "Trident", Presto: "Presto", Gecko: "Gecko", WebKit: "WebKit" };
28878    O2 = class _O {
28879      static getFirstMatch(e3, t3) {
28880        const n3 = t3.match(e3);
28881        return n3 && n3.length > 0 && n3[1] || "";
28882      }
28883      static getSecondMatch(e3, t3) {
28884        const n3 = t3.match(e3);
28885        return n3 && n3.length > 1 && n3[2] || "";
28886      }
28887      static matchAndReturnConst(e3, t3, n3) {
28888        if (e3.test(t3)) return n3;
28889      }
28890      static getWindowsVersionName(e3) {
28891        switch (e3) {
28892          case "NT":
28893            return "NT";
28894          case "XP":
28895          case "NT 5.1":
28896            return "XP";
28897          case "NT 5.0":
28898            return "2000";
28899          case "NT 5.2":
28900            return "2003";
28901          case "NT 6.0":
28902            return "Vista";
28903          case "NT 6.1":
28904            return "7";
28905          case "NT 6.2":
28906            return "8";
28907          case "NT 6.3":
28908            return "8.1";
28909          case "NT 10.0":
28910            return "10";
28911          default:
28912            return;
28913        }
28914      }
28915      static getMacOSVersionName(e3) {
28916        const t3 = e3.split(".").splice(0, 2).map(((e4) => parseInt(e4, 10) || 0));
28917        if (t3.push(0), 10 === t3[0]) switch (t3[1]) {
28918          case 5:
28919            return "Leopard";
28920          case 6:
28921            return "Snow Leopard";
28922          case 7:
28923            return "Lion";
28924          case 8:
28925            return "Mountain Lion";
28926          case 9:
28927            return "Mavericks";
28928          case 10:
28929            return "Yosemite";
28930          case 11:
28931            return "El Capitan";
28932          case 12:
28933            return "Sierra";
28934          case 13:
28935            return "High Sierra";
28936          case 14:
28937            return "Mojave";
28938          case 15:
28939            return "Catalina";
28940          default:
28941            return;
28942        }
28943      }
28944      static getAndroidVersionName(e3) {
28945        const t3 = e3.split(".").splice(0, 2).map(((e4) => parseInt(e4, 10) || 0));
28946        if (t3.push(0), !(1 === t3[0] && t3[1] < 5)) return 1 === t3[0] && t3[1] < 6 ? "Cupcake" : 1 === t3[0] && t3[1] >= 6 ? "Donut" : 2 === t3[0] && t3[1] < 2 ? "Eclair" : 2 === t3[0] && 2 === t3[1] ? "Froyo" : 2 === t3[0] && t3[1] > 2 ? "Gingerbread" : 3 === t3[0] ? "Honeycomb" : 4 === t3[0] && t3[1] < 1 ? "Ice Cream Sandwich" : 4 === t3[0] && t3[1] < 4 ? "Jelly Bean" : 4 === t3[0] && t3[1] >= 4 ? "KitKat" : 5 === t3[0] ? "Lollipop" : 6 === t3[0] ? "Marshmallow" : 7 === t3[0] ? "Nougat" : 8 === t3[0] ? "Oreo" : 9 === t3[0] ? "Pie" : void 0;
28947      }
28948      static getVersionPrecision(e3) {
28949        return e3.split(".").length;
28950      }
28951      static compareVersions(e3, t3, n3 = false) {
28952        const r3 = _O.getVersionPrecision(e3), i3 = _O.getVersionPrecision(t3);
28953        let o3 = Math.max(r3, i3), s3 = 0;
28954        const a3 = _O.map([e3, t3], ((e4) => {
28955          const t4 = o3 - _O.getVersionPrecision(e4), n4 = e4 + new Array(t4 + 1).join(".0");
28956          return _O.map(n4.split("."), ((e5) => new Array(20 - e5.length).join("0") + e5)).reverse();
28957        }));
28958        for (n3 && (s3 = o3 - Math.min(r3, i3)), o3 -= 1; o3 >= s3; ) {
28959          if (a3[0][o3] > a3[1][o3]) return 1;
28960          if (a3[0][o3] === a3[1][o3]) {
28961            if (o3 === s3) return 0;
28962            o3 -= 1;
28963          } else if (a3[0][o3] < a3[1][o3]) return -1;
28964        }
28965      }
28966      static map(e3, t3) {
28967        const n3 = [];
28968        let r3;
28969        if (Array.prototype.map) return Array.prototype.map.call(e3, t3);
28970        for (r3 = 0; r3 < e3.length; r3 += 1) n3.push(t3(e3[r3]));
28971        return n3;
28972      }
28973      static find(e3, t3) {
28974        let n3, r3;
28975        if (Array.prototype.find) return Array.prototype.find.call(e3, t3);
28976        for (n3 = 0, r3 = e3.length; n3 < r3; n3 += 1) {
28977          const r4 = e3[n3];
28978          if (t3(r4, n3)) return r4;
28979        }
28980      }
28981      static assign(e3, ...t3) {
28982        const n3 = e3;
28983        let r3, i3;
28984        if (Object.assign) return Object.assign(e3, ...t3);
28985        for (r3 = 0, i3 = t3.length; r3 < i3; r3 += 1) {
28986          const e4 = t3[r3];
28987          if ("object" == typeof e4 && null !== e4) {
28988            Object.keys(e4).forEach(((t4) => {
28989              n3[t4] = e4[t4];
28990            }));
28991          }
28992        }
28993        return e3;
28994      }
28995      static getBrowserAlias(e3) {
28996        return k2[e3];
28997      }
28998      static getBrowserTypeByAlias(e3) {
28999        return M2[e3] || "";
29000      }
29001    };
29002    P2 = /version\/(\d+(\.?_?\d+)+)/i;
29003    A2 = [{ test: [/googlebot/i], describe(e3) {
29004      const t3 = { name: "Googlebot" }, n3 = O2.getFirstMatch(/googlebot\/(\d+(\.\d+))/i, e3) || O2.getFirstMatch(P2, e3);
29005      return n3 && (t3.version = n3), t3;
29006    } }, { test: [/opera/i], describe(e3) {
29007      const t3 = { name: "Opera" }, n3 = O2.getFirstMatch(P2, e3) || O2.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i, e3);
29008      return n3 && (t3.version = n3), t3;
29009    } }, { test: [/opr\/|opios/i], describe(e3) {
29010      const t3 = { name: "Opera" }, n3 = O2.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i, e3) || O2.getFirstMatch(P2, e3);
29011      return n3 && (t3.version = n3), t3;
29012    } }, { test: [/SamsungBrowser/i], describe(e3) {
29013      const t3 = { name: "Samsung Internet for Android" }, n3 = O2.getFirstMatch(P2, e3) || O2.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i, e3);
29014      return n3 && (t3.version = n3), t3;
29015    } }, { test: [/Whale/i], describe(e3) {
29016      const t3 = { name: "NAVER Whale Browser" }, n3 = O2.getFirstMatch(P2, e3) || O2.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i, e3);
29017      return n3 && (t3.version = n3), t3;
29018    } }, { test: [/MZBrowser/i], describe(e3) {
29019      const t3 = { name: "MZ Browser" }, n3 = O2.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i, e3) || O2.getFirstMatch(P2, e3);
29020      return n3 && (t3.version = n3), t3;
29021    } }, { test: [/focus/i], describe(e3) {
29022      const t3 = { name: "Focus" }, n3 = O2.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i, e3) || O2.getFirstMatch(P2, e3);
29023      return n3 && (t3.version = n3), t3;
29024    } }, { test: [/swing/i], describe(e3) {
29025      const t3 = { name: "Swing" }, n3 = O2.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i, e3) || O2.getFirstMatch(P2, e3);
29026      return n3 && (t3.version = n3), t3;
29027    } }, { test: [/coast/i], describe(e3) {
29028      const t3 = { name: "Opera Coast" }, n3 = O2.getFirstMatch(P2, e3) || O2.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i, e3);
29029      return n3 && (t3.version = n3), t3;
29030    } }, { test: [/opt\/\d+(?:.?_?\d+)+/i], describe(e3) {
29031      const t3 = { name: "Opera Touch" }, n3 = O2.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i, e3) || O2.getFirstMatch(P2, e3);
29032      return n3 && (t3.version = n3), t3;
29033    } }, { test: [/yabrowser/i], describe(e3) {
29034      const t3 = { name: "Yandex Browser" }, n3 = O2.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i, e3) || O2.getFirstMatch(P2, e3);
29035      return n3 && (t3.version = n3), t3;
29036    } }, { test: [/ucbrowser/i], describe(e3) {
29037      const t3 = { name: "UC Browser" }, n3 = O2.getFirstMatch(P2, e3) || O2.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i, e3);
29038      return n3 && (t3.version = n3), t3;
29039    } }, { test: [/Maxthon|mxios/i], describe(e3) {
29040      const t3 = { name: "Maxthon" }, n3 = O2.getFirstMatch(P2, e3) || O2.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i, e3);
29041      return n3 && (t3.version = n3), t3;
29042    } }, { test: [/epiphany/i], describe(e3) {
29043      const t3 = { name: "Epiphany" }, n3 = O2.getFirstMatch(P2, e3) || O2.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i, e3);
29044      return n3 && (t3.version = n3), t3;
29045    } }, { test: [/puffin/i], describe(e3) {
29046      const t3 = { name: "Puffin" }, n3 = O2.getFirstMatch(P2, e3) || O2.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i, e3);
29047      return n3 && (t3.version = n3), t3;
29048    } }, { test: [/sleipnir/i], describe(e3) {
29049      const t3 = { name: "Sleipnir" }, n3 = O2.getFirstMatch(P2, e3) || O2.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i, e3);
29050      return n3 && (t3.version = n3), t3;
29051    } }, { test: [/k-meleon/i], describe(e3) {
29052      const t3 = { name: "K-Meleon" }, n3 = O2.getFirstMatch(P2, e3) || O2.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i, e3);
29053      return n3 && (t3.version = n3), t3;
29054    } }, { test: [/micromessenger/i], describe(e3) {
29055      const t3 = { name: "WeChat" }, n3 = O2.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i, e3) || O2.getFirstMatch(P2, e3);
29056      return n3 && (t3.version = n3), t3;
29057    } }, { test: [/qqbrowser/i], describe(e3) {
29058      const t3 = { name: /qqbrowserlite/i.test(e3) ? "QQ Browser Lite" : "QQ Browser" }, n3 = O2.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i, e3) || O2.getFirstMatch(P2, e3);
29059      return n3 && (t3.version = n3), t3;
29060    } }, { test: [/msie|trident/i], describe(e3) {
29061      const t3 = { name: "Internet Explorer" }, n3 = O2.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i, e3);
29062      return n3 && (t3.version = n3), t3;
29063    } }, { test: [/\sedg\//i], describe(e3) {
29064      const t3 = { name: "Microsoft Edge" }, n3 = O2.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i, e3);
29065      return n3 && (t3.version = n3), t3;
29066    } }, { test: [/edg([ea]|ios)/i], describe(e3) {
29067      const t3 = { name: "Microsoft Edge" }, n3 = O2.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i, e3);
29068      return n3 && (t3.version = n3), t3;
29069    } }, { test: [/vivaldi/i], describe(e3) {
29070      const t3 = { name: "Vivaldi" }, n3 = O2.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i, e3);
29071      return n3 && (t3.version = n3), t3;
29072    } }, { test: [/seamonkey/i], describe(e3) {
29073      const t3 = { name: "SeaMonkey" }, n3 = O2.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i, e3);
29074      return n3 && (t3.version = n3), t3;
29075    } }, { test: [/sailfish/i], describe(e3) {
29076      const t3 = { name: "Sailfish" }, n3 = O2.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i, e3);
29077      return n3 && (t3.version = n3), t3;
29078    } }, { test: [/silk/i], describe(e3) {
29079      const t3 = { name: "Amazon Silk" }, n3 = O2.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i, e3);
29080      return n3 && (t3.version = n3), t3;
29081    } }, { test: [/phantom/i], describe(e3) {
29082      const t3 = { name: "PhantomJS" }, n3 = O2.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i, e3);
29083      return n3 && (t3.version = n3), t3;
29084    } }, { test: [/slimerjs/i], describe(e3) {
29085      const t3 = { name: "SlimerJS" }, n3 = O2.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i, e3);
29086      return n3 && (t3.version = n3), t3;
29087    } }, { test: [/blackberry|\bbb\d+/i, /rim\stablet/i], describe(e3) {
29088      const t3 = { name: "BlackBerry" }, n3 = O2.getFirstMatch(P2, e3) || O2.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i, e3);
29089      return n3 && (t3.version = n3), t3;
29090    } }, { test: [/(web|hpw)[o0]s/i], describe(e3) {
29091      const t3 = { name: "WebOS Browser" }, n3 = O2.getFirstMatch(P2, e3) || O2.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i, e3);
29092      return n3 && (t3.version = n3), t3;
29093    } }, { test: [/bada/i], describe(e3) {
29094      const t3 = { name: "Bada" }, n3 = O2.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i, e3);
29095      return n3 && (t3.version = n3), t3;
29096    } }, { test: [/tizen/i], describe(e3) {
29097      const t3 = { name: "Tizen" }, n3 = O2.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i, e3) || O2.getFirstMatch(P2, e3);
29098      return n3 && (t3.version = n3), t3;
29099    } }, { test: [/qupzilla/i], describe(e3) {
29100      const t3 = { name: "QupZilla" }, n3 = O2.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i, e3) || O2.getFirstMatch(P2, e3);
29101      return n3 && (t3.version = n3), t3;
29102    } }, { test: [/firefox|iceweasel|fxios/i], describe(e3) {
29103      const t3 = { name: "Firefox" }, n3 = O2.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i, e3);
29104      return n3 && (t3.version = n3), t3;
29105    } }, { test: [/electron/i], describe(e3) {
29106      const t3 = { name: "Electron" }, n3 = O2.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i, e3);
29107      return n3 && (t3.version = n3), t3;
29108    } }, { test: [/MiuiBrowser/i], describe(e3) {
29109      const t3 = { name: "Miui" }, n3 = O2.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i, e3);
29110      return n3 && (t3.version = n3), t3;
29111    } }, { test: [/chromium/i], describe(e3) {
29112      const t3 = { name: "Chromium" }, n3 = O2.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i, e3) || O2.getFirstMatch(P2, e3);
29113      return n3 && (t3.version = n3), t3;
29114    } }, { test: [/chrome|crios|crmo/i], describe(e3) {
29115      const t3 = { name: "Chrome" }, n3 = O2.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, e3);
29116      return n3 && (t3.version = n3), t3;
29117    } }, { test: [/GSA/i], describe(e3) {
29118      const t3 = { name: "Google Search" }, n3 = O2.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i, e3);
29119      return n3 && (t3.version = n3), t3;
29120    } }, { test(e3) {
29121      const t3 = !e3.test(/like android/i), n3 = e3.test(/android/i);
29122      return t3 && n3;
29123    }, describe(e3) {
29124      const t3 = { name: "Android Browser" }, n3 = O2.getFirstMatch(P2, e3);
29125      return n3 && (t3.version = n3), t3;
29126    } }, { test: [/playstation 4/i], describe(e3) {
29127      const t3 = { name: "PlayStation 4" }, n3 = O2.getFirstMatch(P2, e3);
29128      return n3 && (t3.version = n3), t3;
29129    } }, { test: [/safari|applewebkit/i], describe(e3) {
29130      const t3 = { name: "Safari" }, n3 = O2.getFirstMatch(P2, e3);
29131      return n3 && (t3.version = n3), t3;
29132    } }, { test: [/.*/i], describe(e3) {
29133      const t3 = -1 !== e3.search("\\(") ? /^(.*)\/(.*)[ \t]\((.*)/ : /^(.*)\/(.*) /;
29134      return { name: O2.getFirstMatch(t3, e3), version: O2.getSecondMatch(t3, e3) };
29135    } }];
29136    j2 = [{ test: [/Roku\/DVP/], describe(e3) {
29137      const t3 = O2.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i, e3);
29138      return { name: E2.Roku, version: t3 };
29139    } }, { test: [/windows phone/i], describe(e3) {
29140      const t3 = O2.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i, e3);
29141      return { name: E2.WindowsPhone, version: t3 };
29142    } }, { test: [/windows /i], describe(e3) {
29143      const t3 = O2.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i, e3), n3 = O2.getWindowsVersionName(t3);
29144      return { name: E2.Windows, version: t3, versionName: n3 };
29145    } }, { test: [/Macintosh(.*?) FxiOS(.*?)\//], describe(e3) {
29146      const t3 = { name: E2.iOS }, n3 = O2.getSecondMatch(/(Version\/)(\d[\d.]+)/, e3);
29147      return n3 && (t3.version = n3), t3;
29148    } }, { test: [/macintosh/i], describe(e3) {
29149      const t3 = O2.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i, e3).replace(/[_\s]/g, "."), n3 = O2.getMacOSVersionName(t3), r3 = { name: E2.MacOS, version: t3 };
29150      return n3 && (r3.versionName = n3), r3;
29151    } }, { test: [/(ipod|iphone|ipad)/i], describe(e3) {
29152      const t3 = O2.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i, e3).replace(/[_\s]/g, ".");
29153      return { name: E2.iOS, version: t3 };
29154    } }, { test(e3) {
29155      const t3 = !e3.test(/like android/i), n3 = e3.test(/android/i);
29156      return t3 && n3;
29157    }, describe(e3) {
29158      const t3 = O2.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i, e3), n3 = O2.getAndroidVersionName(t3), r3 = { name: E2.Android, version: t3 };
29159      return n3 && (r3.versionName = n3), r3;
29160    } }, { test: [/(web|hpw)[o0]s/i], describe(e3) {
29161      const t3 = O2.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i, e3), n3 = { name: E2.WebOS };
29162      return t3 && t3.length && (n3.version = t3), n3;
29163    } }, { test: [/blackberry|\bbb\d+/i, /rim\stablet/i], describe(e3) {
29164      const t3 = O2.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i, e3) || O2.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i, e3) || O2.getFirstMatch(/\bbb(\d+)/i, e3);
29165      return { name: E2.BlackBerry, version: t3 };
29166    } }, { test: [/bada/i], describe(e3) {
29167      const t3 = O2.getFirstMatch(/bada\/(\d+(\.\d+)*)/i, e3);
29168      return { name: E2.Bada, version: t3 };
29169    } }, { test: [/tizen/i], describe(e3) {
29170      const t3 = O2.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i, e3);
29171      return { name: E2.Tizen, version: t3 };
29172    } }, { test: [/linux/i], describe: () => ({ name: E2.Linux }) }, { test: [/CrOS/], describe: () => ({ name: E2.ChromeOS }) }, { test: [/PlayStation 4/], describe(e3) {
29173      const t3 = O2.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i, e3);
29174      return { name: E2.PlayStation4, version: t3 };
29175    } }];
29176    I2 = [{ test: [/googlebot/i], describe: () => ({ type: "bot", vendor: "Google" }) }, { test: [/huawei/i], describe(e3) {
29177      const t3 = O2.getFirstMatch(/(can-l01)/i, e3) && "Nova", n3 = { type: C2.mobile, vendor: "Huawei" };
29178      return t3 && (n3.model = t3), n3;
29179    } }, { test: [/nexus\s*(?:7|8|9|10).*/i], describe: () => ({ type: C2.tablet, vendor: "Nexus" }) }, { test: [/ipad/i], describe: () => ({ type: C2.tablet, vendor: "Apple", model: "iPad" }) }, { test: [/Macintosh(.*?) FxiOS(.*?)\//], describe: () => ({ type: C2.tablet, vendor: "Apple", model: "iPad" }) }, { test: [/kftt build/i], describe: () => ({ type: C2.tablet, vendor: "Amazon", model: "Kindle Fire HD 7" }) }, { test: [/silk/i], describe: () => ({ type: C2.tablet, vendor: "Amazon" }) }, { test: [/tablet(?! pc)/i], describe: () => ({ type: C2.tablet }) }, { test(e3) {
29180      const t3 = e3.test(/ipod|iphone/i), n3 = e3.test(/like (ipod|iphone)/i);
29181      return t3 && !n3;
29182    }, describe(e3) {
29183      const t3 = O2.getFirstMatch(/(ipod|iphone)/i, e3);
29184      return { type: C2.mobile, vendor: "Apple", model: t3 };
29185    } }, { test: [/nexus\s*[0-6].*/i, /galaxy nexus/i], describe: () => ({ type: C2.mobile, vendor: "Nexus" }) }, { test: [/[^-]mobi/i], describe: () => ({ type: C2.mobile }) }, { test: (e3) => "blackberry" === e3.getBrowserName(true), describe: () => ({ type: C2.mobile, vendor: "BlackBerry" }) }, { test: (e3) => "bada" === e3.getBrowserName(true), describe: () => ({ type: C2.mobile }) }, { test: (e3) => "windows phone" === e3.getBrowserName(), describe: () => ({ type: C2.mobile, vendor: "Microsoft" }) }, { test(e3) {
29186      const t3 = Number(String(e3.getOSVersion()).split(".")[0]);
29187      return "android" === e3.getOSName(true) && t3 >= 3;
29188    }, describe: () => ({ type: C2.tablet }) }, { test: (e3) => "android" === e3.getOSName(true), describe: () => ({ type: C2.mobile }) }, { test: (e3) => "macos" === e3.getOSName(true), describe: () => ({ type: C2.desktop, vendor: "Apple" }) }, { test: (e3) => "windows" === e3.getOSName(true), describe: () => ({ type: C2.desktop }) }, { test: (e3) => "linux" === e3.getOSName(true), describe: () => ({ type: C2.desktop }) }, { test: (e3) => "playstation 4" === e3.getOSName(true), describe: () => ({ type: C2.tv }) }, { test: (e3) => "roku" === e3.getOSName(true), describe: () => ({ type: C2.tv }) }];
29189    x2 = [{ test: (e3) => "microsoft edge" === e3.getBrowserName(true), describe(e3) {
29190      if (/\sedg\//i.test(e3)) return { name: T2.Blink };
29191      const t3 = O2.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i, e3);
29192      return { name: T2.EdgeHTML, version: t3 };
29193    } }, { test: [/trident/i], describe(e3) {
29194      const t3 = { name: T2.Trident }, n3 = O2.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i, e3);
29195      return n3 && (t3.version = n3), t3;
29196    } }, { test: (e3) => e3.test(/presto/i), describe(e3) {
29197      const t3 = { name: T2.Presto }, n3 = O2.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i, e3);
29198      return n3 && (t3.version = n3), t3;
29199    } }, { test(e3) {
29200      const t3 = e3.test(/gecko/i), n3 = e3.test(/like gecko/i);
29201      return t3 && !n3;
29202    }, describe(e3) {
29203      const t3 = { name: T2.Gecko }, n3 = O2.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i, e3);
29204      return n3 && (t3.version = n3), t3;
29205    } }, { test: [/(apple)?webkit\/537\.36/i], describe: () => ({ name: T2.Blink }) }, { test: [/(apple)?webkit/i], describe(e3) {
29206      const t3 = { name: T2.WebKit }, n3 = O2.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i, e3);
29207      return n3 && (t3.version = n3), t3;
29208    } }];
29209    L2 = class {
29210      constructor(e3, t3 = false) {
29211        if (null == e3 || "" === e3) throw new Error("UserAgent parameter can't be empty");
29212        this._ua = e3, this.parsedResult = {}, true !== t3 && this.parse();
29213      }
29214      getUA() {
29215        return this._ua;
29216      }
29217      test(e3) {
29218        return e3.test(this._ua);
29219      }
29220      parseBrowser() {
29221        this.parsedResult.browser = {};
29222        const e3 = O2.find(A2, ((e4) => {
29223          if ("function" == typeof e4.test) return e4.test(this);
29224          if (e4.test instanceof Array) return e4.test.some(((e5) => this.test(e5)));
29225          throw new Error("Browser's test function is not valid");
29226        }));
29227        return e3 && (this.parsedResult.browser = e3.describe(this.getUA())), this.parsedResult.browser;
29228      }
29229      getBrowser() {
29230        return this.parsedResult.browser ? this.parsedResult.browser : this.parseBrowser();
29231      }
29232      getBrowserName(e3) {
29233        return e3 ? String(this.getBrowser().name).toLowerCase() || "" : this.getBrowser().name || "";
29234      }
29235      getBrowserVersion() {
29236        return this.getBrowser().version;
29237      }
29238      getOS() {
29239        return this.parsedResult.os ? this.parsedResult.os : this.parseOS();
29240      }
29241      parseOS() {
29242        this.parsedResult.os = {};
29243        const e3 = O2.find(j2, ((e4) => {
29244          if ("function" == typeof e4.test) return e4.test(this);
29245          if (e4.test instanceof Array) return e4.test.some(((e5) => this.test(e5)));
29246          throw new Error("Browser's test function is not valid");
29247        }));
29248        return e3 && (this.parsedResult.os = e3.describe(this.getUA())), this.parsedResult.os;
29249      }
29250      getOSName(e3) {
29251        const { name: t3 } = this.getOS();
29252        return e3 ? String(t3).toLowerCase() || "" : t3 || "";
29253      }
29254      getOSVersion() {
29255        return this.getOS().version;
29256      }
29257      getPlatform() {
29258        return this.parsedResult.platform ? this.parsedResult.platform : this.parsePlatform();
29259      }
29260      getPlatformType(e3 = false) {
29261        const { type: t3 } = this.getPlatform();
29262        return e3 ? String(t3).toLowerCase() || "" : t3 || "";
29263      }
29264      parsePlatform() {
29265        this.parsedResult.platform = {};
29266        const e3 = O2.find(I2, ((e4) => {
29267          if ("function" == typeof e4.test) return e4.test(this);
29268          if (e4.test instanceof Array) return e4.test.some(((e5) => this.test(e5)));
29269          throw new Error("Browser's test function is not valid");
29270        }));
29271        return e3 && (this.parsedResult.platform = e3.describe(this.getUA())), this.parsedResult.platform;
29272      }
29273      getEngine() {
29274        return this.parsedResult.engine ? this.parsedResult.engine : this.parseEngine();
29275      }
29276      getEngineName(e3) {
29277        return e3 ? String(this.getEngine().name).toLowerCase() || "" : this.getEngine().name || "";
29278      }
29279      parseEngine() {
29280        this.parsedResult.engine = {};
29281        const e3 = O2.find(x2, ((e4) => {
29282          if ("function" == typeof e4.test) return e4.test(this);
29283          if (e4.test instanceof Array) return e4.test.some(((e5) => this.test(e5)));
29284          throw new Error("Browser's test function is not valid");
29285        }));
29286        return e3 && (this.parsedResult.engine = e3.describe(this.getUA())), this.parsedResult.engine;
29287      }
29288      parse() {
29289        return this.parseBrowser(), this.parseOS(), this.parsePlatform(), this.parseEngine(), this;
29290      }
29291      getResult() {
29292        return O2.assign({}, this.parsedResult);
29293      }
29294      satisfies(e3) {
29295        const t3 = {};
29296        let n3 = 0;
29297        const r3 = {};
29298        let i3 = 0;
29299        if (Object.keys(e3).forEach(((o3) => {
29300          const s3 = e3[o3];
29301          "string" == typeof s3 ? (r3[o3] = s3, i3 += 1) : "object" == typeof s3 && (t3[o3] = s3, n3 += 1);
29302        })), n3 > 0) {
29303          const e4 = Object.keys(t3), n4 = O2.find(e4, ((e5) => this.isOS(e5)));
29304          if (n4) {
29305            const e5 = this.satisfies(t3[n4]);
29306            if (void 0 !== e5) return e5;
29307          }
29308          const r4 = O2.find(e4, ((e5) => this.isPlatform(e5)));
29309          if (r4) {
29310            const e5 = this.satisfies(t3[r4]);
29311            if (void 0 !== e5) return e5;
29312          }
29313        }
29314        if (i3 > 0) {
29315          const e4 = Object.keys(r3), t4 = O2.find(e4, ((e5) => this.isBrowser(e5, true)));
29316          if (void 0 !== t4) return this.compareVersion(r3[t4]);
29317        }
29318      }
29319      isBrowser(e3, t3 = false) {
29320        const n3 = this.getBrowserName().toLowerCase();
29321        let r3 = e3.toLowerCase();
29322        const i3 = O2.getBrowserTypeByAlias(r3);
29323        return t3 && i3 && (r3 = i3.toLowerCase()), r3 === n3;
29324      }
29325      compareVersion(e3) {
29326        let t3 = [0], n3 = e3, r3 = false;
29327        const i3 = this.getBrowserVersion();
29328        if ("string" == typeof i3) return ">" === e3[0] || "<" === e3[0] ? (n3 = e3.substr(1), "=" === e3[1] ? (r3 = true, n3 = e3.substr(2)) : t3 = [], ">" === e3[0] ? t3.push(1) : t3.push(-1)) : "=" === e3[0] ? n3 = e3.substr(1) : "~" === e3[0] && (r3 = true, n3 = e3.substr(1)), t3.indexOf(O2.compareVersions(i3, n3, r3)) > -1;
29329      }
29330      isOS(e3) {
29331        return this.getOSName(true) === String(e3).toLowerCase();
29332      }
29333      isPlatform(e3) {
29334        return this.getPlatformType(true) === String(e3).toLowerCase();
29335      }
29336      isEngine(e3) {
29337        return this.getEngineName(true) === String(e3).toLowerCase();
29338      }
29339      is(e3, t3 = false) {
29340        return this.isBrowser(e3, t3) || this.isOS(e3) || this.isPlatform(e3);
29341      }
29342      some(e3 = []) {
29343        return e3.some(((e4) => this.is(e4)));
29344      }
29345    };
29346    D2 = class {
29347      static getParser(e3, t3 = false) {
29348        if ("string" != typeof e3) throw new Error("UserAgent should be a string");
29349        return new L2(e3, t3);
29350      }
29351      static parse(e3) {
29352        return new L2(e3).getResult();
29353      }
29354      static get BROWSER_MAP() {
29355        return M2;
29356      }
29357      static get ENGINE_MAP() {
29358        return T2;
29359      }
29360      static get OS_MAP() {
29361        return E2;
29362      }
29363      static get PLATFORMS_MAP() {
29364        return C2;
29365      }
29366    };
29367    V2 = "undefined" == typeof __SENTRY_DEBUG__ || __SENTRY_DEBUG__;
29368    J2 = "8.55.0";
29369    $2 = globalThis;
29370    z2 = "undefined" == typeof __SENTRY_DEBUG__ || __SENTRY_DEBUG__;
29371    W2 = ["debug", "info", "warn", "error", "log", "assert", "trace"];
29372    H2 = {};
29373    Q2 = q2("logger", (function() {
29374      let e3 = false;
29375      const t3 = { enable: () => {
29376        e3 = true;
29377      }, disable: () => {
29378        e3 = false;
29379      }, isEnabled: () => e3 };
29380      return z2 ? W2.forEach(((n3) => {
29381        t3[n3] = (...t4) => {
29382          e3 && G2((() => {
29383            $2.console[n3](`Sentry Logger [${n3}]:`, ...t4);
29384          }));
29385        };
29386      })) : W2.forEach(((e4) => {
29387        t3[e4] = () => {
29388        };
29389      })), t3;
29390    }));
29391    K2 = "?";
29392    Y2 = /\(error: (.*)\)/;
29393    X2 = /captureMessage|captureException/;
29394    ee2 = "<anonymous>";
29395    re2 = {};
29396    ie2 = {};
29397    ce2 = null;
29398    ue2 = null;
29399    fe2 = Object.prototype.toString;
29400    Te2 = $2;
29401    qe2 = (function() {
29402      const { performance: e3 } = $2;
29403      if (!e3 || !e3.now) return $e2;
29404      const t3 = Date.now() - e3.now(), n3 = null == e3.timeOrigin ? t3 : e3.timeOrigin;
29405      return () => (n3 + e3.now()) / 1e3;
29406    })();
29407    (() => {
29408      const { performance: e3 } = $2;
29409      if (!e3 || !e3.now) return;
29410      const t3 = 36e5, n3 = e3.now(), r3 = Date.now(), i3 = e3.timeOrigin ? Math.abs(e3.timeOrigin + n3 - r3) : t3, o3 = i3 < t3, s3 = e3.timing && e3.timing.navigationStart, a3 = "number" == typeof s3 ? Math.abs(s3 + n3 - r3) : t3;
29411      (o3 || a3 < t3) && (i3 <= a3 && e3.timeOrigin);
29412    })(), (function(e3) {
29413      e3[e3.PENDING = 0] = "PENDING";
29414      e3[e3.RESOLVED = 1] = "RESOLVED";
29415      e3[e3.REJECTED = 2] = "REJECTED";
29416    })(Ye2 || (Ye2 = {}));
29417    et2 = class _et {
29418      constructor(e3) {
29419        _et.prototype.__init.call(this), _et.prototype.__init2.call(this), _et.prototype.__init3.call(this), _et.prototype.__init4.call(this), this._state = Ye2.PENDING, this._handlers = [];
29420        try {
29421          e3(this._resolve, this._reject);
29422        } catch (e4) {
29423          this._reject(e4);
29424        }
29425      }
29426      then(e3, t3) {
29427        return new _et(((n3, r3) => {
29428          this._handlers.push([false, (t4) => {
29429            if (e3) try {
29430              n3(e3(t4));
29431            } catch (e4) {
29432              r3(e4);
29433            }
29434            else n3(t4);
29435          }, (e4) => {
29436            if (t3) try {
29437              n3(t3(e4));
29438            } catch (e5) {
29439              r3(e5);
29440            }
29441            else r3(e4);
29442          }]), this._executeHandlers();
29443        }));
29444      }
29445      catch(e3) {
29446        return this.then(((e4) => e4), e3);
29447      }
29448      finally(e3) {
29449        return new _et(((t3, n3) => {
29450          let r3, i3;
29451          return this.then(((t4) => {
29452            i3 = false, r3 = t4, e3 && e3();
29453          }), ((t4) => {
29454            i3 = true, r3 = t4, e3 && e3();
29455          })).then((() => {
29456            i3 ? n3(r3) : t3(r3);
29457          }));
29458        }));
29459      }
29460      __init() {
29461        this._resolve = (e3) => {
29462          this._setResult(Ye2.RESOLVED, e3);
29463        };
29464      }
29465      __init2() {
29466        this._reject = (e3) => {
29467          this._setResult(Ye2.REJECTED, e3);
29468        };
29469      }
29470      __init3() {
29471        this._setResult = (e3, t3) => {
29472          this._state === Ye2.PENDING && (Me2(t3) ? t3.then(this._resolve, this._reject) : (this._state = e3, this._value = t3, this._executeHandlers()));
29473        };
29474      }
29475      __init4() {
29476        this._executeHandlers = () => {
29477          if (this._state === Ye2.PENDING) return;
29478          const e3 = this._handlers.slice();
29479          this._handlers = [], e3.forEach(((e4) => {
29480            e4[0] || (this._state === Ye2.RESOLVED && e4[1](this._value), this._state === Ye2.REJECTED && e4[2](this._value), e4[0] = true);
29481          }));
29482        };
29483      }
29484    };
29485    st2 = "_sentrySpan";
29486    lt2 = class _lt {
29487      constructor() {
29488        this._notifyingListeners = false, this._scopeListeners = [], this._eventProcessors = [], this._breadcrumbs = [], this._attachments = [], this._user = {}, this._tags = {}, this._extra = {}, this._contexts = {}, this._sdkProcessingMetadata = {}, this._propagationContext = { traceId: rt2(), spanId: it2() };
29489      }
29490      clone() {
29491        const e3 = new _lt();
29492        return e3._breadcrumbs = [...this._breadcrumbs], e3._tags = { ...this._tags }, e3._extra = { ...this._extra }, e3._contexts = { ...this._contexts }, this._contexts.flags && (e3._contexts.flags = { values: [...this._contexts.flags.values] }), e3._user = this._user, e3._level = this._level, e3._session = this._session, e3._transactionName = this._transactionName, e3._fingerprint = this._fingerprint, e3._eventProcessors = [...this._eventProcessors], e3._requestSession = this._requestSession, e3._attachments = [...this._attachments], e3._sdkProcessingMetadata = { ...this._sdkProcessingMetadata }, e3._propagationContext = { ...this._propagationContext }, e3._client = this._client, e3._lastEventId = this._lastEventId, at2(e3, ct2(this)), e3;
29493      }
29494      setClient(e3) {
29495        this._client = e3;
29496      }
29497      setLastEventId(e3) {
29498        this._lastEventId = e3;
29499      }
29500      getClient() {
29501        return this._client;
29502      }
29503      lastEventId() {
29504        return this._lastEventId;
29505      }
29506      addScopeListener(e3) {
29507        this._scopeListeners.push(e3);
29508      }
29509      addEventProcessor(e3) {
29510        return this._eventProcessors.push(e3), this;
29511      }
29512      setUser(e3) {
29513        return this._user = e3 || { email: void 0, id: void 0, ip_address: void 0, username: void 0 }, this._session && nt2(this._session, { user: e3 }), this._notifyScopeListeners(), this;
29514      }
29515      getUser() {
29516        return this._user;
29517      }
29518      getRequestSession() {
29519        return this._requestSession;
29520      }
29521      setRequestSession(e3) {
29522        return this._requestSession = e3, this;
29523      }
29524      setTags(e3) {
29525        return this._tags = { ...this._tags, ...e3 }, this._notifyScopeListeners(), this;
29526      }
29527      setTag(e3, t3) {
29528        return this._tags = { ...this._tags, [e3]: t3 }, this._notifyScopeListeners(), this;
29529      }
29530      setExtras(e3) {
29531        return this._extra = { ...this._extra, ...e3 }, this._notifyScopeListeners(), this;
29532      }
29533      setExtra(e3, t3) {
29534        return this._extra = { ...this._extra, [e3]: t3 }, this._notifyScopeListeners(), this;
29535      }
29536      setFingerprint(e3) {
29537        return this._fingerprint = e3, this._notifyScopeListeners(), this;
29538      }
29539      setLevel(e3) {
29540        return this._level = e3, this._notifyScopeListeners(), this;
29541      }
29542      setTransactionName(e3) {
29543        return this._transactionName = e3, this._notifyScopeListeners(), this;
29544      }
29545      setContext(e3, t3) {
29546        return null === t3 ? delete this._contexts[e3] : this._contexts[e3] = t3, this._notifyScopeListeners(), this;
29547      }
29548      setSession(e3) {
29549        return e3 ? this._session = e3 : delete this._session, this._notifyScopeListeners(), this;
29550      }
29551      getSession() {
29552        return this._session;
29553      }
29554      update(e3) {
29555        if (!e3) return this;
29556        const t3 = "function" == typeof e3 ? e3(this) : e3, [n3, r3] = t3 instanceof ut2 ? [t3.getScopeData(), t3.getRequestSession()] : Se2(t3) ? [e3, e3.requestSession] : [], { tags: i3, extra: o3, user: s3, contexts: a3, level: c3, fingerprint: l3 = [], propagationContext: u3 } = n3 || {};
29557        return this._tags = { ...this._tags, ...i3 }, this._extra = { ...this._extra, ...o3 }, this._contexts = { ...this._contexts, ...a3 }, s3 && Object.keys(s3).length && (this._user = s3), c3 && (this._level = c3), l3.length && (this._fingerprint = l3), u3 && (this._propagationContext = u3), r3 && (this._requestSession = r3), this;
29558      }
29559      clear() {
29560        return this._breadcrumbs = [], this._tags = {}, this._extra = {}, this._user = {}, this._contexts = {}, this._level = void 0, this._transactionName = void 0, this._fingerprint = void 0, this._requestSession = void 0, this._session = void 0, at2(this, void 0), this._attachments = [], this.setPropagationContext({ traceId: rt2() }), this._notifyScopeListeners(), this;
29561      }
29562      addBreadcrumb(e3, t3) {
29563        const n3 = "number" == typeof t3 ? t3 : 100;
29564        if (n3 <= 0) return this;
29565        const r3 = { timestamp: $e2(), ...e3 };
29566        return this._breadcrumbs.push(r3), this._breadcrumbs.length > n3 && (this._breadcrumbs = this._breadcrumbs.slice(-n3), this._client && this._client.recordDroppedEvent("buffer_overflow", "log_item")), this._notifyScopeListeners(), this;
29567      }
29568      getLastBreadcrumb() {
29569        return this._breadcrumbs[this._breadcrumbs.length - 1];
29570      }
29571      clearBreadcrumbs() {
29572        return this._breadcrumbs = [], this._notifyScopeListeners(), this;
29573      }
29574      addAttachment(e3) {
29575        return this._attachments.push(e3), this;
29576      }
29577      clearAttachments() {
29578        return this._attachments = [], this;
29579      }
29580      getScopeData() {
29581        return { breadcrumbs: this._breadcrumbs, attachments: this._attachments, contexts: this._contexts, tags: this._tags, extra: this._extra, user: this._user, level: this._level, fingerprint: this._fingerprint || [], eventProcessors: this._eventProcessors, propagationContext: this._propagationContext, sdkProcessingMetadata: this._sdkProcessingMetadata, transactionName: this._transactionName, span: ct2(this) };
29582      }
29583      setSDKProcessingMetadata(e3) {
29584        return this._sdkProcessingMetadata = ot2(this._sdkProcessingMetadata, e3, 2), this;
29585      }
29586      setPropagationContext(e3) {
29587        return this._propagationContext = { spanId: it2(), ...e3 }, this;
29588      }
29589      getPropagationContext() {
29590        return this._propagationContext;
29591      }
29592      captureException(e3, t3) {
29593        const n3 = t3 && t3.event_id ? t3.event_id : ze2();
29594        if (!this._client) return Q2.warn("No client configured on scope - will not capture exception!"), n3;
29595        const r3 = new Error("Sentry syntheticException");
29596        return this._client.captureException(e3, { originalException: e3, syntheticException: r3, ...t3, event_id: n3 }, this), n3;
29597      }
29598      captureMessage(e3, t3, n3) {
29599        const r3 = n3 && n3.event_id ? n3.event_id : ze2();
29600        if (!this._client) return Q2.warn("No client configured on scope - will not capture message!"), r3;
29601        const i3 = new Error(e3);
29602        return this._client.captureMessage(e3, t3, { originalException: e3, syntheticException: i3, ...n3, event_id: r3 }, this), r3;
29603      }
29604      captureEvent(e3, t3) {
29605        const n3 = t3 && t3.event_id ? t3.event_id : ze2();
29606        return this._client ? (this._client.captureEvent(e3, { ...t3, event_id: n3 }, this), n3) : (Q2.warn("No client configured on scope - will not capture event!"), n3);
29607      }
29608      _notifyScopeListeners() {
29609        this._notifyingListeners || (this._notifyingListeners = true, this._scopeListeners.forEach(((e3) => {
29610          e3(this);
29611        })), this._notifyingListeners = false);
29612      }
29613    };
29614    ut2 = lt2;
29615    dt2 = class {
29616      constructor(e3, t3) {
29617        let n3, r3;
29618        n3 = e3 || new ut2(), r3 = t3 || new ut2(), this._stack = [{ scope: n3 }], this._isolationScope = r3;
29619      }
29620      withScope(e3) {
29621        const t3 = this._pushScope();
29622        let n3;
29623        try {
29624          n3 = e3(t3);
29625        } catch (e4) {
29626          throw this._popScope(), e4;
29627        }
29628        return Me2(n3) ? n3.then(((e4) => (this._popScope(), e4)), ((e4) => {
29629          throw this._popScope(), e4;
29630        })) : (this._popScope(), n3);
29631      }
29632      getClient() {
29633        return this.getStackTop().client;
29634      }
29635      getScope() {
29636        return this.getStackTop().scope;
29637      }
29638      getIsolationScope() {
29639        return this._isolationScope;
29640      }
29641      getStackTop() {
29642        return this._stack[this._stack.length - 1];
29643      }
29644      _pushScope() {
29645        const e3 = this.getScope().clone();
29646        return this._stack.push({ client: this.getClient(), scope: e3 }), e3;
29647      }
29648      _popScope() {
29649        return !(this._stack.length <= 1) && !!this._stack.pop();
29650      }
29651    };
29652    St2 = /^sentry-/;
29653    Ct2 = false;
29654    xt2 = "production";
29655    Nt2 = /^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)([\w.-]+)(?::(\d+))?\/(.+)/;
29656    Qt2 = { session: "session", sessions: "session", attachment: "attachment", transaction: "transaction", event: "error", client_report: "internal", user_report: "default", profile: "profile", profile_chunk: "profile", replay_event: "replay", replay_recording: "replay", check_in: "monitor", feedback: "feedback", span: "span", statsd: "metric_bucket", raw_security: "security" };
29657    ln2 = ["user", "level", "extra", "contexts", "tags", "fingerprint", "requestSession", "propagationContext"];
29658    gn2 = [];
29659    bn2 = class extends Error {
29660      constructor(e3, t3 = "warn") {
29661        super(e3), this.message = e3, this.logLevel = t3;
29662      }
29663    };
29664    _n2 = "Not capturing exception because it's already been captured.";
29665    wn2 = class {
29666      constructor(e3) {
29667        if (this._options = e3, this._integrations = {}, this._numProcessing = 0, this._outcomes = {}, this._hooks = {}, this._eventProcessors = [], e3.dsn ? this._dsn = Bt2(e3.dsn) : V2 && Q2.warn("No DSN provided, client will not send events."), this._dsn) {
29668          const t4 = vn2(this._dsn, e3.tunnel, e3._metadata ? e3._metadata.sdk : void 0);
29669          this._transport = e3.transport({ tunnel: this._options.tunnel, recordDroppedEvent: this.recordDroppedEvent.bind(this), ...e3.transportOptions, url: t4 });
29670        }
29671        const t3 = ["enableTracing", "tracesSampleRate", "tracesSampler"].find(((t4) => t4 in e3 && null == e3[t4]));
29672        t3 && G2((() => {
29673          console.warn(`[Sentry] Deprecation warning: \`${t3}\` is set to undefined, which leads to tracing being enabled. In v9, a value of \`undefined\` will result in tracing being disabled.`);
29674        }));
29675      }
29676      captureException(e3, t3, n3) {
29677        const r3 = ze2();
29678        if (Ke2(e3)) return V2 && Q2.log(_n2), r3;
29679        const i3 = { event_id: r3, ...t3 };
29680        return this._process(this.eventFromException(e3, i3).then(((e4) => this._captureEvent(e4, i3, n3)))), i3.event_id;
29681      }
29682      captureMessage(e3, t3, n3, r3) {
29683        const i3 = { event_id: ze2(), ...n3 }, o3 = _e2(e3) ? e3 : String(e3), s3 = we2(e3) ? this.eventFromMessage(o3, t3, i3) : this.eventFromException(e3, i3);
29684        return this._process(s3.then(((e4) => this._captureEvent(e4, i3, r3)))), i3.event_id;
29685      }
29686      captureEvent(e3, t3, n3) {
29687        const r3 = ze2();
29688        if (t3 && t3.originalException && Ke2(t3.originalException)) return V2 && Q2.log(_n2), r3;
29689        const i3 = { event_id: r3, ...t3 }, o3 = (e3.sdkProcessingMetadata || {}).capturedSpanScope;
29690        return this._process(this._captureEvent(e3, i3, o3 || n3)), i3.event_id;
29691      }
29692      captureSession(e3) {
29693        "string" != typeof e3.release ? V2 && Q2.warn("Discarded session because of missing or non-string release") : (this.sendSession(e3), nt2(e3, { init: false }));
29694      }
29695      getDsn() {
29696        return this._dsn;
29697      }
29698      getOptions() {
29699        return this._options;
29700      }
29701      getSdkMetadata() {
29702        return this._options._metadata;
29703      }
29704      getTransport() {
29705        return this._transport;
29706      }
29707      flush(e3) {
29708        const t3 = this._transport;
29709        return t3 ? (this.emit("flush"), this._isClientDoneProcessing(e3).then(((n3) => t3.flush(e3).then(((e4) => n3 && e4))))) : Xe2(true);
29710      }
29711      close(e3) {
29712        return this.flush(e3).then(((e4) => (this.getOptions().enabled = false, this.emit("close"), e4)));
29713      }
29714      getEventProcessors() {
29715        return this._eventProcessors;
29716      }
29717      addEventProcessor(e3) {
29718        this._eventProcessors.push(e3);
29719      }
29720      init() {
29721        (this._isEnabled() || this._options.integrations.some((({ name: e3 }) => e3.startsWith("Spotlight")))) && this._setupIntegrations();
29722      }
29723      getIntegrationByName(e3) {
29724        return this._integrations[e3];
29725      }
29726      addIntegration(e3) {
29727        const t3 = this._integrations[e3.name];
29728        yn2(this, e3, this._integrations), t3 || mn2(this, [e3]);
29729      }
29730      sendEvent(e3, t3 = {}) {
29731        this.emit("beforeSendEvent", e3, t3);
29732        let n3 = Xt2(e3, this._dsn, this._options._metadata, this._options.tunnel);
29733        for (const e4 of t3.attachments || []) n3 = qt2(n3, Gt2(e4));
29734        const r3 = this.sendEnvelope(n3);
29735        r3 && r3.then(((t4) => this.emit("afterSendEvent", e3, t4)), null);
29736      }
29737      sendSession(e3) {
29738        const t3 = (function(e4, t4, n3, r3) {
29739          const i3 = Yt2(n3);
29740          return $t2({ sent_at: (/* @__PURE__ */ new Date()).toISOString(), ...i3 && { sdk: i3 }, ...!!r3 && t4 && { dsn: Rt2(t4) } }, ["aggregates" in e4 ? [{ type: "sessions" }, e4] : [{ type: "session" }, e4.toJSON()]]);
29741        })(e3, this._dsn, this._options._metadata, this._options.tunnel);
29742        this.sendEnvelope(t3);
29743      }
29744      recordDroppedEvent(e3, t3, n3) {
29745        if (this._options.sendClientReports) {
29746          const r3 = "number" == typeof n3 ? n3 : 1, i3 = `${e3}:${t3}`;
29747          V2 && Q2.log(`Recording outcome: "${i3}"${r3 > 1 ? ` (${r3} times)` : ""}`), this._outcomes[i3] = (this._outcomes[i3] || 0) + r3;
29748        }
29749      }
29750      on(e3, t3) {
29751        const n3 = this._hooks[e3] = this._hooks[e3] || [];
29752        return n3.push(t3), () => {
29753          const e4 = n3.indexOf(t3);
29754          e4 > -1 && n3.splice(e4, 1);
29755        };
29756      }
29757      emit(e3, ...t3) {
29758        const n3 = this._hooks[e3];
29759        n3 && n3.forEach(((e4) => e4(...t3)));
29760      }
29761      sendEnvelope(e3) {
29762        return this.emit("beforeEnvelope", e3), this._isEnabled() && this._transport ? this._transport.send(e3).then(null, ((e4) => (V2 && Q2.error("Error while sending envelope:", e4), e4))) : (V2 && Q2.error("Transport disabled"), Xe2({}));
29763      }
29764      _setupIntegrations() {
29765        const { integrations: e3 } = this._options;
29766        this._integrations = (function(e4, t3) {
29767          const n3 = {};
29768          return t3.forEach(((t4) => {
29769            t4 && yn2(e4, t4, n3);
29770          })), n3;
29771        })(this, e3), mn2(this, e3);
29772      }
29773      _updateSessionFromEvent(e3, t3) {
29774        let n3 = "fatal" === t3.level, r3 = false;
29775        const i3 = t3.exception && t3.exception.values;
29776        if (i3) {
29777          r3 = true;
29778          for (const e4 of i3) {
29779            const t4 = e4.mechanism;
29780            if (t4 && false === t4.handled) {
29781              n3 = true;
29782              break;
29783            }
29784          }
29785        }
29786        const o3 = "ok" === e3.status;
29787        (o3 && 0 === e3.errors || o3 && n3) && (nt2(e3, { ...n3 && { status: "crashed" }, errors: e3.errors || Number(r3 || n3) }), this.captureSession(e3));
29788      }
29789      _isClientDoneProcessing(e3) {
29790        return new et2(((t3) => {
29791          let n3 = 0;
29792          const r3 = setInterval((() => {
29793            0 == this._numProcessing ? (clearInterval(r3), t3(true)) : (n3 += 1, e3 && n3 >= e3 && (clearInterval(r3), t3(false)));
29794          }), 1);
29795        }));
29796      }
29797      _isEnabled() {
29798        return false !== this.getOptions().enabled && void 0 !== this._transport;
29799      }
29800      _prepareEvent(e3, t3, n3 = mt2(), r3 = yt2()) {
29801        const i3 = this.getOptions(), o3 = Object.keys(this._integrations);
29802        return !t3.integrations && o3.length > 0 && (t3.integrations = o3), this.emit("preprocessEvent", e3, t3), e3.type || r3.setLastEventId(e3.event_id || t3.event_id), an2(i3, e3, t3, n3, this, r3).then(((e4) => {
29803          if (null === e4) return e4;
29804          e4.contexts = { trace: _t2(n3), ...e4.contexts };
29805          const t4 = (function(e5, t5) {
29806            const n4 = t5.getPropagationContext();
29807            return n4.dsc || Lt2(n4.traceId, e5);
29808          })(this, n3);
29809          return e4.sdkProcessingMetadata = { dynamicSamplingContext: t4, ...e4.sdkProcessingMetadata }, e4;
29810        }));
29811      }
29812      _captureEvent(e3, t3 = {}, n3) {
29813        return this._processEvent(e3, t3, n3).then(((e4) => e4.event_id), ((e4) => {
29814          V2 && (e4 instanceof bn2 && "log" === e4.logLevel ? Q2.log(e4.message) : Q2.warn(e4));
29815        }));
29816      }
29817      _processEvent(e3, t3, n3) {
29818        const r3 = this.getOptions(), { sampleRate: i3 } = r3, o3 = kn2(e3), s3 = Sn2(e3), a3 = e3.type || "error", c3 = `before send for type \`${a3}\``, l3 = void 0 === i3 ? void 0 : (function(e4) {
29819          if ("boolean" == typeof e4) return Number(e4);
29820          const t4 = "string" == typeof e4 ? parseFloat(e4) : e4;
29821          if (!("number" != typeof t4 || isNaN(t4) || t4 < 0 || t4 > 1)) return t4;
29822          V2 && Q2.warn(`[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(e4)} of type ${JSON.stringify(typeof e4)}.`);
29823        })(i3);
29824        if (s3 && "number" == typeof l3 && Math.random() > l3) return this.recordDroppedEvent("sample_rate", "error", e3), Ze2(new bn2(`Discarding event because it's not included in the random sample (sampling rate = ${i3})`, "log"));
29825        const u3 = "replay_event" === a3 ? "replay" : a3, d3 = (e3.sdkProcessingMetadata || {}).capturedSpanIsolationScope;
29826        return this._prepareEvent(e3, t3, n3, d3).then(((n4) => {
29827          if (null === n4) throw this.recordDroppedEvent("event_processor", u3, e3), new bn2("An event processor returned `null`, will not send event.", "log");
29828          if (t3.data && true === t3.data.__sentry__) return n4;
29829          const i4 = (function(e4, t4, n5, r4) {
29830            const { beforeSend: i5, beforeSendTransaction: o4, beforeSendSpan: s4 } = t4;
29831            if (Sn2(n5) && i5) return i5(n5, r4);
29832            if (kn2(n5)) {
29833              if (n5.spans && s4) {
29834                const t5 = [];
29835                for (const r5 of n5.spans) {
29836                  const n6 = s4(r5);
29837                  n6 ? t5.push(n6) : (It2(), e4.recordDroppedEvent("before_send", "span"));
29838                }
29839                n5.spans = t5;
29840              }
29841              if (o4) {
29842                if (n5.spans) {
29843                  const e5 = n5.spans.length;
29844                  n5.sdkProcessingMetadata = { ...n5.sdkProcessingMetadata, spanCountBeforeProcessing: e5 };
29845                }
29846                return o4(n5, r4);
29847              }
29848            }
29849            return n5;
29850          })(this, r3, n4, t3);
29851          return (function(e4, t4) {
29852            const n5 = `${t4} must return \`null\` or a valid event.`;
29853            if (Me2(e4)) return e4.then(((e5) => {
29854              if (!Se2(e5) && null !== e5) throw new bn2(n5);
29855              return e5;
29856            }), ((e5) => {
29857              throw new bn2(`${t4} rejected with ${e5}`);
29858            }));
29859            if (!Se2(e4) && null !== e4) throw new bn2(n5);
29860            return e4;
29861          })(i4, c3);
29862        })).then(((r4) => {
29863          if (null === r4) {
29864            if (this.recordDroppedEvent("before_send", u3, e3), o3) {
29865              const t4 = 1 + (e3.spans || []).length;
29866              this.recordDroppedEvent("before_send", "span", t4);
29867            }
29868            throw new bn2(`${c3} returned \`null\`, will not send event.`, "log");
29869          }
29870          const i4 = n3 && n3.getSession();
29871          if (!o3 && i4 && this._updateSessionFromEvent(i4, r4), o3) {
29872            const e4 = (r4.sdkProcessingMetadata && r4.sdkProcessingMetadata.spanCountBeforeProcessing || 0) - (r4.spans ? r4.spans.length : 0);
29873            e4 > 0 && this.recordDroppedEvent("before_send", "span", e4);
29874          }
29875          const s4 = r4.transaction_info;
29876          if (o3 && s4 && r4.transaction !== e3.transaction) {
29877            const e4 = "custom";
29878            r4.transaction_info = { ...s4, source: e4 };
29879          }
29880          return this.sendEvent(r4, t3), r4;
29881        })).then(null, ((e4) => {
29882          if (e4 instanceof bn2) throw e4;
29883          throw this.captureException(e4, { data: { __sentry__: true }, originalException: e4 }), new bn2(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.
29884Reason: ${e4}`);
29885        }));
29886      }
29887      _process(e3) {
29888        this._numProcessing++, e3.then(((e4) => (this._numProcessing--, e4)), ((e4) => (this._numProcessing--, e4)));
29889      }
29890      _clearOutcomes() {
29891        const e3 = this._outcomes;
29892        return this._outcomes = {}, Object.entries(e3).map((([e4, t3]) => {
29893          const [n3, r3] = e4.split(":");
29894          return { reason: n3, category: r3, quantity: t3 };
29895        }));
29896      }
29897      _flushOutcomes() {
29898        V2 && Q2.log("Flushing outcomes...");
29899        const e3 = this._clearOutcomes();
29900        if (0 === e3.length) return void (V2 && Q2.log("No outcomes to send"));
29901        if (!this._dsn) return void (V2 && Q2.log("No dsn provided, will not send outcomes"));
29902        V2 && Q2.log("Sending outcomes:", e3);
29903        const t3 = (n3 = e3, $t2((r3 = this._options.tunnel && Rt2(this._dsn)) ? { dsn: r3 } : {}, [[{ type: "client_report" }, { timestamp: i3 || $e2(), discarded_events: n3 }]]));
29904        var n3, r3, i3;
29905        this.sendEnvelope(t3);
29906      }
29907    };
29908    On2 = 100;
29909    jn2 = /* @__PURE__ */ new WeakMap();
29910    In2 = () => ({ name: "FunctionToString", setupOnce() {
29911      An2 = Function.prototype.toString;
29912      try {
29913        Function.prototype.toString = function(...e3) {
29914          const t3 = Re2(this), n3 = jn2.has(bt2()) && void 0 !== t3 ? t3 : this;
29915          return An2.apply(n3, e3);
29916        };
29917      } catch (e3) {
29918      }
29919    }, setup(e3) {
29920      jn2.set(e3, true);
29921    } });
29922    xn2 = [/^Script error\.?$/, /^Javascript error: Script error\.? on line 0$/, /^ResizeObserver loop completed with undelivered notifications.$/, /^Cannot redefine property: googletag$/, "undefined is not an object (evaluating 'a.L')", `can't redefine non-configurable property "solana"`, "vv().getRestrictions is not a function. (In 'vv().getRestrictions(1,a)', 'vv().getRestrictions' is undefined)", "Can't find variable: _AutofillCallbackHandler", /^Non-Error promise rejection captured with value: Object Not Found Matching Id:\d+, MethodName:simulateEvent, ParamCount:\d+$/];
29923    Ln2 = (e3 = {}) => ({ name: "InboundFilters", processEvent(t3, n3, r3) {
29924      const i3 = r3.getOptions(), o3 = (function(e4 = {}, t4 = {}) {
29925        return { allowUrls: [...e4.allowUrls || [], ...t4.allowUrls || []], denyUrls: [...e4.denyUrls || [], ...t4.denyUrls || []], ignoreErrors: [...e4.ignoreErrors || [], ...t4.ignoreErrors || [], ...e4.disableErrorDefaults ? [] : xn2], ignoreTransactions: [...e4.ignoreTransactions || [], ...t4.ignoreTransactions || []], ignoreInternal: void 0 === e4.ignoreInternal || e4.ignoreInternal };
29926      })(e3, i3);
29927      return (function(e4, t4) {
29928        if (t4.ignoreInternal && (function(e5) {
29929          try {
29930            return "SentryError" === e5.exception.values[0].type;
29931          } catch (e6) {
29932          }
29933          return false;
29934        })(e4)) return V2 && Q2.warn(`Event dropped due to being internal Sentry Error.
29935Event: ${He2(e4)}`), true;
29936        if ((function(e5, t5) {
29937          if (e5.type || !t5 || !t5.length) return false;
29938          return (function(e6) {
29939            const t6 = [];
29940            e6.message && t6.push(e6.message);
29941            let n4;
29942            try {
29943              n4 = e6.exception.values[e6.exception.values.length - 1];
29944            } catch (e7) {
29945            }
29946            n4 && n4.value && (t6.push(n4.value), n4.type && t6.push(`${n4.type}: ${n4.value}`));
29947            return t6;
29948          })(e5).some(((e6) => xe2(e6, t5)));
29949        })(e4, t4.ignoreErrors)) return V2 && Q2.warn(`Event dropped due to being matched by \`ignoreErrors\` option.
29950Event: ${He2(e4)}`), true;
29951        if ((function(e5) {
29952          if (e5.type) return false;
29953          if (!e5.exception || !e5.exception.values || 0 === e5.exception.values.length) return false;
29954          return !e5.message && !e5.exception.values.some(((e6) => e6.stacktrace || e6.type && "Error" !== e6.type || e6.value));
29955        })(e4)) return V2 && Q2.warn(`Event dropped due to not having an error message, error type or stacktrace.
29956Event: ${He2(e4)}`), true;
29957        if ((function(e5, t5) {
29958          if ("transaction" !== e5.type || !t5 || !t5.length) return false;
29959          const n4 = e5.transaction;
29960          return !!n4 && xe2(n4, t5);
29961        })(e4, t4.ignoreTransactions)) return V2 && Q2.warn(`Event dropped due to being matched by \`ignoreTransactions\` option.
29962Event: ${He2(e4)}`), true;
29963        if ((function(e5, t5) {
29964          if (!t5 || !t5.length) return false;
29965          const n4 = Dn2(e5);
29966          return !!n4 && xe2(n4, t5);
29967        })(e4, t4.denyUrls)) return V2 && Q2.warn(`Event dropped due to being matched by \`denyUrls\` option.
29968Event: ${He2(e4)}.
29969Url: ${Dn2(e4)}`), true;
29970        if (!(function(e5, t5) {
29971          if (!t5 || !t5.length) return true;
29972          const n4 = Dn2(e5);
29973          return !n4 || xe2(n4, t5);
29974        })(e4, t4.allowUrls)) return V2 && Q2.warn(`Event dropped due to not being matched by \`allowUrls\` option.
29975Event: ${He2(e4)}.
29976Url: ${Dn2(e4)}`), true;
29977        return false;
29978      })(t3, o3) ? null : t3;
29979    } });
29980    $n2 = () => {
29981      let e3;
29982      return { name: "Dedupe", processEvent(t3) {
29983        if (t3.type) return t3;
29984        try {
29985          if ((function(e4, t4) {
29986            if (!t4) return false;
29987            if ((function(e5, t5) {
29988              const n3 = e5.message, r3 = t5.message;
29989              if (!n3 && !r3) return false;
29990              if (n3 && !r3 || !n3 && r3) return false;
29991              if (n3 !== r3) return false;
29992              if (!zn2(e5, t5)) return false;
29993              if (!qn2(e5, t5)) return false;
29994              return true;
29995            })(e4, t4)) return true;
29996            if ((function(e5, t5) {
29997              const n3 = Wn2(t5), r3 = Wn2(e5);
29998              if (!n3 || !r3) return false;
29999              if (n3.type !== r3.type || n3.value !== r3.value) return false;
30000              if (!zn2(e5, t5)) return false;
30001              if (!qn2(e5, t5)) return false;
30002              return true;
30003            })(e4, t4)) return true;
30004            return false;
30005          })(t3, e3)) return V2 && Q2.warn("Event dropped due to being a duplicate of previously captured event."), null;
30006        } catch (e4) {
30007        }
30008        return e3 = t3;
30009      } };
30010    };
30011    Gn2 = $2;
30012    er2 = $2;
30013    tr2 = $2;
30014    nr2 = 0;
30015    or2 = "undefined" == typeof __SENTRY_DEBUG__ || __SENTRY_DEBUG__;
30016    ur2 = /Minified React error #\d+;/i;
30017    mr2 = class extends wn2 {
30018      constructor(e3) {
30019        const t3 = { parentSpanIsAlwaysRootSpan: true, ...e3 };
30020        !(function(e4, t4, n3 = [t4], r3 = "npm") {
30021          const i3 = e4._metadata || {};
30022          i3.sdk || (i3.sdk = { name: `sentry.javascript.${t4}`, packages: n3.map(((e5) => ({ name: `${r3}:@sentry/${e5}`, version: J2 }))), version: J2 }), e4._metadata = i3;
30023        })(t3, "browser", ["browser"], tr2.SENTRY_SDK_SOURCE || "npm"), super(t3), t3.sendClientReports && tr2.document && tr2.document.addEventListener("visibilitychange", (() => {
30024          "hidden" === tr2.document.visibilityState && this._flushOutcomes();
30025        }));
30026      }
30027      eventFromException(e3, t3) {
30028        return (function(e4, t4, n3, r3) {
30029          const i3 = fr2(e4, t4, n3 && n3.syntheticException || void 0, r3);
30030          return Qe2(i3), i3.level = "error", n3 && n3.event_id && (i3.event_id = n3.event_id), Xe2(i3);
30031        })(this._options.stackParser, e3, t3, this._options.attachStacktrace);
30032      }
30033      eventFromMessage(e3, t3 = "info", n3) {
30034        return (function(e4, t4, n4 = "info", r3, i3) {
30035          const o3 = vr2(e4, t4, r3 && r3.syntheticException || void 0, i3);
30036          return o3.level = n4, r3 && r3.event_id && (o3.event_id = r3.event_id), Xe2(o3);
30037        })(this._options.stackParser, e3, t3, n3, this._options.attachStacktrace);
30038      }
30039      captureUserFeedback(e3) {
30040        if (!this._isEnabled()) return void (or2 && Q2.warn("SDK not enabled, will not capture user feedback."));
30041        const t3 = (function(e4, { metadata: t4, tunnel: n3, dsn: r3 }) {
30042          const i3 = { event_id: e4.event_id, sent_at: (/* @__PURE__ */ new Date()).toISOString(), ...t4 && t4.sdk && { sdk: { name: t4.sdk.name, version: t4.sdk.version } }, ...!!n3 && !!r3 && { dsn: Rt2(r3) } }, o3 = /* @__PURE__ */ (function(e5) {
30043            return [{ type: "user_report" }, e5];
30044          })(e4);
30045          return $t2(i3, [o3]);
30046        })(e3, { metadata: this.getSdkMetadata(), dsn: this.getDsn(), tunnel: this.getOptions().tunnel });
30047        this.sendEnvelope(t3);
30048      }
30049      _prepareEvent(e3, t3, n3) {
30050        return e3.platform = e3.platform || "javascript", super._prepareEvent(e3, t3, n3);
30051      }
30052    };
30053    yr2 = "undefined" == typeof __SENTRY_DEBUG__ || __SENTRY_DEBUG__;
30054    br2 = $2;
30055    Or2 = {};
30056    Ar2 = "__sentry_xhr_v3__";
30057    Lr2 = /^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i;
30058    Dr2 = /^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i;
30059    Nr2 = /\((\S*)(?::(\d+))(?::(\d+))\)/;
30060    Rr2 = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i;
30061    Fr2 = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
30062    Br2 = (function(...e3) {
30063      const t3 = e3.sort(((e4, t4) => e4[0] - t4[0])).map(((e4) => e4[1]));
30064      return (e4, n3 = 0, r3 = 0) => {
30065        const i3 = [], o3 = e4.split("\n");
30066        for (let e5 = n3; e5 < o3.length; e5++) {
30067          const n4 = o3[e5];
30068          if (n4.length > 1024) continue;
30069          const s3 = Y2.test(n4) ? n4.replace(Y2, "$1") : n4;
30070          if (!s3.match(/\S*Error: /)) {
30071            for (const e6 of t3) {
30072              const t4 = e6(s3);
30073              if (t4) {
30074                i3.push(t4);
30075                break;
30076              }
30077            }
30078            if (i3.length >= 50 + r3) break;
30079          }
30080        }
30081        return (function(e5) {
30082          if (!e5.length) return [];
30083          const t4 = Array.from(e5);
30084          /sentryWrapped/.test(Z2(t4).function || "") && t4.pop();
30085          t4.reverse(), X2.test(Z2(t4).function || "") && (t4.pop(), X2.test(Z2(t4).function || "") && t4.pop());
30086          return t4.slice(0, 50).map(((e6) => ({ ...e6, filename: e6.filename || Z2(t4).filename, function: e6.function || K2 })));
30087        })(i3.slice(r3));
30088      };
30089    })(...[[30, (e3) => {
30090      const t3 = Lr2.exec(e3);
30091      if (t3) {
30092        const [, e4, n4, r3] = t3;
30093        return xr2(e4, K2, +n4, +r3);
30094      }
30095      const n3 = Dr2.exec(e3);
30096      if (n3) {
30097        if (n3[2] && 0 === n3[2].indexOf("eval")) {
30098          const e5 = Nr2.exec(n3[2]);
30099          e5 && (n3[2] = e5[1], n3[3] = e5[2], n3[4] = e5[3]);
30100        }
30101        const [e4, t4] = Ur2(n3[1] || K2, n3[2]);
30102        return xr2(t4, e4, n3[3] ? +n3[3] : void 0, n3[4] ? +n3[4] : void 0);
30103      }
30104    }], [50, (e3) => {
30105      const t3 = Rr2.exec(e3);
30106      if (t3) {
30107        if (t3[3] && t3[3].indexOf(" > eval") > -1) {
30108          const e5 = Fr2.exec(t3[3]);
30109          e5 && (t3[1] = t3[1] || "eval", t3[3] = e5[1], t3[4] = e5[2], t3[5] = "");
30110        }
30111        let e4 = t3[3], n3 = t3[1] || K2;
30112        return [n3, e4] = Ur2(n3, e4), xr2(e4, n3, t3[4] ? +t3[4] : void 0, t3[5] ? +t3[5] : void 0);
30113      }
30114    }]]);
30115    Ur2 = (e3, t3) => {
30116      const n3 = -1 !== e3.indexOf("safari-extension"), r3 = -1 !== e3.indexOf("safari-web-extension");
30117      return n3 || r3 ? [-1 !== e3.indexOf("@") ? e3.split("@")[0] : K2, n3 ? `safari-extension:${t3}` : `safari-web-extension:${t3}`] : [e3, t3];
30118    };
30119    Vr2 = 1024;
30120    Jr2 = (e3 = {}) => {
30121      const t3 = { console: true, dom: true, fetch: true, history: true, sentry: true, xhr: true, ...e3 };
30122      return { name: "Breadcrumbs", setup(e4) {
30123        var n3;
30124        t3.console && (function(e5) {
30125          const t4 = "console";
30126          oe2(t4, e5), se2(t4, Vn2);
30127        })(/* @__PURE__ */ (function(e5) {
30128          return function(t4) {
30129            if (bt2() !== e5) return;
30130            const n4 = { category: "console", data: { arguments: t4.args, logger: "console" }, level: Jn2(t4.level), message: je2(t4.args, " ") };
30131            if ("assert" === t4.level) {
30132              if (false !== t4.args[0]) return;
30133              n4.message = `Assertion failed: ${je2(t4.args.slice(1), " ") || "console.assert"}`, n4.data.arguments = t4.args.slice(1);
30134            }
30135            Pn2(n4, { input: t4.args, level: t4.level });
30136          };
30137        })(e4)), t3.dom && (n3 = /* @__PURE__ */ (function(e5, t4) {
30138          return function(n4) {
30139            if (bt2() !== e5) return;
30140            let r3, i3, o3 = "object" == typeof t4 ? t4.serializeAttribute : void 0, s3 = "object" == typeof t4 && "number" == typeof t4.maxStringLength ? t4.maxStringLength : void 0;
30141            s3 && s3 > Vr2 && (or2 && Q2.warn(`\`dom.maxStringLength\` cannot exceed 1024, but a value of ${s3} was configured. Sentry will use 1024 instead.`), s3 = Vr2), "string" == typeof o3 && (o3 = [o3]);
30142            try {
30143              const e6 = n4.event, t5 = (function(e7) {
30144                return !!e7 && !!e7.target;
30145              })(e6) ? e6.target : e6;
30146              r3 = Oe2(t5, { keyAttrs: o3, maxStringLength: s3 }), i3 = (function(e7) {
30147                if (!Te2.HTMLElement) return null;
30148                let t6 = e7;
30149                for (let e8 = 0; e8 < 5; e8++) {
30150                  if (!t6) return null;
30151                  if (t6 instanceof HTMLElement) {
30152                    if (t6.dataset.sentryComponent) return t6.dataset.sentryComponent;
30153                    if (t6.dataset.sentryElement) return t6.dataset.sentryElement;
30154                  }
30155                  t6 = t6.parentNode;
30156                }
30157                return null;
30158              })(t5);
30159            } catch (e6) {
30160              r3 = "<unknown>";
30161            }
30162            if (0 === r3.length) return;
30163            const a3 = { category: `ui.${n4.name}`, message: r3 };
30164            i3 && (a3.data = { "ui.component_name": i3 }), Pn2(a3, { event: n4.event, name: n4.name, global: n4.global });
30165          };
30166        })(e4, t3.dom), oe2("dom", n3), se2("dom", Mr2)), t3.xhr && (function(e5) {
30167          oe2("xhr", e5), se2("xhr", jr2);
30168        })(/* @__PURE__ */ (function(e5) {
30169          return function(t4) {
30170            if (bt2() !== e5) return;
30171            const { startTimestamp: n4, endTimestamp: r3 } = t4, i3 = t4.xhr[Ar2];
30172            if (!n4 || !r3 || !i3) return;
30173            const { method: o3, url: s3, status_code: a3, body: c3 } = i3, l3 = { method: o3, url: s3, status_code: a3 }, u3 = { xhr: t4.xhr, input: c3, startTimestamp: n4, endTimestamp: r3 };
30174            Pn2({ category: "xhr", data: l3, type: "http", level: Hn2(a3) }, u3);
30175          };
30176        })(e4)), t3.fetch && Yn2(/* @__PURE__ */ (function(e5) {
30177          return function(t4) {
30178            if (bt2() !== e5) return;
30179            const { startTimestamp: n4, endTimestamp: r3 } = t4;
30180            if (r3 && (!t4.fetchData.url.match(/sentry_key/) || "POST" !== t4.fetchData.method)) if (t4.error) {
30181              Pn2({ category: "fetch", data: t4.fetchData, level: "error", type: "http" }, { data: t4.error, input: t4.args, startTimestamp: n4, endTimestamp: r3 });
30182            } else {
30183              const e6 = t4.response, i3 = { ...t4.fetchData, status_code: e6 && e6.status }, o3 = { input: t4.args, response: e6, startTimestamp: n4, endTimestamp: r3 };
30184              Pn2({ category: "fetch", data: i3, type: "http", level: Hn2(i3.status_code) }, o3);
30185            }
30186          };
30187        })(e4)), t3.history && Er2(/* @__PURE__ */ (function(e5) {
30188          return function(t4) {
30189            if (bt2() !== e5) return;
30190            let n4 = t4.from, r3 = t4.to;
30191            const i3 = Un2(tr2.location.href);
30192            let o3 = n4 ? Un2(n4) : void 0;
30193            const s3 = Un2(r3);
30194            o3 && o3.path || (o3 = i3), i3.protocol === s3.protocol && i3.host === s3.host && (r3 = s3.relative), i3.protocol === o3.protocol && i3.host === o3.host && (n4 = o3.relative), Pn2({ category: "navigation", data: { from: n4, to: r3 } });
30195          };
30196        })(e4)), t3.sentry && e4.on("beforeSendEvent", /* @__PURE__ */ (function(e5) {
30197          return function(t4) {
30198            bt2() === e5 && Pn2({ category: "sentry." + ("transaction" === t4.type ? "transaction" : "event"), event_id: t4.event_id, level: t4.level, message: He2(t4) }, { event: t4 });
30199          };
30200        })(e4));
30201      } };
30202    };
30203    $r2 = ["EventTarget", "Window", "Node", "ApplicationCache", "AudioTrackList", "BroadcastChannel", "ChannelMergerNode", "CryptoOperation", "EventSource", "FileReader", "HTMLUnknownElement", "IDBDatabase", "IDBRequest", "IDBTransaction", "KeyOperation", "MediaController", "MessagePort", "ModalWindow", "Notification", "SVGElementInstance", "Screen", "SharedWorker", "TextTrack", "TextTrackCue", "TextTrackList", "WebSocket", "WebSocketWorker", "Worker", "XMLHttpRequest", "XMLHttpRequestEventTarget", "XMLHttpRequestUpload"];
30204    qr2 = (e3 = {}) => {
30205      const t3 = { XMLHttpRequest: true, eventTarget: true, requestAnimationFrame: true, setInterval: true, setTimeout: true, ...e3 };
30206      return { name: "BrowserApiErrors", setupOnce() {
30207        t3.setTimeout && Le2(tr2, "setTimeout", zr2), t3.setInterval && Le2(tr2, "setInterval", zr2), t3.requestAnimationFrame && Le2(tr2, "requestAnimationFrame", Wr2), t3.XMLHttpRequest && "XMLHttpRequest" in tr2 && Le2(XMLHttpRequest.prototype, "send", Hr2);
30208        const e4 = t3.eventTarget;
30209        if (e4) {
30210          (Array.isArray(e4) ? e4 : $r2).forEach(Gr2);
30211        }
30212      } };
30213    };
30214    Qr2 = () => ({ name: "BrowserSession", setupOnce() {
30215      void 0 !== tr2.document ? (dn2({ ignoreDuration: true }), fn2(), Er2((({ from: e3, to: t3 }) => {
30216        void 0 !== e3 && e3 !== t3 && (dn2({ ignoreDuration: true }), fn2());
30217      }))) : or2 && Q2.warn("Using the `browserSessionIntegration` in non-browser environments is not supported.");
30218    } });
30219    Kr2 = (e3 = {}) => {
30220      const t3 = { onerror: true, onunhandledrejection: true, ...e3 };
30221      return { name: "GlobalHandlers", setupOnce() {
30222        Error.stackTraceLimit = 50;
30223      }, setup(e4) {
30224        t3.onerror && (!(function(e5) {
30225          !(function(e6) {
30226            const t4 = "error";
30227            oe2(t4, e6), se2(t4, le2);
30228          })(((t4) => {
30229            const { stackParser: n3, attachStacktrace: r3 } = Xr2();
30230            if (bt2() !== e5 || rr2()) return;
30231            const { msg: i3, url: o3, line: s3, column: a3, error: c3 } = t4, l3 = (function(e6, t5, n4, r4) {
30232              const i4 = e6.exception = e6.exception || {}, o4 = i4.values = i4.values || [], s4 = o4[0] = o4[0] || {}, a4 = s4.stacktrace = s4.stacktrace || {}, c4 = a4.frames = a4.frames || [], l4 = r4, u3 = n4, d3 = be2(t5) && t5.length > 0 ? t5 : (function() {
30233                try {
30234                  return Te2.document.location.href;
30235                } catch (e7) {
30236                  return "";
30237                }
30238              })();
30239              0 === c4.length && c4.push({ colno: l4, filename: d3, function: K2, in_app: true, lineno: u3 });
30240              return e6;
30241            })(fr2(n3, c3 || i3, void 0, r3, false), o3, s3, a3);
30242            l3.level = "error", un2(l3, { originalException: c3, mechanism: { handled: false, type: "onerror" } });
30243          }));
30244        })(e4), Yr2("onerror")), t3.onunhandledrejection && (!(function(e5) {
30245          !(function(e6) {
30246            const t4 = "unhandledrejection";
30247            oe2(t4, e6), se2(t4, de2);
30248          })(((t4) => {
30249            const { stackParser: n3, attachStacktrace: r3 } = Xr2();
30250            if (bt2() !== e5 || rr2()) return;
30251            const i3 = (function(e6) {
30252              if (we2(e6)) return e6;
30253              try {
30254                if ("reason" in e6) return e6.reason;
30255                if ("detail" in e6 && "reason" in e6.detail) return e6.detail.reason;
30256              } catch (e7) {
30257              }
30258              return e6;
30259            })(t4), o3 = we2(i3) ? { exception: { values: [{ type: "UnhandledRejection", value: `Non-Error promise rejection captured with value: ${String(i3)}` }] } } : fr2(n3, i3, void 0, r3, true);
30260            o3.level = "error", un2(o3, { originalException: i3, mechanism: { handled: false, type: "onunhandledrejection" } });
30261          }));
30262        })(e4), Yr2("onunhandledrejection"));
30263      } };
30264    };
30265    Zr2 = () => ({ name: "HttpContext", preprocessEvent(e3) {
30266      if (!tr2.navigator && !tr2.location && !tr2.document) return;
30267      const t3 = e3.request && e3.request.url || tr2.location && tr2.location.href, { referrer: n3 } = tr2.document || {}, { userAgent: r3 } = tr2.navigator || {}, i3 = { ...e3.request && e3.request.headers, ...n3 && { Referer: n3 }, ...r3 && { "User-Agent": r3 } }, o3 = { ...e3.request, ...t3 && { url: t3 }, headers: i3 };
30268      e3.request = o3;
30269    } });
30270    ei2 = (e3 = {}) => {
30271      const t3 = e3.limit || 5, n3 = e3.key || "cause";
30272      return { name: "LinkedErrors", preprocessEvent(e4, r3, i3) {
30273        const o3 = i3.getOptions();
30274        Nn2(sr2, o3.stackParser, o3.maxValueLength, n3, t3, e4, r3);
30275      } };
30276    };
30277    ti2 = "new";
30278    ni2 = "loading";
30279    ri2 = "loaded";
30280    ii2 = "joining-meeting";
30281    oi2 = "joined-meeting";
30282    si2 = "left-meeting";
30283    ai2 = "error";
30284    ci2 = "blocked";
30285    li2 = "off";
30286    ui2 = "sendable";
30287    di2 = "loading";
30288    pi2 = "interrupted";
30289    hi2 = "playable";
30290    fi2 = "unknown";
30291    vi2 = "full";
30292    gi2 = "lobby";
30293    mi2 = "none";
30294    yi2 = "base";
30295    bi2 = "*";
30296    _i2 = "ejected";
30297    wi2 = "nbf-room";
30298    Si2 = "nbf-token";
30299    ki2 = "exp-room";
30300    Mi2 = "exp-token";
30301    Ci2 = "no-room";
30302    Ei2 = "meeting-full";
30303    Ti2 = "end-of-life";
30304    Oi2 = "not-allowed";
30305    Pi2 = "connection-error";
30306    Ai2 = "cam-in-use";
30307    ji2 = "mic-in-use";
30308    Ii2 = "cam-mic-in-use";
30309    xi2 = "permissions";
30310    Li2 = "undefined-mediadevices";
30311    Di2 = "not-found";
30312    Ni2 = "constraints";
30313    Ri2 = "unknown";
30314    Fi2 = "iframe-ready-for-launch-config";
30315    Bi2 = "iframe-launch-config";
30316    Ui2 = "theme-updated";
30317    Vi2 = "loading";
30318    Ji2 = "load-attempt-failed";
30319    $i2 = "loaded";
30320    qi2 = "started-camera";
30321    zi2 = "camera-error";
30322    Wi2 = "joining-meeting";
30323    Hi2 = "joined-meeting";
30324    Gi2 = "left-meeting";
30325    Qi2 = "participant-joined";
30326    Ki2 = "participant-updated";
30327    Yi2 = "participant-left";
30328    Xi2 = "participant-counts-updated";
30329    Zi2 = "access-state-updated";
30330    eo2 = "meeting-session-summary-updated";
30331    to2 = "meeting-session-state-updated";
30332    no2 = "meeting-session-data-error";
30333    ro2 = "waiting-participant-added";
30334    io2 = "waiting-participant-updated";
30335    oo2 = "waiting-participant-removed";
30336    so2 = "track-started";
30337    ao2 = "track-stopped";
30338    co2 = "transcription-started";
30339    lo2 = "transcription-stopped";
30340    uo2 = "transcription-error";
30341    po2 = "recording-started";
30342    ho2 = "recording-stopped";
30343    fo2 = "recording-stats";
30344    vo2 = "recording-error";
30345    go2 = "recording-upload-completed";
30346    mo2 = "recording-data";
30347    yo2 = "app-message";
30348    bo2 = "transcription-message";
30349    _o2 = "remote-media-player-started";
30350    wo2 = "remote-media-player-updated";
30351    So2 = "remote-media-player-stopped";
30352    ko2 = "local-screen-share-started";
30353    Mo2 = "local-screen-share-stopped";
30354    Co2 = "local-screen-share-canceled";
30355    Eo2 = "active-speaker-change";
30356    To2 = "active-speaker-mode-change";
30357    Oo2 = "network-quality-change";
30358    Po2 = "network-connection";
30359    Ao2 = "cpu-load-change";
30360    jo2 = "face-counts-updated";
30361    Io2 = "fullscreen";
30362    xo2 = "exited-fullscreen";
30363    Lo2 = "live-streaming-started";
30364    Do2 = "live-streaming-updated";
30365    No2 = "live-streaming-stopped";
30366    Ro2 = "live-streaming-error";
30367    Fo2 = "lang-updated";
30368    Bo2 = "receive-settings-updated";
30369    Uo2 = "input-settings-updated";
30370    Vo2 = "nonfatal-error";
30371    Jo2 = "error";
30372    $o2 = 4096;
30373    qo2 = 102400;
30374    zo2 = "iframe-call-message";
30375    Wo2 = "local-screen-start";
30376    Ho2 = "daily-method-update-live-streaming-endpoints";
30377    Go2 = "transmit-log";
30378    Qo2 = "daily-custom-track";
30379    Ko2 = { NONE: "none", BGBLUR: "background-blur", BGIMAGE: "background-image", FACE_DETECTION: "face-detection" };
30380    Yo2 = { NONE: "none", NOISE_CANCELLATION: "noise-cancellation" };
30381    Xo2 = { PLAY: "play", PAUSE: "pause" };
30382    Zo2 = ["jpg", "png", "jpeg"];
30383    es2 = "add-endpoints";
30384    ts2 = "remove-endpoints";
30385    ns2 = "sip-call-transfer";
30386    cs2 = "none";
30387    ls2 = "software";
30388    us2 = "hardware";
30389    ds2 = (function() {
30390      try {
30391        var e3, t3 = document.createElement("canvas"), n3 = false;
30392        (e3 = t3.getContext("webgl2", { failIfMajorPerformanceCaveat: true })) || (n3 = true, e3 = t3.getContext("webgl2"));
30393        var r3 = null != e3;
30394        return t3.remove(), r3 ? n3 ? ls2 : us2 : cs2;
30395      } catch (e4) {
30396        return cs2;
30397      }
30398    })();
30399    Ms2 = (function() {
30400      return o2((function e3() {
30401        t2(this, e3);
30402      }), [{ key: "addListenerForMessagesFromCallMachine", value: function(e3, t3, n3) {
30403        R2();
30404      } }, { key: "addListenerForMessagesFromDailyJs", value: function(e3, t3, n3) {
30405        R2();
30406      } }, { key: "sendMessageToCallMachine", value: function(e3, t3, n3, r3) {
30407        R2();
30408      } }, { key: "sendMessageToDailyJs", value: function(e3, t3) {
30409        R2();
30410      } }, { key: "removeListener", value: function(e3) {
30411        R2();
30412      } }]);
30413    })();
30414    Os2 = (function() {
30415      function e3() {
30416        var n3, r3, i3, o3;
30417        return t2(this, e3), r3 = this, i3 = a2(i3 = e3), (n3 = s2(r3, Ts2() ? Reflect.construct(i3, o3 || [], a2(r3).constructor) : i3.apply(r3, o3)))._wrappedListeners = {}, n3._messageCallbacks = {}, n3;
30418      }
30419      return l2(e3, Ms2), o2(e3, [{ key: "addListenerForMessagesFromCallMachine", value: function(e4, t3, n3) {
30420        var r3 = this, i3 = function(i4) {
30421          if (i4.data && "iframe-call-message" === i4.data.what && (!i4.data.callClientId || i4.data.callClientId === t3) && (!i4.data.from || "module" !== i4.data.from)) {
30422            var o3 = Es2({}, i4.data);
30423            if (delete o3.from, o3.callbackStamp && r3._messageCallbacks[o3.callbackStamp]) {
30424              var s3 = o3.callbackStamp;
30425              r3._messageCallbacks[s3].call(n3, o3), delete r3._messageCallbacks[s3];
30426            }
30427            delete o3.what, delete o3.callbackStamp, e4.call(n3, o3);
30428          }
30429        };
30430        this._wrappedListeners[e4] = i3, window.addEventListener("message", i3);
30431      } }, { key: "addListenerForMessagesFromDailyJs", value: function(e4, t3, n3) {
30432        var r3 = function(r4) {
30433          var i3;
30434          if (!(!r4.data || r4.data.what !== zo2 || !r4.data.action || r4.data.from && "module" !== r4.data.from || r4.data.callClientId && t3 && r4.data.callClientId !== t3 || null != r4 && null !== (i3 = r4.data) && void 0 !== i3 && i3.callFrameId)) {
30435            var o3 = r4.data;
30436            e4.call(n3, o3);
30437          }
30438        };
30439        this._wrappedListeners[e4] = r3, window.addEventListener("message", r3);
30440      } }, { key: "sendMessageToCallMachine", value: function(e4, t3, n3, r3) {
30441        if (!n3) throw new Error("undefined callClientId. Are you trying to use a DailyCall instance previously destroyed?");
30442        var i3 = Es2({}, e4);
30443        if (i3.what = zo2, i3.from = "module", i3.callClientId = n3, t3) {
30444          var o3 = N2();
30445          this._messageCallbacks[o3] = t3, i3.callbackStamp = o3;
30446        }
30447        var s3 = r3 ? r3.contentWindow : window, a3 = this._callMachineTargetOrigin(r3);
30448        a3 && s3.postMessage(i3, a3);
30449      } }, { key: "sendMessageToDailyJs", value: function(e4, t3) {
30450        e4.what = zo2, e4.callClientId = t3, e4.from = "embedded", window.postMessage(e4, this._targetOriginFromWindowLocation());
30451      } }, { key: "removeListener", value: function(e4) {
30452        var t3 = this._wrappedListeners[e4];
30453        t3 && (window.removeEventListener("message", t3), delete this._wrappedListeners[e4]);
30454      } }, { key: "forwardPackagedMessageToCallMachine", value: function(e4, t3, n3) {
30455        var r3 = Es2({}, e4);
30456        r3.callClientId = n3;
30457        var i3 = t3 ? t3.contentWindow : window, o3 = this._callMachineTargetOrigin(t3);
30458        o3 && i3.postMessage(r3, o3);
30459      } }, { key: "addListenerForPackagedMessagesFromCallMachine", value: function(e4, t3) {
30460        var n3 = function(n4) {
30461          if (n4.data && "iframe-call-message" === n4.data.what && (!n4.data.callClientId || n4.data.callClientId === t3) && (!n4.data.from || "module" !== n4.data.from)) {
30462            var r3 = n4.data;
30463            e4(r3);
30464          }
30465        };
30466        return this._wrappedListeners[e4] = n3, window.addEventListener("message", n3), e4;
30467      } }, { key: "removeListenerForPackagedMessagesFromCallMachine", value: function(e4) {
30468        var t3 = this._wrappedListeners[e4];
30469        t3 && (window.removeEventListener("message", t3), delete this._wrappedListeners[e4]);
30470      } }, { key: "_callMachineTargetOrigin", value: function(e4) {
30471        return e4 ? e4.src ? new URL(e4.src).origin : void 0 : this._targetOriginFromWindowLocation();
30472      } }, { key: "_targetOriginFromWindowLocation", value: function() {
30473        return "file:" === window.location.protocol ? "*" : window.location.origin;
30474      } }]);
30475    })();
30476    js2 = (function() {
30477      function e3() {
30478        var n3, r3, i3, o3;
30479        return t2(this, e3), r3 = this, i3 = a2(i3 = e3), n3 = s2(r3, As2() ? Reflect.construct(i3, o3 || [], a2(r3).constructor) : i3.apply(r3, o3)), global.callMachineToDailyJsEmitter = global.callMachineToDailyJsEmitter || new y2.EventEmitter(), global.dailyJsToCallMachineEmitter = global.dailyJsToCallMachineEmitter || new y2.EventEmitter(), n3._wrappedListeners = {}, n3._messageCallbacks = {}, n3;
30480      }
30481      return l2(e3, Ms2), o2(e3, [{ key: "addListenerForMessagesFromCallMachine", value: function(e4, t3, n3) {
30482        this._addListener(e4, global.callMachineToDailyJsEmitter, t3, n3, "received call machine message");
30483      } }, { key: "addListenerForMessagesFromDailyJs", value: function(e4, t3, n3) {
30484        this._addListener(e4, global.dailyJsToCallMachineEmitter, t3, n3, "received daily-js message");
30485      } }, { key: "sendMessageToCallMachine", value: function(e4, t3, n3) {
30486        this._sendMessage(e4, global.dailyJsToCallMachineEmitter, n3, t3, "sending message to call machine");
30487      } }, { key: "sendMessageToDailyJs", value: function(e4, t3) {
30488        this._sendMessage(e4, global.callMachineToDailyJsEmitter, t3, null, "sending message to daily-js");
30489      } }, { key: "removeListener", value: function(e4) {
30490        var t3 = this._wrappedListeners[e4];
30491        t3 && (global.callMachineToDailyJsEmitter.removeListener("message", t3), global.dailyJsToCallMachineEmitter.removeListener("message", t3), delete this._wrappedListeners[e4]);
30492      } }, { key: "_addListener", value: function(e4, t3, n3, r3, i3) {
30493        var o3 = this, s3 = function(t4) {
30494          if (t4.callClientId === n3) {
30495            if (t4.callbackStamp && o3._messageCallbacks[t4.callbackStamp]) {
30496              var i4 = t4.callbackStamp;
30497              o3._messageCallbacks[i4].call(r3, t4), delete o3._messageCallbacks[i4];
30498            }
30499            e4.call(r3, t4);
30500          }
30501        };
30502        this._wrappedListeners[e4] = s3, t3.addListener("message", s3);
30503      } }, { key: "_sendMessage", value: function(e4, t3, n3, r3, i3) {
30504        var o3 = (function(e5) {
30505          for (var t4 = 1; t4 < arguments.length; t4++) {
30506            var n4 = null != arguments[t4] ? arguments[t4] : {};
30507            t4 % 2 ? Ps2(Object(n4), true).forEach((function(t5) {
30508              u2(e5, t5, n4[t5]);
30509            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e5, Object.getOwnPropertyDescriptors(n4)) : Ps2(Object(n4)).forEach((function(t5) {
30510              Object.defineProperty(e5, t5, Object.getOwnPropertyDescriptor(n4, t5));
30511            }));
30512          }
30513          return e5;
30514        })({}, e4);
30515        if (o3.callClientId = n3, r3) {
30516          var s3 = N2();
30517          this._messageCallbacks[s3] = r3, o3.callbackStamp = s3;
30518        }
30519        t3.emit("message", o3);
30520      } }]);
30521    })();
30522    Is2 = "replace";
30523    xs2 = "shallow-merge";
30524    Ls2 = [Is2, xs2];
30525    Ds2 = (function() {
30526      function e3() {
30527        var n3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, r3 = n3.data, i3 = n3.mergeStrategy, o3 = void 0 === i3 ? Is2 : i3;
30528        t2(this, e3), e3._validateMergeStrategy(o3), e3._validateData(r3, o3), this.mergeStrategy = o3, this.data = r3;
30529      }
30530      return o2(e3, [{ key: "isNoOp", value: function() {
30531        return e3.isNoOpUpdate(this.data, this.mergeStrategy);
30532      } }], [{ key: "isNoOpUpdate", value: function(e4, t3) {
30533        return 0 === Object.keys(e4).length && t3 === xs2;
30534      } }, { key: "_validateMergeStrategy", value: function(e4) {
30535        if (!Ls2.includes(e4)) throw Error("Unrecognized mergeStrategy provided. Options are: [".concat(Ls2, "]"));
30536      } }, { key: "_validateData", value: function(e4, t3) {
30537        if (!(function(e5) {
30538          if (null == e5 || "object" !== n2(e5)) return false;
30539          var t4 = Object.getPrototypeOf(e5);
30540          return null == t4 || t4 === Object.prototype;
30541        })(e4)) throw Error("Meeting session data must be a plain (map-like) object");
30542        var r3;
30543        try {
30544          if (r3 = JSON.stringify(e4), t3 === Is2) {
30545            var i3 = JSON.parse(r3);
30546            S2(i3, e4) || console.warn("The meeting session data provided will be modified when serialized.", i3, e4);
30547          } else if (t3 === xs2) {
30548            for (var o3 in e4) if (Object.hasOwnProperty.call(e4, o3) && void 0 !== e4[o3]) {
30549              var s3 = JSON.parse(JSON.stringify(e4[o3]));
30550              S2(e4[o3], s3) || console.warn("At least one key in the meeting session data provided will be modified when serialized.", s3, e4[o3]);
30551            }
30552          }
30553        } catch (e5) {
30554          throw Error("Meeting session data must be serializable to JSON: ".concat(e5));
30555        }
30556        if (r3.length > qo2) throw Error("Meeting session data is too large (".concat(r3.length, " characters). Maximum size suppported is ").concat(qo2, "."));
30557      } }]);
30558    })();
30559    Us2 = (function() {
30560      return o2((function e3(n3) {
30561        t2(this, e3), this._currentLoad = null, this._callClientId = n3;
30562      }), [{ key: "load", value: function() {
30563        var e3, t3 = this, n3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, r3 = arguments.length > 1 ? arguments[1] : void 0, i3 = arguments.length > 2 ? arguments[2] : void 0;
30564        if (this.loaded) return window._daily.instances[this._callClientId].callMachine.reset(), void r3(true);
30565        e3 = this._callClientId, window._daily.pendings.push(e3), this._currentLoad && this._currentLoad.cancel(), this._currentLoad = new Vs2(n3, (function() {
30566          r3(false);
30567        }), (function(e4, n4) {
30568          n4 || Bs2(t3._callClientId), i3(e4, n4);
30569        })), this._currentLoad.start();
30570      } }, { key: "cancel", value: function() {
30571        this._currentLoad && this._currentLoad.cancel(), Bs2(this._callClientId);
30572      } }, { key: "loaded", get: function() {
30573        return this._currentLoad && this._currentLoad.succeeded;
30574      } }]);
30575    })();
30576    Vs2 = (function() {
30577      return o2((function e3() {
30578        var n3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, r3 = arguments.length > 1 ? arguments[1] : void 0, i3 = arguments.length > 2 ? arguments[2] : void 0;
30579        t2(this, e3), this._attemptsRemaining = 3, this._currentAttempt = null, this._dailyConfig = n3, this._successCallback = r3, this._failureCallback = i3;
30580      }), [{ key: "start", value: function() {
30581        var e3 = this;
30582        if (!this._currentAttempt) {
30583          var t3 = function(n3) {
30584            e3._currentAttempt.cancelled || (e3._attemptsRemaining--, e3._failureCallback(n3, e3._attemptsRemaining > 0), e3._attemptsRemaining <= 0 || setTimeout((function() {
30585              e3._currentAttempt.cancelled || (e3._currentAttempt = new qs2(e3._dailyConfig, e3._successCallback, t3), e3._currentAttempt.start());
30586            }), 3e3));
30587          };
30588          this._currentAttempt = new qs2(this._dailyConfig, this._successCallback, t3), this._currentAttempt.start();
30589        }
30590      } }, { key: "cancel", value: function() {
30591        this._currentAttempt && this._currentAttempt.cancel();
30592      } }, { key: "cancelled", get: function() {
30593        return this._currentAttempt && this._currentAttempt.cancelled;
30594      } }, { key: "succeeded", get: function() {
30595        return this._currentAttempt && this._currentAttempt.succeeded;
30596      } }]);
30597    })();
30598    Js2 = (function() {
30599      function e3() {
30600        return t2(this, e3), n3 = this, i3 = arguments, r3 = a2(r3 = e3), s2(n3, Fs2() ? Reflect.construct(r3, i3 || [], a2(n3).constructor) : r3.apply(n3, i3));
30601        var n3, r3, i3;
30602      }
30603      return l2(e3, Rs2(Error)), o2(e3);
30604    })();
30605    $s2 = 2e4;
30606    qs2 = (function() {
30607      return o2((function e4(n3, r3, i3) {
30608        t2(this, e4), this._loadAttemptImpl = is2() || !n3.avoidEval ? new zs2(n3, r3, i3) : new Ws2(n3, r3, i3);
30609      }), [{ key: "start", value: (e3 = p2((function* () {
30610        return this._loadAttemptImpl.start();
30611      })), function() {
30612        return e3.apply(this, arguments);
30613      }) }, { key: "cancel", value: function() {
30614        this._loadAttemptImpl.cancel();
30615      } }, { key: "cancelled", get: function() {
30616        return this._loadAttemptImpl.cancelled;
30617      } }, { key: "succeeded", get: function() {
30618        return this._loadAttemptImpl.succeeded;
30619      } }]);
30620      var e3;
30621    })();
30622    zs2 = (function() {
30623      return o2((function e4(n4, r4, i4) {
30624        t2(this, e4), this.cancelled = false, this.succeeded = false, this._networkTimedOut = false, this._networkTimeout = null, this._iosCache = "undefined" != typeof iOSCallObjectBundleCache && iOSCallObjectBundleCache, this._refetchHeaders = null, this._dailyConfig = n4, this._successCallback = r4, this._failureCallback = i4;
30625      }), [{ key: "start", value: (i3 = p2((function* () {
30626        var e4 = B2(this._dailyConfig);
30627        !(yield this._tryLoadFromIOSCache(e4)) && this._loadFromNetwork(e4);
30628      })), function() {
30629        return i3.apply(this, arguments);
30630      }) }, { key: "cancel", value: function() {
30631        clearTimeout(this._networkTimeout), this.cancelled = true;
30632      } }, { key: "_tryLoadFromIOSCache", value: (r3 = p2((function* (e4) {
30633        if (!this._iosCache) return false;
30634        try {
30635          var t3 = yield this._iosCache.get(e4);
30636          return !!this.cancelled || !!t3 && (t3.code ? (Function('"use strict";' + t3.code)(), this.succeeded = true, this._successCallback(), true) : (this._refetchHeaders = t3.refetchHeaders, false));
30637        } catch (e5) {
30638          return false;
30639        }
30640      })), function(e4) {
30641        return r3.apply(this, arguments);
30642      }) }, { key: "_loadFromNetwork", value: (n3 = p2((function* (e4) {
30643        var t3 = this;
30644        this._networkTimeout = setTimeout((function() {
30645          t3._networkTimedOut = true, t3._failureCallback({ msg: "Timed out (>".concat($s2, " ms) when loading call object bundle ").concat(e4), type: "timeout" });
30646        }), $s2);
30647        try {
30648          var n4 = this._refetchHeaders ? { headers: this._refetchHeaders } : {}, r4 = yield fetch(e4, n4);
30649          if (clearTimeout(this._networkTimeout), this.cancelled || this._networkTimedOut) throw new Js2();
30650          var i4 = yield this._getBundleCodeFromResponse(e4, r4);
30651          if (this.cancelled) throw new Js2();
30652          Function('"use strict";' + i4)(), this._iosCache && this._iosCache.set(e4, i4, r4.headers), this.succeeded = true, this._successCallback();
30653        } catch (t4) {
30654          if (clearTimeout(this._networkTimeout), t4 instanceof Js2 || this.cancelled || this._networkTimedOut) return;
30655          this._failureCallback({ msg: "Failed to load call object bundle ".concat(e4, ": ").concat(t4), type: t4.message });
30656        }
30657      })), function(e4) {
30658        return n3.apply(this, arguments);
30659      }) }, { key: "_getBundleCodeFromResponse", value: (e3 = p2((function* (e4, t3) {
30660        if (t3.ok) return yield t3.text();
30661        if (this._iosCache && 304 === t3.status) return (yield this._iosCache.renew(e4, t3.headers)).code;
30662        throw new Error("Received ".concat(t3.status, " response"));
30663      })), function(t3, n4) {
30664        return e3.apply(this, arguments);
30665      }) }]);
30666      var e3, n3, r3, i3;
30667    })();
30668    Ws2 = (function() {
30669      return o2((function e3(n3, r3, i3) {
30670        t2(this, e3), this.cancelled = false, this.succeeded = false, this._dailyConfig = n3, this._successCallback = r3, this._failureCallback = i3, this._attemptId = N2(), this._networkTimeout = null, this._scriptElement = null;
30671      }), [{ key: "start", value: function() {
30672        window._dailyCallMachineLoadWaitlist || (window._dailyCallMachineLoadWaitlist = /* @__PURE__ */ new Set());
30673        var e3 = B2(this._dailyConfig);
30674        "object" === ("undefined" == typeof document ? "undefined" : n2(document)) ? this._startLoading(e3) : this._failureCallback({ msg: "Call object bundle must be loaded in a DOM/web context", type: "missing context" });
30675      } }, { key: "cancel", value: function() {
30676        this._stopLoading(), this.cancelled = true;
30677      } }, { key: "_startLoading", value: function(e3) {
30678        var t3 = this;
30679        this._signUpForCallMachineLoadWaitlist(), this._networkTimeout = setTimeout((function() {
30680          t3._stopLoading(), t3._failureCallback({ msg: "Timed out (>".concat($s2, " ms) when loading call object bundle ").concat(e3), type: "timeout" });
30681        }), $s2);
30682        var n3 = document.getElementsByTagName("head")[0], r3 = document.createElement("script");
30683        this._scriptElement = r3, r3.onload = function() {
30684          t3._stopLoading(), t3.succeeded = true, t3._successCallback();
30685        }, r3.onerror = function(e4) {
30686          t3._stopLoading(), t3._failureCallback({ msg: "Failed to load call object bundle ".concat(e4.target.src), type: e4.message });
30687        }, r3.src = e3, n3.appendChild(r3);
30688      } }, { key: "_stopLoading", value: function() {
30689        this._withdrawFromCallMachineLoadWaitlist(), clearTimeout(this._networkTimeout), this._scriptElement && (this._scriptElement.onload = null, this._scriptElement.onerror = null);
30690      } }, { key: "_signUpForCallMachineLoadWaitlist", value: function() {
30691        window._dailyCallMachineLoadWaitlist.add(this._attemptId);
30692      } }, { key: "_withdrawFromCallMachineLoadWaitlist", value: function() {
30693        window._dailyCallMachineLoadWaitlist.delete(this._attemptId);
30694      } }]);
30695    })();
30696    Hs2 = function(e3, t3, n3) {
30697      return true === Ks2(e3.local, t3, n3);
30698    };
30699    Gs2 = function(e3, t3, n3) {
30700      return e3.local.streams && e3.local.streams[t3] && e3.local.streams[t3].stream && e3.local.streams[t3].stream["get".concat("video" === n3 ? "Video" : "Audio", "Tracks")]()[0];
30701    };
30702    Qs2 = function(e3, t3, n3, r3) {
30703      var i3 = Ys2(e3, t3, n3, r3);
30704      return i3 && i3.pendingTrack;
30705    };
30706    Ks2 = function(e3, t3, n3) {
30707      if (!e3) return false;
30708      var r3 = function(e4) {
30709        switch (e4) {
30710          case "avatar":
30711            return true;
30712          case "staged":
30713            return e4;
30714          default:
30715            return !!e4;
30716        }
30717      }, i3 = e3.public.subscribedTracks;
30718      return i3 && i3[t3] ? -1 === ["cam-audio", "cam-video", "screen-video", "screen-audio", "rmpAudio", "rmpVideo"].indexOf(n3) && i3[t3].custom ? [true, "staged"].includes(i3[t3].custom) ? r3(i3[t3].custom) : r3(i3[t3].custom[n3]) : r3(i3[t3][n3]) : !i3 || r3(i3.ALL);
30719    };
30720    Ys2 = function(e3, t3, n3, r3) {
30721      var i3 = Object.values(e3.streams || {}).filter((function(e4) {
30722        return e4.participantId === t3 && e4.type === n3 && e4.pendingTrack && e4.pendingTrack.kind === r3;
30723      })).sort((function(e4, t4) {
30724        return new Date(t4.starttime) - new Date(e4.starttime);
30725      }));
30726      return i3 && i3[0];
30727    };
30728    Xs2 = function(e3, t3) {
30729      var n3 = e3.local.public.customTracks;
30730      if (n3 && n3[t3]) return n3[t3].track;
30731    };
30732    oa2 = /* @__PURE__ */ new Map();
30733    sa2 = null;
30734    la2 = /* @__PURE__ */ new Map();
30735    ua2 = null;
30736    fa2 = /* @__PURE__ */ new Set();
30737    ya2 = Object.freeze({ VIDEO: "video", AUDIO: "audio", SCREEN_VIDEO: "screenVideo", SCREEN_AUDIO: "screenAudio", CUSTOM_VIDEO: "customVideo", CUSTOM_AUDIO: "customAudio" });
30738    ba2 = Object.freeze({ PARTICIPANTS: "participants", STREAMING: "streaming", TRANSCRIPTION: "transcription" });
30739    _a2 = Object.values(ya2);
30740    wa2 = ["v", "a", "sv", "sa", "cv", "ca"];
30741    Object.freeze(_a2.reduce((function(e3, t3, n3) {
30742      return e3[t3] = wa2[n3], e3;
30743    }), {})), Object.freeze(wa2.reduce((function(e3, t3, n3) {
30744      return e3[t3] = _a2[n3], e3;
30745    }), {}));
30746    Sa2 = [ya2.VIDEO, ya2.AUDIO, ya2.SCREEN_VIDEO, ya2.SCREEN_AUDIO];
30747    ka2 = Object.values(ba2);
30748    Ma2 = ["p", "s", "t"];
30749    Object.freeze(ka2.reduce((function(e3, t3, n3) {
30750      return e3[t3] = Ma2[n3], e3;
30751    }), {})), Object.freeze(Ma2.reduce((function(e3, t3, n3) {
30752      return e3[t3] = ka2[n3], e3;
30753    }), {}));
30754    Ca2 = (function() {
30755      function e3() {
30756        var n3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, r3 = n3.base, i3 = n3.byUserId, o3 = n3.byParticipantId;
30757        t2(this, e3), this.base = r3, this.byUserId = i3, this.byParticipantId = o3;
30758      }
30759      return o2(e3, [{ key: "clone", value: function() {
30760        var t3 = new e3();
30761        if (this.base instanceof Ea2 ? t3.base = this.base.clone() : t3.base = this.base, void 0 !== this.byUserId) for (var n3 in t3.byUserId = {}, this.byUserId) {
30762          var r3 = this.byUserId[n3];
30763          t3.byUserId[n3] = r3 instanceof Ea2 ? r3.clone() : r3;
30764        }
30765        if (void 0 !== this.byParticipantId) for (var i3 in t3.byParticipantId = {}, this.byParticipantId) {
30766          var o3 = this.byParticipantId[i3];
30767          t3.byParticipantId[i3] = o3 instanceof Ea2 ? o3.clone() : o3;
30768        }
30769        return t3;
30770      } }, { key: "toJSONObject", value: function() {
30771        var e4 = {};
30772        if ("boolean" == typeof this.base ? e4.base = this.base : this.base instanceof Ea2 && (e4.base = this.base.toJSONObject()), void 0 !== this.byUserId) for (var t3 in e4.byUserId = {}, this.byUserId) {
30773          var n3 = this.byUserId[t3];
30774          e4.byUserId[t3] = n3 instanceof Ea2 ? n3.toJSONObject() : n3;
30775        }
30776        if (void 0 !== this.byParticipantId) for (var r3 in e4.byParticipantId = {}, this.byParticipantId) {
30777          var i3 = this.byParticipantId[r3];
30778          e4.byParticipantId[r3] = i3 instanceof Ea2 ? i3.toJSONObject() : i3;
30779        }
30780        return e4;
30781      } }, { key: "toMinifiedJSONObject", value: function() {
30782        var e4 = {};
30783        if (void 0 !== this.base && ("boolean" == typeof this.base ? e4.b = this.base : e4.b = this.base.toMinifiedJSONObject()), void 0 !== this.byUserId) for (var t3 in e4.u = {}, this.byUserId) {
30784          var n3 = this.byUserId[t3];
30785          e4.u[t3] = "boolean" == typeof n3 ? n3 : n3.toMinifiedJSONObject();
30786        }
30787        if (void 0 !== this.byParticipantId) for (var r3 in e4.p = {}, this.byParticipantId) {
30788          var i3 = this.byParticipantId[r3];
30789          e4.p[r3] = "boolean" == typeof i3 ? i3 : i3.toMinifiedJSONObject();
30790        }
30791        return e4;
30792      } }, { key: "normalize", value: function() {
30793        return this.base instanceof Ea2 && (this.base = this.base.normalize()), this.byUserId && (this.byUserId = Object.fromEntries(Object.entries(this.byUserId).map((function(e4) {
30794          var t3 = f2(e4, 2), n3 = t3[0], r3 = t3[1];
30795          return [n3, r3 instanceof Ea2 ? r3.normalize() : r3];
30796        })))), this.byParticipantId && (this.byParticipantId = Object.fromEntries(Object.entries(this.byParticipantId).map((function(e4) {
30797          var t3 = f2(e4, 2), n3 = t3[0], r3 = t3[1];
30798          return [n3, r3 instanceof Ea2 ? r3.normalize() : r3];
30799        })))), this;
30800      } }], [{ key: "fromJSONObject", value: function(t3) {
30801        var n3, r3, i3;
30802        if (void 0 !== t3.base && (n3 = "boolean" == typeof t3.base ? t3.base : Ea2.fromJSONObject(t3.base)), void 0 !== t3.byUserId) for (var o3 in r3 = {}, t3.byUserId) {
30803          var s3 = t3.byUserId[o3];
30804          r3[o3] = "boolean" == typeof s3 ? s3 : Ea2.fromJSONObject(s3);
30805        }
30806        if (void 0 !== t3.byParticipantId) for (var a3 in i3 = {}, t3.byParticipantId) {
30807          var c3 = t3.byParticipantId[a3];
30808          i3[a3] = "boolean" == typeof c3 ? c3 : Ea2.fromJSONObject(c3);
30809        }
30810        return new e3({ base: n3, byUserId: r3, byParticipantId: i3 });
30811      } }, { key: "fromMinifiedJSONObject", value: function(t3) {
30812        var n3, r3, i3;
30813        if (void 0 !== t3.b && (n3 = "boolean" == typeof t3.b ? t3.b : Ea2.fromMinifiedJSONObject(t3.b)), void 0 !== t3.u) for (var o3 in r3 = {}, t3.u) {
30814          var s3 = t3.u[o3];
30815          r3[o3] = "boolean" == typeof s3 ? s3 : Ea2.fromMinifiedJSONObject(s3);
30816        }
30817        if (void 0 !== t3.p) for (var a3 in i3 = {}, t3.p) {
30818          var c3 = t3.p[a3];
30819          i3[a3] = "boolean" == typeof c3 ? c3 : Ea2.fromMinifiedJSONObject(c3);
30820        }
30821        return new e3({ base: n3, byUserId: r3, byParticipantId: i3 });
30822      } }, { key: "validateJSONObject", value: function(e4) {
30823        if ("object" !== n2(e4)) return [false, "canReceive must be an object"];
30824        for (var t3 = ["base", "byUserId", "byParticipantId"], r3 = 0, i3 = Object.keys(e4); r3 < i3.length; r3++) {
30825          var o3 = i3[r3];
30826          if (!t3.includes(o3)) return [false, "canReceive can only contain keys (".concat(t3.join(", "), ")")];
30827          if ("base" === o3) {
30828            var s3 = f2(Ea2.validateJSONObject(e4.base, true), 2), a3 = s3[0], c3 = s3[1];
30829            if (!a3) return [false, c3];
30830          } else {
30831            if ("object" !== n2(e4[o3])) return [false, "invalid (non-object) value for field '".concat(o3, "' in canReceive")];
30832            for (var l3 = 0, u3 = Object.values(e4[o3]); l3 < u3.length; l3++) {
30833              var d3 = u3[l3], p3 = f2(Ea2.validateJSONObject(d3), 2), h3 = p3[0], v3 = p3[1];
30834              if (!h3) return [false, v3];
30835            }
30836          }
30837        }
30838        return [true];
30839      } }]);
30840    })();
30841    Ea2 = (function() {
30842      function e3() {
30843        var n3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, r3 = n3.video, i3 = n3.audio, o3 = n3.screenVideo, s3 = n3.screenAudio, a3 = n3.customVideo, c3 = n3.customAudio;
30844        t2(this, e3), this.video = r3, this.audio = i3, this.screenVideo = o3, this.screenAudio = s3, this.customVideo = a3, this.customAudio = c3;
30845      }
30846      return o2(e3, [{ key: "clone", value: function() {
30847        var t3 = new e3();
30848        return void 0 !== this.video && (t3.video = this.video), void 0 !== this.audio && (t3.audio = this.audio), void 0 !== this.screenVideo && (t3.screenVideo = this.screenVideo), void 0 !== this.screenAudio && (t3.screenAudio = this.screenAudio), void 0 !== this.customVideo && (t3.customVideo = ma2({}, this.customVideo)), void 0 !== this.customAudio && (t3.customAudio = ma2({}, this.customAudio)), t3;
30849      } }, { key: "toJSONObject", value: function() {
30850        var e4 = {};
30851        return void 0 !== this.video && (e4.video = this.video), void 0 !== this.audio && (e4.audio = this.audio), void 0 !== this.screenVideo && (e4.screenVideo = this.screenVideo), void 0 !== this.screenAudio && (e4.screenAudio = this.screenAudio), void 0 !== this.customVideo && (e4.customVideo = ma2({}, this.customVideo)), void 0 !== this.customAudio && (e4.customAudio = ma2({}, this.customAudio)), e4;
30852      } }, { key: "toMinifiedJSONObject", value: function() {
30853        var e4 = {};
30854        return void 0 !== this.video && (e4.v = this.video), void 0 !== this.audio && (e4.a = this.audio), void 0 !== this.screenVideo && (e4.sv = this.screenVideo), void 0 !== this.screenAudio && (e4.sa = this.screenAudio), void 0 !== this.customVideo && (e4.cv = ma2({}, this.customVideo)), void 0 !== this.customAudio && (e4.ca = ma2({}, this.customAudio)), e4;
30855      } }, { key: "normalize", value: function() {
30856        function e4(e5, t3) {
30857          return e5 && 1 === Object.keys(e5).length && e5["*"] === t3;
30858        }
30859        return !(true !== this.video || true !== this.audio || true !== this.screenVideo || true !== this.screenAudio || !e4(this.customVideo, true) || !e4(this.customAudio, true)) || (false !== this.video || false !== this.audio || false !== this.screenVideo || false !== this.screenAudio || !e4(this.customVideo, false) || !e4(this.customAudio, false)) && this;
30860      } }], [{ key: "fromBoolean", value: function(t3) {
30861        return new e3({ video: t3, audio: t3, screenVideo: t3, screenAudio: t3, customVideo: { "*": t3 }, customAudio: { "*": t3 } });
30862      } }, { key: "fromJSONObject", value: function(t3) {
30863        return new e3({ video: t3.video, audio: t3.audio, screenVideo: t3.screenVideo, screenAudio: t3.screenAudio, customVideo: void 0 !== t3.customVideo ? ma2({}, t3.customVideo) : void 0, customAudio: void 0 !== t3.customAudio ? ma2({}, t3.customAudio) : void 0 });
30864      } }, { key: "fromMinifiedJSONObject", value: function(t3) {
30865        return new e3({ video: t3.v, audio: t3.a, screenVideo: t3.sv, screenAudio: t3.sa, customVideo: t3.cv, customAudio: t3.ca });
30866      } }, { key: "validateJSONObject", value: function(e4, t3) {
30867        if ("boolean" == typeof e4) return [true];
30868        if ("object" !== n2(e4)) return [false, "invalid (non-object, non-boolean) value in canReceive"];
30869        for (var r3 = Object.keys(e4), i3 = 0, o3 = r3; i3 < o3.length; i3++) {
30870          var s3 = o3[i3];
30871          if (!_a2.includes(s3)) return [false, "invalid media type '".concat(s3, "' in canReceive")];
30872          if (Sa2.includes(s3)) {
30873            if ("boolean" != typeof e4[s3]) return [false, "invalid (non-boolean) value for media type '".concat(s3, "' in canReceive")];
30874          } else {
30875            if ("object" !== n2(e4[s3])) return [false, "invalid (non-object) value for media type '".concat(s3, "' in canReceive")];
30876            for (var a3 = 0, c3 = Object.values(e4[s3]); a3 < c3.length; a3++) {
30877              if ("boolean" != typeof c3[a3]) return [false, "invalid (non-boolean) value for entry within '".concat(s3, "' in canReceive")];
30878            }
30879            if (t3 && void 0 === e4[s3]["*"]) return [false, `canReceive "base" permission must specify "*" as an entry within '`.concat(s3, "'")];
30880          }
30881        }
30882        return t3 && r3.length !== _a2.length ? [false, 'canReceive "base" permission must specify all media types: '.concat(_a2.join(", "), " (or be set to a boolean shorthand)")] : [true];
30883      } }]);
30884    })();
30885    Ta2 = ["result"];
30886    Oa2 = ["preserveIframe"];
30887    La2 = {};
30888    Da2 = "video";
30889    Na2 = "voice";
30890    Ra2 = is2() ? { data: {} } : { data: {}, topology: "none" };
30891    Fa2 = { present: 0, hidden: 0 };
30892    Ba2 = { maxBitrate: { min: 1e5, max: 25e5 }, maxFramerate: { min: 1, max: 30 }, scaleResolutionDownBy: { min: 1, max: 8 } };
30893    Ua2 = Object.keys(Ba2);
30894    Va2 = ["state", "volume", "simulcastEncodings"];
30895    Ja2 = { androidInCallNotification: { title: "string", subtitle: "string", iconName: "string", disableForCustomOverride: "boolean" }, disableAutoDeviceManagement: { audio: "boolean", video: "boolean" } };
30896    $a2 = { id: { iconPath: "string", iconPathDarkMode: "string", label: "string", tooltip: "string", visualState: "'default' | 'sidebar-open' | 'active'" } };
30897    qa2 = { id: { allow: "string", controlledBy: "'*' | 'owners' | string[]", csp: "string", iconURL: "string", label: "string", loading: "'eager' | 'lazy'", location: "'main' | 'sidebar'", name: "string", referrerPolicy: "string", sandbox: "string", src: "string", srcdoc: "string", shared: "string[] | 'owners' | boolean" } };
30898    za2 = { customIntegrations: { validate: vc2, help: hc2() }, customTrayButtons: { validate: fc2, help: "customTrayButtons should be a dictionary of the type ".concat(JSON.stringify($a2)) }, url: { validate: function(e3) {
30899      return "string" == typeof e3;
30900    }, help: "url should be a string" }, baseUrl: { validate: function(e3) {
30901      return "string" == typeof e3;
30902    }, help: "baseUrl should be a string" }, token: { validate: function(e3) {
30903      return "string" == typeof e3;
30904    }, help: "token should be a string", queryString: "t" }, dailyConfig: { validate: function(e3, t3) {
30905      try {
30906        return t3.validateDailyConfig(e3), true;
30907      } catch (e4) {
30908        console.error("Failed to validate dailyConfig", e4);
30909      }
30910      return false;
30911    }, help: "Unsupported dailyConfig. Check error logs for detailed info." }, reactNativeConfig: { validate: function(e3) {
30912      return gc2(e3, Ja2);
30913    }, help: "reactNativeConfig should look like ".concat(JSON.stringify(Ja2), ", all fields optional") }, lang: { validate: function(e3) {
30914      return ["da", "de", "en-us", "en", "es", "fi", "fr", "it", "jp", "ka", "nl", "no", "pl", "pt", "pt-BR", "ru", "sv", "tr", "user"].includes(e3);
30915    }, help: "language not supported. Options are: da, de, en-us, en, es, fi, fr, it, jp, ka, nl, no, pl, pt, pt-BR, ru, sv, tr, user" }, userName: true, userData: { validate: function(e3) {
30916      try {
30917        return ic2(e3), true;
30918      } catch (e4) {
30919        return console.error(e4), false;
30920      }
30921    }, help: "invalid userData type provided" }, startVideoOff: true, startAudioOff: true, allowLocalVideo: true, allowLocalAudio: true, activeSpeakerMode: true, showLeaveButton: true, showLocalVideo: true, showParticipantsBar: true, showFullscreenButton: true, showUserNameChangeUI: true, iframeStyle: true, customLayout: true, cssFile: true, cssText: true, bodyClass: true, videoSource: { validate: function(e3, t3) {
30922      if ("boolean" == typeof e3) return t3._preloadCache.allowLocalVideo = e3, true;
30923      var n3;
30924      if (e3 instanceof MediaStreamTrack) t3._sharedTracks.videoTrack = e3, n3 = { customTrack: Qo2 };
30925      else {
30926        if (delete t3._sharedTracks.videoTrack, "string" != typeof e3) return console.error("videoSource must be a MediaStreamTrack, boolean, or a string"), false;
30927        n3 = { deviceId: e3 };
30928      }
30929      return t3._updatePreloadCacheInputSettings({ video: { settings: n3 } }, false), true;
30930    } }, audioSource: { validate: function(e3, t3) {
30931      if ("boolean" == typeof e3) return t3._preloadCache.allowLocalAudio = e3, true;
30932      var n3;
30933      if (e3 instanceof MediaStreamTrack) t3._sharedTracks.audioTrack = e3, n3 = { customTrack: Qo2 };
30934      else {
30935        if (delete t3._sharedTracks.audioTrack, "string" != typeof e3) return console.error("audioSource must be a MediaStreamTrack, boolean, or a string"), false;
30936        n3 = { deviceId: e3 };
30937      }
30938      return t3._updatePreloadCacheInputSettings({ audio: { settings: n3 } }, false), true;
30939    } }, subscribeToTracksAutomatically: { validate: function(e3, t3) {
30940      return t3._preloadCache.subscribeToTracksAutomatically = e3, true;
30941    } }, theme: { validate: function(e3) {
30942      var t3 = ["accent", "accentText", "background", "backgroundAccent", "baseText", "border", "mainAreaBg", "mainAreaBgAccent", "mainAreaText", "supportiveText"], r3 = function(e4) {
30943        for (var n3 = 0, r4 = Object.keys(e4); n3 < r4.length; n3++) {
30944          var i3 = r4[n3];
30945          if (!t3.includes(i3)) return console.error('unsupported color "'.concat(i3, '". Valid colors: ').concat(t3.join(", "))), false;
30946          if (!e4[i3].match(/^#[0-9a-f]{6}|#[0-9a-f]{3}$/i)) return console.error("".concat(i3, ' theme color should be provided in valid hex color format. Received: "').concat(e4[i3], '"')), false;
30947        }
30948        return true;
30949      };
30950      return "object" === n2(e3) && ("light" in e3 && "dark" in e3 || "colors" in e3) ? "light" in e3 && "dark" in e3 ? "colors" in e3.light ? "colors" in e3.dark ? r3(e3.light.colors) && r3(e3.dark.colors) : (console.error('Dark theme is missing "colors" property.', e3), false) : (console.error('Light theme is missing "colors" property.', e3), false) : r3(e3.colors) : (console.error('Theme must contain either both "light" and "dark" properties, or "colors".', e3), false);
30951    }, help: "unsupported theme configuration. Check error logs for detailed info." }, layoutConfig: { validate: function(e3) {
30952      if ("grid" in e3) {
30953        var t3 = e3.grid;
30954        if ("maxTilesPerPage" in t3) {
30955          if (!Number.isInteger(t3.maxTilesPerPage)) return console.error("grid.maxTilesPerPage should be an integer. You passed ".concat(t3.maxTilesPerPage, ".")), false;
30956          if (t3.maxTilesPerPage > 49) return console.error("grid.maxTilesPerPage can't be larger than 49 without sacrificing browser performance. Please contact us at https://www.daily.co/contact to talk about your use case."), false;
30957        }
30958        if ("minTilesPerPage" in t3) {
30959          if (!Number.isInteger(t3.minTilesPerPage)) return console.error("grid.minTilesPerPage should be an integer. You passed ".concat(t3.minTilesPerPage, ".")), false;
30960          if (t3.minTilesPerPage < 1) return console.error("grid.minTilesPerPage can't be lower than 1."), false;
30961          if ("maxTilesPerPage" in t3 && t3.minTilesPerPage > t3.maxTilesPerPage) return console.error("grid.minTilesPerPage can't be higher than grid.maxTilesPerPage."), false;
30962        }
30963      }
30964      return true;
30965    }, help: "unsupported layoutConfig. Check error logs for detailed info." }, receiveSettings: { validate: function(e3) {
30966      return oc2(e3, { allowAllParticipantsKey: false });
30967    }, help: pc2({ allowAllParticipantsKey: false }) }, sendSettings: { validate: function(e3, t3) {
30968      return !!(function(e4, t4) {
30969        try {
30970          return t4.validateUpdateSendSettings(e4), true;
30971        } catch (e5) {
30972          return console.error("Failed to validate send settings", e5), false;
30973        }
30974      })(e3, t3) && (t3._preloadCache.sendSettings = e3, true);
30975    }, help: "Invalid sendSettings provided. Check error logs for detailed info." }, inputSettings: { validate: function(e3, t3) {
30976      var n3;
30977      return !!sc2(e3) && (t3._inputSettings || (t3._inputSettings = {}), ac2(e3, null === (n3 = t3.properties) || void 0 === n3 ? void 0 : n3.dailyConfig, t3._sharedTracks), t3._updatePreloadCacheInputSettings(e3, true), true);
30978    }, help: dc2() }, layout: { validate: function(e3) {
30979      return "custom-v1" === e3 || "browser" === e3 || "none" === e3;
30980    }, help: 'layout may only be set to "custom-v1"', queryString: "layout" }, emb: { queryString: "emb" }, embHref: { queryString: "embHref" }, dailyJsVersion: { queryString: "dailyJsVersion" }, proxy: { queryString: "proxy" }, strictMode: true, allowMultipleCallInstances: true };
30981    Wa2 = { styles: { validate: function(e3) {
30982      for (var t3 in e3) if ("cam" !== t3 && "screen" !== t3) return false;
30983      if (e3.cam) {
30984        for (var n3 in e3.cam) if ("div" !== n3 && "video" !== n3) return false;
30985      }
30986      if (e3.screen) {
30987        for (var r3 in e3.screen) if ("div" !== r3 && "video" !== r3) return false;
30988      }
30989      return true;
30990    }, help: "styles format should be a subset of: { cam: {div: {}, video: {}}, screen: {div: {}, video: {}} }" }, setSubscribedTracks: { validate: function(e3, t3) {
30991      if (t3._preloadCache.subscribeToTracksAutomatically) return false;
30992      var n3 = [true, false, "staged"];
30993      if (n3.includes(e3) || !is2() && "avatar" === e3) return true;
30994      var r3 = ["audio", "video", "screenAudio", "screenVideo", "rmpAudio", "rmpVideo"], i3 = function(e4) {
30995        var t4 = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
30996        for (var o3 in e4) if ("custom" === o3) {
30997          if (!n3.includes(e4[o3]) && !i3(e4[o3], true)) return false;
30998        } else {
30999          var s3 = !t4 && !r3.includes(o3), a3 = !n3.includes(e4[o3]);
31000          if (s3 || a3) return false;
31001        }
31002        return true;
31003      };
31004      return i3(e3);
31005    }, help: "setSubscribedTracks cannot be used when setSubscribeToTracksAutomatically is enabled, and should be of the form: " + "true".concat(is2() ? "" : " | 'avatar'", " | false | 'staged' | { [audio: true|false|'staged'], [video: true|false|'staged'], [screenAudio: true|false|'staged'], [screenVideo: true|false|'staged'] }") }, setAudio: true, setVideo: true, setScreenShare: { validate: function(e3) {
31006      return false === e3;
31007    }, help: "setScreenShare must be false, as it's only meant for stopping remote participants' screen shares" }, eject: true, updatePermissions: { validate: function(e3) {
31008      for (var t3 = 0, n3 = Object.entries(e3); t3 < n3.length; t3++) {
31009        var r3 = f2(n3[t3], 2), i3 = r3[0], o3 = r3[1];
31010        switch (i3) {
31011          case "hasPresence":
31012            if ("boolean" != typeof o3) return false;
31013            break;
31014          case "canSend":
31015            if (o3 instanceof Set || o3 instanceof Array || Array.isArray(o3)) {
31016              var s3, a3 = ["video", "audio", "screenVideo", "screenAudio", "customVideo", "customAudio"], c3 = Ia2(o3);
31017              try {
31018                for (c3.s(); !(s3 = c3.n()).done; ) {
31019                  var l3 = s3.value;
31020                  if (!a3.includes(l3)) return false;
31021                }
31022              } catch (e4) {
31023                c3.e(e4);
31024              } finally {
31025                c3.f();
31026              }
31027            } else if ("boolean" != typeof o3) return false;
31028            (o3 instanceof Array || Array.isArray(o3)) && (e3.canSend = new Set(o3));
31029            break;
31030          case "canReceive":
31031            var u3 = f2(Ca2.validateJSONObject(o3), 2), d3 = u3[0], p3 = u3[1];
31032            if (!d3) return console.error(p3), false;
31033            break;
31034          case "canAdmin":
31035            if (o3 instanceof Set || o3 instanceof Array || Array.isArray(o3)) {
31036              var h3, v3 = ["participants", "streaming", "transcription"], g3 = Ia2(o3);
31037              try {
31038                for (g3.s(); !(h3 = g3.n()).done; ) {
31039                  var m3 = h3.value;
31040                  if (!v3.includes(m3)) return false;
31041                }
31042              } catch (e4) {
31043                g3.e(e4);
31044              } finally {
31045                g3.f();
31046              }
31047            } else if ("boolean" != typeof o3) return false;
31048            (o3 instanceof Array || Array.isArray(o3)) && (e3.canAdmin = new Set(o3));
31049            break;
31050          default:
31051            return false;
31052        }
31053      }
31054      return true;
31055    }, help: "updatePermissions can take hasPresence, canSend, canReceive, and canAdmin permissions. hasPresence must be a boolean. canSend can be a boolean or an Array or Set of media types (video, audio, screenVideo, screenAudio, customVideo, customAudio). canReceive must be an object specifying base, byUserId, and/or byParticipantId fields (see documentation for more details). canAdmin can be a boolean or an Array or Set of admin types (participants, streaming, transcription)." } };
31056    Promise.any || (Promise.any = (function() {
31057      var e3 = p2((function* (e4) {
31058        return new Promise((function(t3, n3) {
31059          var r3 = [];
31060          e4.forEach((function(i3) {
31061            return Promise.resolve(i3).then((function(e5) {
31062              t3(e5);
31063            })).catch((function(t4) {
31064              r3.push(t4), r3.length === e4.length && n3(r3);
31065            }));
31066          }));
31067        }));
31068      }));
31069      return function(t3) {
31070        return e3.apply(this, arguments);
31071      };
31072    })());
31073    Ha2 = (function() {
31074      function r3(e3) {
31075        var n3, i4, o3, c4, l3, d4, h4 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
31076        if (t2(this, r3), o3 = this, c4 = a2(c4 = r3), u2(i4 = s2(o3, ja2() ? Reflect.construct(c4, l3 || [], a2(o3).constructor) : c4.apply(o3, l3)), "startListeningForDeviceChanges", (function() {
31077          da2(i4.handleDeviceChange);
31078        })), u2(i4, "stopListeningForDeviceChanges", (function() {
31079          pa2(i4.handleDeviceChange);
31080        })), u2(i4, "handleDeviceChange", (function(e4) {
31081          e4 = e4.map((function(e5) {
31082            return JSON.parse(JSON.stringify(e5));
31083          })), i4.emitDailyJSEvent({ action: "available-devices-updated", availableDevices: e4 });
31084        })), u2(i4, "handleNativeAppStateChange", (function() {
31085          var e4 = p2((function* (e5) {
31086            if ("destroyed" === e5) return console.warn("App has been destroyed before leaving the meeting. Cleaning up all the resources!"), void (yield i4.destroy());
31087            var t3 = "active" === e5;
31088            i4.disableReactNativeAutoDeviceManagement("video") || (t3 ? i4.camUnmutedBeforeLosingNativeActiveState && i4.setLocalVideo(true) : (i4.camUnmutedBeforeLosingNativeActiveState = i4.localVideo(), i4.camUnmutedBeforeLosingNativeActiveState && i4.setLocalVideo(false)));
31089          }));
31090          return function(t3) {
31091            return e4.apply(this, arguments);
31092          };
31093        })()), u2(i4, "handleNativeAudioFocusChange", (function(e4) {
31094          i4.disableReactNativeAutoDeviceManagement("audio") || (i4._hasNativeAudioFocus = e4, i4.toggleParticipantAudioBasedOnNativeAudioFocus(), i4._hasNativeAudioFocus ? i4.micUnmutedBeforeLosingNativeAudioFocus && i4.setLocalAudio(true) : (i4.micUnmutedBeforeLosingNativeAudioFocus = i4.localAudio(), i4.setLocalAudio(false)));
31095        })), u2(i4, "handleNativeSystemScreenCaptureStop", (function() {
31096          i4.stopScreenShare();
31097        })), i4.strictMode = void 0 === h4.strictMode || h4.strictMode, i4.allowMultipleCallInstances = null !== (n3 = h4.allowMultipleCallInstances) && void 0 !== n3 && n3, Object.keys(La2).length && (i4._logDuplicateInstanceAttempt(), !i4.allowMultipleCallInstances)) {
31098          if (i4.strictMode) throw new Error("Duplicate DailyIframe instances are not allowed");
31099          console.warn("Using strictMode: false to allow multiple call instances is now deprecated. Set `allowMultipleCallInstances: true`");
31100        }
31101        if (window._daily || (window._daily = { pendings: [], instances: {} }), i4.callClientId = N2(), La2[(d4 = i4).callClientId] = d4, window._daily.instances[i4.callClientId] = {}, i4._sharedTracks = {}, window._daily.instances[i4.callClientId].tracks = i4._sharedTracks, h4.dailyJsVersion = r3.version(), i4._iframe = e3, i4._callObjectMode = "none" === h4.layout && !i4._iframe, i4._preloadCache = { subscribeToTracksAutomatically: true, outputDeviceId: null, inputSettings: null, sendSettings: null, videoTrackForNetworkConnectivityTest: null, videoTrackForConnectionQualityTest: null }, void 0 !== h4.showLocalVideo ? i4._callObjectMode ? console.error("showLocalVideo is not available in call object mode") : i4._showLocalVideo = !!h4.showLocalVideo : i4._showLocalVideo = true, void 0 !== h4.showParticipantsBar ? i4._callObjectMode ? console.error("showParticipantsBar is not available in call object mode") : i4._showParticipantsBar = !!h4.showParticipantsBar : i4._showParticipantsBar = true, void 0 !== h4.customIntegrations ? i4._callObjectMode ? console.error("customIntegrations is not available in call object mode") : i4._customIntegrations = h4.customIntegrations : i4._customIntegrations = {}, void 0 !== h4.customTrayButtons ? i4._callObjectMode ? console.error("customTrayButtons is not available in call object mode") : i4._customTrayButtons = h4.customTrayButtons : i4._customTrayButtons = {}, void 0 !== h4.activeSpeakerMode ? i4._callObjectMode ? console.error("activeSpeakerMode is not available in call object mode") : i4._activeSpeakerMode = !!h4.activeSpeakerMode : i4._activeSpeakerMode = false, h4.receiveSettings ? i4._callObjectMode ? i4._receiveSettings = h4.receiveSettings : console.error("receiveSettings is only available in call object mode") : i4._receiveSettings = {}, i4.validateProperties(h4), i4.properties = Aa2({}, h4), i4._inputSettings || (i4._inputSettings = {}), i4._callObjectLoader = i4._callObjectMode ? new Us2(i4.callClientId) : null, i4._callState = ti2, i4._isPreparingToJoin = false, i4._accessState = { access: fi2 }, i4._meetingSessionSummary = {}, i4._finalSummaryOfPrevSession = {}, i4._meetingSessionState = _c2(Ra2, i4._callObjectMode), i4._nativeInCallAudioMode = Da2, i4._participants = {}, i4._isScreenSharing = false, i4._participantCounts = Fa2, i4._rmpPlayerState = {}, i4._waitingParticipants = {}, i4._network = { threshold: "good", quality: 100, networkState: "unknown", stats: {} }, i4._activeSpeaker = {}, i4._localAudioLevel = 0, i4._isLocalAudioLevelObserverRunning = false, i4._remoteParticipantsAudioLevel = {}, i4._isRemoteParticipantsAudioLevelObserverRunning = false, i4._maxAppMessageSize = $o2, i4._messageChannel = is2() ? new js2() : new Os2(), i4._iframe && (i4._iframe.requestFullscreen ? i4._iframe.addEventListener("fullscreenchange", (function() {
31102          document.fullscreenElement === i4._iframe ? (i4.emitDailyJSEvent({ action: Io2 }), i4.sendMessageToCallMachine({ action: Io2 })) : (i4.emitDailyJSEvent({ action: xo2 }), i4.sendMessageToCallMachine({ action: xo2 }));
31103        })) : i4._iframe.webkitRequestFullscreen && i4._iframe.addEventListener("webkitfullscreenchange", (function() {
31104          document.webkitFullscreenElement === i4._iframe ? (i4.emitDailyJSEvent({ action: Io2 }), i4.sendMessageToCallMachine({ action: Io2 })) : (i4.emitDailyJSEvent({ action: xo2 }), i4.sendMessageToCallMachine({ action: xo2 }));
31105        }))), is2()) {
31106          var f3 = i4.nativeUtils();
31107          f3.addAudioFocusChangeListener && f3.removeAudioFocusChangeListener && f3.addAppStateChangeListener && f3.removeAppStateChangeListener && f3.addSystemScreenCaptureStopListener && f3.removeSystemScreenCaptureStopListener || console.warn("expected (add|remove)(AudioFocusChange|AppActiveStateChange|SystemScreenCaptureStop)Listener to be available in React Native"), i4._hasNativeAudioFocus = true, f3.addAudioFocusChangeListener(i4.handleNativeAudioFocusChange), f3.addAppStateChangeListener(i4.handleNativeAppStateChange), f3.addSystemScreenCaptureStopListener(i4.handleNativeSystemScreenCaptureStop);
31108        }
31109        return i4._callObjectMode && i4.startListeningForDeviceChanges(), i4._messageChannel.addListenerForMessagesFromCallMachine(i4.handleMessageFromCallMachine, i4.callClientId, i4), i4;
31110      }
31111      return l2(r3, b2), o2(r3, [{ key: "destroy", value: (ee3 = p2((function* () {
31112        var e3;
31113        try {
31114          yield this.leave();
31115        } catch (e4) {
31116        }
31117        var t3 = this._iframe;
31118        if (t3) {
31119          var n3 = t3.parentElement;
31120          n3 && n3.removeChild(t3);
31121        }
31122        if (this._messageChannel.removeListener(this.handleMessageFromCallMachine), is2()) {
31123          var r4 = this.nativeUtils();
31124          r4.removeAudioFocusChangeListener(this.handleNativeAudioFocusChange), r4.removeAppStateChangeListener(this.handleNativeAppStateChange), r4.removeSystemScreenCaptureStopListener(this.handleNativeSystemScreenCaptureStop);
31125        }
31126        this._callObjectMode && this.stopListeningForDeviceChanges(), this.resetMeetingDependentVars(), this._destroyed = true, this.emitDailyJSEvent({ action: "call-instance-destroyed" }), delete La2[this.callClientId], (null === (e3 = window) || void 0 === e3 || null === (e3 = e3._daily) || void 0 === e3 ? void 0 : e3.instances) && delete window._daily.instances[this.callClientId], this.strictMode && (this.callClientId = void 0);
31127      })), function() {
31128        return ee3.apply(this, arguments);
31129      }) }, { key: "isDestroyed", value: function() {
31130        return !!this._destroyed;
31131      } }, { key: "loadCss", value: function(e3) {
31132        var t3 = e3.bodyClass, n3 = e3.cssFile, r4 = e3.cssText;
31133        return nc2(), this.sendMessageToCallMachine({ action: "load-css", cssFile: this.absoluteUrl(n3), bodyClass: t3, cssText: r4 }), this;
31134      } }, { key: "iframe", value: function() {
31135        return nc2(), this._iframe;
31136      } }, { key: "meetingState", value: function() {
31137        return this._callState;
31138      } }, { key: "accessState", value: function() {
31139        return ec2(this._callObjectMode, "accessState()"), this._accessState;
31140      } }, { key: "participants", value: function() {
31141        return this._participants;
31142      } }, { key: "participantCounts", value: function() {
31143        return this._participantCounts;
31144      } }, { key: "waitingParticipants", value: function() {
31145        return ec2(this._callObjectMode, "waitingParticipants()"), this._waitingParticipants;
31146      } }, { key: "validateParticipantProperties", value: function(e3, t3) {
31147        for (var n3 in t3) {
31148          if (!Wa2[n3]) throw new Error("unrecognized updateParticipant property ".concat(n3));
31149          if (Wa2[n3].validate && !Wa2[n3].validate(t3[n3], this, this._participants[e3])) throw new Error(Wa2[n3].help);
31150        }
31151      } }, { key: "updateParticipant", value: function(e3, t3) {
31152        return this._participants.local && this._participants.local.session_id === e3 && (e3 = "local"), e3 && t3 && (this.validateParticipantProperties(e3, t3), this.sendMessageToCallMachine({ action: "update-participant", id: e3, properties: t3 })), this;
31153      } }, { key: "updateParticipants", value: function(e3) {
31154        var t3 = this._participants.local && this._participants.local.session_id;
31155        for (var n3 in e3) n3 === t3 && (n3 = "local"), n3 && e3[n3] && this.validateParticipantProperties(n3, e3[n3]);
31156        return this.sendMessageToCallMachine({ action: "update-participants", participants: e3 }), this;
31157      } }, { key: "updateWaitingParticipant", value: (Z3 = p2((function* () {
31158        var e3 = this, t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", r4 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
31159        if (ec2(this._callObjectMode, "updateWaitingParticipant()"), Qa2(this._callState, "updateWaitingParticipant()"), "string" != typeof t3 || "object" !== n2(r4)) throw new Error("updateWaitingParticipant() must take an id string and a updates object");
31160        return new Promise((function(n3, i4) {
31161          e3.sendMessageToCallMachine({ action: "daily-method-update-waiting-participant", id: t3, updates: r4 }, (function(e4) {
31162            e4.error && i4(e4.error), e4.id || i4(new Error("unknown error in updateWaitingParticipant()")), n3({ id: e4.id });
31163          }));
31164        }));
31165      })), function() {
31166        return Z3.apply(this, arguments);
31167      }) }, { key: "updateWaitingParticipants", value: (X3 = p2((function* () {
31168        var e3 = this, t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
31169        if (ec2(this._callObjectMode, "updateWaitingParticipants()"), Qa2(this._callState, "updateWaitingParticipants()"), "object" !== n2(t3)) throw new Error("updateWaitingParticipants() must take a mapping between ids and update objects");
31170        return new Promise((function(n3, r4) {
31171          e3.sendMessageToCallMachine({ action: "daily-method-update-waiting-participants", updatesById: t3 }, (function(e4) {
31172            e4.error && r4(e4.error), e4.ids || r4(new Error("unknown error in updateWaitingParticipants()")), n3({ ids: e4.ids });
31173          }));
31174        }));
31175      })), function() {
31176        return X3.apply(this, arguments);
31177      }) }, { key: "requestAccess", value: (Y3 = p2((function* () {
31178        var e3 = this, t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n3 = t3.access, r4 = void 0 === n3 ? { level: vi2 } : n3, i4 = t3.name, o3 = void 0 === i4 ? "" : i4;
31179        return ec2(this._callObjectMode, "requestAccess()"), Qa2(this._callState, "requestAccess()"), new Promise((function(t4, n4) {
31180          e3.sendMessageToCallMachine({ action: "daily-method-request-access", access: r4, name: o3 }, (function(e4) {
31181            e4.error && n4(e4.error), e4.access || n4(new Error("unknown error in requestAccess()")), t4({ access: e4.access, granted: e4.granted });
31182          }));
31183        }));
31184      })), function() {
31185        return Y3.apply(this, arguments);
31186      }) }, { key: "localAudio", value: function() {
31187        return this._participants.local ? !["blocked", "off"].includes(this._participants.local.tracks.audio.state) : null;
31188      } }, { key: "localVideo", value: function() {
31189        return this._participants.local ? !["blocked", "off"].includes(this._participants.local.tracks.video.state) : null;
31190      } }, { key: "setLocalAudio", value: function(e3) {
31191        var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
31192        return "forceDiscardTrack" in t3 && (is2() ? (console.warn("forceDiscardTrack option not supported in React Native; ignoring"), t3 = {}) : e3 && (console.warn("forceDiscardTrack option only supported when calling setLocalAudio(false); ignoring"), t3 = {})), this.sendMessageToCallMachine({ action: "local-audio", state: e3, options: t3 }), this;
31193      } }, { key: "localScreenAudio", value: function() {
31194        return this._participants.local ? !["blocked", "off"].includes(this._participants.local.tracks.screenAudio.state) : null;
31195      } }, { key: "localScreenVideo", value: function() {
31196        return this._participants.local ? !["blocked", "off"].includes(this._participants.local.tracks.screenVideo.state) : null;
31197      } }, { key: "updateScreenShare", value: function(e3) {
31198        if (this._isScreenSharing) return this.sendMessageToCallMachine({ action: "local-screen-update", options: e3 }), this;
31199        console.warn("There is no screen share in progress. Try calling startScreenShare first.");
31200      } }, { key: "setLocalVideo", value: function(e3) {
31201        return this.sendMessageToCallMachine({ action: "local-video", state: e3 }), this;
31202      } }, { key: "_setAllowLocalAudio", value: function(e3) {
31203        if (this._preloadCache.allowLocalAudio = e3, this._callMachineInitialized) return this.sendMessageToCallMachine({ action: "set-allow-local-audio", state: e3 }), this;
31204      } }, { key: "_setAllowLocalVideo", value: function(e3) {
31205        if (this._preloadCache.allowLocalVideo = e3, this._callMachineInitialized) return this.sendMessageToCallMachine({ action: "set-allow-local-video", state: e3 }), this;
31206      } }, { key: "getReceiveSettings", value: (K3 = p2((function* (e3) {
31207        var t3 = this, r4 = (arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}).showInheritedValues, i4 = void 0 !== r4 && r4;
31208        if (ec2(this._callObjectMode, "getReceiveSettings()"), !this._callMachineInitialized) return this._receiveSettings;
31209        switch (n2(e3)) {
31210          case "string":
31211            return new Promise((function(n3) {
31212              t3.sendMessageToCallMachine({ action: "get-single-participant-receive-settings", id: e3, showInheritedValues: i4 }, (function(e4) {
31213                n3(e4.receiveSettings);
31214              }));
31215            }));
31216          case "undefined":
31217            return this._receiveSettings;
31218          default:
31219            throw new Error('first argument to getReceiveSettings() must be a participant id (or "base"), or there should be no arguments');
31220        }
31221      })), function(e3) {
31222        return K3.apply(this, arguments);
31223      }) }, { key: "updateReceiveSettings", value: (Q3 = p2((function* (e3) {
31224        var t3 = this;
31225        if (ec2(this._callObjectMode, "updateReceiveSettings()"), !oc2(e3, { allowAllParticipantsKey: true })) throw new Error(pc2({ allowAllParticipantsKey: true }));
31226        return Qa2(this._callState, "updateReceiveSettings()", "To specify receive settings earlier, use the receiveSettings config property."), new Promise((function(n3) {
31227          t3.sendMessageToCallMachine({ action: "update-receive-settings", receiveSettings: e3 }, (function(e4) {
31228            n3({ receiveSettings: e4.receiveSettings });
31229          }));
31230        }));
31231      })), function(e3) {
31232        return Q3.apply(this, arguments);
31233      }) }, { key: "_prepInputSettingsForSharing", value: function(e3, t3) {
31234        if (e3) {
31235          var n3 = {};
31236          if (e3.audio) {
31237            var r4, i4, o3;
31238            e3.audio.settings && (!Object.keys(e3.audio.settings).length && t3 || (n3.audio = { settings: Aa2({}, e3.audio.settings) })), t3 && null !== (r4 = n3.audio) && void 0 !== r4 && null !== (r4 = r4.settings) && void 0 !== r4 && r4.customTrack && (n3.audio.settings = { customTrack: this._sharedTracks.audioTrack });
31239            var s3 = "none" === (null === (i4 = e3.audio.processor) || void 0 === i4 ? void 0 : i4.type) && (null === (o3 = e3.audio.processor) || void 0 === o3 ? void 0 : o3._isDefaultWhenNone);
31240            if (e3.audio.processor && !s3) {
31241              var a3 = Aa2({}, e3.audio.processor);
31242              delete a3._isDefaultWhenNone, n3.audio = Aa2(Aa2({}, n3.audio), {}, { processor: a3 });
31243            }
31244          }
31245          if (e3.video) {
31246            var c4, l3, u3;
31247            e3.video.settings && (!Object.keys(e3.video.settings).length && t3 || (n3.video = { settings: Aa2({}, e3.video.settings) })), t3 && null !== (c4 = n3.video) && void 0 !== c4 && null !== (c4 = c4.settings) && void 0 !== c4 && c4.customTrack && (n3.video.settings = { customTrack: this._sharedTracks.videoTrack });
31248            var d4 = "none" === (null === (l3 = e3.video.processor) || void 0 === l3 ? void 0 : l3.type) && (null === (u3 = e3.video.processor) || void 0 === u3 ? void 0 : u3._isDefaultWhenNone);
31249            if (e3.video.processor && !d4) {
31250              var p3 = Aa2({}, e3.video.processor);
31251              delete p3._isDefaultWhenNone, n3.video = Aa2(Aa2({}, n3.video), {}, { processor: p3 });
31252            }
31253          }
31254          return n3;
31255        }
31256      } }, { key: "getInputSettings", value: function() {
31257        var e3 = this;
31258        return nc2(), new Promise((function(t3) {
31259          t3(e3._getInputSettings());
31260        }));
31261      } }, { key: "_getInputSettings", value: function() {
31262        var e3, t3, n3, r4, i4, o3, s3 = { processor: { type: "none", _isDefaultWhenNone: true } };
31263        this._inputSettings ? (e3 = (null === (n3 = this._inputSettings) || void 0 === n3 ? void 0 : n3.video) || s3, t3 = (null === (r4 = this._inputSettings) || void 0 === r4 ? void 0 : r4.audio) || s3) : (e3 = (null === (i4 = this._preloadCache) || void 0 === i4 || null === (i4 = i4.inputSettings) || void 0 === i4 ? void 0 : i4.video) || s3, t3 = (null === (o3 = this._preloadCache) || void 0 === o3 || null === (o3 = o3.inputSettings) || void 0 === o3 ? void 0 : o3.audio) || s3);
31264        var a3 = { audio: t3, video: e3 };
31265        return this._prepInputSettingsForSharing(a3, true);
31266      } }, { key: "_updatePreloadCacheInputSettings", value: function(e3, t3) {
31267        var n3 = this._inputSettings || {}, r4 = {};
31268        if (e3.video) {
31269          var i4, o3, s3;
31270          if (r4.video = {}, e3.video.settings) r4.video.settings = {}, t3 || e3.video.settings.customTrack || null === (s3 = n3.video) || void 0 === s3 || !s3.settings ? r4.video.settings = e3.video.settings : r4.video.settings = Aa2(Aa2({}, n3.video.settings), e3.video.settings), Object.keys(r4.video.settings).length || delete r4.video.settings;
31271          else null !== (i4 = n3.video) && void 0 !== i4 && i4.settings && (r4.video.settings = n3.video.settings);
31272          e3.video.processor ? r4.video.processor = e3.video.processor : null !== (o3 = n3.video) && void 0 !== o3 && o3.processor && (r4.video.processor = n3.video.processor);
31273        } else n3.video && (r4.video = n3.video);
31274        if (e3.audio) {
31275          var a3, c4, l3;
31276          if (r4.audio = {}, e3.audio.settings) r4.audio.settings = {}, t3 || e3.audio.settings.customTrack || null === (l3 = n3.audio) || void 0 === l3 || !l3.settings ? r4.audio.settings = e3.audio.settings : r4.audio.settings = Aa2(Aa2({}, n3.audio.settings), e3.audio.settings), Object.keys(r4.audio.settings).length || delete r4.audio.settings;
31277          else null !== (a3 = n3.audio) && void 0 !== a3 && a3.settings && (r4.audio.settings = n3.audio.settings);
31278          e3.audio.processor ? r4.audio.processor = e3.audio.processor : null !== (c4 = n3.audio) && void 0 !== c4 && c4.processor && (r4.audio.processor = n3.audio.processor);
31279        } else n3.audio && (r4.audio = n3.audio);
31280        this._maybeUpdateInputSettings(r4);
31281      } }, { key: "_devicesFromInputSettings", value: function(e3) {
31282        var t3, n3, r4 = (null == e3 || null === (t3 = e3.video) || void 0 === t3 || null === (t3 = t3.settings) || void 0 === t3 ? void 0 : t3.deviceId) || null, i4 = (null == e3 || null === (n3 = e3.audio) || void 0 === n3 || null === (n3 = n3.settings) || void 0 === n3 ? void 0 : n3.deviceId) || null, o3 = this._preloadCache.outputDeviceId || null;
31283        return { camera: r4 ? { deviceId: r4 } : {}, mic: i4 ? { deviceId: i4 } : {}, speaker: o3 ? { deviceId: o3 } : {} };
31284      } }, { key: "updateInputSettings", value: (G3 = p2((function* (e3) {
31285        var t3 = this;
31286        return nc2(), sc2(e3) ? e3.video || e3.audio ? (ac2(e3, this.properties.dailyConfig, this._sharedTracks), this._callObjectMode && !this._callMachineInitialized ? (this._updatePreloadCacheInputSettings(e3, true), this._getInputSettings()) : new Promise((function(n3, r4) {
31287          t3.sendMessageToCallMachine({ action: "update-input-settings", inputSettings: e3 }, (function(i4) {
31288            if (i4.error) r4(i4.error);
31289            else {
31290              if (i4.returnPreloadCache) return t3._updatePreloadCacheInputSettings(e3, true), void n3(t3._getInputSettings());
31291              t3._maybeUpdateInputSettings(i4.inputSettings), n3(t3._prepInputSettingsForSharing(i4.inputSettings, true));
31292            }
31293          }));
31294        }))) : this._getInputSettings() : (console.error(dc2()), Promise.reject(dc2()));
31295      })), function(e3) {
31296        return G3.apply(this, arguments);
31297      }) }, { key: "setBandwidth", value: function(e3) {
31298        var t3 = e3.kbs, n3 = e3.trackConstraints;
31299        if (nc2(), this._callMachineInitialized) return this.sendMessageToCallMachine({ action: "set-bandwidth", kbs: t3, trackConstraints: n3 }), this;
31300      } }, { key: "getDailyLang", value: function() {
31301        var e3 = this;
31302        if (nc2(), this._callMachineInitialized) return new Promise((function(t3) {
31303          e3.sendMessageToCallMachine({ action: "get-daily-lang" }, (function(e4) {
31304            delete e4.action, delete e4.callbackStamp, t3(e4);
31305          }));
31306        }));
31307      } }, { key: "setDailyLang", value: function(e3) {
31308        return nc2(), this.sendMessageToCallMachine({ action: "set-daily-lang", lang: e3 }), this;
31309      } }, { key: "setProxyUrl", value: function(e3) {
31310        return this.sendMessageToCallMachine({ action: "set-proxy-url", proxyUrl: e3 }), this;
31311      } }, { key: "setIceConfig", value: function(e3) {
31312        return this.sendMessageToCallMachine({ action: "set-ice-config", iceConfig: e3 }), this;
31313      } }, { key: "meetingSessionSummary", value: function() {
31314        return [si2, ai2].includes(this._callState) ? this._finalSummaryOfPrevSession : this._meetingSessionSummary;
31315      } }, { key: "getMeetingSession", value: (H3 = p2((function* () {
31316        var e3 = this;
31317        return console.warn("getMeetingSession() is deprecated: use meetingSessionSummary(), which will return immediately"), Qa2(this._callState, "getMeetingSession()"), new Promise((function(t3) {
31318          e3.sendMessageToCallMachine({ action: "get-meeting-session" }, (function(e4) {
31319            delete e4.action, delete e4.callbackStamp, t3(e4);
31320          }));
31321        }));
31322      })), function() {
31323        return H3.apply(this, arguments);
31324      }) }, { key: "meetingSessionState", value: function() {
31325        return Qa2(this._callState, "meetingSessionState"), this._meetingSessionState;
31326      } }, { key: "setMeetingSessionData", value: function(e3) {
31327        var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "replace";
31328        ec2(this._callObjectMode, "setMeetingSessionData()"), Qa2(this._callState, "setMeetingSessionData");
31329        try {
31330          !(function(e4, t4) {
31331            new Ds2({ data: e4, mergeStrategy: t4 });
31332          })(e3, t3);
31333        } catch (e4) {
31334          throw console.error(e4), e4;
31335        }
31336        try {
31337          this.sendMessageToCallMachine({ action: "set-session-data", data: e3, mergeStrategy: t3 });
31338        } catch (e4) {
31339          throw new Error("Error setting meeting session data: ".concat(e4));
31340        }
31341      } }, { key: "setUserName", value: function(e3, t3) {
31342        var n3 = this;
31343        return this.properties.userName = e3, new Promise((function(r4) {
31344          n3.sendMessageToCallMachine({ action: "set-user-name", name: null != e3 ? e3 : "", thisMeetingOnly: is2() || !!t3 && !!t3.thisMeetingOnly }, (function(e4) {
31345            delete e4.action, delete e4.callbackStamp, r4(e4);
31346          }));
31347        }));
31348      } }, { key: "setUserData", value: (W3 = p2((function* (e3) {
31349        var t3 = this;
31350        try {
31351          ic2(e3);
31352        } catch (e4) {
31353          throw console.error(e4), e4;
31354        }
31355        if (this.properties.userData = e3, this._callMachineInitialized) return new Promise((function(n3) {
31356          try {
31357            t3.sendMessageToCallMachine({ action: "set-user-data", userData: e3 }, (function(e4) {
31358              delete e4.action, delete e4.callbackStamp, n3(e4);
31359            }));
31360          } catch (e4) {
31361            throw new Error("Error setting user data: ".concat(e4));
31362          }
31363        }));
31364      })), function(e3) {
31365        return W3.apply(this, arguments);
31366      }) }, { key: "validateAudioLevelInterval", value: function(e3) {
31367        if (e3 && (e3 < 100 || "number" != typeof e3)) throw new Error("The interval must be a number greater than or equal to 100 milliseconds.");
31368      } }, { key: "startLocalAudioLevelObserver", value: function(e3) {
31369        var t3 = this;
31370        if ("undefined" == typeof AudioWorkletNode && !is2()) throw new Error("startLocalAudioLevelObserver() is not supported on this browser");
31371        if (this.validateAudioLevelInterval(e3), this._callMachineInitialized) return this._isLocalAudioLevelObserverRunning = true, new Promise((function(n3, r4) {
31372          t3.sendMessageToCallMachine({ action: "start-local-audio-level-observer", interval: e3 }, (function(e4) {
31373            t3._isLocalAudioLevelObserverRunning = !e4.error, e4.error ? r4({ error: e4.error }) : n3();
31374          }));
31375        }));
31376        this._preloadCache.localAudioLevelObserver = { enabled: true, interval: e3 };
31377      } }, { key: "isLocalAudioLevelObserverRunning", value: function() {
31378        return this._isLocalAudioLevelObserverRunning;
31379      } }, { key: "stopLocalAudioLevelObserver", value: function() {
31380        this._preloadCache.localAudioLevelObserver = null, this._localAudioLevel = 0, this._isLocalAudioLevelObserverRunning = false, this.sendMessageToCallMachine({ action: "stop-local-audio-level-observer" });
31381      } }, { key: "startRemoteParticipantsAudioLevelObserver", value: function(e3) {
31382        var t3 = this;
31383        if (this.validateAudioLevelInterval(e3), this._callMachineInitialized) return this._isRemoteParticipantsAudioLevelObserverRunning = true, new Promise((function(n3, r4) {
31384          t3.sendMessageToCallMachine({ action: "start-remote-participants-audio-level-observer", interval: e3 }, (function(e4) {
31385            t3._isRemoteParticipantsAudioLevelObserverRunning = !e4.error, e4.error ? r4({ error: e4.error }) : n3();
31386          }));
31387        }));
31388        this._preloadCache.remoteParticipantsAudioLevelObserver = { enabled: true, interval: e3 };
31389      } }, { key: "isRemoteParticipantsAudioLevelObserverRunning", value: function() {
31390        return this._isRemoteParticipantsAudioLevelObserverRunning;
31391      } }, { key: "stopRemoteParticipantsAudioLevelObserver", value: function() {
31392        this._preloadCache.remoteParticipantsAudioLevelObserver = null, this._remoteParticipantsAudioLevel = {}, this._isRemoteParticipantsAudioLevelObserverRunning = false, this.sendMessageToCallMachine({ action: "stop-remote-participants-audio-level-observer" });
31393      } }, { key: "startCamera", value: (z3 = p2((function* () {
31394        var e3 = this, t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
31395        if (ec2(this._callObjectMode, "startCamera()"), Ya2(this._callState, this._isPreparingToJoin, "startCamera()", "Did you mean to use setLocalAudio() and/or setLocalVideo() instead?"), this.needsLoad()) try {
31396          yield this.load(t3);
31397        } catch (e4) {
31398          return Promise.reject(e4);
31399        }
31400        else {
31401          if (this._didPreAuth) {
31402            if (t3.url && t3.url !== this.properties.url) return console.error("url in startCamera() is different than the one used in preAuth()"), Promise.reject();
31403            if (t3.token && t3.token !== this.properties.token) return console.error("token in startCamera() is different than the one used in preAuth()"), Promise.reject();
31404          }
31405          this.validateProperties(t3), this.properties = Aa2(Aa2({}, this.properties), t3);
31406        }
31407        return new Promise((function(t4) {
31408          e3._preloadCache.inputSettings = e3._prepInputSettingsForSharing(e3._inputSettings, false), e3.sendMessageToCallMachine({ action: "start-camera", properties: Ga2(e3.properties, e3.callClientId), preloadCache: Ga2(e3._preloadCache, e3.callClientId) }, (function(e4) {
31409            t4({ camera: e4.camera, mic: e4.mic, speaker: e4.speaker });
31410          }));
31411        }));
31412      })), function() {
31413        return z3.apply(this, arguments);
31414      }) }, { key: "validateCustomTrack", value: function(e3, t3, n3) {
31415        if (n3 && n3.length > 50) throw new Error("Custom track `trackName` must not be more than 50 characters");
31416        if (t3 && "music" !== t3 && "speech" !== t3 && !(t3 instanceof Object)) throw new Error("Custom track `mode` must be either `music` | `speech` | `DailyMicAudioModeSettings` or `undefined`");
31417        if (!!n3 && ["cam-audio", "cam-video", "screen-video", "screen-audio", "rmpAudio", "rmpVideo", "customVideoDefaults"].includes(n3)) throw new Error("Custom track `trackName` must not match a track name already used by daily: cam-audio, cam-video, customVideoDefaults, screen-video, screen-audio, rmpAudio, rmpVideo");
31418        if (!(e3 instanceof MediaStreamTrack)) throw new Error("Custom tracks provided must be instances of MediaStreamTrack");
31419      } }, { key: "startCustomTrack", value: function() {
31420        var e3 = this, t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : { track, mode, trackName, ignoreAudioLevel };
31421        return nc2(), Qa2(this._callState, "startCustomTrack()"), this.validateCustomTrack(t3.track, t3.mode, t3.trackName), new Promise((function(n3, r4) {
31422          e3._sharedTracks.customTrack = t3.track, t3.track = Qo2, e3.sendMessageToCallMachine({ action: "start-custom-track", properties: t3 }, (function(e4) {
31423            e4.error ? r4({ error: e4.error }) : n3(e4.mediaTag);
31424          }));
31425        }));
31426      } }, { key: "stopCustomTrack", value: function(e3) {
31427        var t3 = this;
31428        return nc2(), Qa2(this._callState, "stopCustomTrack()"), new Promise((function(n3) {
31429          t3.sendMessageToCallMachine({ action: "stop-custom-track", mediaTag: e3 }, (function(e4) {
31430            n3(e4.mediaTag);
31431          }));
31432        }));
31433      } }, { key: "setCamera", value: function(e3) {
31434        var t3 = this;
31435        return rc2(), Xa2(this._callMachineInitialized, "setCamera()"), new Promise((function(n3) {
31436          t3.sendMessageToCallMachine({ action: "set-camera", cameraDeviceId: e3 }, (function(e4) {
31437            n3({ device: e4.device });
31438          }));
31439        }));
31440      } }, { key: "setAudioDevice", value: (q3 = p2((function* (e3) {
31441        return rc2(), this.nativeUtils().setAudioDevice(e3), { deviceId: yield this.nativeUtils().getAudioDevice() };
31442      })), function(e3) {
31443        return q3.apply(this, arguments);
31444      }) }, { key: "cycleCamera", value: function() {
31445        var e3 = this, t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
31446        return new Promise((function(n3) {
31447          e3.sendMessageToCallMachine({ action: "cycle-camera", properties: t3 }, (function(e4) {
31448            n3({ device: e4.device });
31449          }));
31450        }));
31451      } }, { key: "cycleMic", value: function() {
31452        var e3 = this;
31453        return nc2(), new Promise((function(t3) {
31454          e3.sendMessageToCallMachine({ action: "cycle-mic" }, (function(e4) {
31455            t3({ device: e4.device });
31456          }));
31457        }));
31458      } }, { key: "getCameraFacingMode", value: function() {
31459        var e3 = this;
31460        return rc2(), new Promise((function(t3) {
31461          e3.sendMessageToCallMachine({ action: "get-camera-facing-mode" }, (function(e4) {
31462            t3(e4.facingMode);
31463          }));
31464        }));
31465      } }, { key: "setInputDevicesAsync", value: ($3 = p2((function* (e3) {
31466        var t3 = this, n3 = e3.audioDeviceId, r4 = e3.videoDeviceId, i4 = e3.audioSource, o3 = e3.videoSource;
31467        if (nc2(), void 0 !== i4 && (n3 = i4), void 0 !== o3 && (r4 = o3), "boolean" == typeof n3 && (this._setAllowLocalAudio(n3), n3 = void 0), "boolean" == typeof r4 && (this._setAllowLocalVideo(r4), r4 = void 0), !n3 && !r4) return yield this.getInputDevices();
31468        var s3 = {};
31469        return n3 && (n3 instanceof MediaStreamTrack ? (this._sharedTracks.audioTrack = n3, n3 = Qo2, s3.audio = { settings: { customTrack: n3 } }) : (delete this._sharedTracks.audioTrack, s3.audio = { settings: { deviceId: n3 } })), r4 && (r4 instanceof MediaStreamTrack ? (this._sharedTracks.videoTrack = r4, r4 = Qo2, s3.video = { settings: { customTrack: r4 } }) : (delete this._sharedTracks.videoTrack, s3.video = { settings: { deviceId: r4 } })), this._callObjectMode && this.needsLoad() ? (this._updatePreloadCacheInputSettings(s3, false), this._devicesFromInputSettings(this._inputSettings)) : new Promise((function(e4) {
31470          t3.sendMessageToCallMachine({ action: "set-input-devices", audioDeviceId: n3, videoDeviceId: r4 }, (function(n4) {
31471            if (delete n4.action, delete n4.callbackStamp, n4.returnPreloadCache) return t3._updatePreloadCacheInputSettings(s3, false), void e4(t3._devicesFromInputSettings(t3._inputSettings));
31472            e4(n4);
31473          }));
31474        }));
31475      })), function(e3) {
31476        return $3.apply(this, arguments);
31477      }) }, { key: "setOutputDeviceAsync", value: (J3 = p2((function* (e3) {
31478        var t3 = this, n3 = e3.outputDeviceId;
31479        if (nc2(), !n3 || "string" != typeof n3) throw new Error("outputDeviceId must be provided and must be a valid device id");
31480        return this._preloadCache.outputDeviceId = n3, this._callObjectMode && this.needsLoad() ? this._devicesFromInputSettings(this._inputSettings) : new Promise((function(e4, r4) {
31481          t3.sendMessageToCallMachine({ action: "set-output-device", outputDeviceId: n3 }, (function(n4) {
31482            if (delete n4.action, delete n4.callbackStamp, n4.error) {
31483              var i4 = new Error(n4.error.message);
31484              return i4.type = n4.error.type, void r4(i4);
31485            }
31486            n4.returnPreloadCache ? e4(t3._devicesFromInputSettings(t3._inputSettings)) : e4(n4);
31487          }));
31488        }));
31489      })), function(e3) {
31490        return J3.apply(this, arguments);
31491      }) }, { key: "getInputDevices", value: (V3 = p2((function* () {
31492        var e3 = this;
31493        return this._callObjectMode && this.needsLoad() ? this._devicesFromInputSettings(this._inputSettings) : new Promise((function(t3) {
31494          e3.sendMessageToCallMachine({ action: "get-input-devices" }, (function(n3) {
31495            n3.returnPreloadCache ? t3(e3._devicesFromInputSettings(e3._inputSettings)) : t3({ camera: n3.camera, mic: n3.mic, speaker: n3.speaker });
31496          }));
31497        }));
31498      })), function() {
31499        return V3.apply(this, arguments);
31500      }) }, { key: "nativeInCallAudioMode", value: function() {
31501        return rc2(), this._nativeInCallAudioMode;
31502      } }, { key: "setNativeInCallAudioMode", value: function(e3) {
31503        if (rc2(), [Da2, Na2].includes(e3)) {
31504          if (e3 !== this._nativeInCallAudioMode) return this._nativeInCallAudioMode = e3, !this.disableReactNativeAutoDeviceManagement("audio") && Ka2(this._callState, this._isPreparingToJoin) && this.nativeUtils().setAudioMode(this._nativeInCallAudioMode), this;
31505        } else console.error("invalid in-call audio mode specified: ", e3);
31506      } }, { key: "preAuth", value: (U3 = p2((function* () {
31507        var e3 = this, t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
31508        if (ec2(this._callObjectMode, "preAuth()"), Ya2(this._callState, this._isPreparingToJoin, "preAuth()"), this.needsLoad() && (yield this.load(t3)), !t3.url) throw new Error("preAuth() requires at least a url to be provided");
31509        return this.validateProperties(t3), this.properties = Aa2(Aa2({}, this.properties), t3), new Promise((function(t4, n3) {
31510          e3._preloadCache.inputSettings = e3._prepInputSettingsForSharing(e3._inputSettings, false), e3.sendMessageToCallMachine({ action: "daily-method-preauth", properties: Ga2(e3.properties, e3.callClientId), preloadCache: Ga2(e3._preloadCache, e3.callClientId) }, (function(r4) {
31511            return r4.error ? n3(r4.error) : r4.access ? (e3._didPreAuth = true, void t4({ access: r4.access })) : n3(new Error("unknown error in preAuth()"));
31512          }));
31513        }));
31514      })), function() {
31515        return U3.apply(this, arguments);
31516      }) }, { key: "load", value: (R3 = p2((function* (e3) {
31517        var t3 = this;
31518        if (this.needsLoad()) {
31519          if (this._destroyed && (this._logUseAfterDestroy(), this.strictMode)) throw new Error("Use after destroy");
31520          if (e3 && (this.validateProperties(e3), this.properties = Aa2(Aa2({}, this.properties), e3)), !this._callObjectMode && !this.properties.url) throw new Error("can't load iframe meeting because url property isn't set");
31521          return this._updateCallState(ni2), this.emitDailyJSEvent({ action: Vi2 }), this._callObjectMode ? new Promise((function(e4, n3) {
31522            t3._callObjectLoader.cancel();
31523            var r4 = Date.now();
31524            t3._callObjectLoader.load(t3.properties.dailyConfig, (function(n4) {
31525              t3._bundleLoadTime = n4 ? "no-op" : Date.now() - r4, t3._updateCallState(ri2), n4 && t3.emitDailyJSEvent({ action: $i2 }), e4();
31526            }), (function(e5, r5) {
31527              if (t3.emitDailyJSEvent({ action: Ji2 }), !r5) {
31528                t3._updateCallState(ai2), t3.resetMeetingDependentVars();
31529                var i4 = { action: Jo2, errorMsg: e5.msg, error: { type: "connection-error", msg: "Failed to load call object bundle.", details: { on: "load", sourceError: e5, bundleUrl: B2(t3.properties.dailyConfig) } } };
31530                t3._maybeSendToSentry(i4), t3.emitDailyJSEvent(i4), n3(e5.msg);
31531              }
31532            }));
31533          })) : (this._iframe.src = F2(this.assembleMeetingUrl(), this.properties.dailyConfig), new Promise((function(e4, n3) {
31534            t3._loadedCallback = function(r4) {
31535              t3._callState !== ai2 ? (t3._updateCallState(ri2), (t3.properties.cssFile || t3.properties.cssText) && t3.loadCss(t3.properties), e4()) : n3(r4);
31536            };
31537          })));
31538        }
31539      })), function(e3) {
31540        return R3.apply(this, arguments);
31541      }) }, { key: "join", value: (L3 = p2((function* () {
31542        var e3 = this, t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
31543        this._testCallInProgress && this.stopTestCallQuality();
31544        var n3 = false;
31545        if (this.needsLoad()) {
31546          this.updateIsPreparingToJoin(true);
31547          try {
31548            yield this.load(t3);
31549          } catch (e4) {
31550            return this.updateIsPreparingToJoin(false), Promise.reject(e4);
31551          }
31552        } else {
31553          if (n3 = !(!this.properties.cssFile && !this.properties.cssText), this._didPreAuth) {
31554            if (t3.url && t3.url !== this.properties.url) return console.error("url in join() is different than the one used in preAuth()"), this.updateIsPreparingToJoin(false), Promise.reject();
31555            if (t3.token && t3.token !== this.properties.token) return console.error("token in join() is different than the one used in preAuth()"), this.updateIsPreparingToJoin(false), Promise.reject();
31556          }
31557          if (t3.url && !this._callObjectMode && t3.url && t3.url !== this.properties.url) return console.error("url in join() is different than the one used in load() (".concat(this.properties.url, " -> ").concat(t3.url, ")")), this.updateIsPreparingToJoin(false), Promise.reject();
31558          this.validateProperties(t3), this.properties = Aa2(Aa2({}, this.properties), t3);
31559        }
31560        return void 0 !== t3.showLocalVideo && (this._callObjectMode ? console.error("showLocalVideo is not available in callObject mode") : this._showLocalVideo = !!t3.showLocalVideo), void 0 !== t3.showParticipantsBar && (this._callObjectMode ? console.error("showParticipantsBar is not available in callObject mode") : this._showParticipantsBar = !!t3.showParticipantsBar), this._callState === oi2 || this._callState === ii2 ? (console.warn("already joined meeting, call leave() before joining again"), void this.updateIsPreparingToJoin(false)) : (this._updateCallState(ii2, false), this.emitDailyJSEvent({ action: Wi2 }), this._preloadCache.inputSettings = this._prepInputSettingsForSharing(this._inputSettings || {}, false), this.sendMessageToCallMachine({ action: "join-meeting", properties: Ga2(this.properties, this.callClientId), preloadCache: Ga2(this._preloadCache, this.callClientId) }), new Promise((function(t4, r4) {
31561          e3._joinedCallback = function(i4, o3) {
31562            if (e3._callState !== ai2) {
31563              if (e3._updateCallState(oi2), i4) for (var s3 in i4) {
31564                if (e3._callObjectMode) {
31565                  var a3 = e3._callMachine().store;
31566                  Zs2(i4[s3], a3), ea2(i4[s3], a3), na2(i4[s3], e3._participants[s3], a3);
31567                }
31568                e3._participants[s3] = Aa2({}, i4[s3]), e3.toggleParticipantAudioBasedOnNativeAudioFocus();
31569              }
31570              n3 && e3.loadCss(e3.properties), t4(i4);
31571            } else r4(o3);
31572          };
31573        })));
31574      })), function() {
31575        return L3.apply(this, arguments);
31576      }) }, { key: "leave", value: (x3 = p2((function* () {
31577        var e3 = this;
31578        return this._testCallInProgress && this.stopTestCallQuality(), new Promise((function(t3) {
31579          e3._callState === si2 || e3._callState === ai2 ? t3() : e3._callObjectLoader && !e3._callObjectLoader.loaded ? (e3._callObjectLoader.cancel(), e3._updateCallState(si2), e3.resetMeetingDependentVars(), e3.emitDailyJSEvent({ action: si2 }), t3()) : (e3._resolveLeave = t3, e3.sendMessageToCallMachine({ action: "leave-meeting" }));
31580        }));
31581      })), function() {
31582        return x3.apply(this, arguments);
31583      }) }, { key: "startScreenShare", value: (I3 = p2((function* () {
31584        var e3 = this, t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
31585        if (Xa2(this._callMachineInitialized, "startScreenShare()"), t3.screenVideoSendSettings && this._validateVideoSendSettings("screenVideo", t3.screenVideoSendSettings), t3.mediaStream && (this._sharedTracks.screenMediaStream = t3.mediaStream, t3.mediaStream = Qo2), "undefined" != typeof DailyNativeUtils && void 0 !== DailyNativeUtils.isIOS && DailyNativeUtils.isIOS) {
31586          var n3 = this.nativeUtils();
31587          if (yield n3.isScreenBeingCaptured()) return void this.emitDailyJSEvent({ action: Vo2, type: "screen-share-error", errorMsg: "Could not start the screen sharing. The screen is already been captured!" });
31588          n3.setSystemScreenCaptureStartCallback((function() {
31589            n3.setSystemScreenCaptureStartCallback(null), e3.sendMessageToCallMachine({ action: Wo2, captureOptions: t3 });
31590          })), n3.presentSystemScreenCapturePrompt();
31591        } else this.sendMessageToCallMachine({ action: Wo2, captureOptions: t3 });
31592      })), function() {
31593        return I3.apply(this, arguments);
31594      }) }, { key: "stopScreenShare", value: function() {
31595        Xa2(this._callMachineInitialized, "stopScreenShare()"), this.sendMessageToCallMachine({ action: "local-screen-stop" });
31596      } }, { key: "startRecording", value: function() {
31597        var e3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t3 = e3.type;
31598        if (t3 && "cloud" !== t3 && "raw-tracks" !== t3 && "local" !== t3) throw new Error("invalid type: ".concat(t3, ", allowed values 'cloud', 'raw-tracks', or 'local'"));
31599        this.sendMessageToCallMachine(Aa2({ action: "local-recording-start" }, e3));
31600      } }, { key: "updateRecording", value: function(e3) {
31601        var t3 = e3.layout, n3 = void 0 === t3 ? { preset: "default" } : t3, r4 = e3.instanceId;
31602        this.sendMessageToCallMachine({ action: "daily-method-update-recording", layout: n3, instanceId: r4 });
31603      } }, { key: "stopRecording", value: function() {
31604        var e3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
31605        this.sendMessageToCallMachine(Aa2({ action: "local-recording-stop" }, e3));
31606      } }, { key: "startLiveStreaming", value: function() {
31607        var e3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
31608        this.sendMessageToCallMachine(Aa2({ action: "daily-method-start-live-streaming" }, e3));
31609      } }, { key: "updateLiveStreaming", value: function(e3) {
31610        var t3 = e3.layout, n3 = void 0 === t3 ? { preset: "default" } : t3, r4 = e3.instanceId;
31611        this.sendMessageToCallMachine({ action: "daily-method-update-live-streaming", layout: n3, instanceId: r4 });
31612      } }, { key: "addLiveStreamingEndpoints", value: function(e3) {
31613        var t3 = e3.endpoints, n3 = e3.instanceId;
31614        this.sendMessageToCallMachine({ action: Ho2, endpointsOp: es2, endpoints: t3, instanceId: n3 });
31615      } }, { key: "removeLiveStreamingEndpoints", value: function(e3) {
31616        var t3 = e3.endpoints, n3 = e3.instanceId;
31617        this.sendMessageToCallMachine({ action: Ho2, endpointsOp: ts2, endpoints: t3, instanceId: n3 });
31618      } }, { key: "stopLiveStreaming", value: function() {
31619        var e3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
31620        this.sendMessageToCallMachine(Aa2({ action: "daily-method-stop-live-streaming" }, e3));
31621      } }, { key: "validateDailyConfig", value: function(e3) {
31622        e3.camSimulcastEncodings && (console.warn("camSimulcastEncodings is deprecated. Use sendSettings, found in DailyCallOptions, to provide camera simulcast settings."), this.validateSimulcastEncodings(e3.camSimulcastEncodings)), e3.screenSimulcastEncodings && console.warn("screenSimulcastEncodings is deprecated. Use sendSettings, found in DailyCallOptions, to provide screen simulcast settings."), vs2() && e3.noAutoDefaultDeviceChange && console.warn("noAutoDefaultDeviceChange is not supported on Android, and will be ignored.");
31623      } }, { key: "validateSimulcastEncodings", value: function(e3) {
31624        var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, n3 = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
31625        if (e3) {
31626          if (!(e3 instanceof Array || Array.isArray(e3))) throw new Error("encodings must be an Array");
31627          if (!bc2(e3.length, 1, 3)) throw new Error("encodings must be an Array with between 1 to ".concat(3, " layers"));
31628          for (var r4 = 0; r4 < e3.length; r4++) {
31629            var i4 = e3[r4];
31630            for (var o3 in this._validateEncodingLayerHasValidProperties(i4), i4) if (Ua2.includes(o3)) {
31631              if ("number" != typeof i4[o3]) throw new Error("".concat(o3, " must be a number"));
31632              if (t3) {
31633                var s3 = t3[o3], a3 = s3.min, c4 = s3.max;
31634                if (!bc2(i4[o3], a3, c4)) throw new Error("".concat(o3, " value not in range. valid range: ").concat(a3, " to ").concat(c4));
31635              }
31636            } else if (!["active", "scalabilityMode"].includes(o3)) throw new Error("Invalid key ".concat(o3, ", valid keys are:") + Object.values(Ua2));
31637            if (n3 && !i4.hasOwnProperty("maxBitrate")) throw new Error("maxBitrate is not specified");
31638          }
31639        }
31640      } }, { key: "startRemoteMediaPlayer", value: (j3 = p2((function* (e3) {
31641        var t3 = this, n3 = e3.url, r4 = e3.settings, i4 = void 0 === r4 ? { state: Xo2.PLAY } : r4;
31642        try {
31643          !(function(e4) {
31644            if ("string" != typeof e4) throw new Error('url parameter must be "string" type');
31645          })(n3), yc2(i4), (function(e4) {
31646            for (var t4 in e4) if (!Va2.includes(t4)) throw new Error("Invalid key ".concat(t4, ", valid keys are: ").concat(Va2));
31647            e4.simulcastEncodings && this.validateSimulcastEncodings(e4.simulcastEncodings, Ba2, true);
31648          })(i4);
31649        } catch (e4) {
31650          throw console.error("invalid argument Error: ".concat(e4)), console.error('startRemoteMediaPlayer arguments must be of the form:\n  { url: "playback url",\n  settings?:\n  {state: "play"|"pause", simulcastEncodings?: [{}] } }'), e4;
31651        }
31652        return new Promise((function(e4, r5) {
31653          t3.sendMessageToCallMachine({ action: "daily-method-start-remote-media-player", url: n3, settings: i4 }, (function(t4) {
31654            t4.error ? r5({ error: t4.error, errorMsg: t4.errorMsg }) : e4({ session_id: t4.session_id, remoteMediaPlayerState: { state: t4.state, settings: t4.settings } });
31655          }));
31656        }));
31657      })), function(e3) {
31658        return j3.apply(this, arguments);
31659      }) }, { key: "stopRemoteMediaPlayer", value: (A3 = p2((function* (e3) {
31660        var t3 = this;
31661        if ("string" != typeof e3) throw new Error(" remotePlayerID must be of type string");
31662        return new Promise((function(n3, r4) {
31663          t3.sendMessageToCallMachine({ action: "daily-method-stop-remote-media-player", session_id: e3 }, (function(e4) {
31664            e4.error ? r4({ error: e4.error, errorMsg: e4.errorMsg }) : n3();
31665          }));
31666        }));
31667      })), function(e3) {
31668        return A3.apply(this, arguments);
31669      }) }, { key: "updateRemoteMediaPlayer", value: (P3 = p2((function* (e3) {
31670        var t3 = this, n3 = e3.session_id, r4 = e3.settings;
31671        try {
31672          yc2(r4);
31673        } catch (e4) {
31674          throw console.error("invalid argument Error: ".concat(e4)), console.error('updateRemoteMediaPlayer arguments must be of the form:\n  session_id: "participant session",\n  { settings?: {state: "play"|"pause"} }'), e4;
31675        }
31676        return new Promise((function(e4, i4) {
31677          t3.sendMessageToCallMachine({ action: "daily-method-update-remote-media-player", session_id: n3, settings: r4 }, (function(t4) {
31678            t4.error ? i4({ error: t4.error, errorMsg: t4.errorMsg }) : e4({ session_id: t4.session_id, remoteMediaPlayerState: { state: t4.state, settings: t4.settings } });
31679          }));
31680        }));
31681      })), function(e3) {
31682        return P3.apply(this, arguments);
31683      }) }, { key: "startTranscription", value: function(e3) {
31684        Qa2(this._callState, "startTranscription()"), this.sendMessageToCallMachine(Aa2({ action: "daily-method-start-transcription" }, e3));
31685      } }, { key: "updateTranscription", value: function(e3) {
31686        if (Qa2(this._callState, "updateTranscription()"), !e3) throw new Error("updateTranscription Error: options is mandatory");
31687        if ("object" !== n2(e3)) throw new Error("updateTranscription Error: options must be object type");
31688        if (e3.participants && !Array.isArray(e3.participants)) throw new Error("updateTranscription Error: participants must be an array");
31689        this.sendMessageToCallMachine(Aa2({ action: "daily-method-update-transcription" }, e3));
31690      } }, { key: "stopTranscription", value: function(e3) {
31691        if (Qa2(this._callState, "stopTranscription()"), e3 && "object" !== n2(e3)) throw new Error("stopTranscription Error: options must be object type");
31692        if (e3 && !e3.instanceId) throw new Error('"instanceId" not provided');
31693        this.sendMessageToCallMachine(Aa2({ action: "daily-method-stop-transcription" }, e3));
31694      } }, { key: "startDialOut", value: (O3 = p2((function* (e3) {
31695        var t3 = this;
31696        Qa2(this._callState, "startDialOut()");
31697        var n3 = function(e4) {
31698          if (e4) {
31699            if (!Array.isArray(e4)) throw new Error("Error starting dial out: audio codec must be an array");
31700            if (e4.length <= 0) throw new Error("Error starting dial out: audio codec array specified but empty");
31701            e4.forEach((function(e5) {
31702              if ("string" != typeof e5) throw new Error("Error starting dial out: audio codec must be a string");
31703              if ("OPUS" !== e5 && "PCMU" !== e5 && "PCMA" !== e5 && "G722" !== e5) throw new Error("Error starting dial out: audio codec must be one of OPUS, PCMU, PCMA, G722");
31704            }));
31705          }
31706        };
31707        if (!e3.sipUri && !e3.phoneNumber) throw new Error("Error starting dial out: either a sip uri or phone number must be provided");
31708        if (e3.sipUri && e3.phoneNumber) throw new Error("Error starting dial out: only one of sip uri or phone number must be provided");
31709        if (e3.sipUri) {
31710          if ("string" != typeof e3.sipUri) throw new Error("Error starting dial out: sipUri must be a string");
31711          if (!e3.sipUri.startsWith("sip:")) throw new Error("Error starting dial out: Invalid SIP URI, must start with 'sip:'");
31712          if (e3.video && "boolean" != typeof e3.video) throw new Error("Error starting dial out: video must be a boolean value");
31713          !(function(e4) {
31714            if (e4 && (n3(e4.audio), e4.video)) {
31715              if (!Array.isArray(e4.video)) throw new Error("Error starting dial out: video codec must be an array");
31716              if (e4.video.length <= 0) throw new Error("Error starting dial out: video codec array specified but empty");
31717              e4.video.forEach((function(e5) {
31718                if ("string" != typeof e5) throw new Error("Error starting dial out: video codec must be a string");
31719                if ("H264" !== e5 && "VP8" !== e5) throw new Error("Error starting dial out: video codec must be H264 or VP8");
31720              }));
31721            }
31722          })(e3.codecs);
31723        }
31724        if (e3.phoneNumber) {
31725          if ("string" != typeof e3.phoneNumber) throw new Error("Error starting dial out: phoneNumber must be a string");
31726          if (!/^\+\d{1,}$/.test(e3.phoneNumber)) throw new Error("Error starting dial out: Invalid phone number, must be valid phone number as per E.164");
31727          e3.codecs && n3(e3.codecs.audio);
31728        }
31729        if (e3.callerId) {
31730          if ("string" != typeof e3.callerId) throw new Error("Error starting dial out: callerId must be a string");
31731          if (e3.sipUri) throw new Error("Error starting dial out: callerId not allowed with sipUri");
31732        }
31733        if (e3.displayName) {
31734          if ("string" != typeof e3.displayName) throw new Error("Error starting dial out: displayName must be a string");
31735          if (e3.displayName.length >= 200) throw new Error("Error starting dial out: displayName length must be less than 200");
31736        }
31737        if (e3.userId) {
31738          if ("string" != typeof e3.userId) throw new Error("Error starting dial out: userId must be a string");
31739          if (e3.userId.length > 36) throw new Error("Error starting dial out: userId length must be less than or equal to 36");
31740        }
31741        if (e3.permissions && e3.permissions.canReceive) {
31742          var r4 = f2(Ca2.validateJSONObject(e3.permissions.canReceive), 2), i4 = r4[0], o3 = r4[1];
31743          if (!i4) throw new Error(o3);
31744        }
31745        return new Promise((function(n4, r5) {
31746          t3.sendMessageToCallMachine(Aa2({ action: "dialout-start" }, e3), (function(e4) {
31747            e4.error ? r5(e4.error) : n4(e4);
31748          }));
31749        }));
31750      })), function(e3) {
31751        return O3.apply(this, arguments);
31752      }) }, { key: "stopDialOut", value: function(e3) {
31753        var t3 = this;
31754        return Qa2(this._callState, "stopDialOut()"), new Promise((function(n3, r4) {
31755          t3.sendMessageToCallMachine(Aa2({ action: "dialout-stop" }, e3), (function(e4) {
31756            e4.error ? r4(e4.error) : n3(e4);
31757          }));
31758        }));
31759      } }, { key: "sipCallTransfer", value: (T3 = p2((function* (e3) {
31760        var t3 = this;
31761        if (Qa2(this._callState, "sipCallTransfer()"), !e3) throw new Error("sipCallTransfer() requires a sessionId and toEndPoint");
31762        return e3.useSipRefer = false, mc2(e3, "sipCallTransfer"), new Promise((function(n3, r4) {
31763          t3.sendMessageToCallMachine(Aa2({ action: ns2 }, e3), (function(e4) {
31764            e4.error ? r4(e4.error) : n3(e4);
31765          }));
31766        }));
31767      })), function(e3) {
31768        return T3.apply(this, arguments);
31769      }) }, { key: "sipRefer", value: (E3 = p2((function* (e3) {
31770        var t3 = this;
31771        if (Qa2(this._callState, "sipRefer()"), !e3) throw new Error("sessionId and toEndPoint are mandatory parameter");
31772        return e3.useSipRefer = true, mc2(e3, "sipRefer"), new Promise((function(n3, r4) {
31773          t3.sendMessageToCallMachine(Aa2({ action: ns2 }, e3), (function(e4) {
31774            e4.error ? r4(e4.error) : n3(e4);
31775          }));
31776        }));
31777      })), function(e3) {
31778        return E3.apply(this, arguments);
31779      }) }, { key: "sendDTMF", value: (C3 = p2((function* (e3) {
31780        var t3 = this;
31781        return Qa2(this._callState, "sendDTMF()"), (function(e4) {
31782          var t4 = e4.sessionId, n3 = e4.tones;
31783          if (!t4 || !n3) throw new Error("sessionId and tones are mandatory parameter");
31784          if ("string" != typeof t4 || "string" != typeof n3) throw new Error("sessionId and tones should be of string type");
31785          if (n3.length > 20) throw new Error("tones string must be upto 20 characters");
31786          var r4 = /[^0-9A-D*#]/g, i4 = n3.match(r4);
31787          if (i4 && i4[0]) throw new Error("".concat(i4[0], " is not valid DTMF tone"));
31788        })(e3), new Promise((function(n3, r4) {
31789          t3.sendMessageToCallMachine(Aa2({ action: "send-dtmf" }, e3), (function(e4) {
31790            e4.error ? r4(e4.error) : n3(e4);
31791          }));
31792        }));
31793      })), function(e3) {
31794        return C3.apply(this, arguments);
31795      }) }, { key: "getNetworkStats", value: function() {
31796        var e3 = this;
31797        if (this._callState !== oi2) {
31798          return Promise.resolve(Aa2({ stats: { latest: {} } }, this._network));
31799        }
31800        return new Promise((function(t3) {
31801          e3.sendMessageToCallMachine({ action: "get-calc-stats" }, (function(n3) {
31802            t3(Aa2(Aa2({}, e3._network), {}, { stats: n3.stats }));
31803          }));
31804        }));
31805      } }, { key: "testWebsocketConnectivity", value: (M3 = p2((function* () {
31806        var e3 = this;
31807        if (Za2(this._testCallInProgress, "testWebsocketConnectivity()"), this.needsLoad()) try {
31808          yield this.load();
31809        } catch (e4) {
31810          return Promise.reject(e4);
31811        }
31812        return new Promise((function(t3, n3) {
31813          e3.sendMessageToCallMachine({ action: "test-websocket-connectivity" }, (function(e4) {
31814            e4.error ? n3(e4.error) : t3(e4.results);
31815          }));
31816        }));
31817      })), function() {
31818        return M3.apply(this, arguments);
31819      }) }, { key: "abortTestWebsocketConnectivity", value: function() {
31820        this.sendMessageToCallMachine({ action: "abort-test-websocket-connectivity" });
31821      } }, { key: "_validateVideoTrackForNetworkTests", value: function(e3) {
31822        return e3 ? e3 instanceof MediaStreamTrack ? !!va2(e3, { isLocalScreenVideo: false }) || (console.error("Video track is not playable. This test needs a live video track."), false) : (console.error("Video track needs to be of type `MediaStreamTrack`."), false) : (console.error("Missing video track. You must provide a video track in order to run this test."), false);
31823      } }, { key: "testCallQuality", value: (k3 = p2((function* () {
31824        var t3 = this;
31825        nc2(), ec2(this._callObjectMode, "testCallQuality()"), Xa2(this._callMachineInitialized, "testCallQuality()", null, true), Ya2(this._callState, this._isPreparingToJoin, "testCallQuality()");
31826        var n3 = this._testCallAlreadyInProgress, r4 = function(e3) {
31827          n3 || (t3._testCallInProgress = e3);
31828        };
31829        if (r4(true), this.needsLoad()) try {
31830          var i4 = this._callState;
31831          yield this.load(), this._callState = i4;
31832        } catch (e3) {
31833          return r4(false), Promise.reject(e3);
31834        }
31835        return new Promise((function(n4) {
31836          t3.sendMessageToCallMachine({ action: "test-call-quality", dailyJsVersion: t3.properties.dailyJsVersion }, (function(i5) {
31837            var o3 = i5.results, s3 = o3.result, a3 = e2(o3, Ta2);
31838            if ("failed" === s3) {
31839              var c4, l3 = Aa2({}, a3);
31840              null !== (c4 = a3.error) && void 0 !== c4 && c4.details ? (a3.error.details = JSON.parse(a3.error.details), l3.error = Aa2(Aa2({}, l3.error), {}, { details: Aa2({}, l3.error.details) }), l3.error.details.duringTest = "testCallQuality") : (l3.error = l3.error ? Aa2({}, l3.error) : {}, l3.error.details = { duringTest: "testCallQuality" }), t3._maybeSendToSentry(l3);
31841            }
31842            r4(false), n4(Aa2({ result: s3 }, a3));
31843          }));
31844        }));
31845      })), function() {
31846        return k3.apply(this, arguments);
31847      }) }, { key: "stopTestCallQuality", value: function() {
31848        this.sendMessageToCallMachine({ action: "stop-test-call-quality" });
31849      } }, { key: "testConnectionQuality", value: (w3 = p2((function* (e3) {
31850        var t3;
31851        is2() ? (console.warn("testConnectionQuality() is deprecated: use testPeerToPeerCallQuality() instead"), t3 = yield this.testPeerToPeerCallQuality(e3)) : (console.warn("testConnectionQuality() is deprecated: use testCallQuality() instead"), t3 = yield this.testCallQuality());
31852        var n3 = { result: t3.result, secondsElapsed: t3.secondsElapsed };
31853        return t3.data && (n3.data = { maxRTT: t3.data.maxRoundTripTime, packetLoss: t3.data.avgRecvPacketLoss }), n3;
31854      })), function(e3) {
31855        return w3.apply(this, arguments);
31856      }) }, { key: "testPeerToPeerCallQuality", value: (_3 = p2((function* (e3) {
31857        var t3 = this;
31858        if (Za2(this._testCallInProgress, "testPeerToPeerCallQuality()"), this.needsLoad()) try {
31859          yield this.load();
31860        } catch (e4) {
31861          return Promise.reject(e4);
31862        }
31863        var n3 = e3.videoTrack, r4 = e3.duration;
31864        if (!this._validateVideoTrackForNetworkTests(n3)) throw new Error("Video track error");
31865        return this._sharedTracks.videoTrackForConnectionQualityTest = n3, new Promise((function(e4, n4) {
31866          t3.sendMessageToCallMachine({ action: "test-p2p-call-quality", duration: r4 }, (function(t4) {
31867            t4.error ? n4(t4.error) : e4(t4.results);
31868          }));
31869        }));
31870      })), function(e3) {
31871        return _3.apply(this, arguments);
31872      }) }, { key: "stopTestConnectionQuality", value: function() {
31873        is2() ? (console.warn("stopTestConnectionQuality() is deprecated: use testPeerToPeerCallQuality() and stopTestPeerToPeerCallQuality() instead"), this.stopTestPeerToPeerCallQuality()) : (console.warn("stopTestConnectionQuality() is deprecated: use testCallQuality() and stopTestCallQuality() instead"), this.stopTestCallQuality());
31874      } }, { key: "stopTestPeerToPeerCallQuality", value: function() {
31875        this.sendMessageToCallMachine({ action: "stop-test-p2p-call-quality" });
31876      } }, { key: "testNetworkConnectivity", value: (y3 = p2((function* (e3) {
31877        var t3 = this;
31878        if (Za2(this._testCallInProgress, "testNetworkConnectivity()"), this.needsLoad()) try {
31879          yield this.load();
31880        } catch (e4) {
31881          return Promise.reject(e4);
31882        }
31883        if (!this._validateVideoTrackForNetworkTests(e3)) throw new Error("Video track error");
31884        return this._sharedTracks.videoTrackForNetworkConnectivityTest = e3, new Promise((function(e4, n3) {
31885          t3.sendMessageToCallMachine({ action: "test-network-connectivity" }, (function(t4) {
31886            t4.error ? n3(t4.error) : e4(t4.results);
31887          }));
31888        }));
31889      })), function(e3) {
31890        return y3.apply(this, arguments);
31891      }) }, { key: "abortTestNetworkConnectivity", value: function() {
31892        this.sendMessageToCallMachine({ action: "abort-test-network-connectivity" });
31893      } }, { key: "getCpuLoadStats", value: function() {
31894        var e3 = this;
31895        return new Promise((function(t3) {
31896          if (e3._callState === oi2) {
31897            e3.sendMessageToCallMachine({ action: "get-cpu-load-stats" }, (function(e4) {
31898              t3(e4.cpuStats);
31899            }));
31900          } else t3({ cpuLoadState: void 0, cpuLoadStateReason: void 0, stats: {} });
31901        }));
31902      } }, { key: "_validateEncodingLayerHasValidProperties", value: function(e3) {
31903        var t3;
31904        if (!((null === (t3 = Object.keys(e3)) || void 0 === t3 ? void 0 : t3.length) > 0)) throw new Error("Empty encoding is not allowed. At least one of these valid keys should be specified:" + Object.values(Ua2));
31905      } }, { key: "_validateVideoSendSettings", value: function(e3, t3) {
31906        var r4 = "screenVideo" === e3 ? ["default-screen-video", "detail-optimized", "motion-optimized", "motion-and-detail-balanced"] : ["default-video", "bandwidth-optimized", "bandwidth-and-quality-balanced", "quality-optimized", "adaptive-2-layers", "adaptive-3-layers"], i4 = "Video send settings should be either an object or one of the supported presets: ".concat(r4.join());
31907        if ("string" == typeof t3) {
31908          if (!r4.includes(t3)) throw new Error(i4);
31909        } else {
31910          if ("object" !== n2(t3)) throw new Error(i4);
31911          if (!t3.maxQuality && !t3.encodings && void 0 === t3.allowAdaptiveLayers) throw new Error("Video send settings must contain at least maxQuality, allowAdaptiveLayers or encodings attribute");
31912          if (t3.maxQuality && -1 === ["low", "medium", "high"].indexOf(t3.maxQuality)) throw new Error("maxQuality must be either low, medium or high");
31913          if (t3.encodings) {
31914            var o3 = false;
31915            switch (Object.keys(t3.encodings).length) {
31916              case 1:
31917                o3 = !t3.encodings.low;
31918                break;
31919              case 2:
31920                o3 = !t3.encodings.low || !t3.encodings.medium;
31921                break;
31922              case 3:
31923                o3 = !t3.encodings.low || !t3.encodings.medium || !t3.encodings.high;
31924                break;
31925              default:
31926                o3 = true;
31927            }
31928            if (o3) throw new Error("Encodings must be defined as: low, low and medium, or low, medium and high.");
31929            t3.encodings.low && this._validateEncodingLayerHasValidProperties(t3.encodings.low), t3.encodings.medium && this._validateEncodingLayerHasValidProperties(t3.encodings.medium), t3.encodings.high && this._validateEncodingLayerHasValidProperties(t3.encodings.high);
31930          }
31931        }
31932      } }, { key: "validateUpdateSendSettings", value: function(e3) {
31933        var t3 = this;
31934        if (!e3 || 0 === Object.keys(e3).length) throw new Error("Send settings must contain at least information for one track!");
31935        Object.entries(e3).forEach((function(e4) {
31936          var n3 = f2(e4, 2), r4 = n3[0], i4 = n3[1];
31937          t3._validateVideoSendSettings(r4, i4);
31938        }));
31939      } }, { key: "updateSendSettings", value: function(e3) {
31940        var t3 = this;
31941        return this.validateUpdateSendSettings(e3), this.needsLoad() ? (this._preloadCache.sendSettings = e3, { sendSettings: this._preloadCache.sendSettings }) : new Promise((function(n3, r4) {
31942          t3.sendMessageToCallMachine({ action: "update-send-settings", sendSettings: e3 }, (function(e4) {
31943            e4.error ? r4(e4.error) : n3(e4.sendSettings);
31944          }));
31945        }));
31946      } }, { key: "getSendSettings", value: function() {
31947        return this._sendSettings || this._preloadCache.sendSettings;
31948      } }, { key: "getLocalAudioLevel", value: function() {
31949        return this._localAudioLevel;
31950      } }, { key: "getRemoteParticipantsAudioLevel", value: function() {
31951        return this._remoteParticipantsAudioLevel;
31952      } }, { key: "getActiveSpeaker", value: function() {
31953        return nc2(), this._activeSpeaker;
31954      } }, { key: "setActiveSpeakerMode", value: function(e3) {
31955        return nc2(), this.sendMessageToCallMachine({ action: "set-active-speaker-mode", enabled: e3 }), this;
31956      } }, { key: "activeSpeakerMode", value: function() {
31957        return nc2(), this._activeSpeakerMode;
31958      } }, { key: "subscribeToTracksAutomatically", value: function() {
31959        return this._preloadCache.subscribeToTracksAutomatically;
31960      } }, { key: "setSubscribeToTracksAutomatically", value: function(e3) {
31961        return Qa2(this._callState, "setSubscribeToTracksAutomatically()", "Use the subscribeToTracksAutomatically configuration property."), this._preloadCache.subscribeToTracksAutomatically = e3, this.sendMessageToCallMachine({ action: "daily-method-subscribe-to-tracks-automatically", enabled: e3 }), this;
31962      } }, { key: "enumerateDevices", value: (m3 = p2((function* () {
31963        var e3 = this;
31964        if (this._callObjectMode) {
31965          var t3 = yield navigator.mediaDevices.enumerateDevices();
31966          return "Firefox" === ms2() && ys2().major > 115 && ys2().major < 123 && (t3 = t3.filter((function(e4) {
31967            return "audiooutput" !== e4.kind;
31968          }))), { devices: t3.map((function(e4) {
31969            var t4 = JSON.parse(JSON.stringify(e4));
31970            if (!is2() && "videoinput" === e4.kind && e4.getCapabilities) {
31971              var n3, r4 = e4.getCapabilities();
31972              t4.facing = (null == r4 || null === (n3 = r4.facingMode) || void 0 === n3 ? void 0 : n3.length) >= 1 ? r4.facingMode[0] : void 0;
31973            }
31974            return t4;
31975          })) };
31976        }
31977        return new Promise((function(t4) {
31978          e3.sendMessageToCallMachine({ action: "enumerate-devices" }, (function(e4) {
31979            t4({ devices: e4.devices });
31980          }));
31981        }));
31982      })), function() {
31983        return m3.apply(this, arguments);
31984      }) }, { key: "sendAppMessage", value: function(e3) {
31985        var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "*";
31986        if (Qa2(this._callState, "sendAppMessage()"), JSON.stringify(e3).length > this._maxAppMessageSize) throw new Error("Message data too large. Max size is " + this._maxAppMessageSize);
31987        return this.sendMessageToCallMachine({ action: "app-msg", data: e3, to: t3 }), this;
31988      } }, { key: "addFakeParticipant", value: function(e3) {
31989        return nc2(), Qa2(this._callState, "addFakeParticipant()"), this.sendMessageToCallMachine(Aa2({ action: "add-fake-participant" }, e3)), this;
31990      } }, { key: "setShowNamesMode", value: function(e3) {
31991        return tc2(this._callObjectMode, "setShowNamesMode()"), nc2(), e3 && "always" !== e3 && "never" !== e3 ? (console.error('setShowNamesMode argument should be "always", "never", or false'), this) : (this.sendMessageToCallMachine({ action: "set-show-names", mode: e3 }), this);
31992      } }, { key: "setShowLocalVideo", value: function() {
31993        var e3 = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];
31994        return tc2(this._callObjectMode, "setShowLocalVideo()"), nc2(), Qa2(this._callState, "setShowLocalVideo()"), "boolean" != typeof e3 ? (console.error("setShowLocalVideo only accepts a boolean value"), this) : (this.sendMessageToCallMachine({ action: "set-show-local-video", show: e3 }), this._showLocalVideo = e3, this);
31995      } }, { key: "showLocalVideo", value: function() {
31996        return tc2(this._callObjectMode, "showLocalVideo()"), nc2(), this._showLocalVideo;
31997      } }, { key: "setShowParticipantsBar", value: function() {
31998        var e3 = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];
31999        return tc2(this._callObjectMode, "setShowParticipantsBar()"), nc2(), Qa2(this._callState, "setShowParticipantsBar()"), "boolean" != typeof e3 ? (console.error("setShowParticipantsBar only accepts a boolean value"), this) : (this.sendMessageToCallMachine({ action: "set-show-participants-bar", show: e3 }), this._showParticipantsBar = e3, this);
32000      } }, { key: "showParticipantsBar", value: function() {
32001        return tc2(this._callObjectMode, "showParticipantsBar()"), nc2(), this._showParticipantsBar;
32002      } }, { key: "customIntegrations", value: function() {
32003        return nc2(), tc2(this._callObjectMode, "customIntegrations()"), this._customIntegrations;
32004      } }, { key: "setCustomIntegrations", value: function(e3) {
32005        return nc2(), tc2(this._callObjectMode, "setCustomIntegrations()"), Qa2(this._callState, "setCustomIntegrations()"), vc2(e3) ? (this.sendMessageToCallMachine({ action: "set-custom-integrations", integrations: e3 }), this._customIntegrations = e3, this) : this;
32006      } }, { key: "startCustomIntegrations", value: function(e3) {
32007        var t3 = this;
32008        if (nc2(), tc2(this._callObjectMode, "startCustomIntegrations()"), Qa2(this._callState, "startCustomIntegrations()"), Array.isArray(e3) && e3.some((function(e4) {
32009          return "string" != typeof e4;
32010        })) || !Array.isArray(e3) && "string" != typeof e3) return console.error("startCustomIntegrations() only accepts string | string[]"), this;
32011        var n3 = "string" == typeof e3 ? [e3] : e3, r4 = n3.filter((function(e4) {
32012          return !(e4 in t3._customIntegrations);
32013        }));
32014        return r4.length ? (console.error(`Can't find custom integration(s): "`.concat(r4.join(", "), '"')), this) : (this.sendMessageToCallMachine({ action: "start-custom-integrations", ids: n3 }), this);
32015      } }, { key: "stopCustomIntegrations", value: function(e3) {
32016        var t3 = this;
32017        if (nc2(), tc2(this._callObjectMode, "stopCustomIntegrations()"), Qa2(this._callState, "stopCustomIntegrations()"), Array.isArray(e3) && e3.some((function(e4) {
32018          return "string" != typeof e4;
32019        })) || !Array.isArray(e3) && "string" != typeof e3) return console.error("stopCustomIntegrations() only accepts string | string[]"), this;
32020        var n3 = "string" == typeof e3 ? [e3] : e3, r4 = n3.filter((function(e4) {
32021          return !(e4 in t3._customIntegrations);
32022        }));
32023        return r4.length ? (console.error(`Can't find custom integration(s): "`.concat(r4.join(", "), '"')), this) : (this.sendMessageToCallMachine({ action: "stop-custom-integrations", ids: n3 }), this);
32024      } }, { key: "customTrayButtons", value: function() {
32025        return tc2(this._callObjectMode, "customTrayButtons()"), nc2(), this._customTrayButtons;
32026      } }, { key: "updateCustomTrayButtons", value: function(e3) {
32027        return tc2(this._callObjectMode, "updateCustomTrayButtons()"), nc2(), Qa2(this._callState, "updateCustomTrayButtons()"), fc2(e3) ? (this.sendMessageToCallMachine({ action: "update-custom-tray-buttons", btns: e3 }), this._customTrayButtons = e3, this) : (console.error("updateCustomTrayButtons only accepts a dictionary of the type ".concat(JSON.stringify($a2))), this);
32028      } }, { key: "theme", value: function() {
32029        return tc2(this._callObjectMode, "theme()"), this.properties.theme;
32030      } }, { key: "setTheme", value: function(e3) {
32031        var t3 = this;
32032        return tc2(this._callObjectMode, "setTheme()"), new Promise((function(n3, r4) {
32033          try {
32034            t3.validateProperties({ theme: e3 }), t3.properties.theme = Aa2({}, e3), t3.sendMessageToCallMachine({ action: "set-theme", theme: t3.properties.theme });
32035            try {
32036              t3.emitDailyJSEvent({ action: Ui2, theme: t3.properties.theme });
32037            } catch (e4) {
32038              console.log("could not emit 'theme-updated'", e4);
32039            }
32040            n3(t3.properties.theme);
32041          } catch (e4) {
32042            r4(e4);
32043          }
32044        }));
32045      } }, { key: "requestFullscreen", value: (g3 = p2((function* () {
32046        if (nc2(), this._iframe && !document.fullscreenElement && as2()) try {
32047          (yield this._iframe.requestFullscreen) ? this._iframe.requestFullscreen() : this._iframe.webkitRequestFullscreen();
32048        } catch (e3) {
32049          console.log("could not make video call fullscreen", e3);
32050        }
32051      })), function() {
32052        return g3.apply(this, arguments);
32053      }) }, { key: "exitFullscreen", value: function() {
32054        nc2(), document.fullscreenElement ? document.exitFullscreen() : document.webkitFullscreenElement && document.webkitExitFullscreen();
32055      } }, { key: "getSidebarView", value: (v3 = p2((function* () {
32056        var e3 = this;
32057        return this._callObjectMode ? (console.error("getSidebarView is not available in callObject mode"), Promise.resolve(null)) : new Promise((function(t3) {
32058          e3.sendMessageToCallMachine({ action: "get-sidebar-view" }, (function(e4) {
32059            t3(e4.view);
32060          }));
32061        }));
32062      })), function() {
32063        return v3.apply(this, arguments);
32064      }) }, { key: "setSidebarView", value: function(e3) {
32065        return this._callObjectMode ? (console.error("setSidebarView is not available in callObject mode"), this) : (this.sendMessageToCallMachine({ action: "set-sidebar-view", view: e3 }), this);
32066      } }, { key: "room", value: (h3 = p2((function* () {
32067        var e3 = this, t3 = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).includeRoomConfigDefaults, n3 = void 0 === t3 || t3;
32068        return this._accessState.access === fi2 || this.needsLoad() ? this.properties.url ? { roomUrlPendingJoin: this.properties.url } : null : new Promise((function(t4) {
32069          e3.sendMessageToCallMachine({ action: "lib-room-info", includeRoomConfigDefaults: n3 }, (function(e4) {
32070            delete e4.action, delete e4.callbackStamp, t4(e4);
32071          }));
32072        }));
32073      })), function() {
32074        return h3.apply(this, arguments);
32075      }) }, { key: "geo", value: (d3 = p2((function* () {
32076        try {
32077          var e3 = yield fetch("https://gs.daily.co/_ks_/x-swsl/:");
32078          return { current: (yield e3.json()).geo };
32079        } catch (e4) {
32080          return console.error("geo lookup failed", e4), { current: "" };
32081        }
32082      })), function() {
32083        return d3.apply(this, arguments);
32084      }) }, { key: "setNetworkTopology", value: (c3 = p2((function* (e3) {
32085        var t3 = this;
32086        return nc2(), Qa2(this._callState, "setNetworkTopology()"), new Promise((function(n3, r4) {
32087          t3.sendMessageToCallMachine({ action: "set-network-topology", opts: e3 }, (function(e4) {
32088            e4.error ? r4({ error: e4.error }) : n3({ workerId: e4.workerId });
32089          }));
32090        }));
32091      })), function(e3) {
32092        return c3.apply(this, arguments);
32093      }) }, { key: "getNetworkTopology", value: (i3 = p2((function* () {
32094        var e3 = this;
32095        return new Promise((function(t3, n3) {
32096          e3.needsLoad() && t3({ topology: "none" }), e3.sendMessageToCallMachine({ action: "get-network-topology" }, (function(e4) {
32097            e4.error ? n3({ error: e4.error }) : t3({ topology: e4.topology });
32098          }));
32099        }));
32100      })), function() {
32101        return i3.apply(this, arguments);
32102      }) }, { key: "setPlayNewParticipantSound", value: function(e3) {
32103        if (nc2(), "number" != typeof e3 && true !== e3 && false !== e3) throw new Error("argument to setShouldPlayNewParticipantSound should be true, false, or a number, but is ".concat(e3));
32104        this.sendMessageToCallMachine({ action: "daily-method-set-play-ding", arg: e3 });
32105      } }, { key: "on", value: function(e3, t3) {
32106        return b2.prototype.on.call(this, e3, t3);
32107      } }, { key: "once", value: function(e3, t3) {
32108        return b2.prototype.once.call(this, e3, t3);
32109      } }, { key: "off", value: function(e3, t3) {
32110        return b2.prototype.off.call(this, e3, t3);
32111      } }, { key: "validateProperties", value: function(e3) {
32112        var t3, n3;
32113        if (null != e3 && null !== (t3 = e3.dailyConfig) && void 0 !== t3 && t3.userMediaAudioConstraints) {
32114          var r4, i4;
32115          is2() || console.warn("userMediaAudioConstraints is deprecated. You can override constraints with inputSettings.audio.settings, found in DailyCallOptions.");
32116          var o3 = e3.inputSettings || {};
32117          o3.audio = (null === (r4 = e3.inputSettings) || void 0 === r4 ? void 0 : r4.audio) || {}, o3.audio.settings = (null === (i4 = e3.inputSettings) || void 0 === i4 || null === (i4 = i4.audio) || void 0 === i4 ? void 0 : i4.settings) || {}, o3.audio.settings = Aa2(Aa2({}, o3.audio.settings), e3.dailyConfig.userMediaAudioConstraints), e3.inputSettings = o3, delete e3.dailyConfig.userMediaAudioConstraints;
32118        }
32119        if (null != e3 && null !== (n3 = e3.dailyConfig) && void 0 !== n3 && n3.userMediaVideoConstraints) {
32120          var s3, a3;
32121          is2() || console.warn("userMediaVideoConstraints is deprecated. You can override constraints with inputSettings.video.settings, found in DailyCallOptions.");
32122          var c4 = e3.inputSettings || {};
32123          c4.video = (null === (s3 = e3.inputSettings) || void 0 === s3 ? void 0 : s3.video) || {}, c4.video.settings = (null === (a3 = e3.inputSettings) || void 0 === a3 || null === (a3 = a3.video) || void 0 === a3 ? void 0 : a3.settings) || {}, c4.video.settings = Aa2(Aa2({}, c4.video.settings), e3.dailyConfig.userMediaVideoConstraints), e3.inputSettings = c4, delete e3.dailyConfig.userMediaVideoConstraints;
32124        }
32125        for (var l3 in e3) {
32126          if (!za2[l3]) throw new Error("unrecognized property '".concat(l3, "'"));
32127          if (za2[l3].validate && !za2[l3].validate(e3[l3], this)) throw new Error("property '".concat(l3, "': ").concat(za2[l3].help));
32128        }
32129      } }, { key: "assembleMeetingUrl", value: function() {
32130        var e3, t3, n3 = Aa2(Aa2({}, this.properties), {}, { emb: this.callClientId, embHref: encodeURIComponent(window.location.href), proxy: null !== (e3 = this.properties.dailyConfig) && void 0 !== e3 && e3.proxyUrl ? encodeURIComponent(null === (t3 = this.properties.dailyConfig) || void 0 === t3 ? void 0 : t3.proxyUrl) : void 0 }), r4 = n3.url.match(/\?/) ? "&" : "?";
32131        return n3.url + r4 + Object.keys(za2).filter((function(e4) {
32132          return za2[e4].queryString && void 0 !== n3[e4];
32133        })).map((function(e4) {
32134          return "".concat(za2[e4].queryString, "=").concat(n3[e4]);
32135        })).join("&");
32136      } }, { key: "needsLoad", value: function() {
32137        return [ti2, ni2, si2, ai2].includes(this._callState);
32138      } }, { key: "sendMessageToCallMachine", value: function(e3, t3) {
32139        if (this._destroyed && (this._logUseAfterDestroy(), this.strictMode)) throw new Error("Use after destroy");
32140        this._messageChannel.sendMessageToCallMachine(e3, t3, this.callClientId, this._iframe);
32141      } }, { key: "forwardPackagedMessageToCallMachine", value: function(e3) {
32142        this._messageChannel.forwardPackagedMessageToCallMachine(e3, this._iframe, this.callClientId);
32143      } }, { key: "addListenerForPackagedMessagesFromCallMachine", value: function(e3) {
32144        return this._messageChannel.addListenerForPackagedMessagesFromCallMachine(e3, this.callClientId);
32145      } }, { key: "removeListenerForPackagedMessagesFromCallMachine", value: function(e3) {
32146        this._messageChannel.removeListenerForPackagedMessagesFromCallMachine(e3);
32147      } }, { key: "handleMessageFromCallMachine", value: function(t3) {
32148        switch (t3.action) {
32149          case Fi2:
32150            this.sendMessageToCallMachine(Aa2({ action: Bi2 }, this.properties));
32151            break;
32152          case "call-machine-initialized":
32153            this._callMachineInitialized = true;
32154            var n3 = { action: Go2, level: "log", code: 1011, stats: { event: "bundle load", time: "no-op" === this._bundleLoadTime ? 0 : this._bundleLoadTime, preLoaded: "no-op" === this._bundleLoadTime, url: B2(this.properties.dailyConfig) } };
32155            this.sendMessageToCallMachine(n3), this._delayDuplicateInstanceLog && this._logDuplicateInstanceAttempt();
32156            break;
32157          case $i2:
32158            this._loadedCallback && (this._loadedCallback(), this._loadedCallback = null), this.emitDailyJSEvent(t3);
32159            break;
32160          case Hi2:
32161            var r4, i4 = Aa2({}, t3);
32162            delete i4.internal, this._maxAppMessageSize = (null === (r4 = t3.internal) || void 0 === r4 ? void 0 : r4._maxAppMessageSize) || $o2, this._joinedCallback && (this._joinedCallback(t3.participants), this._joinedCallback = null), this.emitDailyJSEvent(i4);
32163            break;
32164          case Qi2:
32165          case Ki2:
32166            if (this._callState === si2) return;
32167            if (t3.participant && t3.participant.session_id) {
32168              var o3 = t3.participant.local ? "local" : t3.participant.session_id;
32169              if (this._callObjectMode) {
32170                var s3 = this._callMachine().store;
32171                Zs2(t3.participant, s3), ea2(t3.participant, s3), na2(t3.participant, this._participants[o3], s3);
32172              }
32173              try {
32174                this.maybeParticipantTracksStopped(this._participants[o3], t3.participant), this.maybeParticipantTracksStarted(this._participants[o3], t3.participant), this.maybeEventRecordingStopped(this._participants[o3], t3.participant), this.maybeEventRecordingStarted(this._participants[o3], t3.participant);
32175              } catch (e3) {
32176                console.error("track events error", e3);
32177              }
32178              this.compareEqualForParticipantUpdateEvent(t3.participant, this._participants[o3]) || (this._participants[o3] = Aa2({}, t3.participant), this.toggleParticipantAudioBasedOnNativeAudioFocus(), this.emitDailyJSEvent(t3));
32179            }
32180            break;
32181          case Yi2:
32182            if (t3.participant && t3.participant.session_id) {
32183              var a3 = this._participants[t3.participant.session_id];
32184              a3 && this.maybeParticipantTracksStopped(a3, null), delete this._participants[t3.participant.session_id], this.emitDailyJSEvent(t3);
32185            }
32186            break;
32187          case Xi2:
32188            S2(this._participantCounts, t3.participantCounts) || (this._participantCounts = t3.participantCounts, this.emitDailyJSEvent(t3));
32189            break;
32190          case Zi2:
32191            var c4 = { access: t3.access };
32192            t3.awaitingAccess && (c4.awaitingAccess = t3.awaitingAccess), S2(this._accessState, c4) || (this._accessState = c4, this.emitDailyJSEvent(t3));
32193            break;
32194          case eo2:
32195            if (t3.meetingSession) {
32196              this._meetingSessionSummary = t3.meetingSession, this.emitDailyJSEvent(t3);
32197              var l3 = Aa2(Aa2({}, t3), {}, { action: "meeting-session-updated" });
32198              this.emitDailyJSEvent(l3);
32199            }
32200            break;
32201          case Jo2:
32202            var u3;
32203            this._iframe && !t3.preserveIframe && (this._iframe.src = ""), this._updateCallState(ai2), this.resetMeetingDependentVars(), this._loadedCallback && (this._loadedCallback(t3.errorMsg), this._loadedCallback = null), t3.preserveIframe;
32204            var d4 = e2(t3, Oa2);
32205            null != d4 && null !== (u3 = d4.error) && void 0 !== u3 && u3.details && (d4.error.details = JSON.parse(d4.error.details)), this._maybeSendToSentry(t3), this._joinedCallback && (this._joinedCallback(null, d4), this._joinedCallback = null), this.emitDailyJSEvent(d4);
32206            break;
32207          case Gi2:
32208            this._callState !== ai2 && this._updateCallState(si2), this.resetMeetingDependentVars(), this._resolveLeave && (this._resolveLeave(), this._resolveLeave = null), this.emitDailyJSEvent(t3);
32209            break;
32210          case "selected-devices-updated":
32211            t3.devices && this.emitDailyJSEvent(t3);
32212            break;
32213          case Oo2:
32214            var p3 = t3.state, h4 = t3.threshold, f3 = t3.quality, v4 = p3.state, g4 = p3.reasons;
32215            v4 === this._network.networkState && S2(g4, this._network.networkStateReasons) && h4 === this._network.threshold && f3 === this._network.quality || (this._network.networkState = v4, this._network.networkStateReasons = g4, this._network.quality = f3, this._network.threshold = h4, t3.networkState = v4, g4.length && (t3.networkStateReasons = g4), delete t3.state, this.emitDailyJSEvent(t3));
32216            break;
32217          case Ao2:
32218            t3 && t3.cpuLoadState && this.emitDailyJSEvent(t3);
32219            break;
32220          case jo2:
32221            t3 && void 0 !== t3.faceCounts && this.emitDailyJSEvent(t3);
32222            break;
32223          case Eo2:
32224            var m4 = t3.activeSpeaker;
32225            this._activeSpeaker.peerId !== m4.peerId && (this._activeSpeaker.peerId = m4.peerId, this.emitDailyJSEvent({ action: t3.action, activeSpeaker: this._activeSpeaker }));
32226            break;
32227          case "show-local-video-changed":
32228            if (this._callObjectMode) return;
32229            var y4 = t3.show;
32230            this._showLocalVideo = y4, this.emitDailyJSEvent({ action: t3.action, show: y4 });
32231            break;
32232          case To2:
32233            var b3 = t3.enabled;
32234            this._activeSpeakerMode !== b3 && (this._activeSpeakerMode = b3, this.emitDailyJSEvent({ action: t3.action, enabled: this._activeSpeakerMode }));
32235            break;
32236          case ro2:
32237          case io2:
32238          case oo2:
32239            this._waitingParticipants = t3.allWaitingParticipants, this.emitDailyJSEvent({ action: t3.action, participant: t3.participant });
32240            break;
32241          case Bo2:
32242            S2(this._receiveSettings, t3.receiveSettings) || (this._receiveSettings = t3.receiveSettings, this.emitDailyJSEvent({ action: t3.action, receiveSettings: t3.receiveSettings }));
32243            break;
32244          case Uo2:
32245            this._maybeUpdateInputSettings(t3.inputSettings);
32246            break;
32247          case "send-settings-updated":
32248            S2(this._sendSettings, t3.sendSettings) || (this._sendSettings = t3.sendSettings, this._preloadCache.sendSettings = null, this.emitDailyJSEvent({ action: t3.action, sendSettings: t3.sendSettings }));
32249            break;
32250          case "local-audio-level":
32251            this._localAudioLevel = t3.audioLevel, this._preloadCache.localAudioLevelObserver = null, this.emitDailyJSEvent(t3);
32252            break;
32253          case "remote-participants-audio-level":
32254            this._remoteParticipantsAudioLevel = t3.participantsAudioLevel, this._preloadCache.remoteParticipantsAudioLevelObserver = null, this.emitDailyJSEvent(t3);
32255            break;
32256          case _o2:
32257            var _4 = t3.session_id;
32258            this._rmpPlayerState[_4] = t3.playerState, this.emitDailyJSEvent(t3);
32259            break;
32260          case So2:
32261            delete this._rmpPlayerState[t3.session_id], this.emitDailyJSEvent(t3);
32262            break;
32263          case wo2:
32264            var w4 = t3.session_id, k4 = this._rmpPlayerState[w4];
32265            k4 && this.compareEqualForRMPUpdateEvent(k4, t3.remoteMediaPlayerState) || (this._rmpPlayerState[w4] = t3.remoteMediaPlayerState, this.emitDailyJSEvent(t3));
32266            break;
32267          case "custom-button-click":
32268          case "sidebar-view-changed":
32269            this.emitDailyJSEvent(t3);
32270            break;
32271          case to2:
32272            var M4 = this._meetingSessionState.topology !== (t3.meetingSessionState && t3.meetingSessionState.topology);
32273            this._meetingSessionState = _c2(t3.meetingSessionState, this._callObjectMode), (this._callObjectMode || M4) && this.emitDailyJSEvent(t3);
32274            break;
32275          case ko2:
32276            this._isScreenSharing = true, this.emitDailyJSEvent(t3);
32277            break;
32278          case Mo2:
32279          case Co2:
32280            this._isScreenSharing = false, this.emitDailyJSEvent(t3);
32281            break;
32282          case po2:
32283          case ho2:
32284          case fo2:
32285          case vo2:
32286          case go2:
32287          case co2:
32288          case lo2:
32289          case uo2:
32290          case qi2:
32291          case zi2:
32292          case yo2:
32293          case bo2:
32294          case "test-completed":
32295          case Po2:
32296          case mo2:
32297          case Lo2:
32298          case Do2:
32299          case No2:
32300          case Ro2:
32301          case Vo2:
32302          case Fo2:
32303          case "dialin-ready":
32304          case "dialin-connected":
32305          case "dialin-error":
32306          case "dialin-stopped":
32307          case "dialin-warning":
32308          case "dialout-connected":
32309          case "dialout-answered":
32310          case "dialout-error":
32311          case "dialout-stopped":
32312          case "dialout-warning":
32313            this.emitDailyJSEvent(t3);
32314            break;
32315          case "request-fullscreen":
32316            this.requestFullscreen();
32317            break;
32318          case "request-exit-fullscreen":
32319            this.exitFullscreen();
32320        }
32321      } }, { key: "maybeEventRecordingStopped", value: function(e3, t3) {
32322        var n3 = "record";
32323        e3 && (t3.local || false !== t3[n3] || e3[n3] === t3[n3] || this.emitDailyJSEvent({ action: ho2 }));
32324      } }, { key: "maybeEventRecordingStarted", value: function(e3, t3) {
32325        var n3 = "record";
32326        e3 && (t3.local || true !== t3[n3] || e3[n3] === t3[n3] || this.emitDailyJSEvent({ action: po2 }));
32327      } }, { key: "_trackStatePlayable", value: function(e3) {
32328        return !(!e3 || e3.state !== hi2);
32329      } }, { key: "_trackChanged", value: function(e3, t3) {
32330        return !((null == e3 ? void 0 : e3.id) === (null == t3 ? void 0 : t3.id));
32331      } }, { key: "maybeEventTrackStopped", value: function(e3, t3, n3) {
32332        var r4, i4, o3 = null !== (r4 = null == t3 ? void 0 : t3.tracks[e3]) && void 0 !== r4 ? r4 : null, s3 = null !== (i4 = null == n3 ? void 0 : n3.tracks[e3]) && void 0 !== i4 ? i4 : null, a3 = null == o3 ? void 0 : o3.track;
32333        if (a3) {
32334          var c4 = this._trackStatePlayable(o3), l3 = this._trackStatePlayable(s3), u3 = this._trackChanged(a3, null == s3 ? void 0 : s3.track);
32335          c4 && (l3 && !u3 || this.emitDailyJSEvent({ action: ao2, track: a3, participant: null != n3 ? n3 : t3, type: e3 }));
32336        }
32337      } }, { key: "maybeEventTrackStarted", value: function(e3, t3, n3) {
32338        var r4, i4, o3 = null !== (r4 = null == t3 ? void 0 : t3.tracks[e3]) && void 0 !== r4 ? r4 : null, s3 = null !== (i4 = null == n3 ? void 0 : n3.tracks[e3]) && void 0 !== i4 ? i4 : null, a3 = null == s3 ? void 0 : s3.track;
32339        if (a3) {
32340          var c4 = this._trackStatePlayable(o3), l3 = this._trackStatePlayable(s3), u3 = this._trackChanged(null == o3 ? void 0 : o3.track, a3);
32341          l3 && (c4 && !u3 || this.emitDailyJSEvent({ action: so2, track: a3, participant: n3, type: e3 }));
32342        }
32343      } }, { key: "maybeParticipantTracksStopped", value: function(e3, t3) {
32344        if (e3) for (var n3 in e3.tracks) this.maybeEventTrackStopped(n3, e3, t3);
32345      } }, { key: "maybeParticipantTracksStarted", value: function(e3, t3) {
32346        if (t3) for (var n3 in t3.tracks) this.maybeEventTrackStarted(n3, e3, t3);
32347      } }, { key: "compareEqualForRMPUpdateEvent", value: function(e3, t3) {
32348        var n3, r4;
32349        return e3.state === t3.state && (null === (n3 = e3.settings) || void 0 === n3 ? void 0 : n3.volume) === (null === (r4 = t3.settings) || void 0 === r4 ? void 0 : r4.volume);
32350      } }, { key: "emitDailyJSEvent", value: function(e3) {
32351        try {
32352          e3.callClientId = this.callClientId, this.emit(e3.action, e3);
32353        } catch (t3) {
32354          console.log("could not emit", e3, t3);
32355        }
32356      } }, { key: "compareEqualForParticipantUpdateEvent", value: function(e3, t3) {
32357        return !!S2(e3, t3) && ((!e3.videoTrack || !t3.videoTrack || e3.videoTrack.id === t3.videoTrack.id && e3.videoTrack.muted === t3.videoTrack.muted && e3.videoTrack.enabled === t3.videoTrack.enabled) && (!e3.audioTrack || !t3.audioTrack || e3.audioTrack.id === t3.audioTrack.id && e3.audioTrack.muted === t3.audioTrack.muted && e3.audioTrack.enabled === t3.audioTrack.enabled));
32358      } }, { key: "nativeUtils", value: function() {
32359        return is2() ? "undefined" == typeof DailyNativeUtils ? (console.warn("in React Native, DailyNativeUtils is expected to be available"), null) : DailyNativeUtils : null;
32360      } }, { key: "updateIsPreparingToJoin", value: function(e3) {
32361        this._updateCallState(this._callState, e3);
32362      } }, { key: "_updateCallState", value: function(e3) {
32363        var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this._isPreparingToJoin;
32364        if (e3 !== this._callState || t3 !== this._isPreparingToJoin) {
32365          var n3 = this._callState, r4 = this._isPreparingToJoin;
32366          this._callState = e3, this._isPreparingToJoin = t3;
32367          var i4 = this._callState === oi2;
32368          this.updateShowAndroidOngoingMeetingNotification(i4);
32369          var o3 = Ka2(n3, r4), s3 = Ka2(this._callState, this._isPreparingToJoin);
32370          o3 !== s3 && (this.updateKeepDeviceAwake(s3), this.updateDeviceAudioMode(s3), this.updateNoOpRecordingEnsuringBackgroundContinuity(s3));
32371        }
32372      } }, { key: "resetMeetingDependentVars", value: function() {
32373        this._participants = {}, this._participantCounts = Fa2, this._waitingParticipants = {}, this._activeSpeaker = {}, this._activeSpeakerMode = false, this._didPreAuth = false, this._accessState = { access: fi2 }, this._finalSummaryOfPrevSession = this._meetingSessionSummary, this._meetingSessionSummary = {}, this._meetingSessionState = _c2(Ra2, this._callObjectMode), this._isScreenSharing = false, this._receiveSettings = {}, this._inputSettings = void 0, this._sendSettings = {}, this._localAudioLevel = 0, this._isLocalAudioLevelObserverRunning = false, this._remoteParticipantsAudioLevel = {}, this._isRemoteParticipantsAudioLevelObserverRunning = false, this._maxAppMessageSize = $o2, this._callMachineInitialized = false, this._bundleLoadTime = void 0, this._preloadCache;
32374      } }, { key: "updateKeepDeviceAwake", value: function(e3) {
32375        is2() && this.nativeUtils().setKeepDeviceAwake(e3, this.callClientId);
32376      } }, { key: "updateDeviceAudioMode", value: function(e3) {
32377        if (is2() && !this.disableReactNativeAutoDeviceManagement("audio")) {
32378          var t3 = e3 ? this._nativeInCallAudioMode : "idle";
32379          this.nativeUtils().setAudioMode(t3);
32380        }
32381      } }, { key: "updateShowAndroidOngoingMeetingNotification", value: function(e3) {
32382        if (is2() && this.nativeUtils().setShowOngoingMeetingNotification) {
32383          var t3, n3, r4, i4;
32384          if (this.properties.reactNativeConfig && this.properties.reactNativeConfig.androidInCallNotification) {
32385            var o3 = this.properties.reactNativeConfig.androidInCallNotification;
32386            t3 = o3.title, n3 = o3.subtitle, r4 = o3.iconName, i4 = o3.disableForCustomOverride;
32387          }
32388          i4 && (e3 = false), this.nativeUtils().setShowOngoingMeetingNotification(e3, t3, n3, r4, this.callClientId);
32389        }
32390      } }, { key: "updateNoOpRecordingEnsuringBackgroundContinuity", value: function(e3) {
32391        is2() && this.nativeUtils().enableNoOpRecordingEnsuringBackgroundContinuity && this.nativeUtils().enableNoOpRecordingEnsuringBackgroundContinuity(e3);
32392      } }, { key: "toggleParticipantAudioBasedOnNativeAudioFocus", value: function() {
32393        var e3;
32394        if (is2()) {
32395          var t3 = null === (e3 = this._callMachine()) || void 0 === e3 || null === (e3 = e3.store) || void 0 === e3 ? void 0 : e3.getState();
32396          for (var n3 in null == t3 ? void 0 : t3.streams) {
32397            var r4 = t3.streams[n3];
32398            r4 && r4.pendingTrack && "audio" === r4.pendingTrack.kind && (r4.pendingTrack.enabled = this._hasNativeAudioFocus);
32399          }
32400        }
32401      } }, { key: "disableReactNativeAutoDeviceManagement", value: function(e3) {
32402        return this.properties.reactNativeConfig && this.properties.reactNativeConfig.disableAutoDeviceManagement && this.properties.reactNativeConfig.disableAutoDeviceManagement[e3];
32403      } }, { key: "absoluteUrl", value: function(e3) {
32404        if (void 0 !== e3) {
32405          var t3 = document.createElement("a");
32406          return t3.href = e3, t3.href;
32407        }
32408      } }, { key: "sayHello", value: function() {
32409        var e3 = "hello, world.";
32410        return console.log(e3), e3;
32411      } }, { key: "_logUseAfterDestroy", value: function() {
32412        var e3 = Object.values(La2)[0];
32413        if (this.needsLoad()) {
32414          if (e3 && !e3.needsLoad()) {
32415            var t3 = { action: Go2, level: "error", code: this.strictMode ? 9995 : 9997 };
32416            e3.sendMessageToCallMachine(t3);
32417          } else if (!this.strictMode) {
32418            console.error("You are are attempting to use a call instance that was previously destroyed, which is unsupported. Please remove `strictMode: false` from your constructor properties to enable strict mode to track down and fix this unsupported usage.");
32419          }
32420        } else {
32421          var n3 = { action: Go2, level: "error", code: this.strictMode ? 9995 : 9997 };
32422          this._messageChannel.sendMessageToCallMachine(n3, null, this.callClientId, this._iframe);
32423        }
32424      } }, { key: "_logDuplicateInstanceAttempt", value: function() {
32425        for (var e3 = 0, t3 = Object.values(La2); e3 < t3.length; e3++) {
32426          var n3 = t3[e3];
32427          n3._callMachineInitialized ? (n3.sendMessageToCallMachine({ action: Go2, level: "warn", code: this.allowMultipleCallInstances ? 9993 : 9992 }), n3._delayDuplicateInstanceLog = false) : n3._delayDuplicateInstanceLog = true;
32428        }
32429      } }, { key: "_maybeSendToSentry", value: function(e3) {
32430        var t3, n3, i4, o3;
32431        if (null !== (t3 = e3.error) && void 0 !== t3 && t3.type) {
32432          if (![Pi2, Ti2, Ci2].includes(e3.error.type)) return;
32433          if (e3.error.type === Ci2 && e3.error.msg.includes("deleted")) return;
32434        }
32435        var s3 = null !== (n3 = this.properties) && void 0 !== n3 && n3.url ? new URL(this.properties.url) : void 0, a3 = "production";
32436        s3 && s3.host.includes(".staging.daily") && (a3 = "staging");
32437        var c4, l3, u3, d4, p3, h4 = (function(e4) {
32438          const t4 = [Ln2(), In2(), qr2(), Jr2(), Kr2(), ei2(), $n2(), Zr2()];
32439          return false !== e4.autoSessionTracking && t4.push(Qr2()), t4;
32440        })({}).filter((function(e4) {
32441          return !["BrowserApiErrors", "Breadcrumbs", "GlobalHandlers"].includes(e4.name);
32442        })), f3 = new mr2({ dsn: "https://[email protected]/168844", transport: Ir2, stackParser: Br2, integrations: h4, environment: a3 }), v4 = new ut2();
32443        if (v4.setClient(f3), f3.init(), this.session_id && v4.setExtra("sessionId", this.session_id), this.properties) {
32444          var g4 = Aa2({}, this.properties);
32445          g4.userName = g4.userName ? "[Filtered]" : void 0, g4.userData = g4.userData ? "[Filtered]" : void 0, g4.token = g4.token ? "[Filtered]" : void 0, v4.setExtra("properties", g4);
32446        }
32447        if (s3) {
32448          var m4 = s3.searchParams.get("domain");
32449          if (!m4) {
32450            var y4 = s3.host.match(/(.*?)\./);
32451            m4 = y4 && y4[1] || "";
32452          }
32453          m4 && v4.setTag("domain", m4);
32454        }
32455        e3.error && (v4.setTag("fatalErrorType", e3.error.type), v4.setExtra("errorDetails", e3.error.details), (null === (c4 = e3.error.details) || void 0 === c4 ? void 0 : c4.uri) && v4.setTag("serverAddress", e3.error.details.uri), (null === (l3 = e3.error.details) || void 0 === l3 ? void 0 : l3.workerGroup) && v4.setTag("workerGroup", e3.error.details.workerGroup), (null === (u3 = e3.error.details) || void 0 === u3 ? void 0 : u3.geoGroup) && v4.setTag("geoGroup", e3.error.details.geoGroup), (null === (d4 = e3.error.details) || void 0 === d4 ? void 0 : d4.on) && v4.setTag("connectionAttempt", e3.error.details.on), null !== (p3 = e3.error.details) && void 0 !== p3 && p3.bundleUrl && (v4.setTag("bundleUrl", e3.error.details.bundleUrl), v4.setTag("bundleError", e3.error.details.sourceError.type)));
32456        v4.setTags({ callMode: this._callObjectMode ? is2() ? "reactNative" : null !== (i4 = this.properties) && void 0 !== i4 && null !== (i4 = i4.dailyConfig) && void 0 !== i4 && null !== (i4 = i4.callMode) && void 0 !== i4 && i4.includes("prebuilt") ? this.properties.dailyConfig.callMode : "custom" : "prebuilt-frame", version: r3.version() });
32457        var b3 = (null === (o3 = e3.error) || void 0 === o3 ? void 0 : o3.msg) || e3.errorMsg;
32458        v4.captureException(new Error(b3));
32459      } }, { key: "_callMachine", value: function() {
32460        var e3;
32461        return null === (e3 = window._daily) || void 0 === e3 || null === (e3 = e3.instances) || void 0 === e3 || null === (e3 = e3[this.callClientId]) || void 0 === e3 ? void 0 : e3.callMachine;
32462      } }, { key: "_maybeUpdateInputSettings", value: function(e3) {
32463        if (!S2(this._inputSettings, e3)) {
32464          var t3 = this._getInputSettings();
32465          this._inputSettings = e3;
32466          var n3 = this._getInputSettings();
32467          S2(t3, n3) || this.emitDailyJSEvent({ action: Uo2, inputSettings: n3 });
32468        }
32469      } }], [{ key: "supportedBrowser", value: function() {
32470        if (is2()) return { supported: true, mobile: true, name: "React Native", version: null, supportsScreenShare: true, supportsSfu: true, supportsVideoProcessing: false, supportsAudioProcessing: false };
32471        var e3 = D2.getParser(rs2());
32472        return { supported: !!fs2(), mobile: "mobile" === e3.getPlatformType(), name: e3.getBrowserName(), version: e3.getBrowserVersion(), supportsFullscreen: !!as2(), supportsScreenShare: !!ss2(), supportsSfu: !!fs2(), supportsVideoProcessing: ps2(), supportsAudioProcessing: hs2() };
32473      } }, { key: "version", value: function() {
32474        return "0.82.0";
32475      } }, { key: "createCallObject", value: function() {
32476        var e3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
32477        return e3.layout = "none", new r3(null, e3);
32478      } }, { key: "wrap", value: function(e3) {
32479        var t3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
32480        if (nc2(), !e3 || !e3.contentWindow || "string" != typeof e3.src) throw new Error("DailyIframe::Wrap needs an iframe-like first argument");
32481        return t3.layout || (t3.customLayout ? t3.layout = "custom-v1" : t3.layout = "browser"), new r3(e3, t3);
32482      } }, { key: "createFrame", value: function(e3, t3) {
32483        var n3, i4;
32484        nc2(), e3 && t3 ? (n3 = e3, i4 = t3) : e3 && e3.append ? (n3 = e3, i4 = {}) : (n3 = document.body, i4 = e3 || {});
32485        var o3 = i4.iframeStyle;
32486        o3 || (o3 = n3 === document.body ? { position: "fixed", border: "1px solid black", backgroundColor: "white", width: "375px", height: "450px", right: "1em", bottom: "1em" } : { border: 0, width: "100%", height: "100%" });
32487        var s3 = document.createElement("iframe");
32488        window.navigator && window.navigator.userAgent.match(/Chrome\/61\./) ? s3.allow = "microphone, camera" : s3.allow = "microphone; camera; autoplay; display-capture; screen-wake-lock", s3.style.visibility = "hidden", n3.appendChild(s3), s3.style.visibility = null, Object.keys(o3).forEach((function(e4) {
32489          return s3.style[e4] = o3[e4];
32490        })), i4.layout || (i4.customLayout ? i4.layout = "custom-v1" : i4.layout = "browser");
32491        try {
32492          return new r3(s3, i4);
32493        } catch (e4) {
32494          throw n3.removeChild(s3), e4;
32495        }
32496      } }, { key: "createTransparentFrame", value: function() {
32497        var e3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
32498        nc2();
32499        var t3 = document.createElement("iframe");
32500        return t3.allow = "microphone; camera; autoplay", t3.style.cssText = "\n      position: fixed;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 100%;\n      border: 0;\n      pointer-events: none;\n    ", document.body.appendChild(t3), e3.layout || (e3.layout = "custom-v1"), r3.wrap(t3, e3);
32501      } }, { key: "getCallInstance", value: function() {
32502        var e3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0;
32503        return e3 ? La2[e3] : Object.values(La2)[0];
32504      } }]);
32505      var i3, c3, d3, h3, v3, g3, m3, y3, _3, w3, k3, M3, C3, E3, T3, O3, P3, A3, j3, I3, x3, L3, R3, U3, V3, J3, $3, q3, z3, W3, H3, G3, Q3, K3, Y3, X3, Z3, ee3;
32506    })();
32507  }
32508});
32509
vendor: 174,870 bytes, lines 32510-37942
32510// node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js
32511var turbo_es2017_esm_exports = {};
32512__export(turbo_es2017_esm_exports, {
32513  FetchEnctype: () => FetchEnctype,
32514  FetchMethod: () => FetchMethod,
32515  FetchRequest: () => FetchRequest,
32516  FetchResponse: () => FetchResponse,
32517  FrameElement: () => FrameElement,
32518  FrameLoadingStyle: () => FrameLoadingStyle,
32519  FrameRenderer: () => FrameRenderer,
32520  PageRenderer: () => PageRenderer,
32521  PageSnapshot: () => PageSnapshot,
32522  StreamActions: () => StreamActions,
32523  StreamElement: () => StreamElement,
32524  StreamSourceElement: () => StreamSourceElement,
32525  cache: () => cache,
32526  config: () => config,
32527  connectStreamSource: () => connectStreamSource,
32528  disconnectStreamSource: () => disconnectStreamSource,
32529  fetch: () => fetchWithTurboHeaders,
32530  fetchEnctypeFromString: () => fetchEnctypeFromString,
32531  fetchMethodFromString: () => fetchMethodFromString,
32532  isSafe: () => isSafe,
32533  morphBodyElements: () => morphBodyElements,
32534  morphChildren: () => morphChildren,
32535  morphElements: () => morphElements,
32536  morphTurboFrameElements: () => morphTurboFrameElements,
32537  navigator: () => sessionNavigator,
32538  registerAdapter: () => registerAdapter,
32539  renderStreamMessage: () => renderStreamMessage,
32540  session: () => session,
32541  setConfirmMethod: () => setConfirmMethod,
32542  setFormMode: () => setFormMode,
32543  setProgressBarDelay: () => setProgressBarDelay,
32544  start: () => start,
32545  visit: () => visit
32546});
32547var FrameLoadingStyle = {
32548  eager: "eager",
32549  lazy: "lazy"
32550};
32551var FrameElement = class _FrameElement extends HTMLElement {
32552  static delegateConstructor = void 0;
32553  loaded = Promise.resolve();
32554  static get observedAttributes() {
32555    return ["disabled", "loading", "src"];
32556  }
32557  constructor() {
32558    super();
32559    this.delegate = new _FrameElement.delegateConstructor(this);
32560  }
32561  connectedCallback() {
32562    this.delegate.connect();
32563  }
32564  disconnectedCallback() {
32565    this.delegate.disconnect();
32566  }
32567  reload() {
32568    return this.delegate.sourceURLReloaded();
32569  }
32570  attributeChangedCallback(name) {
32571    if (name == "loading") {
32572      this.delegate.loadingStyleChanged();
32573    } else if (name == "src") {
32574      this.delegate.sourceURLChanged();
32575    } else if (name == "disabled") {
32576      this.delegate.disabledChanged();
32577    }
32578  }
32579  /**
32580   * Gets the URL to lazily load source HTML from
32581   */
32582  get src() {
32583    return this.getAttribute("src");
32584  }
32585  /**
32586   * Sets the URL to lazily load source HTML from
32587   */
32588  set src(value) {
32589    if (value) {
32590      this.setAttribute("src", value);
32591    } else {
32592      this.removeAttribute("src");
32593    }
32594  }
32595  /**
32596   * Gets the refresh mode for the frame.
32597   */
32598  get refresh() {
32599    return this.getAttribute("refresh");
32600  }
32601  /**
32602   * Sets the refresh mode for the frame.
32603   */
32604  set refresh(value) {
32605    if (value) {
32606      this.setAttribute("refresh", value);
32607    } else {
32608      this.removeAttribute("refresh");
32609    }
32610  }
32611  get shouldReloadWithMorph() {
32612    return this.src && this.refresh === "morph";
32613  }
32614  /**
32615   * Determines if the element is loading
32616   */
32617  get loading() {
32618    return frameLoadingStyleFromString(this.getAttribute("loading") || "");
32619  }
32620  /**
32621   * Sets the value of if the element is loading
32622   */
32623  set loading(value) {
32624    if (value) {
32625      this.setAttribute("loading", value);
32626    } else {
32627      this.removeAttribute("loading");
32628    }
32629  }
32630  /**
32631   * Gets the disabled state of the frame.
32632   *
32633   * If disabled, no requests will be intercepted by the frame.
32634   */
32635  get disabled() {
32636    return this.hasAttribute("disabled");
32637  }
32638  /**
32639   * Sets the disabled state of the frame.
32640   *
32641   * If disabled, no requests will be intercepted by the frame.
32642   */
32643  set disabled(value) {
32644    if (value) {
32645      this.setAttribute("disabled", "");
32646    } else {
32647      this.removeAttribute("disabled");
32648    }
32649  }
32650  /**
32651   * Gets the autoscroll state of the frame.
32652   *
32653   * If true, the frame will be scrolled into view automatically on update.
32654   */
32655  get autoscroll() {
32656    return this.hasAttribute("autoscroll");
32657  }
32658  /**
32659   * Sets the autoscroll state of the frame.
32660   *
32661   * If true, the frame will be scrolled into view automatically on update.
32662   */
32663  set autoscroll(value) {
32664    if (value) {
32665      this.setAttribute("autoscroll", "");
32666    } else {
32667      this.removeAttribute("autoscroll");
32668    }
32669  }
32670  /**
32671   * Determines if the element has finished loading
32672   */
32673  get complete() {
32674    return !this.delegate.isLoading;
32675  }
32676  /**
32677   * Gets the active state of the frame.
32678   *
32679   * If inactive, source changes will not be observed.
32680   */
32681  get isActive() {
32682    return this.ownerDocument === document && !this.isPreview;
32683  }
32684  /**
32685   * Sets the active state of the frame.
32686   *
32687   * If inactive, source changes will not be observed.
32688   */
32689  get isPreview() {
32690    return this.ownerDocument?.documentElement?.hasAttribute("data-turbo-preview");
32691  }
32692};
32693function frameLoadingStyleFromString(style) {
32694  switch (style.toLowerCase()) {
32695    case "lazy":
32696      return FrameLoadingStyle.lazy;
32697    default:
32698      return FrameLoadingStyle.eager;
32699  }
32700}
32701var drive = {
32702  enabled: true,
32703  progressBarDelay: 500,
32704  unvisitableExtensions: /* @__PURE__ */ new Set(
32705    [
32706      ".7z",
32707      ".aac",
32708      ".apk",
32709      ".avi",
32710      ".bmp",
32711      ".bz2",
32712      ".css",
32713      ".csv",
32714      ".deb",
32715      ".dmg",
32716      ".doc",
32717      ".docx",
32718      ".exe",
32719      ".gif",
32720      ".gz",
32721      ".heic",
32722      ".heif",
32723      ".ico",
32724      ".iso",
32725      ".jpeg",
32726      ".jpg",
32727      ".js",
32728      ".json",
32729      ".m4a",
32730      ".mkv",
32731      ".mov",
32732      ".mp3",
32733      ".mp4",
32734      ".mpeg",
32735      ".mpg",
32736      ".msi",
32737      ".ogg",
32738      ".ogv",
32739      ".pdf",
32740      ".pkg",
32741      ".png",
32742      ".ppt",
32743      ".pptx",
32744      ".rar",
32745      ".rtf",
32746      ".svg",
32747      ".tar",
32748      ".tif",
32749      ".tiff",
32750      ".txt",
32751      ".wav",
32752      ".webm",
32753      ".webp",
32754      ".wma",
32755      ".wmv",
32756      ".xls",
32757      ".xlsx",
32758      ".xml",
32759      ".zip"
32760    ]
32761  )
32762};
32763function activateScriptElement(element) {
32764  if (element.getAttribute("data-turbo-eval") == "false") {
32765    return element;
32766  } else {
32767    const createdScriptElement = document.createElement("script");
32768    const cspNonce = getCspNonce();
32769    if (cspNonce) {
32770      createdScriptElement.nonce = cspNonce;
32771    }
32772    createdScriptElement.textContent = element.textContent;
32773    createdScriptElement.async = false;
32774    copyElementAttributes(createdScriptElement, element);
32775    return createdScriptElement;
32776  }
32777}
32778function copyElementAttributes(destinationElement, sourceElement) {
32779  for (const { name, value } of sourceElement.attributes) {
32780    destinationElement.setAttribute(name, value);
32781  }
32782}
32783function createDocumentFragment(html) {
32784  const template = document.createElement("template");
32785  template.innerHTML = html;
32786  return template.content;
32787}
32788function dispatch(eventName, { target, cancelable, detail } = {}) {
32789  const event = new CustomEvent(eventName, {
32790    cancelable,
32791    bubbles: true,
32792    composed: true,
32793    detail
32794  });
32795  if (target && target.isConnected) {
32796    target.dispatchEvent(event);
32797  } else {
32798    document.documentElement.dispatchEvent(event);
32799  }
32800  return event;
32801}
32802function cancelEvent(event) {
32803  event.preventDefault();
32804  event.stopImmediatePropagation();
32805}
32806function nextRepaint() {
32807  if (document.visibilityState === "hidden") {
32808    return nextEventLoopTick();
32809  } else {
32810    return nextAnimationFrame();
32811  }
32812}
32813function nextAnimationFrame() {
32814  return new Promise((resolve) => requestAnimationFrame(() => resolve()));
32815}
32816function nextEventLoopTick() {
32817  return new Promise((resolve) => setTimeout(() => resolve(), 0));
32818}
32819function parseHTMLDocument(html = "") {
32820  return new DOMParser().parseFromString(html, "text/html");
32821}
32822function unindent(strings, ...values) {
32823  const lines = interpolate(strings, values).replace(/^\n/, "").split("\n");
32824  const match = lines[0].match(/^\s+/);
32825  const indent = match ? match[0].length : 0;
32826  return lines.map((line) => line.slice(indent)).join("\n");
32827}
32828function interpolate(strings, values) {
32829  return strings.reduce((result, string, i3) => {
32830    const value = values[i3] == void 0 ? "" : values[i3];
32831    return result + string + value;
32832  }, "");
32833}
32834function uuid() {
32835  return Array.from({ length: 36 }).map((_3, i3) => {
32836    if (i3 == 8 || i3 == 13 || i3 == 18 || i3 == 23) {
32837      return "-";
32838    } else if (i3 == 14) {
32839      return "4";
32840    } else if (i3 == 19) {
32841      return (Math.floor(Math.random() * 4) + 8).toString(16);
32842    } else {
32843      return Math.floor(Math.random() * 16).toString(16);
32844    }
32845  }).join("");
32846}
32847function getAttribute(attributeName, ...elements) {
32848  for (const value of elements.map((element) => element?.getAttribute(attributeName))) {
32849    if (typeof value == "string") return value;
32850  }
32851  return null;
32852}
32853function hasAttribute(attributeName, ...elements) {
32854  return elements.some((element) => element && element.hasAttribute(attributeName));
32855}
32856function markAsBusy(...elements) {
32857  for (const element of elements) {
32858    if (element.localName == "turbo-frame") {
32859      element.setAttribute("busy", "");
32860    }
32861    element.setAttribute("aria-busy", "true");
32862  }
32863}
32864function clearBusyState(...elements) {
32865  for (const element of elements) {
32866    if (element.localName == "turbo-frame") {
32867      element.removeAttribute("busy");
32868    }
32869    element.removeAttribute("aria-busy");
32870  }
32871}
32872function waitForLoad(element, timeoutInMilliseconds = 2e3) {
32873  return new Promise((resolve) => {
32874    const onComplete = () => {
32875      element.removeEventListener("error", onComplete);
32876      element.removeEventListener("load", onComplete);
32877      resolve();
32878    };
32879    element.addEventListener("load", onComplete, { once: true });
32880    element.addEventListener("error", onComplete, { once: true });
32881    setTimeout(resolve, timeoutInMilliseconds);
32882  });
32883}
32884function getHistoryMethodForAction(action) {
32885  switch (action) {
32886    case "replace":
32887      return history.replaceState;
32888    case "advance":
32889    case "restore":
32890      return history.pushState;
32891  }
32892}
32893function isAction(action) {
32894  return action == "advance" || action == "replace" || action == "restore";
32895}
32896function getVisitAction(...elements) {
32897  const action = getAttribute("data-turbo-action", ...elements);
32898  return isAction(action) ? action : null;
32899}
32900function getMetaElement(name) {
32901  return document.querySelector(`meta[name="${name}"]`);
32902}
32903function getMetaContent(name) {
32904  const element = getMetaElement(name);
32905  return element && element.content;
32906}
32907function getCspNonce() {
32908  const element = getMetaElement("csp-nonce");
32909  if (element) {
32910    const { nonce, content } = element;
32911    return nonce == "" ? content : nonce;
32912  }
32913}
32914function setMetaContent(name, content) {
32915  let element = getMetaElement(name);
32916  if (!element) {
32917    element = document.createElement("meta");
32918    element.setAttribute("name", name);
32919    document.head.appendChild(element);
32920  }
32921  element.setAttribute("content", content);
32922  return element;
32923}
32924function findClosestRecursively(element, selector) {
32925  if (element instanceof Element) {
32926    return element.closest(selector) || findClosestRecursively(element.assignedSlot || element.getRootNode()?.host, selector);
32927  }
32928}
32929function elementIsFocusable(element) {
32930  const inertDisabledOrHidden = "[inert], :disabled, [hidden], details:not([open]), dialog:not([open])";
32931  return !!element && element.closest(inertDisabledOrHidden) == null && typeof element.focus == "function";
32932}
32933function queryAutofocusableElement(elementOrDocumentFragment) {
32934  return Array.from(elementOrDocumentFragment.querySelectorAll("[autofocus]")).find(elementIsFocusable);
32935}
32936async function around(callback, reader) {
32937  const before = reader();
32938  callback();
32939  await nextAnimationFrame();
32940  const after = reader();
32941  return [before, after];
32942}
32943function doesNotTargetIFrame(name) {
32944  if (name === "_blank") {
32945    return false;
32946  } else if (name) {
32947    for (const element of document.getElementsByName(name)) {
32948      if (element instanceof HTMLIFrameElement) return false;
32949    }
32950    return true;
32951  } else {
32952    return true;
32953  }
32954}
32955function findLinkFromClickTarget(target) {
32956  const link = findClosestRecursively(target, "a[href], a[xlink\\:href]");
32957  if (!link) return null;
32958  if (link.href.startsWith("#")) return null;
32959  if (link.hasAttribute("download")) return null;
32960  const linkTarget = link.getAttribute("target");
32961  if (linkTarget && linkTarget !== "_self") return null;
32962  return link;
32963}
32964function debounce(fn3, delay) {
32965  let timeoutId = null;
32966  return (...args) => {
32967    const callback = () => fn3.apply(this, args);
32968    clearTimeout(timeoutId);
32969    timeoutId = setTimeout(callback, delay);
32970  };
32971}
32972var submitter = {
32973  "aria-disabled": {
32974    beforeSubmit: (submitter2) => {
32975      submitter2.setAttribute("aria-disabled", "true");
32976      submitter2.addEventListener("click", cancelEvent);
32977    },
32978    afterSubmit: (submitter2) => {
32979      submitter2.removeAttribute("aria-disabled");
32980      submitter2.removeEventListener("click", cancelEvent);
32981    }
32982  },
32983  "disabled": {
32984    beforeSubmit: (submitter2) => submitter2.disabled = true,
32985    afterSubmit: (submitter2) => submitter2.disabled = false
32986  }
32987};
32988var Config = class {
32989  #submitter = null;
32990  constructor(config2) {
32991    Object.assign(this, config2);
32992  }
32993  get submitter() {
32994    return this.#submitter;
32995  }
32996  set submitter(value) {
32997    this.#submitter = submitter[value] || value;
32998  }
32999};
33000var forms = new Config({
33001  mode: "on",
33002  submitter: "disabled"
33003});
33004var config = {
33005  drive,
33006  forms
33007};
33008function expandURL(locatable) {
33009  return new URL(locatable.toString(), document.baseURI);
33010}
33011function getAnchor(url) {
33012  let anchorMatch;
33013  if (url.hash) {
33014    return url.hash.slice(1);
33015  } else if (anchorMatch = url.href.match(/#(.*)$/)) {
33016    return anchorMatch[1];
33017  }
33018}
33019function getAction$1(form, submitter2) {
33020  const action = submitter2?.getAttribute("formaction") || form.getAttribute("action") || form.action;
33021  return expandURL(action);
33022}
33023function getExtension(url) {
33024  return (getLastPathComponent(url).match(/\.[^.]*$/) || [])[0] || "";
33025}
33026function isPrefixedBy(baseURL, url) {
33027  const prefix = addTrailingSlash(url.origin + url.pathname);
33028  return addTrailingSlash(baseURL.href) === prefix || baseURL.href.startsWith(prefix);
33029}
33030function locationIsVisitable(location2, rootLocation) {
33031  return isPrefixedBy(location2, rootLocation) && !config.drive.unvisitableExtensions.has(getExtension(location2));
33032}
33033function getLocationForLink(link) {
33034  return expandURL(link.getAttribute("href") || "");
33035}
33036function getRequestURL(url) {
33037  const anchor = getAnchor(url);
33038  return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;
33039}
33040function toCacheKey(url) {
33041  return getRequestURL(url);
33042}
33043function urlsAreEqual(left, right) {
33044  return expandURL(left).href == expandURL(right).href;
33045}
33046function getPathComponents(url) {
33047  return url.pathname.split("/").slice(1);
33048}
33049function getLastPathComponent(url) {
33050  return getPathComponents(url).slice(-1)[0];
33051}
33052function addTrailingSlash(value) {
33053  return value.endsWith("/") ? value : value + "/";
33054}
33055var FetchResponse = class {
33056  constructor(response) {
33057    this.response = response;
33058  }
33059  get succeeded() {
33060    return this.response.ok;
33061  }
33062  get failed() {
33063    return !this.succeeded;
33064  }
33065  get clientError() {
33066    return this.statusCode >= 400 && this.statusCode <= 499;
33067  }
33068  get serverError() {
33069    return this.statusCode >= 500 && this.statusCode <= 599;
33070  }
33071  get redirected() {
33072    return this.response.redirected;
33073  }
33074  get location() {
33075    return expandURL(this.response.url);
33076  }
33077  get isHTML() {
33078    return this.contentType && this.contentType.match(/^(?:text\/([^\s;,]+\b)?html|application\/xhtml\+xml)\b/);
33079  }
33080  get statusCode() {
33081    return this.response.status;
33082  }
33083  get contentType() {
33084    return this.header("Content-Type");
33085  }
33086  get responseText() {
33087    return this.response.clone().text();
33088  }
33089  get responseHTML() {
33090    if (this.isHTML) {
33091      return this.response.clone().text();
33092    } else {
33093      return Promise.resolve(void 0);
33094    }
33095  }
33096  header(name) {
33097    return this.response.headers.get(name);
33098  }
33099};
33100var LimitedSet = class extends Set {
33101  constructor(maxSize) {
33102    super();
33103    this.maxSize = maxSize;
33104  }
33105  add(value) {
33106    if (this.size >= this.maxSize) {
33107      const iterator = this.values();
33108      const oldestValue = iterator.next().value;
33109      this.delete(oldestValue);
33110    }
33111    super.add(value);
33112  }
33113};
33114var recentRequests = new LimitedSet(20);
33115function fetchWithTurboHeaders(url, options = {}) {
33116  const modifiedHeaders = new Headers(options.headers || {});
33117  const requestUID = uuid();
33118  recentRequests.add(requestUID);
33119  modifiedHeaders.append("X-Turbo-Request-Id", requestUID);
33120  return window.fetch(url, {
33121    ...options,
33122    headers: modifiedHeaders
33123  });
33124}
33125function fetchMethodFromString(method) {
33126  switch (method.toLowerCase()) {
33127    case "get":
33128      return FetchMethod.get;
33129    case "post":
33130      return FetchMethod.post;
33131    case "put":
33132      return FetchMethod.put;
33133    case "patch":
33134      return FetchMethod.patch;
33135    case "delete":
33136      return FetchMethod.delete;
33137  }
33138}
33139var FetchMethod = {
33140  get: "get",
33141  post: "post",
33142  put: "put",
33143  patch: "patch",
33144  delete: "delete"
33145};
33146function fetchEnctypeFromString(encoding) {
33147  switch (encoding.toLowerCase()) {
33148    case FetchEnctype.multipart:
33149      return FetchEnctype.multipart;
33150    case FetchEnctype.plain:
33151      return FetchEnctype.plain;
33152    default:
33153      return FetchEnctype.urlEncoded;
33154  }
33155}
33156var FetchEnctype = {
33157  urlEncoded: "application/x-www-form-urlencoded",
33158  multipart: "multipart/form-data",
33159  plain: "text/plain"
33160};
33161var FetchRequest = class {
33162  abortController = new AbortController();
33163  #resolveRequestPromise = (_value) => {
33164  };
33165  constructor(delegate, method, location2, requestBody = new URLSearchParams(), target = null, enctype = FetchEnctype.urlEncoded) {
33166    const [url, body] = buildResourceAndBody(expandURL(location2), method, requestBody, enctype);
33167    this.delegate = delegate;
33168    this.url = url;
33169    this.target = target;
33170    this.fetchOptions = {
33171      credentials: "same-origin",
33172      redirect: "follow",
33173      method: method.toUpperCase(),
33174      headers: { ...this.defaultHeaders },
33175      body,
33176      signal: this.abortSignal,
33177      referrer: this.delegate.referrer?.href
33178    };
33179    this.enctype = enctype;
33180  }
33181  get method() {
33182    return this.fetchOptions.method;
33183  }
33184  set method(value) {
33185    const fetchBody = this.isSafe ? this.url.searchParams : this.fetchOptions.body || new FormData();
33186    const fetchMethod = fetchMethodFromString(value) || FetchMethod.get;
33187    this.url.search = "";
33188    const [url, body] = buildResourceAndBody(this.url, fetchMethod, fetchBody, this.enctype);
33189    this.url = url;
33190    this.fetchOptions.body = body;
33191    this.fetchOptions.method = fetchMethod.toUpperCase();
33192  }
33193  get headers() {
33194    return this.fetchOptions.headers;
33195  }
33196  set headers(value) {
33197    this.fetchOptions.headers = value;
33198  }
33199  get body() {
33200    if (this.isSafe) {
33201      return this.url.searchParams;
33202    } else {
33203      return this.fetchOptions.body;
33204    }
33205  }
33206  set body(value) {
33207    this.fetchOptions.body = value;
33208  }
33209  get location() {
33210    return this.url;
33211  }
33212  get params() {
33213    return this.url.searchParams;
33214  }
33215  get entries() {
33216    return this.body ? Array.from(this.body.entries()) : [];
33217  }
33218  cancel() {
33219    this.abortController.abort();
33220  }
33221  async perform() {
33222    const { fetchOptions } = this;
33223    this.delegate.prepareRequest(this);
33224    const event = await this.#allowRequestToBeIntercepted(fetchOptions);
33225    try {
33226      this.delegate.requestStarted(this);
33227      if (event.detail.fetchRequest) {
33228        this.response = event.detail.fetchRequest.response;
33229      } else {
33230        this.response = fetchWithTurboHeaders(this.url.href, fetchOptions);
33231      }
33232      const response = await this.response;
33233      return await this.receive(response);
33234    } catch (error2) {
33235      if (error2.name !== "AbortError") {
33236        if (this.#willDelegateErrorHandling(error2)) {
33237          this.delegate.requestErrored(this, error2);
33238        }
33239        throw error2;
33240      }
33241    } finally {
33242      this.delegate.requestFinished(this);
33243    }
33244  }
33245  async receive(response) {
33246    const fetchResponse = new FetchResponse(response);
33247    const event = dispatch("turbo:before-fetch-response", {
33248      cancelable: true,
33249      detail: { fetchResponse },
33250      target: this.target
33251    });
33252    if (event.defaultPrevented) {
33253      this.delegate.requestPreventedHandlingResponse(this, fetchResponse);
33254    } else if (fetchResponse.succeeded) {
33255      this.delegate.requestSucceededWithResponse(this, fetchResponse);
33256    } else {
33257      this.delegate.requestFailedWithResponse(this, fetchResponse);
33258    }
33259    return fetchResponse;
33260  }
33261  get defaultHeaders() {
33262    return {
33263      Accept: "text/html, application/xhtml+xml"
33264    };
33265  }
33266  get isSafe() {
33267    return isSafe(this.method);
33268  }
33269  get abortSignal() {
33270    return this.abortController.signal;
33271  }
33272  acceptResponseType(mimeType) {
33273    this.headers["Accept"] = [mimeType, this.headers["Accept"]].join(", ");
33274  }
33275  async #allowRequestToBeIntercepted(fetchOptions) {
33276    const requestInterception = new Promise((resolve) => this.#resolveRequestPromise = resolve);
33277    const event = dispatch("turbo:before-fetch-request", {
33278      cancelable: true,
33279      detail: {
33280        fetchOptions,
33281        url: this.url,
33282        resume: this.#resolveRequestPromise
33283      },
33284      target: this.target
33285    });
33286    this.url = event.detail.url;
33287    if (event.defaultPrevented) await requestInterception;
33288    return event;
33289  }
33290  #willDelegateErrorHandling(error2) {
33291    const event = dispatch("turbo:fetch-request-error", {
33292      target: this.target,
33293      cancelable: true,
33294      detail: { request: this, error: error2 }
33295    });
33296    return !event.defaultPrevented;
33297  }
33298};
33299function isSafe(fetchMethod) {
33300  return fetchMethodFromString(fetchMethod) == FetchMethod.get;
33301}
33302function buildResourceAndBody(resource, method, requestBody, enctype) {
33303  const searchParams = Array.from(requestBody).length > 0 ? new URLSearchParams(entriesExcludingFiles(requestBody)) : resource.searchParams;
33304  if (isSafe(method)) {
33305    return [mergeIntoURLSearchParams(resource, searchParams), null];
33306  } else if (enctype == FetchEnctype.urlEncoded) {
33307    return [resource, searchParams];
33308  } else {
33309    return [resource, requestBody];
33310  }
33311}
33312function entriesExcludingFiles(requestBody) {
33313  const entries = [];
33314  for (const [name, value] of requestBody) {
33315    if (value instanceof File) continue;
33316    else entries.push([name, value]);
33317  }
33318  return entries;
33319}
33320function mergeIntoURLSearchParams(url, requestBody) {
33321  const searchParams = new URLSearchParams(entriesExcludingFiles(requestBody));
33322  url.search = searchParams.toString();
33323  return url;
33324}
33325var AppearanceObserver = class {
33326  started = false;
33327  constructor(delegate, element) {
33328    this.delegate = delegate;
33329    this.element = element;
33330    this.intersectionObserver = new IntersectionObserver(this.intersect);
33331  }
33332  start() {
33333    if (!this.started) {
33334      this.started = true;
33335      this.intersectionObserver.observe(this.element);
33336    }
33337  }
33338  stop() {
33339    if (this.started) {
33340      this.started = false;
33341      this.intersectionObserver.unobserve(this.element);
33342    }
33343  }
33344  intersect = (entries) => {
33345    const lastEntry = entries.slice(-1)[0];
33346    if (lastEntry?.isIntersecting) {
33347      this.delegate.elementAppearedInViewport(this.element);
33348    }
33349  };
33350};
33351var StreamMessage = class {
33352  static contentType = "text/vnd.turbo-stream.html";
33353  static wrap(message) {
33354    if (typeof message == "string") {
33355      return new this(createDocumentFragment(message));
33356    } else {
33357      return message;
33358    }
33359  }
33360  constructor(fragment) {
33361    this.fragment = importStreamElements(fragment);
33362  }
33363};
33364function importStreamElements(fragment) {
33365  for (const element of fragment.querySelectorAll("turbo-stream")) {
33366    const streamElement = document.importNode(element, true);
33367    for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll("script")) {
33368      inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));
33369    }
33370    element.replaceWith(streamElement);
33371  }
33372  return fragment;
33373}
33374var identity = (key) => key;
33375var LRUCache = class {
33376  keys = [];
33377  entries = {};
33378  #toCacheKey;
33379  constructor(size, toCacheKey2 = identity) {
33380    this.size = size;
33381    this.#toCacheKey = toCacheKey2;
33382  }
33383  has(key) {
33384    return this.#toCacheKey(key) in this.entries;
33385  }
33386  get(key) {
33387    if (this.has(key)) {
33388      const entry = this.read(key);
33389      this.touch(key);
33390      return entry;
33391    }
33392  }
33393  put(key, entry) {
33394    this.write(key, entry);
33395    this.touch(key);
33396    return entry;
33397  }
33398  clear() {
33399    for (const key of Object.keys(this.entries)) {
33400      this.evict(key);
33401    }
33402  }
33403  // Private
33404  read(key) {
33405    return this.entries[this.#toCacheKey(key)];
33406  }
33407  write(key, entry) {
33408    this.entries[this.#toCacheKey(key)] = entry;
33409  }
33410  touch(key) {
33411    key = this.#toCacheKey(key);
33412    const index = this.keys.indexOf(key);
33413    if (index > -1) this.keys.splice(index, 1);
33414    this.keys.unshift(key);
33415    this.trim();
33416  }
33417  trim() {
33418    for (const key of this.keys.splice(this.size)) {
33419      this.evict(key);
33420    }
33421  }
33422  evict(key) {
33423    delete this.entries[key];
33424  }
33425};
33426var PREFETCH_DELAY = 100;
33427var PrefetchCache = class extends LRUCache {
33428  #prefetchTimeout = null;
33429  #maxAges = {};
33430  constructor(size = 1, prefetchDelay = PREFETCH_DELAY) {
33431    super(size, toCacheKey);
33432    this.prefetchDelay = prefetchDelay;
33433  }
33434  putLater(url, request2, ttl) {
33435    this.#prefetchTimeout = setTimeout(() => {
33436      request2.perform();
33437      this.put(url, request2, ttl);
33438      this.#prefetchTimeout = null;
33439    }, this.prefetchDelay);
33440  }
33441  put(url, request2, ttl = cacheTtl) {
33442    super.put(url, request2);
33443    this.#maxAges[toCacheKey(url)] = new Date((/* @__PURE__ */ new Date()).getTime() + ttl);
33444  }
33445  clear() {
33446    super.clear();
33447    if (this.#prefetchTimeout) clearTimeout(this.#prefetchTimeout);
33448  }
33449  evict(key) {
33450    super.evict(key);
33451    delete this.#maxAges[key];
33452  }
33453  has(key) {
33454    if (super.has(key)) {
33455      const maxAge = this.#maxAges[toCacheKey(key)];
33456      return maxAge && maxAge > Date.now();
33457    } else {
33458      return false;
33459    }
33460  }
33461};
33462var cacheTtl = 10 * 1e3;
33463var prefetchCache = new PrefetchCache();
33464var FormSubmissionState = {
33465  initialized: "initialized",
33466  requesting: "requesting",
33467  waiting: "waiting",
33468  receiving: "receiving",
33469  stopping: "stopping",
33470  stopped: "stopped"
33471};
33472var FormSubmission = class _FormSubmission {
33473  state = FormSubmissionState.initialized;
33474  static confirmMethod(message) {
33475    return Promise.resolve(confirm(message));
33476  }
33477  constructor(delegate, formElement, submitter2, mustRedirect = false) {
33478    const method = getMethod(formElement, submitter2);
33479    const action = getAction(getFormAction(formElement, submitter2), method);
33480    const body = buildFormData(formElement, submitter2);
33481    const enctype = getEnctype(formElement, submitter2);
33482    this.delegate = delegate;
33483    this.formElement = formElement;
33484    this.submitter = submitter2;
33485    this.fetchRequest = new FetchRequest(this, method, action, body, formElement, enctype);
33486    this.mustRedirect = mustRedirect;
33487  }
33488  get method() {
33489    return this.fetchRequest.method;
33490  }
33491  set method(value) {
33492    this.fetchRequest.method = value;
33493  }
33494  get action() {
33495    return this.fetchRequest.url.toString();
33496  }
33497  set action(value) {
33498    this.fetchRequest.url = expandURL(value);
33499  }
33500  get body() {
33501    return this.fetchRequest.body;
33502  }
33503  get enctype() {
33504    return this.fetchRequest.enctype;
33505  }
33506  get isSafe() {
33507    return this.fetchRequest.isSafe;
33508  }
33509  get location() {
33510    return this.fetchRequest.url;
33511  }
33512  // The submission process
33513  async start() {
33514    const { initialized, requesting } = FormSubmissionState;
33515    const confirmationMessage = getAttribute("data-turbo-confirm", this.submitter, this.formElement);
33516    if (typeof confirmationMessage === "string") {
33517      const confirmMethod = typeof config.forms.confirm === "function" ? config.forms.confirm : _FormSubmission.confirmMethod;
33518      const answer = await confirmMethod(confirmationMessage, this.formElement, this.submitter);
33519      if (!answer) {
33520        return;
33521      }
33522    }
33523    if (this.state == initialized) {
33524      this.state = requesting;
33525      return this.fetchRequest.perform();
33526    }
33527  }
33528  stop() {
33529    const { stopping, stopped } = FormSubmissionState;
33530    if (this.state != stopping && this.state != stopped) {
33531      this.state = stopping;
33532      this.fetchRequest.cancel();
33533      return true;
33534    }
33535  }
33536  // Fetch request delegate
33537  prepareRequest(request2) {
33538    if (!request2.isSafe) {
33539      const token = getCookieValue(getMetaContent("csrf-param")) || getMetaContent("csrf-token");
33540      if (token) {
33541        request2.headers["X-CSRF-Token"] = token;
33542      }
33543    }
33544    if (this.requestAcceptsTurboStreamResponse(request2)) {
33545      request2.acceptResponseType(StreamMessage.contentType);
33546    }
33547  }
33548  requestStarted(_request) {
33549    this.state = FormSubmissionState.waiting;
33550    if (this.submitter) config.forms.submitter.beforeSubmit(this.submitter);
33551    this.setSubmitsWith();
33552    markAsBusy(this.formElement);
33553    dispatch("turbo:submit-start", {
33554      target: this.formElement,
33555      detail: { formSubmission: this }
33556    });
33557    this.delegate.formSubmissionStarted(this);
33558  }
33559  requestPreventedHandlingResponse(request2, response) {
33560    prefetchCache.clear();
33561    this.result = { success: response.succeeded, fetchResponse: response };
33562  }
33563  requestSucceededWithResponse(request2, response) {
33564    if (response.clientError || response.serverError) {
33565      this.delegate.formSubmissionFailedWithResponse(this, response);
33566      return;
33567    }
33568    prefetchCache.clear();
33569    if (this.requestMustRedirect(request2) && responseSucceededWithoutRedirect(response)) {
33570      const error2 = new Error("Form responses must redirect to another location");
33571      this.delegate.formSubmissionErrored(this, error2);
33572    } else {
33573      this.state = FormSubmissionState.receiving;
33574      this.result = { success: true, fetchResponse: response };
33575      this.delegate.formSubmissionSucceededWithResponse(this, response);
33576    }
33577  }
33578  requestFailedWithResponse(request2, response) {
33579    this.result = { success: false, fetchResponse: response };
33580    this.delegate.formSubmissionFailedWithResponse(this, response);
33581  }
33582  requestErrored(request2, error2) {
33583    this.result = { success: false, error: error2 };
33584    this.delegate.formSubmissionErrored(this, error2);
33585  }
33586  requestFinished(_request) {
33587    this.state = FormSubmissionState.stopped;
33588    if (this.submitter) config.forms.submitter.afterSubmit(this.submitter);
33589    this.resetSubmitterText();
33590    clearBusyState(this.formElement);
33591    dispatch("turbo:submit-end", {
33592      target: this.formElement,
33593      detail: { formSubmission: this, ...this.result }
33594    });
33595    this.delegate.formSubmissionFinished(this);
33596  }
33597  // Private
33598  setSubmitsWith() {
33599    if (!this.submitter || !this.submitsWith) return;
33600    if (this.submitter.matches("button")) {
33601      this.originalSubmitText = this.submitter.innerHTML;
33602      this.submitter.innerHTML = this.submitsWith;
33603    } else if (this.submitter.matches("input")) {
33604      const input = this.submitter;
33605      this.originalSubmitText = input.value;
33606      input.value = this.submitsWith;
33607    }
33608  }
33609  resetSubmitterText() {
33610    if (!this.submitter || !this.originalSubmitText) return;
33611    if (this.submitter.matches("button")) {
33612      this.submitter.innerHTML = this.originalSubmitText;
33613    } else if (this.submitter.matches("input")) {
33614      const input = this.submitter;
33615      input.value = this.originalSubmitText;
33616    }
33617  }
33618  requestMustRedirect(request2) {
33619    return !request2.isSafe && this.mustRedirect;
33620  }
33621  requestAcceptsTurboStreamResponse(request2) {
33622    return !request2.isSafe || hasAttribute("data-turbo-stream", this.submitter, this.formElement);
33623  }
33624  get submitsWith() {
33625    return this.submitter?.getAttribute("data-turbo-submits-with");
33626  }
33627};
33628function buildFormData(formElement, submitter2) {
33629  const formData = new FormData(formElement);
33630  const name = submitter2?.getAttribute("name");
33631  const value = submitter2?.getAttribute("value");
33632  if (name) {
33633    formData.append(name, value || "");
33634  }
33635  return formData;
33636}
33637function getCookieValue(cookieName) {
33638  if (cookieName != null) {
33639    const cookies = document.cookie ? document.cookie.split("; ") : [];
33640    const cookie = cookies.find((cookie2) => cookie2.startsWith(cookieName));
33641    if (cookie) {
33642      const value = cookie.split("=").slice(1).join("=");
33643      return value ? decodeURIComponent(value) : void 0;
33644    }
33645  }
33646}
33647function responseSucceededWithoutRedirect(response) {
33648  return response.statusCode == 200 && !response.redirected;
33649}
33650function getFormAction(formElement, submitter2) {
33651  const formElementAction = typeof formElement.action === "string" ? formElement.action : null;
33652  if (submitter2?.hasAttribute("formaction")) {
33653    return submitter2.getAttribute("formaction") || "";
33654  } else {
33655    return formElement.getAttribute("action") || formElementAction || "";
33656  }
33657}
33658function getAction(formAction, fetchMethod) {
33659  const action = expandURL(formAction);
33660  if (isSafe(fetchMethod)) {
33661    action.search = "";
33662  }
33663  return action;
33664}
33665function getMethod(formElement, submitter2) {
33666  const method = submitter2?.getAttribute("formmethod") || formElement.getAttribute("method") || "";
33667  return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;
33668}
33669function getEnctype(formElement, submitter2) {
33670  return fetchEnctypeFromString(submitter2?.getAttribute("formenctype") || formElement.enctype);
33671}
33672var Snapshot = class {
33673  constructor(element) {
33674    this.element = element;
33675  }
33676  get activeElement() {
33677    return this.element.ownerDocument.activeElement;
33678  }
33679  get children() {
33680    return [...this.element.children];
33681  }
33682  hasAnchor(anchor) {
33683    return this.getElementForAnchor(anchor) != null;
33684  }
33685  getElementForAnchor(anchor) {
33686    return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;
33687  }
33688  get isConnected() {
33689    return this.element.isConnected;
33690  }
33691  get firstAutofocusableElement() {
33692    return queryAutofocusableElement(this.element);
33693  }
33694  get permanentElements() {
33695    return queryPermanentElementsAll(this.element);
33696  }
33697  getPermanentElementById(id) {
33698    return getPermanentElementById(this.element, id);
33699  }
33700  getPermanentElementMapForSnapshot(snapshot) {
33701    const permanentElementMap = {};
33702    for (const currentPermanentElement of this.permanentElements) {
33703      const { id } = currentPermanentElement;
33704      const newPermanentElement = snapshot.getPermanentElementById(id);
33705      if (newPermanentElement) {
33706        permanentElementMap[id] = [currentPermanentElement, newPermanentElement];
33707      }
33708    }
33709    return permanentElementMap;
33710  }
33711};
33712function getPermanentElementById(node, id) {
33713  return node.querySelector(`#${id}[data-turbo-permanent]`);
33714}
33715function queryPermanentElementsAll(node) {
33716  return node.querySelectorAll("[id][data-turbo-permanent]");
33717}
33718var FormSubmitObserver = class {
33719  started = false;
33720  constructor(delegate, eventTarget) {
33721    this.delegate = delegate;
33722    this.eventTarget = eventTarget;
33723  }
33724  start() {
33725    if (!this.started) {
33726      this.eventTarget.addEventListener("submit", this.submitCaptured, true);
33727      this.started = true;
33728    }
33729  }
33730  stop() {
33731    if (this.started) {
33732      this.eventTarget.removeEventListener("submit", this.submitCaptured, true);
33733      this.started = false;
33734    }
33735  }
33736  submitCaptured = () => {
33737    this.eventTarget.removeEventListener("submit", this.submitBubbled, false);
33738    this.eventTarget.addEventListener("submit", this.submitBubbled, false);
33739  };
33740  submitBubbled = (event) => {
33741    if (!event.defaultPrevented) {
33742      const form = event.target instanceof HTMLFormElement ? event.target : void 0;
33743      const submitter2 = event.submitter || void 0;
33744      if (form && submissionDoesNotDismissDialog(form, submitter2) && submissionDoesNotTargetIFrame(form, submitter2) && this.delegate.willSubmitForm(form, submitter2)) {
33745        event.preventDefault();
33746        event.stopImmediatePropagation();
33747        this.delegate.formSubmitted(form, submitter2);
33748      }
33749    }
33750  };
33751};
33752function submissionDoesNotDismissDialog(form, submitter2) {
33753  const method = submitter2?.getAttribute("formmethod") || form.getAttribute("method");
33754  return method != "dialog";
33755}
33756function submissionDoesNotTargetIFrame(form, submitter2) {
33757  const target = submitter2?.getAttribute("formtarget") || form.getAttribute("target");
33758  return doesNotTargetIFrame(target);
33759}
33760var View = class {
33761  #resolveRenderPromise = (_value) => {
33762  };
33763  #resolveInterceptionPromise = (_value) => {
33764  };
33765  constructor(delegate, element) {
33766    this.delegate = delegate;
33767    this.element = element;
33768  }
33769  // Scrolling
33770  scrollToAnchor(anchor) {
33771    const element = this.snapshot.getElementForAnchor(anchor);
33772    if (element) {
33773      this.focusElement(element);
33774      this.scrollToElement(element);
33775    } else {
33776      this.scrollToPosition({ x: 0, y: 0 });
33777    }
33778  }
33779  scrollToAnchorFromLocation(location2) {
33780    this.scrollToAnchor(getAnchor(location2));
33781  }
33782  scrollToElement(element) {
33783    element.scrollIntoView();
33784  }
33785  focusElement(element) {
33786    if (element instanceof HTMLElement) {
33787      if (element.hasAttribute("tabindex")) {
33788        element.focus();
33789      } else {
33790        element.setAttribute("tabindex", "-1");
33791        element.focus();
33792        element.removeAttribute("tabindex");
33793      }
33794    }
33795  }
33796  scrollToPosition({ x: x3, y: y3 }) {
33797    this.scrollRoot.scrollTo(x3, y3);
33798  }
33799  scrollToTop() {
33800    this.scrollToPosition({ x: 0, y: 0 });
33801  }
33802  get scrollRoot() {
33803    return window;
33804  }
33805  // Rendering
33806  async render(renderer) {
33807    const { isPreview, shouldRender, willRender, newSnapshot: snapshot } = renderer;
33808    const shouldInvalidate = willRender;
33809    if (shouldRender) {
33810      try {
33811        this.renderPromise = new Promise((resolve) => this.#resolveRenderPromise = resolve);
33812        this.renderer = renderer;
33813        await this.prepareToRenderSnapshot(renderer);
33814        const renderInterception = new Promise((resolve) => this.#resolveInterceptionPromise = resolve);
33815        const options = { resume: this.#resolveInterceptionPromise, render: this.renderer.renderElement, renderMethod: this.renderer.renderMethod };
33816        const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);
33817        if (!immediateRender) await renderInterception;
33818        await this.renderSnapshot(renderer);
33819        this.delegate.viewRenderedSnapshot(snapshot, isPreview, this.renderer.renderMethod);
33820        this.delegate.preloadOnLoadLinksForView(this.element);
33821        this.finishRenderingSnapshot(renderer);
33822      } finally {
33823        delete this.renderer;
33824        this.#resolveRenderPromise(void 0);
33825        delete this.renderPromise;
33826      }
33827    } else if (shouldInvalidate) {
33828      this.invalidate(renderer.reloadReason);
33829    }
33830  }
33831  invalidate(reason) {
33832    this.delegate.viewInvalidated(reason);
33833  }
33834  async prepareToRenderSnapshot(renderer) {
33835    this.markAsPreview(renderer.isPreview);
33836    await renderer.prepareToRender();
33837  }
33838  markAsPreview(isPreview) {
33839    if (isPreview) {
33840      this.element.setAttribute("data-turbo-preview", "");
33841    } else {
33842      this.element.removeAttribute("data-turbo-preview");
33843    }
33844  }
33845  markVisitDirection(direction) {
33846    this.element.setAttribute("data-turbo-visit-direction", direction);
33847  }
33848  unmarkVisitDirection() {
33849    this.element.removeAttribute("data-turbo-visit-direction");
33850  }
33851  async renderSnapshot(renderer) {
33852    await renderer.render();
33853  }
33854  finishRenderingSnapshot(renderer) {
33855    renderer.finishRendering();
33856  }
33857};
33858var FrameView = class extends View {
33859  missing() {
33860    this.element.innerHTML = `<strong class="turbo-frame-error">Content missing</strong>`;
33861  }
33862  get snapshot() {
33863    return new Snapshot(this.element);
33864  }
33865};
33866var LinkInterceptor = class {
33867  constructor(delegate, element) {
33868    this.delegate = delegate;
33869    this.element = element;
33870  }
33871  start() {
33872    this.element.addEventListener("click", this.clickBubbled);
33873    document.addEventListener("turbo:click", this.linkClicked);
33874    document.addEventListener("turbo:before-visit", this.willVisit);
33875  }
33876  stop() {
33877    this.element.removeEventListener("click", this.clickBubbled);
33878    document.removeEventListener("turbo:click", this.linkClicked);
33879    document.removeEventListener("turbo:before-visit", this.willVisit);
33880  }
33881  clickBubbled = (event) => {
33882    if (this.clickEventIsSignificant(event)) {
33883      this.clickEvent = event;
33884    } else {
33885      delete this.clickEvent;
33886    }
33887  };
33888  linkClicked = (event) => {
33889    if (this.clickEvent && this.clickEventIsSignificant(event)) {
33890      if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {
33891        this.clickEvent.preventDefault();
33892        event.preventDefault();
33893        this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);
33894      }
33895    }
33896    delete this.clickEvent;
33897  };
33898  willVisit = (_event) => {
33899    delete this.clickEvent;
33900  };
33901  clickEventIsSignificant(event) {
33902    const target = event.composed ? event.target?.parentElement : event.target;
33903    const element = findLinkFromClickTarget(target) || target;
33904    return element instanceof Element && element.closest("turbo-frame, html") == this.element;
33905  }
33906};
33907var LinkClickObserver = class {
33908  started = false;
33909  constructor(delegate, eventTarget) {
33910    this.delegate = delegate;
33911    this.eventTarget = eventTarget;
33912  }
33913  start() {
33914    if (!this.started) {
33915      this.eventTarget.addEventListener("click", this.clickCaptured, true);
33916      this.started = true;
33917    }
33918  }
33919  stop() {
33920    if (this.started) {
33921      this.eventTarget.removeEventListener("click", this.clickCaptured, true);
33922      this.started = false;
33923    }
33924  }
33925  clickCaptured = () => {
33926    this.eventTarget.removeEventListener("click", this.clickBubbled, false);
33927    this.eventTarget.addEventListener("click", this.clickBubbled, false);
33928  };
33929  clickBubbled = (event) => {
33930    if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {
33931      const target = event.composedPath && event.composedPath()[0] || event.target;
33932      const link = findLinkFromClickTarget(target);
33933      if (link && doesNotTargetIFrame(link.target)) {
33934        const location2 = getLocationForLink(link);
33935        if (this.delegate.willFollowLinkToLocation(link, location2, event)) {
33936          event.preventDefault();
33937          this.delegate.followedLinkToLocation(link, location2);
33938        }
33939      }
33940    }
33941  };
33942  clickEventIsSignificant(event) {
33943    return !(event.target && event.target.isContentEditable || event.defaultPrevented || event.which > 1 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey);
33944  }
33945};
33946var FormLinkClickObserver = class {
33947  constructor(delegate, element) {
33948    this.delegate = delegate;
33949    this.linkInterceptor = new LinkClickObserver(this, element);
33950  }
33951  start() {
33952    this.linkInterceptor.start();
33953  }
33954  stop() {
33955    this.linkInterceptor.stop();
33956  }
33957  // Link hover observer delegate
33958  canPrefetchRequestToLocation(link, location2) {
33959    return false;
33960  }
33961  prefetchAndCacheRequestToLocation(link, location2) {
33962    return;
33963  }
33964  // Link click observer delegate
33965  willFollowLinkToLocation(link, location2, originalEvent) {
33966    return this.delegate.willSubmitFormLinkToLocation(link, location2, originalEvent) && (link.hasAttribute("data-turbo-method") || link.hasAttribute("data-turbo-stream"));
33967  }
33968  followedLinkToLocation(link, location2) {
33969    const form = document.createElement("form");
33970    const type = "hidden";
33971    for (const [name, value] of location2.searchParams) {
33972      form.append(Object.assign(document.createElement("input"), { type, name, value }));
33973    }
33974    const action = Object.assign(location2, { search: "" });
33975    form.setAttribute("data-turbo", "true");
33976    form.setAttribute("action", action.href);
33977    form.setAttribute("hidden", "");
33978    const method = link.getAttribute("data-turbo-method");
33979    if (method) form.setAttribute("method", method);
33980    const turboFrame = link.getAttribute("data-turbo-frame");
33981    if (turboFrame) form.setAttribute("data-turbo-frame", turboFrame);
33982    const turboAction = getVisitAction(link);
33983    if (turboAction) form.setAttribute("data-turbo-action", turboAction);
33984    const turboConfirm = link.getAttribute("data-turbo-confirm");
33985    if (turboConfirm) form.setAttribute("data-turbo-confirm", turboConfirm);
33986    const turboStream = link.hasAttribute("data-turbo-stream");
33987    if (turboStream) form.setAttribute("data-turbo-stream", "");
33988    this.delegate.submittedFormLinkToLocation(link, location2, form);
33989    document.body.appendChild(form);
33990    form.addEventListener("turbo:submit-end", () => form.remove(), { once: true });
33991    requestAnimationFrame(() => form.requestSubmit());
33992  }
33993};
33994var Bardo = class {
33995  static async preservingPermanentElements(delegate, permanentElementMap, callback) {
33996    const bardo = new this(delegate, permanentElementMap);
33997    bardo.enter();
33998    await callback();
33999    bardo.leave();
34000  }
34001  constructor(delegate, permanentElementMap) {
34002    this.delegate = delegate;
34003    this.permanentElementMap = permanentElementMap;
34004  }
34005  enter() {
34006    for (const id in this.permanentElementMap) {
34007      const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];
34008      this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);
34009      this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);
34010    }
34011  }
34012  leave() {
34013    for (const id in this.permanentElementMap) {
34014      const [currentPermanentElement] = this.permanentElementMap[id];
34015      this.replaceCurrentPermanentElementWithClone(currentPermanentElement);
34016      this.replacePlaceholderWithPermanentElement(currentPermanentElement);
34017      this.delegate.leavingBardo(currentPermanentElement);
34018    }
34019  }
34020  replaceNewPermanentElementWithPlaceholder(permanentElement) {
34021    const placeholder = createPlaceholderForPermanentElement(permanentElement);
34022    permanentElement.replaceWith(placeholder);
34023  }
34024  replaceCurrentPermanentElementWithClone(permanentElement) {
34025    const clone = permanentElement.cloneNode(true);
34026    permanentElement.replaceWith(clone);
34027  }
34028  replacePlaceholderWithPermanentElement(permanentElement) {
34029    const placeholder = this.getPlaceholderById(permanentElement.id);
34030    placeholder?.replaceWith(permanentElement);
34031  }
34032  getPlaceholderById(id) {
34033    return this.placeholders.find((element) => element.content == id);
34034  }
34035  get placeholders() {
34036    return [...document.querySelectorAll("meta[name=turbo-permanent-placeholder][content]")];
34037  }
34038};
34039function createPlaceholderForPermanentElement(permanentElement) {
34040  const element = document.createElement("meta");
34041  element.setAttribute("name", "turbo-permanent-placeholder");
34042  element.setAttribute("content", permanentElement.id);
34043  return element;
34044}
34045var Renderer = class {
34046  #activeElement = null;
34047  static renderElement(currentElement, newElement) {
34048  }
34049  constructor(currentSnapshot, newSnapshot, isPreview, willRender = true) {
34050    this.currentSnapshot = currentSnapshot;
34051    this.newSnapshot = newSnapshot;
34052    this.isPreview = isPreview;
34053    this.willRender = willRender;
34054    this.renderElement = this.constructor.renderElement;
34055    this.promise = new Promise((resolve, reject) => this.resolvingFunctions = { resolve, reject });
34056  }
34057  get shouldRender() {
34058    return true;
34059  }
34060  get shouldAutofocus() {
34061    return true;
34062  }
34063  get reloadReason() {
34064    return;
34065  }
34066  prepareToRender() {
34067    return;
34068  }
34069  render() {
34070  }
34071  finishRendering() {
34072    if (this.resolvingFunctions) {
34073      this.resolvingFunctions.resolve();
34074      delete this.resolvingFunctions;
34075    }
34076  }
34077  async preservingPermanentElements(callback) {
34078    await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);
34079  }
34080  focusFirstAutofocusableElement() {
34081    if (this.shouldAutofocus) {
34082      const element = this.connectedSnapshot.firstAutofocusableElement;
34083      if (element) {
34084        element.focus();
34085      }
34086    }
34087  }
34088  // Bardo delegate
34089  enteringBardo(currentPermanentElement) {
34090    if (this.#activeElement) return;
34091    if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {
34092      this.#activeElement = this.currentSnapshot.activeElement;
34093    }
34094  }
34095  leavingBardo(currentPermanentElement) {
34096    if (currentPermanentElement.contains(this.#activeElement) && this.#activeElement instanceof HTMLElement) {
34097      this.#activeElement.focus();
34098      this.#activeElement = null;
34099    }
34100  }
34101  get connectedSnapshot() {
34102    return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;
34103  }
34104  get currentElement() {
34105    return this.currentSnapshot.element;
34106  }
34107  get newElement() {
34108    return this.newSnapshot.element;
34109  }
34110  get permanentElementMap() {
34111    return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);
34112  }
34113  get renderMethod() {
34114    return "replace";
34115  }
34116};
34117var FrameRenderer = class extends Renderer {
34118  static renderElement(currentElement, newElement) {
34119    const destinationRange = document.createRange();
34120    destinationRange.selectNodeContents(currentElement);
34121    destinationRange.deleteContents();
34122    const frameElement = newElement;
34123    const sourceRange = frameElement.ownerDocument?.createRange();
34124    if (sourceRange) {
34125      sourceRange.selectNodeContents(frameElement);
34126      currentElement.appendChild(sourceRange.extractContents());
34127    }
34128  }
34129  constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {
34130    super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);
34131    this.delegate = delegate;
34132  }
34133  get shouldRender() {
34134    return true;
34135  }
34136  async render() {
34137    await nextRepaint();
34138    this.preservingPermanentElements(() => {
34139      this.loadFrameElement();
34140    });
34141    this.scrollFrameIntoView();
34142    await nextRepaint();
34143    this.focusFirstAutofocusableElement();
34144    await nextRepaint();
34145    this.activateScriptElements();
34146  }
34147  loadFrameElement() {
34148    this.delegate.willRenderFrame(this.currentElement, this.newElement);
34149    this.renderElement(this.currentElement, this.newElement);
34150  }
34151  scrollFrameIntoView() {
34152    if (this.currentElement.autoscroll || this.newElement.autoscroll) {
34153      const element = this.currentElement.firstElementChild;
34154      const block = readScrollLogicalPosition(this.currentElement.getAttribute("data-autoscroll-block"), "end");
34155      const behavior = readScrollBehavior(this.currentElement.getAttribute("data-autoscroll-behavior"), "auto");
34156      if (element) {
34157        element.scrollIntoView({ block, behavior });
34158        return true;
34159      }
34160    }
34161    return false;
34162  }
34163  activateScriptElements() {
34164    for (const inertScriptElement of this.newScriptElements) {
34165      const activatedScriptElement = activateScriptElement(inertScriptElement);
34166      inertScriptElement.replaceWith(activatedScriptElement);
34167    }
34168  }
34169  get newScriptElements() {
34170    return this.currentElement.querySelectorAll("script");
34171  }
34172};
34173function readScrollLogicalPosition(value, defaultValue) {
34174  if (value == "end" || value == "start" || value == "center" || value == "nearest") {
34175    return value;
34176  } else {
34177    return defaultValue;
34178  }
34179}
34180function readScrollBehavior(value, defaultValue) {
34181  if (value == "auto" || value == "smooth") {
34182    return value;
34183  } else {
34184    return defaultValue;
34185  }
34186}
34187var Idiomorph = (function() {
34188  const noOp = () => {
34189  };
34190  const defaults = {
34191    morphStyle: "outerHTML",
34192    callbacks: {
34193      beforeNodeAdded: noOp,
34194      afterNodeAdded: noOp,
34195      beforeNodeMorphed: noOp,
34196      afterNodeMorphed: noOp,
34197      beforeNodeRemoved: noOp,
34198      afterNodeRemoved: noOp,
34199      beforeAttributeUpdated: noOp
34200    },
34201    head: {
34202      style: "merge",
34203      shouldPreserve: (elt) => elt.getAttribute("im-preserve") === "true",
34204      shouldReAppend: (elt) => elt.getAttribute("im-re-append") === "true",
34205      shouldRemove: noOp,
34206      afterHeadMorphed: noOp
34207    },
34208    restoreFocus: true
34209  };
34210  function morph(oldNode, newContent, config2 = {}) {
34211    oldNode = normalizeElement(oldNode);
34212    const newNode = normalizeParent(newContent);
34213    const ctx = createMorphContext(oldNode, newNode, config2);
34214    const morphedNodes = saveAndRestoreFocus(ctx, () => {
34215      return withHeadBlocking(
34216        ctx,
34217        oldNode,
34218        newNode,
34219        /** @param {MorphContext} ctx */
34220        (ctx2) => {
34221          if (ctx2.morphStyle === "innerHTML") {
34222            morphChildren2(ctx2, oldNode, newNode);
34223            return Array.from(oldNode.childNodes);
34224          } else {
34225            return morphOuterHTML(ctx2, oldNode, newNode);
34226          }
34227        }
34228      );
34229    });
34230    ctx.pantry.remove();
34231    return morphedNodes;
34232  }
34233  function morphOuterHTML(ctx, oldNode, newNode) {
34234    const oldParent = normalizeParent(oldNode);
34235    morphChildren2(
34236      ctx,
34237      oldParent,
34238      newNode,
34239      // these two optional params are the secret sauce
34240      oldNode,
34241      // start point for iteration
34242      oldNode.nextSibling
34243      // end point for iteration
34244    );
34245    return Array.from(oldParent.childNodes);
34246  }
34247  function saveAndRestoreFocus(ctx, fn3) {
34248    if (!ctx.config.restoreFocus) return fn3();
34249    let activeElement = (
34250      /** @type {HTMLInputElement|HTMLTextAreaElement|null} */
34251      document.activeElement
34252    );
34253    if (!(activeElement instanceof HTMLInputElement || activeElement instanceof HTMLTextAreaElement)) {
34254      return fn3();
34255    }
34256    const { id: activeElementId, selectionStart, selectionEnd } = activeElement;
34257    const results = fn3();
34258    if (activeElementId && activeElementId !== document.activeElement?.getAttribute("id")) {
34259      activeElement = ctx.target.querySelector(`[id="${activeElementId}"]`);
34260      activeElement?.focus();
34261    }
34262    if (activeElement && !activeElement.selectionEnd && selectionEnd) {
34263      activeElement.setSelectionRange(selectionStart, selectionEnd);
34264    }
34265    return results;
34266  }
34267  const morphChildren2 = /* @__PURE__ */ (function() {
34268    function morphChildren3(ctx, oldParent, newParent, insertionPoint = null, endPoint = null) {
34269      if (oldParent instanceof HTMLTemplateElement && newParent instanceof HTMLTemplateElement) {
34270        oldParent = oldParent.content;
34271        newParent = newParent.content;
34272      }
34273      insertionPoint ||= oldParent.firstChild;
34274      for (const newChild of newParent.childNodes) {
34275        if (insertionPoint && insertionPoint != endPoint) {
34276          const bestMatch = findBestMatch(
34277            ctx,
34278            newChild,
34279            insertionPoint,
34280            endPoint
34281          );
34282          if (bestMatch) {
34283            if (bestMatch !== insertionPoint) {
34284              removeNodesBetween(ctx, insertionPoint, bestMatch);
34285            }
34286            morphNode(bestMatch, newChild, ctx);
34287            insertionPoint = bestMatch.nextSibling;
34288            continue;
34289          }
34290        }
34291        if (newChild instanceof Element) {
34292          const newChildId = (
34293            /** @type {String} */
34294            newChild.getAttribute("id")
34295          );
34296          if (ctx.persistentIds.has(newChildId)) {
34297            const movedChild = moveBeforeById(
34298              oldParent,
34299              newChildId,
34300              insertionPoint,
34301              ctx
34302            );
34303            morphNode(movedChild, newChild, ctx);
34304            insertionPoint = movedChild.nextSibling;
34305            continue;
34306          }
34307        }
34308        const insertedNode = createNode(
34309          oldParent,
34310          newChild,
34311          insertionPoint,
34312          ctx
34313        );
34314        if (insertedNode) {
34315          insertionPoint = insertedNode.nextSibling;
34316        }
34317      }
34318      while (insertionPoint && insertionPoint != endPoint) {
34319        const tempNode = insertionPoint;
34320        insertionPoint = insertionPoint.nextSibling;
34321        removeNode(ctx, tempNode);
34322      }
34323    }
34324    function createNode(oldParent, newChild, insertionPoint, ctx) {
34325      if (ctx.callbacks.beforeNodeAdded(newChild) === false) return null;
34326      if (ctx.idMap.has(newChild)) {
34327        const newEmptyChild = document.createElement(
34328          /** @type {Element} */
34329          newChild.tagName
34330        );
34331        oldParent.insertBefore(newEmptyChild, insertionPoint);
34332        morphNode(newEmptyChild, newChild, ctx);
34333        ctx.callbacks.afterNodeAdded(newEmptyChild);
34334        return newEmptyChild;
34335      } else {
34336        const newClonedChild = document.importNode(newChild, true);
34337        oldParent.insertBefore(newClonedChild, insertionPoint);
34338        ctx.callbacks.afterNodeAdded(newClonedChild);
34339        return newClonedChild;
34340      }
34341    }
34342    const findBestMatch = /* @__PURE__ */ (function() {
34343      function findBestMatch2(ctx, node, startPoint, endPoint) {
34344        let softMatch = null;
34345        let nextSibling = node.nextSibling;
34346        let siblingSoftMatchCount = 0;
34347        let cursor = startPoint;
34348        while (cursor && cursor != endPoint) {
34349          if (isSoftMatch(cursor, node)) {
34350            if (isIdSetMatch(ctx, cursor, node)) {
34351              return cursor;
34352            }
34353            if (softMatch === null) {
34354              if (!ctx.idMap.has(cursor)) {
34355                softMatch = cursor;
34356              }
34357            }
34358          }
34359          if (softMatch === null && nextSibling && isSoftMatch(cursor, nextSibling)) {
34360            siblingSoftMatchCount++;
34361            nextSibling = nextSibling.nextSibling;
34362            if (siblingSoftMatchCount >= 2) {
34363              softMatch = void 0;
34364            }
34365          }
34366          if (ctx.activeElementAndParents.includes(cursor)) break;
34367          cursor = cursor.nextSibling;
34368        }
34369        return softMatch || null;
34370      }
34371      function isIdSetMatch(ctx, oldNode, newNode) {
34372        let oldSet = ctx.idMap.get(oldNode);
34373        let newSet = ctx.idMap.get(newNode);
34374        if (!newSet || !oldSet) return false;
34375        for (const id of oldSet) {
34376          if (newSet.has(id)) {
34377            return true;
34378          }
34379        }
34380        return false;
34381      }
34382      function isSoftMatch(oldNode, newNode) {
34383        const oldElt = (
34384          /** @type {Element} */
34385          oldNode
34386        );
34387        const newElt = (
34388          /** @type {Element} */
34389          newNode
34390        );
34391        return oldElt.nodeType === newElt.nodeType && oldElt.tagName === newElt.tagName && // If oldElt has an `id` with possible state and it doesn't match newElt.id then avoid morphing.
34392        // We'll still match an anonymous node with an IDed newElt, though, because if it got this far,
34393        // its not persistent, and new nodes can't have any hidden state.
34394        // We can't use .id because of form input shadowing, and we can't count on .getAttribute's presence because it could be a document-fragment
34395        (!oldElt.getAttribute?.("id") || oldElt.getAttribute?.("id") === newElt.getAttribute?.("id"));
34396      }
34397      return findBestMatch2;
34398    })();
34399    function removeNode(ctx, node) {
34400      if (ctx.idMap.has(node)) {
34401        moveBefore(ctx.pantry, node, null);
34402      } else {
34403        if (ctx.callbacks.beforeNodeRemoved(node) === false) return;
34404        node.parentNode?.removeChild(node);
34405        ctx.callbacks.afterNodeRemoved(node);
34406      }
34407    }
34408    function removeNodesBetween(ctx, startInclusive, endExclusive) {
34409      let cursor = startInclusive;
34410      while (cursor && cursor !== endExclusive) {
34411        let tempNode = (
34412          /** @type {Node} */
34413          cursor
34414        );
34415        cursor = cursor.nextSibling;
34416        removeNode(ctx, tempNode);
34417      }
34418      return cursor;
34419    }
34420    function moveBeforeById(parentNode, id, after, ctx) {
34421      const target = (
34422        /** @type {Element} - will always be found */
34423        // ctx.target.id unsafe because of form input shadowing
34424        // ctx.target could be a document fragment which doesn't have `getAttribute`
34425        ctx.target.getAttribute?.("id") === id && ctx.target || ctx.target.querySelector(`[id="${id}"]`) || ctx.pantry.querySelector(`[id="${id}"]`)
34426      );
34427      removeElementFromAncestorsIdMaps(target, ctx);
34428      moveBefore(parentNode, target, after);
34429      return target;
34430    }
34431    function removeElementFromAncestorsIdMaps(element, ctx) {
34432      const id = (
34433        /** @type {String} */
34434        element.getAttribute("id")
34435      );
34436      while (element = element.parentNode) {
34437        let idSet = ctx.idMap.get(element);
34438        if (idSet) {
34439          idSet.delete(id);
34440          if (!idSet.size) {
34441            ctx.idMap.delete(element);
34442          }
34443        }
34444      }
34445    }
34446    function moveBefore(parentNode, element, after) {
34447      if (parentNode.moveBefore) {
34448        try {
34449          parentNode.moveBefore(element, after);
34450        } catch (e3) {
34451          parentNode.insertBefore(element, after);
34452        }
34453      } else {
34454        parentNode.insertBefore(element, after);
34455      }
34456    }
34457    return morphChildren3;
34458  })();
34459  const morphNode = /* @__PURE__ */ (function() {
34460    function morphNode2(oldNode, newContent, ctx) {
34461      if (ctx.ignoreActive && oldNode === document.activeElement) {
34462        return null;
34463      }
34464      if (ctx.callbacks.beforeNodeMorphed(oldNode, newContent) === false) {
34465        return oldNode;
34466      }
34467      if (oldNode instanceof HTMLHeadElement && ctx.head.ignore) ;
34468      else if (oldNode instanceof HTMLHeadElement && ctx.head.style !== "morph") {
34469        handleHeadElement(
34470          oldNode,
34471          /** @type {HTMLHeadElement} */
34472          newContent,
34473          ctx
34474        );
34475      } else {
34476        morphAttributes(oldNode, newContent, ctx);
34477        if (!ignoreValueOfActiveElement(oldNode, ctx)) {
34478          morphChildren2(ctx, oldNode, newContent);
34479        }
34480      }
34481      ctx.callbacks.afterNodeMorphed(oldNode, newContent);
34482      return oldNode;
34483    }
34484    function morphAttributes(oldNode, newNode, ctx) {
34485      let type = newNode.nodeType;
34486      if (type === 1) {
34487        const oldElt = (
34488          /** @type {Element} */
34489          oldNode
34490        );
34491        const newElt = (
34492          /** @type {Element} */
34493          newNode
34494        );
34495        const oldAttributes = oldElt.attributes;
34496        const newAttributes = newElt.attributes;
34497        for (const newAttribute of newAttributes) {
34498          if (ignoreAttribute(newAttribute.name, oldElt, "update", ctx)) {
34499            continue;
34500          }
34501          if (oldElt.getAttribute(newAttribute.name) !== newAttribute.value) {
34502            oldElt.setAttribute(newAttribute.name, newAttribute.value);
34503          }
34504        }
34505        for (let i3 = oldAttributes.length - 1; 0 <= i3; i3--) {
34506          const oldAttribute = oldAttributes[i3];
34507          if (!oldAttribute) continue;
34508          if (!newElt.hasAttribute(oldAttribute.name)) {
34509            if (ignoreAttribute(oldAttribute.name, oldElt, "remove", ctx)) {
34510              continue;
34511            }
34512            oldElt.removeAttribute(oldAttribute.name);
34513          }
34514        }
34515        if (!ignoreValueOfActiveElement(oldElt, ctx)) {
34516          syncInputValue(oldElt, newElt, ctx);
34517        }
34518      }
34519      if (type === 8 || type === 3) {
34520        if (oldNode.nodeValue !== newNode.nodeValue) {
34521          oldNode.nodeValue = newNode.nodeValue;
34522        }
34523      }
34524    }
34525    function syncInputValue(oldElement, newElement, ctx) {
34526      if (oldElement instanceof HTMLInputElement && newElement instanceof HTMLInputElement && newElement.type !== "file") {
34527        let newValue = newElement.value;
34528        let oldValue = oldElement.value;
34529        syncBooleanAttribute(oldElement, newElement, "checked", ctx);
34530        syncBooleanAttribute(oldElement, newElement, "disabled", ctx);
34531        if (!newElement.hasAttribute("value")) {
34532          if (!ignoreAttribute("value", oldElement, "remove", ctx)) {
34533            oldElement.value = "";
34534            oldElement.removeAttribute("value");
34535          }
34536        } else if (oldValue !== newValue) {
34537          if (!ignoreAttribute("value", oldElement, "update", ctx)) {
34538            oldElement.setAttribute("value", newValue);
34539            oldElement.value = newValue;
34540          }
34541        }
34542      } else if (oldElement instanceof HTMLOptionElement && newElement instanceof HTMLOptionElement) {
34543        syncBooleanAttribute(oldElement, newElement, "selected", ctx);
34544      } else if (oldElement instanceof HTMLTextAreaElement && newElement instanceof HTMLTextAreaElement) {
34545        let newValue = newElement.value;
34546        let oldValue = oldElement.value;
34547        if (ignoreAttribute("value", oldElement, "update", ctx)) {
34548          return;
34549        }
34550        if (newValue !== oldValue) {
34551          oldElement.value = newValue;
34552        }
34553        if (oldElement.firstChild && oldElement.firstChild.nodeValue !== newValue) {
34554          oldElement.firstChild.nodeValue = newValue;
34555        }
34556      }
34557    }
34558    function syncBooleanAttribute(oldElement, newElement, attributeName, ctx) {
34559      const newLiveValue = newElement[attributeName], oldLiveValue = oldElement[attributeName];
34560      if (newLiveValue !== oldLiveValue) {
34561        const ignoreUpdate = ignoreAttribute(
34562          attributeName,
34563          oldElement,
34564          "update",
34565          ctx
34566        );
34567        if (!ignoreUpdate) {
34568          oldElement[attributeName] = newElement[attributeName];
34569        }
34570        if (newLiveValue) {
34571          if (!ignoreUpdate) {
34572            oldElement.setAttribute(attributeName, "");
34573          }
34574        } else {
34575          if (!ignoreAttribute(attributeName, oldElement, "remove", ctx)) {
34576            oldElement.removeAttribute(attributeName);
34577          }
34578        }
34579      }
34580    }
34581    function ignoreAttribute(attr, element, updateType, ctx) {
34582      if (attr === "value" && ctx.ignoreActiveValue && element === document.activeElement) {
34583        return true;
34584      }
34585      return ctx.callbacks.beforeAttributeUpdated(attr, element, updateType) === false;
34586    }
34587    function ignoreValueOfActiveElement(possibleActiveElement, ctx) {
34588      return !!ctx.ignoreActiveValue && possibleActiveElement === document.activeElement && possibleActiveElement !== document.body;
34589    }
34590    return morphNode2;
34591  })();
34592  function withHeadBlocking(ctx, oldNode, newNode, callback) {
34593    if (ctx.head.block) {
34594      const oldHead = oldNode.querySelector("head");
34595      const newHead = newNode.querySelector("head");
34596      if (oldHead && newHead) {
34597        const promises = handleHeadElement(oldHead, newHead, ctx);
34598        return Promise.all(promises).then(() => {
34599          const newCtx = Object.assign(ctx, {
34600            head: {
34601              block: false,
34602              ignore: true
34603            }
34604          });
34605          return callback(newCtx);
34606        });
34607      }
34608    }
34609    return callback(ctx);
34610  }
34611  function handleHeadElement(oldHead, newHead, ctx) {
34612    let added = [];
34613    let removed = [];
34614    let preserved = [];
34615    let nodesToAppend = [];
34616    let srcToNewHeadNodes = /* @__PURE__ */ new Map();
34617    for (const newHeadChild of newHead.children) {
34618      srcToNewHeadNodes.set(newHeadChild.outerHTML, newHeadChild);
34619    }
34620    for (const currentHeadElt of oldHead.children) {
34621      let inNewContent = srcToNewHeadNodes.has(currentHeadElt.outerHTML);
34622      let isReAppended = ctx.head.shouldReAppend(currentHeadElt);
34623      let isPreserved = ctx.head.shouldPreserve(currentHeadElt);
34624      if (inNewContent || isPreserved) {
34625        if (isReAppended) {
34626          removed.push(currentHeadElt);
34627        } else {
34628          srcToNewHeadNodes.delete(currentHeadElt.outerHTML);
34629          preserved.push(currentHeadElt);
34630        }
34631      } else {
34632        if (ctx.head.style === "append") {
34633          if (isReAppended) {
34634            removed.push(currentHeadElt);
34635            nodesToAppend.push(currentHeadElt);
34636          }
34637        } else {
34638          if (ctx.head.shouldRemove(currentHeadElt) !== false) {
34639            removed.push(currentHeadElt);
34640          }
34641        }
34642      }
34643    }
34644    nodesToAppend.push(...srcToNewHeadNodes.values());
34645    let promises = [];
34646    for (const newNode of nodesToAppend) {
34647      let newElt = (
34648        /** @type {ChildNode} */
34649        document.createRange().createContextualFragment(newNode.outerHTML).firstChild
34650      );
34651      if (ctx.callbacks.beforeNodeAdded(newElt) !== false) {
34652        if ("href" in newElt && newElt.href || "src" in newElt && newElt.src) {
34653          let resolve;
34654          let promise = new Promise(function(_resolve) {
34655            resolve = _resolve;
34656          });
34657          newElt.addEventListener("load", function() {
34658            resolve();
34659          });
34660          promises.push(promise);
34661        }
34662        oldHead.appendChild(newElt);
34663        ctx.callbacks.afterNodeAdded(newElt);
34664        added.push(newElt);
34665      }
34666    }
34667    for (const removedElement of removed) {
34668      if (ctx.callbacks.beforeNodeRemoved(removedElement) !== false) {
34669        oldHead.removeChild(removedElement);
34670        ctx.callbacks.afterNodeRemoved(removedElement);
34671      }
34672    }
34673    ctx.head.afterHeadMorphed(oldHead, {
34674      added,
34675      kept: preserved,
34676      removed
34677    });
34678    return promises;
34679  }
34680  const createMorphContext = /* @__PURE__ */ (function() {
34681    function createMorphContext2(oldNode, newContent, config2) {
34682      const { persistentIds, idMap } = createIdMaps(oldNode, newContent);
34683      const mergedConfig = mergeDefaults(config2);
34684      const morphStyle = mergedConfig.morphStyle || "outerHTML";
34685      if (!["innerHTML", "outerHTML"].includes(morphStyle)) {
34686        throw `Do not understand how to morph style ${morphStyle}`;
34687      }
34688      return {
34689        target: oldNode,
34690        newContent,
34691        config: mergedConfig,
34692        morphStyle,
34693        ignoreActive: mergedConfig.ignoreActive,
34694        ignoreActiveValue: mergedConfig.ignoreActiveValue,
34695        restoreFocus: mergedConfig.restoreFocus,
34696        idMap,
34697        persistentIds,
34698        pantry: createPantry(),
34699        activeElementAndParents: createActiveElementAndParents(oldNode),
34700        callbacks: mergedConfig.callbacks,
34701        head: mergedConfig.head
34702      };
34703    }
34704    function mergeDefaults(config2) {
34705      let finalConfig = Object.assign({}, defaults);
34706      Object.assign(finalConfig, config2);
34707      finalConfig.callbacks = Object.assign(
34708        {},
34709        defaults.callbacks,
34710        config2.callbacks
34711      );
34712      finalConfig.head = Object.assign({}, defaults.head, config2.head);
34713      return finalConfig;
34714    }
34715    function createPantry() {
34716      const pantry = document.createElement("div");
34717      pantry.hidden = true;
34718      document.body.insertAdjacentElement("afterend", pantry);
34719      return pantry;
34720    }
34721    function createActiveElementAndParents(oldNode) {
34722      let activeElementAndParents = [];
34723      let elt = document.activeElement;
34724      if (elt?.tagName !== "BODY" && oldNode.contains(elt)) {
34725        while (elt) {
34726          activeElementAndParents.push(elt);
34727          if (elt === oldNode) break;
34728          elt = elt.parentElement;
34729        }
34730      }
34731      return activeElementAndParents;
34732    }
34733    function findIdElements(root2) {
34734      let elements = Array.from(root2.querySelectorAll("[id]"));
34735      if (root2.getAttribute?.("id")) {
34736        elements.push(root2);
34737      }
34738      return elements;
34739    }
34740    function populateIdMapWithTree(idMap, persistentIds, root2, elements) {
34741      for (const elt of elements) {
34742        const id = (
34743          /** @type {String} */
34744          elt.getAttribute("id")
34745        );
34746        if (persistentIds.has(id)) {
34747          let current = elt;
34748          while (current) {
34749            let idSet = idMap.get(current);
34750            if (idSet == null) {
34751              idSet = /* @__PURE__ */ new Set();
34752              idMap.set(current, idSet);
34753            }
34754            idSet.add(id);
34755            if (current === root2) break;
34756            current = current.parentElement;
34757          }
34758        }
34759      }
34760    }
34761    function createIdMaps(oldContent, newContent) {
34762      const oldIdElements = findIdElements(oldContent);
34763      const newIdElements = findIdElements(newContent);
34764      const persistentIds = createPersistentIds(oldIdElements, newIdElements);
34765      let idMap = /* @__PURE__ */ new Map();
34766      populateIdMapWithTree(idMap, persistentIds, oldContent, oldIdElements);
34767      const newRoot = newContent.__idiomorphRoot || newContent;
34768      populateIdMapWithTree(idMap, persistentIds, newRoot, newIdElements);
34769      return { persistentIds, idMap };
34770    }
34771    function createPersistentIds(oldIdElements, newIdElements) {
34772      let duplicateIds = /* @__PURE__ */ new Set();
34773      let oldIdTagNameMap = /* @__PURE__ */ new Map();
34774      for (const { id, tagName } of oldIdElements) {
34775        if (oldIdTagNameMap.has(id)) {
34776          duplicateIds.add(id);
34777        } else {
34778          oldIdTagNameMap.set(id, tagName);
34779        }
34780      }
34781      let persistentIds = /* @__PURE__ */ new Set();
34782      for (const { id, tagName } of newIdElements) {
34783        if (persistentIds.has(id)) {
34784          duplicateIds.add(id);
34785        } else if (oldIdTagNameMap.get(id) === tagName) {
34786          persistentIds.add(id);
34787        }
34788      }
34789      for (const id of duplicateIds) {
34790        persistentIds.delete(id);
34791      }
34792      return persistentIds;
34793    }
34794    return createMorphContext2;
34795  })();
34796  const { normalizeElement, normalizeParent } = /* @__PURE__ */ (function() {
34797    const generatedByIdiomorph = /* @__PURE__ */ new WeakSet();
34798    function normalizeElement2(content) {
34799      if (content instanceof Document) {
34800        return content.documentElement;
34801      } else {
34802        return content;
34803      }
34804    }
34805    function normalizeParent2(newContent) {
34806      if (newContent == null) {
34807        return document.createElement("div");
34808      } else if (typeof newContent === "string") {
34809        return normalizeParent2(parseContent(newContent));
34810      } else if (generatedByIdiomorph.has(
34811        /** @type {Element} */
34812        newContent
34813      )) {
34814        return (
34815          /** @type {Element} */
34816          newContent
34817        );
34818      } else if (newContent instanceof Node) {
34819        if (newContent.parentNode) {
34820          return (
34821            /** @type {any} */
34822            new SlicedParentNode(newContent)
34823          );
34824        } else {
34825          const dummyParent = document.createElement("div");
34826          dummyParent.append(newContent);
34827          return dummyParent;
34828        }
34829      } else {
34830        const dummyParent = document.createElement("div");
34831        for (const elt of [...newContent]) {
34832          dummyParent.append(elt);
34833        }
34834        return dummyParent;
34835      }
34836    }
34837    class SlicedParentNode {
34838      /** @param {Node} node */
34839      constructor(node) {
34840        this.originalNode = node;
34841        this.realParentNode = /** @type {Element} */
34842        node.parentNode;
34843        this.previousSibling = node.previousSibling;
34844        this.nextSibling = node.nextSibling;
34845      }
34846      /** @returns {Node[]} */
34847      get childNodes() {
34848        const nodes = [];
34849        let cursor = this.previousSibling ? this.previousSibling.nextSibling : this.realParentNode.firstChild;
34850        while (cursor && cursor != this.nextSibling) {
34851          nodes.push(cursor);
34852          cursor = cursor.nextSibling;
34853        }
34854        return nodes;
34855      }
34856      /**
34857       * @param {string} selector
34858       * @returns {Element[]}
34859       */
34860      querySelectorAll(selector) {
34861        return this.childNodes.reduce(
34862          (results, node) => {
34863            if (node instanceof Element) {
34864              if (node.matches(selector)) results.push(node);
34865              const nodeList = node.querySelectorAll(selector);
34866              for (let i3 = 0; i3 < nodeList.length; i3++) {
34867                results.push(nodeList[i3]);
34868              }
34869            }
34870            return results;
34871          },
34872          /** @type {Element[]} */
34873          []
34874        );
34875      }
34876      /**
34877       * @param {Node} node
34878       * @param {Node} referenceNode
34879       * @returns {Node}
34880       */
34881      insertBefore(node, referenceNode) {
34882        return this.realParentNode.insertBefore(node, referenceNode);
34883      }
34884      /**
34885       * @param {Node} node
34886       * @param {Node} referenceNode
34887       * @returns {Node}
34888       */
34889      moveBefore(node, referenceNode) {
34890        return this.realParentNode.moveBefore(node, referenceNode);
34891      }
34892      /**
34893       * for later use with populateIdMapWithTree to halt upwards iteration
34894       * @returns {Node}
34895       */
34896      get __idiomorphRoot() {
34897        return this.originalNode;
34898      }
34899    }
34900    function parseContent(newContent) {
34901      let parser = new DOMParser();
34902      let contentWithSvgsRemoved = newContent.replace(
34903        /<svg(\s[^>]*>|>)([\s\S]*?)<\/svg>/gim,
34904        ""
34905      );
34906      if (contentWithSvgsRemoved.match(/<\/html>/) || contentWithSvgsRemoved.match(/<\/head>/) || contentWithSvgsRemoved.match(/<\/body>/)) {
34907        let content = parser.parseFromString(newContent, "text/html");
34908        if (contentWithSvgsRemoved.match(/<\/html>/)) {
34909          generatedByIdiomorph.add(content);
34910          return content;
34911        } else {
34912          let htmlElement = content.firstChild;
34913          if (htmlElement) {
34914            generatedByIdiomorph.add(htmlElement);
34915          }
34916          return htmlElement;
34917        }
34918      } else {
34919        let responseDoc = parser.parseFromString(
34920          "<body><template>" + newContent + "</template></body>",
34921          "text/html"
34922        );
34923        let content = (
34924          /** @type {HTMLTemplateElement} */
34925          responseDoc.body.querySelector("template").content
34926        );
34927        generatedByIdiomorph.add(content);
34928        return content;
34929      }
34930    }
34931    return { normalizeElement: normalizeElement2, normalizeParent: normalizeParent2 };
34932  })();
34933  return {
34934    morph,
34935    defaults
34936  };
34937})();
34938function morphElements(currentElement, newElement, { callbacks, ...options } = {}) {
34939  Idiomorph.morph(currentElement, newElement, {
34940    ...options,
34941    callbacks: new DefaultIdiomorphCallbacks(callbacks)
34942  });
34943}
34944function morphChildren(currentElement, newElement, options = {}) {
34945  morphElements(currentElement, newElement.childNodes, {
34946    ...options,
34947    morphStyle: "innerHTML"
34948  });
34949}
34950function shouldRefreshFrameWithMorphing(currentFrame, newFrame) {
34951  return currentFrame instanceof FrameElement && currentFrame.shouldReloadWithMorph && (!newFrame || areFramesCompatibleForRefreshing(currentFrame, newFrame)) && !currentFrame.closest("[data-turbo-permanent]");
34952}
34953function areFramesCompatibleForRefreshing(currentFrame, newFrame) {
34954  return newFrame instanceof Element && newFrame.nodeName === "TURBO-FRAME" && currentFrame.id === newFrame.id && (!newFrame.getAttribute("src") || urlsAreEqual(currentFrame.src, newFrame.getAttribute("src")));
34955}
34956function closestFrameReloadableWithMorphing(node) {
34957  return node.parentElement.closest("turbo-frame[src][refresh=morph]");
34958}
34959var DefaultIdiomorphCallbacks = class {
34960  #beforeNodeMorphed;
34961  constructor({ beforeNodeMorphed } = {}) {
34962    this.#beforeNodeMorphed = beforeNodeMorphed || (() => true);
34963  }
34964  beforeNodeAdded = (node) => {
34965    return !(node.id && node.hasAttribute("data-turbo-permanent") && document.getElementById(node.id));
34966  };
34967  beforeNodeMorphed = (currentElement, newElement) => {
34968    if (currentElement instanceof Element) {
34969      if (!currentElement.hasAttribute("data-turbo-permanent") && this.#beforeNodeMorphed(currentElement, newElement)) {
34970        const event = dispatch("turbo:before-morph-element", {
34971          cancelable: true,
34972          target: currentElement,
34973          detail: { currentElement, newElement }
34974        });
34975        return !event.defaultPrevented;
34976      } else {
34977        return false;
34978      }
34979    }
34980  };
34981  beforeAttributeUpdated = (attributeName, target, mutationType) => {
34982    const event = dispatch("turbo:before-morph-attribute", {
34983      cancelable: true,
34984      target,
34985      detail: { attributeName, mutationType }
34986    });
34987    return !event.defaultPrevented;
34988  };
34989  beforeNodeRemoved = (node) => {
34990    return this.beforeNodeMorphed(node);
34991  };
34992  afterNodeMorphed = (currentElement, newElement) => {
34993    if (currentElement instanceof Element) {
34994      dispatch("turbo:morph-element", {
34995        target: currentElement,
34996        detail: { currentElement, newElement }
34997      });
34998    }
34999  };
35000};
35001var MorphingFrameRenderer = class extends FrameRenderer {
35002  static renderElement(currentElement, newElement) {
35003    dispatch("turbo:before-frame-morph", {
35004      target: currentElement,
35005      detail: { currentElement, newElement }
35006    });
35007    morphChildren(currentElement, newElement, {
35008      callbacks: {
35009        beforeNodeMorphed: (node, newNode) => {
35010          if (shouldRefreshFrameWithMorphing(node, newNode) && closestFrameReloadableWithMorphing(node) === currentElement) {
35011            node.reload();
35012            return false;
35013          }
35014          return true;
35015        }
35016      }
35017    });
35018  }
35019  async preservingPermanentElements(callback) {
35020    return await callback();
35021  }
35022};
35023var ProgressBar = class _ProgressBar {
35024  static animationDuration = 300;
35025  /*ms*/
35026  static get defaultCSS() {
35027    return unindent`
35028      .turbo-progress-bar {
35029        position: fixed;
35030        display: block;
35031        top: 0;
35032        left: 0;
35033        height: 3px;
35034        background: #0076ff;
35035        z-index: 2147483647;
35036        transition:
35037          width ${_ProgressBar.animationDuration}ms ease-out,
35038          opacity ${_ProgressBar.animationDuration / 2}ms ${_ProgressBar.animationDuration / 2}ms ease-in;
35039        transform: translate3d(0, 0, 0);
35040      }
35041    `;
35042  }
35043  hiding = false;
35044  value = 0;
35045  visible = false;
35046  constructor() {
35047    this.stylesheetElement = this.createStylesheetElement();
35048    this.progressElement = this.createProgressElement();
35049    this.installStylesheetElement();
35050    this.setValue(0);
35051  }
35052  show() {
35053    if (!this.visible) {
35054      this.visible = true;
35055      this.installProgressElement();
35056      this.startTrickling();
35057    }
35058  }
35059  hide() {
35060    if (this.visible && !this.hiding) {
35061      this.hiding = true;
35062      this.fadeProgressElement(() => {
35063        this.uninstallProgressElement();
35064        this.stopTrickling();
35065        this.visible = false;
35066        this.hiding = false;
35067      });
35068    }
35069  }
35070  setValue(value) {
35071    this.value = value;
35072    this.refresh();
35073  }
35074  // Private
35075  installStylesheetElement() {
35076    document.head.insertBefore(this.stylesheetElement, document.head.firstChild);
35077  }
35078  installProgressElement() {
35079    this.progressElement.style.width = "0";
35080    this.progressElement.style.opacity = "1";
35081    document.documentElement.insertBefore(this.progressElement, document.body);
35082    this.refresh();
35083  }
35084  fadeProgressElement(callback) {
35085    this.progressElement.style.opacity = "0";
35086    setTimeout(callback, _ProgressBar.animationDuration * 1.5);
35087  }
35088  uninstallProgressElement() {
35089    if (this.progressElement.parentNode) {
35090      document.documentElement.removeChild(this.progressElement);
35091    }
35092  }
35093  startTrickling() {
35094    if (!this.trickleInterval) {
35095      this.trickleInterval = window.setInterval(this.trickle, _ProgressBar.animationDuration);
35096    }
35097  }
35098  stopTrickling() {
35099    window.clearInterval(this.trickleInterval);
35100    delete this.trickleInterval;
35101  }
35102  trickle = () => {
35103    this.setValue(this.value + Math.random() / 100);
35104  };
35105  refresh() {
35106    requestAnimationFrame(() => {
35107      this.progressElement.style.width = `${10 + this.value * 90}%`;
35108    });
35109  }
35110  createStylesheetElement() {
35111    const element = document.createElement("style");
35112    element.type = "text/css";
35113    element.textContent = _ProgressBar.defaultCSS;
35114    const cspNonce = getCspNonce();
35115    if (cspNonce) {
35116      element.nonce = cspNonce;
35117    }
35118    return element;
35119  }
35120  createProgressElement() {
35121    const element = document.createElement("div");
35122    element.className = "turbo-progress-bar";
35123    return element;
35124  }
35125};
35126var HeadSnapshot = class extends Snapshot {
35127  detailsByOuterHTML = this.children.filter((element) => !elementIsNoscript(element)).map((element) => elementWithoutNonce(element)).reduce((result, element) => {
35128    const { outerHTML } = element;
35129    const details = outerHTML in result ? result[outerHTML] : {
35130      type: elementType(element),
35131      tracked: elementIsTracked(element),
35132      elements: []
35133    };
35134    return {
35135      ...result,
35136      [outerHTML]: {
35137        ...details,
35138        elements: [...details.elements, element]
35139      }
35140    };
35141  }, {});
35142  get trackedElementSignature() {
35143    return Object.keys(this.detailsByOuterHTML).filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked).join("");
35144  }
35145  getScriptElementsNotInSnapshot(snapshot) {
35146    return this.getElementsMatchingTypeNotInSnapshot("script", snapshot);
35147  }
35148  getStylesheetElementsNotInSnapshot(snapshot) {
35149    return this.getElementsMatchingTypeNotInSnapshot("stylesheet", snapshot);
35150  }
35151  getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {
35152    return Object.keys(this.detailsByOuterHTML).filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML)).map((outerHTML) => this.detailsByOuterHTML[outerHTML]).filter(({ type }) => type == matchedType).map(({ elements: [element] }) => element);
35153  }
35154  get provisionalElements() {
35155    return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {
35156      const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];
35157      if (type == null && !tracked) {
35158        return [...result, ...elements];
35159      } else if (elements.length > 1) {
35160        return [...result, ...elements.slice(1)];
35161      } else {
35162        return result;
35163      }
35164    }, []);
35165  }
35166  getMetaValue(name) {
35167    const element = this.findMetaElementByName(name);
35168    return element ? element.getAttribute("content") : null;
35169  }
35170  findMetaElementByName(name) {
35171    return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {
35172      const {
35173        elements: [element]
35174      } = this.detailsByOuterHTML[outerHTML];
35175      return elementIsMetaElementWithName(element, name) ? element : result;
35176    }, void 0 | void 0);
35177  }
35178};
35179function elementType(element) {
35180  if (elementIsScript(element)) {
35181    return "script";
35182  } else if (elementIsStylesheet(element)) {
35183    return "stylesheet";
35184  }
35185}
35186function elementIsTracked(element) {
35187  return element.getAttribute("data-turbo-track") == "reload";
35188}
35189function elementIsScript(element) {
35190  const tagName = element.localName;
35191  return tagName == "script";
35192}
35193function elementIsNoscript(element) {
35194  const tagName = element.localName;
35195  return tagName == "noscript";
35196}
35197function elementIsStylesheet(element) {
35198  const tagName = element.localName;
35199  return tagName == "style" || tagName == "link" && element.getAttribute("rel") == "stylesheet";
35200}
35201function elementIsMetaElementWithName(element, name) {
35202  const tagName = element.localName;
35203  return tagName == "meta" && element.getAttribute("name") == name;
35204}
35205function elementWithoutNonce(element) {
35206  if (element.hasAttribute("nonce")) {
35207    element.setAttribute("nonce", "");
35208  }
35209  return element;
35210}
35211var PageSnapshot = class _PageSnapshot extends Snapshot {
35212  static fromHTMLString(html = "") {
35213    return this.fromDocument(parseHTMLDocument(html));
35214  }
35215  static fromElement(element) {
35216    return this.fromDocument(element.ownerDocument);
35217  }
35218  static fromDocument({ documentElement, body, head }) {
35219    return new this(documentElement, body, new HeadSnapshot(head));
35220  }
35221  constructor(documentElement, body, headSnapshot) {
35222    super(body);
35223    this.documentElement = documentElement;
35224    this.headSnapshot = headSnapshot;
35225  }
35226  clone() {
35227    const clonedElement = this.element.cloneNode(true);
35228    const selectElements = this.element.querySelectorAll("select");
35229    const clonedSelectElements = clonedElement.querySelectorAll("select");
35230    for (const [index, source] of selectElements.entries()) {
35231      const clone = clonedSelectElements[index];
35232      for (const option of clone.selectedOptions) option.selected = false;
35233      for (const option of source.selectedOptions) clone.options[option.index].selected = true;
35234    }
35235    for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type="password"]')) {
35236      clonedPasswordInput.value = "";
35237    }
35238    for (const clonedNoscriptElement of clonedElement.querySelectorAll("noscript")) {
35239      clonedNoscriptElement.remove();
35240    }
35241    return new _PageSnapshot(this.documentElement, clonedElement, this.headSnapshot);
35242  }
35243  get lang() {
35244    return this.documentElement.getAttribute("lang");
35245  }
35246  get dir() {
35247    return this.documentElement.getAttribute("dir");
35248  }
35249  get headElement() {
35250    return this.headSnapshot.element;
35251  }
35252  get rootLocation() {
35253    const root2 = this.getSetting("root") ?? "/";
35254    return expandURL(root2);
35255  }
35256  get cacheControlValue() {
35257    return this.getSetting("cache-control");
35258  }
35259  get isPreviewable() {
35260    return this.cacheControlValue != "no-preview";
35261  }
35262  get isCacheable() {
35263    return this.cacheControlValue != "no-cache";
35264  }
35265  get isVisitable() {
35266    return this.getSetting("visit-control") != "reload";
35267  }
35268  get prefersViewTransitions() {
35269    const viewTransitionEnabled = this.getSetting("view-transition") === "true" || this.headSnapshot.getMetaValue("view-transition") === "same-origin";
35270    return viewTransitionEnabled && !window.matchMedia("(prefers-reduced-motion: reduce)").matches;
35271  }
35272  get refreshMethod() {
35273    return this.getSetting("refresh-method");
35274  }
35275  get refreshScroll() {
35276    return this.getSetting("refresh-scroll");
35277  }
35278  // Private
35279  getSetting(name) {
35280    return this.headSnapshot.getMetaValue(`turbo-${name}`);
35281  }
35282};
35283var ViewTransitioner = class {
35284  #viewTransitionStarted = false;
35285  #lastOperation = Promise.resolve();
35286  renderChange(useViewTransition, render) {
35287    if (useViewTransition && this.viewTransitionsAvailable && !this.#viewTransitionStarted) {
35288      this.#viewTransitionStarted = true;
35289      this.#lastOperation = this.#lastOperation.then(async () => {
35290        await document.startViewTransition(render).finished;
35291      });
35292    } else {
35293      this.#lastOperation = this.#lastOperation.then(render);
35294    }
35295    return this.#lastOperation;
35296  }
35297  get viewTransitionsAvailable() {
35298    return document.startViewTransition;
35299  }
35300};
35301var defaultOptions = {
35302  action: "advance",
35303  historyChanged: false,
35304  visitCachedSnapshot: () => {
35305  },
35306  willRender: true,
35307  updateHistory: true,
35308  shouldCacheSnapshot: true,
35309  acceptsStreamResponse: false,
35310  refresh: {}
35311};
35312var TimingMetric = {
35313  visitStart: "visitStart",
35314  requestStart: "requestStart",
35315  requestEnd: "requestEnd",
35316  visitEnd: "visitEnd"
35317};
35318var VisitState = {
35319  initialized: "initialized",
35320  started: "started",
35321  canceled: "canceled",
35322  failed: "failed",
35323  completed: "completed"
35324};
35325var SystemStatusCode = {
35326  networkFailure: 0,
35327  timeoutFailure: -1,
35328  contentTypeMismatch: -2
35329};
35330var Direction = {
35331  advance: "forward",
35332  restore: "back",
35333  replace: "none"
35334};
35335var Visit = class {
35336  identifier = uuid();
35337  // Required by turbo-ios
35338  timingMetrics = {};
35339  followedRedirect = false;
35340  historyChanged = false;
35341  scrolled = false;
35342  shouldCacheSnapshot = true;
35343  acceptsStreamResponse = false;
35344  snapshotCached = false;
35345  state = VisitState.initialized;
35346  viewTransitioner = new ViewTransitioner();
35347  constructor(delegate, location2, restorationIdentifier, options = {}) {
35348    this.delegate = delegate;
35349    this.location = location2;
35350    this.restorationIdentifier = restorationIdentifier || uuid();
35351    const {
35352      action,
35353      historyChanged,
35354      referrer,
35355      snapshot,
35356      snapshotHTML,
35357      response,
35358      visitCachedSnapshot,
35359      willRender,
35360      updateHistory,
35361      shouldCacheSnapshot,
35362      acceptsStreamResponse,
35363      direction,
35364      refresh
35365    } = {
35366      ...defaultOptions,
35367      ...options
35368    };
35369    this.action = action;
35370    this.historyChanged = historyChanged;
35371    this.referrer = referrer;
35372    this.snapshot = snapshot;
35373    this.snapshotHTML = snapshotHTML;
35374    this.response = response;
35375    this.isPageRefresh = this.view.isPageRefresh(this);
35376    this.visitCachedSnapshot = visitCachedSnapshot;
35377    this.willRender = willRender;
35378    this.updateHistory = updateHistory;
35379    this.scrolled = !willRender;
35380    this.shouldCacheSnapshot = shouldCacheSnapshot;
35381    this.acceptsStreamResponse = acceptsStreamResponse;
35382    this.direction = direction || Direction[action];
35383    this.refresh = refresh;
35384  }
35385  get adapter() {
35386    return this.delegate.adapter;
35387  }
35388  get view() {
35389    return this.delegate.view;
35390  }
35391  get history() {
35392    return this.delegate.history;
35393  }
35394  get restorationData() {
35395    return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);
35396  }
35397  start() {
35398    if (this.state == VisitState.initialized) {
35399      this.recordTimingMetric(TimingMetric.visitStart);
35400      this.state = VisitState.started;
35401      this.adapter.visitStarted(this);
35402      this.delegate.visitStarted(this);
35403    }
35404  }
35405  cancel() {
35406    if (this.state == VisitState.started) {
35407      if (this.request) {
35408        this.request.cancel();
35409      }
35410      this.cancelRender();
35411      this.state = VisitState.canceled;
35412    }
35413  }
35414  complete() {
35415    if (this.state == VisitState.started) {
35416      this.recordTimingMetric(TimingMetric.visitEnd);
35417      this.adapter.visitCompleted(this);
35418      this.state = VisitState.completed;
35419      this.followRedirect();
35420      if (!this.followedRedirect) {
35421        this.delegate.visitCompleted(this);
35422      }
35423    }
35424  }
35425  fail() {
35426    if (this.state == VisitState.started) {
35427      this.state = VisitState.failed;
35428      this.adapter.visitFailed(this);
35429      this.delegate.visitCompleted(this);
35430    }
35431  }
35432  changeHistory() {
35433    if (!this.historyChanged && this.updateHistory) {
35434      const actionForHistory = this.location.href === this.referrer?.href ? "replace" : this.action;
35435      const method = getHistoryMethodForAction(actionForHistory);
35436      this.history.update(method, this.location, this.restorationIdentifier);
35437      this.historyChanged = true;
35438    }
35439  }
35440  issueRequest() {
35441    if (this.hasPreloadedResponse()) {
35442      this.simulateRequest();
35443    } else if (this.shouldIssueRequest() && !this.request) {
35444      this.request = new FetchRequest(this, FetchMethod.get, this.location);
35445      this.request.perform();
35446    }
35447  }
35448  simulateRequest() {
35449    if (this.response) {
35450      this.startRequest();
35451      this.recordResponse();
35452      this.finishRequest();
35453    }
35454  }
35455  startRequest() {
35456    this.recordTimingMetric(TimingMetric.requestStart);
35457    this.adapter.visitRequestStarted(this);
35458  }
35459  recordResponse(response = this.response) {
35460    this.response = response;
35461    if (response) {
35462      const { statusCode } = response;
35463      if (isSuccessful(statusCode)) {
35464        this.adapter.visitRequestCompleted(this);
35465      } else {
35466        this.adapter.visitRequestFailedWithStatusCode(this, statusCode);
35467      }
35468    }
35469  }
35470  finishRequest() {
35471    this.recordTimingMetric(TimingMetric.requestEnd);
35472    this.adapter.visitRequestFinished(this);
35473  }
35474  loadResponse() {
35475    if (this.response) {
35476      const { statusCode, responseHTML } = this.response;
35477      this.render(async () => {
35478        if (this.shouldCacheSnapshot) this.cacheSnapshot();
35479        if (this.view.renderPromise) await this.view.renderPromise;
35480        if (isSuccessful(statusCode) && responseHTML != null) {
35481          const snapshot = PageSnapshot.fromHTMLString(responseHTML);
35482          await this.renderPageSnapshot(snapshot, false);
35483          this.adapter.visitRendered(this);
35484          this.complete();
35485        } else {
35486          await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);
35487          this.adapter.visitRendered(this);
35488          this.fail();
35489        }
35490      });
35491    }
35492  }
35493  getCachedSnapshot() {
35494    const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();
35495    if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {
35496      if (this.action == "restore" || snapshot.isPreviewable) {
35497        return snapshot;
35498      }
35499    }
35500  }
35501  getPreloadedSnapshot() {
35502    if (this.snapshotHTML) {
35503      return PageSnapshot.fromHTMLString(this.snapshotHTML);
35504    }
35505  }
35506  hasCachedSnapshot() {
35507    return this.getCachedSnapshot() != null;
35508  }
35509  loadCachedSnapshot() {
35510    const snapshot = this.getCachedSnapshot();
35511    if (snapshot) {
35512      const isPreview = this.shouldIssueRequest();
35513      this.render(async () => {
35514        this.cacheSnapshot();
35515        if (this.isPageRefresh) {
35516          this.adapter.visitRendered(this);
35517        } else {
35518          if (this.view.renderPromise) await this.view.renderPromise;
35519          await this.renderPageSnapshot(snapshot, isPreview);
35520          this.adapter.visitRendered(this);
35521          if (!isPreview) {
35522            this.complete();
35523          }
35524        }
35525      });
35526    }
35527  }
35528  followRedirect() {
35529    if (this.redirectedToLocation && !this.followedRedirect && this.response?.redirected) {
35530      this.adapter.visitProposedToLocation(this.redirectedToLocation, {
35531        action: "replace",
35532        response: this.response,
35533        shouldCacheSnapshot: false,
35534        willRender: false
35535      });
35536      this.followedRedirect = true;
35537    }
35538  }
35539  // Fetch request delegate
35540  prepareRequest(request2) {
35541    if (this.acceptsStreamResponse) {
35542      request2.acceptResponseType(StreamMessage.contentType);
35543    }
35544  }
35545  requestStarted() {
35546    this.startRequest();
35547  }
35548  requestPreventedHandlingResponse(_request, _response) {
35549  }
35550  async requestSucceededWithResponse(request2, response) {
35551    const responseHTML = await response.responseHTML;
35552    const { redirected, statusCode } = response;
35553    if (responseHTML == void 0) {
35554      this.recordResponse({
35555        statusCode: SystemStatusCode.contentTypeMismatch,
35556        redirected
35557      });
35558    } else {
35559      this.redirectedToLocation = response.redirected ? response.location : void 0;
35560      this.recordResponse({ statusCode, responseHTML, redirected });
35561    }
35562  }
35563  async requestFailedWithResponse(request2, response) {
35564    const responseHTML = await response.responseHTML;
35565    const { redirected, statusCode } = response;
35566    if (responseHTML == void 0) {
35567      this.recordResponse({
35568        statusCode: SystemStatusCode.contentTypeMismatch,
35569        redirected
35570      });
35571    } else {
35572      this.recordResponse({ statusCode, responseHTML, redirected });
35573    }
35574  }
35575  requestErrored(_request, _error) {
35576    this.recordResponse({
35577      statusCode: SystemStatusCode.networkFailure,
35578      redirected: false
35579    });
35580  }
35581  requestFinished() {
35582    this.finishRequest();
35583  }
35584  // Scrolling
35585  performScroll() {
35586    if (!this.scrolled && !this.view.forceReloaded && !this.view.shouldPreserveScrollPosition(this)) {
35587      if (this.action == "restore") {
35588        this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();
35589      } else {
35590        this.scrollToAnchor() || this.view.scrollToTop();
35591      }
35592      this.scrolled = true;
35593    }
35594  }
35595  scrollToRestoredPosition() {
35596    const { scrollPosition } = this.restorationData;
35597    if (scrollPosition) {
35598      this.view.scrollToPosition(scrollPosition);
35599      return true;
35600    }
35601  }
35602  scrollToAnchor() {
35603    const anchor = getAnchor(this.location);
35604    if (anchor != null) {
35605      this.view.scrollToAnchor(anchor);
35606      return true;
35607    }
35608  }
35609  // Instrumentation
35610  recordTimingMetric(metric) {
35611    this.timingMetrics[metric] = (/* @__PURE__ */ new Date()).getTime();
35612  }
35613  getTimingMetrics() {
35614    return { ...this.timingMetrics };
35615  }
35616  // Private
35617  hasPreloadedResponse() {
35618    return typeof this.response == "object";
35619  }
35620  shouldIssueRequest() {
35621    if (this.action == "restore") {
35622      return !this.hasCachedSnapshot();
35623    } else {
35624      return this.willRender;
35625    }
35626  }
35627  cacheSnapshot() {
35628    if (!this.snapshotCached) {
35629      this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));
35630      this.snapshotCached = true;
35631    }
35632  }
35633  async render(callback) {
35634    this.cancelRender();
35635    await new Promise((resolve) => {
35636      this.frame = document.visibilityState === "hidden" ? setTimeout(() => resolve(), 0) : requestAnimationFrame(() => resolve());
35637    });
35638    await callback();
35639    delete this.frame;
35640  }
35641  async renderPageSnapshot(snapshot, isPreview) {
35642    await this.viewTransitioner.renderChange(this.view.shouldTransitionTo(snapshot), async () => {
35643      await this.view.renderPage(snapshot, isPreview, this.willRender, this);
35644      this.performScroll();
35645    });
35646  }
35647  cancelRender() {
35648    if (this.frame) {
35649      cancelAnimationFrame(this.frame);
35650      delete this.frame;
35651    }
35652  }
35653};
35654function isSuccessful(statusCode) {
35655  return statusCode >= 200 && statusCode < 300;
35656}
35657var BrowserAdapter = class {
35658  progressBar = new ProgressBar();
35659  constructor(session2) {
35660    this.session = session2;
35661  }
35662  visitProposedToLocation(location2, options) {
35663    if (locationIsVisitable(location2, this.navigator.rootLocation)) {
35664      this.navigator.startVisit(location2, options?.restorationIdentifier || uuid(), options);
35665    } else {
35666      window.location.href = location2.toString();
35667    }
35668  }
35669  visitStarted(visit2) {
35670    this.location = visit2.location;
35671    this.redirectedToLocation = null;
35672    visit2.loadCachedSnapshot();
35673    visit2.issueRequest();
35674  }
35675  visitRequestStarted(visit2) {
35676    this.progressBar.setValue(0);
35677    if (visit2.hasCachedSnapshot() || visit2.action != "restore") {
35678      this.showVisitProgressBarAfterDelay();
35679    } else {
35680      this.showProgressBar();
35681    }
35682  }
35683  visitRequestCompleted(visit2) {
35684    visit2.loadResponse();
35685    if (visit2.response.redirected) {
35686      this.redirectedToLocation = visit2.redirectedToLocation;
35687    }
35688  }
35689  visitRequestFailedWithStatusCode(visit2, statusCode) {
35690    switch (statusCode) {
35691      case SystemStatusCode.networkFailure:
35692      case SystemStatusCode.timeoutFailure:
35693      case SystemStatusCode.contentTypeMismatch:
35694        return this.reload({
35695          reason: "request_failed",
35696          context: {
35697            statusCode
35698          }
35699        });
35700      default:
35701        return visit2.loadResponse();
35702    }
35703  }
35704  visitRequestFinished(_visit) {
35705  }
35706  visitCompleted(_visit) {
35707    this.progressBar.setValue(1);
35708    this.hideVisitProgressBar();
35709  }
35710  pageInvalidated(reason) {
35711    this.reload(reason);
35712  }
35713  visitFailed(_visit) {
35714    this.progressBar.setValue(1);
35715    this.hideVisitProgressBar();
35716  }
35717  visitRendered(_visit) {
35718  }
35719  // Link prefetching
35720  linkPrefetchingIsEnabledForLocation(location2) {
35721    return true;
35722  }
35723  // Form Submission Delegate
35724  formSubmissionStarted(_formSubmission) {
35725    this.progressBar.setValue(0);
35726    this.showFormProgressBarAfterDelay();
35727  }
35728  formSubmissionFinished(_formSubmission) {
35729    this.progressBar.setValue(1);
35730    this.hideFormProgressBar();
35731  }
35732  // Private
35733  showVisitProgressBarAfterDelay() {
35734    this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);
35735  }
35736  hideVisitProgressBar() {
35737    this.progressBar.hide();
35738    if (this.visitProgressBarTimeout != null) {
35739      window.clearTimeout(this.visitProgressBarTimeout);
35740      delete this.visitProgressBarTimeout;
35741    }
35742  }
35743  showFormProgressBarAfterDelay() {
35744    if (this.formProgressBarTimeout == null) {
35745      this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);
35746    }
35747  }
35748  hideFormProgressBar() {
35749    this.progressBar.hide();
35750    if (this.formProgressBarTimeout != null) {
35751      window.clearTimeout(this.formProgressBarTimeout);
35752      delete this.formProgressBarTimeout;
35753    }
35754  }
35755  showProgressBar = () => {
35756    this.progressBar.show();
35757  };
35758  reload(reason) {
35759    dispatch("turbo:reload", { detail: reason });
35760    window.location.href = (this.redirectedToLocation || this.location)?.toString() || window.location.href;
35761  }
35762  get navigator() {
35763    return this.session.navigator;
35764  }
35765};
35766var CacheObserver = class {
35767  selector = "[data-turbo-temporary]";
35768  started = false;
35769  start() {
35770    if (!this.started) {
35771      this.started = true;
35772      addEventListener("turbo:before-cache", this.removeTemporaryElements, false);
35773    }
35774  }
35775  stop() {
35776    if (this.started) {
35777      this.started = false;
35778      removeEventListener("turbo:before-cache", this.removeTemporaryElements, false);
35779    }
35780  }
35781  removeTemporaryElements = (_event) => {
35782    for (const element of this.temporaryElements) {
35783      element.remove();
35784    }
35785  };
35786  get temporaryElements() {
35787    return [...document.querySelectorAll(this.selector)];
35788  }
35789};
35790var FrameRedirector = class {
35791  constructor(session2, element) {
35792    this.session = session2;
35793    this.element = element;
35794    this.linkInterceptor = new LinkInterceptor(this, element);
35795    this.formSubmitObserver = new FormSubmitObserver(this, element);
35796  }
35797  start() {
35798    this.linkInterceptor.start();
35799    this.formSubmitObserver.start();
35800  }
35801  stop() {
35802    this.linkInterceptor.stop();
35803    this.formSubmitObserver.stop();
35804  }
35805  // Link interceptor delegate
35806  shouldInterceptLinkClick(element, _location, _event) {
35807    return this.#shouldRedirect(element);
35808  }
35809  linkClickIntercepted(element, url, event) {
35810    const frame = this.#findFrameElement(element);
35811    if (frame) {
35812      frame.delegate.linkClickIntercepted(element, url, event);
35813    }
35814  }
35815  // Form submit observer delegate
35816  willSubmitForm(element, submitter2) {
35817    return element.closest("turbo-frame") == null && this.#shouldSubmit(element, submitter2) && this.#shouldRedirect(element, submitter2);
35818  }
35819  formSubmitted(element, submitter2) {
35820    const frame = this.#findFrameElement(element, submitter2);
35821    if (frame) {
35822      frame.delegate.formSubmitted(element, submitter2);
35823    }
35824  }
35825  #shouldSubmit(form, submitter2) {
35826    const action = getAction$1(form, submitter2);
35827    const meta = this.element.ownerDocument.querySelector(`meta[name="turbo-root"]`);
35828    const rootLocation = expandURL(meta?.content ?? "/");
35829    return this.#shouldRedirect(form, submitter2) && locationIsVisitable(action, rootLocation);
35830  }
35831  #shouldRedirect(element, submitter2) {
35832    const isNavigatable = element instanceof HTMLFormElement ? this.session.submissionIsNavigatable(element, submitter2) : this.session.elementIsNavigatable(element);
35833    if (isNavigatable) {
35834      const frame = this.#findFrameElement(element, submitter2);
35835      return frame ? frame != element.closest("turbo-frame") : false;
35836    } else {
35837      return false;
35838    }
35839  }
35840  #findFrameElement(element, submitter2) {
35841    const id = submitter2?.getAttribute("data-turbo-frame") || element.getAttribute("data-turbo-frame");
35842    if (id && id != "_top") {
35843      const frame = this.element.querySelector(`#${id}:not([disabled])`);
35844      if (frame instanceof FrameElement) {
35845        return frame;
35846      }
35847    }
35848  }
35849};
35850var History = class {
35851  location;
35852  restorationIdentifier = uuid();
35853  restorationData = {};
35854  started = false;
35855  currentIndex = 0;
35856  constructor(delegate) {
35857    this.delegate = delegate;
35858  }
35859  start() {
35860    if (!this.started) {
35861      addEventListener("popstate", this.onPopState, false);
35862      this.currentIndex = history.state?.turbo?.restorationIndex || 0;
35863      this.started = true;
35864      this.replace(new URL(window.location.href));
35865    }
35866  }
35867  stop() {
35868    if (this.started) {
35869      removeEventListener("popstate", this.onPopState, false);
35870      this.started = false;
35871    }
35872  }
35873  push(location2, restorationIdentifier) {
35874    this.update(history.pushState, location2, restorationIdentifier);
35875  }
35876  replace(location2, restorationIdentifier) {
35877    this.update(history.replaceState, location2, restorationIdentifier);
35878  }
35879  update(method, location2, restorationIdentifier = uuid()) {
35880    if (method === history.pushState) ++this.currentIndex;
35881    const state = { turbo: { restorationIdentifier, restorationIndex: this.currentIndex } };
35882    method.call(history, state, "", location2.href);
35883    this.location = location2;
35884    this.restorationIdentifier = restorationIdentifier;
35885  }
35886  // Restoration data
35887  getRestorationDataForIdentifier(restorationIdentifier) {
35888    return this.restorationData[restorationIdentifier] || {};
35889  }
35890  updateRestorationData(additionalData) {
35891    const { restorationIdentifier } = this;
35892    const restorationData = this.restorationData[restorationIdentifier];
35893    this.restorationData[restorationIdentifier] = {
35894      ...restorationData,
35895      ...additionalData
35896    };
35897  }
35898  // Scroll restoration
35899  assumeControlOfScrollRestoration() {
35900    if (!this.previousScrollRestoration) {
35901      this.previousScrollRestoration = history.scrollRestoration ?? "auto";
35902      history.scrollRestoration = "manual";
35903    }
35904  }
35905  relinquishControlOfScrollRestoration() {
35906    if (this.previousScrollRestoration) {
35907      history.scrollRestoration = this.previousScrollRestoration;
35908      delete this.previousScrollRestoration;
35909    }
35910  }
35911  // Event handlers
35912  onPopState = (event) => {
35913    const { turbo } = event.state || {};
35914    this.location = new URL(window.location.href);
35915    if (turbo) {
35916      const { restorationIdentifier, restorationIndex } = turbo;
35917      this.restorationIdentifier = restorationIdentifier;
35918      const direction = restorationIndex > this.currentIndex ? "forward" : "back";
35919      this.delegate.historyPoppedToLocationWithRestorationIdentifierAndDirection(this.location, restorationIdentifier, direction);
35920      this.currentIndex = restorationIndex;
35921    } else {
35922      this.currentIndex++;
35923      this.delegate.historyPoppedWithEmptyState(this.location);
35924    }
35925  };
35926};
35927var LinkPrefetchObserver = class {
35928  started = false;
35929  #prefetchedLink = null;
35930  constructor(delegate, eventTarget) {
35931    this.delegate = delegate;
35932    this.eventTarget = eventTarget;
35933  }
35934  start() {
35935    if (this.started) return;
35936    if (this.eventTarget.readyState === "loading") {
35937      this.eventTarget.addEventListener("DOMContentLoaded", this.#enable, { once: true });
35938    } else {
35939      this.#enable();
35940    }
35941  }
35942  stop() {
35943    if (!this.started) return;
35944    this.eventTarget.removeEventListener("mouseenter", this.#tryToPrefetchRequest, {
35945      capture: true,
35946      passive: true
35947    });
35948    this.eventTarget.removeEventListener("mouseleave", this.#cancelRequestIfObsolete, {
35949      capture: true,
35950      passive: true
35951    });
35952    this.eventTarget.removeEventListener("turbo:before-fetch-request", this.#tryToUsePrefetchedRequest, true);
35953    this.started = false;
35954  }
35955  #enable = () => {
35956    this.eventTarget.addEventListener("mouseenter", this.#tryToPrefetchRequest, {
35957      capture: true,
35958      passive: true
35959    });
35960    this.eventTarget.addEventListener("mouseleave", this.#cancelRequestIfObsolete, {
35961      capture: true,
35962      passive: true
35963    });
35964    this.eventTarget.addEventListener("turbo:before-fetch-request", this.#tryToUsePrefetchedRequest, true);
35965    this.started = true;
35966  };
35967  #tryToPrefetchRequest = (event) => {
35968    if (getMetaContent("turbo-prefetch") === "false") return;
35969    const target = event.target;
35970    const isLink = target.matches && target.matches("a[href]:not([target^=_]):not([download])");
35971    if (isLink && this.#isPrefetchable(target)) {
35972      const link = target;
35973      const location2 = getLocationForLink(link);
35974      if (this.delegate.canPrefetchRequestToLocation(link, location2)) {
35975        this.#prefetchedLink = link;
35976        const fetchRequest = new FetchRequest(
35977          this,
35978          FetchMethod.get,
35979          location2,
35980          new URLSearchParams(),
35981          target
35982        );
35983        fetchRequest.fetchOptions.priority = "low";
35984        prefetchCache.putLater(location2, fetchRequest, this.#cacheTtl);
35985      }
35986    }
35987  };
35988  #cancelRequestIfObsolete = (event) => {
35989    if (event.target === this.#prefetchedLink) this.#cancelPrefetchRequest();
35990  };
35991  #cancelPrefetchRequest = () => {
35992    prefetchCache.clear();
35993    this.#prefetchedLink = null;
35994  };
35995  #tryToUsePrefetchedRequest = (event) => {
35996    if (event.target.tagName !== "FORM" && event.detail.fetchOptions.method === "GET") {
35997      const cached = prefetchCache.get(event.detail.url);
35998      if (cached) {
35999        event.detail.fetchRequest = cached;
36000      }
36001      prefetchCache.clear();
36002    }
36003  };
36004  prepareRequest(request2) {
36005    const link = request2.target;
36006    request2.headers["X-Sec-Purpose"] = "prefetch";
36007    const turboFrame = link.closest("turbo-frame");
36008    const turboFrameTarget = link.getAttribute("data-turbo-frame") || turboFrame?.getAttribute("target") || turboFrame?.id;
36009    if (turboFrameTarget && turboFrameTarget !== "_top") {
36010      request2.headers["Turbo-Frame"] = turboFrameTarget;
36011    }
36012  }
36013  // Fetch request interface
36014  requestSucceededWithResponse() {
36015  }
36016  requestStarted(fetchRequest) {
36017  }
36018  requestErrored(fetchRequest) {
36019  }
36020  requestFinished(fetchRequest) {
36021  }
36022  requestPreventedHandlingResponse(fetchRequest, fetchResponse) {
36023  }
36024  requestFailedWithResponse(fetchRequest, fetchResponse) {
36025  }
36026  get #cacheTtl() {
36027    return Number(getMetaContent("turbo-prefetch-cache-time")) || cacheTtl;
36028  }
36029  #isPrefetchable(link) {
36030    const href = link.getAttribute("href");
36031    if (!href) return false;
36032    if (unfetchableLink(link)) return false;
36033    if (linkToTheSamePage(link)) return false;
36034    if (linkOptsOut(link)) return false;
36035    if (nonSafeLink(link)) return false;
36036    if (eventPrevented(link)) return false;
36037    return true;
36038  }
36039};
36040var unfetchableLink = (link) => {
36041  return link.origin !== document.location.origin || !["http:", "https:"].includes(link.protocol) || link.hasAttribute("target");
36042};
36043var linkToTheSamePage = (link) => {
36044  return link.pathname + link.search === document.location.pathname + document.location.search || link.href.startsWith("#");
36045};
36046var linkOptsOut = (link) => {
36047  if (link.getAttribute("data-turbo-prefetch") === "false") return true;
36048  if (link.getAttribute("data-turbo") === "false") return true;
36049  const turboPrefetchParent = findClosestRecursively(link, "[data-turbo-prefetch]");
36050  if (turboPrefetchParent && turboPrefetchParent.getAttribute("data-turbo-prefetch") === "false") return true;
36051  return false;
36052};
36053var nonSafeLink = (link) => {
36054  const turboMethod = link.getAttribute("data-turbo-method");
36055  if (turboMethod && turboMethod.toLowerCase() !== "get") return true;
36056  if (isUJS(link)) return true;
36057  if (link.hasAttribute("data-turbo-confirm")) return true;
36058  if (link.hasAttribute("data-turbo-stream")) return true;
36059  return false;
36060};
36061var isUJS = (link) => {
36062  return link.hasAttribute("data-remote") || link.hasAttribute("data-behavior") || link.hasAttribute("data-confirm") || link.hasAttribute("data-method");
36063};
36064var eventPrevented = (link) => {
36065  const event = dispatch("turbo:before-prefetch", { target: link, cancelable: true });
36066  return event.defaultPrevented;
36067};
36068var Navigator = class {
36069  constructor(delegate) {
36070    this.delegate = delegate;
36071  }
36072  proposeVisit(location2, options = {}) {
36073    if (this.delegate.allowsVisitingLocationWithAction(location2, options.action)) {
36074      this.delegate.visitProposedToLocation(location2, options);
36075    }
36076  }
36077  startVisit(locatable, restorationIdentifier, options = {}) {
36078    this.stop();
36079    this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, {
36080      referrer: this.location,
36081      ...options
36082    });
36083    this.currentVisit.start();
36084  }
36085  submitForm(form, submitter2) {
36086    this.stop();
36087    this.formSubmission = new FormSubmission(this, form, submitter2, true);
36088    this.formSubmission.start();
36089  }
36090  stop() {
36091    if (this.formSubmission) {
36092      this.formSubmission.stop();
36093      delete this.formSubmission;
36094    }
36095    if (this.currentVisit) {
36096      this.currentVisit.cancel();
36097      delete this.currentVisit;
36098    }
36099  }
36100  get adapter() {
36101    return this.delegate.adapter;
36102  }
36103  get view() {
36104    return this.delegate.view;
36105  }
36106  get rootLocation() {
36107    return this.view.snapshot.rootLocation;
36108  }
36109  get history() {
36110    return this.delegate.history;
36111  }
36112  // Form submission delegate
36113  formSubmissionStarted(formSubmission) {
36114    if (typeof this.adapter.formSubmissionStarted === "function") {
36115      this.adapter.formSubmissionStarted(formSubmission);
36116    }
36117  }
36118  async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {
36119    if (formSubmission == this.formSubmission) {
36120      const responseHTML = await fetchResponse.responseHTML;
36121      if (responseHTML) {
36122        const shouldCacheSnapshot = formSubmission.isSafe;
36123        if (!shouldCacheSnapshot) {
36124          this.view.clearSnapshotCache();
36125        }
36126        const { statusCode, redirected } = fetchResponse;
36127        const action = this.#getActionForFormSubmission(formSubmission, fetchResponse);
36128        const visitOptions = {
36129          action,
36130          shouldCacheSnapshot,
36131          response: { statusCode, responseHTML, redirected }
36132        };
36133        this.proposeVisit(fetchResponse.location, visitOptions);
36134      }
36135    }
36136  }
36137  async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {
36138    const responseHTML = await fetchResponse.responseHTML;
36139    if (responseHTML) {
36140      const snapshot = PageSnapshot.fromHTMLString(responseHTML);
36141      if (fetchResponse.serverError) {
36142        await this.view.renderError(snapshot, this.currentVisit);
36143      } else {
36144        await this.view.renderPage(snapshot, false, true, this.currentVisit);
36145      }
36146      if (snapshot.refreshScroll !== "preserve") {
36147        this.view.scrollToTop();
36148      }
36149      this.view.clearSnapshotCache();
36150    }
36151  }
36152  formSubmissionErrored(formSubmission, error2) {
36153    console.error(error2);
36154  }
36155  formSubmissionFinished(formSubmission) {
36156    if (typeof this.adapter.formSubmissionFinished === "function") {
36157      this.adapter.formSubmissionFinished(formSubmission);
36158    }
36159  }
36160  // Link prefetching
36161  linkPrefetchingIsEnabledForLocation(location2) {
36162    if (typeof this.adapter.linkPrefetchingIsEnabledForLocation === "function") {
36163      return this.adapter.linkPrefetchingIsEnabledForLocation(location2);
36164    }
36165    return true;
36166  }
36167  // Visit delegate
36168  visitStarted(visit2) {
36169    this.delegate.visitStarted(visit2);
36170  }
36171  visitCompleted(visit2) {
36172    this.delegate.visitCompleted(visit2);
36173    delete this.currentVisit;
36174  }
36175  // Same-page links are no longer handled with a Visit.
36176  // This method is still needed for Turbo Native adapters.
36177  locationWithActionIsSamePage(location2, action) {
36178    return false;
36179  }
36180  // Visits
36181  get location() {
36182    return this.history.location;
36183  }
36184  get restorationIdentifier() {
36185    return this.history.restorationIdentifier;
36186  }
36187  #getActionForFormSubmission(formSubmission, fetchResponse) {
36188    const { submitter: submitter2, formElement } = formSubmission;
36189    return getVisitAction(submitter2, formElement) || this.#getDefaultAction(fetchResponse);
36190  }
36191  #getDefaultAction(fetchResponse) {
36192    const sameLocationRedirect = fetchResponse.redirected && fetchResponse.location.href === this.location?.href;
36193    return sameLocationRedirect ? "replace" : "advance";
36194  }
36195};
36196var PageStage = {
36197  initial: 0,
36198  loading: 1,
36199  interactive: 2,
36200  complete: 3
36201};
36202var PageObserver = class {
36203  stage = PageStage.initial;
36204  started = false;
36205  constructor(delegate) {
36206    this.delegate = delegate;
36207  }
36208  start() {
36209    if (!this.started) {
36210      if (this.stage == PageStage.initial) {
36211        this.stage = PageStage.loading;
36212      }
36213      document.addEventListener("readystatechange", this.interpretReadyState, false);
36214      addEventListener("pagehide", this.pageWillUnload, false);
36215      this.started = true;
36216    }
36217  }
36218  stop() {
36219    if (this.started) {
36220      document.removeEventListener("readystatechange", this.interpretReadyState, false);
36221      removeEventListener("pagehide", this.pageWillUnload, false);
36222      this.started = false;
36223    }
36224  }
36225  interpretReadyState = () => {
36226    const { readyState } = this;
36227    if (readyState == "interactive") {
36228      this.pageIsInteractive();
36229    } else if (readyState == "complete") {
36230      this.pageIsComplete();
36231    }
36232  };
36233  pageIsInteractive() {
36234    if (this.stage == PageStage.loading) {
36235      this.stage = PageStage.interactive;
36236      this.delegate.pageBecameInteractive();
36237    }
36238  }
36239  pageIsComplete() {
36240    this.pageIsInteractive();
36241    if (this.stage == PageStage.interactive) {
36242      this.stage = PageStage.complete;
36243      this.delegate.pageLoaded();
36244    }
36245  }
36246  pageWillUnload = () => {
36247    this.delegate.pageWillUnload();
36248  };
36249  get readyState() {
36250    return document.readyState;
36251  }
36252};
36253var ScrollObserver = class {
36254  started = false;
36255  constructor(delegate) {
36256    this.delegate = delegate;
36257  }
36258  start() {
36259    if (!this.started) {
36260      addEventListener("scroll", this.onScroll, false);
36261      this.onScroll();
36262      this.started = true;
36263    }
36264  }
36265  stop() {
36266    if (this.started) {
36267      removeEventListener("scroll", this.onScroll, false);
36268      this.started = false;
36269    }
36270  }
36271  onScroll = () => {
36272    this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });
36273  };
36274  // Private
36275  updatePosition(position) {
36276    this.delegate.scrollPositionChanged(position);
36277  }
36278};
36279var StreamMessageRenderer = class {
36280  render({ fragment }) {
36281    Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => {
36282      withAutofocusFromFragment(fragment, () => {
36283        withPreservedFocus(() => {
36284          document.documentElement.appendChild(fragment);
36285        });
36286      });
36287    });
36288  }
36289  // Bardo delegate
36290  enteringBardo(currentPermanentElement, newPermanentElement) {
36291    newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));
36292  }
36293  leavingBardo() {
36294  }
36295};
36296function getPermanentElementMapForFragment(fragment) {
36297  const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);
36298  const permanentElementMap = {};
36299  for (const permanentElementInDocument of permanentElementsInDocument) {
36300    const { id } = permanentElementInDocument;
36301    for (const streamElement of fragment.querySelectorAll("turbo-stream")) {
36302      const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);
36303      if (elementInStream) {
36304        permanentElementMap[id] = [permanentElementInDocument, elementInStream];
36305      }
36306    }
36307  }
36308  return permanentElementMap;
36309}
36310async function withAutofocusFromFragment(fragment, callback) {
36311  const generatedID = `turbo-stream-autofocus-${uuid()}`;
36312  const turboStreams = fragment.querySelectorAll("turbo-stream");
36313  const elementWithAutofocus = firstAutofocusableElementInStreams(turboStreams);
36314  let willAutofocusId = null;
36315  if (elementWithAutofocus) {
36316    if (elementWithAutofocus.id) {
36317      willAutofocusId = elementWithAutofocus.id;
36318    } else {
36319      willAutofocusId = generatedID;
36320    }
36321    elementWithAutofocus.id = willAutofocusId;
36322  }
36323  callback();
36324  await nextRepaint();
36325  const hasNoActiveElement = document.activeElement == null || document.activeElement == document.body;
36326  if (hasNoActiveElement && willAutofocusId) {
36327    const elementToAutofocus = document.getElementById(willAutofocusId);
36328    if (elementIsFocusable(elementToAutofocus)) {
36329      elementToAutofocus.focus();
36330    }
36331    if (elementToAutofocus && elementToAutofocus.id == generatedID) {
36332      elementToAutofocus.removeAttribute("id");
36333    }
36334  }
36335}
36336async function withPreservedFocus(callback) {
36337  const [activeElementBeforeRender, activeElementAfterRender] = await around(callback, () => document.activeElement);
36338  const restoreFocusTo = activeElementBeforeRender && activeElementBeforeRender.id;
36339  if (restoreFocusTo) {
36340    const elementToFocus = document.getElementById(restoreFocusTo);
36341    if (elementIsFocusable(elementToFocus) && elementToFocus != activeElementAfterRender) {
36342      elementToFocus.focus();
36343    }
36344  }
36345}
36346function firstAutofocusableElementInStreams(nodeListOfStreamElements) {
36347  for (const streamElement of nodeListOfStreamElements) {
36348    const elementWithAutofocus = queryAutofocusableElement(streamElement.templateElement.content);
36349    if (elementWithAutofocus) return elementWithAutofocus;
36350  }
36351  return null;
36352}
36353var StreamObserver = class {
36354  sources = /* @__PURE__ */ new Set();
36355  #started = false;
36356  constructor(delegate) {
36357    this.delegate = delegate;
36358  }
36359  start() {
36360    if (!this.#started) {
36361      this.#started = true;
36362      addEventListener("turbo:before-fetch-response", this.inspectFetchResponse, false);
36363    }
36364  }
36365  stop() {
36366    if (this.#started) {
36367      this.#started = false;
36368      removeEventListener("turbo:before-fetch-response", this.inspectFetchResponse, false);
36369    }
36370  }
36371  connectStreamSource(source) {
36372    if (!this.streamSourceIsConnected(source)) {
36373      this.sources.add(source);
36374      source.addEventListener("message", this.receiveMessageEvent, false);
36375    }
36376  }
36377  disconnectStreamSource(source) {
36378    if (this.streamSourceIsConnected(source)) {
36379      this.sources.delete(source);
36380      source.removeEventListener("message", this.receiveMessageEvent, false);
36381    }
36382  }
36383  streamSourceIsConnected(source) {
36384    return this.sources.has(source);
36385  }
36386  inspectFetchResponse = (event) => {
36387    const response = fetchResponseFromEvent(event);
36388    if (response && fetchResponseIsStream(response)) {
36389      event.preventDefault();
36390      this.receiveMessageResponse(response);
36391    }
36392  };
36393  receiveMessageEvent = (event) => {
36394    if (this.#started && typeof event.data == "string") {
36395      this.receiveMessageHTML(event.data);
36396    }
36397  };
36398  async receiveMessageResponse(response) {
36399    const html = await response.responseHTML;
36400    if (html) {
36401      this.receiveMessageHTML(html);
36402    }
36403  }
36404  receiveMessageHTML(html) {
36405    this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));
36406  }
36407};
36408function fetchResponseFromEvent(event) {
36409  const fetchResponse = event.detail?.fetchResponse;
36410  if (fetchResponse instanceof FetchResponse) {
36411    return fetchResponse;
36412  }
36413}
36414function fetchResponseIsStream(response) {
36415  const contentType = response.contentType ?? "";
36416  return contentType.startsWith(StreamMessage.contentType);
36417}
36418var ErrorRenderer = class extends Renderer {
36419  static renderElement(currentElement, newElement) {
36420    const { documentElement, body } = document;
36421    documentElement.replaceChild(newElement, body);
36422  }
36423  async render() {
36424    this.replaceHeadAndBody();
36425    this.activateScriptElements();
36426  }
36427  replaceHeadAndBody() {
36428    const { documentElement, head } = document;
36429    documentElement.replaceChild(this.newHead, head);
36430    this.renderElement(this.currentElement, this.newElement);
36431  }
36432  activateScriptElements() {
36433    for (const replaceableElement of this.scriptElements) {
36434      const parentNode = replaceableElement.parentNode;
36435      if (parentNode) {
36436        const element = activateScriptElement(replaceableElement);
36437        parentNode.replaceChild(element, replaceableElement);
36438      }
36439    }
36440  }
36441  get newHead() {
36442    return this.newSnapshot.headSnapshot.element;
36443  }
36444  get scriptElements() {
36445    return document.documentElement.querySelectorAll("script");
36446  }
36447};
36448var PageRenderer = class extends Renderer {
36449  static renderElement(currentElement, newElement) {
36450    if (document.body && newElement instanceof HTMLBodyElement) {
36451      document.body.replaceWith(newElement);
36452    } else {
36453      document.documentElement.appendChild(newElement);
36454    }
36455  }
36456  get shouldRender() {
36457    return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;
36458  }
36459  get reloadReason() {
36460    if (!this.newSnapshot.isVisitable) {
36461      return {
36462        reason: "turbo_visit_control_is_reload"
36463      };
36464    }
36465    if (!this.trackedElementsAreIdentical) {
36466      return {
36467        reason: "tracked_element_mismatch"
36468      };
36469    }
36470  }
36471  async prepareToRender() {
36472    this.#setLanguage();
36473    await this.mergeHead();
36474  }
36475  async render() {
36476    if (this.willRender) {
36477      await this.replaceBody();
36478    }
36479  }
36480  finishRendering() {
36481    super.finishRendering();
36482    if (!this.isPreview) {
36483      this.focusFirstAutofocusableElement();
36484    }
36485  }
36486  get currentHeadSnapshot() {
36487    return this.currentSnapshot.headSnapshot;
36488  }
36489  get newHeadSnapshot() {
36490    return this.newSnapshot.headSnapshot;
36491  }
36492  get newElement() {
36493    return this.newSnapshot.element;
36494  }
36495  #setLanguage() {
36496    const { documentElement } = this.currentSnapshot;
36497    const { dir, lang } = this.newSnapshot;
36498    if (lang) {
36499      documentElement.setAttribute("lang", lang);
36500    } else {
36501      documentElement.removeAttribute("lang");
36502    }
36503    if (dir) {
36504      documentElement.setAttribute("dir", dir);
36505    } else {
36506      documentElement.removeAttribute("dir");
36507    }
36508  }
36509  async mergeHead() {
36510    const mergedHeadElements = this.mergeProvisionalElements();
36511    const newStylesheetElements = this.copyNewHeadStylesheetElements();
36512    this.copyNewHeadScriptElements();
36513    await mergedHeadElements;
36514    await newStylesheetElements;
36515    if (this.willRender) {
36516      this.removeUnusedDynamicStylesheetElements();
36517    }
36518  }
36519  async replaceBody() {
36520    await this.preservingPermanentElements(async () => {
36521      this.activateNewBody();
36522      await this.assignNewBody();
36523    });
36524  }
36525  get trackedElementsAreIdentical() {
36526    return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;
36527  }
36528  async copyNewHeadStylesheetElements() {
36529    const loadingElements = [];
36530    for (const element of this.newHeadStylesheetElements) {
36531      loadingElements.push(waitForLoad(element));
36532      document.head.appendChild(element);
36533    }
36534    await Promise.all(loadingElements);
36535  }
36536  copyNewHeadScriptElements() {
36537    for (const element of this.newHeadScriptElements) {
36538      document.head.appendChild(activateScriptElement(element));
36539    }
36540  }
36541  removeUnusedDynamicStylesheetElements() {
36542    for (const element of this.unusedDynamicStylesheetElements) {
36543      document.head.removeChild(element);
36544    }
36545  }
36546  async mergeProvisionalElements() {
36547    const newHeadElements = [...this.newHeadProvisionalElements];
36548    for (const element of this.currentHeadProvisionalElements) {
36549      if (!this.isCurrentElementInElementList(element, newHeadElements)) {
36550        document.head.removeChild(element);
36551      }
36552    }
36553    for (const element of newHeadElements) {
36554      document.head.appendChild(element);
36555    }
36556  }
36557  isCurrentElementInElementList(element, elementList) {
36558    for (const [index, newElement] of elementList.entries()) {
36559      if (element.tagName == "TITLE") {
36560        if (newElement.tagName != "TITLE") {
36561          continue;
36562        }
36563        if (element.innerHTML == newElement.innerHTML) {
36564          elementList.splice(index, 1);
36565          return true;
36566        }
36567      }
36568      if (newElement.isEqualNode(element)) {
36569        elementList.splice(index, 1);
36570        return true;
36571      }
36572    }
36573    return false;
36574  }
36575  removeCurrentHeadProvisionalElements() {
36576    for (const element of this.currentHeadProvisionalElements) {
36577      document.head.removeChild(element);
36578    }
36579  }
36580  copyNewHeadProvisionalElements() {
36581    for (const element of this.newHeadProvisionalElements) {
36582      document.head.appendChild(element);
36583    }
36584  }
36585  activateNewBody() {
36586    document.adoptNode(this.newElement);
36587    this.removeNoscriptElements();
36588    this.activateNewBodyScriptElements();
36589  }
36590  removeNoscriptElements() {
36591    for (const noscriptElement of this.newElement.querySelectorAll("noscript")) {
36592      noscriptElement.remove();
36593    }
36594  }
36595  activateNewBodyScriptElements() {
36596    for (const inertScriptElement of this.newBodyScriptElements) {
36597      const activatedScriptElement = activateScriptElement(inertScriptElement);
36598      inertScriptElement.replaceWith(activatedScriptElement);
36599    }
36600  }
36601  async assignNewBody() {
36602    await this.renderElement(this.currentElement, this.newElement);
36603  }
36604  get unusedDynamicStylesheetElements() {
36605    return this.oldHeadStylesheetElements.filter((element) => {
36606      return element.getAttribute("data-turbo-track") === "dynamic";
36607    });
36608  }
36609  get oldHeadStylesheetElements() {
36610    return this.currentHeadSnapshot.getStylesheetElementsNotInSnapshot(this.newHeadSnapshot);
36611  }
36612  get newHeadStylesheetElements() {
36613    return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);
36614  }
36615  get newHeadScriptElements() {
36616    return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);
36617  }
36618  get currentHeadProvisionalElements() {
36619    return this.currentHeadSnapshot.provisionalElements;
36620  }
36621  get newHeadProvisionalElements() {
36622    return this.newHeadSnapshot.provisionalElements;
36623  }
36624  get newBodyScriptElements() {
36625    return this.newElement.querySelectorAll("script");
36626  }
36627};
36628var MorphingPageRenderer = class extends PageRenderer {
36629  static renderElement(currentElement, newElement) {
36630    morphElements(currentElement, newElement, {
36631      callbacks: {
36632        beforeNodeMorphed: (node, newNode) => {
36633          if (shouldRefreshFrameWithMorphing(node, newNode) && !closestFrameReloadableWithMorphing(node)) {
36634            node.reload();
36635            return false;
36636          }
36637          return true;
36638        }
36639      }
36640    });
36641    dispatch("turbo:morph", { detail: { currentElement, newElement } });
36642  }
36643  async preservingPermanentElements(callback) {
36644    return await callback();
36645  }
36646  get renderMethod() {
36647    return "morph";
36648  }
36649  get shouldAutofocus() {
36650    return false;
36651  }
36652};
36653var SnapshotCache = class extends LRUCache {
36654  constructor(size) {
36655    super(size, toCacheKey);
36656  }
36657  get snapshots() {
36658    return this.entries;
36659  }
36660};
36661var PageView = class extends View {
36662  snapshotCache = new SnapshotCache(10);
36663  lastRenderedLocation = new URL(location.href);
36664  forceReloaded = false;
36665  shouldTransitionTo(newSnapshot) {
36666    return this.snapshot.prefersViewTransitions && newSnapshot.prefersViewTransitions;
36667  }
36668  renderPage(snapshot, isPreview = false, willRender = true, visit2) {
36669    const shouldMorphPage = this.isPageRefresh(visit2) && (visit2?.refresh?.method || this.snapshot.refreshMethod) === "morph";
36670    const rendererClass = shouldMorphPage ? MorphingPageRenderer : PageRenderer;
36671    const renderer = new rendererClass(this.snapshot, snapshot, isPreview, willRender);
36672    if (!renderer.shouldRender) {
36673      this.forceReloaded = true;
36674    } else {
36675      visit2?.changeHistory();
36676    }
36677    return this.render(renderer);
36678  }
36679  renderError(snapshot, visit2) {
36680    visit2?.changeHistory();
36681    const renderer = new ErrorRenderer(this.snapshot, snapshot, false);
36682    return this.render(renderer);
36683  }
36684  clearSnapshotCache() {
36685    this.snapshotCache.clear();
36686  }
36687  async cacheSnapshot(snapshot = this.snapshot) {
36688    if (snapshot.isCacheable) {
36689      this.delegate.viewWillCacheSnapshot();
36690      const { lastRenderedLocation: location2 } = this;
36691      await nextEventLoopTick();
36692      const cachedSnapshot = snapshot.clone();
36693      this.snapshotCache.put(location2, cachedSnapshot);
36694      return cachedSnapshot;
36695    }
36696  }
36697  getCachedSnapshotForLocation(location2) {
36698    return this.snapshotCache.get(location2);
36699  }
36700  isPageRefresh(visit2) {
36701    return !visit2 || this.lastRenderedLocation.pathname === visit2.location.pathname && visit2.action === "replace";
36702  }
36703  shouldPreserveScrollPosition(visit2) {
36704    return this.isPageRefresh(visit2) && (visit2?.refresh?.scroll || this.snapshot.refreshScroll) === "preserve";
36705  }
36706  get snapshot() {
36707    return PageSnapshot.fromElement(this.element);
36708  }
36709};
36710var Preloader = class {
36711  selector = "a[data-turbo-preload]";
36712  constructor(delegate, snapshotCache) {
36713    this.delegate = delegate;
36714    this.snapshotCache = snapshotCache;
36715  }
36716  start() {
36717    if (document.readyState === "loading") {
36718      document.addEventListener("DOMContentLoaded", this.#preloadAll);
36719    } else {
36720      this.preloadOnLoadLinksForView(document.body);
36721    }
36722  }
36723  stop() {
36724    document.removeEventListener("DOMContentLoaded", this.#preloadAll);
36725  }
36726  preloadOnLoadLinksForView(element) {
36727    for (const link of element.querySelectorAll(this.selector)) {
36728      if (this.delegate.shouldPreloadLink(link)) {
36729        this.preloadURL(link);
36730      }
36731    }
36732  }
36733  async preloadURL(link) {
36734    const location2 = new URL(link.href);
36735    if (this.snapshotCache.has(location2)) {
36736      return;
36737    }
36738    const fetchRequest = new FetchRequest(this, FetchMethod.get, location2, new URLSearchParams(), link);
36739    await fetchRequest.perform();
36740  }
36741  // Fetch request delegate
36742  prepareRequest(fetchRequest) {
36743    fetchRequest.headers["X-Sec-Purpose"] = "prefetch";
36744  }
36745  async requestSucceededWithResponse(fetchRequest, fetchResponse) {
36746    try {
36747      const responseHTML = await fetchResponse.responseHTML;
36748      const snapshot = PageSnapshot.fromHTMLString(responseHTML);
36749      this.snapshotCache.put(fetchRequest.url, snapshot);
36750    } catch (_3) {
36751    }
36752  }
36753  requestStarted(fetchRequest) {
36754  }
36755  requestErrored(fetchRequest) {
36756  }
36757  requestFinished(fetchRequest) {
36758  }
36759  requestPreventedHandlingResponse(fetchRequest, fetchResponse) {
36760  }
36761  requestFailedWithResponse(fetchRequest, fetchResponse) {
36762  }
36763  #preloadAll = () => {
36764    this.preloadOnLoadLinksForView(document.body);
36765  };
36766};
36767var Cache = class {
36768  constructor(session2) {
36769    this.session = session2;
36770  }
36771  clear() {
36772    this.session.clearCache();
36773  }
36774  resetCacheControl() {
36775    this.#setCacheControl("");
36776  }
36777  exemptPageFromCache() {
36778    this.#setCacheControl("no-cache");
36779  }
36780  exemptPageFromPreview() {
36781    this.#setCacheControl("no-preview");
36782  }
36783  #setCacheControl(value) {
36784    setMetaContent("turbo-cache-control", value);
36785  }
36786};
36787var Session = class {
36788  navigator = new Navigator(this);
36789  history = new History(this);
36790  view = new PageView(this, document.documentElement);
36791  adapter = new BrowserAdapter(this);
36792  pageObserver = new PageObserver(this);
36793  cacheObserver = new CacheObserver();
36794  linkPrefetchObserver = new LinkPrefetchObserver(this, document);
36795  linkClickObserver = new LinkClickObserver(this, window);
36796  formSubmitObserver = new FormSubmitObserver(this, document);
36797  scrollObserver = new ScrollObserver(this);
36798  streamObserver = new StreamObserver(this);
36799  formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);
36800  frameRedirector = new FrameRedirector(this, document.documentElement);
36801  streamMessageRenderer = new StreamMessageRenderer();
36802  cache = new Cache(this);
36803  enabled = true;
36804  started = false;
36805  #pageRefreshDebouncePeriod = 150;
36806  constructor(recentRequests2) {
36807    this.recentRequests = recentRequests2;
36808    this.preloader = new Preloader(this, this.view.snapshotCache);
36809    this.debouncedRefresh = this.refresh;
36810    this.pageRefreshDebouncePeriod = this.pageRefreshDebouncePeriod;
36811  }
36812  start() {
36813    if (!this.started) {
36814      this.pageObserver.start();
36815      this.cacheObserver.start();
36816      this.linkPrefetchObserver.start();
36817      this.formLinkClickObserver.start();
36818      this.linkClickObserver.start();
36819      this.formSubmitObserver.start();
36820      this.scrollObserver.start();
36821      this.streamObserver.start();
36822      this.frameRedirector.start();
36823      this.history.start();
36824      this.preloader.start();
36825      this.started = true;
36826      this.enabled = true;
36827    }
36828  }
36829  disable() {
36830    this.enabled = false;
36831  }
36832  stop() {
36833    if (this.started) {
36834      this.pageObserver.stop();
36835      this.cacheObserver.stop();
36836      this.linkPrefetchObserver.stop();
36837      this.formLinkClickObserver.stop();
36838      this.linkClickObserver.stop();
36839      this.formSubmitObserver.stop();
36840      this.scrollObserver.stop();
36841      this.streamObserver.stop();
36842      this.frameRedirector.stop();
36843      this.history.stop();
36844      this.preloader.stop();
36845      this.started = false;
36846    }
36847  }
36848  registerAdapter(adapter) {
36849    this.adapter = adapter;
36850  }
36851  visit(location2, options = {}) {
36852    const frameElement = options.frame ? document.getElementById(options.frame) : null;
36853    if (frameElement instanceof FrameElement) {
36854      const action = options.action || getVisitAction(frameElement);
36855      frameElement.delegate.proposeVisitIfNavigatedWithAction(frameElement, action);
36856      frameElement.src = location2.toString();
36857    } else {
36858      this.navigator.proposeVisit(expandURL(location2), options);
36859    }
36860  }
36861  refresh(url, options = {}) {
36862    options = typeof options === "string" ? { requestId: options } : options;
36863    const { method, requestId, scroll } = options;
36864    const isRecentRequest = requestId && this.recentRequests.has(requestId);
36865    const isCurrentUrl = url === document.baseURI;
36866    if (!isRecentRequest && !this.navigator.currentVisit && isCurrentUrl) {
36867      this.visit(url, { action: "replace", shouldCacheSnapshot: false, refresh: { method, scroll } });
36868    }
36869  }
36870  connectStreamSource(source) {
36871    this.streamObserver.connectStreamSource(source);
36872  }
36873  disconnectStreamSource(source) {
36874    this.streamObserver.disconnectStreamSource(source);
36875  }
36876  renderStreamMessage(message) {
36877    this.streamMessageRenderer.render(StreamMessage.wrap(message));
36878  }
36879  clearCache() {
36880    this.view.clearSnapshotCache();
36881  }
36882  setProgressBarDelay(delay) {
36883    console.warn(
36884      "Please replace `session.setProgressBarDelay(delay)` with `session.progressBarDelay = delay`. The function is deprecated and will be removed in a future version of Turbo.`"
36885    );
36886    this.progressBarDelay = delay;
36887  }
36888  set progressBarDelay(delay) {
36889    config.drive.progressBarDelay = delay;
36890  }
36891  get progressBarDelay() {
36892    return config.drive.progressBarDelay;
36893  }
36894  set drive(value) {
36895    config.drive.enabled = value;
36896  }
36897  get drive() {
36898    return config.drive.enabled;
36899  }
36900  set formMode(value) {
36901    config.forms.mode = value;
36902  }
36903  get formMode() {
36904    return config.forms.mode;
36905  }
36906  get location() {
36907    return this.history.location;
36908  }
36909  get restorationIdentifier() {
36910    return this.history.restorationIdentifier;
36911  }
36912  get pageRefreshDebouncePeriod() {
36913    return this.#pageRefreshDebouncePeriod;
36914  }
36915  set pageRefreshDebouncePeriod(value) {
36916    this.refresh = debounce(this.debouncedRefresh.bind(this), value);
36917    this.#pageRefreshDebouncePeriod = value;
36918  }
36919  // Preloader delegate
36920  shouldPreloadLink(element) {
36921    const isUnsafe = element.hasAttribute("data-turbo-method");
36922    const isStream = element.hasAttribute("data-turbo-stream");
36923    const frameTarget = element.getAttribute("data-turbo-frame");
36924    const frame = frameTarget == "_top" ? null : document.getElementById(frameTarget) || findClosestRecursively(element, "turbo-frame:not([disabled])");
36925    if (isUnsafe || isStream || frame instanceof FrameElement) {
36926      return false;
36927    } else {
36928      const location2 = new URL(element.href);
36929      return this.elementIsNavigatable(element) && locationIsVisitable(location2, this.snapshot.rootLocation);
36930    }
36931  }
36932  // History delegate
36933  historyPoppedToLocationWithRestorationIdentifierAndDirection(location2, restorationIdentifier, direction) {
36934    if (this.enabled) {
36935      this.navigator.startVisit(location2, restorationIdentifier, {
36936        action: "restore",
36937        historyChanged: true,
36938        direction
36939      });
36940    } else {
36941      this.adapter.pageInvalidated({
36942        reason: "turbo_disabled"
36943      });
36944    }
36945  }
36946  historyPoppedWithEmptyState(location2) {
36947    this.history.replace(location2);
36948    this.view.lastRenderedLocation = location2;
36949    this.view.cacheSnapshot();
36950  }
36951  // Scroll observer delegate
36952  scrollPositionChanged(position) {
36953    this.history.updateRestorationData({ scrollPosition: position });
36954  }
36955  // Form click observer delegate
36956  willSubmitFormLinkToLocation(link, location2) {
36957    return this.elementIsNavigatable(link) && locationIsVisitable(location2, this.snapshot.rootLocation);
36958  }
36959  submittedFormLinkToLocation() {
36960  }
36961  // Link hover observer delegate
36962  canPrefetchRequestToLocation(link, location2) {
36963    return this.elementIsNavigatable(link) && locationIsVisitable(location2, this.snapshot.rootLocation) && this.navigator.linkPrefetchingIsEnabledForLocation(location2);
36964  }
36965  // Link click observer delegate
36966  willFollowLinkToLocation(link, location2, event) {
36967    return this.elementIsNavigatable(link) && locationIsVisitable(location2, this.snapshot.rootLocation) && this.applicationAllowsFollowingLinkToLocation(link, location2, event);
36968  }
36969  followedLinkToLocation(link, location2) {
36970    const action = this.getActionForLink(link);
36971    const acceptsStreamResponse = link.hasAttribute("data-turbo-stream");
36972    this.visit(location2.href, { action, acceptsStreamResponse });
36973  }
36974  // Navigator delegate
36975  allowsVisitingLocationWithAction(location2, action) {
36976    return this.applicationAllowsVisitingLocation(location2);
36977  }
36978  visitProposedToLocation(location2, options) {
36979    extendURLWithDeprecatedProperties(location2);
36980    this.adapter.visitProposedToLocation(location2, options);
36981  }
36982  // Visit delegate
36983  visitStarted(visit2) {
36984    if (!visit2.acceptsStreamResponse) {
36985      markAsBusy(document.documentElement);
36986      this.view.markVisitDirection(visit2.direction);
36987    }
36988    extendURLWithDeprecatedProperties(visit2.location);
36989    this.notifyApplicationAfterVisitingLocation(visit2.location, visit2.action);
36990  }
36991  visitCompleted(visit2) {
36992    this.view.unmarkVisitDirection();
36993    clearBusyState(document.documentElement);
36994    this.notifyApplicationAfterPageLoad(visit2.getTimingMetrics());
36995  }
36996  // Form submit observer delegate
36997  willSubmitForm(form, submitter2) {
36998    const action = getAction$1(form, submitter2);
36999    return this.submissionIsNavigatable(form, submitter2) && locationIsVisitable(expandURL(action), this.snapshot.rootLocation);
37000  }
37001  formSubmitted(form, submitter2) {
37002    this.navigator.submitForm(form, submitter2);
37003  }
37004  // Page observer delegate
37005  pageBecameInteractive() {
37006    this.view.lastRenderedLocation = this.location;
37007    this.notifyApplicationAfterPageLoad();
37008  }
37009  pageLoaded() {
37010    this.history.assumeControlOfScrollRestoration();
37011  }
37012  pageWillUnload() {
37013    this.history.relinquishControlOfScrollRestoration();
37014  }
37015  // Stream observer delegate
37016  receivedMessageFromStream(message) {
37017    this.renderStreamMessage(message);
37018  }
37019  // Page view delegate
37020  viewWillCacheSnapshot() {
37021    this.notifyApplicationBeforeCachingSnapshot();
37022  }
37023  allowsImmediateRender({ element }, options) {
37024    const event = this.notifyApplicationBeforeRender(element, options);
37025    const {
37026      defaultPrevented,
37027      detail: { render }
37028    } = event;
37029    if (this.view.renderer && render) {
37030      this.view.renderer.renderElement = render;
37031    }
37032    return !defaultPrevented;
37033  }
37034  viewRenderedSnapshot(_snapshot, _isPreview, renderMethod) {
37035    this.view.lastRenderedLocation = this.history.location;
37036    this.notifyApplicationAfterRender(renderMethod);
37037  }
37038  preloadOnLoadLinksForView(element) {
37039    this.preloader.preloadOnLoadLinksForView(element);
37040  }
37041  viewInvalidated(reason) {
37042    this.adapter.pageInvalidated(reason);
37043  }
37044  // Frame element
37045  frameLoaded(frame) {
37046    this.notifyApplicationAfterFrameLoad(frame);
37047  }
37048  frameRendered(fetchResponse, frame) {
37049    this.notifyApplicationAfterFrameRender(fetchResponse, frame);
37050  }
37051  // Application events
37052  applicationAllowsFollowingLinkToLocation(link, location2, ev) {
37053    const event = this.notifyApplicationAfterClickingLinkToLocation(link, location2, ev);
37054    return !event.defaultPrevented;
37055  }
37056  applicationAllowsVisitingLocation(location2) {
37057    const event = this.notifyApplicationBeforeVisitingLocation(location2);
37058    return !event.defaultPrevented;
37059  }
37060  notifyApplicationAfterClickingLinkToLocation(link, location2, event) {
37061    return dispatch("turbo:click", {
37062      target: link,
37063      detail: { url: location2.href, originalEvent: event },
37064      cancelable: true
37065    });
37066  }
37067  notifyApplicationBeforeVisitingLocation(location2) {
37068    return dispatch("turbo:before-visit", {
37069      detail: { url: location2.href },
37070      cancelable: true
37071    });
37072  }
37073  notifyApplicationAfterVisitingLocation(location2, action) {
37074    return dispatch("turbo:visit", { detail: { url: location2.href, action } });
37075  }
37076  notifyApplicationBeforeCachingSnapshot() {
37077    return dispatch("turbo:before-cache");
37078  }
37079  notifyApplicationBeforeRender(newBody, options) {
37080    return dispatch("turbo:before-render", {
37081      detail: { newBody, ...options },
37082      cancelable: true
37083    });
37084  }
37085  notifyApplicationAfterRender(renderMethod) {
37086    return dispatch("turbo:render", { detail: { renderMethod } });
37087  }
37088  notifyApplicationAfterPageLoad(timing = {}) {
37089    return dispatch("turbo:load", {
37090      detail: { url: this.location.href, timing }
37091    });
37092  }
37093  notifyApplicationAfterFrameLoad(frame) {
37094    return dispatch("turbo:frame-load", { target: frame });
37095  }
37096  notifyApplicationAfterFrameRender(fetchResponse, frame) {
37097    return dispatch("turbo:frame-render", {
37098      detail: { fetchResponse },
37099      target: frame,
37100      cancelable: true
37101    });
37102  }
37103  // Helpers
37104  submissionIsNavigatable(form, submitter2) {
37105    if (config.forms.mode == "off") {
37106      return false;
37107    } else {
37108      const submitterIsNavigatable = submitter2 ? this.elementIsNavigatable(submitter2) : true;
37109      if (config.forms.mode == "optin") {
37110        return submitterIsNavigatable && form.closest('[data-turbo="true"]') != null;
37111      } else {
37112        return submitterIsNavigatable && this.elementIsNavigatable(form);
37113      }
37114    }
37115  }
37116  elementIsNavigatable(element) {
37117    const container = findClosestRecursively(element, "[data-turbo]");
37118    const withinFrame = findClosestRecursively(element, "turbo-frame");
37119    if (config.drive.enabled || withinFrame) {
37120      if (container) {
37121        return container.getAttribute("data-turbo") != "false";
37122      } else {
37123        return true;
37124      }
37125    } else {
37126      if (container) {
37127        return container.getAttribute("data-turbo") == "true";
37128      } else {
37129        return false;
37130      }
37131    }
37132  }
37133  // Private
37134  getActionForLink(link) {
37135    return getVisitAction(link) || "advance";
37136  }
37137  get snapshot() {
37138    return this.view.snapshot;
37139  }
37140};
37141function extendURLWithDeprecatedProperties(url) {
37142  Object.defineProperties(url, deprecatedLocationPropertyDescriptors);
37143}
37144var deprecatedLocationPropertyDescriptors = {
37145  absoluteURL: {
37146    get() {
37147      return this.toString();
37148    }
37149  }
37150};
37151var session = new Session(recentRequests);
37152var { cache, navigator: sessionNavigator } = session;
37153function start() {
37154  session.start();
37155}
37156function registerAdapter(adapter) {
37157  session.registerAdapter(adapter);
37158}
37159function visit(location2, options) {
37160  session.visit(location2, options);
37161}
37162function connectStreamSource(source) {
37163  session.connectStreamSource(source);
37164}
37165function disconnectStreamSource(source) {
37166  session.disconnectStreamSource(source);
37167}
37168function renderStreamMessage(message) {
37169  session.renderStreamMessage(message);
37170}
37171function setProgressBarDelay(delay) {
37172  console.warn(
37173    "Please replace `Turbo.setProgressBarDelay(delay)` with `Turbo.config.drive.progressBarDelay = delay`. The top-level function is deprecated and will be removed in a future version of Turbo.`"
37174  );
37175  config.drive.progressBarDelay = delay;
37176}
37177function setConfirmMethod(confirmMethod) {
37178  console.warn(
37179    "Please replace `Turbo.setConfirmMethod(confirmMethod)` with `Turbo.config.forms.confirm = confirmMethod`. The top-level function is deprecated and will be removed in a future version of Turbo.`"
37180  );
37181  config.forms.confirm = confirmMethod;
37182}
37183function setFormMode(mode2) {
37184  console.warn(
37185    "Please replace `Turbo.setFormMode(mode)` with `Turbo.config.forms.mode = mode`. The top-level function is deprecated and will be removed in a future version of Turbo.`"
37186  );
37187  config.forms.mode = mode2;
37188}
37189function morphBodyElements(currentBody, newBody) {
37190  MorphingPageRenderer.renderElement(currentBody, newBody);
37191}
37192function morphTurboFrameElements(currentFrame, newFrame) {
37193  MorphingFrameRenderer.renderElement(currentFrame, newFrame);
37194}
37195var Turbo = /* @__PURE__ */ Object.freeze({
37196  __proto__: null,
37197  PageRenderer,
37198  PageSnapshot,
37199  FrameRenderer,
37200  fetch: fetchWithTurboHeaders,
37201  config,
37202  session,
37203  cache,
37204  navigator: sessionNavigator,
37205  start,
37206  registerAdapter,
37207  visit,
37208  connectStreamSource,
37209  disconnectStreamSource,
37210  renderStreamMessage,
37211  setProgressBarDelay,
37212  setConfirmMethod,
37213  setFormMode,
37214  morphBodyElements,
37215  morphTurboFrameElements,
37216  morphChildren,
37217  morphElements
37218});
37219var TurboFrameMissingError = class extends Error {
37220};
37221var FrameController = class {
37222  fetchResponseLoaded = (_fetchResponse) => Promise.resolve();
37223  #currentFetchRequest = null;
37224  #resolveVisitPromise = () => {
37225  };
37226  #connected = false;
37227  #hasBeenLoaded = false;
37228  #ignoredAttributes = /* @__PURE__ */ new Set();
37229  #shouldMorphFrame = false;
37230  action = null;
37231  constructor(element) {
37232    this.element = element;
37233    this.view = new FrameView(this, this.element);
37234    this.appearanceObserver = new AppearanceObserver(this, this.element);
37235    this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);
37236    this.linkInterceptor = new LinkInterceptor(this, this.element);
37237    this.restorationIdentifier = uuid();
37238    this.formSubmitObserver = new FormSubmitObserver(this, this.element);
37239  }
37240  // Frame delegate
37241  connect() {
37242    if (!this.#connected) {
37243      this.#connected = true;
37244      if (this.loadingStyle == FrameLoadingStyle.lazy) {
37245        this.appearanceObserver.start();
37246      } else {
37247        this.#loadSourceURL();
37248      }
37249      this.formLinkClickObserver.start();
37250      this.linkInterceptor.start();
37251      this.formSubmitObserver.start();
37252    }
37253  }
37254  disconnect() {
37255    if (this.#connected) {
37256      this.#connected = false;
37257      this.appearanceObserver.stop();
37258      this.formLinkClickObserver.stop();
37259      this.linkInterceptor.stop();
37260      this.formSubmitObserver.stop();
37261      if (!this.element.hasAttribute("recurse")) {
37262        this.#currentFetchRequest?.cancel();
37263      }
37264    }
37265  }
37266  disabledChanged() {
37267    if (this.disabled) {
37268      this.#currentFetchRequest?.cancel();
37269    } else if (this.loadingStyle == FrameLoadingStyle.eager) {
37270      this.#loadSourceURL();
37271    }
37272  }
37273  sourceURLChanged() {
37274    if (this.#isIgnoringChangesTo("src")) return;
37275    if (!this.sourceURL) {
37276      this.#currentFetchRequest?.cancel();
37277    }
37278    if (this.element.isConnected) {
37279      this.complete = false;
37280    }
37281    if (this.loadingStyle == FrameLoadingStyle.eager || this.#hasBeenLoaded) {
37282      this.#loadSourceURL();
37283    }
37284  }
37285  sourceURLReloaded() {
37286    const { refresh, src } = this.element;
37287    this.#shouldMorphFrame = src && refresh === "morph";
37288    this.element.removeAttribute("complete");
37289    this.element.src = null;
37290    this.element.src = src;
37291    return this.element.loaded;
37292  }
37293  loadingStyleChanged() {
37294    if (this.loadingStyle == FrameLoadingStyle.lazy) {
37295      this.appearanceObserver.start();
37296    } else {
37297      this.appearanceObserver.stop();
37298      this.#loadSourceURL();
37299    }
37300  }
37301  async #loadSourceURL() {
37302    if (this.enabled && this.isActive && !this.complete && this.sourceURL) {
37303      this.element.loaded = this.#visit(expandURL(this.sourceURL));
37304      this.appearanceObserver.stop();
37305      await this.element.loaded;
37306      this.#hasBeenLoaded = true;
37307    }
37308  }
37309  async loadResponse(fetchResponse) {
37310    if (fetchResponse.redirected || fetchResponse.succeeded && fetchResponse.isHTML) {
37311      this.sourceURL = fetchResponse.response.url;
37312    }
37313    try {
37314      const html = await fetchResponse.responseHTML;
37315      if (html) {
37316        const document2 = parseHTMLDocument(html);
37317        const pageSnapshot = PageSnapshot.fromDocument(document2);
37318        if (pageSnapshot.isVisitable) {
37319          await this.#loadFrameResponse(fetchResponse, document2);
37320        } else {
37321          await this.#handleUnvisitableFrameResponse(fetchResponse);
37322        }
37323      }
37324    } finally {
37325      this.#shouldMorphFrame = false;
37326      this.fetchResponseLoaded = () => Promise.resolve();
37327    }
37328  }
37329  // Appearance observer delegate
37330  elementAppearedInViewport(element) {
37331    this.proposeVisitIfNavigatedWithAction(element, getVisitAction(element));
37332    this.#loadSourceURL();
37333  }
37334  // Form link click observer delegate
37335  willSubmitFormLinkToLocation(link) {
37336    return this.#shouldInterceptNavigation(link);
37337  }
37338  submittedFormLinkToLocation(link, _location, form) {
37339    const frame = this.#findFrameElement(link);
37340    if (frame) form.setAttribute("data-turbo-frame", frame.id);
37341  }
37342  // Link interceptor delegate
37343  shouldInterceptLinkClick(element, _location, _event) {
37344    return this.#shouldInterceptNavigation(element);
37345  }
37346  linkClickIntercepted(element, location2) {
37347    this.#navigateFrame(element, location2);
37348  }
37349  // Form submit observer delegate
37350  willSubmitForm(element, submitter2) {
37351    return element.closest("turbo-frame") == this.element && this.#shouldInterceptNavigation(element, submitter2);
37352  }
37353  formSubmitted(element, submitter2) {
37354    if (this.formSubmission) {
37355      this.formSubmission.stop();
37356    }
37357    this.formSubmission = new FormSubmission(this, element, submitter2);
37358    const { fetchRequest } = this.formSubmission;
37359    const frame = this.#findFrameElement(element, submitter2);
37360    this.prepareRequest(fetchRequest, frame);
37361    this.formSubmission.start();
37362  }
37363  // Fetch request delegate
37364  prepareRequest(request2, frame = this) {
37365    request2.headers["Turbo-Frame"] = frame.id;
37366    if (this.currentNavigationElement?.hasAttribute("data-turbo-stream")) {
37367      request2.acceptResponseType(StreamMessage.contentType);
37368    }
37369  }
37370  requestStarted(_request) {
37371    markAsBusy(this.element);
37372  }
37373  requestPreventedHandlingResponse(_request, _response) {
37374    this.#resolveVisitPromise();
37375  }
37376  async requestSucceededWithResponse(request2, response) {
37377    await this.loadResponse(response);
37378    this.#resolveVisitPromise();
37379  }
37380  async requestFailedWithResponse(request2, response) {
37381    await this.loadResponse(response);
37382    this.#resolveVisitPromise();
37383  }
37384  requestErrored(request2, error2) {
37385    console.error(error2);
37386    this.#resolveVisitPromise();
37387  }
37388  requestFinished(_request) {
37389    clearBusyState(this.element);
37390  }
37391  // Form submission delegate
37392  formSubmissionStarted({ formElement }) {
37393    markAsBusy(formElement, this.#findFrameElement(formElement));
37394  }
37395  formSubmissionSucceededWithResponse(formSubmission, response) {
37396    const frame = this.#findFrameElement(formSubmission.formElement, formSubmission.submitter);
37397    frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(formSubmission.submitter, formSubmission.formElement, frame));
37398    frame.delegate.loadResponse(response);
37399    if (!formSubmission.isSafe) {
37400      session.clearCache();
37401    }
37402  }
37403  formSubmissionFailedWithResponse(formSubmission, fetchResponse) {
37404    this.element.delegate.loadResponse(fetchResponse);
37405    session.clearCache();
37406  }
37407  formSubmissionErrored(formSubmission, error2) {
37408    console.error(error2);
37409  }
37410  formSubmissionFinished({ formElement }) {
37411    clearBusyState(formElement, this.#findFrameElement(formElement));
37412  }
37413  // View delegate
37414  allowsImmediateRender({ element: newFrame }, options) {
37415    const event = dispatch("turbo:before-frame-render", {
37416      target: this.element,
37417      detail: { newFrame, ...options },
37418      cancelable: true
37419    });
37420    const {
37421      defaultPrevented,
37422      detail: { render }
37423    } = event;
37424    if (this.view.renderer && render) {
37425      this.view.renderer.renderElement = render;
37426    }
37427    return !defaultPrevented;
37428  }
37429  viewRenderedSnapshot(_snapshot, _isPreview, _renderMethod) {
37430  }
37431  preloadOnLoadLinksForView(element) {
37432    session.preloadOnLoadLinksForView(element);
37433  }
37434  viewInvalidated() {
37435  }
37436  // Frame renderer delegate
37437  willRenderFrame(currentElement, _newElement) {
37438    this.previousFrameElement = currentElement.cloneNode(true);
37439  }
37440  visitCachedSnapshot = ({ element }) => {
37441    const frame = element.querySelector("#" + this.element.id);
37442    if (frame && this.previousFrameElement) {
37443      frame.replaceChildren(...this.previousFrameElement.children);
37444    }
37445    delete this.previousFrameElement;
37446  };
37447  // Private
37448  async #loadFrameResponse(fetchResponse, document2) {
37449    const newFrameElement = await this.extractForeignFrameElement(document2.body);
37450    const rendererClass = this.#shouldMorphFrame ? MorphingFrameRenderer : FrameRenderer;
37451    if (newFrameElement) {
37452      const snapshot = new Snapshot(newFrameElement);
37453      const renderer = new rendererClass(this, this.view.snapshot, snapshot, false, false);
37454      if (this.view.renderPromise) await this.view.renderPromise;
37455      this.changeHistory();
37456      await this.view.render(renderer);
37457      this.complete = true;
37458      session.frameRendered(fetchResponse, this.element);
37459      session.frameLoaded(this.element);
37460      await this.fetchResponseLoaded(fetchResponse);
37461    } else if (this.#willHandleFrameMissingFromResponse(fetchResponse)) {
37462      this.#handleFrameMissingFromResponse(fetchResponse);
37463    }
37464  }
37465  async #visit(url) {
37466    const request2 = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);
37467    this.#currentFetchRequest?.cancel();
37468    this.#currentFetchRequest = request2;
37469    return new Promise((resolve) => {
37470      this.#resolveVisitPromise = () => {
37471        this.#resolveVisitPromise = () => {
37472        };
37473        this.#currentFetchRequest = null;
37474        resolve();
37475      };
37476      request2.perform();
37477    });
37478  }
37479  #navigateFrame(element, url, submitter2) {
37480    const frame = this.#findFrameElement(element, submitter2);
37481    frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(submitter2, element, frame));
37482    this.#withCurrentNavigationElement(element, () => {
37483      frame.src = url;
37484    });
37485  }
37486  proposeVisitIfNavigatedWithAction(frame, action = null) {
37487    this.action = action;
37488    if (this.action) {
37489      const pageSnapshot = PageSnapshot.fromElement(frame).clone();
37490      const { visitCachedSnapshot } = frame.delegate;
37491      frame.delegate.fetchResponseLoaded = async (fetchResponse) => {
37492        if (frame.src) {
37493          const { statusCode, redirected } = fetchResponse;
37494          const responseHTML = await fetchResponse.responseHTML;
37495          const response = { statusCode, redirected, responseHTML };
37496          const options = {
37497            response,
37498            visitCachedSnapshot,
37499            willRender: false,
37500            updateHistory: false,
37501            restorationIdentifier: this.restorationIdentifier,
37502            snapshot: pageSnapshot
37503          };
37504          if (this.action) options.action = this.action;
37505          session.visit(frame.src, options);
37506        }
37507      };
37508    }
37509  }
37510  changeHistory() {
37511    if (this.action) {
37512      const method = getHistoryMethodForAction(this.action);
37513      session.history.update(method, expandURL(this.element.src || ""), this.restorationIdentifier);
37514    }
37515  }
37516  async #handleUnvisitableFrameResponse(fetchResponse) {
37517    console.warn(
37518      `The response (${fetchResponse.statusCode}) from <turbo-frame id="${this.element.id}"> is performing a full page visit due to turbo-visit-control.`
37519    );
37520    await this.#visitResponse(fetchResponse.response);
37521  }
37522  #willHandleFrameMissingFromResponse(fetchResponse) {
37523    this.element.setAttribute("complete", "");
37524    const response = fetchResponse.response;
37525    const visit2 = async (url, options) => {
37526      if (url instanceof Response) {
37527        this.#visitResponse(url);
37528      } else {
37529        session.visit(url, options);
37530      }
37531    };
37532    const event = dispatch("turbo:frame-missing", {
37533      target: this.element,
37534      detail: { response, visit: visit2 },
37535      cancelable: true
37536    });
37537    return !event.defaultPrevented;
37538  }
37539  #handleFrameMissingFromResponse(fetchResponse) {
37540    this.view.missing();
37541    this.#throwFrameMissingError(fetchResponse);
37542  }
37543  #throwFrameMissingError(fetchResponse) {
37544    const message = `The response (${fetchResponse.statusCode}) did not contain the expected <turbo-frame id="${this.element.id}"> and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;
37545    throw new TurboFrameMissingError(message);
37546  }
37547  async #visitResponse(response) {
37548    const wrapped = new FetchResponse(response);
37549    const responseHTML = await wrapped.responseHTML;
37550    const { location: location2, redirected, statusCode } = wrapped;
37551    return session.visit(location2, { response: { redirected, statusCode, responseHTML } });
37552  }
37553  #findFrameElement(element, submitter2) {
37554    const id = getAttribute("data-turbo-frame", submitter2, element) || this.element.getAttribute("target");
37555    const target = this.#getFrameElementById(id);
37556    return target instanceof FrameElement ? target : this.element;
37557  }
37558  async extractForeignFrameElement(container) {
37559    let element;
37560    const id = CSS.escape(this.id);
37561    try {
37562      element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);
37563      if (element) {
37564        return element;
37565      }
37566      element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);
37567      if (element) {
37568        await element.loaded;
37569        return await this.extractForeignFrameElement(element);
37570      }
37571    } catch (error2) {
37572      console.error(error2);
37573      return new FrameElement();
37574    }
37575    return null;
37576  }
37577  #formActionIsVisitable(form, submitter2) {
37578    const action = getAction$1(form, submitter2);
37579    return locationIsVisitable(expandURL(action), this.rootLocation);
37580  }
37581  #shouldInterceptNavigation(element, submitter2) {
37582    const id = getAttribute("data-turbo-frame", submitter2, element) || this.element.getAttribute("target");
37583    if (element instanceof HTMLFormElement && !this.#formActionIsVisitable(element, submitter2)) {
37584      return false;
37585    }
37586    if (!this.enabled || id == "_top") {
37587      return false;
37588    }
37589    if (id) {
37590      const frameElement = this.#getFrameElementById(id);
37591      if (frameElement) {
37592        return !frameElement.disabled;
37593      } else if (id == "_parent") {
37594        return false;
37595      }
37596    }
37597    if (!session.elementIsNavigatable(element)) {
37598      return false;
37599    }
37600    if (submitter2 && !session.elementIsNavigatable(submitter2)) {
37601      return false;
37602    }
37603    return true;
37604  }
37605  // Computed properties
37606  get id() {
37607    return this.element.id;
37608  }
37609  get disabled() {
37610    return this.element.disabled;
37611  }
37612  get enabled() {
37613    return !this.disabled;
37614  }
37615  get sourceURL() {
37616    if (this.element.src) {
37617      return this.element.src;
37618    }
37619  }
37620  set sourceURL(sourceURL) {
37621    this.#ignoringChangesToAttribute("src", () => {
37622      this.element.src = sourceURL ?? null;
37623    });
37624  }
37625  get loadingStyle() {
37626    return this.element.loading;
37627  }
37628  get isLoading() {
37629    return this.formSubmission !== void 0 || this.#resolveVisitPromise() !== void 0;
37630  }
37631  get complete() {
37632    return this.element.hasAttribute("complete");
37633  }
37634  set complete(value) {
37635    if (value) {
37636      this.element.setAttribute("complete", "");
37637    } else {
37638      this.element.removeAttribute("complete");
37639    }
37640  }
37641  get isActive() {
37642    return this.element.isActive && this.#connected;
37643  }
37644  get rootLocation() {
37645    const meta = this.element.ownerDocument.querySelector(`meta[name="turbo-root"]`);
37646    const root2 = meta?.content ?? "/";
37647    return expandURL(root2);
37648  }
37649  #isIgnoringChangesTo(attributeName) {
37650    return this.#ignoredAttributes.has(attributeName);
37651  }
37652  #ignoringChangesToAttribute(attributeName, callback) {
37653    this.#ignoredAttributes.add(attributeName);
37654    callback();
37655    this.#ignoredAttributes.delete(attributeName);
37656  }
37657  #withCurrentNavigationElement(element, callback) {
37658    this.currentNavigationElement = element;
37659    callback();
37660    delete this.currentNavigationElement;
37661  }
37662  #getFrameElementById(id) {
37663    if (id != null) {
37664      const element = id === "_parent" ? this.element.parentElement.closest("turbo-frame") : document.getElementById(id);
37665      if (element instanceof FrameElement) {
37666        return element;
37667      }
37668    }
37669  }
37670};
37671function activateElement(element, currentURL) {
37672  if (element) {
37673    const src = element.getAttribute("src");
37674    if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {
37675      throw new Error(`Matching <turbo-frame id="${element.id}"> element has a source URL which references itself`);
37676    }
37677    if (element.ownerDocument !== document) {
37678      element = document.importNode(element, true);
37679    }
37680    if (element instanceof FrameElement) {
37681      element.connectedCallback();
37682      element.disconnectedCallback();
37683      return element;
37684    }
37685  }
37686}
37687var StreamActions = {
37688  after() {
37689    this.removeDuplicateTargetSiblings();
37690    this.targetElements.forEach((e3) => e3.parentElement?.insertBefore(this.templateContent, e3.nextSibling));
37691  },
37692  append() {
37693    this.removeDuplicateTargetChildren();
37694    this.targetElements.forEach((e3) => e3.append(this.templateContent));
37695  },
37696  before() {
37697    this.removeDuplicateTargetSiblings();
37698    this.targetElements.forEach((e3) => e3.parentElement?.insertBefore(this.templateContent, e3));
37699  },
37700  prepend() {
37701    this.removeDuplicateTargetChildren();
37702    this.targetElements.forEach((e3) => e3.prepend(this.templateContent));
37703  },
37704  remove() {
37705    this.targetElements.forEach((e3) => e3.remove());
37706  },
37707  replace() {
37708    const method = this.getAttribute("method");
37709    this.targetElements.forEach((targetElement) => {
37710      if (method === "morph") {
37711        morphElements(targetElement, this.templateContent);
37712      } else {
37713        targetElement.replaceWith(this.templateContent);
37714      }
37715    });
37716  },
37717  update() {
37718    const method = this.getAttribute("method");
37719    this.targetElements.forEach((targetElement) => {
37720      if (method === "morph") {
37721        morphChildren(targetElement, this.templateContent);
37722      } else {
37723        targetElement.innerHTML = "";
37724        targetElement.append(this.templateContent);
37725      }
37726    });
37727  },
37728  refresh() {
37729    const method = this.getAttribute("method");
37730    const requestId = this.requestId;
37731    const scroll = this.getAttribute("scroll");
37732    session.refresh(this.baseURI, { method, requestId, scroll });
37733  }
37734};
37735var StreamElement = class _StreamElement extends HTMLElement {
37736  static async renderElement(newElement) {
37737    await newElement.performAction();
37738  }
37739  async connectedCallback() {
37740    try {
37741      await this.render();
37742    } catch (error2) {
37743      console.error(error2);
37744    } finally {
37745      this.disconnect();
37746    }
37747  }
37748  async render() {
37749    return this.renderPromise ??= (async () => {
37750      const event = this.beforeRenderEvent;
37751      if (this.dispatchEvent(event)) {
37752        await nextRepaint();
37753        await event.detail.render(this);
37754      }
37755    })();
37756  }
37757  disconnect() {
37758    try {
37759      this.remove();
37760    } catch {
37761    }
37762  }
37763  /**
37764   * Removes duplicate children (by ID)
37765   */
37766  removeDuplicateTargetChildren() {
37767    this.duplicateChildren.forEach((c3) => c3.remove());
37768  }
37769  /**
37770   * Gets the list of duplicate children (i.e. those with the same ID)
37771   */
37772  get duplicateChildren() {
37773    const existingChildren = this.targetElements.flatMap((e3) => [...e3.children]).filter((c3) => !!c3.getAttribute("id"));
37774    const newChildrenIds = [...this.templateContent?.children || []].filter((c3) => !!c3.getAttribute("id")).map((c3) => c3.getAttribute("id"));
37775    return existingChildren.filter((c3) => newChildrenIds.includes(c3.getAttribute("id")));
37776  }
37777  /**
37778  * Removes duplicate siblings (by ID)
37779  */
37780  removeDuplicateTargetSiblings() {
37781    this.duplicateSiblings.forEach((c3) => c3.remove());
37782  }
37783  /**
37784  * Gets the list of duplicate siblings (i.e. those with the same ID)
37785  */
37786  get duplicateSiblings() {
37787    const existingChildren = this.targetElements.flatMap((e3) => [...e3.parentElement.children]).filter((c3) => !!c3.id);
37788    const newChildrenIds = [...this.templateContent?.children || []].filter((c3) => !!c3.id).map((c3) => c3.id);
37789    return existingChildren.filter((c3) => newChildrenIds.includes(c3.id));
37790  }
37791  /**
37792   * Gets the action function to be performed.
37793   */
37794  get performAction() {
37795    if (this.action) {
37796      const actionFunction = StreamActions[this.action];
37797      if (actionFunction) {
37798        return actionFunction;
37799      }
37800      this.#raise("unknown action");
37801    }
37802    this.#raise("action attribute is missing");
37803  }
37804  /**
37805   * Gets the target elements which the template will be rendered to.
37806   */
37807  get targetElements() {
37808    if (this.target) {
37809      return this.targetElementsById;
37810    } else if (this.targets) {
37811      return this.targetElementsByQuery;
37812    } else {
37813      this.#raise("target or targets attribute is missing");
37814    }
37815  }
37816  /**
37817   * Gets the contents of the main `<template>`.
37818   */
37819  get templateContent() {
37820    return this.templateElement.content.cloneNode(true);
37821  }
37822  /**
37823   * Gets the main `<template>` used for rendering
37824   */
37825  get templateElement() {
37826    if (this.firstElementChild === null) {
37827      const template = this.ownerDocument.createElement("template");
37828      this.appendChild(template);
37829      return template;
37830    } else if (this.firstElementChild instanceof HTMLTemplateElement) {
37831      return this.firstElementChild;
37832    }
37833    this.#raise("first child element must be a <template> element");
37834  }
37835  /**
37836   * Gets the current action.
37837   */
37838  get action() {
37839    return this.getAttribute("action");
37840  }
37841  /**
37842   * Gets the current target (an element ID) to which the result will
37843   * be rendered.
37844   */
37845  get target() {
37846    return this.getAttribute("target");
37847  }
37848  /**
37849   * Gets the current "targets" selector (a CSS selector)
37850   */
37851  get targets() {
37852    return this.getAttribute("targets");
37853  }
37854  /**
37855   * Reads the request-id attribute
37856   */
37857  get requestId() {
37858    return this.getAttribute("request-id");
37859  }
37860  #raise(message) {
37861    throw new Error(`${this.description}: ${message}`);
37862  }
37863  get description() {
37864    return (this.outerHTML.match(/<[^>]+>/) ?? [])[0] ?? "<turbo-stream>";
37865  }
37866  get beforeRenderEvent() {
37867    return new CustomEvent("turbo:before-stream-render", {
37868      bubbles: true,
37869      cancelable: true,
37870      detail: { newStream: this, render: _StreamElement.renderElement }
37871    });
37872  }
37873  get targetElementsById() {
37874    const element = this.ownerDocument?.getElementById(this.target);
37875    if (element !== null) {
37876      return [element];
37877    } else {
37878      return [];
37879    }
37880  }
37881  get targetElementsByQuery() {
37882    const elements = this.ownerDocument?.querySelectorAll(this.targets);
37883    if (elements.length !== 0) {
37884      return Array.prototype.slice.call(elements);
37885    } else {
37886      return [];
37887    }
37888  }
37889};
37890var StreamSourceElement = class extends HTMLElement {
37891  streamSource = null;
37892  connectedCallback() {
37893    this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);
37894    connectStreamSource(this.streamSource);
37895  }
37896  disconnectedCallback() {
37897    if (this.streamSource) {
37898      this.streamSource.close();
37899      disconnectStreamSource(this.streamSource);
37900    }
37901  }
37902  get src() {
37903    return this.getAttribute("src") || "";
37904  }
37905};
37906FrameElement.delegateConstructor = FrameController;
37907if (customElements.get("turbo-frame") === void 0) {
37908  customElements.define("turbo-frame", FrameElement);
37909}
37910if (customElements.get("turbo-stream") === void 0) {
37911  customElements.define("turbo-stream", StreamElement);
37912}
37913if (customElements.get("turbo-stream-source") === void 0) {
37914  customElements.define("turbo-stream-source", StreamSourceElement);
37915}
37916(() => {
37917  const scriptElement = document.currentScript;
37918  if (!scriptElement) return;
37919  if (scriptElement.hasAttribute("data-turbo-suppress-warning")) return;
37920  let element = scriptElement.parentElement;
37921  while (element) {
37922    if (element == document.body) {
37923      return console.warn(
37924        unindent`
37925        You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!
37926
37927        Load your application’s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.
37928
37929        For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements
37930
37931        ——
37932        Suppress this warning by adding a "data-turbo-suppress-warning" attribute to: %s
37933      `,
37934        scriptElement.outerHTML
37935      );
37936    }
37937    element = element.parentElement;
37938  }
37939})();
37940window.Turbo = { ...Turbo, StreamActions };
37941start();
37942
vendor: 575 bytes, lines 37943-37959
37943// node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js
37944var consumer;
37945async function getConsumer() {
37946  return consumer || setConsumer(createConsumer2().then(setConsumer));
37947}
37948function setConsumer(newConsumer) {
37949  return consumer = newConsumer;
37950}
37951async function createConsumer2() {
37952  const { createConsumer: createConsumer4 } = await Promise.resolve().then(() => (init_src(), src_exports));
37953  return createConsumer4();
37954}
37955async function subscribeTo(channel, mixin) {
37956  const { subscriptions } = await getConsumer();
37957  return subscriptions.create(channel, mixin);
37958}
37959
vendor: 508 bytes, lines 37960-37973
37960// node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js
37961function walk(obj) {
37962  if (!obj || typeof obj !== "object") return obj;
37963  if (obj instanceof Date || obj instanceof RegExp) return obj;
37964  if (Array.isArray(obj)) return obj.map(walk);
37965  return Object.keys(obj).reduce(function(acc, key) {
37966    var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function(m3, x3) {
37967      return "_" + x3.toLowerCase();
37968    });
37969    acc[camel] = walk(obj[key]);
37970    return acc;
37971  }, {});
37972}
37973
vendor: 1,471 bytes, lines 37974-38015
37974// node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js
37975var TurboCableStreamSourceElement = class extends HTMLElement {
37976  static observedAttributes = ["channel", "signed-stream-name"];
37977  async connectedCallback() {
37978    connectStreamSource(this);
37979    this.subscription = await subscribeTo(this.channel, {
37980      received: this.dispatchMessageEvent.bind(this),
37981      connected: this.subscriptionConnected.bind(this),
37982      disconnected: this.subscriptionDisconnected.bind(this)
37983    });
37984  }
37985  disconnectedCallback() {
37986    disconnectStreamSource(this);
37987    if (this.subscription) this.subscription.unsubscribe();
37988    this.subscriptionDisconnected();
37989  }
37990  attributeChangedCallback() {
37991    if (this.subscription) {
37992      this.disconnectedCallback();
37993      this.connectedCallback();
37994    }
37995  }
37996  dispatchMessageEvent(data) {
37997    const event = new MessageEvent("message", { data });
37998    return this.dispatchEvent(event);
37999  }
38000  subscriptionConnected() {
38001    this.setAttribute("connected", "");
38002  }
38003  subscriptionDisconnected() {
38004    this.removeAttribute("connected");
38005  }
38006  get channel() {
38007    const channel = this.getAttribute("channel");
38008    const signed_stream_name = this.getAttribute("signed-stream-name");
38009    return { channel, signed_stream_name, ...walk({ ...this.dataset }) };
38010  }
38011};
38012if (customElements.get("turbo-cable-stream-source") === void 0) {
38013  customElements.define("turbo-cable-stream-source", TurboCableStreamSourceElement);
38014}
38015
vendor: 1,611 bytes, lines 38016-38062
38016// node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js
38017function encodeMethodIntoRequestBody(event) {
38018  if (event.target instanceof HTMLFormElement) {
38019    const { target: form, detail: { fetchOptions } } = event;
38020    form.addEventListener("turbo:submit-start", ({ detail: { formSubmission: { submitter: submitter2 } } }) => {
38021      const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams();
38022      const method = determineFetchMethod(submitter2, body, form);
38023      if (!/get/i.test(method)) {
38024        if (/post/i.test(method)) {
38025          body.delete("_method");
38026        } else {
38027          body.set("_method", method);
38028        }
38029        fetchOptions.method = "post";
38030      }
38031    }, { once: true });
38032  }
38033}
38034function determineFetchMethod(submitter2, body, form) {
38035  const formMethod = determineFormMethod(submitter2);
38036  const overrideMethod = body.get("_method");
38037  const method = form.getAttribute("method") || "get";
38038  if (typeof formMethod == "string") {
38039    return formMethod;
38040  } else if (typeof overrideMethod == "string") {
38041    return overrideMethod;
38042  } else {
38043    return method;
38044  }
38045}
38046function determineFormMethod(submitter2) {
38047  if (submitter2 instanceof HTMLButtonElement || submitter2 instanceof HTMLInputElement) {
38048    if (submitter2.name === "_method") {
38049      return submitter2.value;
38050    } else if (submitter2.hasAttribute("formmethod")) {
38051      return submitter2.formMethod;
38052    } else {
38053      return null;
38054    }
38055  } else {
38056    return null;
38057  }
38058}
38059function isBodyInit(body) {
38060  return body instanceof FormData || body instanceof URLSearchParams;
38061}
38062
vendor: 187 bytes, lines 38063-38066
38063// node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js
38064window.Turbo = turbo_es2017_esm_exports;
38065addEventListener("turbo:before-fetch-request", encodeMethodIntoRequestBody);
38066
vendor: 79,452 bytes, lines 38067-40514
38067// node_modules/@hotwired/stimulus/dist/stimulus.js
38068var EventListener = class {
38069  constructor(eventTarget, eventName, eventOptions) {
38070    this.eventTarget = eventTarget;
38071    this.eventName = eventName;
38072    this.eventOptions = eventOptions;
38073    this.unorderedBindings = /* @__PURE__ */ new Set();
38074  }
38075  connect() {
38076    this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);
38077  }
38078  disconnect() {
38079    this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);
38080  }
38081  bindingConnected(binding) {
38082    this.unorderedBindings.add(binding);
38083  }
38084  bindingDisconnected(binding) {
38085    this.unorderedBindings.delete(binding);
38086  }
38087  handleEvent(event) {
38088    const extendedEvent = extendEvent(event);
38089    for (const binding of this.bindings) {
38090      if (extendedEvent.immediatePropagationStopped) {
38091        break;
38092      } else {
38093        binding.handleEvent(extendedEvent);
38094      }
38095    }
38096  }
38097  hasBindings() {
38098    return this.unorderedBindings.size > 0;
38099  }
38100  get bindings() {
38101    return Array.from(this.unorderedBindings).sort((left, right) => {
38102      const leftIndex = left.index, rightIndex = right.index;
38103      return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;
38104    });
38105  }
38106};
38107function extendEvent(event) {
38108  if ("immediatePropagationStopped" in event) {
38109    return event;
38110  } else {
38111    const { stopImmediatePropagation } = event;
38112    return Object.assign(event, {
38113      immediatePropagationStopped: false,
38114      stopImmediatePropagation() {
38115        this.immediatePropagationStopped = true;
38116        stopImmediatePropagation.call(this);
38117      }
38118    });
38119  }
38120}
38121var Dispatcher = class {
38122  constructor(application2) {
38123    this.application = application2;
38124    this.eventListenerMaps = /* @__PURE__ */ new Map();
38125    this.started = false;
38126  }
38127  start() {
38128    if (!this.started) {
38129      this.started = true;
38130      this.eventListeners.forEach((eventListener) => eventListener.connect());
38131    }
38132  }
38133  stop() {
38134    if (this.started) {
38135      this.started = false;
38136      this.eventListeners.forEach((eventListener) => eventListener.disconnect());
38137    }
38138  }
38139  get eventListeners() {
38140    return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);
38141  }
38142  bindingConnected(binding) {
38143    this.fetchEventListenerForBinding(binding).bindingConnected(binding);
38144  }
38145  bindingDisconnected(binding, clearEventListeners = false) {
38146    this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);
38147    if (clearEventListeners)
38148      this.clearEventListenersForBinding(binding);
38149  }
38150  handleError(error2, message, detail = {}) {
38151    this.application.handleError(error2, `Error ${message}`, detail);
38152  }
38153  clearEventListenersForBinding(binding) {
38154    const eventListener = this.fetchEventListenerForBinding(binding);
38155    if (!eventListener.hasBindings()) {
38156      eventListener.disconnect();
38157      this.removeMappedEventListenerFor(binding);
38158    }
38159  }
38160  removeMappedEventListenerFor(binding) {
38161    const { eventTarget, eventName, eventOptions } = binding;
38162    const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);
38163    const cacheKey = this.cacheKey(eventName, eventOptions);
38164    eventListenerMap.delete(cacheKey);
38165    if (eventListenerMap.size == 0)
38166      this.eventListenerMaps.delete(eventTarget);
38167  }
38168  fetchEventListenerForBinding(binding) {
38169    const { eventTarget, eventName, eventOptions } = binding;
38170    return this.fetchEventListener(eventTarget, eventName, eventOptions);
38171  }
38172  fetchEventListener(eventTarget, eventName, eventOptions) {
38173    const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);
38174    const cacheKey = this.cacheKey(eventName, eventOptions);
38175    let eventListener = eventListenerMap.get(cacheKey);
38176    if (!eventListener) {
38177      eventListener = this.createEventListener(eventTarget, eventName, eventOptions);
38178      eventListenerMap.set(cacheKey, eventListener);
38179    }
38180    return eventListener;
38181  }
38182  createEventListener(eventTarget, eventName, eventOptions) {
38183    const eventListener = new EventListener(eventTarget, eventName, eventOptions);
38184    if (this.started) {
38185      eventListener.connect();
38186    }
38187    return eventListener;
38188  }
38189  fetchEventListenerMapForEventTarget(eventTarget) {
38190    let eventListenerMap = this.eventListenerMaps.get(eventTarget);
38191    if (!eventListenerMap) {
38192      eventListenerMap = /* @__PURE__ */ new Map();
38193      this.eventListenerMaps.set(eventTarget, eventListenerMap);
38194    }
38195    return eventListenerMap;
38196  }
38197  cacheKey(eventName, eventOptions) {
38198    const parts = [eventName];
38199    Object.keys(eventOptions).sort().forEach((key) => {
38200      parts.push(`${eventOptions[key] ? "" : "!"}${key}`);
38201    });
38202    return parts.join(":");
38203  }
38204};
38205var defaultActionDescriptorFilters = {
38206  stop({ event, value }) {
38207    if (value)
38208      event.stopPropagation();
38209    return true;
38210  },
38211  prevent({ event, value }) {
38212    if (value)
38213      event.preventDefault();
38214    return true;
38215  },
38216  self({ event, value, element }) {
38217    if (value) {
38218      return element === event.target;
38219    } else {
38220      return true;
38221    }
38222  }
38223};
38224var descriptorPattern = /^(?:(?:([^.]+?)\+)?(.+?)(?:\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;
38225function parseActionDescriptorString(descriptorString) {
38226  const source = descriptorString.trim();
38227  const matches = source.match(descriptorPattern) || [];
38228  let eventName = matches[2];
38229  let keyFilter = matches[3];
38230  if (keyFilter && !["keydown", "keyup", "keypress"].includes(eventName)) {
38231    eventName += `.${keyFilter}`;
38232    keyFilter = "";
38233  }
38234  return {
38235    eventTarget: parseEventTarget(matches[4]),
38236    eventName,
38237    eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},
38238    identifier: matches[5],
38239    methodName: matches[6],
38240    keyFilter: matches[1] || keyFilter
38241  };
38242}
38243function parseEventTarget(eventTargetName) {
38244  if (eventTargetName == "window") {
38245    return window;
38246  } else if (eventTargetName == "document") {
38247    return document;
38248  }
38249}
38250function parseEventOptions(eventOptions) {
38251  return eventOptions.split(":").reduce((options, token) => Object.assign(options, { [token.replace(/^!/, "")]: !/^!/.test(token) }), {});
38252}
38253function stringifyEventTarget(eventTarget) {
38254  if (eventTarget == window) {
38255    return "window";
38256  } else if (eventTarget == document) {
38257    return "document";
38258  }
38259}
38260function camelize(value) {
38261  return value.replace(/(?:[_-])([a-z0-9])/g, (_3, char) => char.toUpperCase());
38262}
38263function namespaceCamelize(value) {
38264  return camelize(value.replace(/--/g, "-").replace(/__/g, "_"));
38265}
38266function capitalize(value) {
38267  return value.charAt(0).toUpperCase() + value.slice(1);
38268}
38269function dasherize(value) {
38270  return value.replace(/([A-Z])/g, (_3, char) => `-${char.toLowerCase()}`);
38271}
38272function tokenize(value) {
38273  return value.match(/[^\s]+/g) || [];
38274}
38275function isSomething(object) {
38276  return object !== null && object !== void 0;
38277}
38278function hasProperty(object, property) {
38279  return Object.prototype.hasOwnProperty.call(object, property);
38280}
38281var allModifiers = ["meta", "ctrl", "alt", "shift"];
38282var Action = class {
38283  constructor(element, index, descriptor, schema) {
38284    this.element = element;
38285    this.index = index;
38286    this.eventTarget = descriptor.eventTarget || element;
38287    this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error("missing event name");
38288    this.eventOptions = descriptor.eventOptions || {};
38289    this.identifier = descriptor.identifier || error("missing identifier");
38290    this.methodName = descriptor.methodName || error("missing method name");
38291    this.keyFilter = descriptor.keyFilter || "";
38292    this.schema = schema;
38293  }
38294  static forToken(token, schema) {
38295    return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);
38296  }
38297  toString() {
38298    const eventFilter = this.keyFilter ? `.${this.keyFilter}` : "";
38299    const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : "";
38300    return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;
38301  }
38302  shouldIgnoreKeyboardEvent(event) {
38303    if (!this.keyFilter) {
38304      return false;
38305    }
38306    const filters = this.keyFilter.split("+");
38307    if (this.keyFilterDissatisfied(event, filters)) {
38308      return true;
38309    }
38310    const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];
38311    if (!standardFilter) {
38312      return false;
38313    }
38314    if (!hasProperty(this.keyMappings, standardFilter)) {
38315      error(`contains unknown key filter: ${this.keyFilter}`);
38316    }
38317    return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();
38318  }
38319  shouldIgnoreMouseEvent(event) {
38320    if (!this.keyFilter) {
38321      return false;
38322    }
38323    const filters = [this.keyFilter];
38324    if (this.keyFilterDissatisfied(event, filters)) {
38325      return true;
38326    }
38327    return false;
38328  }
38329  get params() {
38330    const params = {};
38331    const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, "i");
38332    for (const { name, value } of Array.from(this.element.attributes)) {
38333      const match = name.match(pattern);
38334      const key = match && match[1];
38335      if (key) {
38336        params[camelize(key)] = typecast(value);
38337      }
38338    }
38339    return params;
38340  }
38341  get eventTargetName() {
38342    return stringifyEventTarget(this.eventTarget);
38343  }
38344  get keyMappings() {
38345    return this.schema.keyMappings;
38346  }
38347  keyFilterDissatisfied(event, filters) {
38348    const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));
38349    return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;
38350  }
38351};
38352var defaultEventNames = {
38353  a: () => "click",
38354  button: () => "click",
38355  form: () => "submit",
38356  details: () => "toggle",
38357  input: (e3) => e3.getAttribute("type") == "submit" ? "click" : "input",
38358  select: () => "change",
38359  textarea: () => "input"
38360};
38361function getDefaultEventNameForElement(element) {
38362  const tagName = element.tagName.toLowerCase();
38363  if (tagName in defaultEventNames) {
38364    return defaultEventNames[tagName](element);
38365  }
38366}
38367function error(message) {
38368  throw new Error(message);
38369}
38370function typecast(value) {
38371  try {
38372    return JSON.parse(value);
38373  } catch (o_O) {
38374    return value;
38375  }
38376}
38377var Binding = class {
38378  constructor(context, action) {
38379    this.context = context;
38380    this.action = action;
38381  }
38382  get index() {
38383    return this.action.index;
38384  }
38385  get eventTarget() {
38386    return this.action.eventTarget;
38387  }
38388  get eventOptions() {
38389    return this.action.eventOptions;
38390  }
38391  get identifier() {
38392    return this.context.identifier;
38393  }
38394  handleEvent(event) {
38395    const actionEvent = this.prepareActionEvent(event);
38396    if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {
38397      this.invokeWithEvent(actionEvent);
38398    }
38399  }
38400  get eventName() {
38401    return this.action.eventName;
38402  }
38403  get method() {
38404    const method = this.controller[this.methodName];
38405    if (typeof method == "function") {
38406      return method;
38407    }
38408    throw new Error(`Action "${this.action}" references undefined method "${this.methodName}"`);
38409  }
38410  applyEventModifiers(event) {
38411    const { element } = this.action;
38412    const { actionDescriptorFilters } = this.context.application;
38413    const { controller } = this.context;
38414    let passes = true;
38415    for (const [name, value] of Object.entries(this.eventOptions)) {
38416      if (name in actionDescriptorFilters) {
38417        const filter = actionDescriptorFilters[name];
38418        passes = passes && filter({ name, value, event, element, controller });
38419      } else {
38420        continue;
38421      }
38422    }
38423    return passes;
38424  }
38425  prepareActionEvent(event) {
38426    return Object.assign(event, { params: this.action.params });
38427  }
38428  invokeWithEvent(event) {
38429    const { target, currentTarget } = event;
38430    try {
38431      this.method.call(this.controller, event);
38432      this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });
38433    } catch (error2) {
38434      const { identifier, controller, element, index } = this;
38435      const detail = { identifier, controller, element, index, event };
38436      this.context.handleError(error2, `invoking action "${this.action}"`, detail);
38437    }
38438  }
38439  willBeInvokedByEvent(event) {
38440    const eventTarget = event.target;
38441    if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {
38442      return false;
38443    }
38444    if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {
38445      return false;
38446    }
38447    if (this.element === eventTarget) {
38448      return true;
38449    } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {
38450      return this.scope.containsElement(eventTarget);
38451    } else {
38452      return this.scope.containsElement(this.action.element);
38453    }
38454  }
38455  get controller() {
38456    return this.context.controller;
38457  }
38458  get methodName() {
38459    return this.action.methodName;
38460  }
38461  get element() {
38462    return this.scope.element;
38463  }
38464  get scope() {
38465    return this.context.scope;
38466  }
38467};
38468var ElementObserver = class {
38469  constructor(element, delegate) {
38470    this.mutationObserverInit = { attributes: true, childList: true, subtree: true };
38471    this.element = element;
38472    this.started = false;
38473    this.delegate = delegate;
38474    this.elements = /* @__PURE__ */ new Set();
38475    this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));
38476  }
38477  start() {
38478    if (!this.started) {
38479      this.started = true;
38480      this.mutationObserver.observe(this.element, this.mutationObserverInit);
38481      this.refresh();
38482    }
38483  }
38484  pause(callback) {
38485    if (this.started) {
38486      this.mutationObserver.disconnect();
38487      this.started = false;
38488    }
38489    callback();
38490    if (!this.started) {
38491      this.mutationObserver.observe(this.element, this.mutationObserverInit);
38492      this.started = true;
38493    }
38494  }
38495  stop() {
38496    if (this.started) {
38497      this.mutationObserver.takeRecords();
38498      this.mutationObserver.disconnect();
38499      this.started = false;
38500    }
38501  }
38502  refresh() {
38503    if (this.started) {
38504      const matches = new Set(this.matchElementsInTree());
38505      for (const element of Array.from(this.elements)) {
38506        if (!matches.has(element)) {
38507          this.removeElement(element);
38508        }
38509      }
38510      for (const element of Array.from(matches)) {
38511        this.addElement(element);
38512      }
38513    }
38514  }
38515  processMutations(mutations) {
38516    if (this.started) {
38517      for (const mutation of mutations) {
38518        this.processMutation(mutation);
38519      }
38520    }
38521  }
38522  processMutation(mutation) {
38523    if (mutation.type == "attributes") {
38524      this.processAttributeChange(mutation.target, mutation.attributeName);
38525    } else if (mutation.type == "childList") {
38526      this.processRemovedNodes(mutation.removedNodes);
38527      this.processAddedNodes(mutation.addedNodes);
38528    }
38529  }
38530  processAttributeChange(element, attributeName) {
38531    if (this.elements.has(element)) {
38532      if (this.delegate.elementAttributeChanged && this.matchElement(element)) {
38533        this.delegate.elementAttributeChanged(element, attributeName);
38534      } else {
38535        this.removeElement(element);
38536      }
38537    } else if (this.matchElement(element)) {
38538      this.addElement(element);
38539    }
38540  }
38541  processRemovedNodes(nodes) {
38542    for (const node of Array.from(nodes)) {
38543      const element = this.elementFromNode(node);
38544      if (element) {
38545        this.processTree(element, this.removeElement);
38546      }
38547    }
38548  }
38549  processAddedNodes(nodes) {
38550    for (const node of Array.from(nodes)) {
38551      const element = this.elementFromNode(node);
38552      if (element && this.elementIsActive(element)) {
38553        this.processTree(element, this.addElement);
38554      }
38555    }
38556  }
38557  matchElement(element) {
38558    return this.delegate.matchElement(element);
38559  }
38560  matchElementsInTree(tree = this.element) {
38561    return this.delegate.matchElementsInTree(tree);
38562  }
38563  processTree(tree, processor) {
38564    for (const element of this.matchElementsInTree(tree)) {
38565      processor.call(this, element);
38566    }
38567  }
38568  elementFromNode(node) {
38569    if (node.nodeType == Node.ELEMENT_NODE) {
38570      return node;
38571    }
38572  }
38573  elementIsActive(element) {
38574    if (element.isConnected != this.element.isConnected) {
38575      return false;
38576    } else {
38577      return this.element.contains(element);
38578    }
38579  }
38580  addElement(element) {
38581    if (!this.elements.has(element)) {
38582      if (this.elementIsActive(element)) {
38583        this.elements.add(element);
38584        if (this.delegate.elementMatched) {
38585          this.delegate.elementMatched(element);
38586        }
38587      }
38588    }
38589  }
38590  removeElement(element) {
38591    if (this.elements.has(element)) {
38592      this.elements.delete(element);
38593      if (this.delegate.elementUnmatched) {
38594        this.delegate.elementUnmatched(element);
38595      }
38596    }
38597  }
38598};
38599var AttributeObserver = class {
38600  constructor(element, attributeName, delegate) {
38601    this.attributeName = attributeName;
38602    this.delegate = delegate;
38603    this.elementObserver = new ElementObserver(element, this);
38604  }
38605  get element() {
38606    return this.elementObserver.element;
38607  }
38608  get selector() {
38609    return `[${this.attributeName}]`;
38610  }
38611  start() {
38612    this.elementObserver.start();
38613  }
38614  pause(callback) {
38615    this.elementObserver.pause(callback);
38616  }
38617  stop() {
38618    this.elementObserver.stop();
38619  }
38620  refresh() {
38621    this.elementObserver.refresh();
38622  }
38623  get started() {
38624    return this.elementObserver.started;
38625  }
38626  matchElement(element) {
38627    return element.hasAttribute(this.attributeName);
38628  }
38629  matchElementsInTree(tree) {
38630    const match = this.matchElement(tree) ? [tree] : [];
38631    const matches = Array.from(tree.querySelectorAll(this.selector));
38632    return match.concat(matches);
38633  }
38634  elementMatched(element) {
38635    if (this.delegate.elementMatchedAttribute) {
38636      this.delegate.elementMatchedAttribute(element, this.attributeName);
38637    }
38638  }
38639  elementUnmatched(element) {
38640    if (this.delegate.elementUnmatchedAttribute) {
38641      this.delegate.elementUnmatchedAttribute(element, this.attributeName);
38642    }
38643  }
38644  elementAttributeChanged(element, attributeName) {
38645    if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {
38646      this.delegate.elementAttributeValueChanged(element, attributeName);
38647    }
38648  }
38649};
38650function add(map, key, value) {
38651  fetch2(map, key).add(value);
38652}
38653function del(map, key, value) {
38654  fetch2(map, key).delete(value);
38655  prune(map, key);
38656}
38657function fetch2(map, key) {
38658  let values = map.get(key);
38659  if (!values) {
38660    values = /* @__PURE__ */ new Set();
38661    map.set(key, values);
38662  }
38663  return values;
38664}
38665function prune(map, key) {
38666  const values = map.get(key);
38667  if (values != null && values.size == 0) {
38668    map.delete(key);
38669  }
38670}
38671var Multimap = class {
38672  constructor() {
38673    this.valuesByKey = /* @__PURE__ */ new Map();
38674  }
38675  get keys() {
38676    return Array.from(this.valuesByKey.keys());
38677  }
38678  get values() {
38679    const sets = Array.from(this.valuesByKey.values());
38680    return sets.reduce((values, set) => values.concat(Array.from(set)), []);
38681  }
38682  get size() {
38683    const sets = Array.from(this.valuesByKey.values());
38684    return sets.reduce((size, set) => size + set.size, 0);
38685  }
38686  add(key, value) {
38687    add(this.valuesByKey, key, value);
38688  }
38689  delete(key, value) {
38690    del(this.valuesByKey, key, value);
38691  }
38692  has(key, value) {
38693    const values = this.valuesByKey.get(key);
38694    return values != null && values.has(value);
38695  }
38696  hasKey(key) {
38697    return this.valuesByKey.has(key);
38698  }
38699  hasValue(value) {
38700    const sets = Array.from(this.valuesByKey.values());
38701    return sets.some((set) => set.has(value));
38702  }
38703  getValuesForKey(key) {
38704    const values = this.valuesByKey.get(key);
38705    return values ? Array.from(values) : [];
38706  }
38707  getKeysForValue(value) {
38708    return Array.from(this.valuesByKey).filter(([_key, values]) => values.has(value)).map(([key, _values]) => key);
38709  }
38710};
38711var SelectorObserver = class {
38712  constructor(element, selector, delegate, details) {
38713    this._selector = selector;
38714    this.details = details;
38715    this.elementObserver = new ElementObserver(element, this);
38716    this.delegate = delegate;
38717    this.matchesByElement = new Multimap();
38718  }
38719  get started() {
38720    return this.elementObserver.started;
38721  }
38722  get selector() {
38723    return this._selector;
38724  }
38725  set selector(selector) {
38726    this._selector = selector;
38727    this.refresh();
38728  }
38729  start() {
38730    this.elementObserver.start();
38731  }
38732  pause(callback) {
38733    this.elementObserver.pause(callback);
38734  }
38735  stop() {
38736    this.elementObserver.stop();
38737  }
38738  refresh() {
38739    this.elementObserver.refresh();
38740  }
38741  get element() {
38742    return this.elementObserver.element;
38743  }
38744  matchElement(element) {
38745    const { selector } = this;
38746    if (selector) {
38747      const matches = element.matches(selector);
38748      if (this.delegate.selectorMatchElement) {
38749        return matches && this.delegate.selectorMatchElement(element, this.details);
38750      }
38751      return matches;
38752    } else {
38753      return false;
38754    }
38755  }
38756  matchElementsInTree(tree) {
38757    const { selector } = this;
38758    if (selector) {
38759      const match = this.matchElement(tree) ? [tree] : [];
38760      const matches = Array.from(tree.querySelectorAll(selector)).filter((match2) => this.matchElement(match2));
38761      return match.concat(matches);
38762    } else {
38763      return [];
38764    }
38765  }
38766  elementMatched(element) {
38767    const { selector } = this;
38768    if (selector) {
38769      this.selectorMatched(element, selector);
38770    }
38771  }
38772  elementUnmatched(element) {
38773    const selectors = this.matchesByElement.getKeysForValue(element);
38774    for (const selector of selectors) {
38775      this.selectorUnmatched(element, selector);
38776    }
38777  }
38778  elementAttributeChanged(element, _attributeName) {
38779    const { selector } = this;
38780    if (selector) {
38781      const matches = this.matchElement(element);
38782      const matchedBefore = this.matchesByElement.has(selector, element);
38783      if (matches && !matchedBefore) {
38784        this.selectorMatched(element, selector);
38785      } else if (!matches && matchedBefore) {
38786        this.selectorUnmatched(element, selector);
38787      }
38788    }
38789  }
38790  selectorMatched(element, selector) {
38791    this.delegate.selectorMatched(element, selector, this.details);
38792    this.matchesByElement.add(selector, element);
38793  }
38794  selectorUnmatched(element, selector) {
38795    this.delegate.selectorUnmatched(element, selector, this.details);
38796    this.matchesByElement.delete(selector, element);
38797  }
38798};
38799var StringMapObserver = class {
38800  constructor(element, delegate) {
38801    this.element = element;
38802    this.delegate = delegate;
38803    this.started = false;
38804    this.stringMap = /* @__PURE__ */ new Map();
38805    this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));
38806  }
38807  start() {
38808    if (!this.started) {
38809      this.started = true;
38810      this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });
38811      this.refresh();
38812    }
38813  }
38814  stop() {
38815    if (this.started) {
38816      this.mutationObserver.takeRecords();
38817      this.mutationObserver.disconnect();
38818      this.started = false;
38819    }
38820  }
38821  refresh() {
38822    if (this.started) {
38823      for (const attributeName of this.knownAttributeNames) {
38824        this.refreshAttribute(attributeName, null);
38825      }
38826    }
38827  }
38828  processMutations(mutations) {
38829    if (this.started) {
38830      for (const mutation of mutations) {
38831        this.processMutation(mutation);
38832      }
38833    }
38834  }
38835  processMutation(mutation) {
38836    const attributeName = mutation.attributeName;
38837    if (attributeName) {
38838      this.refreshAttribute(attributeName, mutation.oldValue);
38839    }
38840  }
38841  refreshAttribute(attributeName, oldValue) {
38842    const key = this.delegate.getStringMapKeyForAttribute(attributeName);
38843    if (key != null) {
38844      if (!this.stringMap.has(attributeName)) {
38845        this.stringMapKeyAdded(key, attributeName);
38846      }
38847      const value = this.element.getAttribute(attributeName);
38848      if (this.stringMap.get(attributeName) != value) {
38849        this.stringMapValueChanged(value, key, oldValue);
38850      }
38851      if (value == null) {
38852        const oldValue2 = this.stringMap.get(attributeName);
38853        this.stringMap.delete(attributeName);
38854        if (oldValue2)
38855          this.stringMapKeyRemoved(key, attributeName, oldValue2);
38856      } else {
38857        this.stringMap.set(attributeName, value);
38858      }
38859    }
38860  }
38861  stringMapKeyAdded(key, attributeName) {
38862    if (this.delegate.stringMapKeyAdded) {
38863      this.delegate.stringMapKeyAdded(key, attributeName);
38864    }
38865  }
38866  stringMapValueChanged(value, key, oldValue) {
38867    if (this.delegate.stringMapValueChanged) {
38868      this.delegate.stringMapValueChanged(value, key, oldValue);
38869    }
38870  }
38871  stringMapKeyRemoved(key, attributeName, oldValue) {
38872    if (this.delegate.stringMapKeyRemoved) {
38873      this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);
38874    }
38875  }
38876  get knownAttributeNames() {
38877    return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));
38878  }
38879  get currentAttributeNames() {
38880    return Array.from(this.element.attributes).map((attribute) => attribute.name);
38881  }
38882  get recordedAttributeNames() {
38883    return Array.from(this.stringMap.keys());
38884  }
38885};
38886var TokenListObserver = class {
38887  constructor(element, attributeName, delegate) {
38888    this.attributeObserver = new AttributeObserver(element, attributeName, this);
38889    this.delegate = delegate;
38890    this.tokensByElement = new Multimap();
38891  }
38892  get started() {
38893    return this.attributeObserver.started;
38894  }
38895  start() {
38896    this.attributeObserver.start();
38897  }
38898  pause(callback) {
38899    this.attributeObserver.pause(callback);
38900  }
38901  stop() {
38902    this.attributeObserver.stop();
38903  }
38904  refresh() {
38905    this.attributeObserver.refresh();
38906  }
38907  get element() {
38908    return this.attributeObserver.element;
38909  }
38910  get attributeName() {
38911    return this.attributeObserver.attributeName;
38912  }
38913  elementMatchedAttribute(element) {
38914    this.tokensMatched(this.readTokensForElement(element));
38915  }
38916  elementAttributeValueChanged(element) {
38917    const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);
38918    this.tokensUnmatched(unmatchedTokens);
38919    this.tokensMatched(matchedTokens);
38920  }
38921  elementUnmatchedAttribute(element) {
38922    this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));
38923  }
38924  tokensMatched(tokens) {
38925    tokens.forEach((token) => this.tokenMatched(token));
38926  }
38927  tokensUnmatched(tokens) {
38928    tokens.forEach((token) => this.tokenUnmatched(token));
38929  }
38930  tokenMatched(token) {
38931    this.delegate.tokenMatched(token);
38932    this.tokensByElement.add(token.element, token);
38933  }
38934  tokenUnmatched(token) {
38935    this.delegate.tokenUnmatched(token);
38936    this.tokensByElement.delete(token.element, token);
38937  }
38938  refreshTokensForElement(element) {
38939    const previousTokens = this.tokensByElement.getValuesForKey(element);
38940    const currentTokens = this.readTokensForElement(element);
38941    const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));
38942    if (firstDifferingIndex == -1) {
38943      return [[], []];
38944    } else {
38945      return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];
38946    }
38947  }
38948  readTokensForElement(element) {
38949    const attributeName = this.attributeName;
38950    const tokenString = element.getAttribute(attributeName) || "";
38951    return parseTokenString(tokenString, element, attributeName);
38952  }
38953};
38954function parseTokenString(tokenString, element, attributeName) {
38955  return tokenString.trim().split(/\s+/).filter((content) => content.length).map((content, index) => ({ element, attributeName, content, index }));
38956}
38957function zip(left, right) {
38958  const length = Math.max(left.length, right.length);
38959  return Array.from({ length }, (_3, index) => [left[index], right[index]]);
38960}
38961function tokensAreEqual(left, right) {
38962  return left && right && left.index == right.index && left.content == right.content;
38963}
38964var ValueListObserver = class {
38965  constructor(element, attributeName, delegate) {
38966    this.tokenListObserver = new TokenListObserver(element, attributeName, this);
38967    this.delegate = delegate;
38968    this.parseResultsByToken = /* @__PURE__ */ new WeakMap();
38969    this.valuesByTokenByElement = /* @__PURE__ */ new WeakMap();
38970  }
38971  get started() {
38972    return this.tokenListObserver.started;
38973  }
38974  start() {
38975    this.tokenListObserver.start();
38976  }
38977  stop() {
38978    this.tokenListObserver.stop();
38979  }
38980  refresh() {
38981    this.tokenListObserver.refresh();
38982  }
38983  get element() {
38984    return this.tokenListObserver.element;
38985  }
38986  get attributeName() {
38987    return this.tokenListObserver.attributeName;
38988  }
38989  tokenMatched(token) {
38990    const { element } = token;
38991    const { value } = this.fetchParseResultForToken(token);
38992    if (value) {
38993      this.fetchValuesByTokenForElement(element).set(token, value);
38994      this.delegate.elementMatchedValue(element, value);
38995    }
38996  }
38997  tokenUnmatched(token) {
38998    const { element } = token;
38999    const { value } = this.fetchParseResultForToken(token);
39000    if (value) {
39001      this.fetchValuesByTokenForElement(element).delete(token);
39002      this.delegate.elementUnmatchedValue(element, value);
39003    }
39004  }
39005  fetchParseResultForToken(token) {
39006    let parseResult = this.parseResultsByToken.get(token);
39007    if (!parseResult) {
39008      parseResult = this.parseToken(token);
39009      this.parseResultsByToken.set(token, parseResult);
39010    }
39011    return parseResult;
39012  }
39013  fetchValuesByTokenForElement(element) {
39014    let valuesByToken = this.valuesByTokenByElement.get(element);
39015    if (!valuesByToken) {
39016      valuesByToken = /* @__PURE__ */ new Map();
39017      this.valuesByTokenByElement.set(element, valuesByToken);
39018    }
39019    return valuesByToken;
39020  }
39021  parseToken(token) {
39022    try {
39023      const value = this.delegate.parseValueForToken(token);
39024      return { value };
39025    } catch (error2) {
39026      return { error: error2 };
39027    }
39028  }
39029};
39030var BindingObserver = class {
39031  constructor(context, delegate) {
39032    this.context = context;
39033    this.delegate = delegate;
39034    this.bindingsByAction = /* @__PURE__ */ new Map();
39035  }
39036  start() {
39037    if (!this.valueListObserver) {
39038      this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);
39039      this.valueListObserver.start();
39040    }
39041  }
39042  stop() {
39043    if (this.valueListObserver) {
39044      this.valueListObserver.stop();
39045      delete this.valueListObserver;
39046      this.disconnectAllActions();
39047    }
39048  }
39049  get element() {
39050    return this.context.element;
39051  }
39052  get identifier() {
39053    return this.context.identifier;
39054  }
39055  get actionAttribute() {
39056    return this.schema.actionAttribute;
39057  }
39058  get schema() {
39059    return this.context.schema;
39060  }
39061  get bindings() {
39062    return Array.from(this.bindingsByAction.values());
39063  }
39064  connectAction(action) {
39065    const binding = new Binding(this.context, action);
39066    this.bindingsByAction.set(action, binding);
39067    this.delegate.bindingConnected(binding);
39068  }
39069  disconnectAction(action) {
39070    const binding = this.bindingsByAction.get(action);
39071    if (binding) {
39072      this.bindingsByAction.delete(action);
39073      this.delegate.bindingDisconnected(binding);
39074    }
39075  }
39076  disconnectAllActions() {
39077    this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));
39078    this.bindingsByAction.clear();
39079  }
39080  parseValueForToken(token) {
39081    const action = Action.forToken(token, this.schema);
39082    if (action.identifier == this.identifier) {
39083      return action;
39084    }
39085  }
39086  elementMatchedValue(element, action) {
39087    this.connectAction(action);
39088  }
39089  elementUnmatchedValue(element, action) {
39090    this.disconnectAction(action);
39091  }
39092};
39093var ValueObserver = class {
39094  constructor(context, receiver) {
39095    this.context = context;
39096    this.receiver = receiver;
39097    this.stringMapObserver = new StringMapObserver(this.element, this);
39098    this.valueDescriptorMap = this.controller.valueDescriptorMap;
39099  }
39100  start() {
39101    this.stringMapObserver.start();
39102    this.invokeChangedCallbacksForDefaultValues();
39103  }
39104  stop() {
39105    this.stringMapObserver.stop();
39106  }
39107  get element() {
39108    return this.context.element;
39109  }
39110  get controller() {
39111    return this.context.controller;
39112  }
39113  getStringMapKeyForAttribute(attributeName) {
39114    if (attributeName in this.valueDescriptorMap) {
39115      return this.valueDescriptorMap[attributeName].name;
39116    }
39117  }
39118  stringMapKeyAdded(key, attributeName) {
39119    const descriptor = this.valueDescriptorMap[attributeName];
39120    if (!this.hasValue(key)) {
39121      this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));
39122    }
39123  }
39124  stringMapValueChanged(value, name, oldValue) {
39125    const descriptor = this.valueDescriptorNameMap[name];
39126    if (value === null)
39127      return;
39128    if (oldValue === null) {
39129      oldValue = descriptor.writer(descriptor.defaultValue);
39130    }
39131    this.invokeChangedCallback(name, value, oldValue);
39132  }
39133  stringMapKeyRemoved(key, attributeName, oldValue) {
39134    const descriptor = this.valueDescriptorNameMap[key];
39135    if (this.hasValue(key)) {
39136      this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);
39137    } else {
39138      this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);
39139    }
39140  }
39141  invokeChangedCallbacksForDefaultValues() {
39142    for (const { key, name, defaultValue, writer } of this.valueDescriptors) {
39143      if (defaultValue != void 0 && !this.controller.data.has(key)) {
39144        this.invokeChangedCallback(name, writer(defaultValue), void 0);
39145      }
39146    }
39147  }
39148  invokeChangedCallback(name, rawValue, rawOldValue) {
39149    const changedMethodName = `${name}Changed`;
39150    const changedMethod = this.receiver[changedMethodName];
39151    if (typeof changedMethod == "function") {
39152      const descriptor = this.valueDescriptorNameMap[name];
39153      try {
39154        const value = descriptor.reader(rawValue);
39155        let oldValue = rawOldValue;
39156        if (rawOldValue) {
39157          oldValue = descriptor.reader(rawOldValue);
39158        }
39159        changedMethod.call(this.receiver, value, oldValue);
39160      } catch (error2) {
39161        if (error2 instanceof TypeError) {
39162          error2.message = `Stimulus Value "${this.context.identifier}.${descriptor.name}" - ${error2.message}`;
39163        }
39164        throw error2;
39165      }
39166    }
39167  }
39168  get valueDescriptors() {
39169    const { valueDescriptorMap } = this;
39170    return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);
39171  }
39172  get valueDescriptorNameMap() {
39173    const descriptors = {};
39174    Object.keys(this.valueDescriptorMap).forEach((key) => {
39175      const descriptor = this.valueDescriptorMap[key];
39176      descriptors[descriptor.name] = descriptor;
39177    });
39178    return descriptors;
39179  }
39180  hasValue(attributeName) {
39181    const descriptor = this.valueDescriptorNameMap[attributeName];
39182    const hasMethodName = `has${capitalize(descriptor.name)}`;
39183    return this.receiver[hasMethodName];
39184  }
39185};
39186var TargetObserver = class {
39187  constructor(context, delegate) {
39188    this.context = context;
39189    this.delegate = delegate;
39190    this.targetsByName = new Multimap();
39191  }
39192  start() {
39193    if (!this.tokenListObserver) {
39194      this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);
39195      this.tokenListObserver.start();
39196    }
39197  }
39198  stop() {
39199    if (this.tokenListObserver) {
39200      this.disconnectAllTargets();
39201      this.tokenListObserver.stop();
39202      delete this.tokenListObserver;
39203    }
39204  }
39205  tokenMatched({ element, content: name }) {
39206    if (this.scope.containsElement(element)) {
39207      this.connectTarget(element, name);
39208    }
39209  }
39210  tokenUnmatched({ element, content: name }) {
39211    this.disconnectTarget(element, name);
39212  }
39213  connectTarget(element, name) {
39214    var _a3;
39215    if (!this.targetsByName.has(name, element)) {
39216      this.targetsByName.add(name, element);
39217      (_a3 = this.tokenListObserver) === null || _a3 === void 0 ? void 0 : _a3.pause(() => this.delegate.targetConnected(element, name));
39218    }
39219  }
39220  disconnectTarget(element, name) {
39221    var _a3;
39222    if (this.targetsByName.has(name, element)) {
39223      this.targetsByName.delete(name, element);
39224      (_a3 = this.tokenListObserver) === null || _a3 === void 0 ? void 0 : _a3.pause(() => this.delegate.targetDisconnected(element, name));
39225    }
39226  }
39227  disconnectAllTargets() {
39228    for (const name of this.targetsByName.keys) {
39229      for (const element of this.targetsByName.getValuesForKey(name)) {
39230        this.disconnectTarget(element, name);
39231      }
39232    }
39233  }
39234  get attributeName() {
39235    return `data-${this.context.identifier}-target`;
39236  }
39237  get element() {
39238    return this.context.element;
39239  }
39240  get scope() {
39241    return this.context.scope;
39242  }
39243};
39244function readInheritableStaticArrayValues(constructor, propertyName) {
39245  const ancestors = getAncestorsForConstructor(constructor);
39246  return Array.from(ancestors.reduce((values, constructor2) => {
39247    getOwnStaticArrayValues(constructor2, propertyName).forEach((name) => values.add(name));
39248    return values;
39249  }, /* @__PURE__ */ new Set()));
39250}
39251function readInheritableStaticObjectPairs(constructor, propertyName) {
39252  const ancestors = getAncestorsForConstructor(constructor);
39253  return ancestors.reduce((pairs, constructor2) => {
39254    pairs.push(...getOwnStaticObjectPairs(constructor2, propertyName));
39255    return pairs;
39256  }, []);
39257}
39258function getAncestorsForConstructor(constructor) {
39259  const ancestors = [];
39260  while (constructor) {
39261    ancestors.push(constructor);
39262    constructor = Object.getPrototypeOf(constructor);
39263  }
39264  return ancestors.reverse();
39265}
39266function getOwnStaticArrayValues(constructor, propertyName) {
39267  const definition = constructor[propertyName];
39268  return Array.isArray(definition) ? definition : [];
39269}
39270function getOwnStaticObjectPairs(constructor, propertyName) {
39271  const definition = constructor[propertyName];
39272  return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];
39273}
39274var OutletObserver = class {
39275  constructor(context, delegate) {
39276    this.started = false;
39277    this.context = context;
39278    this.delegate = delegate;
39279    this.outletsByName = new Multimap();
39280    this.outletElementsByName = new Multimap();
39281    this.selectorObserverMap = /* @__PURE__ */ new Map();
39282    this.attributeObserverMap = /* @__PURE__ */ new Map();
39283  }
39284  start() {
39285    if (!this.started) {
39286      this.outletDefinitions.forEach((outletName) => {
39287        this.setupSelectorObserverForOutlet(outletName);
39288        this.setupAttributeObserverForOutlet(outletName);
39289      });
39290      this.started = true;
39291      this.dependentContexts.forEach((context) => context.refresh());
39292    }
39293  }
39294  refresh() {
39295    this.selectorObserverMap.forEach((observer) => observer.refresh());
39296    this.attributeObserverMap.forEach((observer) => observer.refresh());
39297  }
39298  stop() {
39299    if (this.started) {
39300      this.started = false;
39301      this.disconnectAllOutlets();
39302      this.stopSelectorObservers();
39303      this.stopAttributeObservers();
39304    }
39305  }
39306  stopSelectorObservers() {
39307    if (this.selectorObserverMap.size > 0) {
39308      this.selectorObserverMap.forEach((observer) => observer.stop());
39309      this.selectorObserverMap.clear();
39310    }
39311  }
39312  stopAttributeObservers() {
39313    if (this.attributeObserverMap.size > 0) {
39314      this.attributeObserverMap.forEach((observer) => observer.stop());
39315      this.attributeObserverMap.clear();
39316    }
39317  }
39318  selectorMatched(element, _selector, { outletName }) {
39319    const outlet = this.getOutlet(element, outletName);
39320    if (outlet) {
39321      this.connectOutlet(outlet, element, outletName);
39322    }
39323  }
39324  selectorUnmatched(element, _selector, { outletName }) {
39325    const outlet = this.getOutletFromMap(element, outletName);
39326    if (outlet) {
39327      this.disconnectOutlet(outlet, element, outletName);
39328    }
39329  }
39330  selectorMatchElement(element, { outletName }) {
39331    const selector = this.selector(outletName);
39332    const hasOutlet = this.hasOutlet(element, outletName);
39333    const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);
39334    if (selector) {
39335      return hasOutlet && hasOutletController && element.matches(selector);
39336    } else {
39337      return false;
39338    }
39339  }
39340  elementMatchedAttribute(_element, attributeName) {
39341    const outletName = this.getOutletNameFromOutletAttributeName(attributeName);
39342    if (outletName) {
39343      this.updateSelectorObserverForOutlet(outletName);
39344    }
39345  }
39346  elementAttributeValueChanged(_element, attributeName) {
39347    const outletName = this.getOutletNameFromOutletAttributeName(attributeName);
39348    if (outletName) {
39349      this.updateSelectorObserverForOutlet(outletName);
39350    }
39351  }
39352  elementUnmatchedAttribute(_element, attributeName) {
39353    const outletName = this.getOutletNameFromOutletAttributeName(attributeName);
39354    if (outletName) {
39355      this.updateSelectorObserverForOutlet(outletName);
39356    }
39357  }
39358  connectOutlet(outlet, element, outletName) {
39359    var _a3;
39360    if (!this.outletElementsByName.has(outletName, element)) {
39361      this.outletsByName.add(outletName, outlet);
39362      this.outletElementsByName.add(outletName, element);
39363      (_a3 = this.selectorObserverMap.get(outletName)) === null || _a3 === void 0 ? void 0 : _a3.pause(() => this.delegate.outletConnected(outlet, element, outletName));
39364    }
39365  }
39366  disconnectOutlet(outlet, element, outletName) {
39367    var _a3;
39368    if (this.outletElementsByName.has(outletName, element)) {
39369      this.outletsByName.delete(outletName, outlet);
39370      this.outletElementsByName.delete(outletName, element);
39371      (_a3 = this.selectorObserverMap.get(outletName)) === null || _a3 === void 0 ? void 0 : _a3.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));
39372    }
39373  }
39374  disconnectAllOutlets() {
39375    for (const outletName of this.outletElementsByName.keys) {
39376      for (const element of this.outletElementsByName.getValuesForKey(outletName)) {
39377        for (const outlet of this.outletsByName.getValuesForKey(outletName)) {
39378          this.disconnectOutlet(outlet, element, outletName);
39379        }
39380      }
39381    }
39382  }
39383  updateSelectorObserverForOutlet(outletName) {
39384    const observer = this.selectorObserverMap.get(outletName);
39385    if (observer) {
39386      observer.selector = this.selector(outletName);
39387    }
39388  }
39389  setupSelectorObserverForOutlet(outletName) {
39390    const selector = this.selector(outletName);
39391    const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });
39392    this.selectorObserverMap.set(outletName, selectorObserver);
39393    selectorObserver.start();
39394  }
39395  setupAttributeObserverForOutlet(outletName) {
39396    const attributeName = this.attributeNameForOutletName(outletName);
39397    const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);
39398    this.attributeObserverMap.set(outletName, attributeObserver);
39399    attributeObserver.start();
39400  }
39401  selector(outletName) {
39402    return this.scope.outlets.getSelectorForOutletName(outletName);
39403  }
39404  attributeNameForOutletName(outletName) {
39405    return this.scope.schema.outletAttributeForScope(this.identifier, outletName);
39406  }
39407  getOutletNameFromOutletAttributeName(attributeName) {
39408    return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);
39409  }
39410  get outletDependencies() {
39411    const dependencies = new Multimap();
39412    this.router.modules.forEach((module) => {
39413      const constructor = module.definition.controllerConstructor;
39414      const outlets = readInheritableStaticArrayValues(constructor, "outlets");
39415      outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));
39416    });
39417    return dependencies;
39418  }
39419  get outletDefinitions() {
39420    return this.outletDependencies.getKeysForValue(this.identifier);
39421  }
39422  get dependentControllerIdentifiers() {
39423    return this.outletDependencies.getValuesForKey(this.identifier);
39424  }
39425  get dependentContexts() {
39426    const identifiers = this.dependentControllerIdentifiers;
39427    return this.router.contexts.filter((context) => identifiers.includes(context.identifier));
39428  }
39429  hasOutlet(element, outletName) {
39430    return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);
39431  }
39432  getOutlet(element, outletName) {
39433    return this.application.getControllerForElementAndIdentifier(element, outletName);
39434  }
39435  getOutletFromMap(element, outletName) {
39436    return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);
39437  }
39438  get scope() {
39439    return this.context.scope;
39440  }
39441  get schema() {
39442    return this.context.schema;
39443  }
39444  get identifier() {
39445    return this.context.identifier;
39446  }
39447  get application() {
39448    return this.context.application;
39449  }
39450  get router() {
39451    return this.application.router;
39452  }
39453};
39454var Context = class {
39455  constructor(module, scope) {
39456    this.logDebugActivity = (functionName, detail = {}) => {
39457      const { identifier, controller, element } = this;
39458      detail = Object.assign({ identifier, controller, element }, detail);
39459      this.application.logDebugActivity(this.identifier, functionName, detail);
39460    };
39461    this.module = module;
39462    this.scope = scope;
39463    this.controller = new module.controllerConstructor(this);
39464    this.bindingObserver = new BindingObserver(this, this.dispatcher);
39465    this.valueObserver = new ValueObserver(this, this.controller);
39466    this.targetObserver = new TargetObserver(this, this);
39467    this.outletObserver = new OutletObserver(this, this);
39468    try {
39469      this.controller.initialize();
39470      this.logDebugActivity("initialize");
39471    } catch (error2) {
39472      this.handleError(error2, "initializing controller");
39473    }
39474  }
39475  connect() {
39476    this.bindingObserver.start();
39477    this.valueObserver.start();
39478    this.targetObserver.start();
39479    this.outletObserver.start();
39480    try {
39481      this.controller.connect();
39482      this.logDebugActivity("connect");
39483    } catch (error2) {
39484      this.handleError(error2, "connecting controller");
39485    }
39486  }
39487  refresh() {
39488    this.outletObserver.refresh();
39489  }
39490  disconnect() {
39491    try {
39492      this.controller.disconnect();
39493      this.logDebugActivity("disconnect");
39494    } catch (error2) {
39495      this.handleError(error2, "disconnecting controller");
39496    }
39497    this.outletObserver.stop();
39498    this.targetObserver.stop();
39499    this.valueObserver.stop();
39500    this.bindingObserver.stop();
39501  }
39502  get application() {
39503    return this.module.application;
39504  }
39505  get identifier() {
39506    return this.module.identifier;
39507  }
39508  get schema() {
39509    return this.application.schema;
39510  }
39511  get dispatcher() {
39512    return this.application.dispatcher;
39513  }
39514  get element() {
39515    return this.scope.element;
39516  }
39517  get parentElement() {
39518    return this.element.parentElement;
39519  }
39520  handleError(error2, message, detail = {}) {
39521    const { identifier, controller, element } = this;
39522    detail = Object.assign({ identifier, controller, element }, detail);
39523    this.application.handleError(error2, `Error ${message}`, detail);
39524  }
39525  targetConnected(element, name) {
39526    this.invokeControllerMethod(`${name}TargetConnected`, element);
39527  }
39528  targetDisconnected(element, name) {
39529    this.invokeControllerMethod(`${name}TargetDisconnected`, element);
39530  }
39531  outletConnected(outlet, element, name) {
39532    this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);
39533  }
39534  outletDisconnected(outlet, element, name) {
39535    this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);
39536  }
39537  invokeControllerMethod(methodName, ...args) {
39538    const controller = this.controller;
39539    if (typeof controller[methodName] == "function") {
39540      controller[methodName](...args);
39541    }
39542  }
39543};
39544function bless(constructor) {
39545  return shadow(constructor, getBlessedProperties(constructor));
39546}
39547function shadow(constructor, properties) {
39548  const shadowConstructor = extend2(constructor);
39549  const shadowProperties = getShadowProperties(constructor.prototype, properties);
39550  Object.defineProperties(shadowConstructor.prototype, shadowProperties);
39551  return shadowConstructor;
39552}
39553function getBlessedProperties(constructor) {
39554  const blessings = readInheritableStaticArrayValues(constructor, "blessings");
39555  return blessings.reduce((blessedProperties, blessing) => {
39556    const properties = blessing(constructor);
39557    for (const key in properties) {
39558      const descriptor = blessedProperties[key] || {};
39559      blessedProperties[key] = Object.assign(descriptor, properties[key]);
39560    }
39561    return blessedProperties;
39562  }, {});
39563}
39564function getShadowProperties(prototype, properties) {
39565  return getOwnKeys(properties).reduce((shadowProperties, key) => {
39566    const descriptor = getShadowedDescriptor(prototype, properties, key);
39567    if (descriptor) {
39568      Object.assign(shadowProperties, { [key]: descriptor });
39569    }
39570    return shadowProperties;
39571  }, {});
39572}
39573function getShadowedDescriptor(prototype, properties, key) {
39574  const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);
39575  const shadowedByValue = shadowingDescriptor && "value" in shadowingDescriptor;
39576  if (!shadowedByValue) {
39577    const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;
39578    if (shadowingDescriptor) {
39579      descriptor.get = shadowingDescriptor.get || descriptor.get;
39580      descriptor.set = shadowingDescriptor.set || descriptor.set;
39581    }
39582    return descriptor;
39583  }
39584}
39585var getOwnKeys = (() => {
39586  if (typeof Object.getOwnPropertySymbols == "function") {
39587    return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];
39588  } else {
39589    return Object.getOwnPropertyNames;
39590  }
39591})();
39592var extend2 = (() => {
39593  function extendWithReflect(constructor) {
39594    function extended() {
39595      return Reflect.construct(constructor, arguments, new.target);
39596    }
39597    extended.prototype = Object.create(constructor.prototype, {
39598      constructor: { value: extended }
39599    });
39600    Reflect.setPrototypeOf(extended, constructor);
39601    return extended;
39602  }
39603  function testReflectExtension() {
39604    const a3 = function() {
39605      this.a.call(this);
39606    };
39607    const b3 = extendWithReflect(a3);
39608    b3.prototype.a = function() {
39609    };
39610    return new b3();
39611  }
39612  try {
39613    testReflectExtension();
39614    return extendWithReflect;
39615  } catch (error2) {
39616    return (constructor) => class extended extends constructor {
39617    };
39618  }
39619})();
39620function blessDefinition(definition) {
39621  return {
39622    identifier: definition.identifier,
39623    controllerConstructor: bless(definition.controllerConstructor)
39624  };
39625}
39626var Module = class {
39627  constructor(application2, definition) {
39628    this.application = application2;
39629    this.definition = blessDefinition(definition);
39630    this.contextsByScope = /* @__PURE__ */ new WeakMap();
39631    this.connectedContexts = /* @__PURE__ */ new Set();
39632  }
39633  get identifier() {
39634    return this.definition.identifier;
39635  }
39636  get controllerConstructor() {
39637    return this.definition.controllerConstructor;
39638  }
39639  get contexts() {
39640    return Array.from(this.connectedContexts);
39641  }
39642  connectContextForScope(scope) {
39643    const context = this.fetchContextForScope(scope);
39644    this.connectedContexts.add(context);
39645    context.connect();
39646  }
39647  disconnectContextForScope(scope) {
39648    const context = this.contextsByScope.get(scope);
39649    if (context) {
39650      this.connectedContexts.delete(context);
39651      context.disconnect();
39652    }
39653  }
39654  fetchContextForScope(scope) {
39655    let context = this.contextsByScope.get(scope);
39656    if (!context) {
39657      context = new Context(this, scope);
39658      this.contextsByScope.set(scope, context);
39659    }
39660    return context;
39661  }
39662};
39663var ClassMap = class {
39664  constructor(scope) {
39665    this.scope = scope;
39666  }
39667  has(name) {
39668    return this.data.has(this.getDataKey(name));
39669  }
39670  get(name) {
39671    return this.getAll(name)[0];
39672  }
39673  getAll(name) {
39674    const tokenString = this.data.get(this.getDataKey(name)) || "";
39675    return tokenize(tokenString);
39676  }
39677  getAttributeName(name) {
39678    return this.data.getAttributeNameForKey(this.getDataKey(name));
39679  }
39680  getDataKey(name) {
39681    return `${name}-class`;
39682  }
39683  get data() {
39684    return this.scope.data;
39685  }
39686};
39687var DataMap = class {
39688  constructor(scope) {
39689    this.scope = scope;
39690  }
39691  get element() {
39692    return this.scope.element;
39693  }
39694  get identifier() {
39695    return this.scope.identifier;
39696  }
39697  get(key) {
39698    const name = this.getAttributeNameForKey(key);
39699    return this.element.getAttribute(name);
39700  }
39701  set(key, value) {
39702    const name = this.getAttributeNameForKey(key);
39703    this.element.setAttribute(name, value);
39704    return this.get(key);
39705  }
39706  has(key) {
39707    const name = this.getAttributeNameForKey(key);
39708    return this.element.hasAttribute(name);
39709  }
39710  delete(key) {
39711    if (this.has(key)) {
39712      const name = this.getAttributeNameForKey(key);
39713      this.element.removeAttribute(name);
39714      return true;
39715    } else {
39716      return false;
39717    }
39718  }
39719  getAttributeNameForKey(key) {
39720    return `data-${this.identifier}-${dasherize(key)}`;
39721  }
39722};
39723var Guide = class {
39724  constructor(logger2) {
39725    this.warnedKeysByObject = /* @__PURE__ */ new WeakMap();
39726    this.logger = logger2;
39727  }
39728  warn(object, key, message) {
39729    let warnedKeys = this.warnedKeysByObject.get(object);
39730    if (!warnedKeys) {
39731      warnedKeys = /* @__PURE__ */ new Set();
39732      this.warnedKeysByObject.set(object, warnedKeys);
39733    }
39734    if (!warnedKeys.has(key)) {
39735      warnedKeys.add(key);
39736      this.logger.warn(message, object);
39737    }
39738  }
39739};
39740function attributeValueContainsToken(attributeName, token) {
39741  return `[${attributeName}~="${token}"]`;
39742}
39743var TargetSet = class {
39744  constructor(scope) {
39745    this.scope = scope;
39746  }
39747  get element() {
39748    return this.scope.element;
39749  }
39750  get identifier() {
39751    return this.scope.identifier;
39752  }
39753  get schema() {
39754    return this.scope.schema;
39755  }
39756  has(targetName) {
39757    return this.find(targetName) != null;
39758  }
39759  find(...targetNames) {
39760    return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), void 0);
39761  }
39762  findAll(...targetNames) {
39763    return targetNames.reduce((targets, targetName) => [
39764      ...targets,
39765      ...this.findAllTargets(targetName),
39766      ...this.findAllLegacyTargets(targetName)
39767    ], []);
39768  }
39769  findTarget(targetName) {
39770    const selector = this.getSelectorForTargetName(targetName);
39771    return this.scope.findElement(selector);
39772  }
39773  findAllTargets(targetName) {
39774    const selector = this.getSelectorForTargetName(targetName);
39775    return this.scope.findAllElements(selector);
39776  }
39777  getSelectorForTargetName(targetName) {
39778    const attributeName = this.schema.targetAttributeForScope(this.identifier);
39779    return attributeValueContainsToken(attributeName, targetName);
39780  }
39781  findLegacyTarget(targetName) {
39782    const selector = this.getLegacySelectorForTargetName(targetName);
39783    return this.deprecate(this.scope.findElement(selector), targetName);
39784  }
39785  findAllLegacyTargets(targetName) {
39786    const selector = this.getLegacySelectorForTargetName(targetName);
39787    return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));
39788  }
39789  getLegacySelectorForTargetName(targetName) {
39790    const targetDescriptor = `${this.identifier}.${targetName}`;
39791    return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);
39792  }
39793  deprecate(element, targetName) {
39794    if (element) {
39795      const { identifier } = this;
39796      const attributeName = this.schema.targetAttribute;
39797      const revisedAttributeName = this.schema.targetAttributeForScope(identifier);
39798      this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}="${identifier}.${targetName}" with ${revisedAttributeName}="${targetName}". The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);
39799    }
39800    return element;
39801  }
39802  get guide() {
39803    return this.scope.guide;
39804  }
39805};
39806var OutletSet = class {
39807  constructor(scope, controllerElement) {
39808    this.scope = scope;
39809    this.controllerElement = controllerElement;
39810  }
39811  get element() {
39812    return this.scope.element;
39813  }
39814  get identifier() {
39815    return this.scope.identifier;
39816  }
39817  get schema() {
39818    return this.scope.schema;
39819  }
39820  has(outletName) {
39821    return this.find(outletName) != null;
39822  }
39823  find(...outletNames) {
39824    return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), void 0);
39825  }
39826  findAll(...outletNames) {
39827    return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);
39828  }
39829  getSelectorForOutletName(outletName) {
39830    const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);
39831    return this.controllerElement.getAttribute(attributeName);
39832  }
39833  findOutlet(outletName) {
39834    const selector = this.getSelectorForOutletName(outletName);
39835    if (selector)
39836      return this.findElement(selector, outletName);
39837  }
39838  findAllOutlets(outletName) {
39839    const selector = this.getSelectorForOutletName(outletName);
39840    return selector ? this.findAllElements(selector, outletName) : [];
39841  }
39842  findElement(selector, outletName) {
39843    const elements = this.scope.queryElements(selector);
39844    return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];
39845  }
39846  findAllElements(selector, outletName) {
39847    const elements = this.scope.queryElements(selector);
39848    return elements.filter((element) => this.matchesElement(element, selector, outletName));
39849  }
39850  matchesElement(element, selector, outletName) {
39851    const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || "";
39852    return element.matches(selector) && controllerAttribute.split(" ").includes(outletName);
39853  }
39854};
39855var Scope = class _Scope {
39856  constructor(schema, element, identifier, logger2) {
39857    this.targets = new TargetSet(this);
39858    this.classes = new ClassMap(this);
39859    this.data = new DataMap(this);
39860    this.containsElement = (element2) => {
39861      return element2.closest(this.controllerSelector) === this.element;
39862    };
39863    this.schema = schema;
39864    this.element = element;
39865    this.identifier = identifier;
39866    this.guide = new Guide(logger2);
39867    this.outlets = new OutletSet(this.documentScope, element);
39868  }
39869  findElement(selector) {
39870    return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);
39871  }
39872  findAllElements(selector) {
39873    return [
39874      ...this.element.matches(selector) ? [this.element] : [],
39875      ...this.queryElements(selector).filter(this.containsElement)
39876    ];
39877  }
39878  queryElements(selector) {
39879    return Array.from(this.element.querySelectorAll(selector));
39880  }
39881  get controllerSelector() {
39882    return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);
39883  }
39884  get isDocumentScope() {
39885    return this.element === document.documentElement;
39886  }
39887  get documentScope() {
39888    return this.isDocumentScope ? this : new _Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);
39889  }
39890};
39891var ScopeObserver = class {
39892  constructor(element, schema, delegate) {
39893    this.element = element;
39894    this.schema = schema;
39895    this.delegate = delegate;
39896    this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);
39897    this.scopesByIdentifierByElement = /* @__PURE__ */ new WeakMap();
39898    this.scopeReferenceCounts = /* @__PURE__ */ new WeakMap();
39899  }
39900  start() {
39901    this.valueListObserver.start();
39902  }
39903  stop() {
39904    this.valueListObserver.stop();
39905  }
39906  get controllerAttribute() {
39907    return this.schema.controllerAttribute;
39908  }
39909  parseValueForToken(token) {
39910    const { element, content: identifier } = token;
39911    return this.parseValueForElementAndIdentifier(element, identifier);
39912  }
39913  parseValueForElementAndIdentifier(element, identifier) {
39914    const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);
39915    let scope = scopesByIdentifier.get(identifier);
39916    if (!scope) {
39917      scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);
39918      scopesByIdentifier.set(identifier, scope);
39919    }
39920    return scope;
39921  }
39922  elementMatchedValue(element, value) {
39923    const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;
39924    this.scopeReferenceCounts.set(value, referenceCount);
39925    if (referenceCount == 1) {
39926      this.delegate.scopeConnected(value);
39927    }
39928  }
39929  elementUnmatchedValue(element, value) {
39930    const referenceCount = this.scopeReferenceCounts.get(value);
39931    if (referenceCount) {
39932      this.scopeReferenceCounts.set(value, referenceCount - 1);
39933      if (referenceCount == 1) {
39934        this.delegate.scopeDisconnected(value);
39935      }
39936    }
39937  }
39938  fetchScopesByIdentifierForElement(element) {
39939    let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);
39940    if (!scopesByIdentifier) {
39941      scopesByIdentifier = /* @__PURE__ */ new Map();
39942      this.scopesByIdentifierByElement.set(element, scopesByIdentifier);
39943    }
39944    return scopesByIdentifier;
39945  }
39946};
39947var Router = class {
39948  constructor(application2) {
39949    this.application = application2;
39950    this.scopeObserver = new ScopeObserver(this.element, this.schema, this);
39951    this.scopesByIdentifier = new Multimap();
39952    this.modulesByIdentifier = /* @__PURE__ */ new Map();
39953  }
39954  get element() {
39955    return this.application.element;
39956  }
39957  get schema() {
39958    return this.application.schema;
39959  }
39960  get logger() {
39961    return this.application.logger;
39962  }
39963  get controllerAttribute() {
39964    return this.schema.controllerAttribute;
39965  }
39966  get modules() {
39967    return Array.from(this.modulesByIdentifier.values());
39968  }
39969  get contexts() {
39970    return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);
39971  }
39972  start() {
39973    this.scopeObserver.start();
39974  }
39975  stop() {
39976    this.scopeObserver.stop();
39977  }
39978  loadDefinition(definition) {
39979    this.unloadIdentifier(definition.identifier);
39980    const module = new Module(this.application, definition);
39981    this.connectModule(module);
39982    const afterLoad = definition.controllerConstructor.afterLoad;
39983    if (afterLoad) {
39984      afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);
39985    }
39986  }
39987  unloadIdentifier(identifier) {
39988    const module = this.modulesByIdentifier.get(identifier);
39989    if (module) {
39990      this.disconnectModule(module);
39991    }
39992  }
39993  getContextForElementAndIdentifier(element, identifier) {
39994    const module = this.modulesByIdentifier.get(identifier);
39995    if (module) {
39996      return module.contexts.find((context) => context.element == element);
39997    }
39998  }
39999  proposeToConnectScopeForElementAndIdentifier(element, identifier) {
40000    const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);
40001    if (scope) {
40002      this.scopeObserver.elementMatchedValue(scope.element, scope);
40003    } else {
40004      console.error(`Couldn't find or create scope for identifier: "${identifier}" and element:`, element);
40005    }
40006  }
40007  handleError(error2, message, detail) {
40008    this.application.handleError(error2, message, detail);
40009  }
40010  createScopeForElementAndIdentifier(element, identifier) {
40011    return new Scope(this.schema, element, identifier, this.logger);
40012  }
40013  scopeConnected(scope) {
40014    this.scopesByIdentifier.add(scope.identifier, scope);
40015    const module = this.modulesByIdentifier.get(scope.identifier);
40016    if (module) {
40017      module.connectContextForScope(scope);
40018    }
40019  }
40020  scopeDisconnected(scope) {
40021    this.scopesByIdentifier.delete(scope.identifier, scope);
40022    const module = this.modulesByIdentifier.get(scope.identifier);
40023    if (module) {
40024      module.disconnectContextForScope(scope);
40025    }
40026  }
40027  connectModule(module) {
40028    this.modulesByIdentifier.set(module.identifier, module);
40029    const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);
40030    scopes.forEach((scope) => module.connectContextForScope(scope));
40031  }
40032  disconnectModule(module) {
40033    this.modulesByIdentifier.delete(module.identifier);
40034    const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);
40035    scopes.forEach((scope) => module.disconnectContextForScope(scope));
40036  }
40037};
40038var defaultSchema = {
40039  controllerAttribute: "data-controller",
40040  actionAttribute: "data-action",
40041  targetAttribute: "data-target",
40042  targetAttributeForScope: (identifier) => `data-${identifier}-target`,
40043  outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,
40044  keyMappings: Object.assign(Object.assign({ enter: "Enter", tab: "Tab", esc: "Escape", space: " ", up: "ArrowUp", down: "ArrowDown", left: "ArrowLeft", right: "ArrowRight", home: "Home", end: "End", page_up: "PageUp", page_down: "PageDown" }, objectFromEntries("abcdefghijklmnopqrstuvwxyz".split("").map((c3) => [c3, c3]))), objectFromEntries("0123456789".split("").map((n3) => [n3, n3])))
40045};
40046function objectFromEntries(array) {
40047  return array.reduce((memo, [k3, v3]) => Object.assign(Object.assign({}, memo), { [k3]: v3 }), {});
40048}
40049var Application = class {
40050  constructor(element = document.documentElement, schema = defaultSchema) {
40051    this.logger = console;
40052    this.debug = false;
40053    this.logDebugActivity = (identifier, functionName, detail = {}) => {
40054      if (this.debug) {
40055        this.logFormattedMessage(identifier, functionName, detail);
40056      }
40057    };
40058    this.element = element;
40059    this.schema = schema;
40060    this.dispatcher = new Dispatcher(this);
40061    this.router = new Router(this);
40062    this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);
40063  }
40064  static start(element, schema) {
40065    const application2 = new this(element, schema);
40066    application2.start();
40067    return application2;
40068  }
40069  async start() {
40070    await domReady();
40071    this.logDebugActivity("application", "starting");
40072    this.dispatcher.start();
40073    this.router.start();
40074    this.logDebugActivity("application", "start");
40075  }
40076  stop() {
40077    this.logDebugActivity("application", "stopping");
40078    this.dispatcher.stop();
40079    this.router.stop();
40080    this.logDebugActivity("application", "stop");
40081  }
40082  register(identifier, controllerConstructor) {
40083    this.load({ identifier, controllerConstructor });
40084  }
40085  registerActionOption(name, filter) {
40086    this.actionDescriptorFilters[name] = filter;
40087  }
40088  load(head, ...rest) {
40089    const definitions = Array.isArray(head) ? head : [head, ...rest];
40090    definitions.forEach((definition) => {
40091      if (definition.controllerConstructor.shouldLoad) {
40092        this.router.loadDefinition(definition);
40093      }
40094    });
40095  }
40096  unload(head, ...rest) {
40097    const identifiers = Array.isArray(head) ? head : [head, ...rest];
40098    identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));
40099  }
40100  get controllers() {
40101    return this.router.contexts.map((context) => context.controller);
40102  }
40103  getControllerForElementAndIdentifier(element, identifier) {
40104    const context = this.router.getContextForElementAndIdentifier(element, identifier);
40105    return context ? context.controller : null;
40106  }
40107  handleError(error2, message, detail) {
40108    var _a3;
40109    this.logger.error(`%s
40110
40111%o
40112
40113%o`, message, error2, detail);
40114    (_a3 = window.onerror) === null || _a3 === void 0 ? void 0 : _a3.call(window, message, "", 0, 0, error2);
40115  }
40116  logFormattedMessage(identifier, functionName, detail = {}) {
40117    detail = Object.assign({ application: this }, detail);
40118    this.logger.groupCollapsed(`${identifier} #${functionName}`);
40119    this.logger.log("details:", Object.assign({}, detail));
40120    this.logger.groupEnd();
40121  }
40122};
40123function domReady() {
40124  return new Promise((resolve) => {
40125    if (document.readyState == "loading") {
40126      document.addEventListener("DOMContentLoaded", () => resolve());
40127    } else {
40128      resolve();
40129    }
40130  });
40131}
40132function ClassPropertiesBlessing(constructor) {
40133  const classes = readInheritableStaticArrayValues(constructor, "classes");
40134  return classes.reduce((properties, classDefinition) => {
40135    return Object.assign(properties, propertiesForClassDefinition(classDefinition));
40136  }, {});
40137}
40138function propertiesForClassDefinition(key) {
40139  return {
40140    [`${key}Class`]: {
40141      get() {
40142        const { classes } = this;
40143        if (classes.has(key)) {
40144          return classes.get(key);
40145        } else {
40146          const attribute = classes.getAttributeName(key);
40147          throw new Error(`Missing attribute "${attribute}"`);
40148        }
40149      }
40150    },
40151    [`${key}Classes`]: {
40152      get() {
40153        return this.classes.getAll(key);
40154      }
40155    },
40156    [`has${capitalize(key)}Class`]: {
40157      get() {
40158        return this.classes.has(key);
40159      }
40160    }
40161  };
40162}
40163function OutletPropertiesBlessing(constructor) {
40164  const outlets = readInheritableStaticArrayValues(constructor, "outlets");
40165  return outlets.reduce((properties, outletDefinition) => {
40166    return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));
40167  }, {});
40168}
40169function getOutletController(controller, element, identifier) {
40170  return controller.application.getControllerForElementAndIdentifier(element, identifier);
40171}
40172function getControllerAndEnsureConnectedScope(controller, element, outletName) {
40173  let outletController = getOutletController(controller, element, outletName);
40174  if (outletController)
40175    return outletController;
40176  controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);
40177  outletController = getOutletController(controller, element, outletName);
40178  if (outletController)
40179    return outletController;
40180}
40181function propertiesForOutletDefinition(name) {
40182  const camelizedName = namespaceCamelize(name);
40183  return {
40184    [`${camelizedName}Outlet`]: {
40185      get() {
40186        const outletElement = this.outlets.find(name);
40187        const selector = this.outlets.getSelectorForOutletName(name);
40188        if (outletElement) {
40189          const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);
40190          if (outletController)
40191            return outletController;
40192          throw new Error(`The provided outlet element is missing an outlet controller "${name}" instance for host controller "${this.identifier}"`);
40193        }
40194        throw new Error(`Missing outlet element "${name}" for host controller "${this.identifier}". Stimulus couldn't find a matching outlet element using selector "${selector}".`);
40195      }
40196    },
40197    [`${camelizedName}Outlets`]: {
40198      get() {
40199        const outlets = this.outlets.findAll(name);
40200        if (outlets.length > 0) {
40201          return outlets.map((outletElement) => {
40202            const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);
40203            if (outletController)
40204              return outletController;
40205            console.warn(`The provided outlet element is missing an outlet controller "${name}" instance for host controller "${this.identifier}"`, outletElement);
40206          }).filter((controller) => controller);
40207        }
40208        return [];
40209      }
40210    },
40211    [`${camelizedName}OutletElement`]: {
40212      get() {
40213        const outletElement = this.outlets.find(name);
40214        const selector = this.outlets.getSelectorForOutletName(name);
40215        if (outletElement) {
40216          return outletElement;
40217        } else {
40218          throw new Error(`Missing outlet element "${name}" for host controller "${this.identifier}". Stimulus couldn't find a matching outlet element using selector "${selector}".`);
40219        }
40220      }
40221    },
40222    [`${camelizedName}OutletElements`]: {
40223      get() {
40224        return this.outlets.findAll(name);
40225      }
40226    },
40227    [`has${capitalize(camelizedName)}Outlet`]: {
40228      get() {
40229        return this.outlets.has(name);
40230      }
40231    }
40232  };
40233}
40234function TargetPropertiesBlessing(constructor) {
40235  const targets = readInheritableStaticArrayValues(constructor, "targets");
40236  return targets.reduce((properties, targetDefinition) => {
40237    return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));
40238  }, {});
40239}
40240function propertiesForTargetDefinition(name) {
40241  return {
40242    [`${name}Target`]: {
40243      get() {
40244        const target = this.targets.find(name);
40245        if (target) {
40246          return target;
40247        } else {
40248          throw new Error(`Missing target element "${name}" for "${this.identifier}" controller`);
40249        }
40250      }
40251    },
40252    [`${name}Targets`]: {
40253      get() {
40254        return this.targets.findAll(name);
40255      }
40256    },
40257    [`has${capitalize(name)}Target`]: {
40258      get() {
40259        return this.targets.has(name);
40260      }
40261    }
40262  };
40263}
40264function ValuePropertiesBlessing(constructor) {
40265  const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, "values");
40266  const propertyDescriptorMap = {
40267    valueDescriptorMap: {
40268      get() {
40269        return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {
40270          const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);
40271          const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);
40272          return Object.assign(result, { [attributeName]: valueDescriptor });
40273        }, {});
40274      }
40275    }
40276  };
40277  return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {
40278    return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));
40279  }, propertyDescriptorMap);
40280}
40281function propertiesForValueDefinitionPair(valueDefinitionPair, controller) {
40282  const definition = parseValueDefinitionPair(valueDefinitionPair, controller);
40283  const { key, name, reader: read, writer: write } = definition;
40284  return {
40285    [name]: {
40286      get() {
40287        const value = this.data.get(key);
40288        if (value !== null) {
40289          return read(value);
40290        } else {
40291          return definition.defaultValue;
40292        }
40293      },
40294      set(value) {
40295        if (value === void 0) {
40296          this.data.delete(key);
40297        } else {
40298          this.data.set(key, write(value));
40299        }
40300      }
40301    },
40302    [`has${capitalize(name)}`]: {
40303      get() {
40304        return this.data.has(key) || definition.hasCustomDefaultValue;
40305      }
40306    }
40307  };
40308}
40309function parseValueDefinitionPair([token, typeDefinition], controller) {
40310  return valueDescriptorForTokenAndTypeDefinition({
40311    controller,
40312    token,
40313    typeDefinition
40314  });
40315}
40316function parseValueTypeConstant(constant) {
40317  switch (constant) {
40318    case Array:
40319      return "array";
40320    case Boolean:
40321      return "boolean";
40322    case Number:
40323      return "number";
40324    case Object:
40325      return "object";
40326    case String:
40327      return "string";
40328  }
40329}
40330function parseValueTypeDefault(defaultValue) {
40331  switch (typeof defaultValue) {
40332    case "boolean":
40333      return "boolean";
40334    case "number":
40335      return "number";
40336    case "string":
40337      return "string";
40338  }
40339  if (Array.isArray(defaultValue))
40340    return "array";
40341  if (Object.prototype.toString.call(defaultValue) === "[object Object]")
40342    return "object";
40343}
40344function parseValueTypeObject(payload) {
40345  const { controller, token, typeObject } = payload;
40346  const hasType = isSomething(typeObject.type);
40347  const hasDefault = isSomething(typeObject.default);
40348  const fullObject = hasType && hasDefault;
40349  const onlyType = hasType && !hasDefault;
40350  const onlyDefault = !hasType && hasDefault;
40351  const typeFromObject = parseValueTypeConstant(typeObject.type);
40352  const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);
40353  if (onlyType)
40354    return typeFromObject;
40355  if (onlyDefault)
40356    return typeFromDefaultValue;
40357  if (typeFromObject !== typeFromDefaultValue) {
40358    const propertyPath = controller ? `${controller}.${token}` : token;
40359    throw new Error(`The specified default value for the Stimulus Value "${propertyPath}" must match the defined type "${typeFromObject}". The provided default value of "${typeObject.default}" is of type "${typeFromDefaultValue}".`);
40360  }
40361  if (fullObject)
40362    return typeFromObject;
40363}
40364function parseValueTypeDefinition(payload) {
40365  const { controller, token, typeDefinition } = payload;
40366  const typeObject = { controller, token, typeObject: typeDefinition };
40367  const typeFromObject = parseValueTypeObject(typeObject);
40368  const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);
40369  const typeFromConstant = parseValueTypeConstant(typeDefinition);
40370  const type = typeFromObject || typeFromDefaultValue || typeFromConstant;
40371  if (type)
40372    return type;
40373  const propertyPath = controller ? `${controller}.${typeDefinition}` : token;
40374  throw new Error(`Unknown value type "${propertyPath}" for "${token}" value`);
40375}
40376function defaultValueForDefinition(typeDefinition) {
40377  const constant = parseValueTypeConstant(typeDefinition);
40378  if (constant)
40379    return defaultValuesByType[constant];
40380  const hasDefault = hasProperty(typeDefinition, "default");
40381  const hasType = hasProperty(typeDefinition, "type");
40382  const typeObject = typeDefinition;
40383  if (hasDefault)
40384    return typeObject.default;
40385  if (hasType) {
40386    const { type } = typeObject;
40387    const constantFromType = parseValueTypeConstant(type);
40388    if (constantFromType)
40389      return defaultValuesByType[constantFromType];
40390  }
40391  return typeDefinition;
40392}
40393function valueDescriptorForTokenAndTypeDefinition(payload) {
40394  const { token, typeDefinition } = payload;
40395  const key = `${dasherize(token)}-value`;
40396  const type = parseValueTypeDefinition(payload);
40397  return {
40398    type,
40399    key,
40400    name: camelize(key),
40401    get defaultValue() {
40402      return defaultValueForDefinition(typeDefinition);
40403    },
40404    get hasCustomDefaultValue() {
40405      return parseValueTypeDefault(typeDefinition) !== void 0;
40406    },
40407    reader: readers[type],
40408    writer: writers[type] || writers.default
40409  };
40410}
40411var defaultValuesByType = {
40412  get array() {
40413    return [];
40414  },
40415  boolean: false,
40416  number: 0,
40417  get object() {
40418    return {};
40419  },
40420  string: ""
40421};
40422var readers = {
40423  array(value) {
40424    const array = JSON.parse(value);
40425    if (!Array.isArray(array)) {
40426      throw new TypeError(`expected value of type "array" but instead got value "${value}" of type "${parseValueTypeDefault(array)}"`);
40427    }
40428    return array;
40429  },
40430  boolean(value) {
40431    return !(value == "0" || String(value).toLowerCase() == "false");
40432  },
40433  number(value) {
40434    return Number(value.replace(/_/g, ""));
40435  },
40436  object(value) {
40437    const object = JSON.parse(value);
40438    if (object === null || typeof object != "object" || Array.isArray(object)) {
40439      throw new TypeError(`expected value of type "object" but instead got value "${value}" of type "${parseValueTypeDefault(object)}"`);
40440    }
40441    return object;
40442  },
40443  string(value) {
40444    return value;
40445  }
40446};
40447var writers = {
40448  default: writeString,
40449  array: writeJSON,
40450  object: writeJSON
40451};
40452function writeJSON(value) {
40453  return JSON.stringify(value);
40454}
40455function writeString(value) {
40456  return `${value}`;
40457}
40458var Controller = class {
40459  constructor(context) {
40460    this.context = context;
40461  }
40462  static get shouldLoad() {
40463    return true;
40464  }
40465  static afterLoad(_identifier, _application) {
40466    return;
40467  }
40468  get application() {
40469    return this.context.application;
40470  }
40471  get scope() {
40472    return this.context.scope;
40473  }
40474  get element() {
40475    return this.scope.element;
40476  }
40477  get identifier() {
40478    return this.scope.identifier;
40479  }
40480  get targets() {
40481    return this.scope.targets;
40482  }
40483  get outlets() {
40484    return this.scope.outlets;
40485  }
40486  get classes() {
40487    return this.scope.classes;
40488  }
40489  get data() {
40490    return this.scope.data;
40491  }
40492  initialize() {
40493  }
40494  connect() {
40495  }
40496  disconnect() {
40497  }
40498  dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true } = {}) {
40499    const type = prefix ? `${prefix}:${eventName}` : eventName;
40500    const event = new CustomEvent(type, { detail, bubbles, cancelable });
40501    target.dispatchEvent(event);
40502    return event;
40503  }
40504};
40505Controller.blessings = [
40506  ClassPropertiesBlessing,
40507  TargetPropertiesBlessing,
40508  ValuePropertiesBlessing,
40509  OutletPropertiesBlessing
40510];
40511Controller.targets = [];
40512Controller.outlets = [];
40513Controller.values = {};
40514
40515// app/javascript/controllers/application.js
40516var application = Application.start();
40517application.debug = false;
40518window.Stimulus = application;
40519
40520// app/javascript/controllers/hello_controller.js
40521var hello_controller_default = class extends Controller {
40522  connect() {
40523    this.element.textContent = "Hello World!";
40524  }
40525};
40526
40527// app/javascript/controllers/index.js
40528application.register("hello", hello_controller_default);
40529
40530// app/javascript/yano/boot.jsx
40531var import_react7 = __toESM(require_react());
40532var import_client = __toESM(require_client());
40533
40534// app/javascript/yano/App.jsx
40535var import_react6 = __toESM(require_react());
40536
40537// app/javascript/yano/api.js
40538var JSON_HEADERS = {
40539  Accept: "application/json",
40540  "Content-Type": "application/json"
40541};
40542async function parseResponse(response) {
40543  if (response.status === 204) {
40544    return null;
40545  }
40546  const payload = await response.json().catch(() => ({}));
40547  if (!response.ok) {
40548    const error2 = new Error(payload.error || `Request failed with status ${response.status}`);
40549    if (payload && typeof payload.code === "string") {
40550      error2.code = payload.code;
40551    }
40552    error2.status = response.status;
40553    throw error2;
40554  }
40555  return payload;
40556}
40557async function request(path, { method = "GET", body, token } = {}) {
40558  const response = await fetch(path, {
40559    method,
40560    headers: {
40561      ...JSON_HEADERS,
40562      ...token ? { Authorization: `Bearer ${token}` } : {}
40563    },
40564    body: body ? JSON.stringify(body) : void 0
40565  });
40566  return parseResponse(response);
40567}
40568async function multipartRequest(path, { method = "POST", body, token } = {}) {
40569  const response = await fetch(path, {
40570    method,
40571    headers: {
40572      Accept: "application/json",
40573      ...token ? { Authorization: `Bearer ${token}` } : {}
40574    },
40575    body
40576  });
40577  return parseResponse(response);
40578}
40579var api = {
40580  createSession(session2) {
40581    return request("/api/session", {
40582      method: "POST",
40583      body: { session: session2 }
40584    });
40585  },
40586  getMe(token) {
40587    return request("/api/me", { token });
40588  },
40589  updateMe(token, me3) {
40590    return request("/api/me", {
40591      method: "PATCH",
40592      token,
40593      body: { me: me3 }
40594    });
40595  },
40596  uploadAvatar(token, file, crop, source) {
40597    const formData = new FormData();
40598    formData.append("avatar", file);
40599    formData.append("crop[x]", String(crop.x));
40600    formData.append("crop[y]", String(crop.y));
40601    formData.append("crop[width]", String(crop.width));
40602    formData.append("crop[height]", String(crop.height));
40603    formData.append("source[width]", String(source.width));
40604    formData.append("source[height]", String(source.height));
40605    return multipartRequest("/api/me/avatar", {
40606      method: "POST",
40607      token,
40608      body: formData
40609    });
40610  },
40611  updateAvatarCrop(token, crop) {
40612    return request("/api/me/avatar", {
40613      method: "PATCH",
40614      token,
40615      body: { crop }
40616    });
40617  },
40618  deleteAvatar(token) {
40619    return request("/api/me/avatar", {
40620      method: "DELETE",
40621      token
40622    });
40623  },
40624  joinQueue(token) {
40625    return request("/api/queue", {
40626      method: "POST",
40627      token
40628    });
40629  },
40630  leaveQueue(token) {
40631    return request("/api/queue", {
40632      method: "DELETE",
40633      token
40634    });
40635  },
40636  currentCallSession(token) {
40637    return request("/api/call_sessions/current", { token });
40638  },
40639  getRoom(code, token) {
40640    return request(`/api/rooms/${encodeURIComponent(code)}`, { token });
40641  },
40642  getRoomMessages(token, code, beforeId) {
40643    const search = beforeId ? `?before_id=${encodeURIComponent(beforeId)}` : "";
40644    return request(`/api/rooms/${encodeURIComponent(code)}/messages${search}`, { token });
40645  },
40646  getDirectMessages(token, code, userId, beforeId) {
40647    const search = beforeId ? `?before_id=${encodeURIComponent(beforeId)}` : "";
40648    return request(`/api/rooms/${encodeURIComponent(code)}/direct_messages/${encodeURIComponent(userId)}${search}`, { token });
40649  },
40650  sendDirectMessage(token, code, userId, body) {
40651    return request(`/api/rooms/${encodeURIComponent(code)}/direct_messages/${encodeURIComponent(userId)}`, {
40652      method: "POST",
40653      token,
40654      body: { direct_message: { body } }
40655    });
40656  },
40657  createRoom(token, room = {}) {
40658    return request("/api/rooms", {
40659      method: "POST",
40660      token,
40661      body: { room }
40662    });
40663  },
40664  joinRoom(token, code) {
40665    return request(`/api/rooms/${encodeURIComponent(code)}/join`, {
40666      method: "POST",
40667      token
40668    });
40669  },
40670  leaveRoom(token, code) {
40671    return request(`/api/rooms/${encodeURIComponent(code)}/leave`, {
40672      method: "POST",
40673      token
40674    });
40675  },
40676  getCallSession(token, id) {
40677    return request(`/api/call_sessions/${id}`, { token });
40678  },
40679  nextCallSession(token, id, requeue = true) {
40680    return request(`/api/call_sessions/${id}/next`, {
40681      method: "POST",
40682      token,
40683      body: { requeue }
40684    });
40685  },
40686  createReport(token, callSessionId, report) {
40687    return request(`/api/call_sessions/${callSessionId}/reports`, {
40688      method: "POST",
40689      token,
40690      body: { report }
40691    });
40692  },
40693  lockRoom(token, code) {
40694    return request(`/api/rooms/${encodeURIComponent(code)}/lock`, {
40695      method: "POST",
40696      token
40697    });
40698  },
40699  unlockRoom(token, code) {
40700    return request(`/api/rooms/${encodeURIComponent(code)}/unlock`, {
40701      method: "POST",
40702      token
40703    });
40704  },
40705  kickMember(token, code, userId) {
40706    return request(`/api/rooms/${encodeURIComponent(code)}/kick`, {
40707      method: "POST",
40708      token,
40709      body: { user_id: userId }
40710    });
40711  },
40712  muteMember(token, code, userId, muted = true) {
40713    return request(`/api/rooms/${encodeURIComponent(code)}/mute`, {
40714      method: "POST",
40715      token,
40716      body: { user_id: userId, muted }
40717    });
40718  },
40719  approveMember(token, code, userId) {
40720    return request(`/api/rooms/${encodeURIComponent(code)}/approve`, {
40721      method: "POST",
40722      token,
40723      body: { user_id: userId }
40724    });
40725  },
40726  denyMember(token, code, userId) {
40727    return request(`/api/rooms/${encodeURIComponent(code)}/deny`, {
40728      method: "POST",
40729      token,
40730      body: { user_id: userId }
40731    });
40732  }
40733};
40734
vendor: 14,734 bytes, lines 40735-41221
40735// node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js
40736var adapters = {
40737  logger: typeof console !== "undefined" ? console : void 0,
40738  WebSocket: typeof WebSocket !== "undefined" ? WebSocket : void 0
40739};
40740var logger = {
40741  log(...messages) {
40742    if (this.enabled) {
40743      messages.push(Date.now());
40744      adapters.logger.log("[ActionCable]", ...messages);
40745    }
40746  }
40747};
40748var now2 = () => (/* @__PURE__ */ new Date()).getTime();
40749var secondsSince2 = (time) => (now2() - time) / 1e3;
40750var ConnectionMonitor2 = class {
40751  constructor(connection) {
40752    this.visibilityDidChange = this.visibilityDidChange.bind(this);
40753    this.connection = connection;
40754    this.reconnectAttempts = 0;
40755  }
40756  start() {
40757    if (!this.isRunning()) {
40758      this.startedAt = now2();
40759      delete this.stoppedAt;
40760      this.startPolling();
40761      addEventListener("visibilitychange", this.visibilityDidChange);
40762      logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`);
40763    }
40764  }
40765  stop() {
40766    if (this.isRunning()) {
40767      this.stoppedAt = now2();
40768      this.stopPolling();
40769      removeEventListener("visibilitychange", this.visibilityDidChange);
40770      logger.log("ConnectionMonitor stopped");
40771    }
40772  }
40773  isRunning() {
40774    return this.startedAt && !this.stoppedAt;
40775  }
40776  recordMessage() {
40777    this.pingedAt = now2();
40778  }
40779  recordConnect() {
40780    this.reconnectAttempts = 0;
40781    delete this.disconnectedAt;
40782    logger.log("ConnectionMonitor recorded connect");
40783  }
40784  recordDisconnect() {
40785    this.disconnectedAt = now2();
40786    logger.log("ConnectionMonitor recorded disconnect");
40787  }
40788  startPolling() {
40789    this.stopPolling();
40790    this.poll();
40791  }
40792  stopPolling() {
40793    clearTimeout(this.pollTimeout);
40794  }
40795  poll() {
40796    this.pollTimeout = setTimeout((() => {
40797      this.reconnectIfStale();
40798      this.poll();
40799    }), this.getPollInterval());
40800  }
40801  getPollInterval() {
40802    const { staleThreshold, reconnectionBackoffRate } = this.constructor;
40803    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));
40804    const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate;
40805    const jitter = jitterMax * Math.random();
40806    return staleThreshold * 1e3 * backoff * (1 + jitter);
40807  }
40808  reconnectIfStale() {
40809    if (this.connectionIsStale()) {
40810      logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince2(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`);
40811      this.reconnectAttempts++;
40812      if (this.disconnectedRecently()) {
40813        logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince2(this.disconnectedAt)} s`);
40814      } else {
40815        logger.log("ConnectionMonitor reopening");
40816        this.connection.reopen();
40817      }
40818    }
40819  }
40820  get refreshedAt() {
40821    return this.pingedAt ? this.pingedAt : this.startedAt;
40822  }
40823  connectionIsStale() {
40824    return secondsSince2(this.refreshedAt) > this.constructor.staleThreshold;
40825  }
40826  disconnectedRecently() {
40827    return this.disconnectedAt && secondsSince2(this.disconnectedAt) < this.constructor.staleThreshold;
40828  }
40829  visibilityDidChange() {
40830    if (document.visibilityState === "visible") {
40831      setTimeout((() => {
40832        if (this.connectionIsStale() || !this.connection.isOpen()) {
40833          logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`);
40834          this.connection.reopen();
40835        }
40836      }), 200);
40837    }
40838  }
40839};
40840ConnectionMonitor2.staleThreshold = 6;
40841ConnectionMonitor2.reconnectionBackoffRate = 0.15;
40842var INTERNAL = {
40843  message_types: {
40844    welcome: "welcome",
40845    disconnect: "disconnect",
40846    ping: "ping",
40847    confirmation: "confirm_subscription",
40848    rejection: "reject_subscription"
40849  },
40850  disconnect_reasons: {
40851    unauthorized: "unauthorized",
40852    invalid_request: "invalid_request",
40853    server_restart: "server_restart",
40854    remote: "remote"
40855  },
40856  default_mount_path: "/cable",
40857  protocols: ["actioncable-v1-json", "actioncable-unsupported"]
40858};
40859var { message_types: message_types2, protocols: protocols2 } = INTERNAL;
40860var supportedProtocols2 = protocols2.slice(0, protocols2.length - 1);
40861var indexOf2 = [].indexOf;
40862var Connection2 = class {
40863  constructor(consumer2) {
40864    this.open = this.open.bind(this);
40865    this.consumer = consumer2;
40866    this.subscriptions = this.consumer.subscriptions;
40867    this.monitor = new ConnectionMonitor2(this);
40868    this.disconnected = true;
40869  }
40870  send(data) {
40871    if (this.isOpen()) {
40872      this.webSocket.send(JSON.stringify(data));
40873      return true;
40874    } else {
40875      return false;
40876    }
40877  }
40878  open() {
40879    if (this.isActive()) {
40880      logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`);
40881      return false;
40882    } else {
40883      const socketProtocols = [...protocols2, ...this.consumer.subprotocols || []];
40884      logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${socketProtocols}`);
40885      if (this.webSocket) {
40886        this.uninstallEventHandlers();
40887      }
40888      this.webSocket = new adapters.WebSocket(this.consumer.url, socketProtocols);
40889      this.installEventHandlers();
40890      this.monitor.start();
40891      return true;
40892    }
40893  }
40894  close({ allowReconnect } = {
40895    allowReconnect: true
40896  }) {
40897    if (!allowReconnect) {
40898      this.monitor.stop();
40899    }
40900    if (this.isOpen()) {
40901      return this.webSocket.close();
40902    }
40903  }
40904  reopen() {
40905    logger.log(`Reopening WebSocket, current state is ${this.getState()}`);
40906    if (this.isActive()) {
40907      try {
40908        return this.close();
40909      } catch (error2) {
40910        logger.log("Failed to reopen WebSocket", error2);
40911      } finally {
40912        logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`);
40913        setTimeout(this.open, this.constructor.reopenDelay);
40914      }
40915    } else {
40916      return this.open();
40917    }
40918  }
40919  getProtocol() {
40920    if (this.webSocket) {
40921      return this.webSocket.protocol;
40922    }
40923  }
40924  isOpen() {
40925    return this.isState("open");
40926  }
40927  isActive() {
40928    return this.isState("open", "connecting");
40929  }
40930  triedToReconnect() {
40931    return this.monitor.reconnectAttempts > 0;
40932  }
40933  isProtocolSupported() {
40934    return indexOf2.call(supportedProtocols2, this.getProtocol()) >= 0;
40935  }
40936  isState(...states) {
40937    return indexOf2.call(states, this.getState()) >= 0;
40938  }
40939  getState() {
40940    if (this.webSocket) {
40941      for (let state in adapters.WebSocket) {
40942        if (adapters.WebSocket[state] === this.webSocket.readyState) {
40943          return state.toLowerCase();
40944        }
40945      }
40946    }
40947    return null;
40948  }
40949  installEventHandlers() {
40950    for (let eventName in this.events) {
40951      const handler = this.events[eventName].bind(this);
40952      this.webSocket[`on${eventName}`] = handler;
40953    }
40954  }
40955  uninstallEventHandlers() {
40956    for (let eventName in this.events) {
40957      this.webSocket[`on${eventName}`] = function() {
40958      };
40959    }
40960  }
40961};
40962Connection2.reopenDelay = 500;
40963Connection2.prototype.events = {
40964  message(event) {
40965    if (!this.isProtocolSupported()) {
40966      return;
40967    }
40968    const { identifier, message, reason, reconnect, type } = JSON.parse(event.data);
40969    this.monitor.recordMessage();
40970    switch (type) {
40971      case message_types2.welcome:
40972        if (this.triedToReconnect()) {
40973          this.reconnectAttempted = true;
40974        }
40975        this.monitor.recordConnect();
40976        return this.subscriptions.reload();
40977      case message_types2.disconnect:
40978        logger.log(`Disconnecting. Reason: ${reason}`);
40979        return this.close({
40980          allowReconnect: reconnect
40981        });
40982      case message_types2.ping:
40983        return null;
40984      case message_types2.confirmation:
40985        this.subscriptions.confirmSubscription(identifier);
40986        if (this.reconnectAttempted) {
40987          this.reconnectAttempted = false;
40988          return this.subscriptions.notify(identifier, "connected", {
40989            reconnected: true
40990          });
40991        } else {
40992          return this.subscriptions.notify(identifier, "connected", {
40993            reconnected: false
40994          });
40995        }
40996      case message_types2.rejection:
40997        return this.subscriptions.reject(identifier);
40998      default:
40999        return this.subscriptions.notify(identifier, "received", message);
41000    }
41001  },
41002  open() {
41003    logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`);
41004    this.disconnected = false;
41005    if (!this.isProtocolSupported()) {
41006      logger.log("Protocol is unsupported. Stopping monitor and disconnecting.");
41007      return this.close({
41008        allowReconnect: false
41009      });
41010    }
41011  },
41012  close(event) {
41013    logger.log("WebSocket onclose event");
41014    if (this.disconnected) {
41015      return;
41016    }
41017    this.disconnected = true;
41018    this.monitor.recordDisconnect();
41019    return this.subscriptions.notifyAll("disconnected", {
41020      willAttemptReconnect: this.monitor.isRunning()
41021    });
41022  },
41023  error() {
41024    logger.log("WebSocket onerror event");
41025  }
41026};
41027var extend3 = function(object, properties) {
41028  if (properties != null) {
41029    for (let key in properties) {
41030      const value = properties[key];
41031      object[key] = value;
41032    }
41033  }
41034  return object;
41035};
41036var Subscription2 = class {
41037  constructor(consumer2, params = {}, mixin) {
41038    this.consumer = consumer2;
41039    this.identifier = JSON.stringify(params);
41040    extend3(this, mixin);
41041  }
41042  perform(action, data = {}) {
41043    data.action = action;
41044    return this.send(data);
41045  }
41046  send(data) {
41047    return this.consumer.send({
41048      command: "message",
41049      identifier: this.identifier,
41050      data: JSON.stringify(data)
41051    });
41052  }
41053  unsubscribe() {
41054    return this.consumer.subscriptions.remove(this);
41055  }
41056};
41057var SubscriptionGuarantor2 = class {
41058  constructor(subscriptions) {
41059    this.subscriptions = subscriptions;
41060    this.pendingSubscriptions = [];
41061  }
41062  guarantee(subscription) {
41063    if (this.pendingSubscriptions.indexOf(subscription) == -1) {
41064      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`);
41065      this.pendingSubscriptions.push(subscription);
41066    } else {
41067      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`);
41068    }
41069    this.startGuaranteeing();
41070  }
41071  forget(subscription) {
41072    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`);
41073    this.pendingSubscriptions = this.pendingSubscriptions.filter(((s3) => s3 !== subscription));
41074  }
41075  startGuaranteeing() {
41076    this.stopGuaranteeing();
41077    this.retrySubscribing();
41078  }
41079  stopGuaranteeing() {
41080    clearTimeout(this.retryTimeout);
41081  }
41082  retrySubscribing() {
41083    this.retryTimeout = setTimeout((() => {
41084      if (this.subscriptions && typeof this.subscriptions.subscribe === "function") {
41085        this.pendingSubscriptions.map(((subscription) => {
41086          logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`);
41087          this.subscriptions.subscribe(subscription);
41088        }));
41089      }
41090    }), 500);
41091  }
41092};
41093var Subscriptions2 = class {
41094  constructor(consumer2) {
41095    this.consumer = consumer2;
41096    this.guarantor = new SubscriptionGuarantor2(this);
41097    this.subscriptions = [];
41098  }
41099  create(channelName, mixin) {
41100    const channel = channelName;
41101    const params = typeof channel === "object" ? channel : {
41102      channel
41103    };
41104    const subscription = new Subscription2(this.consumer, params, mixin);
41105    return this.add(subscription);
41106  }
41107  add(subscription) {
41108    this.subscriptions.push(subscription);
41109    this.consumer.ensureActiveConnection();
41110    this.notify(subscription, "initialized");
41111    this.subscribe(subscription);
41112    return subscription;
41113  }
41114  remove(subscription) {
41115    this.forget(subscription);
41116    if (!this.findAll(subscription.identifier).length) {
41117      this.sendCommand(subscription, "unsubscribe");
41118    }
41119    return subscription;
41120  }
41121  reject(identifier) {
41122    return this.findAll(identifier).map(((subscription) => {
41123      this.forget(subscription);
41124      this.notify(subscription, "rejected");
41125      return subscription;
41126    }));
41127  }
41128  forget(subscription) {
41129    this.guarantor.forget(subscription);
41130    this.subscriptions = this.subscriptions.filter(((s3) => s3 !== subscription));
41131    return subscription;
41132  }
41133  findAll(identifier) {
41134    return this.subscriptions.filter(((s3) => s3.identifier === identifier));
41135  }
41136  reload() {
41137    return this.subscriptions.map(((subscription) => this.subscribe(subscription)));
41138  }
41139  notifyAll(callbackName, ...args) {
41140    return this.subscriptions.map(((subscription) => this.notify(subscription, callbackName, ...args)));
41141  }
41142  notify(subscription, callbackName, ...args) {
41143    let subscriptions;
41144    if (typeof subscription === "string") {
41145      subscriptions = this.findAll(subscription);
41146    } else {
41147      subscriptions = [subscription];
41148    }
41149    return subscriptions.map(((subscription2) => typeof subscription2[callbackName] === "function" ? subscription2[callbackName](...args) : void 0));
41150  }
41151  subscribe(subscription) {
41152    if (this.sendCommand(subscription, "subscribe")) {
41153      this.guarantor.guarantee(subscription);
41154    }
41155  }
41156  confirmSubscription(identifier) {
41157    logger.log(`Subscription confirmed ${identifier}`);
41158    this.findAll(identifier).map(((subscription) => this.guarantor.forget(subscription)));
41159  }
41160  sendCommand(subscription, command) {
41161    const { identifier } = subscription;
41162    return this.consumer.send({
41163      command,
41164      identifier
41165    });
41166  }
41167};
41168var Consumer2 = class {
41169  constructor(url) {
41170    this._url = url;
41171    this.subscriptions = new Subscriptions2(this);
41172    this.connection = new Connection2(this);
41173    this.subprotocols = [];
41174  }
41175  get url() {
41176    return createWebSocketURL2(this._url);
41177  }
41178  send(data) {
41179    return this.connection.send(data);
41180  }
41181  connect() {
41182    return this.connection.open();
41183  }
41184  disconnect() {
41185    return this.connection.close({
41186      allowReconnect: false
41187    });
41188  }
41189  ensureActiveConnection() {
41190    if (!this.connection.isActive()) {
41191      return this.connection.open();
41192    }
41193  }
41194  addSubProtocol(subprotocol) {
41195    this.subprotocols = [...this.subprotocols, subprotocol];
41196  }
41197};
41198function createWebSocketURL2(url) {
41199  if (typeof url === "function") {
41200    url = url();
41201  }
41202  if (url && !/^wss?:/i.test(url)) {
41203    const a3 = document.createElement("a");
41204    a3.href = url;
41205    a3.href = a3.href;
41206    a3.protocol = a3.protocol.replace("http", "ws");
41207    return a3.href;
41208  } else {
41209    return url;
41210  }
41211}
41212function createConsumer3(url = getConfig2("url") || INTERNAL.default_mount_path) {
41213  return new Consumer2(url);
41214}
41215function getConfig2(name) {
41216  const element = document.head.querySelector(`meta[name='action-cable-${name}']`);
41217  if (element) {
41218    return element.getAttribute("content");
41219  }
41220}
41221
41222// app/javascript/yano/cable.js
41223function buildConsumer(token) {
41224  const protocol = window.location.protocol === "https:" ? "wss" : "ws";
41225  return createConsumer3(`${protocol}://${window.location.host}/cable?token=${encodeURIComponent(token)}`);
41226}
41227function buildSubscription(consumer2, identifier, handlers) {
41228  const subscription = consumer2.subscriptions.create(identifier, {
41229    connected() {
41230      handlers.onConnected?.();
41231    },
41232    disconnected() {
41233      handlers.onDisconnected?.();
41234    },
41235    rejected() {
41236      handlers.onRejected?.();
41237    },
41238    received(data) {
41239      handlers.onEvent?.(data);
41240    }
41241  });
41242  return {
41243    send(action, payload = {}) {
41244      subscription.perform(action, payload);
41245    },
41246    unsubscribe() {
41247      subscription.unsubscribe();
41248      consumer2.disconnect();
41249    }
41250  };
41251}
41252function subscribeToUserChannel(token, handlers = {}) {
41253  return buildSubscription(buildConsumer(token), { channel: "UserChannel" }, handlers);
41254}
41255function subscribeToRoomChannel(token, roomCode, handlers = {}) {
41256  return buildSubscription(
41257    buildConsumer(token),
41258    { channel: "RoomChannel", room_code: roomCode },
41259    handlers
41260  );
41261}
41262
41263// app/javascript/yano/constants.js
41264var STORAGE_KEY = "yano-web-session-v2";
41265
41266// app/javascript/yano/components/CallStage.jsx
41267var import_react4 = __toESM(require_react());
41268var import_react_dom2 = __toESM(require_react_dom());
41269
41270// app/javascript/yano/components/Icons.jsx
41271var import_react = __toESM(require_react());
41272function YanoWordmark({ className = "" }) {
41273  return /* @__PURE__ */ import_react.default.createElement("span", { className: `yano-wordmark font-display ${className}`, "aria-label": "yano" }, /* @__PURE__ */ import_react.default.createElement("span", { className: "yano-wordmark__ya" }, "ya"), /* @__PURE__ */ import_react.default.createElement("span", { className: "yano-wordmark__no" }, "no"));
41274}
41275function EditIcon() {
41276  return /* @__PURE__ */ import_react.default.createElement("svg", { "aria-hidden": "true", viewBox: "0 0 20 20", className: "h-3.5 w-3.5 fill-none stroke-current stroke-[1.8]" }, /* @__PURE__ */ import_react.default.createElement("path", { d: "M14.7 3.8a1.7 1.7 0 0 1 2.4 2.4l-8 8-3.6 1.2 1.2-3.6 8-8Z" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "m12.8 5.7 1.5 1.5" }));
41277}
41278function MicIcon() {
41279  return /* @__PURE__ */ import_react.default.createElement("svg", { "aria-hidden": "true", viewBox: "0 0 20 20", className: "h-[1.125rem] w-[1.125rem] fill-none stroke-current stroke-[1.8]" }, /* @__PURE__ */ import_react.default.createElement("path", { d: "M10 12.6a3 3 0 0 0 3-3V6.4a3 3 0 1 0-6 0v3.2a3 3 0 0 0 3 3Z" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M5 9.8a5 5 0 1 0 10 0" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M10 14.8v2.7" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M7.2 17.5h5.6" }));
41280}
41281function VideoIcon() {
41282  return /* @__PURE__ */ import_react.default.createElement("svg", { "aria-hidden": "true", viewBox: "0 0 20 20", className: "h-[1.125rem] w-[1.125rem] fill-none stroke-current stroke-[1.8]" }, /* @__PURE__ */ import_react.default.createElement("rect", { x: "3.2", y: "5.3", width: "9.3", height: "9.4", rx: "2.2" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "m12.4 8.4 4-2.1v7.4l-4-2.1" }));
41283}
41284function VideoOffIcon({ className = "h-7 w-7" }) {
41285  return /* @__PURE__ */ import_react.default.createElement("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", className: `${className} fill-none stroke-current stroke-[1.5]` }, /* @__PURE__ */ import_react.default.createElement("rect", { x: "2", y: "6", width: "13", height: "12", rx: "3" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "m15 10.5 5-3v9l-5-3" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M2 2 22 22", strokeLinecap: "round" }));
41286}
41287function CopyIcon() {
41288  return /* @__PURE__ */ import_react.default.createElement("svg", { "aria-hidden": "true", viewBox: "0 0 20 20", className: "h-[1.125rem] w-[1.125rem] fill-none stroke-current stroke-[1.8]" }, /* @__PURE__ */ import_react.default.createElement("rect", { x: "6.6", y: "4.2", width: "9.2", height: "11", rx: "2.2" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M4.3 12.9V6.7a2.2 2.2 0 0 1 2.2-2.2h6.4" }));
41289}
41290function YanoLogo({ className = "h-8 w-8" }) {
41291  return /* @__PURE__ */ import_react.default.createElement("svg", { viewBox: "0 0 200 200", className, "aria-label": "Yano logo" }, /* @__PURE__ */ import_react.default.createElement("defs", null, /* @__PURE__ */ import_react.default.createElement("linearGradient", { id: "yano-logo-grad", x1: "0%", y1: "0%", x2: "100%", y2: "100%" }, /* @__PURE__ */ import_react.default.createElement("stop", { offset: "0%", stopColor: "#f97316" }), /* @__PURE__ */ import_react.default.createElement("stop", { offset: "40%", stopColor: "#ef4444" }), /* @__PURE__ */ import_react.default.createElement("stop", { offset: "100%", stopColor: "#c026d3" })), /* @__PURE__ */ import_react.default.createElement("linearGradient", { id: "yano-logo-wave", x1: "0%", x2: "100%" }, /* @__PURE__ */ import_react.default.createElement("stop", { offset: "0%", stopColor: "#818cf8" }), /* @__PURE__ */ import_react.default.createElement("stop", { offset: "50%", stopColor: "#c084fc" }), /* @__PURE__ */ import_react.default.createElement("stop", { offset: "100%", stopColor: "#818cf8" })), /* @__PURE__ */ import_react.default.createElement("clipPath", { id: "yano-logo-clip" }
41291, /* @__PURE__ */ import_react.default.createElement("path", { d: "M42,38 Q42,26 54,26 L146,26 Q158,26 158,38 L158,116 Q158,128 146,128 L86,128 L64,150 L70,128 L54,128 Q42,128 42,116 Z" }))), /* @__PURE__ */ import_react.default.createElement("g", null, /* @__PURE__ */ import_react.default.createElement("animateTransform", { attributeName: "transform", type: "translate", values: "0,0;0,-2;0,0", dur: "3s", repeatCount: "indefinite" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M42,38 Q42,26 54,26 L146,26 Q158,26 158,38 L158,116 Q158,128 146,128 L86,128 L64,150 L70,128 L54,128 Q42,128 42,116 Z", fill: "url(#yano-logo-grad)" }), /* @__PURE__ */ import_react.default.createElement("g", { clipPath: "url(#yano-logo-clip)" }, /* @__PURE__ */ import_react.default.createElement(
41292    "polyline",
41293    {
41294      fill: "none",
41295      stroke: "white",
41296      strokeWidth: "2.5",
41297      strokeLinecap: "round",
41298      strokeLinejoin: "round",
41299      opacity: "0.85",
41300      points: "30,77 42,77 50,77 58,65 66,89 74,58 82,96 90,48 100,108 110,48 118,96 126,58 134,89 142,65 150,77 160,77 172,77"
41301    },
41302    /* @__PURE__ */ import_react.default.createElement("animate", { attributeName: "points", dur: "1.4s", repeatCount: "indefinite", values: "\n              30,77 42,77 50,77 58,65 66,89 74,58 82,96 90,48 100,108 110,48 118,96 126,58 134,89 142,65 150,77 160,77 172,77;\n              30,77 42,77 50,72 58,82 66,60 74,94 82,45 90,110 100,38 110,116 118,45 126,94 134,60 142,82 150,72 160,77 172,77;\n              30,77 42,77 50,77 58,65 66,89 74,58 82,96 90,48 100,108 110,48 118,96 126,58 134,89 142,65 150,77 160,77 172,77" })
41303  ))));
41304}
41305function ChatIcon() {
41306  return /* @__PURE__ */ import_react.default.createElement("svg", { "aria-hidden": "true", viewBox: "0 0 20 20", className: "h-[1.125rem] w-[1.125rem] fill-none stroke-current stroke-[1.8]" }, /* @__PURE__ */ import_react.default.createElement("path", { d: "M4.2 5.8A2.6 2.6 0 0 1 6.8 3.2h6.4a2.6 2.6 0 0 1 2.6 2.6v4.5a2.6 2.6 0 0 1-2.6 2.6H9l-3.8 3v-3H6.8a2.6 2.6 0 0 1-2.6-2.6Z" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M7.4 7.6h5.2" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M7.4 10.1h3.8" }));
41307}
41308function EffectsIcon() {
41309  return /* @__PURE__ */ import_react.default.createElement("svg", { "aria-hidden": "true", viewBox: "0 0 20 20", className: "h-[1.125rem] w-[1.125rem] fill-none stroke-current stroke-[1.8]" }, /* @__PURE__ */ import_react.default.createElement("path", { d: "M10 2.2l1.1 2.8 2.8 1.1-2.8 1.1L10 10l-1.1-2.8L6.1 6.1l2.8-1.1L10 2.2Z", strokeLinejoin: "round" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M15.2 9.2l.7 1.9 1.9.7-1.9.7-.7 1.9-.7-1.9-1.9-.7 1.9-.7.7-1.9Z", strokeLinejoin: "round" }), /* @__PURE__ */ import_react.default.createElement("path", { d: "M5.2 11.2l.8 2.2 2.2.8-2.2.8-.8 2.2-.8-2.2-2.2-.8 2.2-.8.8-2.2Z", strokeLinejoin: "round" }));
41310}
41311
vendor: 998 bytes, lines 41312-41337
41312// node_modules/@heroicons/react/24/solid/esm/CheckCircleIcon.js
41313var React2 = __toESM(require_react(), 1);
41314function CheckCircleIcon({
41315  title,
41316  titleId,
41317  ...props
41318}, svgRef) {
41319  return /* @__PURE__ */ React2.createElement("svg", Object.assign({
41320    xmlns: "http://www.w3.org/2000/svg",
41321    viewBox: "0 0 24 24",
41322    fill: "currentColor",
41323    "aria-hidden": "true",
41324    "data-slot": "icon",
41325    ref: svgRef,
41326    "aria-labelledby": titleId
41327  }, props), title ? /* @__PURE__ */ React2.createElement("title", {
41328    id: titleId
41329  }, title) : null, /* @__PURE__ */ React2.createElement("path", {
41330    fillRule: "evenodd",
41331    d: "M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z",
41332    clipRule: "evenodd"
41333  }));
41334}
41335var ForwardRef = /* @__PURE__ */ React2.forwardRef(CheckCircleIcon);
41336var CheckCircleIcon_default = ForwardRef;
41337
vendor: 1,296 bytes, lines 41338-41363
41338// node_modules/@heroicons/react/24/solid/esm/PhoneXMarkIcon.js
41339var React3 = __toESM(require_react(), 1);
41340function PhoneXMarkIcon({
41341  title,
41342  titleId,
41343  ...props
41344}, svgRef) {
41345  return /* @__PURE__ */ React3.createElement("svg", Object.assign({
41346    xmlns: "http://www.w3.org/2000/svg",
41347    viewBox: "0 0 24 24",
41348    fill: "currentColor",
41349    "aria-hidden": "true",
41350    "data-slot": "icon",
41351    ref: svgRef,
41352    "aria-labelledby": titleId
41353  }, props), title ? /* @__PURE__ */ React3.createElement("title", {
41354    id: titleId
41355  }, title) : null, /* @__PURE__ */ React3.createElement("path", {
41356    fillRule: "evenodd",
41357    d: "M15.22 3.22a.75.75 0 0 1 1.06 0L18 4.94l1.72-1.72a.75.75 0 1 1 1.06 1.06L19.06 6l1.72 1.72a.75.75 0 0 1-1.06 1.06L18 7.06l-1.72 1.72a.75.75 0 1 1-1.06-1.06L16.94 6l-1.72-1.72a.75.75 0 0 1 0-1.06ZM1.5 4.5a3 3 0 0 1 3-3h1.372c.86 0 1.61.586 1.819 1.42l1.105 4.423a1.875 1.875 0 0 1-.694 1.955l-1.293.97c-.135.101-.164.249-.126.352a11.285 11.285 0 0 0 6.697 6.697c.103.038.25.009.352-.126l.97-1.293a1.875 1.875 0 0 1 1.955-.694l4.423 1.105c.834.209 1.42.959 1.42 1.82V19.5a3 3 0 0 1-3 3h-2.25C8.552 22.5 1.5 15.448 1.5 6.75V4.5Z",
41358    clipRule: "evenodd"
41359  }));
41360}
41361var ForwardRef2 = /* @__PURE__ */ React3.forwardRef(PhoneXMarkIcon);
41362var PhoneXMarkIcon_default = ForwardRef2;
41363
vendor: 1,042 bytes, lines 41364-41389
41364// node_modules/@heroicons/react/24/solid/esm/XCircleIcon.js
41365var React4 = __toESM(require_react(), 1);
41366function XCircleIcon({
41367  title,
41368  titleId,
41369  ...props
41370}, svgRef) {
41371  return /* @__PURE__ */ React4.createElement("svg", Object.assign({
41372    xmlns: "http://www.w3.org/2000/svg",
41373    viewBox: "0 0 24 24",
41374    fill: "currentColor",
41375    "aria-hidden": "true",
41376    "data-slot": "icon",
41377    ref: svgRef,
41378    "aria-labelledby": titleId
41379  }, props), title ? /* @__PURE__ */ React4.createElement("title", {
41380    id: titleId
41381  }, title) : null, /* @__PURE__ */ React4.createElement("path", {
41382    fillRule: "evenodd",
41383    d: "M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25Zm-1.72 6.97a.75.75 0 1 0-1.06 1.06L10.94 12l-1.72 1.72a.75.75 0 1 0 1.06 1.06L12 13.06l1.72 1.72a.75.75 0 1 0 1.06-1.06L13.06 12l1.72-1.72a.75.75 0 1 0-1.06-1.06L12 10.94l-1.72-1.72Z",
41384    clipRule: "evenodd"
41385  }));
41386}
41387var ForwardRef3 = /* @__PURE__ */ React4.forwardRef(XCircleIcon);
41388var XCircleIcon_default = ForwardRef3;
41389
vendor: 985 bytes, lines 41390-41417
41390// node_modules/@heroicons/react/24/outline/esm/ArrowPathIcon.js
41391var React5 = __toESM(require_react(), 1);
41392function ArrowPathIcon({
41393  title,
41394  titleId,
41395  ...props
41396}, svgRef) {
41397  return /* @__PURE__ */ React5.createElement("svg", Object.assign({
41398    xmlns: "http://www.w3.org/2000/svg",
41399    fill: "none",
41400    viewBox: "0 0 24 24",
41401    strokeWidth: 1.5,
41402    stroke: "currentColor",
41403    "aria-hidden": "true",
41404    "data-slot": "icon",
41405    ref: svgRef,
41406    "aria-labelledby": titleId
41407  }, props), title ? /* @__PURE__ */ React5.createElement("title", {
41408    id: titleId
41409  }, title) : null, /* @__PURE__ */ React5.createElement("path", {
41410    strokeLinecap: "round",
41411    strokeLinejoin: "round",
41412    d: "M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"
41413  }));
41414}
41415var ForwardRef4 = /* @__PURE__ */ React5.forwardRef(ArrowPathIcon);
41416var ArrowPathIcon_default = ForwardRef4;
41417
vendor: 1,376 bytes, lines 41418-41445
41418// node_modules/@heroicons/react/24/outline/esm/ChatBubbleLeftRightIcon.js
41419var React6 = __toESM(require_react(), 1);
41420function ChatBubbleLeftRightIcon({
41421  title,
41422  titleId,
41423  ...props
41424}, svgRef) {
41425  return /* @__PURE__ */ React6.createElement("svg", Object.assign({
41426    xmlns: "http://www.w3.org/2000/svg",
41427    fill: "none",
41428    viewBox: "0 0 24 24",
41429    strokeWidth: 1.5,
41430    stroke: "currentColor",
41431    "aria-hidden": "true",
41432    "data-slot": "icon",
41433    ref: svgRef,
41434    "aria-labelledby": titleId
41435  }, props), title ? /* @__PURE__ */ React6.createElement("title", {
41436    id: titleId
41437  }, title) : null, /* @__PURE__ */ React6.createElement("path", {
41438    strokeLinecap: "round",
41439    strokeLinejoin: "round",
41440    d: "M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 0 1-.825-.242m9.345-8.334a2.126 2.126 0 0 0-.476-.095 48.64 48.64 0 0 0-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0 0 11.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155"
41441  }));
41442}
41443var ForwardRef5 = /* @__PURE__ */ React6.forwardRef(ChatBubbleLeftRightIcon);
41444var ChatBubbleLeftRightIcon_default = ForwardRef5;
41445
vendor: 997 bytes, lines 41446-41473
41446// node_modules/@heroicons/react/24/outline/esm/LockClosedIcon.js
41447var React7 = __toESM(require_react(), 1);
41448function LockClosedIcon({
41449  title,
41450  titleId,
41451  ...props
41452}, svgRef) {
41453  return /* @__PURE__ */ React7.createElement("svg", Object.assign({
41454    xmlns: "http://www.w3.org/2000/svg",
41455    fill: "none",
41456    viewBox: "0 0 24 24",
41457    strokeWidth: 1.5,
41458    stroke: "currentColor",
41459    "aria-hidden": "true",
41460    "data-slot": "icon",
41461    ref: svgRef,
41462    "aria-labelledby": titleId
41463  }, props), title ? /* @__PURE__ */ React7.createElement("title", {
41464    id: titleId
41465  }, title) : null, /* @__PURE__ */ React7.createElement("path", {
41466    strokeLinecap: "round",
41467    strokeLinejoin: "round",
41468    d: "M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z"
41469  }));
41470}
41471var ForwardRef6 = /* @__PURE__ */ React7.forwardRef(LockClosedIcon);
41472var LockClosedIcon_default = ForwardRef6;
41473
vendor: 989 bytes, lines 41474-41501
41474// node_modules/@heroicons/react/24/outline/esm/LockOpenIcon.js
41475var React8 = __toESM(require_react(), 1);
41476function LockOpenIcon({
41477  title,
41478  titleId,
41479  ...props
41480}, svgRef) {
41481  return /* @__PURE__ */ React8.createElement("svg", Object.assign({
41482    xmlns: "http://www.w3.org/2000/svg",
41483    fill: "none",
41484    viewBox: "0 0 24 24",
41485    strokeWidth: 1.5,
41486    stroke: "currentColor",
41487    "aria-hidden": "true",
41488    "data-slot": "icon",
41489    ref: svgRef,
41490    "aria-labelledby": titleId
41491  }, props), title ? /* @__PURE__ */ React8.createElement("title", {
41492    id: titleId
41493  }, title) : null, /* @__PURE__ */ React8.createElement("path", {
41494    strokeLinecap: "round",
41495    strokeLinejoin: "round",
41496    d: "M13.5 10.5V6.75a4.5 4.5 0 1 1 9 0v3.75M3.75 21.75h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H3.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z"
41497  }));
41498}
41499var ForwardRef7 = /* @__PURE__ */ React8.forwardRef(LockOpenIcon);
41500var LockOpenIcon_default = ForwardRef7;
41501
vendor: 931 bytes, lines 41502-41529
41502// node_modules/@heroicons/react/24/outline/esm/PaperAirplaneIcon.js
41503var React9 = __toESM(require_react(), 1);
41504function PaperAirplaneIcon({
41505  title,
41506  titleId,
41507  ...props
41508}, svgRef) {
41509  return /* @__PURE__ */ React9.createElement("svg", Object.assign({
41510    xmlns: "http://www.w3.org/2000/svg",
41511    fill: "none",
41512    viewBox: "0 0 24 24",
41513    strokeWidth: 1.5,
41514    stroke: "currentColor",
41515    "aria-hidden": "true",
41516    "data-slot": "icon",
41517    ref: svgRef,
41518    "aria-labelledby": titleId
41519  }, props), title ? /* @__PURE__ */ React9.createElement("title", {
41520    id: titleId
41521  }, title) : null, /* @__PURE__ */ React9.createElement("path", {
41522    strokeLinecap: "round",
41523    strokeLinejoin: "round",
41524    d: "M6 12 3.269 3.125A59.769 59.769 0 0 1 21.485 12 59.768 59.768 0 0 1 3.27 20.875L5.999 12Zm0 0h7.5"
41525  }));
41526}
41527var ForwardRef8 = /* @__PURE__ */ React9.forwardRef(PaperAirplaneIcon);
41528var PaperAirplaneIcon_default = ForwardRef8;
41529
vendor: 1,104 bytes, lines 41530-41557
41530// node_modules/@heroicons/react/24/outline/esm/SpeakerWaveIcon.js
41531var React10 = __toESM(require_react(), 1);
41532function SpeakerWaveIcon({
41533  title,
41534  titleId,
41535  ...props
41536}, svgRef) {
41537  return /* @__PURE__ */ React10.createElement("svg", Object.assign({
41538    xmlns: "http://www.w3.org/2000/svg",
41539    fill: "none",
41540    viewBox: "0 0 24 24",
41541    strokeWidth: 1.5,
41542    stroke: "currentColor",
41543    "aria-hidden": "true",
41544    "data-slot": "icon",
41545    ref: svgRef,
41546    "aria-labelledby": titleId
41547  }, props), title ? /* @__PURE__ */ React10.createElement("title", {
41548    id: titleId
41549  }, title) : null, /* @__PURE__ */ React10.createElement("path", {
41550    strokeLinecap: "round",
41551    strokeLinejoin: "round",
41552    d: "M19.114 5.636a9 9 0 0 1 0 12.728M16.463 8.288a5.25 5.25 0 0 1 0 7.424M6.75 8.25l4.72-4.72a.75.75 0 0 1 1.28.53v15.88a.75.75 0 0 1-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.009 9.009 0 0 1 2.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75Z"
41553  }));
41554}
41555var ForwardRef9 = /* @__PURE__ */ React10.forwardRef(SpeakerWaveIcon);
41556var SpeakerWaveIcon_default = ForwardRef9;
41557
vendor: 1,109 bytes, lines 41558-41585
41558// node_modules/@heroicons/react/24/outline/esm/SpeakerXMarkIcon.js
41559var React11 = __toESM(require_react(), 1);
41560function SpeakerXMarkIcon({
41561  title,
41562  titleId,
41563  ...props
41564}, svgRef) {
41565  return /* @__PURE__ */ React11.createElement("svg", Object.assign({
41566    xmlns: "http://www.w3.org/2000/svg",
41567    fill: "none",
41568    viewBox: "0 0 24 24",
41569    strokeWidth: 1.5,
41570    stroke: "currentColor",
41571    "aria-hidden": "true",
41572    "data-slot": "icon",
41573    ref: svgRef,
41574    "aria-labelledby": titleId
41575  }, props), title ? /* @__PURE__ */ React11.createElement("title", {
41576    id: titleId
41577  }, title) : null, /* @__PURE__ */ React11.createElement("path", {
41578    strokeLinecap: "round",
41579    strokeLinejoin: "round",
41580    d: "M17.25 9.75 19.5 12m0 0 2.25 2.25M19.5 12l2.25-2.25M19.5 12l-2.25 2.25m-10.5-6 4.72-4.72a.75.75 0 0 1 1.28.53v15.88a.75.75 0 0 1-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.009 9.009 0 0 1 2.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75Z"
41581  }));
41582}
41583var ForwardRef10 = /* @__PURE__ */ React11.forwardRef(SpeakerXMarkIcon);
41584var SpeakerXMarkIcon_default = ForwardRef10;
41585
vendor: 1,186 bytes, lines 41586-41613
41586// node_modules/@heroicons/react/24/outline/esm/UsersIcon.js
41587var React12 = __toESM(require_react(), 1);
41588function UsersIcon({
41589  title,
41590  titleId,
41591  ...props
41592}, svgRef) {
41593  return /* @__PURE__ */ React12.createElement("svg", Object.assign({
41594    xmlns: "http://www.w3.org/2000/svg",
41595    fill: "none",
41596    viewBox: "0 0 24 24",
41597    strokeWidth: 1.5,
41598    stroke: "currentColor",
41599    "aria-hidden": "true",
41600    "data-slot": "icon",
41601    ref: svgRef,
41602    "aria-labelledby": titleId
41603  }, props), title ? /* @__PURE__ */ React12.createElement("title", {
41604    id: titleId
41605  }, title) : null, /* @__PURE__ */ React12.createElement("path", {
41606    strokeLinecap: "round",
41607    strokeLinejoin: "round",
41608    d: "M15 19.128a9.38 9.38 0 0 0 2.625.372 9.337 9.337 0 0 0 4.121-.952 4.125 4.125 0 0 0-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 0 1 8.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0 1 11.964-3.07M12 6.375a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0Zm8.25 2.25a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z"
41609  }));
41610}
41611var ForwardRef11 = /* @__PURE__ */ React12.forwardRef(UsersIcon);
41612var UsersIcon_default = ForwardRef11;
41613
vendor: 829 bytes, lines 41614-41641
41614// node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js
41615var React13 = __toESM(require_react(), 1);
41616function XMarkIcon({
41617  title,
41618  titleId,
41619  ...props
41620}, svgRef) {
41621  return /* @__PURE__ */ React13.createElement("svg", Object.assign({
41622    xmlns: "http://www.w3.org/2000/svg",
41623    fill: "none",
41624    viewBox: "0 0 24 24",
41625    strokeWidth: 1.5,
41626    stroke: "currentColor",
41627    "aria-hidden": "true",
41628    "data-slot": "icon",
41629    ref: svgRef,
41630    "aria-labelledby": titleId
41631  }, props), title ? /* @__PURE__ */ React13.createElement("title", {
41632    id: titleId
41633  }, title) : null, /* @__PURE__ */ React13.createElement("path", {
41634    strokeLinecap: "round",
41635    strokeLinejoin: "round",
41636    d: "M6 18 18 6M6 6l12 12"
41637  }));
41638}
41639var ForwardRef12 = /* @__PURE__ */ React13.forwardRef(XMarkIcon);
41640var XMarkIcon_default = ForwardRef12;
41641
41642// app/javascript/yano/i18n.jsx
41643var import_react2 = __toESM(require_react());
41644var import_react_dom = __toESM(require_react_dom());
41645
41646// app/javascript/yano/locales/de.js
41647var de_default = {
41648  "home.heading.default": "ab in den call",
41649  "home.heading.loading": "\xF6ffne room...",
41650  "home.heading.join": "ready?",
41651  "home.heading.joined": "du bist drin",
41652  "home.heading.pending": "warten auf den host",
41653  "home.body.default": "room erstellen, link droppen, viben.",
41654  "home.body.loading": "sekunde, lade den room.",
41655  "home.body.join": "check cam und mic, dann komm rein.",
41656  "home.body.joined": "room ist live. teil den link oder leg los.",
41657  "home.body.joined_in_room": "im room \u2014 komm dazu oder teil den link.",
41658  "home.body.pending": "room ist locked. der host l\xE4sst dich gleich rein.",
41659  "home.cta.create": "Room erstellen",
41660  "home.cta.join": "Room beitreten",
41661  "home.cta.enter": "Room betreten",
41662  "home.cta.creating": "Erstelle...",
41663  "home.cta.joining": "Joine...",
41664  "home.cta.opening": "\xD6ffne...",
41665  "home.cta.pending": "Warte auf Host...",
41666  "home.copy_link": "link kopieren",
41667  "home.copied": "kopiert!",
41668  "home.leave": "room verlassen",
41669  "home.back": "zur\xFCck",
41670  "home.no_participants": "noch niemand hier",
41671  "home.join_by_code": "mit code joinen",
41672  "home.code_placeholder": "code eingeben",
41673  "home.name_placeholder": "dein name",
41674  "home.people_one": "person",
41675  "home.people_other": "leute",
41676  "home.marketing.invite.title": "Room erstellen,\nLink teilen.",
41677  "home.marketing.invite.body": "Ein Tap und los geht's. Teil den Link mit Freunden und alle k\xF6nnen joinen \u2014 ohne Download, ohne Anmeldung.",
41678  "home.marketing.invite.preview_url": "yano.ai/ROOM",
41679  "home.marketing.look.title": "Dein Look,\ndeine Wahl.",
41680  "home.marketing.look.body": "Color Grading, Softening, Vignette \u2014 oder blur dein Gesicht komplett. Deine Cam, dein Look.",
41681  "home.marketing.host.title": "Dein Space,\ndeine Regeln.",
41682  "home.marketing.host.body": "Room locken, Leute muten oder ganz kicken. Der Host hat die Kontrolle.",
41683  "home.marketing.host.locked": "Room locked",
41684  "home.marketing.host.waiting_to_join": "Warten aufs Joinen",
41685  "home.marketing.host.wants_to_join": "will rein",
41686  "home.marketing.anything.title": "Eigentlich f\xFCr alles.",
41687  "home.marketing.anything.body": "Study Sessions, Game Nights, Standups, zusammen was schauen \u2014 oder einfach nur abh\xE4ngen.",
41688  "home.marketing.use_case.study_group": "\u{1F4DA} lerngruppe",
41689  "home.marketing.use_case.game_night": "\u{1F3AE} game night",
41690  "home.marketing.use_case.standup": "\u{1F4BC} standup",
41691  "home.marketing.use_case.watch_party": "\u{1F37F} watch party",
41692  "home.marketing.use_case.catch_up": "\u2615 catch up",
41693  "home.marketing.use_case.jam_session": "\u{1F3B8} jam session",
41694  "home.marketing.use_case.book_club": "\u{1F4D6}
41694 buchclub",
41695  "home.marketing.use_case.coworking": "\u{1F4BB} co-working",
41696  "ended.heading": "call beendet",
41697  "ended.left": "du hast den room verlassen.",
41698  "ended.room_ended": "{title} ist f\xFCr dich beendet.",
41699  "ended.rejoin": "wieder rein",
41700  "ended.rejoining": "joine wieder...",
41701  "ended.home": "zur\xFCck zur startseite",
41702  "call.connecting": "verbinde",
41703  "call.waiting": "warte auf andere",
41704  "call.invite_code": "invite code",
41705  "call.audio_on": "ton an",
41706  "call.muted": "gemutet",
41707  "call.listening": "H\xF6rt zu",
41708  "call.audio_muted": "Ton gemutet",
41709  "call.speaking": "spricht",
41710  "call.you": "du",
41711  "call.you_label": "Du",
41712  "call.you_suffix": "(du)",
41713  "call.chat_placeholder": "schreib was...",
41714  "call.guest": "gast",
41715  "call.room_fallback": "room",
41716  "call.focus_view": "Fokus-Ansicht",
41717  "call.grid_view": "Grid-Ansicht",
41718  "call.swap_main_video": "Hauptvideo tauschen",
41719  "call.open_chat": "Chat \xF6ffnen",
41720  "call.close_chat": "Chat schlie\xDFen",
41721  "call.leave_room": "Room verlassen",
41722  "call.confirm_leave": "Verlassen?",
41723  "call.mic_on": "Mic an",
41724  "call.muted_label": "Gemutet",
41725  "call.camera_off": "Cam aus",
41726  "call.connect_failed": "Verbindung fehlgeschlagen \u2014 check dein Internet und versuch's nochmal.",
41727  "call.camera_access_failed": "Kein Zugriff auf deine Cam. Check die Browser-Rechte und versuch's nochmal.",
41728  "call.recording_failed": "Aufnahme konnte nicht starten. Der Call l\xE4uft ohne weiter.",
41729  "call.initialize_failed": "Irgendwas lief schief. Bitte lad die Seite neu.",
41730  "call.participants": "Leute",
41731  "call.open_participants": "Leute anzeigen",
41732  "call.close_participants": "Leute ausblenden",
41733  "call.lock_room": "Room locken",
41734  "call.unlock_room": "Room \xF6ffnen",
41735  "call.locked": "locked",
41736  "call.unlocked": "offen",
41737  "call.kick_member": "Aus dem Room kicken",
41738  "call.mute_member": "Muten",
41739  "call.unmute_member": "Entmuten",
41740  "call.muted_by_host": "Vom Host gemutet",
41741  "call.waiting_to_join": "Warten aufs Joinen",
41742  "call.approve": "Reinlassen",
41743  "call.deny": "Ablehnen",
41744  "call.profile_actions": "Profil-Aktionen",
41745  "call.profile_in_room": "Im Room",
41746  "call.profile_role_host": "Host",
41747  "call.profile_role_you": "Du",
41748  "call.profile_action_mute": "Ton muten",
41749  "call.profile_action_mute_meta": "Nur f\xFCr dich \u2014 die Person merkt nichts",
41750  "call.profile_action_dm": "1:1 DM",
41751  "call.profile_action_dm_meta": "Starte einen privaten Chat",
41752  "call.profile_action_view": "Ganzes Profil ansehen",
41753  "call.profile_action_view_meta": "Bio, Sprachen, letzte Sessions",
41754  "call.profile_action_report": "Melden",
41755  "call.profile_action_report_meta": "F\xFCrs Moderations-Team markieren",
41756  "call.profile_sheet_close": "Profil-Aktionen schlie\xDFen",
41757  "call.profile_open_actions": "Profil-Aktionen \xF6ffnen",
41758  "call.dm_title": "Direct Message",
41759  "call.dm_back": "Zur\xFCck zu Aktionen",
41760  "call.dm_close": "DM schlie\xDFen",
41761  "call.dm_status_online": "Online",
41762  "call.dm_in_room_with": "In diesem Room",
41763  "call.dm_private_label": "Privater Chat",
41764  "call.dm_private_meta": "Nur ihr beide seht diese Nachrichten",
41765  "call.dm_input_placeholder": "Schreib eine private Nachricht\u2026",
41766  "call.dm_send": "Senden",
41767  "call.dm_just_now": "gerade eben",
41768  "call.dm_seen_just_now": "Gerade gelesen",
41769  "call.dm_typing": "{name} tippt\u2026",
41770  "call.dm_minimize": "Minimieren",
41771  "call.dm_active_indicator": "Chat \xF6ffnen",
41772  "call.dm_unread_messages": "{count} ungelesen",
41773  "call.dm_toast_tap_to_open": "Tippen zum \xD6ffnen",
41774  "call.dm_reopen_aria": "Chat mit {name} wieder \xF6ffnen",
41775  "home.join_denied": "Der Host hat dich nicht reingelassen.",
41776  "home.error.room_not_found": "Diesen Room-Code gibt's nicht.",
41777  "home.error.profile_required": "Richte dein Profil ein, um weiterzumachen.",
41778  "home.cta.set_up_profile": "Profil einrichten",
41779  "home.profile_trigger_new": "Tippen, um Infos hinzuzuf\xFCgen",
41780  "home.profile_trigger_new_aria": "Profil einrichten",
41781  "home.profile_trigger_edit_aria": "Profil bearbeiten",
41782  "profile.eyebrow_new": "sag hi",
41783  "profile.eyebrow_edit": "dein profil",
41784  "profile.title_new": "Mach's zu deinem.",
41785  "profile.title_edit": "Profil bearbeiten",
41786  "profile.subtitle": "Ein paar kurze Infos, damit andere wissen, mit wem sie im C
41786all sind.",
41787  "profile.add_photo": "Foto hinzuf\xFCgen",
41788  "profile.add_photo_soon": "fotos kommen bald",
41789  "profile.photo_empty": "tippen f\xFCr ein foto",
41790  "profile.photo_ready": "foto ready",
41791  "profile.photo_save_first": "speicher dein profil, bevor du ein foto hochl\xE4dst",
41792  "profile.photo_crop_caption": "foto zuschneiden",
41793  "profile.photo_auto_caption": "ziehen und zoomen, wird automatisch gespeichert",
41794  "profile.photo_upload": "Foto hochladen",
41795  "profile.photo_replace": "Foto austauschen",
41796  "profile.photo_remove": "Foto l\xF6schen",
41797  "profile.photo_cancel": "Abbrechen",
41798  "profile.photo_save": "Foto speichern",
41799  "profile.photo_uploading": "Lade Foto hoch\u2026",
41800  "profile.photo_removing": "L\xF6sche Foto\u2026",
41801  "profile.photo_choose_another": "Anderes ausw\xE4hlen",
41802  "profile.photo_drag_hint": "Zieh das Foto in den Kreis. \xC4nderungen werden automatisch gespeichert.",
41803  "profile.photo_zoom": "Zoom",
41804  "profile.photo_horizontal": "Horizontal zuschneiden",
41805  "profile.photo_vertical": "Vertikal zuschneiden",
41806  "profile.name_label": "Name",
41807  "profile.name_placeholder": "Wie sollen wir dich nennen?",
41808  "profile.gender_label": "Ich bin",
41809  "profile.gender.woman": "Frau",
41810  "profile.gender.man": "Mann",
41811  "profile.gender.unspecified": "Sag ich lieber nicht",
41812  "profile.bio_label": "Bio",
41813  "profile.bio_optional": "optional",
41814  "profile.bio_placeholder": "Sprachen, Hobbys, was auch immer\u2026",
41815  "profile.cta_new": "Let's go",
41816  "profile.cta_edit": "\xC4nderungen speichern",
41817  "profile.saving": "Speichere\u2026",
41818  "profile.close": "Schlie\xDFen",
41819  "profile.error.save_failed": "Profil konnte nicht gespeichert werden. Versuch's nochmal.",
41820  "profile.error.avatar_invalid_type": "W\xE4hl ein PNG, JPEG, GIF oder WebP.",
41821  "profile.error.avatar_too_large": "Das Bild muss kleiner als 5 MB sein.",
41822  "profile.error.avatar_too_small": "Das Bild muss mindestens 96x96 Pixel gro\xDF sein.",
41823  "profile.error.avatar_load_failed": "Bild konnte nicht gelesen werden. Versuch ein anderes.",
41824  "profile.error.avatar_failed": "Foto-Upload fehlgeschlagen. Versuch's nochmal.",
41825  "profile.error.avatar_remove_failed": "Foto konnte nicht gel\xF6scht werden. Versuch's nochmal.",
41826  "effects.title": "Effekte",
41827  "effects.soft": "Soft Focus",
41828  "effects.vignette": "Vignette",
41829  "effects.face": "Face Blur",
41830  "effects.face_preview_only": "Face Blur (nur Preview)",
41831  "effects.face_viewer_side": "Face Blur (f\xFCr andere)",
41832  "effects.face_strength": "Face Blur St\xE4rke",
41833  "effects.grade.off": "AUS",
41834  "effects.grade.pop": "POP",
41835  "effects.grade.warm": "WARM",
41836  "effects.grade.cool": "COOL",
41837  "effects.grade.bw": "S/W",
41838  "camera.off": "cam ist aus",
41839  "camera.check": "check deine cam",
41840  "camera.retry": "cam nochmal probieren",
41841  "camera.ready": "cam ready",
41842  "camera.idle.title": "Mach deine Cam an",
41843  "camera.idle.hint": "Wir fragen deinen Browser nach Rechten, wenn du ready bist.",
41844  "camera.idle.button": "Cam anmachen",
41845  "camera.status.idle": "Warten auf dich",
41846  "camera.status.off": "Cam ist aus",
41847  "camera.status.loading": "Frage Cam-Rechte an...",
41848  "camera.status.denied": "Erlaub den Cam-Zugriff im Browser und versuch's nochmal.",
41849  "camera.status.error": "Cam-Preview fehlgeschlagen. Versuch's nochmal.",
41850  "camera.status.unsupported": "Dieser Browser unterst\xFCtzt keinen Cam-Zugriff.",
41851  "camera.status.insecure": "Cam-Zugriff braucht HTTPS oder localhost.",
41852  "camera.guest_name_placeholder": "Gast-Name",
41853  "camera.flip": "Cam wechseln",
41854  "camera.save_name": "Speichern",
41855  "camera.edit_name": "Name bearbeiten",
41856  "mic.on": "Mic ausmachen",
41857  "mic.off": "Mic anmachen",
41858  "video.on": "Cam ausmachen",
41859  "video.off": "Cam anmachen",
41860  "chat.title": "chat",
41861  "chat.close": "Chat schlie\xDFen",
41862  "chat.loading": "l\xE4dt...",
41863  "chat.load_earlier": "\xE4ltere laden",
41864  "chat.empty": "noch keine nachrichten",
41865  "chat.send_error": "Nachricht ging nicht raus \u2014 versuch's nochmal.",
41866  "chat.input_placeholder": "schreib was...",
41867  "room.host": "Host",
41868  "app.room_default_title": "Room erstellen",
41869  "app.chat_connection_rejected": "Chat-Verbindung fehlgeschlagen \u2014 lad die Seite neu.",
41870  "app.copy_failed": "Link konnte nicht kopiert werden. Versuch's manuell.",
41871  "app.chat_not_connected": "Chat ist noch nicht verbunden. Gib ihm 'ne Sekunde und versuch's nochmal.",
41872  "footer.terms": "AGB",
41873  "footer.copyright": "\xA9 2026 Yano.AI"
41874};
41875
41876// app/javascript/yano/locales/en.js
41877var en_default = {
41878  "home.heading.default": "hop on a call",
41879  "home.heading.loading": "Opening room...",
41880  "home.heading.join": "ready to join?",
41881  "home.heading.joined": "you\u2019re in",
41882  "home.heading.pending": "waiting for the host",
41883  "home.body.default": "create a room, drop the link, vibe.",
41884  "home.body.loading": "one sec, grabbing the room.",
41885  "home.body.join": "check your cam and mic, then jump in.",
41886  "home.body.joined": "room\u2019s live. share the link or just go.",
41887  "home.body.joined_in_room": "in the room \u2014 jump in or share the link.",
41888  "home.body.pending": "the room is locked. the host will let you in.",
41889  "home.cta.create": "Create room",
41890  "home.cta.join": "Join room",
41891  "home.cta.enter": "Enter room",
41892  "home.cta.creating": "Creating...",
41893  "home.cta.joining": "Joining...",
41894  "home.cta.opening": "Opening...",
41895  "home.cta.pending": "Waiting for approval...",
41896  "home.copy_link": "copy link",
41897  "home.copied": "copied!",
41898  "home.leave": "leave room",
41899  "home.back": "back",
41900  "home.no_participants": "no one here yet",
41901  "home.join_by_code": "join by invite code",
41902  "home.code_placeholder": "enter code",
41903  "home.name_placeholder": "your name",
41904  "home.people_one": "person",
41905  "home.people_other": "people",
41906  "home.marketing.invite.title": "Create a room,\nshare the link.",
41907  "home.marketing.invite.body": "One tap to start. Share the link with your friends and anyone can join \u2014 no downloads, no sign-ups.",
41908  "home.marketing.invite.preview_url": "yano.ai/ROOM",
41909  "home.marketing.look.title": "Look how\nyou want.",
41910  "home.marketing.look.body": "Color grading, softening, vignette \u2014 or blur your face entirely. Your camera, your look.",
41911  "home.marketing.host.title": "Your space,\nyour rules.",
41912  "home.marketing.host.body": "Lock the room, mute someone, or remove them entirely. The host stays in control.",
41913  "home.marketing.host.locked": "Room locked",
41914  "home.marketing.host.waiting_to_join": "Waiting to join",
41915  "home.marketing.host.wants_to_join": "wants to join",
41916  "home.marketing.anything.title": "For anything, really.",
41917  "home.marketing.anything.body": "Study sessions, game nights, work standups, watching stuff together \u2014 or just hanging out.",
41918  "home.marketing.use_case.study_group": "\u{1F4DA} study group",
41919  "home.marketing.use_case.game_night": "\u{1F3AE} game night",
41920  "home.marketing.use_case.standup": "\u{1F4BC} standup",
41921  "home.marketing.use_case.watch_party": "\u{1F37F} watch party",
41922  "home.marketing.use_case.catch_up": "\u2615 catch up",
41923  "home.marketing.use_case.jam_session": "\u{1F3B8} jam session",
41924  "home.marketing.use_case.book_club": "\u{1F4D6}
41924 book club",
41925  "home.marketing.use_case.coworking": "\u{1F4BB} co-working",
41926  "ended.heading": "call ended",
41927  "ended.left": "you left the room.",
41928  "ended.room_ended": "{title} has ended for you.",
41929  "ended.rejoin": "rejoin",
41930  "ended.rejoining": "rejoining...",
41931  "ended.home": "return home",
41932  "call.connecting": "connecting",
41933  "call.waiting": "waiting for others",
41934  "call.invite_code": "invite code",
41935  "call.audio_on": "audio on",
41936  "call.muted": "muted",
41937  "call.listening": "Listening",
41938  "call.audio_muted": "Audio muted",
41939  "call.speaking": "speaking",
41940  "call.you": "you",
41941  "call.you_label": "You",
41942  "call.you_suffix": "(you)",
41943  "call.chat_placeholder": "send a message...",
41944  "call.guest": "guest",
41945  "call.room_fallback": "room",
41946  "call.focus_view": "Focus view",
41947  "call.grid_view": "Grid view",
41948  "call.swap_main_video": "Swap main video",
41949  "call.open_chat": "Open chat",
41950  "call.close_chat": "Close chat",
41951  "call.leave_room": "Leave room",
41952  "call.confirm_leave": "Leave?",
41953  "call.mic_on": "Mic on",
41954  "call.muted_label": "Muted",
41955  "call.camera_off": "Camera off",
41956  "call.connect_failed": "Connection failed \u2014 check your internet and try again.",
41957  "call.camera_access_failed": "Couldn't access your camera. Check browser permissions and try again.",
41958  "call.recording_failed": "Recording couldn't start. The call will continue without it.",
41959  "call.initialize_failed": "Something went wrong starting the call. Please refresh and try again.",
41960  "call.participants": "Participants",
41961  "call.open_participants": "Open participants",
41962  "call.close_participants": "Close participants",
41963  "call.lock_room": "Lock room",
41964  "call.unlock_room": "Unlock room",
41965  "call.locked": "locked",
41966  "call.unlocked": "open",
41967  "call.kick_member": "Remove from room",
41968  "call.mute_member": "Mute",
41969  "call.unmute_member": "Unmute",
41970  "call.muted_by_host": "Muted by host",
41971  "call.waiting_to_join": "Waiting to join",
41972  "call.approve": "Approve",
41973  "call.deny": "Deny",
41974  "call.profile_actions": "Profile actions",
41975  "call.profile_in_room": "In room",
41976  "call.profile_role_host": "Host",
41977  "call.profile_role_you": "You",
41978  "call.profile_action_mute": "Mute their audio",
41979  "call.profile_action_mute_meta": "Just for you \u2014 they won't know",
41980  "call.profile_action_dm": "1:1 DM",
41981  "call.profile_action_dm_meta": "Start a private side-chat",
41982  "call.profile_action_view": "View full profile",
41983  "call.profile_action_view_meta": "Bio, languages, past sessions",
41984  "call.profile_action_report": "Report",
41985  "call.profile_action_report_meta": "Flag for moderation review",
41986  "call.profile_sheet_close": "Close profile actions",
41987  "call.profile_open_actions": "Open profile actions",
41988  "call.dm_title": "Direct message",
41989  "call.dm_back": "Back to actions",
41990  "call.dm_close": "Close direct message",
41991  "call.dm_status_online": "Online",
41992  "call.dm_in_room_with": "In this room",
41993  "call.dm_private_label": "Private chat",
41994  "call.dm_private_meta": "Only the two of you can see these messages",
41995  "call.dm_input_placeholder": "Send a private message\u2026",
41996  "call.dm_send": "Send",
41997  "call.dm_just_now": "now",
41998  "call.dm_seen_just_now": "Seen just now",
41999  "call.dm_typing": "{name} is typing\u2026",
42000  "call.dm_minimize": "Minimize",
42001  "call.dm_active_indicator": "Open conversation",
42002  "call.dm_unread_messages": "{count} unread",
42003  "call.dm_toast_tap_to_open": "Tap to open",
42004  "call.dm_reopen_aria": "Reopen conversation with {name}",
42005  "home.join_denied": "The host didn't let you in.",
42006  "home.error.room_not_found": "That room code doesn\u2019t exist.",
42007  "home.error.profile_required": "Set up your profile to continue.",
42008  "home.cta.set_up_profile": "Set up your profile",
42009  "home.profile_trigger_new": "Tap to add your details",
42010  "home.profile_trigger_new_aria": "Set up your profile",
42011  "home.profile_trigger_edit_aria": "Edit your profile",
42012  "profile.eyebrow_new": "say hi",
42013  "profile.eyebrow_edit": "your profile",
42014  "profile.title_new": "Make it yours.",
42015  "profile.title_edit": "Edit profile",
42016  "profile.subtitle": "A few quick details so partners know who they\u2019re meeting.",
42017  "profile.add_photo": "Add photo",
42018  "profile.add_photo_soon": "photos coming soon",
42019  "profile.photo_empty": "tap to add a photo",
42020  "profile.photo_ready": "photo ready",
42021  "profile.photo_save_first": "save your profile before uploading a photo",
42022  "profile.photo_crop_caption": "frame your photo",
42023  "profile.photo_auto_caption": "drag and zoom, then we save it automatically",
42024  "profile.photo_upload": "Upload photo",
42025  "profile.photo_replace": "Replace photo",
42026  "profile.photo_remove": "Remove photo",
42027  "profile.photo_cancel": "Cancel",
42028  "profile.photo_save": "Save photo",
42029  "profile.photo_uploading": "Uploading photo\u2026",
42030  "profile.photo_removing": "Removing photo\u2026",
42031  "profile.photo_choose_another": "Choose another",
42032  "profile.photo_drag_hint": "Drag the photo to place it inside the circle. Changes save automatically.",
42033  "profile.photo_zoom": "Zoom",
42034  "profile.photo_horizontal": "Horizontal crop",
42035  "profile.photo_vertical": "Vertical crop",
42036  "profile.name_label": "Name",
42037  "profile.name_placeholder": "What should we call you?",
42038  "profile.gender_label": "I am",
42039  "profile.gender.woman": "Woman",
42040  "profile.gender.man": "Man",
42041  "profile.gender.unspecified": "Prefer not to say",
42042  "profile.bio_label": "Bio",
42043  "profile.bio_optional": "optional",
42044  "profile.bio_placeholder": "Languages you speak, what you love, anything\u2026",
42045  "profile.cta_new": "Let\u2019s go",
42046  "profile.cta_edit": "Save changes",
42047  "profile.saving": "Saving\u2026",
42048  "profile.close": "Close",
42049  "profile.error.save_failed": "Couldn\u2019t save your profile. Try again.",
42050  "profile.error.avatar_invalid_type": "Choose a PNG, JPEG, GIF, or WebP image.",
42051  "profile.error.avatar_too_large": "Choose an image smaller than 5 MB.",
42052  "profile.error.avatar_too_small": "Choose an image that is at least 96 by 96 pixels.",
42053  "profile.error.avatar_load_failed": "We couldn\u2019t read that image. Try another file.",
42054  "profile.error.avatar_failed": "Couldn\u2019t upload your photo. Try again.",
42055  "profile.error.avatar_remove_failed": "Couldn\u2019t remove your photo. Try again.",
42056  "effects.title": "Effects",
42057  "effects.soft": "Soft focus",
42058  "effects.vignette": "Vignette",
42059  "effects.face": "Face blur",
42060  "effects.face_preview_only": "Face blur (preview only)",
42061  "effects.face_viewer_side": "Face blur (viewer-side)",
42062  "effects.face_strength": "Face blur strength",
42063  "effects.grade.off": "OFF",
42064  "effects.grade.pop": "POP",
42065  "effects.grade.warm": "WARM",
42066  "effects.grade.cool": "COOL",
42067  "effects.grade.bw": "B&W",
42068  "camera.off": "camera is off",
42069  "camera.check": "check your camera",
42070  "camera.retry": "retry camera",
42071  "camera.ready": "camera ready",
42072  "camera.idle.title": "Turn on your camera",
42073  "camera.idle.hint": "We\u2019ll ask your browser for access when you\u2019re ready.",
42074  "camera.idle.button": "Turn on camera",
42075  "camera.status.idle": "Waiting for you",
42076  "camera.status.off": "Camera is off",
42077  "camera.status.loading": "Requesting camera access...",
42078  "camera.status.denied": "Allow camera access in the browser, then try again.",
42079  "camera.status.error": "Camera preview failed. Try again.",
42080  "camera.status.unsupported": "This browser does not expose camera access.",
42081  "camera.status.insecure": "Camera access needs HTTPS or localhost.",
42082  "camera.status.attach_failed": "Camera preview could not start. Try again.",
42083  "camera.guest_name_placeholder": "Guest name",
42084  "camera.flip": "Switch camera",
42085  "camera.save_name": "Save",
42086  "camera.edit_name": "Edit name",
42087  "mic.on": "Turn microphone off",
42088  "mic.off": "Turn microphone on",
42089  "video.on": "Turn camera off",
42090  "video.off": "Turn camera on",
42091  "chat.title": "chat",
42092  "chat.close": "Close chat",
42093  "chat.loading": "loading...",
42094  "chat.load_earlier": "load earlier",
42095  "chat.empty": "no messages yet",
42096  "chat.send_error": "Message didn't send \u2014 try again.",
42097  "chat.input_placeholder": "type a message...",
42098  "room.host": "Host",
42099  "app.room_default_title": "Create a room",
42100  "app.chat_connection_rejected": "Chat couldn't connect \u2014 try refreshing.",
42101  "app.copy_failed": "Couldn't copy the link. Try selecting and copying it manually.",
42102  "app.chat_not_connected": "Chat isn't connected yet. Give it a moment and try again.",
42103  "footer.terms": "Terms & Conditions",
42104  "footer.copyright": "\xA9 2026 Yano.AI"
42105};
42106
42107// app/javascript/yano/locales/es.js
42108var es_default = {
42109  "home.heading.default": "entra a la llamada",
42110  "home.heading.loading": "Abriendo sala...",
42111  "home.heading.join": "\xBFlisto para entrar?",
42112  "home.heading.joined": "ya est\xE1s dentro",
42113  "home.heading.pending": "esperando al host",
42114  "home.body.default": "crea una sala, pasa el link, y a fluir.",
42115  "home.body.loading": "un seg, preparando la sala.",
42116  "home.body.join": "revisa tu c\xE1mara y micro, y entra.",
42117  "home.body.joined": "la sala est\xE1 activa. comparte el link o entra de una.",
42118  "home.body.joined_in_room": "en la sala \u2014 entra o comparte el link.",
42119  "home.body.pending": "la sala est\xE1 cerrada. el host te dejar\xE1 entrar.",
42120  "home.cta.create": "Crear sala",
42121  "home.cta.join": "Entrar a la sala",
42122  "home.cta.enter": "Entrar",
42123  "home.cta.creating": "Creando...",
42124  "home.cta.joining": "Entrando...",
42125  "home.cta.opening": "Abriendo...",
42126  "home.cta.pending": "Esperando acceso...",
42127  "home.copy_link": "copiar link",
42128  "home.copied": "\xA1copiado!",
42129  "home.leave": "salir de la sala",
42130  "home.back": "volver",
42131  "home.no_participants": "no hay nadie todav\xEDa",
42132  "home.join_by_code": "entrar con c\xF3digo",
42133  "home.code_placeholder": "ingresa el c\xF3digo",
42134  "home.name_placeholder": "tu nombre",
42135  "home.people_one": "persona",
42136  "home.people_other": "personas",
42137  "home.marketing.invite.title": "Crea una sala,\ncomparte el link.",
42138  "home.marketing.invite.body": "Un toque y listo. Pasa el link a tus amigos y cualquiera puede entrar \u2014 sin descargar nada, sin registrarse.",
42139  "home.marketing.invite.preview_url": "yano.ai/ROOM",
42140  "home.marketing.look.title": "Luce como\nt\xFA quieras.",
42141  "home.marketing.look.body": "Filtros de color, suavizado, vi\xF1eta \u2014 o difumina tu cara por completo. Tu c\xE1mara, tu estilo.",
42142  "home.marketing.host.title": "Tu espacio,\ntus reglas.",
42143  "home.marketing.host.body": "Cierra la sala, silencia a alguien o s\xE1calo por completo. El host tiene el control.",
42144  "home.marketing.host.locked": "Sala cerrada",
42145  "home.marketing.host.waiting_to_join": "Esperando para entrar",
42146  "home.marketing.host.wants_to_join": "quiere entrar",
42147  "home.marketing.anything.title": "Para lo que sea, literal.",
42148  "home.marketing.anything.body": "Sesiones de estudio, noches de juegos, standups de trabajo, ver algo juntos \u2014 o solo para pasar el rato.",
42149  "home.marketing.use_case.study_group": "\u{1F4DA} grupo de estudio",
42150  "home.marketing.use_case.game_night": "\u{1F3AE} noche de juegos",
42151  "home.marketing.use_case.standup": "\u{1F4BC} standup",
42152  "home.marketing.use_case.watch_party": "\u{1F37F} watch party",
42153  "home.marketing.use_case.catch_up": "\u2615 ponernos al d\xEDa",
42154  "home.marketing.use_case.jam_session": "\u{1F3B8} jam session",
42155  "home.marketing.use_case.book_club": "\u{1F4D6}
42155 club de lectura",
42156  "home.marketing.use_case.coworking": "\u{1F4BB} co-working",
42157  "ended.heading": "llamada terminada",
42158  "ended.left": "saliste de la sala.",
42159  "ended.room_ended": "{title} ha terminado para ti.",
42160  "ended.rejoin": "volver a entrar",
42161  "ended.rejoining": "volviendo a entrar...",
42162  "ended.home": "volver al inicio",
42163  "call.connecting": "conectando",
42164  "call.waiting": "esperando a los dem\xE1s",
42165  "call.invite_code": "c\xF3digo de invitaci\xF3n",
42166  "call.audio_on": "audio activado",
42167  "call.muted": "silenciado",
42168  "call.listening": "Escuchando",
42169  "call.audio_muted": "Audio silenciado",
42170  "call.speaking": "hablando",
42171  "call.you": "t\xFA",
42172  "call.you_label": "T\xFA",
42173  "call.you_suffix": "(t\xFA)",
42174  "call.chat_placeholder": "escribe un mensaje...",
42175  "call.guest": "invitado",
42176  "call.room_fallback": "sala",
42177  "call.focus_view": "Vista enfocada",
42178  "call.grid_view": "Vista de cuadr\xEDcula",
42179  "call.swap_main_video": "Cambiar video principal",
42180  "call.open_chat": "Abrir chat",
42181  "call.close_chat": "Cerrar chat",
42182  "call.leave_room": "Salir de la sala",
42183  "call.confirm_leave": "\xBFSalir?",
42184  "call.mic_on": "Micro encendido",
42185  "call.muted_label": "Silenciado",
42186  "call.camera_off": "C\xE1mara apagada",
42187  "call.connect_failed": "Fall\xF3 la conexi\xF3n \u2014 revisa tu internet y dale de nuevo.",
42188  "call.camera_access_failed": "No pudimos acceder a tu c\xE1mara. Revisa los permisos del navegador y vuelve a intentar.",
42189  "call.recording_failed": "No se pudo empezar a grabar. La llamada seguir\xE1 sin grabaci\xF3n.",
42190  "call.initialize_failed": "Algo sali\xF3 mal al iniciar la llamada. Refresca la p\xE1gina y vuelve a intentar.",
42191  "call.participants": "Participantes",
42192  "call.open_participants": "Ver participantes",
42193  "call.close_participants": "Cerrar participantes",
42194  "call.lock_room": "Cerrar sala",
42195  "call.unlock_room": "Abrir sala",
42196  "call.locked": "cerrada",
42197  "call.unlocked": "abierta",
42198  "call.kick_member": "Sacar de la sala",
42199  "call.mute_member": "Silenciar",
42200  "call.unmute_member": "Activar audio",
42201  "call.muted_by_host": "Silenciado por el host",
42202  "call.waiting_to_join": "Esperando para entrar",
42203  "call.approve": "Aceptar",
42204  "call.deny": "Rechazar",
42205  "call.profile_actions": "Acciones de perfil",
42206  "call.profile_in_room": "En la sala",
42207  "call.profile_role_host": "Host",
42208  "call.profile_role_you": "T\xFA",
42209  "call.profile_action_mute": "Silenciar su audio",
42210  "call.profile_action_mute_meta": "Solo para ti \u2014 no se enterar\xE1n",
42211  "call.profile_action_dm": "DM 1:1",
42212  "call.profile_action_dm_meta": "Inicia un chat privado",
42213  "call.profile_action_view": "Ver perfil completo",
42214  "call.profile_action_view_meta": "Bio, idiomas, sesiones pasadas",
42215  "call.profile_action_report": "Reportar",
42216  "call.profile_action_report_meta": "Marcar para revisi\xF3n",
42217  "call.profile_sheet_close": "Cerrar acciones",
42218  "call.profile_open_actions": "Abrir acciones",
42219  "call.dm_title": "Mensaje directo",
42220  "call.dm_back": "Volver a acciones",
42221  "call.dm_close": "Cerrar mensaje directo",
42222  "call.dm_status_online": "En l\xEDnea",
42223  "call.dm_in_room_with": "En esta sala",
42224  "call.dm_private_label": "Chat privado",
42225  "call.dm_private_meta": "Solo ustedes dos pueden ver estos mensajes",
42226  "call.dm_input_placeholder": "Env\xEDa un mensaje privado\u2026",
42227  "call.dm_send": "Enviar",
42228  "call.dm_just_now": "ahora",
42229  "call.dm_seen_just_now": "Visto reci\xE9n",
42230  "call.dm_typing": "{name} est\xE1 escribiendo\u2026",
42231  "call.dm_minimize": "Minimizar",
42232  "call.dm_active_indicator": "Abrir conversaci\xF3n",
42233  "call.dm_unread_messages": "{count} sin leer",
42234  "call.dm_toast_tap_to_open": "Toca para abrir",
42235  "call.dm_reopen_aria": "Reabrir conversaci\xF3n con {name}",
42236  "home.join_denied": "El host no te dej\xF3 entrar.",
42237  "home.error.room_not_found": "Ese c\xF3digo de sala no existe.",
42238  "home.error.profile_required": "Configura tu perfil para seguir.",
42239  "home.cta.set_up_profile": "Configurar perfil",
42240  "home.profile_trigger_new": "Toca para agregar tus datos",
42241  "home.profile_trigger_new_aria": "Configurar tu perfil",
42242  "home.profile_trigger_edit_aria": "Editar tu perfil",
42243  "profile.eyebrow_new": "di hola",
42244  "profile.eyebrow_edit": "tu perfil",
42245  "profile.title_new": "Hazlo tuyo.",
42246  "profile.title_edit": "Editar perfil",
42247  "profile.subtitle": "Unos detalles r\xE1pidos para que sepan con qui\xE9n hablan.",
42248  "profile.add_photo": "Agregar foto",
42249  "profile.add_photo_soon": "fotos muy pronto",
42250  "profile.photo_empty": "toca para agregar foto",
42251  "profile.photo_ready": "foto lista",
42252  "profile.photo_save_first": "guarda tu perfil antes de subir una foto",
42253  "profile.photo_crop_caption": "encuadra tu foto",
42254  "profile.photo_auto_caption": "arrastra y haz zoom, se guarda en autom\xE1tico",
42255  "profile.photo_upload": "Subir foto",
42256  "profile.photo_replace": "Cambiar foto",
42257  "profile.photo_remove": "Quitar foto",
42258  "profile.photo_cancel": "Cancelar",
42259  "profile.photo_save": "Guardar foto",
42260  "profile.photo_uploading": "Subiendo foto\u2026",
42261  "profile.photo_removing": "Quitando foto\u2026",
42262  "profile.photo_choose_another": "Elegir otra",
42263  "profile.photo_drag_hint": "Arrastra la foto para acomodarla en el c\xEDrculo. Se guarda en autom\xE1tico.",
42264  "profile.photo_zoom": "Zoom",
42265  "profile.photo_horizontal": "Recorte horizontal",
42266  "profile.photo_vertical": "Recorte vertical",
42267  "profile.name_label": "Nombre",
42268  "profile.name_placeholder": "\xBFC\xF3mo te llamamos?",
42269  "profile.gender_label": "Soy",
42270  "profile.gender.woman": "Mujer",
42271  "profile.gender.man": "Hombre",
42272  "profile.gender.unspecified": "Prefiero no decirlo",
42273  "profile.bio_label": "Bio",
42274  "profile.bio_optional": "opcional",
42275  "profile.bio_placeholder": "Idiomas que hablas, lo que te gusta, lo que sea\u2026",
42276  "profile.cta_new": "Vamos",
42277  "profile.cta_edit": "Guardar cambios",
42278  "profile.saving": "Guardando\u2026",
42279  "profile.close": "Cerrar",
42280  "profile.error.save_failed": "No pudimos guardar tu perfil. Intenta de nuevo.",
42281  "profile.error.avatar_invalid_type": "Elige una imagen PNG, JPEG, GIF o WebP.",
42282  "profile.error.avatar_too_large": "Elige una imagen de menos de 5 MB.",
42283  "profile.error.avatar_too_small": "Elige una imagen de al menos 96x96 p\xEDxeles.",
42284  "profile.error.avatar_load_failed": "No pudimos leer esa imagen. Intenta con otra.",
42285  "profile.error.avatar_failed": "No pudimos subir tu foto. Intenta de nuevo.",
42286  "profile.error.avatar_remove_failed": "No pudimos quitar tu foto. Intenta de nuevo.",
42287  "effects.title": "Efectos",
42288  "effects.soft": "Enfoque suave",
42289  "effects.vignette": "Vi\xF1eta",
42290  "effects.face": "Difuminar cara",
42291  "effects.face_preview_only": "Difuminar cara (solo vista previa)",
42292  "effects.face_viewer_side": "Difuminar cara (lado del espectador)",
42293  "effects.face_strength": "Intensidad del difuminado",
42294  "effects.grade.off": "OFF",
42295  "effects.grade.pop": "POP",
42296  "effects.grade.warm": "C\xC1LIDO",
42297  "effects.grade.cool": "FR\xCDO",
42298  "effects.grade.bw": "B&N",
42299  "camera.off": "la c\xE1mara est\xE1 apagada",
42300  "camera.check": "revisa tu c\xE1mara",
42301  "camera.retry": "reintentar c\xE1mara",
42302  "camera.ready": "c\xE1mara lista",
42303  "camera.idle.title": "Enciende tu c\xE1mara",
42304  "camera.idle.hint": "Le pediremos permiso a tu navegador cuando est\xE9s listo.",
42305  "camera.idle.button": "Encender c\xE1mara",
42306  "camera.status.idle": "Esper\xE1ndote",
42307  "camera.status.off": "La c\xE1mara est\xE1 apagada",
42308  "camera.status.loading": "Pidiendo acceso a la c\xE1mara...",
42309  "camera.status.denied": "Dale permiso a la c\xE1mara en el navegador y vuelve a intentar.",
42310  "camera.status.error": "Fall\xF3 la vista previa de la c\xE1mara. Intenta de nuevo.",
42311  "camera.status.unsupported": "Este navegador no permite acceso a la c\xE1mara.",
42312  "camera.status.insecure": "El acceso a la c\xE1mara requiere HTTPS o localhost.",
42313  "camera.status.attach_failed": "No se pudo iniciar la vista previa de la c\xE1mara. Intenta de nuevo.",
42314  "camera.guest_name_placeholder": "Nombre del invitado",
42315  "camera.flip": "Cambiar c\xE1mara",
42316  "camera.save_name": "Guardar",
42317  "camera.edit_name": "Editar nombre",
42318  "mic.on": "Apagar micro",
42319  "mic.off": "Encender micro",
42320  "video.on": "Apagar c\xE1mara",
42321  "video.off": "Encender c\xE1mara",
42322  "chat.title": "chat",
42323  "chat.close": "Cerrar chat",
42324  "chat.loading": "cargando...",
42325  "chat.load_earlier": "cargar anteriores",
42326  "chat.empty": "no hay mensajes todav\xEDa",
42327  "chat.send_error": "No se envi\xF3 el mensaje \u2014 intenta de nuevo.",
42328  "chat.input_placeholder": "escribe un mensaje...",
42329  "room.host": "Host",
42330  "app.room_default_title": "Crea una sala",
42331  "app.chat_connection_rejected": "El chat no pudo conectar \u2014 intenta refrescar la p\xE1gina.",
42332  "app.copy_failed": "No pudimos copiar el link. Intenta seleccionarlo y copiarlo a mano.",
42333  "app.chat_not_connected": "El chat a\xFAn no conecta. Dale un momento y vuelve a intentar.",
42334  "footer.terms": "T\xE9rminos y Condiciones",
42335  "footer.copyright": "\xA9 2026 Yano.AI"
42336};
42337
42338// app/javascript/yano/locales/et.js
42339var et_default = {
42340  "home.heading.default": "h\xFCppa k\xF5nesse",
42341  "home.heading.loading": "Avan ruumi...",
42342  "home.heading.join": "valmis liituma?",
42343  "home.heading.joined": "oled sees",
42344  "home.heading.pending": "ootan hosti",
42345  "home.body.default": "tee ruum, viska link, t\u0161illi.",
42346  "home.body.loading": "\xFCks hetk, laen ruumi.",
42347  "home.body.join": "kontrolli kaamerat ja mikrit, siis h\xFCppa sisse.",
42348  "home.body.joined": "ruum on laivis. jaga linki v\xF5i hakka pihta.",
42349  "home.body.joined_in_room": "ruumis sees \u2014 h\xFCppa kampa v\xF5i jaga linki.",
42350  "home.body.pending": "ruum on lukus. host laseb su sisse.",
42351  "home.cta.create": "Loo ruum",
42352  "home.cta.join": "Liitu ruumiga",
42353  "home.cta.enter": "Sisene ruumi",
42354  "home.cta.creating": "Loon...",
42355  "home.cta.joining": "Liitun...",
42356  "home.cta.opening": "Avan...",
42357  "home.cta.pending": "Ootan luba...",
42358  "home.copy_link": "kopeeri link",
42359  "home.copied": "kopeeritud!",
42360  "home.leave": "lahku ruumist",
42361  "home.back": "tagasi",
42362  "home.no_participants": "kedagi pole veel siin",
42363  "home.join_by_code": "liitu koodiga",
42364  "home.code_placeholder": "sisesta kood",
42365  "home.name_placeholder": "sinu nimi",
42366  "home.people_one": "inimene",
42367  "home.people_other": "inimest",
42368  "home.marketing.invite.title": "Loo ruum,\njaga linki.",
42369  "home.marketing.invite.body": "\xDCks vajutus ja valmis. Jaga linki s\xF5pradega ja k\xF5ik saavad liituda \u2014 ei mingeid allalaadimisi ega kontosid.",
42370  "home.marketing.invite.preview_url": "yano.ai/RUUM",
42371  "home.marketing.look.title": "N\xE4e v\xE4lja\nnii nagu tahad.",
42372  "home.marketing.look.body": "V\xE4rvid, pehmendus, vinjett \u2014 v\xF5i bluri n\xE4gu t\xE4iesti \xE4ra. Sinu kaamera, sinu v\xE4limus.",
42373  "home.marketing.host.title": "Sinu ruum,\nsinu reeglid.",
42374  "home.marketing.host.body": "Pane ruum lukku, vaigista kedagi v\xF5i viska nad \xFCldse v\xE4lja. Hostil on kontroll.",
42375  "home.marketing.host.locked": "Ruum lukus",
42376  "home.marketing.host.waiting_to_join": "Ootab liitumist",
42377  "home.marketing.host.wants_to_join": "tahab liituda",
42378  "home.marketing.anything.title": "P\xE4riselt, milleks iganes.",
42379  "home.marketing.anything.body": "\xD5ppimiseks, m\xE4ngu\xF5htuteks, t\xF6\xF6 standupideks, koos vaatamiseks \u2014 v\xF5i lihtsalt t\u0161illimiseks.",
42380  "home.marketing.use_case.study_group": "\u{1F4DA} \xF5ppegrupp",
42381  "home.marketing.use_case.game_night": "\u{1F3AE} m\xE4ngu\xF5htu",
42382  "home.marketing.use_case.standup": "\u{1F4BC} standup",
42383  "home.marketing.use_case.watch_party": "\u{1F37F} watch party",
42384  "home.marketing.use_case.catch_up": "\u2615 jutuajamine",
42385  "home.marketing.use_case.jam_session": "\u{1F3B8} j\xE4mm",
42386  "home.marketing.use_case.book_club": "\u{1F4D6}
42386 raamatuklubi",
42387  "home.marketing.use_case.coworking": "\u{1F4BB} co-working",
42388  "ended.heading": "k\xF5ne l\xE4bi",
42389  "ended.left": "sa lahkusid ruumist.",
42390  "ended.room_ended": "{title} on sinu jaoks l\xE4bi.",
42391  "ended.rejoin": "liitu uuesti",
42392  "ended.rejoining": "liitun uuesti...",
42393  "ended.home": "tagasi avalehele",
42394  "call.connecting": "\xFChendan",
42395  "call.waiting": "ootan teisi",
42396  "call.invite_code": "kutsekood",
42397  "call.audio_on": "heli sees",
42398  "call.muted": "vaigistatud",
42399  "call.listening": "Kuulab",
42400  "call.audio_muted": "Heli vaigistatud",
42401  "call.speaking": "r\xE4\xE4gib",
42402  "call.you": "sina",
42403  "call.you_label": "Sina",
42404  "call.you_suffix": "(sina)",
42405  "call.chat_placeholder": "saada s\xF5num...",
42406  "call.guest": "k\xFClaline",
42407  "call.room_fallback": "ruum",
42408  "call.focus_view": "Fookusvaade",
42409  "call.grid_view": "Ruudustik",
42410  "call.swap_main_video": "Vaheta peamist videot",
42411  "call.open_chat": "Ava chat",
42412  "call.close_chat": "Sulge chat",
42413  "call.leave_room": "Lahku ruumist",
42414  "call.confirm_leave": "Lahkud?",
42415  "call.mic_on": "Mikrofon sees",
42416  "call.muted_label": "Vaigistatud",
42417  "call.camera_off": "Kaamera v\xE4ljas",
42418  "call.connect_failed": "\xDChendus eba\xF5nnestus \u2014 kontrolli netti ja proovi uuesti.",
42419  "call.camera_access_failed": "Ei saanud kaamerale ligi. Vaata brauseri \xF5igused \xFCle ja proovi uuesti.",
42420  "call.recording_failed": "Salvestamine ei alanud. K\xF5ne j\xE4tkub ilma selleta.",
42421  "call.initialize_failed": "K\xF5ne alustamisel l\xE4ks midagi nihu. V\xE4rskenda lehte ja proovi uuesti.",
42422  "call.participants": "Osalejad",
42423  "call.open_participants": "Ava osalejad",
42424  "call.close_participants": "Sulge osalejad",
42425  "call.lock_room": "Pane ruum lukku",
42426  "call.unlock_room": "Tee ruum lahti",
42427  "call.locked": "lukus",
42428  "call.unlocked": "avatud",
42429  "call.kick_member": "Eemalda ruumist",
42430  "call.mute_member": "Vaigista",
42431  "call.unmute_member": "V\xF5ta vaigistus maha",
42432  "call.muted_by_host": "Hosti poolt vaigistatud",
42433  "call.waiting_to_join": "Ootab liitumist",
42434  "call.approve": "Luba sisse",
42435  "call.deny": "Keeldu",
42436  "call.profile_actions": "Profiili tegevused",
42437  "call.profile_in_room": "Ruumis",
42438  "call.profile_role_host": "Host",
42439  "call.profile_role_you": "Sina",
42440  "call.profile_action_mute": "Vaigista nende heli",
42441  "call.profile_action_mute_meta": "Ainult sinu jaoks \u2014 nad ei saa teada",
42442  "call.profile_action_dm": "1:1 DM",
42443  "call.profile_action_dm_meta": "Alusta privaatset vestlust",
42444  "call.profile_action_view": "Vaata kogu profiili",
42445  "call.profile_action_view_meta": "Bio, keeled, varasemad sessioonid",
42446  "call.profile_action_report": "Raporteeri",
42447  "call.profile_action_report_meta": "M\xE4rgi modereerimiseks",
42448  "call.profile_sheet_close": "Sulge profiili tegevused",
42449  "call.profile_open_actions": "Ava profiili tegevused",
42450  "call.dm_title": "Privaats\xF5num",
42451  "call.dm_back": "Tagasi tegevuste juurde",
42452  "call.dm_close": "Sulge privaats\xF5num",
42453  "call.dm_status_online": "Online",
42454  "call.dm_in_room_with": "Selles ruumis",
42455  "call.dm_private_label": "Privaatne chat",
42456  "call.dm_private_meta": "Ainult teie kaks n\xE4ete neid s\xF5numeid",
42457  "call.dm_input_placeholder": "Saada privaats\xF5num\u2026",
42458  "call.dm_send": "Saada",
42459  "call.dm_just_now": "praegu",
42460  "call.dm_seen_just_now": "N\xE4htud just praegu",
42461  "call.dm_typing": "{name} kirjutab\u2026",
42462  "call.dm_minimize": "Minimeeri",
42463  "call.dm_active_indicator": "Ava vestlus",
42464  "call.dm_unread_messages": "{count} lugemata",
42465  "call.dm_toast_tap_to_open": "Vajuta, et avada",
42466  "call.dm_reopen_aria": "Ava uuesti vestlus kasutajaga {name}",
42467  "home.join_denied": "Host ei lasknud sind sisse.",
42468  "home.error.room_not_found": "Sellist ruumikoodi pole olemas.",
42469  "home.error.profile_required": "J\xE4tkamiseks pane oma profiil paika.",
42470  "home.cta.set_up_profile": "Seadista oma profiil",
42471  "home.profile_trigger_new": "Vajuta, et lisada oma info",
42472  "home.profile_trigger_new_aria": "Seadista oma profiil",
42473  "home.profile_trigger_edit_aria": "Muuda oma profiili",
42474  "profile.eyebrow_new": "\xFCtle tsau",
42475  "profile.eyebrow_edit": "sinu profiil",
42476  "profile.title_new": "Tee see enda omaks.",
42477  "profile.title_edit": "Muuda profiili",
42478  "profile.subtitle": "Paar kiiret detaili, et teised teaks, kellega nad kohtuvad.",
42479  "profile.add_photo": "Lisa pilt",
42480  "profile.add_photo_soon": "pildid tulevad varsti",
42481  "profile.photo_empty": "vajuta, et lisada pilt",
42482  "profile.photo_ready": "pilt valmis",
42483  "profile.photo_save_first": "salvesta profiil enne pildi \xFCleslaadimist",
42484  "profile.photo_crop_caption": "kadreeri oma pilt",
42485  "profile.photo_auto_caption": "lohista ja suumi, salvestame automaatselt",
42486  "profile.photo_upload": "Lae pilt \xFCles",
42487  "profile.photo_replace": "Vaheta pilti",
42488  "profile.photo_remove": "Eemalda pilt",
42489  "profile.photo_cancel": "T\xFChista",
42490  "profile.photo_save": "Salvesta pilt",
42491  "profile.photo_uploading": "Laen pilti \xFCles\u2026",
42492  "profile.photo_removing": "Eemaldan pilti\u2026",
42493  "profile.photo_choose_another": "Vali teine",
42494  "profile.photo_drag_hint": "Lohista pilt ringi sisse. Muudatused salvestuvad automaatselt.",
42495  "profile.photo_zoom": "Suumi",
42496  "profile.photo_horizontal": "Horisontaalne l\xF5ige",
42497  "profile.photo_vertical": "Vertikaalne l\xF5ige",
42498  "profile.name_label": "Nimi",
42499  "profile.name_placeholder": "Kuidas me sind kutsume?",
42500  "profile.gender_label": "Ma olen",
42501  "profile.gender.woman": "Naine",
42502  "profile.gender.man": "Mees",
42503  "profile.gender.unspecified": "Eelistan mitte \xF6elda",
42504  "profile.bio_label": "Bio",
42505  "profile.bio_optional": "valikuline",
42506  "profile.bio_placeholder": "Keeled, mida r\xE4\xE4gid, mis sulle meeldib, mida iganes\u2026",
42507  "profile.cta_new": "L\xE4hme",
42508  "profile.cta_edit": "Salvesta muudatused",
42509  "profile.saving": "Salvestan\u2026",
42510  "profile.close": "Sulge",
42511  "profile.error.save_failed": "Ei saanud profiili salvestada. Proovi uuesti.",
42512  "profile.error.avatar_invalid_type": "Vali PNG, JPEG, GIF v\xF5i WebP pilt.",
42513  "profile.error.avatar_too_large": "Vali pilt, mis on v\xE4iksem kui 5 MB.",
42514  "profile.error.avatar_too_small": "Vali pilt, mis on v\xE4hemalt 96x96 pikslit.",
42515  "profile.error.avatar_load_failed": "Me ei suutnud seda pilti lugeda. Proovi teist faili.",
42516  "profile.error.avatar_failed": "Ei saanud pilti \xFCles laadida. Proovi uuesti.",
42517  "profile.error.avatar_remove_failed": "Ei saanud pilti eemaldada. Proovi uuesti.",
42518  "effects.title": "Efektid",
42519  "effects.soft": "Pehme fookus",
42520  "effects.vignette": "Vinjett",
42521  "effects.face": "N\xE4o blur",
42522  "effects.face_preview_only": "N\xE4o blur (ainult eelvaade)",
42523  "effects.face_viewer_side": "N\xE4o blur (vaataja poolt)",
42524  "effects.face_strength": "N\xE4o bluri tugevus",
42525  "effects.grade.off": "V\xC4LJAS",
42526  "effects.grade.pop": "POP",
42527  "effects.grade.warm": "SOE",
42528  "effects.grade.cool": "K\xDCLM",
42529  "effects.grade.bw": "M&V",
42530  "camera.off": "kaamera on v\xE4ljas",
42531  "camera.check": "kontrolli kaamerat",
42532  "camera.retry": "proovi kaamerat uuesti",
42533  "camera.ready": "kaamera valmis",
42534  "camera.idle.title": "Pane kaamera t\xF6\xF6le",
42535  "camera.idle.hint": "K\xFCsime brauserilt luba, kui oled valmis.",
42536  "camera.idle.button": "Pane kaamera t\xF6\xF6le",
42537  "camera.status.idle": "Ootan sind",
42538  "camera.status.off": "Kaamera on v\xE4ljas",
42539  "camera.status.loading": "K\xFCsin kaamerale ligip\xE4\xE4su...",
42540  "camera.status.denied": "Luba brauseris kaamerale ligip\xE4\xE4s ja proovi uuesti.",
42541  "camera.status.error": "Kaamera eelvaade eba\xF5nnestus. Proovi uuesti.",
42542  "camera.status.unsupported": "See brauser ei toeta kaamerat.",
42543  "camera.status.insecure": "Kaamera vajab HTTPS-i v\xF5i localhosti.",
42544  "camera.status.attach_failed": "Kaamera eelvaadet ei saanud k\xE4ivitada. Proovi uuesti.",
42545  "camera.guest_name_placeholder": "K\xFClalise nimi",
42546  "camera.flip": "Vaheta kaamerat",
42547  "camera.save_name": "Salvesta",
42548  "camera.edit_name": "Muuda nime",
42549  "mic.on": "L\xFClita mikker v\xE4lja",
42550  "mic.off": "L\xFClita mikker sisse",
42551  "video.on": "L\xFClita kaamera v\xE4lja",
42552  "video.off": "L\xFClita kaamera sisse",
42553  "chat.title": "chat",
42554  "chat.close": "Sulge chat",
42555  "chat.loading": "laen...",
42556  "chat.load_earlier": "lae varasemad",
42557  "chat.empty": "s\xF5numeid veel pole",
42558  "chat.send_error": "S\xF5num ei l\xE4inud teele \u2014 proovi uuesti.",
42559  "chat.input_placeholder": "kirjuta s\xF5num...",
42560  "room.host": "Host",
42561  "app.room_default_title": "Loo ruum",
42562  "app.chat_connection_rejected": "Chat ei \xFChendunud \u2014 proovi lehte v\xE4rskendada.",
42563  "app.copy_failed": "Lingi kopeerimine eba\xF5nnestus. Proovi see ise m\xE4rkida ja kopeerida.",
42564  "app.chat_not_connected": "Chat pole veel \xFChendatud. Oota hetk ja proovi uuesti.",
42565  "footer.terms": "Kasutustingimused",
42566  "footer.copyright": "\xA9 2026 Yano.AI"
42567};
42568
42569// app/javascript/yano/locales/fr.js
42570var fr_default = {
42571  "home.heading.default": "rejoins l'appel",
42572  "home.heading.loading": "cr\xE9ation de la room...",
42573  "home.heading.join": "pr\xEAt \xE0 rejoindre ?",
42574  "home.heading.joined": "t'y es",
42575  "home.heading.pending": "en attente de l'h\xF4te",
42576  "home.body.default": "cr\xE9e une room, l\xE2che le lien, chill.",
42577  "home.body.loading": "deux sec, on pr\xE9pare la room.",
42578  "home.body.join": "check ta cam et ton micro, puis lance-toi.",
42579  "home.body.joined": "la room est live. partage le lien ou vas-y direct.",
42580  "home.body.joined_in_room": "dans la room \u2014 lance-toi ou partage le lien.",
42581  "home.body.pending": "la room est verrouill\xE9e. l'h\xF4te va te faire entrer.",
42582  "home.cta.create": "Cr\xE9er une room",
42583  "home.cta.join": "Rejoindre la room",
42584  "home.cta.enter": "Entrer",
42585  "home.cta.creating": "Cr\xE9ation...",
42586  "home.cta.joining": "Connexion...",
42587  "home.cta.opening": "Ouverture...",
42588  "home.cta.pending": "En attente de validation...",
42589  "home.copy_link": "copier le lien",
42590  "home.copied": "copi\xE9 !",
42591  "home.leave": "quitter la room",
42592  "home.back": "retour",
42593  "home.no_participants": "y'a personne pour l'instant",
42594  "home.join_by_code": "rejoindre avec un code",
42595  "home.code_placeholder": "entre le code",
42596  "home.name_placeholder": "ton pr\xE9nom",
42597  "home.people_one": "personne",
42598  "home.people_other": "personnes",
42599  "home.marketing.invite.title": "Cr\xE9e une room,\npartage le lien.",
42600  "home.marketing.invite.body": "Un tap pour lancer. Partage le lien \xE0 tes potes et n'importe qui peut rejoindre \u2014 pas de t\xE9l\xE9chargement, pas d'inscription.",
42601  "home.marketing.invite.preview_url": "yano.ai/ROOM",
42602  "home.marketing.look.title": "G\xE8re ton\npropre style.",
42603  "home.marketing.look.body": "Filtres couleurs, lissage, vignette \u2014 ou floute carr\xE9ment ton visage. Ta cam, ton style.",
42604  "home.marketing.host.title": "Ton espace,\ntes r\xE8gles.",
42605  "home.marketing.host.body": "Verrouille la room, mute quelqu'un ou vire-le carr\xE9ment. L'h\xF4te garde le contr\xF4le.",
42606  "home.marketing.host.locked": "Room verrouill\xE9e",
42607  "home.marketing.host.waiting_to_join": "En attente",
42608  "home.marketing.host.wants_to_join": "veut rejoindre",
42609  "home.marketing.anything.title": "Pour tout, en vrai.",
42610  "home.marketing.anything.body": "Sessions r\xE9visions, soir\xE9es gaming, points taf, mater un truc ensemble \u2014 ou juste chiller.",
42611  "home.marketing.use_case.study_group": "\u{1F4DA} groupe de r\xE9visions",
42612  "home.marketing.use_case.game_night": "\u{1F3AE} soir\xE9e gaming",
42613  "home.marketing.use_case.standup": "\u{1F4BC} point taf",
42614  "home.marketing.use_case.watch_party": "\u{1F37F} watch party",
42615  "home.marketing.use_case.catch_up": "\u2615 papotage",
42616  "home.marketing.use_case.jam_session": "\u{1F3B8} jam session",
42617  "home.marketing.use_case.book_club": "\u{1F4D6}
42617 club de lecture",
42618  "home.marketing.use_case.coworking": "\u{1F4BB} co-working",
42619  "ended.heading": "appel termin\xE9",
42620  "ended.left": "t'as quitt\xE9 la room.",
42621  "ended.room_ended": "{title} est termin\xE9 pour toi.",
42622  "ended.rejoin": "revenir",
42623  "ended.rejoining": "reconnexion...",
42624  "ended.home": "retour \xE0 l'accueil",
42625  "call.connecting": "connexion",
42626  "call.waiting": "en attente des autres",
42627  "call.invite_code": "code d'invit",
42628  "call.audio_on": "son activ\xE9",
42629  "call.muted": "mut\xE9",
42630  "call.listening": "\xC0 l'\xE9coute",
42631  "call.audio_muted": "Son coup\xE9",
42632  "call.speaking": "parle",
42633  "call.you": "toi",
42634  "call.you_label": "Toi",
42635  "call.you_suffix": "(toi)",
42636  "call.chat_placeholder": "envoie un message...",
42637  "call.guest": "invit\xE9",
42638  "call.room_fallback": "room",
42639  "call.focus_view": "Vue focus",
42640  "call.grid_view": "Vue grille",
42641  "call.swap_main_video": "Changer la vid\xE9o principale",
42642  "call.open_chat": "Ouvrir le chat",
42643  "call.close_chat": "Fermer le chat",
42644  "call.leave_room": "Quitter la room",
42645  "call.confirm_leave": "Quitter ?",
42646  "call.mic_on": "Micro activ\xE9",
42647  "call.muted_label": "Mut\xE9",
42648  "call.camera_off": "Cam\xE9ra coup\xE9e",
42649  "call.connect_failed": "\xC9chec de connexion \u2014 check ton internet et r\xE9essaie.",
42650  "call.camera_access_failed": "Impossible d'acc\xE9der \xE0 ta cam. Check les permissions du navigateur et r\xE9essaie.",
42651  "call.recording_failed": "L'enregistrement n'a pas pu se lancer. L'appel continue sans.",
42652  "call.initialize_failed": "Un truc a merd\xE9 au lancement de l'appel. Actualise et r\xE9essaie.",
42653  "call.participants": "Participants",
42654  "call.open_participants": "Voir les participants",
42655  "call.close_participants": "Fermer les participants",
42656  "call.lock_room": "Verrouiller la room",
42657  "call.unlock_room": "D\xE9verrouiller la room",
42658  "call.locked": "verrouill\xE9e",
42659  "call.unlocked": "ouverte",
42660  "call.kick_member": "Virer de la room",
42661  "call.mute_member": "Mute",
42662  "call.unmute_member": "D\xE9mute",
42663  "call.muted_by_host": "Mut\xE9 par l'h\xF4te",
42664  "call.waiting_to_join": "Veut rejoindre",
42665  "call.approve": "Accepter",
42666  "call.deny": "Refuser",
42667  "call.profile_actions": "Actions du profil",
42668  "call.profile_in_room": "Dans la room",
42669  "call.profile_role_host": "H\xF4te",
42670  "call.profile_role_you": "Toi",
42671  "call.profile_action_mute": "Couper son micro",
42672  "call.profile_action_mute_meta": "Juste pour toi \u2014 la personne ne le saura pas",
42673  "call.profile_action_dm": "DM",
42674  "call.profile_action_dm_meta": "Lancer un chat priv\xE9",
42675  "call.profile_action_view": "Voir le profil complet",
42676  "call.profile_action_view_meta": "Bio, langues, sessions pass\xE9es",
42677  "call.profile_action_report": "Signaler",
42678  "call.profile_action_report_meta": "Signaler \xE0 la mod\xE9ration",
42679  "call.profile_sheet_close": "Fermer les actions",
42680  "call.profile_open_actions": "Ouvrir les actions",
42681  "call.dm_title": "Message priv\xE9",
42682  "call.dm_back": "Retour aux actions",
42683  "call.dm_close": "Fermer le DM",
42684  "call.dm_status_online": "En ligne",
42685  "call.dm_in_room_with": "Dans cette room",
42686  "call.dm_private_label": "Chat priv\xE9",
42687  "call.dm_private_meta": "Y'a que vous deux qui voyez ces messages",
42688  "call.dm_input_placeholder": "Envoie un DM\u2026",
42689  "call.dm_send": "Envoyer",
42690  "call.dm_just_now": "\xE0 l'instant",
42691  "call.dm_seen_just_now": "Vu \xE0 l'instant",
42692  "call.dm_typing": "{name} \xE9crit\u2026",
42693  "call.dm_minimize": "R\xE9duire",
42694  "call.dm_active_indicator": "Ouvrir la conversation",
42695  "call.dm_unread_messages": "{count} non lu(s)",
42696  "call.dm_toast_tap_to_open": "Appuie pour ouvrir",
42697  "call.dm_reopen_aria": "Rouvrir la conversation avec {name}",
42698  "home.join_denied": "L'h\xF4te ne t'a pas laiss\xE9 entrer.",
42699  "home.error.room_not_found": "Ce code de room n'existe pas.",
42700  "home.error.profile_required": "Configure ton profil pour continuer.",
42701  "home.cta.set_up_profile": "Configurer ton profil",
42702  "home.profile_trigger_new": "Appuie pour ajouter tes infos",
42703  "home.profile_trigger_new_aria": "Configurer ton profil",
42704  "home.profile_trigger_edit_aria": "Modifier ton profil",
42705  "profile.eyebrow_new": "fais coucou",
42706  "profile.eyebrow_edit": "ton profil",
42707  "profile.title_new": "\xC0 ton image.",
42708  "profile.title_edit": "Modifier le profil",
42709  "profile.subtitle": "Quelques infos rapides pour que les autres sachent \xE0 qui ils parlent.",
42710  "profile.add_photo": "Ajouter une photo",
42711  "profile.add_photo_soon": "les photos arrivent bient\xF4t",
42712  "profile.photo_empty": "appuie pour ajouter une photo",
42713  "profile.photo_ready": "photo pr\xEAte",
42714  "profile.photo_save_first": "sauvegarde ton profil avant d'ajouter une photo",
42715  "profile.photo_crop_caption": "cadre ta photo",
42716  "profile.photo_auto_caption": "glisse et zoome, on sauvegarde automatiquement",
42717  "profile.photo_upload": "Importer une photo",
42718  "profile.photo_replace": "Changer de photo",
42719  "profile.photo_remove": "Supprimer la photo",
42720  "profile.photo_cancel": "Annuler",
42721  "profile.photo_save": "Enregistrer la photo",
42722  "profile.photo_uploading": "Importation de la photo\u2026",
42723  "profile.photo_removing": "Suppression de la photo\u2026",
42724  "profile.photo_choose_another": "En choisir une autre",
42725  "profile.photo_drag_hint": "Glisse la photo pour la centrer dans le cercle. \xC7a s'enregistre tout seul.",
42726  "profile.photo_zoom": "Zoom",
42727  "profile.photo_horizontal": "Recadrage horizontal",
42728  "profile.photo_vertical": "Recadrage vertical",
42729  "profile.name_label": "Pr\xE9nom",
42730  "profile.name_placeholder": "On t'appelle comment ?",
42731  "profile.gender_label": "Je suis",
42732  "profile.gender.woman": "Une femme",
42733  "profile.gender.man": "Un homme",
42734  "profile.gender.unspecified": "Je pr\xE9f\xE8re ne pas le dire",
42735  "profile.bio_label": "Bio",
42736  "profile.bio_optional": "facultatif",
42737  "profile.bio_placeholder": "Les langues que tu parles, ce que tu kiffes, ce que tu veux\u2026",
42738  "profile.cta_new": "C'est parti",
42739  "profile.cta_edit": "Enregistrer",
42740  "profile.saving": "Enregistrement\u2026",
42741  "profile.close": "Fermer",
42742  "profile.error.save_failed": "Impossible d'enregistrer ton profil. R\xE9essaie.",
42743  "profile.error.avatar_invalid_type": "Choisis une image PNG, JPEG, GIF ou WebP.",
42744  "profile.error.avatar_too_large": "Choisis une image de moins de 5 Mo.",
42745  "profile.error.avatar_too_small": "Choisis une image d'au moins 96x96 pixels.",
42746  "profile.error.avatar_load_failed": "On n'a pas pu lire cette image. Essaie un autre fichier.",
42747  "profile.error.avatar_failed": "Impossible d'importer ta photo. R\xE9essaie.",
42748  "profile.error.avatar_remove_failed": "Impossible de supprimer ta photo. R\xE9essaie.",
42749  "effects.title": "Effets",
42750  "effects.soft": "Lissage",
42751  "effects.vignette": "Vignette",
42752  "effects.face": "Flou visage",
42753  "effects.face_preview_only": "Flou visage (aper\xE7u uniquement)",
42754  "effects.face_viewer_side": "Flou visage (c\xF4t\xE9 spectateur)",
42755  "effects.face_strength": "Intensit\xE9 du flou",
42756  "effects.grade.off": "OFF",
42757  "effects.grade.pop": "POP",
42758  "effects.grade.warm": "CHAUD",
42759  "effects.grade.cool": "FROID",
42760  "effects.grade.bw": "N&B",
42761  "camera.off": "la cam est coup\xE9e",
42762  "camera.check": "check ta cam",
42763  "camera.retry": "r\xE9essayer la cam",
42764  "camera.ready": "cam pr\xEAte",
42765  "camera.idle.title": "Active ta cam\xE9ra",
42766  "camera.idle.hint": "On demandera l'acc\xE8s \xE0 ton navigateur quand tu seras pr\xEAt.",
42767  "camera.idle.button": "Activer la cam\xE9ra",
42768  "camera.status.idle": "On t'attend",
42769  "camera.status.off": "La cam\xE9ra est coup\xE9e",
42770  "camera.status.loading": "Demande d'acc\xE8s \xE0 la cam\xE9ra...",
42771  "camera.status.denied": "Autorise l'acc\xE8s \xE0 la cam dans ton navigateur, puis r\xE9essaie.",
42772  "camera.status.error": "L'aper\xE7u de la cam a plant\xE9. R\xE9essaie.",
42773  "camera.status.unsupported": "Ce navigateur ne g\xE8re pas l'acc\xE8s \xE0 la cam\xE9ra.",
42774  "camera.status.insecure": "L'acc\xE8s \xE0 la cam n\xE9cessite HTTPS ou localhost.",
42775  "camera.status.attach_failed": "Impossible de lancer l'aper\xE7u de la cam. R\xE9essaie.",
42776  "camera.guest_name_placeholder": "Nom de l'invit\xE9",
42777  "camera.flip": "Tourner la cam\xE9ra",
42778  "camera.save_name": "Enregistrer",
42779  "camera.edit_name": "Modifier le nom",
42780  "mic.on": "Couper le micro",
42781  "mic.off": "Activer le micro",
42782  "video.on": "Couper la cam\xE9ra",
42783  "video.off": "Activer la cam\xE9ra",
42784  "chat.title": "chat",
42785  "chat.close": "Fermer le chat",
42786  "chat.loading": "chargement...",
42787  "chat.load_earlier": "charger les messages pr\xE9c\xE9dents",
42788  "chat.empty": "aucun message pour l'instant",
42789  "chat.send_error": "Le message n'est pas parti \u2014 r\xE9essaie.",
42790  "chat.input_placeholder": "\xE9cris un message...",
42791  "room.host": "H\xF4te",
42792  "app.room_default_title": "Cr\xE9er une room",
42793  "app.chat_connection_rejected": "Le chat n'a pas pu se co \u2014 essaie d'actualiser.",
42794  "app.copy_failed": "Impossible de copier le lien. Essaie de le s\xE9lectionner et de le copier \xE0 la main.",
42795  "app.chat_not_connected": "Le chat n'est pas encore co. Attends un instant et r\xE9essaie.",
42796  "footer.terms": "CGU",
42797  "footer.copyright": "\xA9 2026 Yano.AI"
42798};
42799
42800// app/javascript/yano/locales/it.js
42801var it_default = {
42802  "home.heading.default": "entra in call",
42803  "home.heading.loading": "Apro la stanza...",
42804  "home.heading.join": "pronto a entrare?",
42805  "home.heading.joined": "sei dentro",
42806  "home.heading.pending": "aspettando l'host",
42807  "home.body.default": "crea una stanza, gira il link, chill.",
42808  "home.body.loading": "un sec, preparo la stanza.",
42809  "home.body.join": "check a cam e mic, poi buttati.",
42810  "home.body.joined": "la stanza \xE8 live. gira il link o inizia.",
42811  "home.body.joined_in_room": "nella stanza \u2014 buttati o gira il link.",
42812  "home.body.pending": "la stanza \xE8 chiusa. l'host ti far\xE0 entrare.",
42813  "home.cta.create": "Crea stanza",
42814  "home.cta.join": "Entra",
42815  "home.cta.enter": "Entra nella stanza",
42816  "home.cta.creating": "Sto creando...",
42817  "home.cta.joining": "Entrando...",
42818  "home.cta.opening": "Aprendo...",
42819  "home.cta.pending": "In attesa dell'ok...",
42820  "home.copy_link": "copia link",
42821  "home.copied": "copiato!",
42822  "home.leave": "esci dalla stanza",
42823  "home.back": "indietro",
42824  "home.no_participants": "ancora nessuno qui",
42825  "home.join_by_code": "entra con codice",
42826  "home.code_placeholder": "inserisci codice",
42827  "home.name_placeholder": "il tuo nome",
42828  "home.people_one": "persona",
42829  "home.people_other": "persone",
42830  "home.marketing.invite.title": "Crea una stanza,\ncondividi il link.",
42831  "home.marketing.invite.body": "Basta un tap. Gira il link agli amici e chiunque pu\xF2 entrare \u2014 zero download, zero registrazioni.",
42832  "home.marketing.invite.preview_url": "yano.ai/ROOM",
42833  "home.marketing.look.title": "Appari come\nvuoi tu.",
42834  "home.marketing.look.body": "Color grading, filtri soft, vignettatura \u2014 o sfoca del tutto la faccia. La tua cam, il tuo stile.",
42835  "home.marketing.host.title": "Il tuo spazio,\nle tue regole.",
42836  "home.marketing.host.body": "Chiudi la stanza, muta qualcuno o buttalo fuori. L'host ha il controllo totale.",
42837  "home.marketing.host.locked": "Stanza chiusa",
42838  "home.marketing.host.waiting_to_join": "In attesa di entrare",
42839  "home.marketing.host.wants_to_join": "vuole entrare",
42840  "home.marketing.anything.title": "Per qualsiasi cosa, davvero.",
42841  "home.marketing.anything.body": "Gruppi studio, serate gaming, standup di lavoro, watch party \u2014 o giusto per chillare.",
42842  "home.marketing.use_case.study_group": "\u{1F4DA} gruppo studio",
42843  "home.marketing.use_case.game_night": "\u{1F3AE} serata gaming",
42844  "home.marketing.use_case.standup": "\u{1F4BC} standup",
42845  "home.marketing.use_case.watch_party": "\u{1F37F} watch party",
42846  "home.marketing.use_case.catch_up": "\u2615 chiacchierata",
42847  "home.marketing.use_case.jam_session": "\u{1F3B8} jam session",
42848  "home.marketing.use_case.book_club": "\u{1F4D6}
42848 club del libro",
42849  "home.marketing.use_case.coworking": "\u{1F4BB} co-working",
42850  "ended.heading": "call finita",
42851  "ended.left": "sei uscito dalla stanza.",
42852  "ended.room_ended": "{title} \xE8 finita per te.",
42853  "ended.rejoin": "rientra",
42854  "ended.rejoining": "rientrando...",
42855  "ended.home": "torna alla home",
42856  "call.connecting": "connessione...",
42857  "call.waiting": "in attesa degli altri",
42858  "call.invite_code": "codice invito",
42859  "call.audio_on": "audio on",
42860  "call.muted": "mutato",
42861  "call.listening": "In ascolto",
42862  "call.audio_muted": "Audio mutato",
42863  "call.speaking": "sta parlando",
42864  "call.you": "tu",
42865  "call.you_label": "Tu",
42866  "call.you_suffix": "(tu)",
42867  "call.chat_placeholder": "scrivi un messaggio...",
42868  "call.guest": "ospite",
42869  "call.room_fallback": "stanza",
42870  "call.focus_view": "Vista focus",
42871  "call.grid_view": "Vista griglia",
42872  "call.swap_main_video": "Cambia video principale",
42873  "call.open_chat": "Apri chat",
42874  "call.close_chat": "Chiudi chat",
42875  "call.leave_room": "Esci dalla stanza",
42876  "call.confirm_leave": "Uscire?",
42877  "call.mic_on": "Mic on",
42878  "call.muted_label": "Mutato",
42879  "call.camera_off": "Cam off",
42880  "call.connect_failed": "Connessione fallita \u2014 checka internet e riprova.",
42881  "call.camera_access_failed": "Impossibile accedere alla cam. Controlla i permessi del browser e riprova.",
42882  "call.recording_failed": "Impossibile avviare la registrazione. La call andr\xE0 avanti senza.",
42883  "call.initialize_failed": "Qualcosa \xE8 andato storto nell'avviare la call. Ricarica la pagina e riprova.",
42884  "call.participants": "Partecipanti",
42885  "call.open_participants": "Apri partecipanti",
42886  "call.close_participants": "Chiudi partecipanti",
42887  "call.lock_room": "Chiudi stanza",
42888  "call.unlock_room": "Apri stanza",
42889  "call.locked": "chiusa",
42890  "call.unlocked": "aperta",
42891  "call.kick_member": "Rimuovi dalla stanza",
42892  "call.mute_member": "Muta",
42893  "call.unmute_member": "Smuta",
42894  "call.muted_by_host": "Mutato dall'host",
42895  "call.waiting_to_join": "In attesa di entrare",
42896  "call.approve": "Approva",
42897  "call.deny": "Rifiuta",
42898  "call.profile_actions": "Azioni profilo",
42899  "call.profile_in_room": "Nella stanza",
42900  "call.profile_role_host": "Host",
42901  "call.profile_role_you": "Tu",
42902  "call.profile_action_mute": "Muta il suo audio",
42903  "call.profile_action_mute_meta": "Solo per te \u2014 non lo sapr\xE0",
42904  "call.profile_action_dm": "DM 1:1",
42905  "call.profile_action_dm_meta": "Inizia una chat privata",
42906  "call.profile_action_view": "Vedi profilo completo",
42907  "call.profile_action_view_meta": "Bio, lingue, sessioni passate",
42908  "call.profile_action_report": "Segnala",
42909  "call.profile_action_report_meta": "Segnala ai moderatori",
42910  "call.profile_sheet_close": "Chiudi azioni profilo",
42911  "call.profile_open_actions": "Apri azioni profilo",
42912  "call.dm_title": "Messaggio diretto",
42913  "call.dm_back": "Torna alle azioni",
42914  "call.dm_close": "Chiudi messaggio diretto",
42915  "call.dm_status_online": "Online",
42916  "call.dm_in_room_with": "In questa stanza",
42917  "call.dm_private_label": "Chat privata",
42918  "call.dm_private_meta": "Solo voi due potete vedere questi messaggi",
42919  "call.dm_input_placeholder": "Manda un messaggio privato\u2026",
42920  "call.dm_send": "Invia",
42921  "call.dm_just_now": "ora",
42922  "call.dm_seen_just_now": "Visto ora",
42923  "call.dm_typing": "{name} sta scrivendo\u2026",
42924  "call.dm_minimize": "Riduci",
42925  "call.dm_active_indicator": "Apri conversazione",
42926  "call.dm_unread_messages": "{count} non letti",
42927  "call.dm_toast_tap_to_open": "Tocca per aprire",
42928  "call.dm_reopen_aria": "Riapri conversazione con {name}",
42929  "home.join_denied": "L'host non ti ha fatto entrare.",
42930  "home.error.room_not_found": "Questo codice stanza non esiste.",
42931  "home.error.profile_required": "Imposta il tuo profilo per continuare.",
42932  "home.cta.set_up_profile": "Imposta il tuo profilo",
42933  "home.profile_trigger_new": "Tocca per aggiungere i tuoi dettagli",
42934  "home.profile_trigger_new_aria": "Imposta il tuo profilo",
42935  "home.profile_trigger_edit_aria": "Modifica il tuo profilo",
42936  "profile.eyebrow_new": "saluta",
42937  "profile.eyebrow_edit": "il tuo profilo",
42938  "profile.title_new": "Fallo tuo.",
42939  "profile.title_edit": "Modifica profilo",
42940  "profile.subtitle": "Qualche info al volo per far sapere agli altri con chi stanno parlando.",
42941  "profile.add_photo": "Aggiungi foto",
42942  "profile.add_photo_soon": "foto in arrivo",
42943  "profile.photo_empty": "tocca per aggiungere una foto",
42944  "profile.photo_ready": "foto pronta",
42945  "profile.photo_save_first": "salva il profilo prima di caricare una foto",
42946  "profile.photo_crop_caption": "inquadra la foto",
42947  "profile.photo_auto_caption": "trascina e zooma, poi salviamo in automatico",
42948  "profile.photo_upload": "Carica foto",
42949  "profile.photo_replace": "Cambia foto",
42950  "profile.photo_remove": "Rimuovi foto",
42951  "profile.photo_cancel": "Annulla",
42952  "profile.photo_save": "Salva foto",
42953  "profile.photo_uploading": "Caricamento foto\u2026",
42954  "profile.photo_removing": "Rimozione foto\u2026",
42955  "profile.photo_choose_another": "Scegli un'altra",
42956  "profile.photo_drag_hint": "Trascina la foto per centrarla nel cerchio. Si salva in automatico.",
42957  "profile.photo_zoom": "Zoom",
42958  "profile.photo_horizontal": "Ritaglio orizzontale",
42959  "profile.photo_vertical": "Ritaglio verticale",
42960  "profile.name_label": "Nome",
42961  "profile.name_placeholder": "Come ti chiamiamo?",
42962  "profile.gender_label": "Sono",
42963  "profile.gender.woman": "Donna",
42964  "profile.gender.man": "Uomo",
42965  "profile.gender.unspecified": "Preferisco non dirlo",
42966  "profile.bio_label": "Bio",
42967  "profile.bio_optional": "opzionale",
42968  "profile.bio_placeholder": "Lingue che parli, cosa ti piace, qualsiasi cosa\u2026",
42969  "profile.cta_new": "Andiamo",
42970  "profile.cta_edit": "Salva modifiche",
42971  "profile.saving": "Salvataggio\u2026",
42972  "profile.close": "Chiudi",
42973  "profile.error.save_failed": "Impossibile salvare il profilo. Riprova.",
42974  "profile.error.avatar_invalid_type": "Scegli un'immagine PNG, JPEG, GIF o WebP.",
42975  "profile.error.avatar_too_large": "Scegli un'immagine pi\xF9 piccola di 5 MB.",
42976  "profile.error.avatar_too_small": "Scegli un'immagine di almeno 96x96 pixel.",
42977  "profile.error.avatar_load_failed": "Non riusciamo a leggere l'immagine. Prova un altro file.",
42978  "profile.error.avatar_failed": "Impossibile caricare la foto. Riprova.",
42979  "profile.error.avatar_remove_failed": "Impossibile rimuovere la foto. Riprova.",
42980  "effects.title": "Effetti",
42981  "effects.soft": "Soft focus",
42982  "effects.vignette": "Vignettatura",
42983  "effects.face": "Sfoca viso",
42984  "effects.face_preview_only": "Sfoca viso (solo anteprima)",
42985  "effects.face_viewer_side": "Sfoca viso (lato spettatore)",
42986  "effects.face_strength": "Intensit\xE0 sfocatura viso",
42987  "effects.grade.off": "OFF",
42988  "effects.grade.pop": "POP",
42989  "effects.grade.warm": "WARM",
42990  "effects.grade.cool": "COOL",
42991  "effects.grade.bw": "B&W",
42992  "camera.off": "la cam \xE8 spenta",
42993  "camera.check": "checka la cam",
42994  "camera.retry": "riprova cam",
42995  "camera.ready": "cam pronta",
42996  "camera.idle.title": "Accendi la cam",
42997  "camera.idle.hint": "Chiederemo l'accesso al browser quando ci sei.",
42998  "camera.idle.button": "Accendi cam",
42999  "camera.status.idle": "Ti stiamo aspettando",
43000  "camera.status.off": "La cam \xE8 spenta",
43001  "camera.status.loading": "Richiesta accesso alla cam...",
43002  "camera.status.denied": "Consenti l'accesso alla cam nel browser, poi riprova.",
43003  "camera.status.error": "Anteprima cam fallita. Riprova.",
43004  "camera.status.unsupported": "Questo browser non supporta l'accesso alla cam.",
43005  "camera.status.insecure": "L'accesso alla cam richiede HTTPS o localhost.",
43006  "camera.status.attach_failed": "Impossibile avviare l'anteprima della cam. Riprova.",
43007  "camera.guest_name_placeholder": "Nome ospite",
43008  "camera.flip": "Gira cam",
43009  "camera.save_name": "Salva",
43010  "camera.edit_name": "Modifica nome",
43011  "mic.on": "Spegni microfono",
43012  "mic.off": "Accendi microfono",
43013  "video.on": "Spegni cam",
43014  "video.off": "Accendi cam",
43015  "chat.title": "chat",
43016  "chat.close": "Chiudi chat",
43017  "chat.loading": "caricamento...",
43018  "chat.load_earlier": "carica precedenti",
43019  "chat.empty": "ancora nessun messaggio",
43020  "chat.send_error": "Messaggio non inviato \u2014 riprova.",
43021  "chat.input_placeholder": "scrivi un messaggio...",
43022  "room.host": "Host",
43023  "app.room_default_title": "Crea una stanza",
43024  "app.chat_connection_rejected": "Impossibile connettere la chat \u2014 prova a ricaricare.",
43025  "app.copy_failed": "Impossibile copiare il link. Prova a selezionarlo e copiarlo a mano.",
43026  "app.chat_not_connected": "La chat non \xE8 ancora connessa. Aspetta un attimo e riprova.",
43027  "footer.terms": "Termini & Condizioni",
43028  "footer.copyright": "\xA9 2026 Yano.AI"
43029};
43030
43031// app/javascript/yano/locales/ja.js
43032var ja_default = {
43033  "home.heading.default": "\u30B5\u30AF\u30C3\u3068\u8A71\u305D\u3046",
43034  "home.heading.loading": "\u30EB\u30FC\u30E0\u6E96\u5099\u4E2D...",
43035  "home.heading.join": "\u53C2\u52A0\u3059\u308B\uFF1F",
43036  "home.heading.joined": "\u5165\u5BA4\u5B8C\u4E86\uFF01",
43037  "home.heading.pending": "\u30DB\u30B9\u30C8\u5F85\u3061...",
43038  "home.body.default": "\u30EB\u30FC\u30E0\u3092\u4F5C\u3063\u3066\u30EA\u30F3\u30AF\u3092\u30B7\u30A7\u30A2\u3002\u3042\u3068\u306F\u697D\u3057\u3080\u3060\u3051\u3002",
43039  "home.body.loading": "\u3061\u3087\u3063\u3068\u5F85\u3063\u3066\u306D\u3001\u30EB\u30FC\u30E0\u3092\u6E96\u5099\u3057\u3066\u308B\u3088\u3002",
43040  "home.body.join": "\u30AB\u30E1\u30E9\u3068\u30DE\u30A4\u30AF\u3092\u78BA\u8A8D\u3057\u3066\u3001\u98DB\u3073\u8FBC\u3082\u3046\u3002",
43041  "home.body.joined": "\u30EB\u30FC\u30E0\u516C\u958B\u4E2D\u3002\u30EA\u30F3\u30AF\u3092\u30B7\u30A7\u30A2\u3057\u3066\u59CB\u3081\u3088\u3046\u3002",
43042  "home.body.joined_in_room": "\u30EB\u30FC\u30E0\u306B\u3044\u308B\u3088\u3002\u53C2\u52A0\u3059\u308B\u304B\u30EA\u30F3\u30AF\u3092\u30B7\u30A7\u30A2\u3057\u3066\u306D\u3002",
43043  "home.body.pending": "\u30EB\u30FC\u30E0\u306F\u30ED\u30C3\u30AF\u3055\u308C\u3066\u308B\u3088\u3002\u30DB\u30B9\u30C8\u304C\u5165\u308C\u3066\u304F\u308C\u308B\u307E\u3067\u5F85\u3063\u3066\u306D\u3002",
43044  "home.cta.create": "\u30EB\u30FC\u30E0\u3092\u4F5C\u308B",
43045  "home.cta.join": "\u30EB\u30FC\u30E0\u306B\u5165\u308B",
43046  "home.cta.enter": "\u5165\u5BA4\u3059\u308B",
43047  "home.cta.creating": "\u4F5C\u6210\u4E2D...",
43048  "home.cta.joining": "\u53C2\u52A0\u4E2D...",
43049  "home.cta.opening": "\u6E96\u5099\u4E2D...",
43050  "home.cta.pending": "\u627F\u8A8D\u5F85\u3061...",
43051  "home.copy_link": "\u30EA\u30F3\u30AF\u3092\u30B3\u30D4\u30FC",
43052  "home.copied": "\u30B3\u30D4\u30FC\u3057\u305F\u3088\uFF01",
43053  "home.leave": "\u9000\u51FA\u3059\u308B",
43054  "home.back": "\u623B\u308B",
43055  "home.no_participants": "\u307E\u3060\u8AB0\u3082\u3044\u306A\u3044\u3088",
43056  "home.join_by_code": "\u62DB\u5F85\u30B3\u30FC\u30C9\u3067\u53C2\u52A0",
43057  "home.code_placeholder": "\u30B3\u30FC\u30C9\u3092\u5165\u529B",
43058  "home.name_placeholder": "\u540D\u524D",
43059  "home.people_one": "\u4EBA",
43060  "home.people_other": "\u4EBA",
43061  "home.marketing.invite.title": "\u30EB\u30FC\u30E0\u3092\u4F5C\u3063\u3066\u3001\n\u30EA\u30F3\u30AF\u3092\u30B7\u30A7\u30A2\u3002",
43062  "home.marketing.invite.body": "\u30EF\u30F3\u30BF\u30C3\u30D7\u3067\u958B\u59CB\u3002\u53CB\u9054\u306B\u30EA\u30F3\u30AF\u3092\u9001\u308B\u3060\u3051\u3067\u8AB0\u3067\u3082\u53C2\u52A0\u3067\u304D\u308B\u3088\u3002\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3082\u767B\u9332\u3082\u4E0D\u8981\u3002",
43063  "home.marketing.invite.preview_url": "yano.ai/ROOM",
43064  "home.marketing.look.title": "\u81EA\u5206\u3089\u3057\u3044\n\u30B9\u30BF\u30A4\u30EB\u3067\u3002",
43065  "home.marketing.look.body": "\u30AB\u30E9\u30FC\u8ABF\u6574\u3001\u30BD\u30D5\u30C8\u30D5\u30A9\u30FC\u30AB\u30B9\u3001\u30D3\u30CD\u30C3\u30C8\u3001\u9854\u307C\u304B\u3057\u3082OK\u3002\u30AB\u30E1\u30E9\u3082\u898B\u305F\u76EE\u3082\u81EA\u5206\u597D\u307F\u306B\u3002",
43066  "home.marketing.host.title": "\u81EA\u5206\u306E\u30B9\u30DA\u30FC\u30B9\u3001\n\u81EA\u5206\u306E\u30EB\u30FC\u30EB\u3002",
43067  "home.marketing.host.body": "\u30EB\u30FC\u30E0\u306E\u30ED\u30C3\u30AF\u3001\u30DF\u30E5\u30FC\u30C8\u3001\u9000\u51FA\u3082\u81EA\u7531\u81EA\u5728\u3002\u30DB\u30B9\u30C8\u304C\u3059\u3079\u3066\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3067\u304D\u308B\u3088\u3002",
43068  "home.marketing.host.locked": "\u30EB\u30FC\u30E0\u30ED\u30C3\u30AF\u4E2D",
43069  "home.marketing.host.waiting_to_join": "\u53C2\u52A0\u5F85\u3061",
43070  "home.marketing.host.wants_to_join": "\u304C\u53C2\u52A0\u3057\u305F\u304C\u3063\u3066\u308B\u3088",
43071  "home.marketing.anything.title": "\u3076\u3063\u3061\u3083\u3051\u3001\u4F55\u306B\u3067\u3082\u4F7F\u3048\u308B\u3002",
43072  "home.marketing.anything.body": "\u52C9\u5F37\u4F1A\u3001\u30B2\u30FC\u30E0\u3001\u4ED5\u4E8B\u306EMTG\u3001\u540C\u6642\u8996\u8074\u3001\u305F\u3060\u306E\u96D1\u8AC7\u306B\u3082\u3002",
43073  "home.marketing.use_case.study_group": "\u{1F4DA} \u52C9\u5F37\u4F1A",
43074  "home.marketing.use_case.game_night": "\u{1F3AE} \u30B2\u30FC\u30E0",
43075  "home.marketing.use_case.standup": "\u{1F4BC} MTG",
43076  "home.marketing.use_case.watch_party": "\u{1F37F} \u540C\u6642\u8996\u8074",
43077  "home.marketing.use_case.catch_up": "\u2615 \u96D1\u8AC7",
43078  "home.marketing.use_case.jam_session": "\u{1F3B8} \u30BB\u30C3\u30B7\u30E7\u30F3",
43079  "home.marketing.use_case.book_club": "\u{1F4D6} \u8AAD\u66F8\u4F1A",
43080  "home.marketing.use_case.coworking": "\u{1F4BB} \u3082\u304F\u3082\u304F\u4F1A",
43081  "ended.heading": "\u901A\u8A71\u7D42\u4E86",
43082  "ended.left": "\u30EB\u30FC\u30E0\u3092\u9000\u51FA\u3057\u305F\u3088\u3002",
43083  "ended.room_ended": "{title} \u306F\u7D42\u4E86\u3057\u305F\u3088\u3002",
43084  "ended.rejoin": "\u518D\u53C2\u52A0",
43085  "ended.rejoining": "\u518D\u53C2\u52A0\u4E2D...",
43086  "ended.home": "\u30DB\u30FC\u30E0\u306B\u623B\u308B",
43087  "call.connecting": "\u63A5\u7D9A\u4E2D",
43088  "call.waiting": "\u4ED6\u306E\u4EBA\u3092\u5F85\u3063\u3066\u308B\u3088",
43089  "call.invite_code": "\u62DB\u5F85\u30B3\u30FC\u30C9",
43090  "call.audio_on": "\u97F3\u58F0\u30AA\u30F3",
43091  "call.muted": "\u30DF\u30E5\u30FC\u30C8\u4E2D",
43092  "call.listening": "\u805E\u3044\u3066\u308B\u3088",
43093  "call.audio_muted": "\u97F3\u58F0\u30DF\u30E5\u30FC\u30C8\u4E2D",
43094  "call.speaking": "\u8A71\u3057\u3066\u308B\u3088",
43095  "call.you": "\u81EA\u5206",
43096  "call.you_label": "\u81EA\u5206",
43097  "call.you_suffix": "(\u81EA\u5206)",
43098  "call.chat_placeholder": "\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u9001\u4FE1...",
43099  "call.guest": "\u30B2\u30B9\u30C8",
43100  "call.room_fallback": "\u30EB\u30FC\u30E0",
43101  "call.focus_view": "\u30D5\u30A9\u30FC\u30AB\u30B9\u30D3\u30E5\u30FC",
43102  "call.grid_view": "\u30B0\u30EA\u30C3\u30C9\u30D3\u30E5\u30FC",
43103  "call.swap_main_video": "\u30E1\u30A4\u30F3\u30D3\u30C7\u30AA\u3092\u5207\u308A\u66FF\u3048",
43104  "call.open_chat": "\u30C1\u30E3\u30C3\u30C8\u3092\u958B\u304F",
43105  "call.close_chat": "\u30C1\u30E3\u30C3\u30C8\u3092\u9589\u3058\u308B",
43106  "call.leave_room": "\u9000\u51FA\u3059\u308B",
43107  "call.confirm_leave": "\u9000\u51FA\u3059\u308B\uFF1F",
43108  "call.mic_on": "\u30DE\u30A4\u30AF\u30AA\u30F3",
43109  "call.muted_label": "\u30DF\u30E5\u30FC\u30C8\u4E2D",
43110  "call.camera_off": "\u30AB\u30E1\u30E9\u30AA\u30D5",
43111  "call.connect_failed": "\u63A5\u7D9A\u5931\u6557 \u2014 \u30CD\u30C3\u30C8\u74B0\u5883\u3092\u78BA\u8A8D\u3057\u3066\u3084\u308A\u76F4\u3057\u3066\u306D\u3002",
43112  "call.camera_access_failed": "\u30AB\u30E1\u30E9\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u306A\u3044\u3088\u3002\u30D6\u30E9\u30A6\u30B6\u306E\u6A29\u9650\u3092\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u307F\u3066\u3002",
43113  "call.recording_failed": "\u9332\u753B\u3092\u958B\u59CB\u3067\u304D\u306A\u304B\u3063\u305F\u3088\u3002\u3053\u306E\u307E\u307E\u901A\u8A71\u3092\u7D9A\u3051\u308B\u306D\u3002",
43114  "call.initialize_failed": "\u901A\u8A71\u306E\u958B\u59CB\u3067\u30A8\u30E9\u30FC\u304C\u8D77\u304D\u305F\u307F\u305F\u3044\u3002\u30EA\u30ED\u30FC\u30C9\u3057\u3066\u3084\u308A\u76F4\u3057\u3066\u306D\u3002",
43115  "call.participants": "\u53C2\u52A0\u8005",
43116  "call.open_participants": "\u53C2\u52A0\u8005\u3092\u958B\u304F",
43117  "call.close_participants": "\u53C2\u52A0\u8005\u3092\u9589\u3058\u308B",
43118  "call.lock_room": "\u30EB\u30FC\u30E0\u3092\u30ED\u30C3\u30AF",
43119  "call.unlock_room": "\u30EB\u30FC\u30E0\u306E\u30ED\u30C3\u30AF\u3092\u89E3\u9664",
43120  "call.locked": "\u30ED\u30C3\u30AF\u4E2D",
43121  "call.unlocked": "\u30AA\u30FC\u30D7\u30F3",
43122  "call.kick_member": "\u30EB\u30FC\u30E0\u304B\u3089\u9000\u51FA\u3055\u305B\u308B",
43123  "call.mute_member": "\u30DF\u30E5\u30FC\u30C8\u3059\u308B",
43124  "call.unmute_member": "\u30DF\u30E5\u30FC\u30C8\u89E3\u9664",
43125  "call.muted_by_host": "\u30DB\u30B9\u30C8\u304C\u30DF\u30E5\u30FC\u30C8\u3057\u305F\u3088",
43126  "call.waiting_to_join": "\u53C2\u52A0\u5F85\u3061",
43127  "call.approve": "\u627F\u8A8D",
43128  "call.deny": "\u62D2\u5426",
43129  "call.profile_actions": "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u64CD\u4F5C",
43130  "call.profile_in_room": "\u5165\u5BA4\u4E2D",
43131  "call.profile_role_host": "\u30DB\u30B9\u30C8",
43132  "call.profile_role_you": "\u81EA\u5206",
43133  "call.profile_action_mute": "\u97F3\u58F0\u3092\u30DF\u30E5\u30FC\u30C8",
43134  "call.profile_action_mute_meta": "\u81EA\u5206\u3060\u3051\u30DF\u30E5\u30FC\u30C8\uFF08\u76F8\u624B\u306B\u306F\u30D0\u30EC\u306A\u3044\u3088\uFF09",
43135  "call.profile_action_dm": "1:1 DM",
43136  "call.profile_action_dm_meta": "\u3053\u3063\u305D\u308A\u500B\u5225\u30C1\u30E3\u30C3\u30C8\u3059\u308B",
43137  "call.profile_action_view": "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u898B\u308B",
43138  "call.profile_action_view_meta": "\u81EA\u5DF1\u7D39\u4ECB\u3001\u8A00\u8A9E\u3001\u904E\u53BB\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306A\u3069",
43139  "call.profile_action_report": "\u901A\u5831\u3059\u308B",
43140  "call.profile_action_report_meta": "\u30E2\u30C7\u30EC\u30FC\u30BF\u30FC\u306B\u5831\u544A\u3059\u308B",
43141  "call.profile_sheet_close": "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u64CD\u4F5C\u3092\u9589\u3058\u308B",
43142  "call.profile_open_actions": "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u64CD\u4F5C\u3092\u958B\u304F",
43143  "call.dm_title": "\u30C0\u30A4\u30EC\u30AF\u30C8\u30E1\u30C3\u30BB\u30FC\u30B8",
43144  "call.dm_back": "\u64CD\u4F5C\u306B\u623B\u308B",
43145  "call.dm_close": "DM\u3092\u9589\u3058\u308B",
43146  "call.dm_status_online": "\u30AA\u30F3\u30E9\u30A4\u30F3",
43147  "call.dm_in_room_with": "\u540C\u3058\u30EB\u30FC\u30E0\u306B\u3044\u308B\u3088",
43148  "call.dm_private_label": "\u30D7\u30E9\u30A4\u30D9\u30FC\u30C8\u30C1\u30E3\u30C3\u30C8",
43149  "call.dm_private_meta": "2\u4EBA\u3060\u3051\u306E\u3072\u307F\u3064\u306E\u30C1\u30E3\u30C3\u30C8\u3060\u3088",
43150  "call.dm_input_placeholder": "DM\u3092\u9001\u308B...",
43151  "call.dm_send": "\u9001\u4FE1",
43152  "call.dm_just_now": "\u4ECA",
43153  "call.dm_seen_just_now": "\u65E2\u8AAD",
43154  "call.dm_typing": "{name} \u304C\u5165\u529B\u4E2D...",
43155  "call.dm_minimize": "\u6700\u5C0F\u5316",
43156  "call.dm_active_indicator": "\u30C1\u30E3\u30C3\u30C8\u3092\u958B\u304F",
43157  "call.dm_unread_messages": "\u672A\u8AAD {count} \u4EF6",
43158  "call.dm_toast_tap_to_open": "\u30BF\u30C3\u30D7\u3057\u3066\u958B\u304F",
43159  "call.dm_reopen_aria": "{name} \u3068\u306E\u30C1\u30E3\u30C3\u30C8\u3092\u518D\u958B",
43160  "home.join_denied": "\u30DB\u30B9\u30C8\u306B\u5165\u5BA4\u3092\u65AD\u3089\u308C\u3061\u3083\u3063\u305F\u3002",
43161  "home.error.room_not_found": "\u305D\u306E\u30EB\u30FC\u30E0\u30B3\u30FC\u30C9\u306F\u5B58\u5728\u3057\u306A\u3044\u3088\u3002",
43162  "home.error.profile_required": "\u9032\u3080\u306B\u306F\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u8A2D\u5B9A\u3057\u3066\u306D\u3002",
43163  "home.cta.set_up_profile": "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u8A2D\u5B9A\u3059\u308B",
43164  "home.profile_trigger_new": "\u30BF\u30C3\u30D7\u3057\u3066\u8A73\u7D30\u3092\u8FFD\u52A0",
43165  "home.profile_trigger_new_aria": "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u8A2D\u5B9A\u3059\u308B",
43166  "home.profile_trigger_edit_aria": "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u7DE8\u96C6\u3059\u308B",
43167  "profile.eyebrow_new": "\u3088\u308D\u3057\u304F\u306D",
43168  "profile.eyebrow_edit": "\u3042\u306A\u305F\u306E\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB",
43169  "profile.title_new": "\u81EA\u5206\u3089\u3057\u304F\u3002",
43170  "profile.title_edit": "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u7DE8\u96C6",
43171  "profile.subtitle": "\u76F8\u624B\u306B\u81EA\u5206\u306E\u3053\u3068\u3092\u5C11\u3057\u3060\u3051\u6559\u3048\u3066\u3042\u3052\u3088\u3046\u3002",
43172  "profile.add_photo": "\u5199\u771F\u3092\u8FFD\u52A0",
43173  "profile.add_photo_soon": "\u5199\u771F\u306F\u6E96\u5099\u4E2D\u3060\u3088",
43174  "profile.photo_empty": "\u30BF\u30C3\u30D7\u3057\u3066\u5199\u771F\u3092\u8FFD\u52A0",
43175  "profile.photo_ready": "\u5199\u771FOK\uFF01",
43176  "profile.photo_save_first": "\u5199\u771F\u3092\u30A2\u30C3\u30D7\u3059\u308B\u524D\u306B\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u4FDD\u5B58\u3057\u3066\u306D",
43177  "profile.photo_crop_caption": "\u3044\u3044\u611F\u3058\u306B\u5207\u308A\u53D6\u308D\u3046",
43178  "profile.photo_auto_caption": "\u30C9\u30E9\u30C3\u30B0\uFF06\u30BA\u30FC\u30E0\u3067\u8ABF\u6574\u3057\u3066\u306D\u3002\u81EA\u52D5\u3067\u4FDD\u5B58\u3055\u308C\u308B\u3088",
43179  "profile.photo_upload": "\u5199\u771F\u3092\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9",
43180  "profile.photo_replace": "\u5199\u771F\u3092\u5909\u66F4",
43181  "profile.photo_remove": "\u5199\u771F\u3092\u524A\u9664",
43182  "profile.photo_cancel": "\u30AD\u30E3\u30F3\u30BB\u30EB",
43183  "profile.photo_save": "\u5199\u771F\u3092\u4FDD\u5B58",
43184  "profile.photo_uploading": "\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u4E2D...",
43185  "profile.photo_removing": "\u524A\u9664\u4E2D...",
43186  "profile.photo_choose_another": "\u5225\u306E\u5199\u771F\u3092\u9078\u3076",
43187  "profile.photo_drag_hint": "\u5199\u771F\u3092\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u5186\u306B\u5408\u308F\u305B\u3066\u306D\u3002\u81EA\u52D5\u3067\u4FDD\u5B58\u3055\u308C\u308B\u3088\u3002",
43188  "profile.photo_zoom": "\u30BA\u30FC\u30E0",
43189  "profile.photo_horizontal": "\u6A2A\u65B9\u5411\u306E\u5207\u308A\u53D6\u308A",
43190  "profile.photo_vertical": "\u7E26\u65B9\u5411\u306E\u5207\u308A\u53D6\u308A",
43191  "profile.name_label": "\u540D\u524D",
43192  "profile.name_placeholder": "\u306A\u3093\u3066\u547C\u3079\u3070\u3044\u3044\uFF1F",
43193  "profile.gender_label": "\u6027\u5225",
43194  "profile.gender.woman": "\u5973\u6027",
43195  "profile.gender.man": "\u7537\u6027",
43196  "profile.gender.unspecified": "\u8A00\u3044\u305F\u304F\u306A\u3044",
43197  "profile.bio_label": "\u81EA\u5DF1\u7D39\u4ECB",
43198  "profile.bio_optional": "\u4EFB\u610F",
43199  "profile.bio_placeholder": "\u8A71\u305B\u308B\u8A00\u8A9E\u3084\u597D\u304D\u306A\u3053\u3068\u3001\u306A\u3093\u3067\u3082\u66F8\u3044\u3066\u306D...",
43200  "profile.cta_new": "\u306F\u3058\u3081\u308B",
43201  "profile.cta_edit": "\u5909\u66F4\u3092\u4FDD\u5B58",
43202  "profile.saving": "\u4FDD\u5B58\u4E2D...",
43203  "profile.close": "\u9589\u3058\u308B",
43204  "profile.error.save_failed": "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u3092\u4FDD\u5B58\u3067\u304D\u306A\u304B\u3063\u305F\u3088\u3002\u3082\u3046\u4E00\u5EA6\u8A66\u3057\u3066\u306D\u3002",
43205  "profile.error.avatar_invalid_type": "PNG\u3001JPEG\u3001GIF\u3001WebP\u306E\u3069\u308C\u304B\u3092\u9078\u3093\u3067\u306D\u3002",
43206  "profile.error.avatar_too_large": "5MB\u4EE5\u4E0B\u306E\u753B\u50CF\u3092\u9078\u3093\u3067\u306D\u3002",
43207  "profile.error.avatar_too_small": "96x96\u30D4\u30AF\u30BB\u30EB\u4EE5\u4E0A\u306E\u753B\u50CF\u3092\u9078\u3093\u3067\u306D\u3002",
43208  "profile.error.avatar_load_failed": "\u753B\u50CF\u3092\u8AAD\u307F\u8FBC\u3081\u306A\u304B\u3063\u305F\u3088\u3002\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u3067\u8A66\u3057\u3066\u307F\u3066\u3002",
43209  "profile.error.avatar_failed": "\u5199\u771F\u3092\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3067\u304D\u306A\u304B\u3063\u305F\u3088\u3002\u3082\u3046\u4E00\u5EA6\u8A66\u3057\u3066\u306D\u3002",
43210  "profile.error.avatar_remove_failed": "\u5199\u771F\u3092\u524A\u9664\u3067\u304D\u306A\u304B\u3063\u305F\u3088\u3002\u3082\u3046\u4E00\u5EA6\u8A66\u3057\u3066\u306D\u3002",
43211  "effects.title": "\u30A8\u30D5\u30A7\u30AF\u30C8",
43212  "effects.soft": "\u30BD\u30D5\u30C8\u30D5\u30A9\u30FC\u30AB\u30B9",
43213  "effects.vignette": "\u30D3\u30CD\u30C3\u30C8",
43214  "effects.face": "\u9854\u307C\u304B\u3057",
43215  "effects.face_preview_only": "\u9854\u307C\u304B\u3057 (\u30D7\u30EC\u30D3\u30E5\u30FC\u306E\u307F)",
43216  "effects.face_viewer_side": "\u9854\u307C\u304B\u3057 (\u8996\u8074\u8005\u5074)",
43217  "effects.face_strength": "\u9854\u307C\u304B\u3057\u306E\u5F37\u3055",
43218  "effects.grade.off": "\u30AA\u30D5",
43219  "effects.grade.pop": "\u30DD\u30C3\u30D7",
43220  "effects.grade.warm": "\u30A6\u30A9\u30FC\u30E0",
43221  "effects.grade.cool": "\u30AF\u30FC\u30EB",
43222  "effects.grade.bw": "\u30E2\u30CE\u30AF\u30ED",
43223  "camera.off": "\u30AB\u30E1\u30E9\u30AA\u30D5",
43224  "camera.check": "\u30AB\u30E1\u30E9\u3092\u30C1\u30A7\u30C3\u30AF",
43225  "camera.retry": "\u30AB\u30E1\u30E9\u3092\u518D\u8A66\u884C",
43226  "camera.ready": "\u30AB\u30E1\u30E9OK\uFF01",
43227  "camera.idle.title": "\u30AB\u30E1\u30E9\u3092\u30AA\u30F3\u306B\u3057\u3066\u306D",
43228  "camera.idle.hint": "\u6E96\u5099\u304C\u3067\u304D\u305F\u3089\u30D6\u30E9\u30A6\u30B6\u306B\u30A2\u30AF\u30BB\u30B9\u8A31\u53EF\u3092\u6C42\u3081\u308B\u306D\u3002",
43229  "camera.idle.button": "\u30AB\u30E1\u30E9\u3092\u30AA\u30F3\u306B\u3059\u308B",
43230  "camera.status.idle": "\u6E96\u5099\u5F85\u3061",
43231  "camera.status.off": "\u30AB\u30E1\u30E9\u306F\u30AA\u30D5\u3060\u3088",
43232  "camera.status.loading": "\u30AB\u30E1\u30E9\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u30EA\u30AF\u30A8\u30B9\u30C8\u4E2D...",
43233  "camera.status.denied": "\u30D6\u30E9\u30A6\u30B6\u3067\u30AB\u30E1\u30E9\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u8A31\u53EF\u3057\u3066\u3001\u3082\u3046\u4E00\u5EA6\u8A66\u3057\u3066\u306D\u3002",
43234  "camera.status.error": "\u30AB\u30E1\u30E9\u306E\u30D7\u30EC\u30D3\u30E5\u30FC\u306B\u5931\u6557\u3057\u3061\u3083\u3063\u305F\u3002\u3082\u3046\u4E00\u5EA6\u8A66\u3057\u3066\u306D\u3002",
43235  "camera.status.unsupported": "\u3053\u306E\u30D6\u30E9\u30A6\u30B6\u306F\u30AB\u30E1\u30E9\u306B\u5BFE\u5FDC\u3057\u3066\u306A\u3044\u307F\u305F\u3044\u3002",
43236  "camera.status.insecure": "\u30AB\u30E1\u30E9\u3092\u4F7F\u3046\u306B\u306FHTTPS\u304Blocalhost\u304C\u5FC5\u8981\u3060\u3088\u3002",
43237  "camera.status.attach_failed": "\u30AB\u30E1\u30E9\u306E\u30D7\u30EC\u30D3\u30E5\u30FC\u3092\u958B\u59CB\u3067\u304D\u306A\u304B\u3063\u305F\u3088\u3002\u3082\u3046\u4E00\u5EA6\u8A66\u3057\u3066\u306D\u3002",
43238  "camera.guest_name_placeholder": "\u30B2\u30B9\u30C8\u540D",
43239  "camera.flip": "\u30AB\u30E1\u30E9\u3092\u5207\u308A\u66FF\u3048",
43240  "camera.save_name": "\u4FDD\u5B58",
43241  "camera.edit_name": "\u540D\u524D\u3092\u7DE8\u96C6",
43242  "mic.on": "\u30DE\u30A4\u30AF\u3092\u30AA\u30D5\u306B\u3059\u308B",
43243  "mic.off": "\u30DE\u30A4\u30AF\u3092\u30AA\u30F3\u306B\u3059\u308B",
43244  "video.on": "\u30AB\u30E1\u30E9\u3092\u30AA\u30D5\u306B\u3059\u308B",
43245  "video.off": "\u30AB\u30E1\u30E9\u3092\u30AA\u30F3\u306B\u3059\u308B",
43246  "chat.title": "\u30C1\u30E3\u30C3\u30C8",
43247  "chat.close": "\u30C1\u30E3\u30C3\u30C8\u3092\u9589\u3058\u308B",
43248  "chat.loading": "\u8AAD\u307F\u8FBC\u307F\u4E2D...",
43249  "chat.load_earlier": "\u904E\u53BB\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8AAD\u307F\u8FBC\u3080",
43250  "chat.empty": "\u307E\u3060\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u306A\u3044\u3088",
43251  "chat.send_error": "\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u9001\u308C\u306A\u304B\u3063\u305F\u3088\u3002\u3082\u3046\u4E00\u5EA6\u8A66\u3057\u3066\u306D\u3002",
43252  "chat.input_placeholder": "\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u5165\u529B...",
43253  "room.host": "\u30DB\u30B9\u30C8",
43254  "app.room_default_title": "\u30EB\u30FC\u30E0\u3092\u4F5C\u6210",
43255  "app.chat_connection_rejected": "\u30C1\u30E3\u30C3\u30C8\u306B\u63A5\u7D9A\u3067\u304D\u306A\u304B\u3063\u305F\u3088\u3002\u30EA\u30ED\u30FC\u30C9\u3057\u3066\u307F\u3066\u306D\u3002",
43256  "app.copy_failed": "\u30EA\u30F3\u30AF\u3092\u30B3\u30D4\u30FC\u3067\u304D\u306A\u304B\u3063\u305F\u3088\u3002\u624B\u52D5\u3067\u9078\u629E\u3057\u3066\u30B3\u30D4\u30FC\u3057\u3066\u307F\u3066\u3002",
43257  "app.chat_not_connected": "\u30C1\u30E3\u30C3\u30C8\u304C\u307E\u3060\u7E4B\u304C\u3063\u3066\u306A\u3044\u3088\u3002\u5C11\u3057\u5F85\u3063\u3066\u304B\u3089\u3082\u3046\u4E00\u5EA6\u8A66\u3057\u3066\u306D\u3002",
43258  "footer.terms": "\u5229\u7528\u898F\u7D04",
43259  "footer.copyright": "\xA9 2026 Yano.AI"
43260};
43261
43262// app/javascript/yano/locales/ko.js
43263var ko_default = {
43264  "home.heading.default": "\uBC14\uB85C \uD1B5\uD654\uD558\uAE30",
43265  "home.heading.loading": "\uBC29 \uC5EC\uB294 \uC911...",
43266  "home.heading.join": "\uB4E4\uC5B4\uAC08 \uC900\uBE44 \uB410\uB098\uC694?",
43267  "home.heading.joined": "\uC785\uC7A5 \uC644\uB8CC",
43268  "home.heading.pending": "\uD638\uC2A4\uD2B8 \uAE30\uB2E4\uB9AC\uB294 \uC911",
43269  "home.body.default": "\uBC29 \uB9CC\uB4E4\uACE0, \uB9C1\uD06C \uACF5\uC720\uD558\uACE0, \uADF8\uB0E5 \uC990\uAE30\uC138\uC694.",
43270  "home.body.loading": "\uC7A0\uAE50\uB9CC\uC694, \uBC29 \uC900\uBE44 \uC911\uC774\uC5D0\uC694.",
43271  "home.body.join": "\uCEA0\uC774\uB791 \uB9C8\uC774\uD06C \uD655\uC778\uD558\uACE0 \uB4E4\uC5B4\uC624\uC138\uC694.",
43272  "home.body.joined": "\uBC29\uC774 \uC5F4\uB838\uC5B4\uC694. \uB9C1\uD06C\uB97C \uACF5\uC720\uD558\uAC70\uB098 \uBC14\uB85C \uC2DC\uC791\uD574\uC694.",
43273  "home.body.joined_in_room": "\uBC29\uC5D0 \uB4E4\uC5B4\uC654\uC5B4\uC694 \u2014 \uBC14\uB85C \uC2DC\uC791\uD558\uAC70\uB098 \uB9C1\uD06C\uB97C \uACF5\uC720\uD574\uC694.",
43274  "home.body.pending": "\uBC29\uC774 \uC7A0\uACA8\uC788\uC5B4\uC694. \uD638\uC2A4\uD2B8\uAC00 \uC5F4\uC5B4\uC904 \uB54C\uAE4C\uC9C0 \uAE30\uB2E4\uB824\uC8FC\uC138\uC694.",
43275  "home.cta.create": "\uBC29 \uB9CC\uB4E4\uAE30",
43276  "home.cta.join": "\uBC29 \uCC38\uC5EC\uD558\uAE30",
43277  "home.cta.enter": "\uC785\uC7A5\uD558\uAE30",
43278  "home.cta.creating": "\uB9CC\uB4DC\uB294 \uC911...",
43279  "home.cta.joining": "\uB4E4\uC5B4\uAC00\uB294 \uC911...",
43280  "home.cta.opening": "\uC5EC\uB294 \uC911...",
43281  "home.cta.pending": "\uC2B9\uC778 \uB300\uAE30 \uC911...",
43282  "home.copy_link": "\uB9C1\uD06C \uBCF5\uC0AC",
43283  "home.copied": "\uBCF5\uC0AC \uC644\uB8CC!",
43284  "home.leave": "\uBC29 \uB098\uAC00\uAE30",
43285  "home.back": "\uB4A4\uB85C",
43286  "home.no_participants": "\uC544\uC9C1 \uC544\uBB34\uB3C4 \uC5C6\uC5B4\uC694",
43287  "home.join_by_code": "\uCD08\uB300 \uCF54\uB4DC\uB85C \uCC38\uC5EC",
43288  "home.code_placeholder": "\uCF54\uB4DC \uC785\uB825",
43289  "home.name_placeholder": "\uC774\uB984",
43290  "home.people_one": "\uBA85",
43291  "home.people_other": "\uBA85",
43292  "home.marketing.invite.title": "\uBC29\uC744 \uB9CC\uB4E4\uACE0,\n\uB9C1\uD06C\uB97C \uACF5\uC720\uD574\uC694.",
43293  "home.marketing.invite.body": "\uD130\uCE58 \uD55C \uBC88\uC73C\uB85C \uC2DC\uC791. \uCE5C\uAD6C\uC5D0\uAC8C \uB9C1\uD06C\uB9CC \uBCF4\uB0B4\uBA74 \uB204\uAD6C\uB098 \uB4E4\uC5B4\uC62C \uC218 \uC788\uC5B4\uC694. \uB2E4\uC6B4\uB85C\uB4DC\uB098 \uAC00\uC785\uC740 \uD544\uC694 \uC5C6\uC5B4\uC694.",
43294  "home.marketing.invite.preview_url": "yano.ai/ROOM",
43295  "home.marketing.look.title": "\uC6D0\uD558\uB294\n\uBAA8\uC2B5\uC73C\uB85C.",
43296  "home.marketing.look.body": "\uC0C9\uBCF4\uC815, \uC18C\uD504\uD2B8 \uD3EC\uCEE4\uC2A4, \uBE44\uB124\uD305 \u2014 \uC544\uB2C8\uBA74 \uC5BC\uAD74\uC744 \uC544\uC608 \uBE14\uB7EC \uCC98\uB9AC\uD560 \uC218\uB3C4 \uC788\uC5B4\uC694. \uB0B4 \uCE74\uBA54\uB77C\uB294 \uB0B4 \uB9D8\uB300\uB85C.",
43297  "home.marketing.host.title": "\uB0B4 \uACF5\uAC04,\n\uB0B4 \uB9D8\uB300\uB85C.",
43298  "home.marketing.host.body": "\uBC29\uC744 \uC7A0\uADF8\uAC70\uB098, \uB9C8\uC774\uD06C\uB97C \uB044\uAC70\uB098, \uB0B4\uBCF4\uB0BC \uC218 \uC788\uC5B4\uC694. \uD638\uC2A4\uD2B8\uAC00 \uBAA8\uB4E0 \uAC78 \uAD00\uB9AC\uD574\uC694.",
43299  "home.marketing.host.locked": "\uBC29 \uC7A0\uAE40",
43300  "home.marketing.host.waiting_to_join": "\uC785\uC7A5 \uB300\uAE30 \uC911",
43301  "home.marketing.host.wants_to_join": "\uB2D8\uC774 \uB4E4\uC5B4\uC624\uACE0 \uC2F6\uC5B4 \uD574\uC694",
43302  "home.marketing.anything.title": "\uC9C4\uC9DC \uC544\uBB34 \uB54C\uB098 \uC4F0\uC138\uC694.",
43303  "home.marketing.anything.body": "\uC2A4\uD130\uB514, \uAC8C\uC784, \uC2A4\uD0E0\uB4DC\uC5C5 \uBBF8\uD305, \uAC19\uC774 \uC601\uC0C1 \uBCFC \uB54C \u2014 \uC544\uB2C8\uBA74 \uADF8\uB0E5 \uC218\uB2E4 \uB5A8 \uB54C\uB3C4\uC694.",
43304  "home.marketing.use_case.study_group": "\u{1F4DA} \uC2A4\uD130\uB514",
43305  "home.marketing.use_case.game_night": "\u{1F3AE} \uAC8C\uC784",
43306  "home.marketing.use_case.standup": "\u{1F4BC} \uC2A4\uD0E0\uB4DC\uC5C5",
43307  "home.marketing.use_case.watch_party": "\u{1F37F} \uAC19\uC774 \uBCF4\uAE30",
43308  "home.marketing.use_case.catch_up": "\u2615 \uC218\uB2E4",
43309  "home.marketing.use_case.jam_session": "\u{1F3B8} \uC7BC \uC138\uC158",
43310  "home.marketing.use_case.book_club": "\u{1F4D6}
43310 \uBD81\uD074\uB7FD",
43311  "home.marketing.use_case.coworking": "\u{1F4BB} \uCF54\uC6CC\uD0B9",
43312  "ended.heading": "\uD1B5\uD654 \uC885\uB8CC",
43313  "ended.left": "\uBC29\uC5D0\uC11C \uB098\uC654\uC5B4\uC694.",
43314  "ended.room_ended": "{title} \uBC29\uC774 \uC885\uB8CC\uB418\uC5C8\uC5B4\uC694.",
43315  "ended.rejoin": "\uB2E4\uC2DC \uB4E4\uC5B4\uAC00\uAE30",
43316  "ended.rejoining": "\uB2E4\uC2DC \uB4E4\uC5B4\uAC00\uB294 \uC911...",
43317  "ended.home": "\uD648\uC73C\uB85C",
43318  "call.connecting": "\uC5F0\uACB0 \uC911",
43319  "call.waiting": "\uB2E4\uB978 \uC0AC\uB78C \uAE30\uB2E4\uB9AC\uB294 \uC911",
43320  "call.invite_code": "\uCD08\uB300 \uCF54\uB4DC",
43321  "call.audio_on": "\uC624\uB514\uC624 \uCF1C\uC9D0",
43322  "call.muted": "\uC74C\uC18C\uAC70\uB428",
43323  "call.listening": "\uB4E3\uB294 \uC911",
43324  "call.audio_muted": "\uC624\uB514\uC624 \uAEBC\uC9D0",
43325  "call.speaking": "\uB9D0\uD558\uB294 \uC911",
43326  "call.you": "\uB098",
43327  "call.you_label": "\uB098",
43328  "call.you_suffix": "(\uB098)",
43329  "call.chat_placeholder": "\uBA54\uC2DC\uC9C0 \uBCF4\uB0B4\uAE30...",
43330  "call.guest": "\uAC8C\uC2A4\uD2B8",
43331  "call.room_fallback": "\uBC29",
43332  "call.focus_view": "\uD3EC\uCEE4\uC2A4 \uBDF0",
43333  "call.grid_view": "\uADF8\uB9AC\uB4DC \uBDF0",
43334  "call.swap_main_video": "\uBA54\uC778 \uD654\uBA74 \uBC14\uAFB8\uAE30",
43335  "call.open_chat": "\uCC44\uD305 \uC5F4\uAE30",
43336  "call.close_chat": "\uCC44\uD305 \uB2EB\uAE30",
43337  "call.leave_room": "\uBC29 \uB098\uAC00\uAE30",
43338  "call.confirm_leave": "\uB098\uAC08\uAE4C\uC694?",
43339  "call.mic_on": "\uB9C8\uC774\uD06C \uCF1C\uC9D0",
43340  "call.muted_label": "\uC74C\uC18C\uAC70\uB428",
43341  "call.camera_off": "\uCE74\uBA54\uB77C \uAEBC\uC9D0",
43342  "call.connect_failed": "\uC5F0\uACB0 \uC2E4\uD328 \u2014 \uC778\uD130\uB137\uC744 \uD655\uC778\uD558\uACE0 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.",
43343  "call.camera_access_failed": "\uCE74\uBA54\uB77C\uC5D0 \uC811\uADFC\uD560 \uC218 \uC5C6\uC5B4\uC694. \uBE0C\uB77C\uC6B0\uC800 \uAD8C\uD55C\uC744 \uD655\uC778\uD574 \uC8FC\uC138\uC694.",
43344  "call.recording_failed": "\uB179\uD654\uB97C \uC2DC\uC791\uD560 \uC218 \uC5C6\uC5B4\uC694. \uB179\uD654 \uC5C6\uC774 \uD1B5\uD654\uB97C \uACC4\uC18D\uD569\uB2C8\uB2E4.",
43345  "call.initialize_failed": "\uD1B5\uD654 \uC2DC\uC791 \uC911 \uBB38\uC81C\uAC00 \uC0DD\uACBC\uC5B4\uC694. \uC0C8\uB85C\uACE0\uCE68 \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.",
43346  "call.participants": "\uCC38\uC5EC\uC790",
43347  "call.open_participants": "\uCC38\uC5EC\uC790 \uBAA9\uB85D \uC5F4\uAE30",
43348  "call.close_participants": "\uCC38\uC5EC\uC790 \uBAA9\uB85D \uB2EB\uAE30",
43349  "call.lock_room": "\uBC29 \uC7A0\uADF8\uAE30",
43350  "call.unlock_room": "\uBC29 \uC7A0\uAE08 \uD574\uC81C",
43351  "call.locked": "\uC7A0\uAE40",
43352  "call.unlocked": "\uC5F4\uB9BC",
43353  "call.kick_member": "\uBC29\uC5D0\uC11C \uB0B4\uBCF4\uB0B4\uAE30",
43354  "call.mute_member": "\uC74C\uC18C\uAC70",
43355  "call.unmute_member": "\uC74C\uC18C\uAC70 \uD574\uC81C",
43356  "call.muted_by_host": "\uD638\uC2A4\uD2B8\uAC00 \uC74C\uC18C\uAC70\uD568",
43357  "call.waiting_to_join": "\uC785\uC7A5 \uB300\uAE30 \uC911",
43358  "call.approve": "\uC2B9\uC778",
43359  "call.deny": "\uAC70\uC808",
43360  "call.profile_actions": "\uD504\uB85C\uD544 \uC561\uC158",
43361  "call.profile_in_room": "\uBC29\uC5D0 \uC788\uC74C",
43362  "call.profile_role_host": "\uD638\uC2A4\uD2B8",
43363  "call.profile_role_you": "\uB098",
43364  "call.profile_action_mute": "\uC624\uB514\uC624 \uC74C\uC18C\uAC70",
43365  "call.profile_action_mute_meta": "\uB098\uD55C\uD14C\uB9CC \uC548 \uB4E4\uB824\uC694 \u2014 \uC0C1\uB300\uBC29\uC740 \uBAB0\uB77C\uC694",
43366  "call.profile_action_dm": "1:1 DM",
43367  "call.profile_action_dm_meta": "\uBE44\uBC00 \uCC44\uD305 \uC2DC\uC791\uD558\uAE30",
43368  "call.profile_action_view": "\uC804\uCCB4 \uD504\uB85C\uD544 \uBCF4\uAE30",
43369  "call.profile_action_view_meta": "\uC18C\uAC1C, \uC5B8\uC5B4, \uC774\uC804 \uC138\uC158",
43370  "call.profile_action_report": "\uC2E0\uACE0\uD558\uAE30",
43371  "call.profile_action_report_meta": "\uAD00\uB9AC\uC790\uC5D0\uAC8C \uC2E0\uACE0\uD558\uAE30",
43372  "call.profile_sheet_close": "\uD504\uB85C\uD544 \uC561\uC158 \uB2EB\uAE30",
43373  "call.profile_open_actions": "\uD504\uB85C\uD544 \uC561\uC158 \uC5F4\uAE30",
43374  "call.dm_title": "\uB2E4\uC774\uB809\uD2B8 \uBA54\uC2DC\uC9C0",
43375  "call.dm_back": "\uC561\uC158\uC73C\uB85C \uB3CC\uC544\uAC00\uAE30",
43376  "call.dm_close": "DM \uB2EB\uAE30",
43377  "call.dm_status_online": "\uC628\uB77C\uC778",
43378  "call.dm_in_room_with": "\uC774 \uBC29\uC5D0 \uC788\uC74C",
43379  "call.dm_private_label": "\uBE44\uBC00 \uCC44\uD305",
43380  "call.dm_private_meta": "\uB458\uB9CC \uBCFC \uC218 \uC788\uB294 \uBA54\uC2DC\uC9C0\uC608\uC694",
43381  "call.dm_input_placeholder": "\uBE44\uBC00 \uBA54\uC2DC\uC9C0 \uBCF4\uB0B4\uAE30\u2026",
43382  "call.dm_send": "\uC804\uC1A1",
43383  "call.dm_just_now": "\uBC29\uAE08",
43384  "call.dm_seen_just_now": "\uBC29\uAE08 \uC77D\uC74C",
43385  "call.dm_typing": "{name}\uB2D8\uC774 \uC785\uB825 \uC911\u2026",
43386  "call.dm_minimize": "\uCD5C\uC18C\uD654",
43387  "call.dm_active_indicator": "\uB300\uD654 \uC5F4\uAE30",
43388  "call.dm_unread_messages": "\uC548 \uC77D\uC740 \uBA54\uC2DC\uC9C0 {count}\uAC1C",
43389  "call.dm_toast_tap_to_open": "\uB20C\uB7EC\uC11C \uC5F4\uAE30",
43390  "call.dm_reopen_aria": "{name}\uB2D8\uACFC \uB300\uD654 \uB2E4\uC2DC \uC5F4\uAE30",
43391  "home.join_denied": "\uD638\uC2A4\uD2B8\uAC00 \uC785\uC7A5\uC744 \uAC70\uC808\uD588\uC5B4\uC694.",
43392  "home.error.room_not_found": "\uC874\uC7AC\uD558\uC9C0 \uC54A\uB294 \uBC29 \uCF54\uB4DC\uC608\uC694.",
43393  "home.error.profile_required": "\uACC4\uC18D\uD558\uB824\uBA74 \uD504\uB85C\uD544\uC744 \uC124\uC815\uD574 \uC8FC\uC138\uC694.",
43394  "home.cta.set_up_profile": "\uD504\uB85C\uD544 \uC124\uC815\uD558\uAE30",
43395  "home.profile_trigger_new": "\uB20C\uB7EC\uC11C \uB0B4 \uC815\uBCF4 \uCD94\uAC00\uD558\uAE30",
43396  "home.profile_trigger_new_aria": "\uD504\uB85C\uD544 \uC124\uC815\uD558\uAE30",
43397  "home.profile_trigger_edit_aria": "\uD504\uB85C\uD544 \uC218\uC815\uD558\uAE30",
43398  "profile.eyebrow_new": "\uC778\uC0AC\uD558\uAE30",
43399  "profile.eyebrow_edit": "\uB0B4 \uD504\uB85C\uD544",
43400  "profile.title_new": "\uB098\uB9CC\uC758 \uD504\uB85C\uD544 \uB9CC\uB4E4\uAE30.",
43401  "profile.title_edit": "\uD504\uB85C\uD544 \uC218\uC815",
43402  "profile.subtitle": "\uC0C1\uB300\uBC29\uC774 \uB098\uB97C \uC54C \uC218 \uC788\uAC8C \uAC04\uB2E8\uD55C \uC815\uBCF4\uB97C \uC785\uB825\uD574 \uC8FC\uC138\uC694.",
43403  "profile.add_photo": "\uC0AC\uC9C4 \uCD94\uAC00",
43404  "profile.add_photo_soon": "\uC0AC\uC9C4 \uAE30\uB2A5 \uC900\uBE44 \uC911",
43405  "profile.photo_empty": "\uB20C\uB7EC\uC11C \uC0AC\uC9C4 \uCD94\uAC00",
43406  "profile.photo_ready": "\uC0AC\uC9C4 \uC900\uBE44 \uC644\uB8CC",
43407  "profile.photo_save_first": "\uC0AC\uC9C4\uC744 \uC62C\uB9AC\uAE30 \uC804\uC5D0 \uD504\uB85C\uD544\uC744 \uBA3C\uC800 \uC800\uC7A5\uD574 \uC8FC\uC138\uC694",
43408  "profile.photo_crop_caption": "\uC0AC\uC9C4 \uC790\uB974\uAE30",
43409  "profile.photo_auto_caption": "\uB4DC\uB798\uADF8\uD558\uACE0 \uD655\uB300\uD574 \uBCF4\uC138\uC694. \uC790\uB3D9\uC73C\uB85C \uC800\uC7A5\uB3FC\uC694",
43410  "profile.photo_upload": "\uC0AC\uC9C4 \uC5C5\uB85C\uB4DC",
43411  "profile.photo_replace": "\uC0AC\uC9C4 \uBCC0\uACBD",
43412  "profile.photo_remove": "\uC0AC\uC9C4 \uC0AD\uC81C",
43413  "profile.photo_cancel": "\uCDE8\uC18C",
43414  "profile.photo_save": "\uC0AC\uC9C4 \uC800\uC7A5",
43415  "profile.photo_uploading": "\uC0AC\uC9C4 \uC5C5\uB85C\uB4DC \uC911\u2026",
43416  "profile.photo_removing": "\uC0AC\uC9C4 \uC0AD\uC81C \uC911\u2026",
43417  "profile.photo_choose_another": "\uB2E4\uB978 \uC0AC\uC9C4 \uC120\uD0DD",
43418  "profile.photo_drag_hint": "\uC0AC\uC9C4\uC744 \uB4DC\uB798\uADF8\uD574\uC11C \uC6D0 \uC548\uC5D0 \uB9DE\uCDB0\uC8FC\uC138\uC694. \uBCC0\uACBD \uC0AC\uD56D\uC740 \uC790\uB3D9 \uC800\uC7A5\uB3FC\uC694.",
43419  "profile.photo_zoom": "\uD655\uB300",
43420  "profile.photo_horizontal": "\uAC00\uB85C \uC790\uB974\uAE30",
43421  "profile.photo_vertical": "\uC138\uB85C \uC790\uB974\uAE30",
43422  "profile.name_label": "\uC774\uB984",
43423  "profile.name_placeholder": "\uBB50\uB77C\uACE0 \uBD80\uB974\uBA74 \uB420\uAE4C\uC694?",
43424  "profile.gender_label": "\uC131\uBCC4",
43425  "profile.gender.woman": "\uC5EC\uC131",
43426  "profile.gender.man": "\uB0A8\uC131",
43427  "profile.gender.unspecified": "\uC120\uD0DD \uC548 \uD568",
43428  "profile.bio_label": "\uC18C\uAC1C",
43429  "profile.bio_optional": "\uC120\uD0DD",
43430  "profile.bio_placeholder": "\uD560 \uC904 \uC544\uB294 \uC5B8\uC5B4, \uC88B\uC544\uD558\uB294 \uAC83, \uBB50\uB4E0 \uC88B\uC544\uC694\u2026",
43431  "profile.cta_new": "\uC2DC\uC791\uD558\uAE30",
43432  "profile.cta_edit": "\uBCC0\uACBD \uC0AC\uD56D \uC800\uC7A5",
43433  "profile.saving": "\uC800\uC7A5 \uC911\u2026",
43434  "profile.close": "\uB2EB\uAE30",
43435  "profile.error.save_failed": "\uD504\uB85C\uD544\uC744 \uC800\uC7A5\uD558\uC9C0 \uBABB\uD588\uC5B4\uC694. \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.",
43436  "profile.error.avatar_invalid_type": "PNG, JPEG, GIF, WebP \uC774\uBBF8\uC9C0\uB97C \uC120\uD0DD\uD574 \uC8FC\uC138\uC694.",
43437  "profile.error.avatar_too_large": "5MB \uC774\uD558\uC758 \uC774\uBBF8\uC9C0\uB97C \uC120\uD0DD\uD574 \uC8FC\uC138\uC694.",
43438  "profile.error.avatar_too_small": "\uCD5C\uC18C 96x96 \uD53D\uC140 \uC774\uC0C1\uC758 \uC774\uBBF8\uC9C0\uB97C \uC120\uD0DD\uD574 \uC8FC\uC138\uC694.",
43439  "profile.error.avatar_load_failed": "\uC774\uBBF8\uC9C0\uB97C \uC77D\uC744 \uC218 \uC5C6\uC5B4\uC694. \uB2E4\uB978 \uD30C\uC77C\uC744 \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.",
43440  "profile.error.avatar_failed": "\uC0AC\uC9C4\uC744 \uC5C5\uB85C\uB4DC\uD558\uC9C0 \uBABB\uD588\uC5B4\uC694. \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.",
43441  "profile.error.avatar_remove_failed": "\uC0AC\uC9C4\uC744 \uC0AD\uC81C\uD558\uC9C0 \uBABB\uD588\uC5B4\uC694. \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.",
43442  "effects.title": "\uD6A8\uACFC",
43443  "effects.soft": "\uC18C\uD504\uD2B8 \uD3EC\uCEE4\uC2A4",
43444  "effects.vignette": "\uBE44\uB124\uD305",
43445  "effects.face": "\uC5BC\uAD74 \uBE14\uB7EC",
43446  "effects.face_preview_only": "\uC5BC\uAD74 \uBE14\uB7EC (\uBBF8\uB9AC\uBCF4\uAE30 \uC804\uC6A9)",
43447  "effects.face_viewer_side": "\uC5BC\uAD74 \uBE14\uB7EC (\uBCF4\uB294 \uC0AC\uB78C \uAE30\uC900)",
43448  "effects.face_strength": "\uC5BC\uAD74 \uBE14\uB7EC \uAC15\uB3C4",
43449  "effects.grade.off": "\uB044\uAE30",
43450  "effects.grade.pop": "\uD31D",
43451  "effects.grade.warm": "\uB530\uB73B\uD558\uAC8C",
43452  "effects.grade.cool": "\uCC28\uAC11\uAC8C",
43453  "effects.grade.bw": "\uD751\uBC31",
43454  "camera.off": "\uCE74\uBA54\uB77C \uAEBC\uC9D0",
43455  "camera.check": "\uCE74\uBA54\uB77C \uD655\uC778",
43456  "camera.retry": "\uCE74\uBA54\uB77C \uB2E4\uC2DC \uC2DC\uB3C4",
43457  "camera.ready": "\uCE74\uBA54\uB77C \uC900\uBE44 \uC644\uB8CC",
43458  "camera.idle.title": "\uCE74\uBA54\uB77C \uCF1C\uAE30",
43459  "camera.idle.hint": "\uC900\uBE44\uB418\uBA74 \uBE0C\uB77C\uC6B0\uC800\uC5D0 \uAD8C\uD55C\uC744 \uC694\uCCAD\uD560\uAC8C\uC694.",
43460  "camera.idle.button": "\uCE74\uBA54\uB77C \uCF1C\uAE30",
43461  "camera.status.idle": "\uB300\uAE30 \uC911",
43462  "camera.status.off": "\uCE74\uBA54\uB77C \uAEBC\uC9D0",
43463  "camera.status.loading": "\uCE74\uBA54\uB77C \uAD8C\uD55C \uC694\uCCAD \uC911...",
43464  "camera.status.denied": "\uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uCE74\uBA54\uB77C \uAD8C\uD55C\uC744 \uD5C8\uC6A9\uD558\uACE0 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.",
43465  "camera.status.error": "\uCE74\uBA54\uB77C \uBBF8\uB9AC\uBCF4\uAE30\uC5D0 \uC2E4\uD328\uD588\uC5B4\uC694. \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.",
43466  "camera.status.unsupported": "\uC774 \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C\uB294 \uCE74\uBA54\uB77C\uB97C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC544\uC694.",
43467  "camera.status.insecure": "\uCE74\uBA54\uB77C \uC811\uADFC\uC740 HTTPS\uB098 localhost \uD658\uACBD\uC774 \uD544\uC694\uD574\uC694.",
43468  "camera.status.attach_failed": "\uCE74\uBA54\uB77C \uBBF8\uB9AC\uBCF4\uAE30\uB97C \uC2DC\uC791\uD560 \uC218 \uC5C6\uC5B4\uC694. \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.",
43469  "camera.guest_name_placeholder": "\uAC8C\uC2A4\uD2B8 \uC774\uB984",
43470  "camera.flip": "\uCE74\uBA54\uB77C \uC804\uD658",
43471  "camera.save_name": "\uC800\uC7A5",
43472  "camera.edit_name": "\uC774\uB984 \uC218\uC815",
43473  "mic.on": "\uB9C8\uC774\uD06C \uB044\uAE30",
43474  "mic.off": "\uB9C8\uC774\uD06C \uCF1C\uAE30",
43475  "video.on": "\uCE74\uBA54\uB77C \uB044\uAE30",
43476  "video.off": "\uCE74\uBA54\uB77C \uCF1C\uAE30",
43477  "chat.title": "\uCC44\uD305",
43478  "chat.close": "\uCC44\uD305 \uB2EB\uAE30",
43479  "chat.loading": "\uBD88\uB7EC\uC624\uB294 \uC911...",
43480  "chat.load_earlier": "\uC774\uC804 \uBA54\uC2DC\uC9C0 \uBD88\uB7EC\uC624\uAE30",
43481  "chat.empty": "\uC544\uC9C1 \uBA54\uC2DC\uC9C0\uAC00 \uC5C6\uC5B4\uC694",
43482  "chat.send_error": "\uBA54\uC2DC\uC9C0 \uC804\uC1A1 \uC2E4\uD328 \u2014 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.",
43483  "chat.input_placeholder": "\uBA54\uC2DC\uC9C0 \uC785\uB825...",
43484  "room.host": "\uD638\uC2A4\uD2B8",
43485  "app.room_default_title": "\uBC29 \uB9CC\uB4E4\uAE30",
43486  "app.chat_connection_rejected": "\uCC44\uD305 \uC5F0\uACB0 \uC2E4\uD328 \u2014 \uC0C8\uB85C\uACE0\uCE68\uD574 \uBCF4\uC138\uC694.",
43487  "app.copy_failed": "\uB9C1\uD06C \uBCF5\uC0AC \uC2E4\uD328. \uC9C1\uC811 \uC120\uD0DD\uD574\uC11C \uBCF5\uC0AC\uD574 \uBCF4\uC138\uC694.",
43488  "app.chat_not_connected": "\uC544\uC9C1 \uCC44\uD305\uC774 \uC5F0\uACB0\uB418\uC9C0 \uC54A\uC558\uC5B4\uC694. \uC7A0\uC2DC \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.",
43489  "footer.terms": "\uC774\uC6A9\uC57D\uAD00",
43490  "footer.copyright": "\xA9 2026 Yano.AI"
43491};
43492
43493// app/javascript/yano/locales/lo.js
43494var lo_default = {
43495  "home.heading.default": "\u0EA1\u0EB2\u0EA5\u0EBB\u0EA1\u0E81\u0EB1\u0E99",
43496  "home.heading.loading": "\u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0EC0\u0E9B\u0EB5\u0E94\u0EAB\u0EC9\u0EAD\u0E87...",
43497  "home.heading.join": "\u0E9E\u0EC9\u0EAD\u0EA1\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EC1\u0EA5\u0EC9\u0EA7\u0E9A\u0ECD\u0EC8?",
43498  "home.heading.joined": "\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EC1\u0EA5\u0EC9\u0EA7",
43499  "home.heading.pending": "\u0EA5\u0ECD\u0E96\u0EC9\u0EB2\u0EC0\u0E88\u0EBB\u0EC9\u0EB2\u0E82\u0EAD\u0E87\u0EAB\u0EC9\u0EAD\u0E87",
43500  "home.body.default": "\u0EAA\u0EC9\u0EB2\u0E87\u0EAB\u0EC9\u0EAD\u0E87, \u0EAA\u0EBB\u0EC8\u0E87\u0EA5\u0EB4\u0EC9\u0E87, \u0EC1\u0EA5\u0EC9\u0EA7\u0EA1\u0EC8\u0EA7\u0E99\u0EC0\u0EA5\u0EB5\u0E8D.",
43501  "home.body.loading": "\u0EC1\u0E9B\u0EB1\u0E9A\u0EDC\u0EB6\u0EC8\u0E87, \u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0E94\u0EB6\u0E87\u0EAB\u0EC9\u0EAD\u0E87.",
43502  "home.body.join": "\u0EC0\u0E8A\u0EB1\u0E81\u0E81\u0EC9\u0EAD\u0E87\u0E81\u0EB1\u0E9A\u0EC4\u0EA1, \u0EC1\u0EA5\u0EC9\u0EA7\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EC0\u0EA5\u0EB5\u0E8D.",
43503  "home.body.joined": "\u0EAB\u0EC9\u0EAD\u0E87\u0EC0\u0E9B\u0EB5\u0E94\u0EC1\u0EA5\u0EC9\u0EA7. \u0EC1\u0E8A\u0EA3\u0ECC\u0EA5\u0EB4\u0EC9\u0E87 \u0EAB\u0EBC\u0EB7 \u0EA5\u0EB8\u0E8D\u0EC0\u0EA5\u0EB5\u0E8D.",
43504  "home.body.joined_in_room": "\u0EA2\u0EB9\u0EC8\u0EC3\u0E99\u0EAB\u0EC9\u0EAD\u0E87\u0EC1\u0EA5\u0EC9\u0EA7 \u2014 \u0EA5\u0EB8\u0E8D\u0EC0\u0EA5\u0EB5\u0E8D \u0EAB\u0EBC\u0EB7 \u0EC1\u0E8A\u0EA3\u0ECC\u0EA5\u0EB4\u0EC9\u0E87.",
43505  "home.body.pending": "\u0EAB\u0EC9\u0EAD\u0E87\u0EA5\u0EB1\u0EAD\u0E81\u0EA2\u0EB9\u0EC8. \u0E94\u0EBD\u0EA7\u0EC0\u0E88\u0EBB\u0EC9\u0EB2\u0E82\u0EAD\u0E87\u0EAB\u0EC9\u0EAD\u0E87\u0E88\u0EB0\u0EAE\u0EB1\u0E9A\u0EC0\u0E82\u0EBB\u0EC9\u0EB2.",
43506  "home.cta.create": "\u0EAA\u0EC9\u0EB2\u0E87\u0EAB\u0EC9\u0EAD\u0E87",
43507  "home.cta.join": "\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EAB\u0EC9\u0EAD\u0E87",
43508  "home.cta.enter": "\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EAB\u0EC9\u0EAD\u0E87",
43509  "home.cta.creating": "\u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0EAA\u0EC9\u0EB2\u0E87...",
43510  "home.cta.joining": "\u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0EC0\u0E82\u0EBB\u0EC9\u0EB2...",
43511  "home.cta.opening": "\u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0EC0\u0E9B\u0EB5\u0E94...",
43512  "home.cta.pending": "\u0EA5\u0ECD\u0E96\u0EC9\u0EB2\u0EAE\u0EB1\u0E9A\u0EC0\u0E82\u0EBB\u0EC9\u0EB2...",
43513  "home.copy_link": "\u0E81\u0EB1\u0EAD\u0E9A\u0E9B\u0EB5\u0EC9\u0EA5\u0EB4\u0EC9\u0E87",
43514  "home.copied": "\u0E81\u0EB1\u0EAD\u0E9A\u0E9B\u0EB5\u0EC9\u0EC1\u0EA5\u0EC9\u0EA7!",
43515  "home.leave": "\u0EAD\u0EAD\u0E81\u0E88\u0EB2\u0E81\u0EAB\u0EC9\u0EAD\u0E87",
43516  "home.back": "\u0E81\u0EB1\u0E9A\u0E84\u0EB7\u0E99",
43517  "home.no_participants": "\u0E8D\u0EB1\u0E87\u0E9A\u0ECD\u0EC8\u0EA1\u0EB5\u0EC3\u0E9C\u0EC0\u0E97\u0EB7\u0EC8\u0EAD",
43518  "home.join_by_code": "\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0E94\u0EC9\u0EA7\u0E8D\u0EA5\u0EB0\u0EAB\u0EB1\u0E94",
43519  "home.code_placeholder": "\u0EC3\u0EAA\u0EC8\u0EA5\u0EB0\u0EAB\u0EB1\u0E94",
43520  "home.name_placeholder": "\u0E8A\u0EB7\u0EC8\u0E82\u0EAD\u0E87\u0EC0\u0E88\u0EBB\u0EC9\u0EB2",
43521  "home.people_one": "\u0E84\u0EBB\u0E99",
43522  "home.people_other": "\u0E84\u0EBB\u0E99",
43523  "home.marketing.invite.title": "\u0EAA\u0EC9\u0EB2\u0E87\u0EAB\u0EC9\u0EAD\u0E87,\n\u0EC1\u0EA5\u0EC9\u0EA7\u0EC1\u0E8A\u0EA3\u0ECC\u0EA5\u0EB4\u0EC9\u0E87.",
43524  "home.marketing.invite.body": "\u0E81\u0EBB\u0E94\u0E9A\u0EB2\u0E94\u0E94\u0EBD\u0EA7\u0EC0\u0EA5\u0EB5\u0EC8\u0EA1\u0EC0\u0EA5\u0EB5\u0E8D. \u0EC1\u0E8A\u0EA3\u0ECC\u0EA5\u0EB4\u0EC9\u0E87\u0EC3\u0EAB\u0EC9\u0EDD\u0EB9\u0EC8\u0EC1\u0EA5\u0EC9\u0EA7\u0EC3\u0E9C\u0E81\u0ECD\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EC4\u0E94\u0EC9 \u2014 \u0E9A\u0ECD\u0EC8\u0E95\u0EC9\u0EAD\u0E87\u0EC2\u0EAB\u0EBC\u0E94\u0EC1\u0EAD\u0EB1\u0E9A, \u0E9A\u0ECD\u0EC8\u0E95\u0EC9\u0EAD\u0E87\u0EAA\u0EB0\u0EDD\u0EB1\u0E81.",
43525  "home.marketing.invite.preview_url": "yano.ai/ROOM",
43526  "home.marketing.look.title": "\u0E9B\u0EB1\u0E9A\u0EA5\u0EB8\u0E81\n\u0E95\u0EB2\u0EA1\u0EC3\u0E88\u0EA1\u0EB1\u0E81.",
43527  "home.marketing.look.body": "\u0E9B\u0EB1\u0E9A\u0EAA\u0EB5, \u0EDC\u0EC9\u0EB2\u0EC0\u0E99\u0EBD\u0E99, \u0E82\u0EAD\u0E9A\u0EA1\u0EB7\u0E94 \u2014 \u0EAB\u0EBC\u0EB7 \u0EC0\u0E9A\u0EBC\u0EB5\u0EDC\u0EC9\u0EB2\u0EC4\u0E9B\u0EC0\u0EA5\u0EB5\u0E8D\u0E81\u0ECD\u0EC4\u0E94\u0EC9. \u0E81\u0EC9\u0EAD\u0E87\u0EC0\u0E88\u0EBB\u0EC9\u0EB2, \u0EAA\u0EB0\u0E95\u0EB2\u
435270E8D\u0EC0\u0E88\u0EBB\u0EC9\u0EB2.",
43528  "home.marketing.host.title": "\u0E9E\u0EB7\u0EC9\u0E99\u0E97\u0EB5\u0EC8\u0E82\u0EAD\u0E87\u0EC0\u0E88\u0EBB\u0EC9\u0EB2,\n\u0E81\u0EBB\u0E94\u0E82\u0EAD\u0E87\u0EC0\u0E88\u0EBB\u0EC9\u0EB2.",
43529  "home.marketing.host.body": "\u0EA5\u0EB1\u0EAD\u0E81\u0EAB\u0EC9\u0EAD\u0E87, \u0E9B\u0EB4\u0E94\u0EC4\u0EA1, \u0EAB\u0EBC\u0EB7 \u0EC0\u0E95\u0EB0\u0EAD\u0EAD\u0E81\u0EC0\u0EA5\u0EB5\u0E8D\u0E81\u0ECD\u0EC4\u0E94\u0EC9. \u0EC0\u0E88\u0EBB\u0EC9\u0EB2\u0E82\u0EAD\u0E87\u0EAB\u0EC9\u0EAD\u0E87\u0E84\u0EB8\u0EA1\u0EC0\u0EAD\u0E87.",
43530  "home.marketing.host.locked": "\u0EAB\u0EC9\u0EAD\u0E87\u0EA5\u0EB1\u0EAD\u0E81\u0EA2\u0EB9\u0EC8",
43531  "home.marketing.host.waiting_to_join": "\u0EA5\u0ECD\u0E96\u0EC9\u0EB2\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EAB\u0EC9\u0EAD\u0E87",
43532  "home.marketing.host.wants_to_join": "\u0EA2\u0EB2\u0E81\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EAB\u0EC9\u0EAD\u0E87",
43533  "home.marketing.anything.title": "\u0EAA\u0EB3\u0EA5\u0EB1\u0E9A\u0E97\u0EB8\u0E81\u0EA2\u0EC8\u0EB2\u0E87, \u0EAD\u0EB5\u0EC8\u0EAB\u0EBC\u0EB5.",
43534  "home.marketing.anything.body": "\u0E95\u0EB4\u0EA7\u0EDC\u0EB1\u0E87\u0EAA\u0EB7, \u0EAB\u0EBC\u0EB4\u0EC9\u0E99\u0EC0\u0E81\u0EA1, \u0EA5\u0EBB\u0EA1\u0EA7\u0EBD\u0E81, \u0EC0\u0E9A\u0EB4\u0EC8\u0E87\u0EDC\u0EB1\u0E87\u0E99\u0EB3\u0E81\u0EB1\u0E99 \u2014 \u0EAB\u0EBC\u0EB7 \u0EC1\u0E84\u0EC8\u0EA5\u0EBB\u0EA1\u0E81\u0EB1\u0E99\u0EAB\u0EBC\u0EB4\u0EC9\u0E99\u0EC6.",
43535  "home.marketing.use_case.study_group": "\u{1F4DA} \u0E95\u0EB4\u0EA7\u0EDC\u0EB1\u0E87\u0EAA\u0EB7",
43536  "home.marketing.use_case.game_night": "\u{1F3AE} \u0EAB\u0EBC\u0EB4\u0EC9\u0E99\u0EC0\u0E81\u0EA1",
43537  "home.marketing.use_case.standup": "\u{1F4BC} \u0EAD\u0EB1\u0E9A\u0EC0\u0E94\u0E94\u0EA7\u0EBD\u0E81",
43538  "home.marketing.use_case.watch_party": "\u{1F37F} \u0EC0\u0E9A\u0EB4\u0EC8\u0E87\u0EDC\u0EB1\u0E87\u0E99\u0EB3\u0E81\u0EB1\u0E99",
43539  "home.marketing.use_case.catch_up": "\u2615 \u0EAD\u0EB1\u0E9A\u0EC0\u0E94\u0E94\u0E8A\u0EB5\u0EA7\u0EB4\u0E94",
43540  "home.marketing.use_case.jam_session": "\u{1F3B8} \u0EAB\u0EBC\u0EB4\u0EC9\u0E99\u0E94\u0EBB\u0E99\u0E95\u0EB5",
43541  "home.marketing.use_case.book_club": "\u{1F4D6}
43541 \u0EA5\u0EBB\u0EA1\u0EC0\u0EA5\u0EB7\u0EC8\u0EAD\u0E87\u0E9B\u0EB6\u0EC9\u0EA1",
43542  "home.marketing.use_case.coworking": "\u{1F4BB} \u0E99\u0EB1\u0EC8\u0E87\u0EC0\u0EAE\u0EB1\u0E94\u0EA7\u0EBD\u0E81",
43543  "ended.heading": "\u0E88\u0EBB\u0E9A\u0EAA\u0EB2\u0E8D\u0EC1\u0EA5\u0EC9\u0EA7",
43544  "ended.left": "\u0EC0\u0E88\u0EBB\u0EC9\u0EB2\u0EAD\u0EAD\u0E81\u0E88\u0EB2\u0E81\u0EAB\u0EC9\u0EAD\u0E87\u0EC1\u0EA5\u0EC9\u0EA7.",
43545  "ended.room_ended": "{title} \u0E88\u0EBB\u0E9A\u0EA5\u0EBB\u0E87\u0EC1\u0EA5\u0EC9\u0EA7\u0EAA\u0EB3\u0EA5\u0EB1\u0E9A\u0EC0\u0E88\u0EBB\u0EC9\u0EB2.",
43546  "ended.rejoin": "\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EC3\u0EDD\u0EC8",
43547  "ended.rejoining": "\u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EC3\u0EDD\u0EC8...",
43548  "ended.home": "\u0E81\u0EB1\u0E9A\u0EDC\u0EC9\u0EB2\u0EAB\u0EBC\u0EB1\u0E81",
43549  "call.connecting": "\u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0EC0\u0E8A\u0EB7\u0EC8\u0EAD\u0EA1\u0E95\u0ECD\u0EC8",
43550  "call.waiting": "\u0EA5\u0ECD\u0E96\u0EC9\u0EB2\u0E84\u0EBB\u0E99\u0EAD\u0EB7\u0EC8\u0E99",
43551  "call.invite_code": "\u0EA5\u0EB0\u0EAB\u0EB1\u0E94\u0EC0\u0E8A\u0EB5\u0E99",
43552  "call.audio_on": "\u0EC0\u0E9B\u0EB5\u0E94\u0EAA\u0EBD\u0E87",
43553  "call.muted": "\u0E9B\u0EB4\u0E94\u0EC4\u0EA1\u0EA2\u0EB9\u0EC8",
43554  "call.listening": "\u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0E9F\u0EB1\u0E87",
43555  "call.audio_muted": "\u0E9B\u0EB4\u0E94\u0EAA\u0EBD\u0E87\u0EA2\u0EB9\u0EC8",
43556  "call.speaking": "\u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0EC0\u0EA7\u0EBB\u0EC9\u0EB2",
43557  "call.you": "\u0EC0\u0E88\u0EBB\u0EC9\u0EB2",
43558  "call.you_label": "\u0EC0\u0E88\u0EBB\u0EC9\u0EB2",
43559  "call.you_suffix": "(\u0EC0\u0E88\u0EBB\u0EC9\u0EB2)",
43560  "call.chat_placeholder": "\u0E9E\u0EB4\u0EA1\u0E82\u0ECD\u0EC9\u0E84\u0EA7\u0EB2\u0EA1...",
43561  "call.guest": "\u0EC1\u0E82\u0E81",
43562  "call.room_fallback": "\u0EAB\u0EC9\u0EAD\u0E87",
43563  "call.focus_view": "\u0EA1\u0EB8\u0EA1\u0EA1\u0EAD\u0E87\u0EC2\u0E9F\u0E81\u0EB1\u0EAA",
43564  "call.grid_view": "\u0EA1\u0EB8\u0EA1\u0EA1\u0EAD\u0E87\u0E81\u0EA3\u0EB4\u0E94",
43565  "call.swap_main_video": "\u0EAA\u0EB0\u0EAB\u0EBC\u0EB1\u0E9A\u0EA7\u0EB4\u0E94\u0EB5\u0EC2\u0EAD\u0EAB\u0EBC\u0EB1\u0E81",
43566  "call.open_chat": "\u0EC0\u0E9B\u0EB5\u0E94\u0EC1\u0E8A\u0EB1\u0E94",
43567  "call.close_chat": "\u0E9B\u0EB4\u0E94\u0EC1\u0E8A\u0EB1\u0E94",
43568  "call.leave_room": "\u0EAD\u0EAD\u0E81\u0E88\u0EB2\u0E81\u0EAB\u0EC9\u0EAD\u0E87",
43569  "call.confirm_leave": "\u0EAD\u0EAD\u0E81\u0E9A\u0ECD\u0EC8?",
43570  "call.mic_on": "\u0EC0\u0E9B\u0EB5\u0E94\u0EC4\u0EA1",
43571  "call.muted_label": "\u0E9B\u0EB4\u0E94\u0EC4\u0EA1",
43572  "call.camera_off": "\u0E9B\u0EB4\u0E94\u0E81\u0EC9\u0EAD\u0E87",
43573  "call.connect_failed": "\u0EC0\u0E8A\u0EB7\u0EC8\u0EAD\u0EA1\u0E95\u0ECD\u0EC8\u0E9A\u0ECD\u0EC8\u0EC4\u0E94\u0EC9 \u2014 \u0EC0\u0E8A\u0EB1\u0E81\u0EC0\u0E99\u0EB1\u0E94\u0EC1\u0EA5\u0EC9\u0EA7\u0EA5\u0EAD\u0E87\u0EC3\u0EDD\u0EC8\u0EC0\u0E94\u0EB5\u0EC9.",
43574  "call.camera_access_failed": "\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EC0\u0E96\u0EB4\u0E87\u0E81\u0EC9\u0EAD\u0E87\u0E9A\u0ECD\u0EC8\u0EC4\u0E94\u0EC9. \u0EC0\u0E8A\u0EB1\u0E81\u0EAA\u0EB4\u0E94\u0EC3\u0E99\u0E9A\u0EA3\u0EB2\u0EA7\u0EC0\u0E8A\u0EB5\u0EC1\u0EA5\u0EC9\u0EA7\u0EA5\u0EAD\u0E87\u0EC3\u0EDD\u0EC8.",
43575  "call.recording_failed": "\u0EAD\u0EB1\u0E94\u0EA7\u0EB4\u0E94\u0EB5\u0EC2\u0EAD\u0E9A\u0ECD\u0EC8\u0EC4\u0E94\u0EC9. \u0EAA\u0EB2\u0E8D\u0E88\u0EB0\u0E94\u0EB3\u0EC0\u0E99\u0EB5\u0E99\u0E95\u0ECD\u0EC8\u0EC4\u0E9B\u0EC1\u0E9A\u0E9A\u0E9A\u0ECD\u0EC8\u0EAD\u0EB1\u0E94.",
43576  "call.initialize_failed": "\u0EA1\u0EB5\u0E9A\u0EB2\u0E87\u0EA2\u0EC8\u0EB2\u0E87\u0E9C\u0EB4\u0E94\u0E9E\u0EB2\u0E94\u0E95\u0EAD\u0E99\u0EC0\u0EA5\u0EB5\u0EC8\u0EA1\u0EAA\u0EB2\u0E8D. \u0EA3\u0EB5\u0EC0\u0E9F\u0EA3\u0E8A\u0EC1\u0EA5\u0EC9\u0EA7\u0EA5\u0EAD\u0E87\u0EC3\u0EDD\u0EC8\u0EC0\u0E94\u0EB5\u0EC9.",
43577  "call.participants": "\u0E9C\u0EB9\u0EC9\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EAE\u0EC8\u0EA7\u0EA1",
43578  "call.open_participants": "\u0EC0\u0E9B\u0EB5\u0E94\u0EC0\u0E9A\u0EB4\u0EC8\u0E87\u0E9C\u0EB9\u0EC9\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EAE\u0EC8\u0EA7\u0EA1",
43579  "call.close_participants": "\u0E9B\u0EB4\u0E94\u0E9C\u0EB9\u0EC9\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EAE\u0EC8\u0EA7\u0EA1",
43580  "call.lock_room": "\u0EA5\u0EB1\u0EAD\u0E81\u0EAB\u0EC9\u0EAD\u0E87",
43581  "call.unlock_room": "\u0E9B\u0EBB\u0E94\u0EA5\u0EB1\u0EAD\u0E81\u0EAB\u0EC9\u0EAD\u0E87",
43582  "call.locked": "\u0EA5\u0EB1\u0EAD\u0E81\u0EC1\u0EA5\u0EC9\u0EA7",
43583  "call.unlocked": "\u0EC0\u0E9B\u0EB5\u0E94\u0EC1\u0EA5\u0EC9\u0EA7",
43584  "call.kick_member": "\u0EC0\u0E95\u0EB0\u0EAD\u0EAD\u0E81\u0E88\u0EB2\u0E81\u0EAB\u0EC9\u0EAD\u0E87",
43585  "call.mute_member": "\u0E9B\u0EB4\u0E94\u0EC4\u0EA1",
43586  "call.unmute_member": "\u0EC0\u0E9B\u0EB5\u0E94\u0EC4\u0EA1",
43587  "call.muted_by_host": "\u0EC0\u0E88\u0EBB\u0EC9\u0EB2\u0E82\u0EAD\u0E87\u0EAB\u0EC9\u0EAD\u0E87\u0E9B\u0EB4\u0E94\u0EC4\u0EA1",
43588  "call.waiting_to_join": "\u0EA5\u0ECD\u0E96\u0EC9\u0EB2\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EAB\u0EC9\u0EAD\u0E87",
43589  "call.approve": "\u0EAE\u0EB1\u0E9A\u0EC0\u0E82\u0EBB\u0EC9\u0EB2",
43590  "call.deny": "\u0E9B\u0EB0\u0E95\u0EB4\u0EC0\u0EAA\u0E94",
43591  "call.profile_actions": "\u0E88\u0EB1\u0E94\u0E81\u0EB2\u0E99\u0EC2\u0E9B\u0EA3\u0EC4\u0E9F\u0EA5\u0ECC",
43592  "call.profile_in_room": "\u0EC3\u0E99\u0EAB\u0EC9\u0EAD\u0E87",
43593  "call.profile_role_host": "\u0EC0\u0E88\u0EBB\u0EC9\u0EB2\u0E82\u0EAD\u0E87\u0EAB\u0EC9\u0EAD\u0E87",
43594  "call.profile_role_you": "\u0EC0\u0E88\u0EBB\u0EC9\u0EB2",
43595  "call.profile_action_mute": "\u0E9B\u0EB4\u0E94\u0EAA\u0EBD\u0E87\u0EC0\u0E82\u0EBB\u0EB2\u0EC0\u0E88\u0EBB\u0EC9\u0EB2",
43596  "call.profile_action_mute_meta": "\u0EAA\u0EB0\u0EC0\u0E9E\u0EB2\u0EB0\u0EC0\u0E88\u0EBB\u0EC9\u0EB2 \u2014 \u0EC0\u0E82\u0EBB\u0EB2\u0EC0\u0E88\u0EBB\u0EC9\u0EB2\u0E88\u0EB0\u0E9A\u0ECD\u0EC8\u0EAE\u0EB9\u0EC9",
43597  "call.profile_action_dm": "\u0E97\u0EB1\u0E81\u0EAA\u0EC8\u0EA7\u0E99\u0E95\u0EBB\u0EA7",
43598  "call.profile_action_dm_meta": "\u0EC0\u0EA5\u0EB5\u0EC8\u0EA1\u0EC1\u0E8A\u0EB1\u0E94\u0EAA\u0EC8\u0EA7\u0E99\u0E95\u0EBB\u0EA7\u0E81\u0EB1\u0E9A\u0E84\u0EBB\u0E99\u0E99\u0EB5\u0EC9",
43599  "call.profile_action_view": "\u0EC0\u0E9A\u0EB4\u0EC8\u0E87\u0EC2\u0E9B\u0EA3\u0EC4\u0E9F\u0EA5\u0ECC\u0EC0\u0E95\u0EB1\u0EA1",
43600  "call.profile_action_view_meta": "\u0E9B\u0EB0\u0EAB\u0EA7\u0EB1\u0E94, \u0E9E\u0EB2\u0EAA\u0EB2, \u0EAB\u0EC9\u0EAD\u0E87\u0E97\u0EB5\u0EC8\u0EC0\u0E84\u0EB5\u0E8D\u0EC0\u0E82\u0EBB\u0EC9\u0EB2",
43601  "call.profile_action_report": "\u0EA5\u0EB2\u0E8D\u0E87\u0EB2\u0E99",
43602  "call.profile_action_report_meta": "\u0EC1\u0E88\u0EC9\u0E87\u0EC3\u0EAB\u0EC9\u0EC1\u0EAD\u0E94\u0EA1\u0EB4\u0E99\u0E81\u0EA7\u0E94\u0EAA\u0EAD\u0E9A",
43603  "call.profile_sheet_close": "\u0E9B\u0EB4\u0E94\u0E81\u0EB2\u0E99\u0E88\u0EB1\u0E94\u0E81\u0EB2\u0E99\u0EC2\u0E9B\u0EA3\u0EC4\u0E9F\u0EA5\u0ECC",
43604  "call.profile_open_actions": "\u0EC0\u0E9B\u0EB5\u0E94\u0E81\u0EB2\u0E99\u0E88\u0EB1\u0E94\u0E81\u0EB2\u0E99\u0EC2\u0E9B\u0EA3\u0EC4\u0E9F\u0EA5\u0ECC",
43605  "call.dm_title": "\u0E82\u0ECD\u0EC9\u0E84\u0EA7\u0EB2\u0EA1\u0EAA\u0EC8\u0EA7\u0E99\u0E95\u0EBB\u0EA7",
43606  "call.dm_back": "\u0E81\u0EB1\u0E9A\u0E84\u0EB7\u0E99",
43607  "call.dm_close": "\u0E9B\u0EB4\u0E94\u0E82\u0ECD\u0EC9\u0E84\u0EA7\u0EB2\u0EA1\u0EAA\u0EC8\u0EA7\u0E99\u0E95\u0EBB\u0EA7",
43608  "call.dm_status_online": "\u0EAD\u0EAD\u0E99\u0EA5\u0EB2\u0E8D",
43609  "call.dm_in_room_with": "\u0EC3\u0E99\u0EAB\u0EC9\u0EAD\u0E87\u0E99\u0EB5\u0EC9",
43610  "call.dm_private_label": "\u0EC1\u0E8A\u0EB1\u0E94\u0EAA\u0EC8\u0EA7\u0E99\u0E95\u0EBB\u0EA7",
43611  "call.dm_private_meta": "\u0EA1\u0EB5\u0EC1\u0E95\u0EC8\u0E9E\u0EA7\u0E81\u0EC0\u0E88\u0EBB\u0EC9\u0EB2\u0EAA\u0EAD\u0E87\u0E84\u0EBB\u0E99\u0E97\u0EB5\u0EC8\u0EC0\u0EAB\u0EB1\u0E99\u0E82\u0ECD\u0EC9\u0E84\u0EA7\u0EB2\u0EA1\u0E99\u0EB5\u0EC9",
43612  "call.dm_input_placeholder": "\u0EAA\u0EBB\u0EC8\u0E87\u0E82\u0ECD\u0EC9\u0E84\u0EA7\u0EB2\u0EA1\u0EAA\u0EC8\u0EA7\u0E99\u0E95\u0EBB\u0EA7\u2026",
43613  "call.dm_send": "\u0EAA\u0EBB\u0EC8\u0E87",
43614  "call.dm_just_now": "\u0E95\u0EAD\u0E99\u0E99\u0EB5\u0EC9",
43615  "call.dm_seen_just_now": "\u0EAD\u0EC8\u0EB2\u0E99\u0EC0\u0EA1\u0EB7\u0EC8\u0EAD\u0E81\u0EB5\u0EC9",
43616  "call.dm_typing": "{name} \u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0E9E\u0EB4\u0EA1\u2026",
43617  "call.dm_minimize": "\u0EAB\u0E8D\u0ECD\u0EC9\u0EA5\u0EBB\u0E87",
43618  "call.dm_active_indicator": "\u0EC0\u0E9B\u0EB5\u0E94\u0EC1\u0E8A\u0EB1\u0E94",
43619  "call.dm_unread_messages": "\u0E8D\u0EB1\u0E87\u0E9A\u0ECD\u0EC8\u0EC4\u0E94\u0EC9\u0EAD\u0EC8\u0EB2\u0E99 {count} \u0E82\u0ECD\u0EC9\u0E84\u0EA7\u0EB2\u0EA1",
43620  "call.dm_toast_tap_to_open": "\u0E81\u0EBB\u0E94\u0EC0\u0E9E\u0EB7\u0EC8\u0EAD\u0EC0\u0E9B\u0EB5\u0E94",
43621  "call.dm_reopen_aria": "\u0EC0\u0E9B\u0EB5\u0E94\u0EC1\u0E8A\u0EB1\u0E94\u0E81\u0EB1\u0E9A {name} \u0EAD\u0EB5\u0E81\u0E84\u0EB1\u0EC9\u0E87",
43622  "home.join_denied": "\u0EC0\u0E88\u0EBB\u0EC9\u0EB2\u0E82\u0EAD\u0E87\u0EAB\u0EC9\u0EAD\u0E87\u0E9A\u0ECD\u0EC8\u0EC3\u0EAB\u0EC9\u0EC0\u0E82\u0EBB\u0EC9\u0EB2.",
43623  "home.error.room_not_found": "\u0E9A\u0ECD\u0EC8\u0EA1\u0EB5\u0EA5\u0EB0\u0EAB\u0EB1\u0E94\u0EAB\u0EC9\u0EAD\u0E87\u0E99\u0EB5\u0EC9.",
43624  "home.error.profile_required": "\u0E95\u0EB1\u0EC9\u0E87\u0E84\u0EC8\u0EB2\u0EC2\u0E9B\u0EA3\u0EC4\u0E9F\u0EA5\u0ECC\u0E81\u0EC8\u0EAD\u0E99\u0EC4\u0E9B\u0E95\u0ECD\u0EC8.",
43625  "home.cta.set_up_profile": "\u0E95\u0EB1\u0EC9\u0E87\u0E84\u0EC8\u0EB2\u0EC2\u0E9B\u0EA3\u0EC4\u0E9F\u0EA5\u0ECC",
43626  "home.profile_trigger_new": "\u0E81\u0EBB\u0E94\u0EC0\u0E9E\u0EB7\u0EC8\u0EAD\u0EC0\u0E9E\u0EB5\u0EC8\u0EA1\u0E82\u0ECD\u0EC9\u0EA1\u0EB9\u0E99\u0E82\u0EAD\u0E87\u0EC0\u0E88\u0EBB\u0EC9\u0EB2",
43627  "home.profile_trigger_new_aria": "\u0E95\u0EB1\u0EC9\u0E87\u0E84\u0EC8\u0EB2\u0EC2\u0E9B\u0EA3\u0EC4\u0E9F\u0EA5\u0ECC",
43628  "home.profile_trigger_edit_aria": "\u0EC1\u0E81\u0EC9\u0EC4\u0E82\u0EC2\u0E9B\u0EA3\u0EC4\u0E9F\u0EA5\u0ECC",
43629  "profile.eyebrow_new": "\u0E97\u0EB1\u0E81\u0E97\u0EB2\u0E8D",
43630  "profile.eyebrow_edit": "\u0EC2\u0E9B\u0EA3\u0EC4\u0E9F\u0EA5\u0ECC\u0E82\u0EAD\u0E87\u0EC0\u0E88\u0EBB\u0EC9\u0EB2",
43631  "profile.title_new": "\u0EAA\u0EC9\u0EB2\u0E87\u0EAA\u0EB0\u0E95\u0EB2\u0E8D\u0E82\u0EAD\u0E87\u0EC0\u0E88\u0EBB\u0EC9\u0EB2.",
43632  "profile.title_edit": "\u0EC1\u0E81\u0EC9\u0EC4\u0E82\u0EC2\u0E9B\u0EA3\u0EC4\u0E9F\u0EA5\u0ECC",
43633  "profile.subtitle": "\u0EC3\u0EAA\u0EC8\u0E82\u0ECD\u0EC9\u0EA1\u0EB9\u0E99\u0E88\u0EB1\u0E81\u0EDC\u0EC9\u0EAD\u0E8D \u0EC3\u0EAB\u0EC9\u0EDD\u0EB9\u0EC8\u0EAE\u0EB9\u0EC9\u0EA7\u0EC8\u0EB2\u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0EA5\u0EBB\u0EA1\u0E81\u0EB1\u0E9A\u0EC3\u0E9C.",
43634  "profile.add_photo": "\u0EC0\u0E9E\u0EB5\u0EC8\u0EA1\u0EAE\u0EB9\u0E9A",
43635  "profile.add_photo_soon": "\u0EA5\u0EB0\u0E9A\u0EBB\u0E9A\u0EAE\u0EB9\u0E9A\u0E9E\u0EB2\u0E9A\u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0EA1\u0EB2",
43636  "profile.photo_empty": "\u0E81\u0EBB\u0E94\u0EC0\u0E9E\u0EB7\u0EC8\u0EAD\u0EC0\u0E9E\u0EB5\u0EC8\u0EA1\u0EAE\u0EB9\u0E9A",
43637  "profile.photo_ready": "\u0EAE\u0EB9\u0E9A\u0E9E\u0EC9\u0EAD\u0EA1\u0EC1\u0EA5\u0EC9\u0EA7",
43638  "profile.photo_save_first": "\u0EC0\u0E8A\u0E9A\u0EC2\u0E9B\u0EA3\u0EC4\u0E9F\u0EA5\u0ECC\u0E81\u0EC8\u0EAD\u0E99\u0EAD\u0EB1\u0E9A\u0EC2\u0EAB\u0EBC\u0E94\u0EAE\u0EB9\u0E9A\u0EC0\u0E94\u0EB5\u0EC9",
43639  "profile.photo_crop_caption": "\u0E88\u0EB1\u0E94\u0EC0\u0E9F\u0EA3\u0EA1\u0EAE\u0EB9\u0E9A",
43640  "profile.photo_auto_caption": "\u0EA5\u0EB2\u0E81\u0EC1\u0EA5\u0EC9\u0EA7\u0E8A\u0EB9\u0EA1\u0EC0\u0EA5\u0EB5\u0E8D, \u0E94\u0EBD\u0EA7\u0EA5\u0EB0\u0E9A\u0EBB\u0E9A\u0EC0\u0E8A\u0E9A\u0EC3\u0EAB\u0EC9\u0EAD\u0EB1\u0E94\u0E95\u0EB0\u0EC2\u0E99\u0EA1\u0EB1\u0E94",
43641  "profile.photo_upload": "\u0EAD\u0EB1\u0E9A\u0EC2\u0EAB\u0EBC\u0E94\u0EAE\u0EB9\u0E9A",
43642  "profile.photo_replace": "\u0E9B\u0EC8\u0EBD\u0E99\u0EAE\u0EB9\u0E9A",
43643  "profile.photo_remove": "\u0EA5\u0EB6\u0E9A\u0EAE\u0EB9\u0E9A",
43644  "profile.photo_cancel": "\u0E8D\u0EBB\u0E81\u0EC0\u0EA5\u0EB5\u0E81",
43645  "profile.photo_save": "\u0EC0\u0E8A\u0E9A\u0EAE\u0EB9\u0E9A",
43646  "profile.photo_uploading": "\u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0EAD\u0EB1\u0E9A\u0EC2\u0EAB\u0EBC\u0E94\u0EAE\u0EB9\u0E9A\u2026",
43647  "profile.photo_removing": "\u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0EA5\u0EB6\u0E9A\u0EAE\u0EB9\u0E9A\u2026",
43648  "profile.photo_choose_another": "\u0EC0\u0EA5\u0EB7\u0EAD\u0E81\u0EAE\u0EB9\u0E9A\u0EC3\u0EDD\u0EC8",
43649  "profile.photo_drag_hint": "\u0EA5\u0EB2\u0E81\u0EAE\u0EB9\u0E9A\u0EC3\u0EAB\u0EC9\u0E9E\u0ECD\u0E94\u0EB5\u0E81\u0EB1\u0E9A\u0EA7\u0EBB\u0E87\u0EA1\u0EBB\u0E99. \u0EA5\u0EB0\u0E9A\u0EBB\u0E9A\u0E88\u0EB0\u0EC0\u0E8A\u0E9A\u0EC3\u0EAB\u0EC9\u0EAD\u0EB1\u0E94\u0E95\u0EB0\u0EC2\u0E99\u0EA1\u0EB1\u0E94.",
43650  "profile.photo_zoom": "\u0E8A\u0EB9\u0EA1",
43651  "profile.photo_horizontal": "\u0E95\u0EB1\u0E94\u0EA5\u0EA7\u0E87\u0E99\u0EAD\u0E99",
43652  "profile.photo_vertical": "\u0E95\u0EB1\u0E94\u0EA5\u0EA7\u0E87\u0E95\u0EB1\u0EC9\u0E87",
43653  "profile.name_label": "\u0E8A\u0EB7\u0EC8",
43654  "profile.name_placeholder": "\u0EC3\u0EAB\u0EC9\u0E9E\u0EA7\u0E81\u0EC0\u0EAE\u0EBB\u0EB2\u0EC0\u0EAD\u0EB5\u0EC9\u0E99\u0EC0\u0E88\u0EBB\u0EC9\u0EB2\u0EA7\u0EC8\u0EB2\u0EAB\u0E8D\u0EB1\u0E87?",
43655  "profile.gender_label": "\u0E82\u0EC9\u0EAD\u0E8D\u0EC1\u0EA1\u0EC8\u0E99",
43656  "profile.gender.woman": "\u0E9C\u0EB9\u0EC9\u0E8D\u0EB4\u0E87",
43657  "profile.gender.man": "\u0E9C\u0EB9\u0EC9\u0E8A\u0EB2\u0E8D",
43658  "profile.gender.unspecified": "\u0E9A\u0ECD\u0EC8\u0E82\u0ECD\u0E9A\u0EAD\u0E81",
43659  "profile.bio_label": "\u0EC1\u0E99\u0EB0\u0E99\u0EB3\u0E95\u0EBB\u0EA7",
43660  "profile.bio_optional": "\u0EC3\u0EAA\u0EC8\u0E81\u0ECD\u0EC4\u0E94\u0EC9\u0E9A\u0ECD\u0EC8\u0EC3\u0EAA\u0EC8\u0E81\u0ECD\u0EC4\u0E94\u0EC9",
43661  "profile.bio_placeholder": "\u0E9E\u0EB2\u0EAA\u0EB2\u0E97\u0EB5\u0EC8\u0EC0\u0EA7\u0EBB\u0EC9\u0EB2, \u0EAA\u0EB4\u0EC8\u0E87\u0E97\u0EB5\u0EC8\u0EA1\u0EB1\u0E81, \u0EAB\u0EBC\u0EB7 \u0EAB\u0E8D\u0EB1\u0E87\u0E81\u0ECD\u0EC4\u0E94\u0EC9\u2026",
43662  "profile.cta_new": "\u0EA5\u0EB8\u0E8D\u0EC0\u0EA5\u0EB5\u0E8D",
43663  "profile.cta_edit": "\u0EC0\u0E8A\u0E9A",
43664  "profile.saving": "\u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0EC0\u0E8A\u0E9A\u2026",
43665  "profile.close": "\u0E9B\u0EB4\u0E94",
43666  "profile.error.save_failed": "\u0EC0\u0E8A\u0E9A\u0EC2\u0E9B\u0EA3\u0EC4\u0E9F\u0EA5\u0ECC\u0E9A\u0ECD\u0EC8\u0EC4\u0E94\u0EC9. \u0EA5\u0EAD\u0E87\u0EC3\u0EDD\u0EC8\u0EC0\u0E94\u0EB5\u0EC9.",
43667  "profile.error.avatar_invalid_type": "\u0EC0\u0EA5\u0EB7\u0EAD\u0E81\u0EAE\u0EB9\u0E9A PNG, JPEG, GIF, \u0EAB\u0EBC\u0EB7 WebP \u0EC0\u0E94\u0EB5\u0EC9.",
43668  "profile.error.avatar_too_large": "\u0EC0\u0EA5\u0EB7\u0EAD\u0E81\u0EAE\u0EB9\u0E9A\u0E82\u0EB0\u0EDC\u0EB2\u0E94\u0E99\u0EC9\u0EAD\u0E8D\u0E81\u0EA7\u0EC8\u0EB2 5 MB \u0EC0\u0E94\u0EB5\u0EC9.",
43669  "profile.error.avatar_too_small": "\u0EC0\u0EA5\u0EB7\u0EAD\u0E81\u0EAE\u0EB9\u0E9A\u0E82\u0EB0\u0EDC\u0EB2\u0E94\u0EA2\u0EC8\u0EB2\u0E87\u0EDC\u0EC9\u0EAD\u0E8D 96x96 \u0E9E\u0EB4\u0E81\u0EC0\u0E8A\u0EA7\u0EC0\u0E94\u0EB5\u0EC9.",
43670  "profile.error.avatar_load_failed": "\u0EAD\u0EC8\u0EB2\u0E99\u0EAE\u0EB9\u0E9A\u0E9A\u0ECD\u0EC8\u0EC4\u0E94\u0EC9. \u0EA5\u0EAD\u0E87\u0EC4\u0E9F\u0EA5\u0ECC\u0EAD\u0EB7\u0EC8\u0E99\u0EC0\u0E9A\u0EB4\u0EC8\u0E87.",
43671  "profile.error.avatar_failed": "\u0EAD\u0EB1\u0E9A\u0EC2\u0EAB\u0EBC\u0E94\u0EAE\u0EB9\u0E9A\u0E9A\u0ECD\u0EC8\u0EC4\u0E94\u0EC9. \u0EA5\u0EAD\u0E87\u0EC3\u0EDD\u0EC8\u0EC0\u0E94\u0EB5\u0EC9.",
43672  "profile.error.avatar_remove_failed": "\u0EA5\u0EB6\u0E9A\u0EAE\u0EB9\u0E9A\u0E9A\u0ECD\u0EC8\u0EC4\u0E94\u0EC9. \u0EA5\u0EAD\u0E87\u0EC3\u0EDD\u0EC8\u0EC0\u0E94\u0EB5\u0EC9.",
43673  "effects.title": "\u0EC0\u0EAD\u0EB1\u0E9A\u0EC0\u0E9F\u0EB1\u0E81",
43674  "effects.soft": "\u0EC2\u0E9F\u0E81\u0EB1\u0EAA\u0E8A\u0EAD\u0E9A\u0EC6",
43675  "effects.vignette": "\u0E82\u0EAD\u0E9A\u0EA1\u0EB7\u0E94",
43676  "effects.face": "\u0EC0\u0E9A\u0EBC\u0EB5\u0EDC\u0EC9\u0EB2",
43677  "effects.face_preview_only": "\u0EC0\u0E9A\u0EBC\u0EB5\u0EDC\u0EC9\u0EB2 (\u0EAA\u0EB0\u0EC0\u0E9E\u0EB2\u0EB0\u0E9E\u0EA3\u0EB5\u0EA7\u0EB4\u0EA7)",
43678  "effects.face_viewer_side": "\u0EC0\u0E9A\u0EBC\u0EB5\u0EDC\u0EC9\u0EB2 (\u0E9D\u0EB1\u0EC8\u0E87\u0E84\u0EBB\u0E99\u0EC0\u0E9A\u0EB4\u0EC8\u0E87)",
43679  "effects.face_strength": "\u0EA5\u0EB0\u0E94\u0EB1\u0E9A\u0E84\u0EA7\u0EB2\u0EA1\u0EC0\u0E9A\u0EBC\u0EB5",
43680  "effects.grade.off": "\u0E9B\u0EB4\u0E94",
43681  "effects.grade.pop": "\u0E9B\u0EB1\u0EAD\u0E9A",
43682  "effects.grade.warm": "\u0EAD\u0EB8\u0EC8\u0E99",
43683  "effects.grade.cool": "\u0EC0\u0EA2\u0EB1\u0E99",
43684  "effects.grade.bw": "B&W",
43685  "camera.off": "\u0E9B\u0EB4\u0E94\u0E81\u0EC9\u0EAD\u0E87\u0EA2\u0EB9\u0EC8",
43686  "camera.check": "\u0EC0\u0E8A\u0EB1\u0E81\u0E81\u0EC9\u0EAD\u0E87\u0EC1\u0E9B\u0EB1\u0E9A",
43687  "camera.retry": "\u0EA5\u0EAD\u0E87\u0EC0\u0E9B\u0EB5\u0E94\u0E81\u0EC9\u0EAD\u0E87\u0EC3\u0EDD\u0EC8",
43688  "camera.ready": "\u0E81\u0EC9\u0EAD\u0E87\u0E9E\u0EC9\u0EAD\u0EA1\u0EC1\u0EA5\u0EC9\u0EA7",
43689  "camera.idle.title": "\u0EC0\u0E9B\u0EB5\u0E94\u0E81\u0EC9\u0EAD\u0E87\u0EC0\u0EA5\u0EB5\u0E8D",
43690  "camera.idle.hint": "\u0E94\u0EBD\u0EA7\u0EC0\u0EAE\u0EBB\u0EB2\u0E88\u0EB0\u0E82\u0ECD\u0EAA\u0EB4\u0E94\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EC0\u0E96\u0EB4\u0E87\u0E81\u0EC9\u0EAD\u0E87\u0EC0\u0EA1\u0EB7\u0EC8\u0EAD\u0EC0\u0E88\u0EBB\u0EC9\u0EB2\u0E9E\u0EC9\u0EAD\u0EA1.",
43691  "camera.idle.button": "\u0EC0\u0E9B\u0EB5\u0E94\u0E81\u0EC9\u0EAD\u0E87",
43692  "camera.status.idle": "\u0EA5\u0ECD\u0E96\u0EC9\u0EB2\u0EC0\u0E88\u0EBB\u0EC9\u0EB2\u0EA2\u0EB9\u0EC8",
43693  "camera.status.off": "\u0E9B\u0EB4\u0E94\u0E81\u0EC9\u0EAD\u0E87\u0EA2\u0EB9\u0EC8",
43694  "camera.status.loading": "\u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0E82\u0ECD\u0EAA\u0EB4\u0E94\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EC0\u0E96\u0EB4\u0E87\u0E81\u0EC9\u0EAD\u0E87...",
43695  "camera.status.denied": "\u0EAD\u0EB0\u0E99\u0EB8\u0E8D\u0EB2\u0E94\u0EC3\u0EAB\u0EC9\u0E9A\u0EA3\u0EB2\u0EA7\u0EC0\u0E8A\u0EB5\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EC0\u0E96\u0EB4\u0E87\u0E81\u0EC9\u0EAD\u0E87\u0E81\u0EC8\u0EAD\u0E99, \u0EC1\u0EA5\u0EC9\u0EA7\u0EA5\u0EAD\u0E87\u0EC3\u0EDD\u0EC8.",
43696  "camera.status.error": "\u0E9E\u0EA3\u0EB5\u0EA7\u0EB4\u0EA7\u0E81\u0EC9\u0EAD\u0E87\u0E9A\u0ECD\u0EC8\u0EC4\u0E94\u0EC9. \u0EA5\u0EAD\u0E87\u0EC3\u0EDD\u0EC8\u0EC0\u0E94\u0EB5\u0EC9.",
43697  "camera.status.unsupported": "\u0E9A\u0EA3\u0EB2\u0EA7\u0EC0\u0E8A\u0EB5\u0E99\u0EB5\u0EC9\u0E9A\u0ECD\u0EC8\u0EAE\u0EAD\u0E87\u0EAE\u0EB1\u0E9A\u0E81\u0EB2\u
436970E99\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EC0\u0E96\u0EB4\u0E87\u0E81\u0EC9\u0EAD\u0E87.",
43698  "camera.status.insecure": "\u0E81\u0EB2\u0E99\u0EC0\u0E82\u0EBB\u0EC9\u0EB2\u0EC0\u0E96\u0EB4\u0E87\u0E81\u0EC9\u0EAD\u0E87\u0E95\u0EC9\u0EAD\u0E87\u0EC3\u0E8A\u0EC9 HTTPS \u0EAB\u0EBC\u0EB7 localhost.",
43699  "camera.status.attach_failed": "\u0EC0\u0EA5\u0EB5\u0EC8\u0EA1\u0E9E\u0EA3\u0EB5\u0EA7\u0EB4\u0EA7\u0E81\u0EC9\u0EAD\u0E87\u0E9A\u0ECD\u0EC8\u0EC4\u0E94\u0EC9. \u0EA5\u0EAD\u0E87\u0EC3\u0EDD\u0EC8\u0EC0\u0E94\u0EB5\u0EC9.",
43700  "camera.guest_name_placeholder": "\u0E8A\u0EB7\u0EC8\u0EC1\u0E82\u0E81",
43701  "camera.flip": "\u0EAA\u0EB0\u0EAB\u0EBC\u0EB1\u0E9A\u0E81\u0EC9\u0EAD\u0E87",
43702  "camera.save_name": "\u0EC0\u0E8A\u0E9A",
43703  "camera.edit_name": "\u0E9B\u0EC8\u0EBD\u0E99\u0E8A\u0EB7\u0EC8",
43704  "mic.on": "\u0E9B\u0EB4\u0E94\u0EC4\u0EA1",
43705  "mic.off": "\u0EC0\u0E9B\u0EB5\u0E94\u0EC4\u0EA1",
43706  "video.on": "\u0E9B\u0EB4\u0E94\u0E81\u0EC9\u0EAD\u0E87",
43707  "video.off": "\u0EC0\u0E9B\u0EB5\u0E94\u0E81\u0EC9\u0EAD\u0E87",
43708  "chat.title": "\u0EC1\u0E8A\u0EB1\u0E94",
43709  "chat.close": "\u0E9B\u0EB4\u0E94\u0EC1\u0E8A\u0EB1\u0E94",
43710  "chat.loading": "\u0E81\u0EB3\u0EA5\u0EB1\u0E87\u0EC2\u0EAB\u0EBC\u0E94...",
43711  "chat.load_earlier": "\u0EC2\u0EAB\u0EBC\u0E94\u0E82\u0ECD\u0EC9\u0E84\u0EA7\u0EB2\u0EA1\u0E81\u0EC8\u0EAD\u0E99\u0EDC\u0EC9\u0EB2",
43712  "chat.empty": "\u0E8D\u0EB1\u0E87\u0E9A\u0ECD\u0EC8\u0EA1\u0EB5\u0E82\u0ECD\u0EC9\u0E84\u0EA7\u0EB2\u0EA1",
43713  "chat.send_error": "\u0EAA\u0EBB\u0EC8\u0E87\u0E82\u0ECD\u0EC9\u0E84\u0EA7\u0EB2\u0EA1\u0E9A\u0ECD\u0EC8\u0EC4\u0E94\u0EC9 \u2014 \u0EA5\u0EAD\u0E87\u0EC3\u0EDD\u0EC8\u0EC0\u0E94\u0EB5\u0EC9.",
43714  "chat.input_placeholder": "\u0E9E\u0EB4\u0EA1\u0E82\u0ECD\u0EC9\u0E84\u0EA7\u0EB2\u0EA1...",
43715  "room.host": "\u0EC0\u0E88\u0EBB\u0EC9\u0EB2\u0E82\u0EAD\u0E87\u0EAB\u0EC9\u0EAD\u0E87",
43716  "app.room_default_title": "\u0EAA\u0EC9\u0EB2\u0E87\u0EAB\u0EC9\u0EAD\u0E87",
43717  "app.chat_connection_rejected": "\u0EC0\u0E8A\u0EB7\u0EC8\u0EAD\u0EA1\u0E95\u0ECD\u0EC8\u0EC1\u0E8A\u0EB1\u0E94\u0E9A\u0ECD\u0EC8\u0EC4\u0E94\u0EC9 \u2014 \u0EA5\u0EAD\u0E87\u0EA3\u0EB5\u0EC0\u0E9F\u0EA3\u0E8A\u0EC0\u0E9A\u0EB4\u0EC8\u0E87\u0EC0\u0E94\u0EB5\u0EC9.",
43718  "app.copy_failed": "\u0E81\u0EB1\u0EAD\u0E9A\u0E9B\u0EB5\u0EC9\u0EA5\u0EB4\u0EC9\u0E87\u0E9A\u0ECD\u0EC8\u0EC4\u0E94\u0EC9. \u0EA5\u0EAD\u0E87\u0EC0\u0EA5\u0EB7\u0EAD\u0E81\u0EC1\u0EA5\u0EC9\u0EA7\u0E81\u0EB1\u0EAD\u0E9A\u0E9B\u0EB5\u0EC9\u0EC0\u0EAD\u0E87\u0EC0\u0E94\u0EB5\u0EC9.",
43719  "app.chat_not_connected": "\u0EC1\u0E8A\u0EB1\u0E94\u0E8D\u0EB1\u0E87\u0E9A\u0ECD\u0EC8\u0EC0\u0E8A\u0EB7\u0EC8\u0EAD\u0EA1\u0E95\u0ECD\u0EC8. \u0EA5\u0ECD\u0E96\u0EC9\u0EB2\u0EC1\u0E9B\u0EB1\u0E9A\u0EDC\u0EB6\u0EC8\u0E87\u0EC1\u0EA5\u0EC9\u0EA7\u0EA5\u0EAD\u0E87\u0EC3\u0EDD\u0EC8.",
43720  "footer.terms": "\u0EC0\u0E87\u0EB7\u0EC8\u0EAD\u0E99\u0EC4\u0E82\u0E81\u0EB2\u0E99\u0EC3\u0E8A\u0EC9\u0E87\u0EB2\u0E99",
43721  "footer.copyright": "\xA9 2026 Yano.AI"
43722};
43723
43724// app/javascript/yano/locales/lt.js
43725var lt_default = {
43726  "home.heading.default": "\u0161ok \u012F skambut\u012F",
43727  "home.heading.loading": "Atidaromas kambarys...",
43728  "home.heading.join": "pasiruo\u0161\u0119s prisijungti?",
43729  "home.heading.joined": "tu viduje",
43730  "home.heading.pending": "laukiama hosto",
43731  "home.body.default": "sukurk kambar\u012F, numesk nuorod\u0105, vibe'ink.",
43732  "home.body.loading": "sekund\u0119, ruo\u0161iame kambar\u012F.",
43733  "home.body.join": "pasitikrink kamer\u0105 ir mikr\u0105, tada \u0161ok vidun.",
43734  "home.body.joined": "kambarys paruo\u0161tas. dalinkis nuoroda arba tiesiog varyk.",
43735  "home.body.joined_in_room": "kambaryje \u2014 \u0161ok vidun arba dalinkis nuoroda.",
43736  "home.body.pending": "kambarys u\u017Erakintas. hostas tave \u012Fleis.",
43737  "home.cta.create": "Sukurti kambar\u012F",
43738  "home.cta.join": "Prisijungti",
43739  "home.cta.enter": "U\u017Eeiti",
43740  "home.cta.creating": "Kuriama...",
43741  "home.cta.joining": "Jungiamasi...",
43742  "home.cta.opening": "Atidaroma...",
43743  "home.cta.pending": "Laukiama patvirtinimo...",
43744  "home.copy_link": "kopijuoti nuorod\u0105",
43745  "home.copied": "nukopijuota!",
43746  "home.leave": "i\u0161eiti i\u0161 kambario",
43747  "home.back": "atgal",
43748  "home.no_participants": "kol kas nieko n\u0117ra",
43749  "home.join_by_code": "prisijungti su kodu",
43750  "home.code_placeholder": "\u012Fvesk kod\u0105",
43751  "home.name_placeholder": "tavo vardas",
43752  "home.people_one": "\u017Emogus",
43753  "home.people_other": "\u017Emon\u0117s",
43754  "home.marketing.invite.title": "Sukurk kambar\u012F,\ndalinkis nuoroda.",
43755  "home.marketing.invite.body": "Vienas paspaudimas ir pradedam. Numesk nuorod\u0105 draugams ir bet kas gal\u0117s prisijungti \u2014 joki\u0173 siuntim\u0173si ar registracij\u0173.",
43756  "home.marketing.invite.preview_url": "yano.ai/ROOM",
43757  "home.marketing.look.title": "Atrodyk taip,\nkaip nori.",
43758  "home.marketing.look.body": "Spalv\u0173 korekcija, \u0161velninimas, vinjet\u0117 \u2014 arba visi\u0161kai u\u017Ebluruok veid\u0105. Tavo kamera, tavo stilius.",
43759  "home.marketing.host.title": "Tavo erdv\u0117,\ntavo taisykl\u0117s.",
43760  "home.marketing.host.body": "U\u017Erakink kambar\u012F, u\u017Emutink k\u0105 nors arba i\u0161mesk visai. Hostas valdo situacij\u0105.",
43761  "home.marketing.host.locked": "Kambarys u\u017Erakintas",
43762  "home.marketing.host.waiting_to_join": "Laukia prisijungimo",
43763  "home.marketing.host.wants_to_join": "nori prisijungti",
43764  "home.marketing.anything.title": "Ties\u0105 sakant, bet kam.",
43765  "home.marketing.anything.body": "Mokslams, \u017Eaidim\u0173 vakarams, darbo standup'ams, film\u0173 \u017Ei\u016Br\u0117jimui kartu \u2014 ar tiesiog chill'ui.",
43766  "home.marketing.use_case.study_group": "\u{1F4DA} mokslai",
43767  "home.marketing.use_case.game_night": "\u{1F3AE} \u017Eaidim\u0173 vakaras",
43768  "home.marketing.use_case.standup": "\u{1F4BC} standup'as",
43769  "home.marketing.use_case.watch_party": "\u{1F37F} film\u0173 vakaras",
43770  "home.marketing.use_case.catch_up": "\u2615 pokalbis",
43771  "home.marketing.use_case.jam_session": "\u{1F3B8} jam session",
43772  "home.marketing.use_case.book_club": "\u{1F4D6}
43772 knyg\u0173 klubas",
43773  "home.marketing.use_case.coworking": "\u{1F4BB} darbas kartu",
43774  "ended.heading": "skambutis baig\u0117si",
43775  "ended.left": "i\u0161\u0117jai i\u0161 kambario.",
43776  "ended.room_ended": "{title} tau baig\u0117si.",
43777  "ended.rejoin": "gr\u012F\u017Eti",
43778  "ended.rejoining": "gr\u012F\u017Etama...",
43779  "ended.home": "\u012F prad\u017Ei\u0105",
43780  "call.connecting": "jungiamasi",
43781  "call.waiting": "laukiama kit\u0173",
43782  "call.invite_code": "pakvietimo kodas",
43783  "call.audio_on": "garsas \u012Fjungtas",
43784  "call.muted": "u\u017Emutinta",
43785  "call.listening": "Klauso",
43786  "call.audio_muted": "Garsas i\u0161jungtas",
43787  "call.speaking": "kalba",
43788  "call.you": "tu",
43789  "call.you_label": "Tu",
43790  "call.you_suffix": "(tu)",
43791  "call.chat_placeholder": "ra\u0161yk \u017Einut\u0119...",
43792  "call.guest": "sve\u010Dias",
43793  "call.room_fallback": "kambarys",
43794  "call.focus_view": "Fokuso vaizdas",
43795  "call.grid_view": "Tinklelio vaizdas",
43796  "call.swap_main_video": "Sukeisti pagrindin\u012F video",
43797  "call.open_chat": "Atidaryti chat'\u0105",
43798  "call.close_chat": "U\u017Edaryti chat'\u0105",
43799  "call.leave_room": "I\u0161eiti i\u0161 kambario",
43800  "call.confirm_leave": "I\u0161eiti?",
43801  "call.mic_on": "Mikras \u012Fjungtas",
43802  "call.muted_label": "U\u017Emutinta",
43803  "call.camera_off": "Kamera i\u0161jungta",
43804  "call.connect_failed": "Nepavyko prisijungti \u2014 patikrink net\u0105 ir bandyk dar kart\u0105.",
43805  "call.camera_access_failed": "Nepavyko pasiekti kameros. Patikrink nar\u0161ykl\u0117s leidimus ir bandyk v\u0117l.",
43806  "call.recording_failed": "Nepavyko prad\u0117ti \u012Fra\u0161ymo. Skambutis t\u0119sis be jo.",
43807  "call.initialize_failed": "Ka\u017Ekas l\u016B\u017Eo pradedant skambut\u012F. Perkauk puslap\u012F ir bandyk dar kart\u0105.",
43808  "call.participants": "Dalyviai",
43809  "call.open_participants": "Atidaryti dalyvius",
43810  "call.close_participants": "U\u017Edaryti dalyvius",
43811  "call.lock_room": "U\u017Erakinti kambar\u012F",
43812  "call.unlock_room": "Atrakinti kambar\u012F",
43813  "call.locked": "u\u017Erakinta",
43814  "call.unlocked": "atidaryta",
43815  "call.kick_member": "I\u0161mesti i\u0161 kambario",
43816  "call.mute_member": "U\u017Emutinti",
43817  "call.unmute_member": "Atmutinti",
43818  "call.muted_by_host": "U\u017Emutino hostas",
43819  "call.waiting_to_join": "Laukia prisijungimo",
43820  "call.approve": "Patvirtinti",
43821  "call.deny": "Atmesti",
43822  "call.profile_actions": "Profilio veiksmai",
43823  "call.profile_in_room": "Kambaryje",
43824  "call.profile_role_host": "Hostas",
43825  "call.profile_role_you": "Tu",
43826  "call.profile_action_mute": "U\u017Emutinti j\u0173 gars\u0105",
43827  "call.profile_action_mute_meta": "Tik tau \u2014 jie nesu\u017Einos",
43828  "call.profile_action_dm": "1:1 DM",
43829  "call.profile_action_dm_meta": "Prad\u0117k privat\u0173 pokalb\u012F",
43830  "call.profile_action_view": "\u017Di\u016Br\u0117ti vis\u0105 profil\u012F",
43831  "call.profile_action_view_meta": "Bio, kalbos, praeiti skambu\u010Diai",
43832  "call.profile_action_report": "Reportinti",
43833  "call.profile_action_report_meta": "Pa\u017Eym\u0117ti moderatori\u0173 per\u017Ei\u016Brai",
43834  "call.profile_sheet_close": "U\u017Edaryti profilio veiksmus",
43835  "call.profile_open_actions": "Atidaryti profilio veiksmus",
43836  "call.dm_title": "Privati \u017Einut\u0117",
43837  "call.dm_back": "Atgal \u012F veiksmus",
43838  "call.dm_close": "U\u017Edaryti priva\u010Di\u0105 \u017Einut\u0119",
43839  "call.dm_status_online": "Prisijung\u0119s",
43840  "call.dm_in_room_with": "\u0160iame kambaryje",
43841  "call.dm_private_label": "Privatus chat'as",
43842  "call.dm_private_meta": "\u0160ias \u017Einutes matote tik j\u016Bs dviese",
43843  "call.dm_input_placeholder": "Ra\u0161yk priva\u010Di\u0105 \u017Einut\u0119\u2026",
43844  "call.dm_send": "Si\u0173sti",
43845  "call.dm_just_now": "dabar",
43846  "call.dm_seen_just_now": "K\u0105 tik matyta",
43847  "call.dm_typing": "{name} ra\u0161o\u2026",
43848  "call.dm_minimize": "Suma\u017Einti",
43849  "call.dm_active_indicator": "Atidaryti pokalb\u012F",
43850  "call.dm_unread_messages": "{count} neskaityta",
43851  "call.dm_toast_tap_to_open": "Spausk, kad atidarytum",
43852  "call.dm_reopen_aria": "V\u0117l atidaryti pokalb\u012F su {name}",
43853  "home.join_denied": "Hostas tav\u0119s ne\u012Fleido.",
43854  "home.error.room_not_found": "Tokio kambario kodo n\u0117ra.",
43855  "home.error.profile_required": "Susikurk profil\u012F, kad gal\u0117tum t\u0119sti.",
43856  "home.cta.set_up_profile": "Susikurti profil\u012F",
43857  "home.profile_trigger_new": "Spausk ir prid\u0117k info apie save",
43858  "home.profile_trigger_new_aria": "Susikurti profil\u012F",
43859  "home.profile_trigger_edit_aria": "Redaguoti profil\u012F",
43860  "profile.eyebrow_new": "pasisveikink",
43861  "profile.eyebrow_edit": "tavo profilis",
43862  "profile.title_new": "Padaryk j\u012F savo.",
43863  "profile.title_edit": "Redaguoti profil\u012F",
43864  "profile.subtitle": "Keli greiti faktai, kad kiti \u017Einot\u0173, su kuo bendrauja.",
43865  "profile.add_photo": "Prid\u0117ti nuotrauk\u0105",
43866  "profile.add_photo_soon": "nuotraukos greitai bus",
43867  "profile.photo_empty": "spausk ir prid\u0117k nuotrauk\u0105",
43868  "profile.photo_ready": "nuotrauka paruo\u0161ta",
43869  "profile.photo_save_first": "prie\u0161 keliant nuotrauk\u0105, i\u0161saugok profil\u012F",
43870  "profile.photo_crop_caption": "\u012Fr\u0117mink nuotrauk\u0105",
43871  "profile.photo_auto_caption": "tempk ir priartink, o mes i\u0161saugosim automati\u0161kai",
43872  "profile.photo_upload": "\u012Ekelti nuotrauk\u0105",
43873  "profile.photo_replace": "Pakeisti nuotrauk\u0105",
43874  "profile.photo_remove": "Pa\u0161alinti nuotrauk\u0105",
43875  "profile.photo_cancel": "At\u0161aukti",
43876  "profile.photo_save": "I\u0161saugoti nuotrauk\u0105",
43877  "profile.photo_uploading": "Keliama nuotrauka\u2026",
43878  "profile.photo_removing": "\u0160alinama nuotrauka\u2026",
43879  "profile.photo_choose_another": "Pasirinkti kit\u0105",
43880  "profile.photo_drag_hint": "Tempk nuotrauk\u0105 \u012F apskritimo vid\u0173. Pakeitimai i\u0161sisaugos automati\u0161kai.",
43881  "profile.photo_zoom": "Priartinti",
43882  "profile.photo_horizontal": "Horizontalus kirpimas",
43883  "profile.photo_vertical": "Vertikalus kirpimas",
43884  "profile.name_label": "Vardas",
43885  "profile.name_placeholder": "Kaip tave vadinti?",
43886  "profile.gender_label": "A\u0161 esu",
43887  "profile.gender.woman": "Moteris",
43888  "profile.gender.man": "Vyras",
43889  "profile.gender.unspecified": "Nenoriu sakyti",
43890  "profile.bio_label": "Bio",
43891  "profile.bio_optional": "neprivaloma",
43892  "profile.bio_placeholder": "Kalbos, kurias moki, kas patinka, bet kas\u2026",
43893  "profile.cta_new": "Varom",
43894  "profile.cta_edit": "I\u0161saugoti",
43895  "profile.saving": "Saugoma\u2026",
43896  "profile.close": "U\u017Edaryti",
43897  "profile.error.save_failed": "Nepavyko i\u0161saugoti profilio. Bandyk dar kart\u0105.",
43898  "profile.error.avatar_invalid_type": "Rinkis PNG, JPEG, GIF arba WebP nuotrauk\u0105.",
43899  "profile.error.avatar_too_large": "Nuotrauka turi b\u016Bti ma\u017Eesn\u0117 nei 5 MB.",
43900  "profile.error.avatar_too_small": "Nuotrauka turi b\u016Bti bent 96x96 pikseli\u0173.",
43901  "profile.error.avatar_load_failed": "Nepavyko nuskaityti nuotraukos. Bandyk kit\u0105 fail\u0105.",
43902  "profile.error.avatar_failed": "Nepavyko \u012Fkelti nuotraukos. Bandyk dar kart\u0105.",
43903  "profile.error.avatar_remove_failed": "Nepavyko pa\u0161alinti nuotraukos. Bandyk dar kart\u0105.",
43904  "effects.title": "Efektai",
43905  "effects.soft": "\u0160velnus fokusas",
43906  "effects.vignette": "Vinjet\u0117",
43907  "effects.face": "Veido blur'as",
43908  "effects.face_preview_only": "Veido blur'as (tik per\u017Ei\u016Bra)",
43909  "effects.face_viewer_side": "Veido blur'as (\u017Ei\u016Brovo pus\u0117je)",
43910  "effects.face_strength": "Veido blur'o stiprumas",
43911  "effects.grade.off": "I\u0160JUNGTA",
43912  "effects.grade.pop": "RY\u0160KU",
43913  "effects.grade.warm": "\u0160ILTA",
43914  "effects.grade.cool": "\u0160ALTA",
43915  "effects.grade.bw": "J/B",
43916  "camera.off": "kamera i\u0161jungta",
43917  "camera.check": "pasitikrink kamer\u0105",
43918  "camera.retry": "bandyti kamer\u0105 dar kart\u0105",
43919  "camera.ready": "kamera paruo\u0161ta",
43920  "camera.idle.title": "\u012Esijunk kamer\u0105",
43921  "camera.idle.hint": "Papra\u0161ysim nar\u0161ykl\u0117s leidimo, kai b\u016Bsi pasiruo\u0161\u0119s.",
43922  "camera.idle.button": "\u012Ejungti kamer\u0105",
43923  "camera.status.idle": "Laukiame tav\u0119s",
43924  "camera.status.off": "Kamera i\u0161jungta",
43925  "camera.status.loading": "Pra\u0161oma prieigos prie kameros...",
43926  "camera.status.denied": "Leisk naudoti kamer\u0105 nar\u0161ykl\u0117je ir bandyk dar kart\u0105.",
43927  "camera.status.error": "Nepavyko u\u017Ekrauti kameros vaizdo. Bandyk dar kart\u0105.",
43928  "camera.status.unsupported": "\u0160i nar\u0161ykl\u0117 neleid\u017Eia naudoti kameros.",
43929  "camera.status.insecure": "Kamerai reikia HTTPS arba localhost.",
43930  "camera.status.attach_failed": "Nepavyko paleisti kameros vaizdo. Bandyk dar kart\u0105.",
43931  "camera.guest_name_placeholder": "Sve\u010Dio vardas",
43932  "camera.flip": "Apversti kamer\u0105",
43933  "camera.save_name": "I\u0161saugoti",
43934  "camera.edit_name": "Keisti vard\u0105",
43935  "mic.on": "I\u0161jungti mikr\u0105",
43936  "mic.off": "\u012Ejungti mikr\u0105",
43937  "video.on": "I\u0161jungti kamer\u0105",
43938  "video.off": "\u012Ejungti kamer\u0105",
43939  "chat.title": "chat'as",
43940  "chat.close": "U\u017Edaryti chat'\u0105",
43941  "chat.loading": "kraunama...",
43942  "chat.load_earlier": "u\u017Ekrauti senesnes",
43943  "chat.empty": "kol kas \u017Einu\u010Di\u0173 n\u0117ra",
43944  "chat.send_error": "\u017Dinut\u0117 nei\u0161sisiunt\u0117 \u2014 bandyk dar kart\u0105.",
43945  "chat.input_placeholder": "ra\u0161yk \u017Einut\u0119...",
43946  "room.host": "Hostas",
43947  "app.room_default_title": "Sukurti kambar\u012F",
43948  "app.chat_connection_rejected": "Nepavyko prisijungti prie chat'o \u2014 pabandyk perkrauti.",
43949  "app.copy_failed": "Nepavyko nukopijuoti nuorodos. Pabandyk pa\u017Eym\u0117ti ir nukopijuoti ranka.",
43950  "app.chat_not_connected": "Chat'as dar neprisijung\u0117. Palauk sekund\u0119 ir bandyk v\u0117l.",
43951  "footer.terms": "Taisykl\u0117s ir s\u0105lygos",
43952  "footer.copyright": "\xA9 2026 Yano.AI"
43953};
43954
43955// app/javascript/yano/locales/lv.js
43956var lv_default = {
43957  "home.heading.default": "lec iek\u0161\u0101 zvan\u0101",
43958  "home.heading.loading": "Veram va\u013C\u0101 istabu...",
43959  "home.heading.join": "gatavs pievienoties?",
43960  "home.heading.joined": "esi iek\u0161\u0101",
43961  "home.heading.pending": "gaid\u0101m hostu",
43962  "home.body.default": "uztaisi istabu, iemet saiti, \u010Dilo.",
43963  "home.body.loading": "sekundi, iel\u0101d\u0113jam istabu.",
43964  "home.body.join": "p\u0101rbaudi kameru un miku, un lec iek\u0161\u0101.",
43965  "home.body.joined": "istaba ir gais\u0101. padalies ar saiti vai vienk\u0101r\u0161i s\u0101c.",
43966  "home.body.joined_in_room": "esi istab\u0101 \u2014 lec iek\u0161\u0101 vai padalies ar saiti.",
43967  "home.body.pending": "istaba ir sl\u0113gta. hosts tevi ielaid\u012Bs.",
43968  "home.cta.create": "Izveidot istabu",
43969  "home.cta.join": "Pievienoties",
43970  "home.cta.enter": "Ieiet istab\u0101",
43971  "home.cta.creating": "Veidojam...",
43972  "home.cta.joining": "Pievienojamies...",
43973  "home.cta.opening": "Atveram...",
43974  "home.cta.pending": "Gaid\u0101m apstiprin\u0101jumu...",
43975  "home.copy_link": "kop\u0113t saiti",
43976  "home.copied": "nokop\u0113ts!",
43977  "home.leave": "pamest istabu",
43978  "home.back": "atpaka\u013C",
43979  "home.no_participants": "te v\u0113l neviena nav",
43980  "home.join_by_code": "pievienoties ar kodu",
43981  "home.code_placeholder": "ievadi kodu",
43982  "home.name_placeholder": "tavs v\u0101rds",
43983  "home.people_one": "cilv\u0113ks",
43984  "home.people_other": "cilv\u0113ki",
43985  "home.marketing.invite.title": "Uztaisi istabu,\npadalies ar saiti.",
43986  "home.marketing.invite.body": "S\u0101c ar vienu klik\u0161\u0137i. Aizs\u016Bti saiti draugiem un jebkur\u0161 var pievienoties \u2014 bez lejupiel\u0101d\u0113m un re\u0123istr\u0101cijas.",
43987  "home.marketing.invite.preview_url": "yano.ai/ISTABA",
43988  "home.marketing.look.title": "Izskaties,\nk\u0101 gribi.",
43989  "home.marketing.look.body": "Kr\u0101su filtri, m\u012Bkstin\u0101\u0161ana, vinjete \u2014 vai piln\u012Bb\u0101 aizmiglo seju. Tava kamera, tavs stils.",
43990  "home.marketing.host.title": "Tava telpa,\ntavi noteikumi.",
43991  "home.marketing.host.body": "Aizsl\u0113dz istabu, izsl\u0113dz k\u0101dam ska\u0146u vai izmet pavisam. Hosts kontrol\u0113 situ\u0101ciju.",
43992  "home.marketing.host.locked": "Istaba sl\u0113gta",
43993  "home.marketing.host.waiting_to_join": "Gaida rind\u0101",
43994  "home.marketing.host.wants_to_join": "grib pievienoties",
43995  "home.marketing.anything.title": "Re\u0101li jebkam.",
43996  "home.marketing.anything.body": "M\u0101c\u012Bb\u0101m, sp\u0113\u013Cu vakariem, darba standupiem, kop\u012Bgai skat\u012B\u0161anai \u2014 vai vienk\u0101r\u0161i \u010Dilam.",
43997  "home.marketing.use_case.study_group": "\u{1F4DA} m\u0101c\u012Bbu grupa",
43998  "home.marketing.use_case.game_night": "\u{1F3AE} sp\u0113\u013Cu vakars",
43999  "home.marketing.use_case.standup": "\u{1F4BC} standups",
44000  "home.marketing.use_case.watch_party": "\u{1F37F} watch party",
44001  "home.marketing.use_case.catch_up": "\u2615 pap\u013C\u0101p\u0101t",
44002  "home.marketing.use_case.jam_session": "\u{1F3B8} d\u017Eems",
44003  "home.marketing.use_case.book_club": "\u{1F4D6}
44003 gr\u0101matu klubs",
44004  "home.marketing.use_case.coworking": "\u{1F4BB} kopstr\u0101de",
44005  "ended.heading": "zvans beidzies",
44006  "ended.left": "tu pameti istabu.",
44007  "ended.room_ended": "{title} tev ir beidzies.",
44008  "ended.rejoin": "pievienoties atkal",
44009  "ended.rejoining": "pievienojamies...",
44010  "ended.home": "atpaka\u013C uz s\u0101kumu",
44011  "call.connecting": "savienojam",
44012  "call.waiting": "gaid\u0101m p\u0101r\u0113jos",
44013  "call.invite_code": "iel\u016Bguma kods",
44014  "call.audio_on": "ska\u0146a iesl\u0113gta",
44015  "call.muted": "izsl\u0113gta ska\u0146a",
44016  "call.listening": "Klaus\u0101s",
44017  "call.audio_muted": "Ska\u0146a izsl\u0113gta",
44018  "call.speaking": "run\u0101",
44019  "call.you": "tu",
44020  "call.you_label": "Tu",
44021  "call.you_suffix": "(tu)",
44022  "call.chat_placeholder": "uzraksti zi\u0146u...",
44023  "call.guest": "viesis",
44024  "call.room_fallback": "istaba",
44025  "call.focus_view": "Fokusa skats",
44026  "call.grid_view": "Re\u017E\u0123a skats",
44027  "call.swap_main_video": "Main\u012Bt galveno video",
44028  "call.open_chat": "Atv\u0113rt \u010Datu",
44029  "call.close_chat": "Aizv\u0113rt \u010Datu",
44030  "call.leave_room": "Pamest istabu",
44031  "call.confirm_leave": "Pamest?",
44032  "call.mic_on": "Miks iesl\u0113gts",
44033  "call.muted_label": "Ska\u0146a izsl\u0113gta",
44034  "call.camera_off": "Kamera izsl\u0113gta",
44035  "call.connect_failed": "Neizdev\u0101s savienoties \u2014 p\u0101rbaudi netu un m\u0113\u0123ini v\u0113lreiz.",
44036  "call.camera_access_failed": "Netiekam kl\u0101t kamerai. P\u0101rbaudi p\u0101rl\u016Bka at\u013Caujas un m\u0113\u0123ini v\u0113lreiz.",
44037  "call.recording_failed": "Neizdev\u0101s s\u0101kt ierakstu. Zvans turpin\u0101sies bez t\u0101.",
44038  "call.initialize_failed": "Kaut kas nog\u0101ja greizi s\u0101kot zvanu. P\u0101rl\u0101d\u0113 lapu un m\u0113\u0123ini v\u0113lreiz.",
44039  "call.participants": "Dal\u012Bbnieki",
44040  "call.open_participants": "Atv\u0113rt dal\u012Bbniekus",
44041  "call.close_participants": "Aizv\u0113rt dal\u012Bbniekus",
44042  "call.lock_room": "Aizsl\u0113gt istabu",
44043  "call.unlock_room": "Atsl\u0113gt istabu",
44044  "call.locked": "aizsl\u0113gta",
44045  "call.unlocked": "atv\u0113rta",
44046  "call.kick_member": "Izmest no istabas",
44047  "call.mute_member": "Izsl\u0113gt ska\u0146u",
44048  "call.unmute_member": "Iesl\u0113gt ska\u0146u",
44049  "call.muted_by_host": "Hosts izsl\u0113dza ska\u0146u",
44050  "call.waiting_to_join": "Gaida, lai pievienotos",
44051  "call.approve": "Apstiprin\u0101t",
44052  "call.deny": "Noraid\u012Bt",
44053  "call.profile_actions": "Profila darb\u012Bbas",
44054  "call.profile_in_room": "Istab\u0101",
44055  "call.profile_role_host": "Hosts",
44056  "call.profile_role_you": "Tu",
44057  "call.profile_action_mute": "Izsl\u0113gt vi\u0146am ska\u0146u",
44058  "call.profile_action_mute_meta": "Tikai tev \u2014 vi\u0146\u0161 nezin\u0101s",
44059  "call.profile_action_dm": "1:1 DM",
44060  "call.profile_action_dm_meta": "S\u0101c priv\u0101tu \u010Datu",
44061  "call.profile_action_view": "Skat\u012Bt pilnu profilu",
44062  "call.profile_action_view_meta": "Bio, valodas, iepriek\u0161\u0113jie zvani",
44063  "call.profile_action_report": "Zi\u0146ot",
44064  "call.profile_action_report_meta": "Atz\u012Bm\u0113t moder\u0101cijai",
44065  "call.profile_sheet_close": "Aizv\u0113rt profila darb\u012Bbas",
44066  "call.profile_open_actions": "Atv\u0113rt profila darb\u012Bbas",
44067  "call.dm_title": "Priv\u0101t\u0101 zi\u0146a",
44068  "call.dm_back": "Atpaka\u013C uz darb\u012Bb\u0101m",
44069  "call.dm_close": "Aizv\u0113rt priv\u0101to zi\u0146u",
44070  "call.dm_status_online": "Online",
44071  "call.dm_in_room_with": "\u0160aj\u0101 istab\u0101",
44072  "call.dm_private_label": "Priv\u0101ts \u010Dats",
44073  "call.dm_private_meta": "Tikai j\u016Bs abi redzat \u0161\u012Bs zi\u0146as",
44074  "call.dm_input_placeholder": "S\u016Bti priv\u0101tu zi\u0146u\u2026",
44075  "call.dm_send": "S\u016Bt\u012Bt",
44076  "call.dm_just_now": "tikko",
44077  "call.dm_seen_just_now": "Redz\u0113ts tikko",
44078  "call.dm_typing": "{name} raksta\u2026",
44079  "call.dm_minimize": "Minimiz\u0113t",
44080  "call.dm_active_indicator": "Atv\u0113rt sarunu",
44081  "call.dm_unread_messages": "{count} neizlas\u012Btas",
44082  "call.dm_toast_tap_to_open": "Spied, lai atv\u0113rtu",
44083  "call.dm_reopen_aria": "Atv\u0113rt sarunu ar {name}",
44084  "home.join_denied": "Hosts tevi neielaida.",
44085  "home.error.room_not_found": "T\u0101ds istabas kods neeksist\u0113.",
44086  "home.error.profile_required": "Aizpildi profilu, lai turpin\u0101tu.",
44087  "home.cta.set_up_profile": "Aizpildi profilu",
44088  "home.profile_trigger_new": "Spied, lai pievienotu info",
44089  "home.profile_trigger_new_aria": "Aizpild\u012Bt profilu",
44090  "home.profile_trigger_edit_aria": "Redi\u0123\u0113t profilu",
44091  "profile.eyebrow_new": "pasaki \u010Dau",
44092  "profile.eyebrow_edit": "tavs profils",
44093  "profile.title_new": "Uztaisi pa savam.",
44094  "profile.title_edit": "Redi\u0123\u0113t profilu",
44095  "profile.subtitle": "P\u0101ris deta\u013Cas, lai citi zina, ar ko run\u0101.",
44096  "profile.add_photo": "Pievienot bildi",
44097  "profile.add_photo_soon": "bildes b\u016Bs dr\u012Bz",
44098  "profile.photo_empty": "spied, lai pievienotu bildi",
44099  "profile.photo_ready": "bilde gatava",
44100  "profile.photo_save_first": "saglaba profilu pirms liec bildi",
44101  "profile.photo_crop_caption": "iekadr\u0113 bildi",
44102  "profile.photo_auto_caption": "pab\u012Bdi un pievelc, m\u0113s saglab\u0101sim autom\u0101tiski",
44103  "profile.photo_upload": "Aug\u0161upiel\u0101d\u0113t bildi",
44104  "profile.photo_replace": "Nomain\u012Bt bildi",
44105  "profile.photo_remove": "No\u0146emt bildi",
44106  "profile.photo_cancel": "Atcelt",
44107  "profile.photo_save": "Saglab\u0101t bildi",
44108  "profile.photo_uploading": "L\u0101d\u0113jam bildi\u2026",
44109  "profile.photo_removing": "Dz\u0113\u0161am bildi\u2026",
44110  "profile.photo_choose_another": "Izv\u0113l\u0113ties citu",
44111  "profile.photo_drag_hint": "Ievelc bildi apl\u012B. Izmai\u0146as saglab\u0101jas autom\u0101tiski.",
44112  "profile.photo_zoom": "Pievilkt",
44113  "profile.photo_horizontal": "Horizont\u0101li",
44114  "profile.photo_vertical": "Vertik\u0101li",
44115  "profile.name_label": "V\u0101rds",
44116  "profile.name_placeholder": "K\u0101 tevi saukt?",
44117  "profile.gender_label": "Es esmu",
44118  "profile.gender.woman": "Sieviete",
44119  "profile.gender.man": "V\u012Brietis",
44120  "profile.gender.unspecified": "Lab\u0101k neteik\u0161u",
44121  "profile.bio_label": "Bio",
44122  "profile.bio_optional": "neoblig\u0101ti",
44123  "profile.bio_placeholder": "Valodas, ko zini, kas tev pat\u012Bk, jebkas\u2026",
44124  "profile.cta_new": "Aiziet",
44125  "profile.cta_edit": "Saglab\u0101t",
44126  "profile.saving": "Saglab\u0101jam\u2026",
44127  "profile.close": "Aizv\u0113rt",
44128  "profile.error.save_failed": "Neizdev\u0101s saglab\u0101t profilu. M\u0113\u0123ini v\u0113lreiz.",
44129  "profile.error.avatar_invalid_type": "Izv\u0113lies PNG, JPEG, GIF vai WebP bildi.",
44130  "profile.error.avatar_too_large": "Izv\u0113lies bildi, kas maz\u0101ka par 5 MB.",
44131  "profile.error.avatar_too_small": "Izv\u0113lies bildi, kas ir vismaz 96x96 pikse\u013Ci.",
44132  "profile.error.avatar_load_failed": "Nevar\u0113j\u0101m nolas\u012Bt \u0161o bildi. M\u0113\u0123ini citu failu.",
44133  "profile.error.avatar_failed": "Neizdev\u0101s iel\u0101d\u0113t bildi. M\u0113\u0123ini v\u0113lreiz.",
44134  "profile.error.avatar_remove_failed": "Neizdev\u0101s no\u0146emt bildi. M\u0113\u0123ini v\u0113lreiz.",
44135  "effects.title": "Efekti",
44136  "effects.soft": "M\u012Bksts fokuss",
44137  "effects.vignette": "Vinjete",
44138  "effects.face": "Aizmiglota seja",
44139  "effects.face_preview_only": "Aizmiglota seja (tikai priek\u0161skat\u012Bjums)",
44140  "effects.face_viewer_side": "Aizmiglota seja (skat\u012Bt\u0101jiem)",
44141  "effects.face_strength": "Aizmiglojuma stiprums",
44142  "effects.grade.off": "OFF",
44143  "effects.grade.pop": "POP",
44144  "effects.grade.warm": "WARM",
44145  "effects.grade.cool": "COOL",
44146  "effects.grade.bw": "B&W",
44147  "camera.off": "kamera izsl\u0113gta",
44148  "camera.check": "p\u0101rbaudi kameru",
44149  "camera.retry": "m\u0113\u0123in\u0101t v\u0113lreiz",
44150  "camera.ready": "kamera gatava",
44151  "camera.idle.title": "Iesl\u0113dz kameru",
44152  "camera.idle.hint": "M\u0113s papras\u012Bsim p\u0101rl\u016Bkam at\u013Cauju, kad b\u016Bsi gatavs.",
44153  "camera.idle.button": "Iesl\u0113gt kameru",
44154  "camera.status.idle": "Gaid\u0101m tevi",
44155  "camera.status.off": "Kamera ir izsl\u0113gta",
44156  "camera.status.loading": "Pras\u0101m pieeju kamerai...",
44157  "camera.status.denied": "At\u013Cauj kameru p\u0101rl\u016Bk\u0101 un m\u0113\u0123ini v\u0113lreiz.",
44158  "camera.status.error": "Kameras priek\u0161skat\u012Bjums neizdev\u0101s. M\u0113\u0123ini v\u0113lreiz.",
44159  "camera.status.unsupported": "\u0160is p\u0101rl\u016Bks neatbalsta kameru.",
44160  "camera.status.insecure": "Kamerai vajag HTTPS vai localhost.",
44161  "camera.status.attach_failed": "Neizdev\u0101s palaist kameru. M\u0113\u0123ini v\u0113lreiz.",
44162  "camera.guest_name_placeholder": "Viesa v\u0101rds",
44163  "camera.flip": "Apgriezt kameru",
44164  "camera.save_name": "Saglab\u0101t",
44165  "camera.edit_name": "Redi\u0123\u0113t v\u0101rdu",
44166  "mic.on": "Izsl\u0113gt mikrofonu",
44167  "mic.off": "Iesl\u0113gt mikrofonu",
44168  "video.on": "Izsl\u0113gt kameru",
44169  "video.off": "Iesl\u0113gt kameru",
44170  "chat.title": "\u010Dats",
44171  "chat.close": "Aizv\u0113rt \u010Datu",
44172  "chat.loading": "l\u0101d\u0113jas...",
44173  "chat.load_earlier": "iel\u0101d\u0113t iepriek\u0161\u0113j\u0101s",
44174  "chat.empty": "te v\u0113l nav zi\u0146u",
44175  "chat.send_error": "Zi\u0146a neaizg\u0101ja \u2014 m\u0113\u0123ini v\u0113lreiz.",
44176  "chat.input_placeholder": "raksti zi\u0146u...",
44177  "room.host": "Hosts",
44178  "app.room_default_title": "Izveidot istabu",
44179  "app.chat_connection_rejected": "\u010Cats nevar\u0113ja savienoties \u2014 pam\u0113\u0123ini p\u0101rl\u0101d\u0113t lapu.",
44180  "app.copy_failed": "Neizdev\u0101s nokop\u0113t saiti. Pam\u0113\u0123ini iez\u012Bm\u0113t un nokop\u0113t manu\u0101li.",
44181  "app.chat_not_connected": "\u010Cats v\u0113l nav savienojies. Pagaidi mirkli un m\u0113\u0123ini v\u0113lreiz.",
44182  "footer.terms": "Noteikumi un nosac\u012Bjumi",
44183  "footer.copyright": "\xA9 2026 Yano.AI"
44184};
44185
44186// app/javascript/yano/locales/nl.js
44187var nl_default = {
44188  "home.heading.default": "join een call",
44189  "home.heading.loading": "Room openen...",
44190  "home.heading.join": "ready om te joinen?",
44191  "home.heading.joined": "je bent binnen",
44192  "home.heading.pending": "wachten op de host",
44193  "home.body.default": "maak een room, drop de link, vibe.",
44194  "home.body.loading": "sec, even de room fixen.",
44195  "home.body.join": "check je cam en mic, en jump erin.",
44196  "home.body.joined": "room is live. deel de link of let's go.",
44197  "home.body.joined_in_room": "in de room \u2014 jump erin of deel de link.",
44198  "home.body.pending": "de room is gelockt. de host laat je zo binnen.",
44199  "home.cta.create": "Maak room",
44200  "home.cta.join": "Join room",
44201  "home.cta.enter": "Enter room",
44202  "home.cta.creating": "Maken...",
44203  "home.cta.joining": "Joinen...",
44204  "home.cta.opening": "Openen...",
44205  "home.cta.pending": "Wachten op approval...",
44206  "home.copy_link": "kopieer link",
44207  "home.copied": "gekopieerd!",
44208  "home.leave": "leave room",
44209  "home.back": "terug",
44210  "home.no_participants": "nog niemand hier",
44211  "home.join_by_code": "join met invite code",
44212  "home.code_placeholder": "vul code in",
44213  "home.name_placeholder": "jouw naam",
44214  "home.people_one": "persoon",
44215  "home.people_other": "mensen",
44216  "home.marketing.invite.title": "Maak een room,\ndeel de link.",
44217  "home.marketing.invite.body": "E\xE9n tap en je bent live. Deel de link met je vrienden en iedereen kan joinen \u2014 geen downloads, geen sign-ups.",
44218  "home.marketing.invite.preview_url": "yano.ai/ROOM",
44219  "home.marketing.look.title": "Zie eruit\nzoals jij wilt.",
44220  "home.marketing.look.body": "Color grading, softening, vignette \u2014 of blur je gezicht helemaal. Jouw camera, jouw look.",
44221  "home.marketing.host.title": "Jouw space,\njouw regels.",
44222  "home.marketing.host.body": "Lock de room, mute iemand, of kick ze eruit. De host houdt de controle.",
44223  "home.marketing.host.locked": "Room gelockt",
44224  "home.marketing.host.waiting_to_join": "Wachten om te joinen",
44225  "home.marketing.host.wants_to_join": "wil joinen",
44226  "home.marketing.anything.title": "Echt voor alles.",
44227  "home.marketing.anything.body": "Study sessies, game nights, work standups, samen dingen kijken \u2014 of gewoon chillen.",
44228  "home.marketing.use_case.study_group": "\u{1F4DA} study group",
44229  "home.marketing.use_case.game_night": "\u{1F3AE} game night",
44230  "home.marketing.use_case.standup": "\u{1F4BC} standup",
44231  "home.marketing.use_case.watch_party": "\u{1F37F} watch party",
44232  "home.marketing.use_case.catch_up": "\u2615 catch up",
44233  "home.marketing.use_case.jam_session": "\u{1F3B8} jam sessie",
44234  "home.marketing.use_case.book_club": "\u{1F4D6}
44234 boekenclub",
44235  "home.marketing.use_case.coworking": "\u{1F4BB} co-working",
44236  "ended.heading": "call voorbij",
44237  "ended.left": "je bent geleaved.",
44238  "ended.room_ended": "{title} is voorbij voor jou.",
44239  "ended.rejoin": "rejoin",
44240  "ended.rejoining": "rejoinen...",
44241  "ended.home": "terug naar home",
44242  "call.connecting": "verbinden",
44243  "call.waiting": "wachten op de rest",
44244  "call.invite_code": "invite code",
44245  "call.audio_on": "audio aan",
44246  "call.muted": "gemute",
44247  "call.listening": "Luistert",
44248  "call.audio_muted": "Audio gemute",
44249  "call.speaking": "praat",
44250  "call.you": "jij",
44251  "call.you_label": "Jij",
44252  "call.you_suffix": "(jij)",
44253  "call.chat_placeholder": "stuur een berichtje...",
44254  "call.guest": "gast",
44255  "call.room_fallback": "room",
44256  "call.focus_view": "Focus view",
44257  "call.grid_view": "Grid view",
44258  "call.swap_main_video": "Wissel main video",
44259  "call.open_chat": "Open chat",
44260  "call.close_chat": "Sluit chat",
44261  "call.leave_room": "Leave room",
44262  "call.confirm_leave": "Leaven?",
44263  "call.mic_on": "Mic aan",
44264  "call.muted_label": "Gemute",
44265  "call.camera_off": "Camera uit",
44266  "call.connect_failed": "Verbinding mislukt \u2014 check je internet en probeer het nog eens.",
44267  "call.camera_access_failed": "Kon niet bij je camera. Check je browser permissies en probeer opnieuw.",
44268  "call.recording_failed": "Opnemen is mislukt. De call gaat verder zonder opname.",
44269  "call.initialize_failed": "Er ging iets mis met het starten van de call. Refresh even en probeer opnieuw.",
44270  "call.participants": "Deelnemers",
44271  "call.open_participants": "Open deelnemers",
44272  "call.close_participants": "Sluit deelnemers",
44273  "call.lock_room": "Lock room",
44274  "call.unlock_room": "Unlock room",
44275  "call.locked": "gelockt",
44276  "call.unlocked": "open",
44277  "call.kick_member": "Kick uit de room",
44278  "call.mute_member": "Mute",
44279  "call.unmute_member": "Unmute",
44280  "call.muted_by_host": "Gemute door de host",
44281  "call.waiting_to_join": "Wacht om te joinen",
44282  "call.approve": "Approve",
44283  "call.deny": "Deny",
44284  "call.profile_actions": "Profiel acties",
44285  "call.profile_in_room": "In de room",
44286  "call.profile_role_host": "Host",
44287  "call.profile_role_you": "Jij",
44288  "call.profile_action_mute": "Mute hun audio",
44289  "call.profile_action_mute_meta": "Alleen voor jou \u2014 ze merken er niks van",
44290  "call.profile_action_dm": "1:1 DM",
44291  "call.profile_action_dm_meta": "Start een priv\xE9 chat",
44292  "call.profile_action_view": "Bekijk heel profiel",
44293  "call.profile_action_view_meta": "Bio, talen, eerdere sessies",
44294  "call.profile_action_report": "Report",
44295  "call.profile_action_report_meta": "Rapporteer voor moderatie",
44296  "call.profile_sheet_close": "Sluit profiel acties",
44297  "call.profile_open_actions": "Open profiel acties",
44298  "call.dm_title": "Direct message",
44299  "call.dm_back": "Terug naar acties",
44300  "call.dm_close": "Sluit direct message",
44301  "call.dm_status_online": "Online",
44302  "call.dm_in_room_with": "In deze room",
44303  "call.dm_private_label": "Priv\xE9 chat",
44304  "call.dm_private_meta": "Alleen jullie twee kunnen deze messages zien",
44305  "call.dm_input_placeholder": "Stuur een priv\xE9 berichtje\u2026",
44306  "call.dm_send": "Stuur",
44307  "call.dm_just_now": "nu",
44308  "call.dm_seen_just_now": "Net gezien",
44309  "call.dm_typing": "{name} is aan het typen\u2026",
44310  "call.dm_minimize": "Minimaliseer",
44311  "call.dm_active_indicator": "Open gesprek",
44312  "call.dm_unread_messages": "{count} ongelezen",
44313  "call.dm_toast_tap_to_open": "Tap om te openen",
44314  "call.dm_reopen_aria": "Heropen gesprek met {name}",
44315  "home.join_denied": "De host liet je niet binnen.",
44316  "home.error.room_not_found": "Die room code bestaat niet.",
44317  "home.error.profile_required": "Stel je profiel in om door te gaan.",
44318  "home.cta.set_up_profile": "Stel je profiel in",
44319  "home.profile_trigger_new": "Tap om je info toe te voegen",
44320  "home.profile_trigger_new_aria": "Stel je profiel in",
44321  "home.profile_trigger_edit_aria": "Edit je profiel",
44322  "profile.eyebrow_new": "say hi",
44323  "profile.eyebrow_edit": "jouw profiel",
44324  "profile.title_new": "Maak het van jou.",
44325  "profile.title_edit": "Edit profiel",
44326  "profile.subtitle": "Even wat snelle info zodat mensen weten met wie ze meeten.",
44327  "profile.add_photo": "Voeg foto toe",
44328  "profile.add_photo_soon": "foto's komen eraan",
44329  "profile.photo_empty": "tap om een foto toe te voegen",
44330  "profile.photo_ready": "foto ready",
44331  "profile.photo_save_first": "save je profiel voordat je een foto uploadt",
44332  "profile.photo_crop_caption": "frame je foto",
44333  "profile.photo_auto_caption": "drag en zoom, we saven het automatisch",
44334  "profile.photo_upload": "Upload foto",
44335  "profile.photo_replace": "Vervang foto",
44336  "profile.photo_remove": "Verwijder foto",
44337  "profile.photo_cancel": "Cancel",
44338  "profile.photo_save": "Save foto",
44339  "profile.photo_uploading": "Foto uploaden\u2026",
44340  "profile.photo_removing": "Foto verwijderen\u2026",
44341  "profile.photo_choose_another": "Kies een andere",
44342  "profile.photo_drag_hint": "Sleep de foto in de cirkel. Veranderingen worden automatisch gesaved.",
44343  "profile.photo_zoom": "Zoom",
44344  "profile.photo_horizontal": "Horizontaal croppen",
44345  "profile.photo_vertical": "Verticaal croppen",
44346  "profile.name_label": "Naam",
44347  "profile.name_placeholder": "Hoe mogen we je noemen?",
44348  "profile.gender_label": "Ik ben",
44349  "profile.gender.woman": "Vrouw",
44350  "profile.gender.man": "Man",
44351  "profile.gender.unspecified": "Zeg ik liever niet",
44352  "profile.bio_label": "Bio",
44353  "profile.bio_optional": "optioneel",
44354  "profile.bio_placeholder": "Talen die je spreekt, wat je leuk vindt, alles mag\u2026",
44355  "profile.cta_new": "Let\u2019s go",
44356  "profile.cta_edit": "Save changes",
44357  "profile.saving": "Saven\u2026",
44358  "profile.close": "Sluiten",
44359  "profile.error.save_failed": "Kon je profiel niet saven. Probeer het nog eens.",
44360  "profile.error.avatar_invalid_type": "Kies een PNG, JPEG, GIF of WebP image.",
44361  "profile.error.avatar_too_large": "Kies een image kleiner dan 5 MB.",
44362  "profile.error.avatar_too_small": "Kies een image van minimaal 96 bij 96 pixels.",
44363  "profile.error.avatar_load_failed": "We konden die image niet lezen. Probeer een andere file.",
44364  "profile.error.avatar_failed": "Kon je foto niet uploaden. Probeer het nog eens.",
44365  "profile.error.avatar_remove_failed": "Kon je foto niet verwijderen. Probeer het nog eens.",
44366  "effects.title": "Effecten",
44367  "effects.soft": "Soft focus",
44368  "effects.vignette": "Vignette",
44369  "effects.face": "Face blur",
44370  "effects.face_preview_only": "Face blur (alleen preview)",
44371  "effects.face_viewer_side": "Face blur (viewer-kant)",
44372  "effects.face_strength": "Face blur sterkte",
44373  "effects.grade.off": "UIT",
44374  "effects.grade.pop": "POP",
44375  "effects.grade.warm": "WARM",
44376  "effects.grade.cool": "COOL",
44377  "effects.grade.bw": "Z&W",
44378  "camera.off": "camera is uit",
44379  "camera.check": "check je camera",
44380  "camera.retry": "probeer camera opnieuw",
44381  "camera.ready": "camera ready",
44382  "camera.idle.title": "Zet je camera aan",
44383  "camera.idle.hint": "We vragen je browser om toegang als je er klaar voor bent.",
44384  "camera.idle.button": "Zet camera aan",
44385  "camera.status.idle": "Wachten op jou",
44386  "camera.status.off": "Camera is uit",
44387  "camera.status.loading": "Camera toegang vragen...",
44388  "camera.status.denied": "Geef camera toegang in je browser en probeer het nog eens.",
44389  "camera.status.error": "Camera preview mislukt. Probeer het nog eens.",
44390  "camera.status.unsupported": "Deze browser ondersteunt geen camera toegang.",
44391  "camera.status.insecure": "Camera toegang heeft HTTPS of localhost nodig.",
44392  "camera.status.attach_failed": "Camera preview kon niet starten. Probeer het nog eens.",
44393  "camera.guest_name_placeholder": "Gast naam",
44394  "camera.flip": "Wissel camera",
44395  "camera.save_name": "Save",
44396  "camera.edit_name": "Edit naam",
44397  "mic.on": "Zet microfoon uit",
44398  "mic.off": "Zet microfoon aan",
44399  "video.on": "Zet camera uit",
44400  "video.off": "Zet camera aan",
44401  "chat.title": "chat",
44402  "chat.close": "Sluit chat",
44403  "chat.loading": "laden...",
44404  "chat.load_earlier": "laad oudere",
44405  "chat.empty": "nog geen berichtjes",
44406  "chat.send_error": "Berichtje niet verstuurd \u2014 probeer het nog eens.",
44407  "chat.input_placeholder": "typ een berichtje...",
44408  "room.host": "Host",
44409  "app.room_default_title": "Maak een room",
44410  "app.chat_connection_rejected": "Chat kon niet verbinden \u2014 probeer te refreshen.",
44411  "app.copy_failed": "Kon de link niet kopi\xEBren. Selecteer 'm en kopieer handmatig.",
44412  "app.chat_not_connected": "Chat is nog niet verbonden. Wacht heel even en probeer het nog eens.",
44413  "footer.terms": "Voorwaarden",
44414  "footer.copyright": "\xA9 2026 Yano.AI"
44415};
44416
44417// app/javascript/yano/locales/pl.js
44418var pl_default = {
44419  "home.heading.default": "wbijaj na calla",
44420  "home.heading.loading": "Otwieranie pokoju...",
44421  "home.heading.join": "wbijasz?",
44422  "home.heading.joined": "jeste\u015B w \u015Brodku",
44423  "home.heading.pending": "czekamy na hosta",
44424  "home.body.default": "stw\xF3rz pok\xF3j, rzu\u0107 linkiem, chilluj.",
44425  "home.body.loading": "sekunda, ogarniam pok\xF3j.",
44426  "home.body.join": "sprawd\u017A kamerk\u0119 i mikrofon, i wbijaj.",
44427  "home.body.joined": "pok\xF3j odpalony. udost\u0119pnij link albo po prostu dzia\u0142aj.",
44428  "home.body.joined_in_room": "jeste\u015B w pokoju \u2014 wbijaj albo udost\u0119pnij link.",
44429  "home.body.pending": "pok\xF3j jest zamkni\u0119ty. host musi ci\u0119 wpu\u015Bci\u0107.",
44430  "home.cta.create": "Stw\xF3rz pok\xF3j",
44431  "home.cta.join": "Do\u0142\u0105cz do pokoju",
44432  "home.cta.enter": "Wejd\u017A do pokoju",
44433  "home.cta.creating": "Tworzenie...",
44434  "home.cta.joining": "Do\u0142\u0105czanie...",
44435  "home.cta.opening": "Otwieranie...",
44436  "home.cta.pending": "Czekam na wpuszczenie...",
44437  "home.copy_link": "skopiuj link",
44438  "home.copied": "skopiowane!",
44439  "home.leave": "wyjd\u017A z pokoju",
44440  "home.back": "wr\xF3\u0107",
44441  "home.no_participants": "pusto tu",
44442  "home.join_by_code": "do\u0142\u0105cz przez kod",
44443  "home.code_placeholder": "wpisz kod",
44444  "home.name_placeholder": "twoje imi\u0119",
44445  "home.people_one": "osoba",
44446  "home.people_other": "osoby",
44447  "home.marketing.invite.title": "Stw\xF3rz pok\xF3j,\nwy\u015Blij link.",
44448  "home.marketing.invite.body": "Jedno klikni\u0119cie i gotowe. Wy\u015Blij link znajomym i ka\u017Cdy mo\u017Ce wbi\u0107 \u2014 bez pobierania i zak\u0142adania konta.",
44449  "home.marketing.invite.preview_url": "yano.ai/POKOJ",
44450  "home.marketing.look.title": "Wygl\u0105daj jak\nchcesz.",
44451  "home.marketing.look.body": "Kolorki, wyg\u0142adzanie, winieta \u2014 albo ca\u0142kowity blur na twarz. Twoja kamerka, tw\xF3j vibe.",
44452  "home.marketing.host.title": "Tw\xF3j pok\xF3j,\ntwoje zasady.",
44453  "home.marketing.host.body": "Zamknij pok\xF3j, wycisz kogo\u015B albo go wyrzu\u0107. Host ma pe\u0142n\u0105 kontrol\u0119.",
44454  "home.marketing.host.locked": "Pok\xF3j zamkni\u0119ty",
44455  "home.marketing.host.waiting_to_join": "Czeka na wej\u015Bcie",
44456  "home.marketing.host.wants_to_join": "chce wbi\u0107",
44457  "home.marketing.anything.title": "Dos\u0142ownie do wszystkiego.",
44458  "home.marketing.anything.body": "Wsp\xF3lna nauka, gierki, standupy z pracy, ogl\u0105danie film\xF3w \u2014 albo po prostu chillowanie.",
44459  "home.marketing.use_case.study_group": "\u{1F4DA} wsp\xF3lna nauka",
44460  "home.marketing.use_case.game_night": "\u{1F3AE} gierki",
44461  "home.marketing.use_case.standup": "\u{1F4BC} standup",
44462  "home.marketing.use_case.watch_party": "\u{1F37F} wsp\xF3lne ogl\u0105danie",
44463  "home.marketing.use_case.catch_up": "\u2615 ploteczki",
44464  "home.marketing.use_case.jam_session": "\u{1F3B8} jam session",
44465  "home.marketing.use_case.book_club": "\u{1F4D6}
44465 klub ksi\u0105\u017Cki",
44466  "home.marketing.use_case.coworking": "\u{1F4BB} co-working",
44467  "ended.heading": "call zako\u0144czony",
44468  "ended.left": "wyszed\u0142e\u015B z pokoju.",
44469  "ended.room_ended": "{title} si\u0119 dla ciebie sko\u0144czy\u0142.",
44470  "ended.rejoin": "wbij ponownie",
44471  "ended.rejoining": "\u0142\u0105cz\u0119 ponownie...",
44472  "ended.home": "wr\xF3\u0107 na g\u0142\xF3wn\u0105",
44473  "call.connecting": "\u0142\u0105czenie",
44474  "call.waiting": "czekamy na reszt\u0119",
44475  "call.invite_code": "kod zaproszenia",
44476  "call.audio_on": "d\u017Awi\u0119k w\u0142\u0105czony",
44477  "call.muted": "wyciszony",
44478  "call.listening": "s\u0142ucha",
44479  "call.audio_muted": "d\u017Awi\u0119k wyciszony",
44480  "call.speaking": "m\xF3wi",
44481  "call.you": "ty",
44482  "call.you_label": "Ty",
44483  "call.you_suffix": "(ty)",
44484  "call.chat_placeholder": "napisz co\u015B...",
44485  "call.guest": "go\u015B\u0107",
44486  "call.room_fallback": "pok\xF3j",
44487  "call.focus_view": "Widok g\u0142\xF3wny",
44488  "call.grid_view": "Siatka",
44489  "call.swap_main_video": "Zmie\u0144 g\u0142\xF3wne wideo",
44490  "call.open_chat": "Otw\xF3rz czat",
44491  "call.close_chat": "Zamknij czat",
44492  "call.leave_room": "Wyjd\u017A z pokoju",
44493  "call.confirm_leave": "Wychodzisz?",
44494  "call.mic_on": "Mikrofon w\u0142\u0105czony",
44495  "call.muted_label": "Wyciszony",
44496  "call.camera_off": "Kamerka wy\u0142\u0105czona",
44497  "call.connect_failed": "B\u0142\u0105d po\u0142\u0105czenia \u2014 sprawd\u017A neta i spr\xF3buj jeszcze raz.",
44498  "call.camera_access_failed": "Brak dost\u0119pu do kamerki. Sprawd\u017A uprawnienia przegl\u0105darki i spr\xF3buj ponownie.",
44499  "call.recording_failed": "Nie uda\u0142o si\u0119 odpali\u0107 nagrywania. Call leci dalej bez niego.",
44500  "call.initialize_failed": "Co\u015B posz\u0142o nie tak przy odpalaniu calla. Od\u015Bwie\u017C i spr\xF3buj jeszcze raz.",
44501  "call.participants": "Uczestnicy",
44502  "call.open_participants": "Poka\u017C uczestnik\xF3w",
44503  "call.close_participants": "Ukryj uczestnik\xF3w",
44504  "call.lock_room": "Zamknij pok\xF3j",
44505  "call.unlock_room": "Otw\xF3rz pok\xF3j",
44506  "call.locked": "zamkni\u0119ty",
44507  "call.unlocked": "otwarty",
44508  "call.kick_member": "Wyrzu\u0107 z pokoju",
44509  "call.mute_member": "Wycisz",
44510  "call.unmute_member": "Odcisz",
44511  "call.muted_by_host": "Wyciszony przez hosta",
44512  "call.waiting_to_join": "Czeka na wej\u015Bcie",
44513  "call.approve": "Wpu\u015B\u0107",
44514  "call.deny": "Odrzu\u0107",
44515  "call.profile_actions": "Akcje profilu",
44516  "call.profile_in_room": "W pokoju",
44517  "call.profile_role_host": "Host",
44518  "call.profile_role_you": "Ty",
44519  "call.profile_action_mute": "Wycisz d\u017Awi\u0119k",
44520  "call.profile_action_mute_meta": "Tylko dla ciebie \u2014 nawet si\u0119 nie dowiedz\u0105",
44521  "call.profile_action_dm": "DM 1:1",
44522  "call.profile_action_dm_meta": "Zacznij prywatny czat na boku",
44523  "call.profile_action_view": "Zobacz pe\u0142ny profil",
44524  "call.profile_action_view_meta": "Bio, j\u0119zyki, poprzednie sesje",
44525  "call.profile_action_report": "Zg\u0142o\u015B",
44526  "call.profile_action_report_meta": "Zg\u0142o\u015B do moderacji",
44527  "call.profile_sheet_close": "Zamknij akcje profilu",
44528  "call.profile_open_actions": "Otw\xF3rz akcje profilu",
44529  "call.dm_title": "Wiadomo\u015B\u0107 prywatna",
44530  "call.dm_back": "Wr\xF3\u0107 do akcji",
44531  "call.dm_close": "Zamknij DM",
44532  "call.dm_status_online": "Online",
44533  "call.dm_in_room_with": "W tym pokoju",
44534  "call.dm_private_label": "Prywatny czat",
44535  "call.dm_private_meta": "Tylko wy we dw\xF3jk\u0119 widzicie te wiadomo\u015Bci",
44536  "call.dm_input_placeholder": "Napisz na priv\u2026",
44537  "call.dm_send": "Wy\u015Blij",
44538  "call.dm_just_now": "teraz",
44539  "call.dm_seen_just_now": "Wy\u015Bwietlono przed chwil\u0105",
44540  "call.dm_typing": "{name} pisze\u2026",
44541  "call.dm_minimize": "Minimalizuj",
44542  "call.dm_active_indicator": "Otw\xF3rz konwersacj\u0119",
44543  "call.dm_unread_messages": "{count} nieprzeczytanych",
44544  "call.dm_toast_tap_to_open": "Kliknij, \u017Ceby otworzy\u0107",
44545  "call.dm_reopen_aria": "Otw\xF3rz ponownie konwersacj\u0119 z {name}",
44546  "home.join_denied": "Host ci\u0119 nie wpu\u015Bci\u0142.",
44547  "home.error.room_not_found": "Taki kod pokoju nie istnieje.",
44548  "home.error.profile_required": "Uzupe\u0142nij profil, \u017Ceby lecie\u0107 dalej.",
44549  "home.cta.set_up_profile": "Uzupe\u0142nij profil",
44550  "home.profile_trigger_new": "Kliknij, \u017Ceby doda\u0107 info o sobie",
44551  "home.profile_trigger_new_aria": "Uzupe\u0142nij profil",
44552  "home.profile_trigger_edit_aria": "Edytuj profil",
44553  "profile.eyebrow_new": "przywitaj si\u0119",
44554  "profile.eyebrow_edit": "tw\xF3j profil",
44555  "profile.title_new": "Zr\xF3b to po swojemu.",
44556  "profile.title_edit": "Edytuj profil",
44557  "profile.subtitle": "Kilka szybkich info, \u017Ceby inni wiedzieli, z kim gadaj\u0105.",
44558  "profile.add_photo": "Dodaj fotk\u0119",
44559  "profile.add_photo_soon": "fotki wkr\xF3tce",
44560  "profile.photo_empty": "kliknij, \u017Ceby doda\u0107 fotk\u0119",
44561  "profile.photo_ready": "fotka gotowa",
44562  "profile.photo_save_first": "zapisz profil, zanim wrzucisz fotk\u0119",
44563  "profile.photo_crop_caption": "wykadruj fotk\u0119",
44564  "profile.photo_auto_caption": "przesu\u0144 i przybli\u017C, a my zapiszemy to automatycznie",
44565  "profile.photo_upload": "Wgraj fotk\u0119",
44566  "profile.photo_replace": "Zmie\u0144 fotk\u0119",
44567  "profile.photo_remove": "Usu\u0144 fotk\u0119",
44568  "profile.photo_cancel": "Anuluj",
44569  "profile.photo_save": "Zapisz fotk\u0119",
44570  "profile.photo_uploading": "Wgrywanie fotki\u2026",
44571  "profile.photo_removing": "Usuwanie fotki\u2026",
44572  "profile.photo_choose_another": "Wybierz inn\u0105",
44573  "profile.photo_drag_hint": "Przeci\u0105gnij fotk\u0119 do k\xF3\u0142ka. Zmiany zapisuj\u0105 si\u0119 same.",
44574  "profile.photo_zoom": "Przybli\u017C",
44575  "profile.photo_horizontal": "Kadr w poziomie",
44576  "profile.photo_vertical": "Kadr w pionie",
44577  "profile.name_label": "Imi\u0119",
44578  "profile.name_placeholder": "Jak mamy ci\u0119 nazywa\u0107?",
44579  "profile.gender_label": "Jestem",
44580  "profile.gender.woman": "Kobiet\u0105",
44581  "profile.gender.man": "M\u0119\u017Cczyzn\u0105",
44582  "profile.gender.unspecified": "Wol\u0119 nie m\xF3wi\u0107",
44583  "profile.bio_label": "Bio",
44584  "profile.bio_optional": "opcjonalnie",
44585  "profile.bio_placeholder": "J\u0119zyki, kt\xF3rymi gadasz, co lubisz, cokolwiek\u2026",
44586  "profile.cta_new": "Lecimy",
44587  "profile.cta_edit": "Zapisz zmiany",
44588  "profile.saving": "Zapisywanie\u2026",
44589  "profile.close": "Zamknij",
44590  "profile.error.save_failed": "Nie uda\u0142o si\u0119 zapisa\u0107 profilu. Spr\xF3buj jeszcze raz.",
44591  "profile.error.avatar_invalid_type": "Wybierz obrazek w formacie PNG, JPEG, GIF lub WebP.",
44592  "profile.error.avatar_too_large": "Wybierz plik mniejszy ni\u017C 5 MB.",
44593  "profile.error.avatar_too_small": "Wybierz obrazek, kt\xF3ry ma co najmniej 96x96 pikseli.",
44594  "profile.error.avatar_load_failed": "Nie mogli\u015Bmy wczyta\u0107 tego obrazka. Spr\xF3buj z innym plikiem.",
44595  "profile.error.avatar_failed": "Nie uda\u0142o si\u0119 wgra\u0107 fotki. Spr\xF3buj ponownie.",
44596  "profile.error.avatar_remove_failed": "Nie uda\u0142o si\u0119 usun\u0105\u0107 fotki. Spr\xF3buj ponownie.",
44597  "effects.title": "Efekty",
44598  "effects.soft": "Mi\u0119kki focus",
44599  "effects.vignette": "Winieta",
44600  "effects.face": "Blur twarzy",
44601  "effects.face_preview_only": "Blur twarzy (tylko podgl\u0105d)",
44602  "effects.face_viewer_side": "Blur twarzy (u widza)",
44603  "effects.face_strength": "Moc blura",
44604  "effects.grade.off": "WY\u0141",
44605  "effects.grade.pop": "POP",
44606  "effects.grade.warm": "CIEP\u0141Y",
44607  "effects.grade.cool": "ZIMNY",
44608  "effects.grade.bw": "CZ-B",
44609  "camera.off": "kamerka wy\u0142\u0105czona",
44610  "camera.check": "sprawd\u017A kamerk\u0119",
44611  "camera.retry": "spr\xF3buj ponownie",
44612  "camera.ready": "kamerka gotowa",
44613  "camera.idle.title": "Odpal kamerk\u0119",
44614  "camera.idle.hint": "Poprosimy przegl\u0105dark\u0119 o dost\u0119p, kiedy b\u0119dziesz gotowy.",
44615  "camera.idle.button": "W\u0142\u0105cz kamerk\u0119",
44616  "camera.status.idle": "Czekamy na ciebie",
44617  "camera.status.off": "Kamerka jest wy\u0142\u0105czona",
44618  "camera.status.loading": "Pro\u015Bba o dost\u0119p do kamerki...",
44619  "camera.status.denied": "Zezw\xF3l na dost\u0119p do kamerki w przegl\u0105darce i spr\xF3buj ponownie.",
44620  "camera.status.error": "Podgl\u0105d z kamerki pad\u0142. Spr\xF3buj jeszcze raz.",
44621  "camera.status.unsupported": "Ta przegl\u0105darka nie obs\u0142uguje dost\u0119pu do kamerki.",
44622  "camera.status.insecure": "Dost\u0119p do kamerki wymaga HTTPS lub localhosta.",
44623  "camera.status.attach_failed": "Nie uda\u0142o si\u0119 odpali\u0107 podgl\u0105du z kamerki. Spr\xF3buj ponownie.",
44624  "camera.guest_name_placeholder": "Imi\u0119 go\u015Bcia",
44625  "camera.flip": "Obr\xF3\u0107 kamerk\u0119",
44626  "camera.save_name": "Zapisz",
44627  "camera.edit_name": "Edytuj imi\u0119",
44628  "mic.on": "Wy\u0142\u0105cz mikrofon",
44629  "mic.off": "W\u0142\u0105cz mikrofon",
44630  "video.on": "Wy\u0142\u0105cz kamerk\u0119",
44631  "video.off": "W\u0142\u0105cz kamerk\u0119",
44632  "chat.title": "czat",
44633  "chat.close": "Zamknij czat",
44634  "chat.loading": "\u0142adowanie...",
44635  "chat.load_earlier": "za\u0142aduj starsze",
44636  "chat.empty": "tu jeszcze nic nie ma",
44637  "chat.send_error": "Wiadomo\u015B\u0107 nie posz\u0142a \u2014 spr\xF3buj jeszcze raz.",
44638  "chat.input_placeholder": "napisz co\u015B...",
44639  "room.host": "Host",
44640  "app.room_default_title": "Stw\xF3rz pok\xF3j",
44641  "app.chat_connection_rejected": "Czat nie m\xF3g\u0142 si\u0119 po\u0142\u0105czy\u0107 \u2014 spr\xF3buj od\u015Bwie\u017Cy\u0107.",
44642  "app.copy_failed": "Nie uda\u0142o si\u0119 skopiowa\u0107 linku. Zaznacz i skopiuj go r\u0119cznie.",
44643  "app.chat_not_connected": "Czat nie jest jeszcze po\u0142\u0105czony. Daj mu chwil\u0119 i spr\xF3buj ponownie.",
44644  "footer.terms": "Regulamin",
44645  "footer.copyright": "\xA9 2026 Yano.AI"
44646};
44647
44648// app/javascript/yano/locales/pt.js
44649var pt_default = {
44650  "home.heading.default": "entra na call",
44651  "home.heading.loading": "abrindo a sala...",
44652  "home.heading.join": "pronto pra entrar?",
44653  "home.heading.joined": "t\xE1 dentro",
44654  "home.heading.pending": "esperando o host",
44655  "home.body.default": "cria uma sala, manda o link, curte a vibe.",
44656  "home.body.loading": "pera\xED, puxando a sala.",
44657  "home.body.join": "checa a c\xE2mera e o mic, e entra.",
44658  "home.body.joined": "sala on. compartilha o link ou s\xF3 vai.",
44659  "home.body.joined_in_room": "na sala \u2014 entra a\xED ou compartilha o link.",
44660  "home.body.pending": "a sala t\xE1 trancada. o host vai te deixar entrar.",
44661  "home.cta.create": "Criar sala",
44662  "home.cta.join": "Entrar na sala",
44663  "home.cta.enter": "Entrar",
44664  "home.cta.creating": "Criando...",
44665  "home.cta.joining": "Entrando...",
44666  "home.cta.opening": "Abrindo...",
44667  "home.cta.pending": "Esperando aprova\xE7\xE3o...",
44668  "home.copy_link": "copiar link",
44669  "home.copied": "copiado!",
44670  "home.leave": "sair da sala",
44671  "home.back": "voltar",
44672  "home.no_participants": "ningu\xE9m aqui ainda",
44673  "home.join_by_code": "entrar com c\xF3digo",
44674  "home.code_placeholder": "digite o c\xF3digo",
44675  "home.name_placeholder": "seu nome",
44676  "home.people_one": "pessoa",
44677  "home.people_other": "pessoas",
44678  "home.marketing.invite.title": "Cria uma sala,\ncompartilha o link.",
44679  "home.marketing.invite.body": "Um toque pra come\xE7ar. Manda o link pros amigos e qualquer um entra \u2014 sem download, sem cadastro.",
44680  "home.marketing.invite.preview_url": "yano.ai/SALA",
44681  "home.marketing.look.title": "Apare\xE7a como\nquiser.",
44682  "home.marketing.look.body": "Filtros, suaviza\xE7\xE3o, vinheta \u2014 ou borra seu rosto todo. Sua c\xE2mera, seu estilo.",
44683  "home.marketing.host.title": "Seu espa\xE7o,\nsuas regras.",
44684  "home.marketing.host.body": "Tranca a sala, muta algu\xE9m ou remove de vez. O host \xE9 quem manda.",
44685  "home.marketing.host.locked": "Sala trancada",
44686  "home.marketing.host.waiting_to_join": "Esperando pra entrar",
44687  "home.marketing.host.wants_to_join": "quer entrar",
44688  "home.marketing.anything.title": "Pra qualquer coisa, real.",
44689  "home.marketing.anything.body": "Estudar, jogar, daily do trampo, assistir algo junto \u2014 ou s\xF3 jogar conversa fora.",
44690  "home.marketing.use_case.study_group": "\u{1F4DA} grupo de estudos",
44691  "home.marketing.use_case.game_night": "\u{1F3AE} noite de jogos",
44692  "home.marketing.use_case.standup": "\u{1F4BC} daily",
44693  "home.marketing.use_case.watch_party": "\u{1F37F} watch party",
44694  "home.marketing.use_case.catch_up": "\u2615 botar o papo em dia",
44695  "home.marketing.use_case.jam_session": "\u{1F3B8} jam session",
44696  "home.marketing.use_case.book_club": "\u{1F4D6}
44696 clube do livro",
44697  "home.marketing.use_case.coworking": "\u{1F4BB} co-working",
44698  "ended.heading": "a call acabou",
44699  "ended.left": "voc\xEA saiu da sala.",
44700  "ended.room_ended": "{title} acabou pra voc\xEA.",
44701  "ended.rejoin": "entrar de novo",
44702  "ended.rejoining": "entrando de novo...",
44703  "ended.home": "voltar pro in\xEDcio",
44704  "call.connecting": "conectando",
44705  "call.waiting": "esperando a galera",
44706  "call.invite_code": "c\xF3digo de convite",
44707  "call.audio_on": "\xE1udio on",
44708  "call.muted": "mutado",
44709  "call.listening": "Ouvindo",
44710  "call.audio_muted": "\xC1udio mutado",
44711  "call.speaking": "falando",
44712  "call.you": "voc\xEA",
44713  "call.you_label": "Voc\xEA",
44714  "call.you_suffix": "(voc\xEA)",
44715  "call.chat_placeholder": "manda uma mensagem...",
44716  "call.guest": "convidado",
44717  "call.room_fallback": "sala",
44718  "call.focus_view": "Vis\xE3o em foco",
44719  "call.grid_view": "Vis\xE3o em grade",
44720  "call.swap_main_video": "Trocar v\xEDdeo principal",
44721  "call.open_chat": "Abrir chat",
44722  "call.close_chat": "Fechar chat",
44723  "call.leave_room": "Sair da sala",
44724  "call.confirm_leave": "Sair?",
44725  "call.mic_on": "Mic on",
44726  "call.muted_label": "Mutado",
44727  "call.camera_off": "C\xE2mera off",
44728  "call.connect_failed": "Falha na conex\xE3o \u2014 checa a internet e tenta de novo.",
44729  "call.camera_access_failed": "N\xE3o deu pra acessar a c\xE2mera. Checa as permiss\xF5es do navegador e tenta de novo.",
44730  "call.recording_failed": "A grava\xE7\xE3o n\xE3o come\xE7ou. A call vai rolar sem ela.",
44731  "call.initialize_failed": "Deu ruim ao iniciar a call. Atualiza a p\xE1gina e tenta de novo.",
44732  "call.participants": "Participantes",
44733  "call.open_participants": "Ver participantes",
44734  "call.close_participants": "Fechar participantes",
44735  "call.lock_room": "Trancar sala",
44736  "call.unlock_room": "Destrancar sala",
44737  "call.locked": "trancada",
44738  "call.unlocked": "aberta",
44739  "call.kick_member": "Remover da sala",
44740  "call.mute_member": "Mutar",
44741  "call.unmute_member": "Desmutar",
44742  "call.muted_by_host": "Mutado pelo host",
44743  "call.waiting_to_join": "Esperando pra entrar",
44744  "call.approve": "Aprovar",
44745  "call.deny": "Negar",
44746  "call.profile_actions": "A\xE7\xF5es do perfil",
44747  "call.profile_in_room": "Na sala",
44748  "call.profile_role_host": "Host",
44749  "call.profile_role_you": "Voc\xEA",
44750  "call.profile_action_mute": "Mutar \xE1udio",
44751  "call.profile_action_mute_meta": "S\xF3 pra voc\xEA \u2014 a pessoa n\xE3o vai saber",
44752  "call.profile_action_dm": "DM 1:1",
44753  "call.profile_action_dm_meta": "Come\xE7ar um papo privado",
44754  "call.profile_action_view": "Ver perfil completo",
44755  "call.profile_action_view_meta": "Bio, idiomas, sess\xF5es passadas",
44756  "call.profile_action_report": "Denunciar",
44757  "call.profile_action_report_meta": "Sinalizar pra modera\xE7\xE3o",
44758  "call.profile_sheet_close": "Fechar a\xE7\xF5es do perfil",
44759  "call.profile_open_actions": "Abrir a\xE7\xF5es do perfil",
44760  "call.dm_title": "Mensagem direta",
44761  "call.dm_back": "Voltar pras a\xE7\xF5es",
44762  "call.dm_close": "Fechar DM",
44763  "call.dm_status_online": "Online",
44764  "call.dm_in_room_with": "Nesta sala",
44765  "call.dm_private_label": "Chat privado",
44766  "call.dm_private_meta": "S\xF3 voc\xEAs dois veem essas mensagens",
44767  "call.dm_input_placeholder": "Manda uma DM\u2026",
44768  "call.dm_send": "Enviar",
44769  "call.dm_just_now": "agora",
44770  "call.dm_seen_just_now": "Visto agora",
44771  "call.dm_typing": "{name} t\xE1 digitando\u2026",
44772  "call.dm_minimize": "Minimizar",
44773  "call.dm_active_indicator": "Abrir conversa",
44774  "call.dm_unread_messages": "{count} n\xE3o lidas",
44775  "call.dm_toast_tap_to_open": "Toca pra abrir",
44776  "call.dm_reopen_aria": "Reabrir conversa com {name}",
44777  "home.join_denied": "O host n\xE3o deixou voc\xEA entrar.",
44778  "home.error.room_not_found": "Esse c\xF3digo de sala n\xE3o existe.",
44779  "home.error.profile_required": "Monta seu perfil pra continuar.",
44780  "home.cta.set_up_profile": "Montar perfil",
44781  "home.profile_trigger_new": "Toca pra adicionar seus dados",
44782  "home.profile_trigger_new_aria": "Montar perfil",
44783  "home.profile_trigger_edit_aria": "Editar perfil",
44784  "profile.eyebrow_new": "d\xE1 um oi",
44785  "profile.eyebrow_edit": "seu perfil",
44786  "profile.title_new": "Deixa com a sua cara.",
44787  "profile.title_edit": "Editar perfil",
44788  "profile.subtitle": "Alguns detalhes r\xE1pidos pra galera saber com quem t\xE1 falando.",
44789  "profile.add_photo": "Adicionar foto",
44790  "profile.add_photo_soon": "fotos em breve",
44791  "profile.photo_empty": "toca pra adicionar uma foto",
44792  "profile.photo_ready": "foto pronta",
44793  "profile.photo_save_first": "salva o perfil antes de subir uma foto",
44794  "profile.photo_crop_caption": "enquadra sua foto",
44795  "profile.photo_auto_caption": "arrasta e d\xE1 zoom, a gente salva autom\xE1tico",
44796  "profile.photo_upload": "Subir foto",
44797  "profile.photo_replace": "Trocar foto",
44798  "profile.photo_remove": "Remover foto",
44799  "profile.photo_cancel": "Cancelar",
44800  "profile.photo_save": "Salvar foto",
44801  "profile.photo_uploading": "Subindo foto\u2026",
44802  "profile.photo_removing": "Removendo foto\u2026",
44803  "profile.photo_choose_another": "Escolher outra",
44804  "profile.photo_drag_hint": "Arrasta a foto pro c\xEDrculo. As mudan\xE7as salvam autom\xE1tico.",
44805  "profile.photo_zoom": "Zoom",
44806  "profile.photo_horizontal": "Corte horizontal",
44807  "profile.photo_vertical": "Corte vertical",
44808  "profile.name_label": "Nome",
44809  "profile.name_placeholder": "Como a gente te chama?",
44810  "profile.gender_label": "Eu sou",
44811  "profile.gender.woman": "Mulher",
44812  "profile.gender.man": "Homem",
44813  "profile.gender.unspecified": "Prefiro n\xE3o dizer",
44814  "profile.bio_label": "Bio",
44815  "profile.bio_optional": "opcional",
44816  "profile.bio_placeholder": "Idiomas que voc\xEA fala, o que voc\xEA curte, qualquer coisa\u2026",
44817  "profile.cta_new": "Bora",
44818  "profile.cta_edit": "Salvar",
44819  "profile.saving": "Salvando\u2026",
44820  "profile.close": "Fechar",
44821  "profile.error.save_failed": "N\xE3o deu pra salvar o perfil. Tenta de novo.",
44822  "profile.error.avatar_invalid_type": "Escolhe uma imagem PNG, JPEG, GIF ou WebP.",
44823  "profile.error.avatar_too_large": "Escolhe uma imagem com menos de 5 MB.",
44824  "profile.error.avatar_too_small": "A imagem precisa ter pelo menos 96x96 pixels.",
44825  "profile.error.avatar_load_failed": "N\xE3o conseguimos ler essa imagem. Tenta outro arquivo.",
44826  "profile.error.avatar_failed": "Deu ruim ao subir a foto. Tenta de novo.",
44827  "profile.error.avatar_remove_failed": "Deu ruim ao remover a foto. Tenta de novo.",
44828  "effects.title": "Efeitos",
44829  "effects.soft": "Foco suave",
44830  "effects.vignette": "Vinheta",
44831  "effects.face": "Borrar rosto",
44832  "effects.face_preview_only": "Borrar rosto (s\xF3 preview)",
44833  "effects.face_viewer_side": "Borrar rosto (pra quem v\xEA)",
44834  "effects.face_strength": "Intensidade do borr\xE3o",
44835  "effects.grade.off": "OFF",
44836  "effects.grade.pop": "POP",
44837  "effects.grade.warm": "QUENTE",
44838  "effects.grade.cool": "FRIO",
44839  "effects.grade.bw": "P&B",
44840  "camera.off": "c\xE2mera off",
44841  "camera.check": "checa sua c\xE2mera",
44842  "camera.retry": "tentar c\xE2mera de novo",
44843  "camera.ready": "c\xE2mera pronta",
44844  "camera.idle.title": "Liga a c\xE2mera",
44845  "camera.idle.hint": "Vamos pedir acesso ao navegador quando voc\xEA quiser.",
44846  "camera.idle.button": "Ligar c\xE2mera",
44847  "camera.status.idle": "Esperando voc\xEA",
44848  "camera.status.off": "C\xE2mera off",
44849  "camera.status.loading": "Pedindo acesso \xE0 c\xE2mera...",
44850  "camera.status.denied": "Libera a c\xE2mera no navegador e tenta de novo.",
44851  "camera.status.error": "Deu ruim no preview da c\xE2mera. Tenta de novo.",
44852  "camera.status.unsupported": "Esse navegador n\xE3o suporta acesso \xE0 c\xE2mera.",
44853  "camera.status.insecure": "A c\xE2mera precisa de HTTPS ou localhost.",
44854  "camera.status.attach_failed": "O preview da c\xE2mera n\xE3o iniciou. Tenta de novo.",
44855  "camera.guest_name_placeholder": "Nome do convidado",
44856  "camera.flip": "Virar c\xE2mera",
44857  "camera.save_name": "Salvar",
44858  "camera.edit_name": "Editar nome",
44859  "mic.on": "Desligar mic",
44860  "mic.off": "Ligar mic",
44861  "video.on": "Desligar c\xE2mera",
44862  "video.off": "Ligar c\xE2mera",
44863  "chat.title": "chat",
44864  "chat.close": "Fechar chat",
44865  "chat.loading": "carregando...",
44866  "chat.load_earlier": "carregar anteriores",
44867  "chat.empty": "nenhuma mensagem ainda",
44868  "chat.send_error": "A mensagem n\xE3o foi \u2014 tenta de novo.",
44869  "chat.input_placeholder": "manda uma mensagem...",
44870  "room.host": "Host",
44871  "app.room_default_title": "Criar uma sala",
44872  "app.chat_connection_rejected": "O chat n\xE3o conectou \u2014 tenta atualizar a p\xE1gina.",
44873  "app.copy_failed": "N\xE3o deu pra copiar o link. Tenta selecionar e copiar na m\xE3o.",
44874  "app.chat_not_connected": "O chat ainda n\xE3o conectou. Espera um pouco e tenta de novo.",
44875  "footer.terms": "Termos e Condi\xE7\xF5es",
44876  "footer.copyright": "\xA9 2026 Yano.AI"
44877};
44878
44879// app/javascript/yano/locales/ru.js
44880var ru_default = {
44881  "home.heading.default": "\u0437\u0430\u043B\u0435\u0442\u0430\u0439 \u0432 \u0437\u0432\u043E\u043D\u043E\u043A",
44882  "home.heading.loading": "\u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u043C \u043A\u043E\u043C\u043D\u0430\u0442\u0443...",
44883  "home.heading.join": "\u0433\u043E\u0442\u043E\u0432 \u0437\u0430\u0439\u0442\u0438?",
44884  "home.heading.joined": "\u0442\u044B \u0432 \u043A\u043E\u043C\u043D\u0430\u0442\u0435",
44885  "home.heading.pending": "\u0436\u0434\u0435\u043C \u0445\u043E\u0441\u0442\u0430",
44886  "home.body.default": "\u0441\u043E\u0437\u0434\u0430\u0439 \u043A\u043E\u043C\u043D\u0430\u0442\u0443, \u043A\u0438\u043D\u044C \u0441\u0441\u044B\u043B\u043A\u0443, \u043A\u0430\u0439\u0444\u0443\u0439.",
44887  "home.body.loading": "\u0441\u0435\u043A\u0443\u043D\u0434\u0443, \u0433\u0440\u0443\u0437\u0438\u043C \u043A\u043E\u043C\u043D\u0430\u0442\u0443.",
44888  "home.body.join": "\u0447\u0435\u043A\u043D\u0438 \u043A\u0430\u043C\u0435\u0440\u0443 \u0438 \u043C\u0438\u043A\u0440\u043E, \u0438 \u0437\u0430\u043B\u0435\u0442\u0430\u0439.",
44889  "home.body.joined": "\u043A\u043E\u043C\u043D\u0430\u0442\u0430 \u0433\u043E\u0442\u043E\u0432\u0430. \u043A\u0438\u0434\u0430\u0439 \u0441\u0441\u044B\u043B\u043A\u0443 \u0438\u043B\u0438 \u043F\u0440\u043E\u0441\u0442\u043E \u043D\u0430\u0447\u0438\u043D\u0430\u0439.",
44890  "home.body.joined_in_room": "\u0442\u044B \u0432 \u043A\u043E\u043C\u043D\u0430\u0442\u0435 \u2014 \u043A\u0438\u0434\u0430\u0439 \u0441\u0441\u044B\u043B\u043A\u0443 \u0438\u043B\u0438 \u043D\u0430\u0447\u0438\u043D\u0430\u0439.",
44891  "home.body.pending": "\u043A\u043E\u043C\u043D\u0430\u0442\u0430 \u0437\u0430\u043A\u0440\u044B\u0442\u0430. \u0445\u043E\u0441\u0442 \u0441\u043A\u043E\u0440\u043E \u0432\u043F\u0443\u0441\u0442\u0438\u0442.",
44892  "home.cta.create": "\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043A\u043E\u043C\u043D\u0430\u0442\u0443",
44893  "home.cta.join": "\u0412\u043E\u0439\u0442\u0438 \u0432 \u043A\u043E\u043C\u043D\u0430\u0442\u0443",
44894  "home.cta.enter": "\u0417\u0430\u0439\u0442\u0438",
44895  "home.cta.creating": "\u0421\u043E\u0437\u0434\u0430\u0435\u043C...",
44896  "home.cta.joining": "\u0417\u0430\u0445\u043E\u0434\u0438\u043C...",
44897  "home.cta.opening": "\u041E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u043C...",
44898  "home.cta.pending": "\u0416\u0434\u0435\u043C \u0430\u043F\u043F\u0440\u0443\u0432\u0430...",
44899  "home.copy_link": "\u0441\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0443",
44900  "home.copied": "\u0441\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E!",
44901  "home.leave": "\u0432\u044B\u0439\u0442\u0438 \u0438\u0437 \u043A\u043E\u043C\u043D\u0430\u0442\u044B",
44902  "home.back": "\u043D\u0430\u0437\u0430\u0434",
44903  "home.no_participants": "\u0442\u0443\u0442 \u043F\u043E\u043A\u0430 \u043D\u0438\u043A\u043E\u0433\u043E",
44904  "home.join_by_code": "\u0432\u043E\u0439\u0442\u0438 \u043F\u043E \u043A\u043E\u0434\u0443",
44905  "home.code_placeholder": "\u0432\u0432\u0435\u0434\u0438 \u043A\u043E\u0434",
44906  "home.name_placeholder": "\u0442\u0432\u043E\u0435 \u0438\u043C\u044F",
44907  "home.people_one": "\u0447\u0435\u043B\u043E\u0432\u0435\u043A",
44908  "home.people_other": "\u0447\u0435\u043B\u043E\u0432\u0435\u043A",
44909  "home.marketing.invite.title": "\u0421\u043E\u0437\u0434\u0430\u0439 \u043A\u043E\u043C\u043D\u0430\u0442\u0443,\n\u043F\u043E\u0434\u0435\u043B\u0438\u0441\u044C \u0441\u0441\u044B\u043B\u043A\u043E\u0439.",
44910  "home.marketing.invite.body": "\u0412 \u043E\u0434\u0438\u043D \u043A\u043B\u0438\u043A. \u041A\u0438\u043D\u044C \u0441\u0441\u044B\u043B\u043A\u0443 \u0434\u0440\u0443\u0437\u044C\u044F\u043C, \u0438 \u043E\u043D\u0438 \u0441\u043C\u043E\u0433\u0443\u0442 \u0437\u0430\u0439\u0442\u0438 \u2014 \u0431\u0435\u0437 \u0441\u043A\u0430\u0447\u0438\u0432\u0430\u043D\u0438\u0439 \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0439.",
44911  "home.marketing.invite.preview_url": "yano.ai/ROOM",
44912  "home.marketing.look.title": "\u0412\u044B\u0433\u043B\u044F\u0434\u0438\n\u043A\u0430\u043A \u0445\u043E\u0447\u0435\u0448\u044C.",
44913  "home.marketing.look.body": "\u0426\u0432\u0435\u0442\u043E\u043A\u043E\u0440, \u0441\u043E\u0444\u0442-\u0444\u043E\u043A\u0443\u0441, \u0432\u0438\u043D\u044C\u0435\u0442\u043A\u0430 \u2014 \u0438\u043B\u0438 \u0432\u043E\u043E\u0431\u0449\u0435 \u0437\u0430\u0431\u043B\u044E\u0440\u044C \u043B\u0438\u0446\u043E. \u0422\u0432\u043E\u044F \u043A\u0430\u043C\u0435\u0440\u0430, \u0442\u0432\u043E\u0439 \u0441\u0442\u0438\u043B\u044C.",
44914  "home.marketing.host.title": "\u0422\u0432\u043E\u0435 \u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u043E,\n\u0442\u0432\u043E\u0438 \u043F\u0440\u0430\u0432\u0438\u043B\u0430.",
44915  "home.marketing.host.body": "\u0417\u0430\u043A\u0440\u043E\u0439 \u043A\u043E\u043C\u043D\u0430\u0442\u0443, \u0437\u0430\u043C\u044C\u044E\u0442\u044C \u043A\u043E\u0433\u043E-\u0442\u043E \u0438\u043B\u0438 \u0432\u043E\u043E\u0431\u0449\u0435 \u043A\u0438\u043A\u043D\u0438. \u
449150425\u043E\u0441\u0442 \u0440\u0435\u0448\u0430\u0435\u0442.",
44916  "home.marketing.host.locked": "\u041A\u043E\u043C\u043D\u0430\u0442\u0430 \u0437\u0430\u043A\u0440\u044B\u0442\u0430",
44917  "home.marketing.host.waiting_to_join": "\u0416\u0434\u0443\u0442 \u0432\u0445\u043E\u0434\u0430",
44918  "home.marketing.host.wants_to_join": "\u0445\u043E\u0447\u0435\u0442 \u0437\u0430\u0439\u0442\u0438",
44919  "home.marketing.anything.title": "\u0412\u043E\u043E\u0431\u0449\u0435 \u0434\u043B\u044F \u0432\u0441\u0435\u0433\u043E.",
44920  "home.marketing.anything.body": "\u0411\u043E\u0442\u0430\u0442\u044C \u0432\u043C\u0435\u0441\u0442\u0435, \u0438\u0433\u0440\u0430\u0442\u044C, \u0440\u0430\u0431\u043E\u0447\u0438\u0435 \u0441\u0442\u0435\u043D\u0434\u0430\u043F\u044B, \u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0432\u0438\u0434\u043E\u0441\u044B \u2014 \u0438\u043B\u0438 \u043F\u0440\u043E\u0441\u0442\u043E \u0447\u0438\u043B\u043B\u0438\u0442\u044C.",
44921  "home.marketing.use_case.study_group": "\u{1F4DA} \u0441\u0442\u0430\u0434\u0438-\u0433\u0440\u0443\u043F\u043F\u0430",
44922  "home.marketing.use_case.game_night": "\u{1F3AE} \u043F\u043E\u0438\u0433\u0440\u0430\u0442\u044C",
44923  "home.marketing.use_case.standup": "\u{1F4BC} \u0441\u0442\u0435\u043D\u0434\u0430\u043F",
44924  "home.marketing.use_case.watch_party": "\u{1F37F} \u0432\u043E\u0442\u0447-\u043F\u0430\u0442\u0438",
44925  "home.marketing.use_case.catch_up": "\u2615 \u043F\u043E\u0431\u043E\u043B\u0442\u0430\u0442\u044C",
44926  "home.marketing.use_case.jam_session": "\u{1F3B8} \u0434\u0436\u0435\u043C-\u0441\u0435\u0439\u0448\u043D",
44927  "home.marketing.use_case.book_club": "\u{1F4D6}
44927 \u043A\u043D\u0438\u0436\u043D\u044B\u0439 \u043A\u043B\u0443\u0431",
44928  "home.marketing.use_case.coworking": "\u{1F4BB} \u043A\u043E\u0432\u043E\u0440\u043A\u0438\u043D\u0433",
44929  "ended.heading": "\u0437\u0432\u043E\u043D\u043E\u043A \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D",
44930  "ended.left": "\u0442\u044B \u0432\u044B\u0448\u0435\u043B \u0438\u0437 \u043A\u043E\u043C\u043D\u0430\u0442\u044B.",
44931  "ended.room_ended": "{title} \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043B\u0441\u044F \u0434\u043B\u044F \u0442\u0435\u0431\u044F.",
44932  "ended.rejoin": "\u043F\u0435\u0440\u0435\u0437\u0430\u0439\u0442\u0438",
44933  "ended.rejoining": "\u043F\u0435\u0440\u0435\u0437\u0430\u0445\u043E\u0434\u0438\u043C...",
44934  "ended.home": "\u043D\u0430 \u0433\u043B\u0430\u0432\u043D\u0443\u044E",
44935  "call.connecting": "\u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0430\u0435\u043C\u0441\u044F",
44936  "call.waiting": "\u0436\u0434\u0435\u043C \u043E\u0441\u0442\u0430\u043B\u044C\u043D\u044B\u0445",
44937  "call.invite_code": "\u043A\u043E\u0434 \u0438\u043D\u0432\u0430\u0439\u0442\u0430",
44938  "call.audio_on": "\u0437\u0432\u0443\u043A \u0432\u043A\u043B",
44939  "call.muted": "\u0432 \u043C\u044C\u044E\u0442\u0435",
44940  "call.listening": "\u0421\u043B\u0443\u0448\u0430\u0435\u0442",
44941  "call.audio_muted": "\u0417\u0432\u0443\u043A \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D",
44942  "call.speaking": "\u0433\u043E\u0432\u043E\u0440\u0438\u0442",
44943  "call.you": "\u0442\u044B",
44944  "call.you_label": "\u0422\u044B",
44945  "call.you_suffix": "(\u0442\u044B)",
44946  "call.chat_placeholder": "\u043D\u0430\u043F\u0438\u0441\u0430\u0442\u044C...",
44947  "call.guest": "\u0433\u043E\u0441\u0442\u044C",
44948  "call.room_fallback": "\u043A\u043E\u043C\u043D\u0430\u0442\u0430",
44949  "call.focus_view": "\u0424\u043E\u043A\u0443\u0441",
44950  "call.grid_view": "\u0421\u0435\u0442\u043A\u0430",
44951  "call.swap_main_video": "\u0421\u043C\u0435\u043D\u0438\u0442\u044C \u0433\u043B\u0430\u0432\u043D\u043E\u0435 \u0432\u0438\u0434\u0435\u043E",
44952  "call.open_chat": "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0447\u0430\u0442",
44953  "call.close_chat": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0447\u0430\u0442",
44954  "call.leave_room": "\u0412\u044B\u0439\u0442\u0438 \u0438\u0437 \u043A\u043E\u043C\u043D\u0430\u0442\u044B",
44955  "call.confirm_leave": "\u0412\u044B\u0439\u0442\u0438?",
44956  "call.mic_on": "\u041C\u0438\u043A\u0440\u043E \u0432\u043A\u043B",
44957  "call.muted_label": "\u0412 \u043C\u044C\u044E\u0442\u0435",
44958  "call.camera_off": "\u041A\u0430\u043C\u0435\u0440\u0430 \u0432\u044B\u043A\u043B",
44959  "call.connect_failed": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C\u0441\u044F \u2014 \u0447\u0435\u043A\u043D\u0438 \u0438\u043D\u0435\u0442 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0435\u0449\u0435 \u0440\u0430\u0437.",
44960  "call.camera_access_failed": "\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043A \u043A\u0430\u043C\u0435\u0440\u0435. \u0427\u0435\u043A\u043D\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0441\u043D\u043E\u0432\u0430.",
44961  "call.recording_failed": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043D\u0430\u0447\u0430\u0442\u044C \u0437\u0430\u043F\u0438\u0441\u044C. \u0417\u0432\u043E\u043D\u043E\u043A \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u0441\u044F \u0431\u0435\u0437 \u043D\u0435\u0435.",
44962  "call.initialize_failed": "\u0427\u0442\u043E-\u0442\u043E \u043F\u043E\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A. \u041E\u0431\u043D\u043E\u0432\u0438 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0435\u0449\u0435 \u0440\u0430\u0437.",
44963  "call.participants": "\u0423\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u0438",
44964  "call.open_participants": "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u043E\u0432",
44965  "call.close_participants": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0443\u0447\u0430\u0441\u0442\u043D\u0438\u043A\u043E\u0432",
44966  "call.lock_room": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u043A\u043E\u043C\u043D\u0430\u0442\u0443",
44967  "call.unlock_room": "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043A\u043E\u043C\u043D\u0430\u0442\u0443",
44968  "call.locked": "\u0437\u0430\u043A\u0440\u044B\u0442\u043E",
44969  "call.unlocked": "\u043E\u0442\u043A\u0440\u044B\u0442\u043E",
44970  "call.kick_member": "\u041A\u0438\u043A\u043D\u0443\u0442\u044C \u0438\u0437 \u043A\u043E\u043C\u043D\u0430\u0442\u044B",
44971  "call.mute_member": "\u0417\u0430\u043C\u044C\u044E\u0442\u0438\u0442\u044C",
44972  "call.unmute_member": "\u0420\u0430\u0437\u043C\u044C\u044E\u0442\u0438\u0442\u044C",
44973  "call.muted_by_host": "\u0417\u0430\u043C\u044C\u044E\u0447\u0435\u043D \u0445\u043E\u0441\u0442\u043E\u043C",
44974  "call.waiting_to_join": "\u0416\u0434\u0443\u0442 \u0432\u0445\u043E\u0434\u0430",
44975  "call.approve": "\u0412\u043F\u0443\u0441\u0442\u0438\u0442\u044C",
44976  "call.deny": "\u041E\u0442\u043A\u043B\u043E\u043D\u0438\u0442\u044C",
44977  "call.profile_actions": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0441 \u043F\u0440\u043E\u0444\u0438\u043B\u0435\u043C",
44978  "call.profile_in_room": "\u0412 \u043A\u043E\u043C\u043D\u0430\u0442\u0435",
44979  "call.profile_role_host": "\u0425\u043E\u0441\u0442",
44980  "call.profile_role_you": "\u0422\u044B",
44981  "call.profile_action_mute": "\u0417\u0430\u043C\u044C\u044E\u0442\u0438\u0442\u044C \u0437\u0432\u0443\u043A",
44982  "call.profile_action_mute_meta": "\u0422\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u0442\u0435\u0431\u044F \u2014 \u043E\u043D\u0438 \u043D\u0435 \u0443\u0437\u043D\u0430\u044E\u0442",
44983  "call.profile_action_dm": "\u041B\u0438\u0447\u043A\u0430",
44984  "call.profile_action_dm_meta": "\u041D\u0430\u0447\u0430\u0442\u044C \u043F\u0440\u0438\u0432\u0430\u0442\u043D\u044B\u0439 \u0447\u0430\u0442",
44985  "call.profile_action_view": "\u0421\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u043F\u0440\u043E\u0444\u0438\u043B\u044C",
44986  "call.profile_action_view_meta": "\u0411\u0438\u043E, \u044F\u0437\u044B\u043A\u0438, \u043F\u0440\u043E\u0448\u043B\u044B\u0435 \u0441\u0435\u0441\u0441\u0438\u0438",
44987  "call.profile_action_report": "\u041F\u043E\u0436\u0430\u043B\u043E\u0432\u0430\u0442\u044C\u0441\u044F",
44988  "call.profile_action_report_meta": "\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043C\u043E\u0434\u0435\u0440\u0430\u0442\u043E\u0440\u0430\u043C",
44989  "call.profile_sheet_close": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F",
44990  "call.profile_open_actions": "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F",
44991  "call.dm_title": "\u041B\u0438\u0447\u043D\u044B\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F",
44992  "call.dm_back": "\u041D\u0430\u0437\u0430\u0434 \u043A \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F\u043C",
44993  "call.dm_close": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u043B\u0438\u0447\u043A\u0443",
44994  "call.dm_status_online": "\u0412 \u0441\u0435\u0442\u0438",
44995  "call.dm_in_room_with": "\u0412 \u044D\u0442\u043E\u0439 \u043A\u043E\u043C\u043D\u0430\u0442\u0435",
44996  "call.dm_private_label": "\u041F\u0440\u0438\u0432\u0430\u0442\u043D\u044B\u0439 \u0447\u0430\u0442",
44997  "call.dm_private_meta": "\u042D\u0442\u0438 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u0432\u0438\u0434\u0438\u0442\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u0432\u044B \u0432\u0434\u0432\u043E\u0435\u043C",
44998  "call.dm_input_placeholder": "\u041D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432 \u043B\u0438\u0447\u043A\u0443\u2026",
44999  "call.dm_send": "\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C",
45000  "call.dm_just_now": "\u0441\u0435\u0439\u0447\u0430\u0441",
45001  "call.dm_seen_just_now": "\u041F\u0440\u043E\u0447\u0438\u0442\u0430\u043D\u043E \u0442\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u043E",
45002  "call.dm_typing": "{name} \u043F\u0435\u0447\u0430\u0442\u0430\u0435\u0442\u2026",
45003  "call.dm_minimize": "\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C",
45004  "call.dm_active_indicator": "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0434\u0438\u0430\u043B\u043E\u0433",
45005  "call.dm_unread_messages": "{count} \u043D\u0435\u043F\u0440\u043E\u0447\u0438\u0442\u0430\u043D\u043D\u044B\u0445",
45006  "call.dm_toast_tap_to_open": "\u041D\u0430\u0436\u043C\u0438, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043A\u0440\u044B\u0442\u044C",
45007  "call.dm_reopen_aria": "\u0421\u043D\u043E\u0432\u0430 \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u0434\u0438\u0430\u043B\u043E\u0433 \u0441 {name}",
45008  "home.join_denied": "\u0425\u043E\u0441\u0442 \u0442\u0435\u0431\u044F \u043D\u0435 \u0432\u043F\u0443\u0441\u0442\u0438\u043B.",
45009  "home.error.room_not_found": "\u0422\u0430\u043A\u043E\u0433\u043E \u043A\u043E\u0434\u0430 \u043A\u043E\u043C\u043D\u0430\u0442\u044B \u043D\u0435\u0442.",
45010  "home.error.profile_required": "\u0417\u0430\u043F\u043E\u043B\u043D\u0438 \u043F\u0440\u043E\u0444\u0438\u043B\u044C, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C.",
45011  "home.cta.set_up_profile": "\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u043F\u0440\u043E\u0444\u0438\u043B\u044C",
45012  "home.profile_trigger_new": "\u041D\u0430\u0436\u043C\u0438, \u0447\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u043D\u0444\u0443",
45013  "home.profile_trigger_new_aria": "\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u043F\u0440\u043E\u0444\u0438\u043B\u044C",
45014  "home.profile_trigger_edit_aria": "\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0440\u043E\u0444\u0438\u043B\u044C",
45015  "profile.eyebrow_new": "\u0441\u043A\u0430\u0436\u0438 \u043F\u0440\u0438\u0432\u0435\u0442",
45016  "profile.eyebrow_edit": "\u0442\u0432\u043E\u0439 \u043F\u0440\u043E\u0444\u0438\u043B\u044C",
45017  "profile.title_new": "\u0421\u0434\u0435\u043B\u0430\u0439 \u043F\u043E-\u0441\u0432\u043E\u0435\u043C\u0443.",
45018  "profile.title_edit": "\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0440\u043E\u0444\u0438\u043B\u044C",
45019  "profile.subtitle": "\u041F\u0430\u0440\u0430 \u0434\u0435\u0442\u0430\u043B\u0435\u0439, \u0447\u0442\u043E\u0431\u044B \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u043D\u0430\u043B\u0438, \u0441 \u043A\u0435\u043C \u043E\u0431\u0449\u0430\u044E\u0442\u0441\u044F.",
45020  "profile.add_photo": "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0444\u043E\u0442\u043E",
45021  "profile.add_photo_soon": "\u0444\u043E\u0442\u043E \u0441\u043A\u043E\u0440\u043E \u0431\u0443\u0434\u0443\u0442",
45022  "profile.photo_empty": "\u043D\u0430\u0436\u043C\u0438, \u0447\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0444\u043E\u0442\u043E",
45023  "profile.photo_ready": "\u0444\u043E\u0442\u043E \u0433\u043E\u0442\u043E\u0432\u043E",
45024  "profile.photo_save_first": "\u0441\u043D\u0430\u0447\u0430\u043B\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0438 \u043F\u0440\u043E\u0444\u0438\u043B\u044C, \u043F\u043E\u0442\u043E\u043C \u0433\u0440\u0443\u0437\u0438 \u0444\u043E\u0442\u043E",
45025  "profile.photo_crop_caption": "\u043A\u0430\u0434\u0440\u0438\u0440\u0443\u0439 \u0444\u043E\u0442\u043E",
45026  "profile.photo_auto_caption": "\u0434\u0432\u0438\u0433\u0430\u0439 \u0438 \u0437\u0443\u043C\u044C, \u0430 \u043C\u044B \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u043C \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u043E\u043C",
45027  "profile.photo_upload": "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0444\u043E\u0442\u043E",
45028  "profile.photo_replace": "\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u0444\u043E\u0442\u043E",
45029  "profile.photo_remove": "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0444\u043E\u0442\u043E",
45030  "profile.photo_cancel": "\u041E\u0442\u043C\u0435\u043D\u0430",
45031  "profile.photo_save": "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0444\u043E\u0442\u043E",
45032  "profile.photo_uploading": "\u0413\u0440\u0443\u0437\u0438\u043C \u0444\u043E\u0442\u043E\u2026",
45033  "profile.photo_removing": "\u0423\u0434\u0430\u043B\u044F\u0435\u043C \u0444\u043E\u0442\u043E\u2026",
45034  "profile.photo_choose_another": "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0434\u0440\u0443\u0433\u043E\u0435",
45035  "profile.photo_drag_hint": "\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438 \u0444\u043E\u0442\u043E \u0432 \u043A\u0440\u0443\u0433. \u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0442\u0441\u044F \u0441\u0430\u043C\u0438.",
45036  "profile.photo_zoom": "\u0417\u0443\u043C",
45037  "profile.photo_horizontal": "\u041F\u043E \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u0438",
45038  "profile.photo_vertical": "\u041F\u043E \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u0438",
45039  "profile.name_label": "\u0418\u043C\u044F",
45040  "profile.name_placeholder": "\u041A\u0430\u043A \u0442\u0435\u0431\u044F \u043D\u0430\u0437\u044B\u0432\u0430\u0442\u044C?",
45041  "profile.gender_label": "\u042F",
45042  "profile.gender.woman": "\u0414\u0435\u0432\u0443\u0448\u043A\u0430",
45043  "profile.gender.man": "\u041F\u0430\u0440\u0435\u043D\u044C",
45044  "profile.gender.unspecified": "\u041D\u0435 \u0443\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C",
45045  "profile.bio_label": "\u041E \u0441\u0435\u0431\u0435",
45046  "profile.bio_optional": "\u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E",
45047  "profile.bio_placeholder": "\u042F\u0437\u044B\u043A\u0438, \u0438\u043D\u0442\u0435\u0440\u0435\u0441\u044B, \u0434\u0430 \u0447\u0442\u043E \u0443\u0433\u043E\u0434\u043D\u043E\u2026",
45048  "profile.cta_new": "\u041F\u043E\u0433\u043D\u0430\u043B\u0438",
45049  "profile.cta_edit": "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C",
45050  "profile.saving": "\u0421\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u043C\u2026",
45051  "profile.close": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C",
45052  "profile.error.save_failed": "\u041D\u0435 \u0432\u044B\u0448\u043B\u043E \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u043F\u0440\u043E\u0444\u0438\u043B\u044C. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0435\u0449\u0435 \u0440\u0430\u0437.",
45053  "profile.error.avatar_invalid_type": "\u0412\u044B\u0431\u0435\u0440\u0438 \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0443 \u0432 PNG, JPEG, GIF \u0438\u043B\u0438 WebP.",
45054  "profile.error.avatar_too_large": "\u0412\u044B\u0431\u0435\u0440\u0438 \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0443 \u0434\u043E 5 \u041C\u0411.",
45055  "profile.error.avatar_too_small": "\u0412\u044B\u0431\u0435\u0440\u0438 \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0443 \u0445\u043E\u0442\u044F \u0431\u044B 96x96 \u043F\u0438\u043A\u0441\u0435\u043B\u0435\u0439.",
45056  "profile.error.avatar_load_failed": "\u041D\u0435 \u0441\u043C\u043E\u0433\u043B\u0438 \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u0442\u044C \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0443. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0434\u0440\u0443\u0433\u043E\u0439 \u0444\u0430\u0439\u043B.",
45057  "profile.error.avatar_failed": "\u041D\u0435 \u0432\u044B\u0448\u043B\u043E \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0444\u043E\u0442\u043E. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0435\u0449\u0435 \u0440\u0430\u0437.",
45058  "profile.error.avatar_remove_failed": "\u041D\u0435 \u0432\u044B\u0448\u043B\u043E \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u0444\u043E\u0442\u043E. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0435\u0449\u0435 \u0440\u0430\u0437.",
45059  "effects.title": "\u042D\u0444\u0444\u0435\u043A\u0442\u044B",
45060  "effects.soft": "\u0421\u043E\u0444\u0442-\u0444\u043E\u043A\u0443\u0441",
45061  "effects.vignette": "\u0412\u0438\u043D\u044C\u0435\u0442\u043A\u0430",
45062  "effects.face": "\u0411\u043B\u044E\u0440 \u043B\u0438\u0446\u0430",
45063  "effects.face_preview_only": "\u0411\u043B\u044E\u0440 \u043B\u0438\u0446\u0430 (\u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0435\u0432\u044C\u044E)",
45064  "effects.face_viewer_side": "\u0411\u043B\u044E\u0440 \u043B\u0438\u0446\u0430 (\u0443 \u0437\u0440\u0438\u0442\u0435\u043B\u0435\u0439)",
45065  "effects.face_strength": "\u0421\u0438\u043B\u0430 \u0431\u043B\u044E\u0440\u0430",
45066  "effects.grade.off": "\u0412\u042B\u041A\u041B",
45067  "effects.grade.pop": "\u042F\u0420\u041A\u041E",
45068  "effects.grade.warm": "\u0422\u0415\u041F\u041B\u041E",
45069  "effects.grade.cool": "\u0425\u041E\u041B\u041E\u0414",
45070  "effects.grade.bw": "\u0427\u0411",
45071  "camera.off": "\u043A\u0430\u043C\u0435\u0440\u0430 \u0432\u044B\u043A\u043B",
45072  "camera.check": "\u0447\u0435\u043A\u043D\u0438 \u043A\u0430\u043C\u0435\u0440\u0443",
45073  "camera.retry": "\u043F\u043E\u043F\u0440\u043E\u0431\u043E\u0432\u0430\u0442\u044C \u0435\u0449\u0435 \u0440\u0430\u0437",
45074  "camera.ready": "\u043A\u0430\u043C\u0435\u0440\u0430 \u0433\u043E\u0442\u043E\u0432\u0430",
45075  "camera.idle.title": "\u0412\u043A\u043B\u044E\u0447\u0438 \u043A\u0430\u043C\u0435\u0440\u0443",
45076  "camera.idle.hint": "\u0417\u0430\u043F\u0440\u043E\u0441\u0438\u043C \u0434\u043E\u0441\u0442\u0443\u043F \u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u043A\u043E\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0448\u044C \u0433\u043E\u0442\u043E\u0432.",
45077  "camera.idle.button": "\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043A\u0430\u043C\u0435\u0440\u0443",
45078  "camera.status.idle": "\u0416\u0434\u0435\u043C \u0442\u0435\u0431\u044F",
45079  "camera.status.off": "\u041A\u0430\u043C\u0435\u0440\u0430 \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D\u0430",
45080  "camera.status.loading": "\u041F\u0440\u043E\u0441\u0438\u043C \u0434\u043E\u0441\u0442\u0443\u043F \u043A \u043A\u0430\u043C\u0435\u0440\u0435...",
45081  "camera.status.denied": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u0434\u043E\u0441\u0442\u0443\u043F \u043A \u043A\u0430\u043C\u0435\u0440\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0441\u043D\u043E\u0432\u0430.",
45082  "camera.status.error": "\u041F\u0440\u0435\u0432\u044C\u044E \u043A\u0430\u043C\u0435\u0440\u044B \u043E\u0442\u0432\u0430\u043B\u0438\u043B\u043E\u0441\u044C. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0435\u0449\u0435 \u0440\u0430\u0437.",
45083  "camera.status.unsupported": "\u042D\u0442\u043E\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F \u043A \u043A\u0430\u043C\u0435\u0440\u0435.",
45084  "camera.status.insecure": "\u0414\u043B\u044F \u043A\u0430\u043C\u0435\u0440\u044B \u043D\u0443\u0436\u0435\u043D HTTPS \u0438\u043B\u0438 localhost.",
45085  "camera.status.attach_failed": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u043F\u0440\u0435\u0432\u044C\u044E \u043A\u0430\u043C\u0435\u0440\u044B. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0435\u0449\u0435 \u0440\u0430\u0437.",
45086  "camera.guest_name_placeholder": "\u0418\u043C\u044F \u0433\u043E\u0441\u0442\u044F",
45087  "camera.flip": "\u0421\u043C\u0435\u043D\u0438\u0442\u044C \u043A\u0430\u043C\u0435\u0440\u0443",
45088  "camera.save_name": "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C",
45089  "camera.edit_name": "\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0438\u043C\u044F",
45090  "mic.on": "\u0412\u044B\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043C\u0438\u043A\u0440\u043E",
45091  "mic.off": "\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043C\u0438\u043A\u0440\u043E",
45092  "video.on": "\u0412\u044B\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043A\u0430\u043C\u0435\u0440\u0443",
45093  "video.off": "\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043A\u0430\u043C\u0435\u0440\u0443",
45094  "chat.title": "\u0447\u0430\u0442",
45095  "chat.close": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0447\u0430\u0442",
45096  "chat.loading": "\u0433\u0440\u0443\u0437\u0438\u043C...",
45097  "chat.load_earlier": "\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0441\u0442\u0430\u0440\u044B\u0435",
45098  "chat.empty": "\u043F\u043E\u043A\u0430 \u043D\u0435\u0442 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439",
45099  "chat.send_error": "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043D\u0435 \u0443\u0448\u043B\u043E \u2014 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0435\u0449\u0435 \u0440\u0430\u0437.",
45100  "chat.input_placeholder": "\u043D\u0430\u043F\u0438\u0448\u0438 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435...",
45101  "room.host": "\u0425\u043E\u0441\u0442",
45102  "app.room_default_title": "\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043A\u043E\u043C\u043D\u0430\u0442\u0443",
45103  "app.chat_connection_rejected": "\u0427\u0430\u0442 \u043D\u0435 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u043B\u0441\u044F \u2014 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C.",
45104  "app.copy_failed": "\u041D\u0435 \u0432\u044B\u0448\u043B\u043E \u0441\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0443. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0432\u044B\u0434\u0435\u043B\u0438\u0442\u044C \u0438 \u0441\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u0440\u0443\u0447\u043D\u0443\u044E.",
45105  "app.chat_not_connected": "\u0427\u0430\u0442 \u0435\u0449\u0435 \u043D\u0435 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u043B\u0441\u044F. \u041F\u043E\u0434\u043E\u0436\u0434\u0438 \u0441\u0435\u043A\u0443\u043D\u0434\u0443 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0441\u043D\u043E\u0432\u0430.",
45106  "footer.terms": "\u0423\u0441\u043B\u043E\u0432\u0438\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F",
45107  "footer.copyright": "\xA9 2026 Yano.AI"
45108};
45109
45110// app/javascript/yano/locales/th.js
45111var th_default = {
45112  "home.heading.default": "\u0E21\u0E32\u0E04\u0E38\u0E22\u0E01\u0E31\u0E19",
45113  "home.heading.loading": "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E40\u0E1B\u0E34\u0E14\u0E2B\u0E49\u0E2D\u0E07...",
45114  "home.heading.join": "\u0E1E\u0E23\u0E49\u0E2D\u0E21\u0E40\u0E02\u0E49\u0E32\u0E2B\u0E49\u0E2D\u0E07\u0E22\u0E31\u0E07?",
45115  "home.heading.joined": "\u0E40\u0E02\u0E49\u0E32\u0E21\u0E32\u0E41\u0E25\u0E49\u0E27",
45116  "home.heading.pending": "\u0E23\u0E2D\u0E42\u0E2E\u0E2A\u0E15\u0E4C\u0E41\u0E1B\u0E4A\u0E1A",
45117  "home.body.default": "\u0E2A\u0E23\u0E49\u0E32\u0E07\u0E2B\u0E49\u0E2D\u0E07 \u0E41\u0E1B\u0E30\u0E25\u0E34\u0E07\u0E01\u0E4C \u0E41\u0E25\u0E49\u0E27\u0E0A\u0E34\u0E25\u0E40\u0E25\u0E22",
45118  "home.body.loading": "\u0E41\u0E1B\u0E4A\u0E1A\u0E19\u0E36\u0E07\u0E19\u0E30 \u0E01\u0E33\u0E25\u0E31\u0E07\u0E40\u0E15\u0E23\u0E35\u0E22\u0E21\u0E2B\u0E49\u0E2D\u0E07\u0E43\u0E2B\u0E49",
45119  "home.body.join": "\u0E40\u0E0A\u0E47\u0E04\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E01\u0E31\u0E1A\u0E44\u0E21\u0E04\u0E4C\u0E43\u0E2B\u0E49\u0E0A\u0E31\u0E27\u0E23\u0E4C \u0E41\u0E25\u0E49\u0E27\u0E01\u0E14\u0E40\u0E02\u0E49\u0E32\u0E40\u0E25\u0E22",
45120  "home.body.joined": "\u0E2B\u0E49\u0E2D\u0E07\u0E1E\u0E23\u0E49\u0E2D\u0E21\u0E41\u0E25\u0E49\u0E27 \u0E41\u0E0A\u0E23\u0E4C\u0E25\u0E34\u0E07\u0E01\u0E4C\u0E2B\u0E23\u0E37\u0E2D\u0E40\u0E23\u0E34\u0E48\u0E21\u0E04\u0E38\u0E22\u0E44\u0E14\u0E49\u0E40\u0E25\u0E22",
45121  "home.body.joined_in_room": "\u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E2B\u0E49\u0E2D\u0E07\u0E41\u0E25\u0E49\u0E27 \u2014 \u0E25\u0E38\u0E22\u0E40\u0E25\u0E22\u0E2B\u0E23\u0E37\u0E2D\u0E08\u0E30\u0E41\u0E0A\u0E23\u0E4C\u0E25\u0E34\u0E07\u0E01\u0E4C\u0E01\u0E48\u0E2D\u0E19\u0E01\u0E47\u0E44\u0E14\u0E49",
45122  "home.body.pending": "\u0E2B\u0E49\u0E2D\u0E07\u0E25\u0E47\u0E2D\u0E04\u0E2D\u0E22\u0E39\u0E48 \u0E23\u0E2D\u0E42\u0E2E\u0E2A\u0E15\u0E4C\u0E01\u0E14\u0E23\u0E31\u0E1A\u0E19\u0E30",
45123  "home.cta.create": "\u0E2A\u0E23\u0E49\u0E32\u0E07\u0E2B\u0E49\u0E2D\u0E07",
45124  "home.cta.join": "\u0E40\u0E02\u0E49\u0E32\u0E2B\u0E49\u0E2D\u0E07",
45125  "home.cta.enter": "\u0E40\u0E02\u0E49\u0E32\u0E2B\u0E49\u0E2D\u0E07",
45126  "home.cta.creating": "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E2A\u0E23\u0E49\u0E32\u0E07...",
45127  "home.cta.joining": "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E40\u0E02\u0E49\u0E32...",
45128  "home.cta.opening": "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E40\u0E1B\u0E34\u0E14...",
45129  "home.cta.pending": "\u0E23\u0E2D\u0E42\u0E2E\u0E2A\u0E15\u0E4C\u0E23\u0E31\u0E1A...",
45130  "home.copy_link": "\u0E01\u0E4A\u0E2D\u0E1B\u0E25\u0E34\u0E07\u0E01\u0E4C",
45131  "home.copied": "\u0E01\u0E4A\u0E2D\u0E1B\u0E41\u0E25\u0E49\u0E27!",
45132  "home.leave": "\u0E2D\u0E2D\u0E01\u0E2B\u0E49\u0E2D\u0E07",
45133  "home.back": "\u0E01\u0E25\u0E31\u0E1A",
45134  "home.no_participants": "\u0E22\u0E31\u0E07\u0E44\u0E21\u0E48\u0E21\u0E35\u0E43\u0E04\u0E23\u0E21\u0E32",
45135  "home.join_by_code": "\u0E43\u0E2A\u0E48\u0E42\u0E04\u0E49\u0E14\u0E40\u0E02\u0E49\u0E32\u0E2B\u0E49\u0E2D\u0E07",
45136  "home.code_placeholder": "\u0E43\u0E2A\u0E48\u0E42\u0E04\u0E49\u0E14",
45137  "home.name_placeholder": "\u0E0A\u0E37\u0E48\u0E2D\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13",
45138  "home.people_one": "\u0E04\u0E19",
45139  "home.people_other": "\u0E04\u0E19",
45140  "home.marketing.invite.title": "\u0E2A\u0E23\u0E49\u0E32\u0E07\u0E2B\u0E49\u0E2D\u0E07\n\u0E41\u0E25\u0E49\u0E27\u0E41\u0E0A\u0E23\u0E4C\u0E25\u0E34\u0E07\u0E01\u0E4C\u0E40\u0E25\u0E22",
45141  "home.marketing.invite.body": "\u0E01\u0E14\u0E1B\u0E38\u0E48\u0E21\u0E40\u0E14\u0E35\u0E22\u0E27\u0E40\u0E23\u0E34\u0E48\u0E21\u0E44\u0E14\u0E49\u0E40\u0E25\u0E22 \u0E41\u0E0A\u0E23\u0E4C\u0E25\u0E34\u0E07\u0E01\u0E4C\u0E43\u0E2B\u0E49\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E19\u0E40\u0E02\u0E49\u0E32\u0E44\u0E14\u0E49\u0E17\u0E31\u0E19\u0E17\u0E35 \u0E44\u0E21\u0E48\u0E15\u0E49\u0E2D\u0E07\u0E42\u0E2B\u0E25\u0E14\u0E41\u0E2D\u0E1B \u0E44\u0E21\u0E48\u0E15\u0E49\u0E2D\u0E07\u0E2A\u0E21\u0E31\u0E04\u0E23",
45142  "home.marketing.invite.preview_url": "yano.ai/ROOM",
45143  "home.marketing.look.title": "\u0E1B\u0E23\u0E31\u0E1A\u0E25\u0E38\u0E04\n\u0E44\u0E14\u0E49\u0E15\u0E32\u0E21\u0E43\u0E08",
45144  "home.marketing.look.body": "\u0E41\u0E15\u0E48\u0E07\u0E2A\u0E35 \u0E17\u0E33\u0E2B\u0E19\u0E49\u0E32\u0E40\u0E19\u0E35\u0E22\u0E19 \u0E43\u0E2A\u0E48\u0E02\u0E2D\u0E1A\u0E14\u0E33 \u2014 \u0E2B\u0E23\u0E37\u0E2D\u0E08\u0E30\u0E40\u0E1A\u0E25\u0E2D\u0E2B\u0E19\u0E49\u0E32\u0E44\u0E1B\u0E40\u0E25\u0E22\u0E01\u0E47\u0E44\u0E14\u0E49 \u0E01\u0E25\u0E49\u0E2D\u0E07\u0E04\u0E38\u0E13 \u0E2A\u0E44\u0E15\u0E25\u0E4C\u0E04\u0E38\u0E13",
45145  "home.marketing.host.title": "\u0E1E\u0E37\u0E49\u0E19\u0E17\u0E35\u0E48\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\n\u0E01\u0E0E\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13",
45146  "home.marketing.host.body": "\u0E25\u0E47\u0E2D\u0E04\u0E2B\u0E49\u0E2D\u0E07 \u0E1B\u0E34\u0E14\u0E44\u0E21\u0E04\u0E4C \u0E2B\u0E23\u0E37\u0E2D\u0E40\u0E15\u0E30\u0E04\u0E19\u0E2D\u0E2D\u0E01 \u0E42\u0E2E\u0E2A\u0E15\u0E4C\u0E04\u0E38\u0E21\u0E44\u0E14\u0E49\u0E2B\u0E21\u0E14",
45147  "home.marketing.host.locked": "\u0E25\u0E47\u0E2D\u0E04\u0E2B\u0E49\u0E2D\u0E07\u0E41\u0E25\u0E49\u0E27",
45148  "home.marketing.host.waiting_to_join": "\u0E23\u0E2D\u0E40\u0E02\u0E49\u0E32\u0E2B\u0E49\u0E2D\u0E07",
45149  "home.marketing.host.wants_to_join": "\u0E02\u0E2D\u0E40\u0E02\u0E49\u0E32\u0E2B\u0E49\u0E2D\u0E07",
45150  "home.marketing.anything.title": "\u0E43\u0E0A\u0E49\u0E17\u0E33\u0E2D\u0E30\u0E44\u0E23\u0E01\u0E47\u0E44\u0E14\u0E49\u0E08\u0E23\u0E34\u0E07\u0E46",
45151  "home.marketing.anything.body": "\u0E15\u0E34\u0E27\u0E2B\u0E19\u0E31\u0E07\u0E2A\u0E37\u0E2D \u0E40\u0E25\u0E48\u0E19\u0E40\u0E01\u0E21 \u0E04\u0E38\u0E22\u0E07\u0E32\u0E19 \u0E14\u0E39\u0E2B\u0E19\u0E31\u0E07\u0E14\u0E49\u0E27\u0E22\u0E01\u0E31\u0E19 \u2014 \u0E2B\u0E23\u0E37\u0E2D\u0E41\u0E04\u0E48\u0E19\u0E31\u0E48\u0E07\u0E0A\u0E34\u0E25\u0E40\u0E09\u0E22\u0E4
451516 \u0E01\u0E47\u0E44\u0E14\u0E49",
45152  "home.marketing.use_case.study_group": "\u{1F4DA} \u0E15\u0E34\u0E27\u0E2B\u0E19\u0E31\u0E07\u0E2A\u0E37\u0E2D",
45153  "home.marketing.use_case.game_night": "\u{1F3AE} \u0E40\u0E25\u0E48\u0E19\u0E40\u0E01\u0E21",
45154  "home.marketing.use_case.standup": "\u{1F4BC} \u0E04\u0E38\u0E22\u0E07\u0E32\u0E19",
45155  "home.marketing.use_case.watch_party": "\u{1F37F} \u0E14\u0E39\u0E2B\u0E19\u0E31\u0E07",
45156  "home.marketing.use_case.catch_up": "\u2615 \u0E2D\u0E31\u0E1B\u0E40\u0E14\u0E15\u0E0A\u0E35\u0E27\u0E34\u0E15",
45157  "home.marketing.use_case.jam_session": "\u{1F3B8} \u0E40\u0E25\u0E48\u0E19\u0E14\u0E19\u0E15\u0E23\u0E35",
45158  "home.marketing.use_case.book_club": "\u{1F4D6} \u0E04\u0E38\u0E22\u0E40\u0E23\u0E37\u0E48\u0E2D\u0E07\u0E2B\u0E19\u0E31\u0E07\u0E2A\u0E37\u0E2D",
45159  "home.marketing.use_case.coworking": "\u{1F4BB} \u0E19\u0E31\u0E48\u0E07\u0E17\u0E33\u0E07\u0E32\u0E19\u0E14\u0E49\u0E27\u0E22\u0E01\u0E31\u0E19",
45160  "ended.heading": "\u0E08\u0E1A\u0E2A\u0E32\u0E22\u0E41\u0E25\u0E49\u0E27",
45161  "ended.left": "\u0E04\u0E38\u0E13\u0E2D\u0E2D\u0E01\u0E08\u0E32\u0E01\u0E2B\u0E49\u0E2D\u0E07\u0E41\u0E25\u0E49\u0E27",
45162  "ended.room_ended": "{title} \u0E08\u0E1A\u0E25\u0E07\u0E41\u0E25\u0E49\u0E27",
45163  "ended.rejoin": "\u0E40\u0E02\u0E49\u0E32\u0E43\u0E2B\u0E21\u0E48",
45164  "ended.rejoining": "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E40\u0E02\u0E49\u0E32\u0E43\u0E2B\u0E21\u0E48...",
45165  "ended.home": "\u0E01\u0E25\u0E31\u0E1A\u0E2B\u0E19\u0E49\u0E32\u0E41\u0E23\u0E01",
45166  "call.connecting": "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E40\u0E0A\u0E37\u0E48\u0E2D\u0E21\u0E15\u0E48\u0E2D",
45167  "call.waiting": "\u0E23\u0E2D\u0E04\u0E19\u0E2D\u0E37\u0E48\u0E19\u0E41\u0E1B\u0E4A\u0E1A",
45168  "call.invite_code": "\u0E42\u0E04\u0E49\u0E14\u0E40\u0E0A\u0E34\u0E0D",
45169  "call.audio_on": "\u0E40\u0E1B\u0E34\u0E14\u0E40\u0E2A\u0E35\u0E22\u0E07",
45170  "call.muted": "\u0E1B\u0E34\u0E14\u0E44\u0E21\u0E04\u0E4C\u0E2D\u0E22\u0E39\u0E48",
45171  "call.listening": "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E1F\u0E31\u0E07",
45172  "call.audio_muted": "\u0E1B\u0E34\u0E14\u0E40\u0E2A\u0E35\u0E22\u0E07\u0E2D\u0E22\u0E39\u0E48",
45173  "call.speaking": "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E1E\u0E39\u0E14",
45174  "call.you": "\u0E04\u0E38\u0E13",
45175  "call.you_label": "\u0E04\u0E38\u0E13",
45176  "call.you_suffix": "(\u0E04\u0E38\u0E13)",
45177  "call.chat_placeholder": "\u0E1E\u0E34\u0E21\u0E1E\u0E4C\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21...",
45178  "call.guest": "\u0E40\u0E01\u0E2A\u0E15\u0E4C",
45179  "call.room_fallback": "\u0E2B\u0E49\u0E2D\u0E07",
45180  "call.focus_view": "\u0E21\u0E38\u0E21\u0E21\u0E2D\u0E07\u0E42\u0E1F\u0E01\u0E31\u0E2A",
45181  "call.grid_view": "\u0E21\u0E38\u0E21\u0E21\u0E2D\u0E07\u0E01\u0E23\u0E34\u0E14",
45182  "call.swap_main_video": "\u0E2A\u0E25\u0E31\u0E1A\u0E27\u0E34\u0E14\u0E35\u0E42\u0E2D\u0E2B\u0E25\u0E31\u0E01",
45183  "call.open_chat": "\u0E40\u0E1B\u0E34\u0E14\u0E41\u0E0A\u0E17",
45184  "call.close_chat": "\u0E1B\u0E34\u0E14\u0E41\u0E0A\u0E17",
45185  "call.leave_room": "\u0E2D\u0E2D\u0E01\u0E2B\u0E49\u0E2D\u0E07",
45186  "call.confirm_leave": "\u0E2D\u0E2D\u0E01\u0E40\u0E25\u0E22\u0E21\u0E31\u0E49\u0E22?",
45187  "call.mic_on": "\u0E40\u0E1B\u0E34\u0E14\u0E44\u0E21\u0E04\u0E4C",
45188  "call.muted_label": "\u0E1B\u0E34\u0E14\u0E44\u0E21\u0E04\u0E4C\u0E2D\u0E22\u0E39\u0E48",
45189  "call.camera_off": "\u0E1B\u0E34\u0E14\u0E01\u0E25\u0E49\u0E2D\u0E07",
45190  "call.connect_failed": "\u0E40\u0E0A\u0E37\u0E48\u0E2D\u0E21\u0E15\u0E48\u0E2D\u0E44\u0E21\u0E48\u0E15\u0E34\u0E14 \u2014 \u0E40\u0E0A\u0E47\u0E04\u0E40\u0E19\u0E47\u0E15\u0E41\u0E25\u0E49\u0E27\u0E25\u0E2D\u0E07\u0E43\u0E2B\u0E21\u0E48\u0E19\u0E30",
45191  "call.camera_access_failed": "\u0E40\u0E02\u0E49\u0E32\u0E16\u0E36\u0E07\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49 \u0E25\u0E2D\u0E07\u0E40\u0E0A\u0E47\u0E04\u0E2A\u0E34\u0E17\u0E18\u0E34\u0E4C\u0E43\u0E19\u0E40\u0E1A\u0E23\u0E32\u0E27\u0E4C\u0E40\u0E0B\u0E2D\u0E23\u0E4C\u0E41\u0E25\u0E49\u0E27\u0E40\u0E02\u0E49\u0E32\u0E43\u0E2B\u0E21\u0E48\u0E14\u0E39\u0E19\u0E30",
45192  "call.recording_failed": "\u0E2D\u0E31\u0E14\u0E27\u0E34\u0E14\u0E35\u0E42\u0E2D\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49 \u0E41\u0E15\u0E48\u0E22\u0E31\u0E07\u0E04\u0E38\u0E22\u0E15\u0E48\u0E2D\u0E44\u0E14\u0E49\u0E1B\u0E01\u0E15\u0E34\u0E19\u0E30",
45193  "call.initialize_failed": "\u0E21\u0E35\u0E1B\u0E31\u0E0D\u0E2B\u0E32\u0E15\u0E2D\u0E19\u0E40\u0E23\u0E34\u0E48\u0E21\u0E2A\u0E32\u0E22 \u0E25\u0E2D\u0E07\u0E23\u0E35\u0E40\u0E1F\u0E23\u0E0A\u0E41\u0E25\u0E49\u0E27\u0E40\u0E02\u0E49\u0E32\u0E43\u0E2B\u0E21\u0E48\u0E19\u0E30",
45194  "call.participants": "\u0E04\u0E19\u0E43\u0E19\u0E2B\u0E49\u0E2D\u0E07",
45195  "call.open_participants": "\u0E14\u0E39\u0E04\u0E19\u0E43\u0E19\u0E2B\u0E49\u0E2D\u0E07",
45196  "call.close_participants": "\u0E1B\u0E34\u0E14\u0E23\u0E32\u0E22\u0E0A\u0E37\u0E48\u0E2D",
45197  "call.lock_room": "\u0E25\u0E47\u0E2D\u0E04\u0E2B\u0E49\u0E2D\u0E07",
45198  "call.unlock_room": "\u0E1B\u0E25\u0E14\u0E25\u0E47\u0E2D\u0E04\u0E2B\u0E49\u0E2D\u0E07",
45199  "call.locked": "\u0E25\u0E47\u0E2D\u0E04\u0E2D\u0E22\u0E39\u0E48",
45200  "call.unlocked": "\u0E40\u0E1B\u0E34\u0E14\u0E2D\u0E22\u0E39\u0E48",
45201  "call.kick_member": "\u0E40\u0E15\u0E30\u0E2D\u0E2D\u0E01\u0E08\u0E32\u0E01\u0E2B\u0E49\u0E2D\u0E07",
45202  "call.mute_member": "\u0E1B\u0E34\u0E14\u0E44\u0E21\u0E04\u0E4C",
45203  "call.unmute_member": "\u0E40\u0E1B\u0E34\u0E14\u0E44\u0E21\u0E04\u0E4C",
45204  "call.muted_by_host": "\u0E42\u0E2E\u0E2A\u0E15\u0E4C\u0E1B\u0E34\u0E14\u0E44\u0E21\u0E04\u0E4C\u0E2D\u0E22\u0E39\u0E48",
45205  "call.waiting_to_join": "\u0E23\u0E2D\u0E40\u0E02\u0E49\u0E32\u0E2B\u0E49\u0E2D\u0E07",
45206  "call.approve": "\u0E43\u0E2B\u0E49\u0E40\u0E02\u0E49\u0E32",
45207  "call.deny": "\u0E44\u0E21\u0E48\u0E43\u0E2B\u0E49\u0E40\u0E02\u0E49\u0E32",
45208  "call.profile_actions": "\u0E08\u0E31\u0E14\u0E01\u0E32\u0E23\u0E42\u0E1B\u0E23\u0E44\u0E1F\u0E25\u0E4C",
45209  "call.profile_in_room": "\u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E2B\u0E49\u0E2D\u0E07",
45210  "call.profile_role_host": "\u0E42\u0E2E\u0E2A\u0E15\u0E4C",
45211  "call.profile_role_you": "\u0E04\u0E38\u0E13",
45212  "call.profile_action_mute": "\u0E1B\u0E34\u0E14\u0E40\u0E2A\u0E35\u0E22\u0E07\u0E04\u0E19\u0E19\u0E35\u0E49",
45213  "call.profile_action_mute_meta": "\u0E1B\u0E34\u0E14\u0E41\u0E04\u0E48\u0E1D\u0E31\u0E48\u0E07\u0E40\u0E23\u0E32 \u2014 \u0E40\u0E04\u0E49\u0E32\u0E44\u0E21\u0E48\u0E23\u0E39\u0E49\u0E2B\u0E23\u0E2D\u0E01",
45214  "call.profile_action_dm": "\u0E17\u0E31\u0E01 DM",
45215  "call.profile_action_dm_meta": "\u0E41\u0E0A\u0E17\u0E2A\u0E48\u0E27\u0E19\u0E15\u0E31\u0E27\u0E41\u0E1A\u0E1A 1:1",
45216  "call.profile_action_view": "\u0E14\u0E39\u0E42\u0E1B\u0E23\u0E44\u0E1F\u0E25\u0E4C\u0E40\u0E15\u0E47\u0E21",
45217  "call.profile_action_view_meta": "\u0E44\u0E1A\u0E42\u0E2D \u0E20\u0E32\u0E29\u0E32 \u0E2B\u0E49\u0E2D\u0E07\u0E17\u0E35\u0E48\u0E40\u0E04\u0E22\u0E40\u0E02\u0E49\u0E32",
45218  "call.profile_action_report": "\u0E23\u0E35\u0E1E\u0E2D\u0E23\u0E4C\u0E15",
45219  "call.profile_action_report_meta": "\u0E41\u0E08\u0E49\u0E07\u0E43\u0E2B\u0E49\u0E41\u0E2D\u0E14\u0E21\u0E34\u0E19\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A",
45220  "call.profile_sheet_close": "\u0E1B\u0E34\u0E14\u0E2B\u0E19\u0E49\u0E32\u0E08\u0E31\u0E14\u0E01\u0E32\u0E23\u0E42\u0E1B\u0E23\u0E44\u0E1F\u0E25\u0E4C",
45221  "call.profile_open_actions": "\u0E40\u0E1B\u0E34\u0E14\u0E2B\u0E19\u0E49\u0E32\u0E08\u0E31\u0E14\u0E01\u0E32\u0E23\u0E42\u0E1B\u0E23\u0E44\u0E1F\u0E25\u0E4C",
45222  "call.dm_title": "\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E48\u0E27\u0E19\u0E15\u0E31\u0E27",
45223  "call.dm_back": "\u0E01\u0E25\u0E31\u0E1A",
45224  "call.dm_close": "\u0E1B\u0E34\u0E14\u0E41\u0E0A\u0E17\u0E2A\u0E48\u0E27\u0E19\u0E15\u0E31\u0E27",
45225  "call.dm_status_online": "\u0E2D\u0E2D\u0E19\u0E44\u0E25\u0E19\u0E4C",
45226  "call.dm_in_room_with": "\u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E2B\u0E49\u0E2D\u0E07\u0E19\u0E35\u0E49",
45227  "call.dm_private_label": "\u0E41\u0E0A\u0E17\u0E2A\u0E48\u0E27\u0E19\u0E15\u0E31\u0E27",
45228  "call.dm_private_meta": "\u0E40\u0E2B\u0E47\u0E19\u0E01\u0E31\u0E19\u0E41\u0E04\u0E48\u0E2A\u0E2D\u0E07\u0E04\u0E19\u0E19\u0E30",
45229  "call.dm_input_placeholder": "\u0E2A\u0E48\u0E07\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E48\u0E27\u0E19\u0E15\u0E31\u0E27\u2026",
45230  "call.dm_send": "\u0E2A\u0E48\u0E07",
45231  "call.dm_just_now": "\u0E40\u0E21\u0E37\u0E48\u0E2D\u0E01\u0E35\u0E49",
45232  "call.dm_seen_just_now": "\u0E40\u0E1E\u0E34\u0E48\u0E07\u0E2D\u0E48\u0E32\u0E19",
45233  "call.dm_typing": "{name} \u0E01\u0E33\u0E25\u0E31\u0E07\u0E1E\u0E34\u0E21\u0E1E\u0E4C\u2026",
45234  "call.dm_minimize": "\u0E22\u0E48\u0E2D\u0E2B\u0E19\u0E49\u0E32\u0E15\u0E48\u0E32\u0E07",
45235  "call.dm_active_indicator": "\u0E40\u0E1B\u0E34\u0E14\u0E41\u0E0A\u0E17",
45236  "call.dm_unread_messages": "\u0E22\u0E31\u0E07\u0E44\u0E21\u0E48\u0E2D\u0E48\u0E32\u0E19 {count} \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21",
45237  "call.dm_toast_tap_to_open": "\u0E41\u0E15\u0E30\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E40\u0E1B\u0E34\u0E14",
45238  "call.dm_reopen_aria": "\u0E40\u0E1B\u0E34\u0E14\u0E41\u0E0A\u0E17\u0E01\u0E31\u0E1A {name} \u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07",
45239  "home.join_denied": "\u0E42\u0E2E\u0E2A\u0E15\u0E4C\u0E44\u0E21\u0E48\u0E43\u0E2B\u0E49\u0E40\u0E02\u0E49\u0E32\u0E19\u0E30",
45240  "home.error.room_not_found": "\u0E44\u0E21\u0E48\u0E21\u0E35\u0E42\u0E04\u0E49\u0E14\u0E2B\u0E49\u0E2D\u0E07\u0E19\u0E35\u0E49\u0E19\u0E30",
45241  "home.error.profile_required": "\u0E15\u0E31\u0E49\u0E07\u0E04\u0E48\u0E32\u0E42\u0E1B\u0E23\u0E44\u0E1F\u0E25\u0E4C\u0E01\u0E48\u0E2D\u0E19\u0E44\u0E1B\u0E15\u0E48\u0E2D\u0E19\u0E30",
45242  "home.cta.set_up_profile": "\u0E15\u0E31\u0E49\u0E07\u0E04\u0E48\u0E32\u0E42\u0E1B\u0E23\u0E44\u0E1F\u0E25\u0E4C",
45243  "home.profile_trigger_new": "\u0E41\u0E15\u0E30\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25",
45244  "home.profile_trigger_new_aria": "\u0E15\u0E31\u0E49\u0E07\u0E04\u0E48\u0E32\u0E42\u0E1B\u0E23\u0E44\u0E1F\u0E25\u0E4C",
45245  "home.profile_trigger_edit_aria": "\u0E41\u0E01\u0E49\u0E42\u0E1B\u0E23\u0E44\u0E1F\u0E25\u0E4C",
45246  "profile.eyebrow_new": "\u0E17\u0E31\u0E01\u0E17\u0E32\u0E22",
45247  "profile.eyebrow_edit": "\u0E42\u0E1B\u0E23\u0E44\u0E1F\u0E25\u0E4C\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13",
45248  "profile.title_new": "\u0E41\u0E15\u0E48\u0E07\u0E42\u0E1B\u0E23\u0E44\u0E1F\u0E25\u0E4C\u0E43\u0E19\u0E41\u0E1A\u0E1A\u0E04\u0E38\u0E13",
45249  "profile.title_edit": "\u0E41\u0E01\u0E49\u0E42\u0E1B\u0E23\u0E44\u0E1F\u0E25\u0E4C",
45250  "profile.subtitle": "\u0E43\u0E2A\u0E48\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E19\u0E34\u0E14\u0E19\u0E36\u0E07 \u0E04\u0E19\u0E2D\u0E37\u0E48\u0E19\u0E08\u0E30\u0E44\u0E14\u0E49\u0E23\u0E39\u0E49\u0E27\u0E48\u0E32\u0E04\u0E38\u0E22\u0E01\u0E31\u0E1A\u0E43\u0E04\u0E23\u0E2D\u0E22\u0E39\u0E48",
45251  "profile.add_photo": "\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E23\u0E39\u0E1B",
45252  "profile.add_photo_soon": "\u0E23\u0E30\u0E1A\u0E1A\u0E23\u0E39\u0E1B\u0E01\u0E33\u0E25\u0E31\u0E07\u0E15\u0E32\u0E21\u0E21\u0E32",
45253  "profile.photo_empty": "\u0E41\u0E15\u0E30\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E23\u0E39\u0E1B",
45254  "profile.photo_ready": "\u0E23\u0E39\u0E1B\u0E1E\u0E23\u0E49\u0E2D\u0E21\u0E41\u0E25\u0E49\u0E27",
45255  "profile.photo_save_first": "\u0E40\u0E0B\u0E1F\u0E42\u0E1B\u0E23\u0E44\u0E1F\u0E25\u0E4C\u0E01\u0E48\u0E2D\u0E19\u0E2D\u0E31\u0E1B\u0E23\u0E39\u0E1B\u0E19\u0E30",
45256  "profile.photo_crop_caption": "\u0E08\u0E31\u0E14\u0E01\u0E23\u0E2D\u0E1A\u0E23\u0E39\u0E1B",
45257  "profile.photo_auto_caption": "\u0E25\u0E32\u0E01\u0E41\u0E25\u0E30\u0E0B\u0E39\u0E21\u0E44\u0E14\u0E49\u0E40\u0E25\u0E22 \u0E40\u0E14\u0E35\u0E4B\u0E22\u0E27\u0E23\u0E30\u0E1A\u0E1A\u0E40\u0E0B\u0E1F\u0E43\u0E2B\u0E49\u0E2D\u0E2D\u0E42\u0E15\u0E49",
45258  "profile.photo_upload": "\u0E2D\u0E31\u0E1B\u0E23\u0E39\u0E1B",
45259  "profile.photo_replace": "\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E23\u0E39\u0E1B",
45260  "profile.photo_remove": "\u0E25\u0E1A\u0E23\u0E39\u0E1B",
45261  "profile.photo_cancel": "\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01",
45262  "profile.photo_save": "\u0E40\u0E0B\u0E1F\u0E23\u0E39\u0E1B",
45263  "profile.photo_uploading": "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E2D\u0E31\u0E1B\u0E23\u0E39\u0E1B\u2026",
45264  "profile.photo_removing": "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E25\u0E1A\u0E23\u0E39\u0E1B\u2026",
45265  "profile.photo_choose_another": "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E23\u0E39\u0E1B\u0E2D\u0E37\u0E48\u0E19",
45266  "profile.photo_drag_hint": "\u0E25\u0E32\u0E01\u0E23\u0E39\u0E1B\u0E43\u0E2B\u0E49\u0E1E\u0E2D\u0E14\u0E35\u0E43\u0E19\u0E27\u0E07\u0E01\u0E25\u0E21 \u0E23\u0E30\u0E1A\u0E1A\u0E08\u0E30\u0E40\u0E0B\u0E1F\u0E43\u0E2B\u0E49\u0E2D\u0E2D\u0E42\u0E15\u0E49\u0E40\u0E25\u0E22",
45267  "profile.photo_zoom": "\u0E0B\u0E39\u0E21",
45268  "profile.photo_horizontal": "\u0E04\u0E23\u0E2D\u0E1B\u0E41\u0E19\u0E27\u0E19\u0E2D\u0E19",
45269  "profile.photo_vertical": "\u0E04\u0E23\u0E2D\u0E1B\u0E41\u0E19\u0E27\u0E15\u0E31\u0E49\u0E07",
45270  "profile.name_label": "\u0E0A\u0E37\u0E48\u0E2D",
45271  "profile.name_placeholder": "\u0E43\u0E2B\u0E49\u0E40\u0E23\u0E32\u0E40\u0E23\u0E35\u0E22\u0E01\u0E04\u0E38\u0E13\u0E27\u0E48\u0E32\u0E2D\u0E30\u0E44\u0E23\u0E14\u0E35?",
45272  "profile.gender_label": "\u0E09\u0E31\u0E19\u0E40\u0E1B\u0E47\u0E19",
45273  "profile.gender.woman": "\u0E1C\u0E39\u0E49\u0E2B\u0E0D\u0E34\u0E07",
45274  "profile.gender.man": "\u0E1C\u0E39\u0E49\u0E0A\u0E32\u0E22",
45275  "profile.gender.unspecified": "\u0E44\u0E21\u0E48\u0E23\u0E30\u0E1A\u0E38",
45276  "profile.bio_label": "\u0E44\u0E1A\u0E42\u0E2D",
45277  "profile.bio_optional": "\u0E44\u0E21\u0E48\u0E1A\u0E31\u0E07\u0E04\u0E31\u0E1A",
45278  "profile.bio_placeholder": "\u0E20\u0E32\u0E29\u0E32\u0E17\u0E35\u0E48\u0E1E\u0E39\u0E14 \u0E2A\u0E34\u0E48\u0E07\u0E17\u0E35\u0E48\u0E0A\u0E2D\u0E1A \u0E2B\u0E23\u0E37\u0E2D\u0E2D\u0E30\u0E44\u0E23\u0E01\u0E47\u0E44\u0E14\u0E49\u2026",
45279  "profile.cta_new": "\u0E25\u0E38\u0E22\u0E40\u0E25\u0E22",
45280  "profile.cta_edit": "\u0E40\u0E0B\u0E1F",
45281  "profile.saving": "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E40\u0E0B\u0E1F\u2026",
45282  "profile.close": "\u0E1B\u0E34\u0E14",
45283  "profile.error.save_failed": "\u0E40\u0E0B\u0E1F\u0E42\u0E1B\u0E23\u0E44\u0E1F\u0E25\u0E4C\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49 \u0E25\u0E2D\u0E07\u0E43\u0E2B\u0E21\u0E48\u0E2D\u0E35\u0E01\u0E17\u0E35\u0E19\u0E30",
45284  "profile.error.avatar_invalid_type": "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E23\u0E39\u0E1B PNG, JPEG, GIF \u0E2B\u0E23\u0E37\u0E2D WebP \u0E19\u0E30",
45285  "profile.error.avatar_too_large": "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E23\u0E39\u0E1B\u0E02\u0E19\u0E32\u0E14\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19 5 MB \u0E19\u0E30",
45286  "profile.error.avatar_too_small": "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E23\u0E39\u0E1B\u0E02\u0E19\u0E32\u0E14 96x96 \u0E1E\u0E34\u0E01\u0E40\u0E0B\u0E25\u0E02\u0E36\u0E49\u0E19\u0E44\u0E1B\u0E19\u0E30",
45287  "profile.error.avatar_load_failed": "\u0E2D\u0E48\u0E32\u0E19\u0E44\u0E1F\u0E25\u0E4C\u0E23\u0E39\u0E1B\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49 \u0E25\u0E2D\u0E07\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E23\u0E39\u0E1B\u0E14\u0E39\u0E19\u0E30",
45288  "profile.error.avatar_failed": "\u0E2D\u0E31\u0E1B\u0E23\u0E39\u0E1B\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49 \u0E25\u0E2D\u0E07\u0E43\u0E2B\u0E21\u0E48\u0E2D\u0E35\u0E01\u0E17\u0E35\u0E19\u0E30",
45289  "profile.error.avatar_remove_failed": "\u0E25\u0E1A\u0E23\u0E39\u0E1B\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49 \u0E25\u0E2D\u0E07\u0E43\u0E2B\u0E21\u0E48\u0E2D\u0E35\u0E01\u0E17\u0E35\u0E19\u0E30",
45290  "effects.title": "\u0E40\u0E2D\u0E1F\u0E40\u0E1F\u0E01\u0E15\u0E4C",
45291  "effects.soft": "\u0E2B\u0E19\u0E49\u0E32\u0E40\u0E19\u0E35\u0E22\u0E19",
45292  "effects.vignette": "\u0E02\u0E2D\u0E1A\u0E14\u0E33",
45293  "effects.face": "\u0E40\u0E1A\u0E25\u0E2D\u0E2B\u0E19\u0E49\u0E32",
45294  "effects.face_preview_only": "\u0E40\u0E1A\u0E25\u0E2D\u0E2B\u0E19\u0E49\u0E32 (\u0E14\u0E39\u0E44\u0E14\u0E49\u0E41\u0E04\u0E48\u0E40\u0E23\u0E32)",
45295  "effects.face_viewer_side": "\u0E40\u0E1A\u0E25\u0E2D\u0E2B\u0E19\u0E49\u0E32 (\u0E04\u0E19\u0E2D\u0E37\u0E48\u0E19\u0E40\u0E2B\u0E47\u0E19)",
45296  "effects.face_strength": "\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E04\u0E27\u0E32\u0E21\u0E40\u0E1A\u0E25\u0E2D",
45297  "effects.grade.off": "\u0E1B\u0E34\u0E14",
45298  "effects.grade.pop": "\u0E2A\u0E14\u0E43\u0E2A",
45299  "effects.grade.warm": "\u0E42\u0E17\u0E19\u0E2D\u0E38\u0E48\u0E19",
45300  "effects.grade.cool": "\u0E42\u0E17\u0E19\u0E40\u0E22\u0E47\u0E19",
45301  "effects.grade.bw": "\u0E02\u0E32\u0E27\u0E14\u0E33",
45302  "camera.off": "\u0E1B\u0E34\u0E14\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E2D\u0E22\u0E39\u0E48",
45303  "camera.check": "\u0E40\u0E0A\u0E47\u0E04\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E41\u0E1B\u0E4A\u0E1A",
45304  "camera.retry": "\u0E25\u0E2D\u0E07\u0E40\u0E1B\u0E34\u0E14\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E43\u0E2B\u0E21\u0E48",
45305  "camera.ready": "\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E1E\u0E23\u0E49\u0E2D\u0E21",
45306  "camera.idle.title": "\u0E40\u0E1B\u0E34\u0E14\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E2B\u0E19\u0E48\u0E2D\u0E22",
45307  "camera.idle.hint": "\u0E40\u0E14\u0E35\u0E4B\u0E22\u0E27\u0E40\u0E23\u0E32\u0E08\u0E30\u0E02\u0E2D\u0E2A\u0E34\u0E17\u0E18\u0E34\u0E4C\u0E40\u0E02\u0E49\u0E32\u0E16\u0E36\u0E07\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E08\u0E32\u0E01\u0E40\u0E1A\u0E23\u0E32\u0E27\u0E4C\u0E40\u0E0B\u0E2D\u0E23\u0E4C\u0E19\u0E30",
45308  "camera.idle.button": "\u0E40\u0E1B\u0E34\u0E14\u0E01\u0E25\u0E49\u0E2D\u0E07",
45309  "camera.status.idle": "\u0E23\u0E2D\u0E04\u0E38\u0E13\u0E2D\u0E22\u0E39\u0E48",
45310  "camera.status.off": "\u0E1B\u0E34\u0E14\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E2D\u0E22\u0E39\u0E48",
45311  "camera.status.loading": "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E02\u0E2D\u0E2A\u0E34\u0E17\u0E18\u0E34\u0E4C\u0E40\u0E02\u0E49\u0E32\u0E16\u0E36\u0E07\u0E01\u0E25\u0E49\u0E2D\u0E07...",
45312  "camera.status.denied": "\u0E2D\u0E19\u0E38\u0E0D\u0E32\u0E15\u0E43\u0E2B\u0E49\u0E40\u0E1A\u0E23\u0E32\u0E27\u0E4C\u0E40\u0E0B\u0E2D\u0E23\u0E4C\u0E40\u0E02\u0E49\u0E32\u0E16\u0E36\u0E07\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E01\u0E48\u0E2D\u0E19 \u0E41\u0E25\u0E49\u0E27\u0E25\u0E2D\u0E07\u0E43\u0E2B\u0E21\u0E48\u0E19\u0E30",
45313  "camera.status.error": "\u0E1E\u0E23\u0E35\u0E27\u0E34\u0E27\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49 \u0E25\u0E2D\u0E07\u0E43\u0E2B\u0E21\u0E48\u0E2D\u0E35\u0E01\u0E17\u0E35",
45314  "camera.status.unsupported": "\u0E40\u0E1A\u0E23\u0E32\u0E27\u0E4C\u0E40\u0E0B\u0E2D\u0E23\u0E4C\u0E19\u0E35\u0E49\u0E44\u0E21\u0E48\u0E23\u0E2D\u0E07\u0E23\u0E31\u0E1A\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E34\u0E14\u0E01\u0E25\u0E49\u0E2D\u0E07",
45315  "camera.status.insecure": "\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E34\u0E14\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E0A\u0E49 HTTPS \u0E2B\u0E23\u0E37\u0E2D localhost",
45316  "camera.status.attach_failed": "\u0E40\u0E1B\u0E34\u0E14\u0E1E\u0E23\u0E35\u0E27\u0E34\u0E27\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49 \u0E25\u0E2D\u0E07\u0E43\u0E2B\u0E21\u0E48\u0E2D\u0E35\u0E01\u0E17\u0E35\u0E19\u0E30",
45317  "camera.guest_name_placeholder": "\u0E0A\u0E37\u0E48\u0E2D\u0E40\u0E01\u0E2A\u0E15\u0E4C",
45318  "camera.flip": "\u0E2A\u0E25\u0E31\u0E1A\u0E01\u0E25\u0E49\u0E2D\u0E07",
45319  "camera.save_name": "\u0E40\u0E0B\u0E1F",
45320  "camera.edit_name": "\u0E41\u0E01\u0E49\u0E0A\u0E37\u0E48\u0E2D",
45321  "mic.on": "\u0E1B\u0E34\u0E14\u0E44\u0E21\u0E04\u0E4C",
45322  "mic.off": "\u0E40\u0E1B\u0E34\u0E14\u0E44\u0E21\u0E04\u0E4C",
45323  "video.on": "\u0E1B\u0E34\u0E14\u0E01\u0E25\u0E49\u0E2D\u0E07",
45324  "video.off": "\u0E40\u0E1B\u0E34\u0E14\u0E01\u0E25\u0E49\u0E2D\u0E07",
45325  "chat.title": "\u0E41\u0E0A\u0E17",
45326  "chat.close": "\u0E1B\u0E34\u0E14\u0E41\u0E0A\u0E17",
45327  "chat.loading": "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14...",
45328  "chat.load_earlier": "\u0E42\u0E2B\u0E25\u0E14\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E01\u0E48\u0E2D\u0E19\u0E2B\u0E19\u0E49\u0E32",
45329  "chat.empty": "\u0E22\u0E31\u0E07\u0E44\u0E21\u0E48\u0E21\u0E35\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21",
45330  "chat.send_error": "\u0E2A\u0E48\u0E07\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E44\u0E21\u0E48\u0E44\u0E1B \u2014 \u0E25\u0E2D\u0E07\u0E43\u0E2B\u0E21\u0E48\u0E19\u0E30",
45331  "chat.input_placeholder": "\u0E1E\u0E34\u0E21\u0E1E\u0E4C\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21...",
45332  "room.host": "\u0E42\u0E2E\u0E2A\u0E15\u0E4C",
45333  "app.room_default_title": "\u0E2A\u0E23\u0E49\u0E32\u0E07\u0E2B\u0E49\u0E2D\u0E07",
45334  "app.chat_connection_rejected": "\u0E40\u0E0A\u0E37\u0E48\u0E2D\u0E21\u0E15\u0E48\u0E2D\u0E41\u0E0A\u0E17\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49 \u2014 \u0E25\u0E2D\u0E07\u0E23\u0E35\u0E40\u0E1F\u0E23\u0E0A\u0E14\u0E39\u0E19\u0E30",
45335  "app.copy_failed": "\u0E01\u0E4A\u0E2D\u0E1B\u0E25\u0E34\u0E07\u0E01\u0E4C\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49 \u0E25\u0E2D\u0E07\u0E04\u0E25\u0E38\u0E21\u0E14\u0E33\u0E41\u0E25\u0E49\u0E27\u0E01\u0E4A\u0E2D\u0E1B\u0E40\u0E2D\u0E07\u0E14\u0E39\u0E19\u0E30",
45336  "app.chat_not_connected": "\u0E41\u0E0A\u0E17\u0E22\u0E31\u0E07\u0E44\u0E21\u0E48\u0E40\u0E0A\u0E37\u0E48\u0E2D\u0E21\u0E15\u0E48\u0E2D \u0E23\u0E2D\u0E41\u0E1B\u0E4A\u0E1A\u0E19\u0E36\u0E07\u0E41\u0E25\u0E49\u0E27\u0E25\u0E2D\u0E07\u0E43\u0E2B\u0E21\u0E48\u0E19\u0E30",
45337  "footer.terms": "\u0E02\u0E49\u0E2D\u0E15\u0E01\u0E25\u0E07\u0E41\u0E25\u0E30\u0E40\u0E07\u0E37\u0E48\u0E2D\u0E19\u0E44\u0E02",
45338  "footer.copyright": "\xA9 2026 Yano.AI"
45339};
45340
45341// app/javascript/yano/locales/tl.js
45342var tl_default = {
45343  "home.heading.default": "tara, call tayo",
45344  "home.heading.loading": "Binubuksan yung room...",
45345  "home.heading.join": "ready ka na mag-join?",
45346  "home.heading.joined": "nakapasok ka na",
45347  "home.heading.pending": "waiting sa host",
45348  "home.body.default": "gawa ng room, send ang link, chill.",
45349  "home.body.loading": "wait lang, sinesetup lang yung room.",
45350  "home.body.join": "check mo cam at mic mo, tapos pasok na.",
45351  "home.body.joined": "live na yung room. share mo yung link o g na.",
45352  "home.body.joined_in_room": "nasa room na \u2014 pasok na o share mo yung link.",
45353  "home.body.pending": "naka-lock yung room. papapasukin ka rin ng host.",
45354  "home.cta.create": "Gumawa ng room",
45355  "home.cta.join": "Mag-join sa room",
45356  "home.cta.enter": "Pumasok sa room",
45357  "home.cta.creating": "Gumagawa...",
45358  "home.cta.joining": "Nagjo-join...",
45359  "home.cta.opening": "Binubuksan...",
45360  "home.cta.pending": "Waiting ma-approve...",
45361  "home.copy_link": "copy link",
45362  "home.copied": "copied na!",
45363  "home.leave": "leave room",
45364  "home.back": "back",
45365  "home.no_participants": "wala pang tao dito",
45366  "home.join_by_code": "join gamit ang invite code",
45367  "home.code_placeholder": "enter code",
45368  "home.name_placeholder": "pangalan mo",
45369  "home.people_one": "tao",
45370  "home.people_other": "katao",
45371  "home.marketing.invite.title": "Gumawa ng room,\nshare ang link.",
45372  "home.marketing.invite.body": "One tap lang para mag-start. Share mo yung link sa friends mo at pwede na sila mag-join \u2014 no downloads, no sign-ups.",
45373  "home.marketing.invite.preview_url": "yano.ai/ROOM",
45374  "home.marketing.look.title": "Ikaw bahala\nsa look mo.",
45375  "home.marketing.look.body": "Color grading, softening, vignette \u2014 o i-blur mo buong mukha mo. Camera mo, look mo.",
45376  "home.marketing.host.title": "Space mo,\nrules mo.",
45377  "home.marketing.host.body": "I-lock ang room, i-mute ang iba, o i-kick sila. Ikaw ang host, ikaw ang masusunod.",
45378  "home.marketing.host.locked": "Naka-lock ang room",
45379  "home.marketing.host.waiting_to_join": "Waiting maka-join",
45380  "home.marketing.host.wants_to_join": "gustong mag-join",
45381  "home.marketing.anything.title": "Kahit para saan pa 'yan.",
45382  "home.marketing.anything.body": "Study sessions, game nights, work standups, watch party \u2014 o tambay lang.",
45383  "home.marketing.use_case.study_group": "\u{1F4DA} study group",
45384  "home.marketing.use_case.game_night": "\u{1F3AE} game night",
45385  "home.marketing.use_case.standup": "\u{1F4BC} standup",
45386  "home.marketing.use_case.watch_party": "\u{1F37F} watch party",
45387  "home.marketing.use_case.catch_up": "\u2615 chikahan",
45388  "home.marketing.use_case.jam_session": "\u{1F3B8} jam session",
45389  "home.marketing.use_case.book_club": "\u{1F4D6}
45389 book club",
45390  "home.marketing.use_case.coworking": "\u{1F4BB} co-working",
45391  "ended.heading": "tapos na ang call",
45392  "ended.left": "nag-leave ka sa room.",
45393  "ended.room_ended": "tapos na ang {title} para sa'yo.",
45394  "ended.rejoin": "rejoin",
45395  "ended.rejoining": "nagre-rejoin...",
45396  "ended.home": "balik sa home",
45397  "call.connecting": "nagko-connect",
45398  "call.waiting": "waiting sa iba",
45399  "call.invite_code": "invite code",
45400  "call.audio_on": "naka-on ang audio",
45401  "call.muted": "naka-mute",
45402  "call.listening": "Nakikinig",
45403  "call.audio_muted": "Naka-mute ang audio",
45404  "call.speaking": "nagsasalita",
45405  "call.you": "ikaw",
45406  "call.you_label": "Ikaw",
45407  "call.you_suffix": "(ikaw)",
45408  "call.chat_placeholder": "mag-send ng message...",
45409  "call.guest": "guest",
45410  "call.room_fallback": "room",
45411  "call.focus_view": "Focus view",
45412  "call.grid_view": "Grid view",
45413  "call.swap_main_video": "Palitan ang main video",
45414  "call.open_chat": "I-open ang chat",
45415  "call.close_chat": "I-close ang chat",
45416  "call.leave_room": "Mag-leave sa room",
45417  "call.confirm_leave": "Mag-leave?",
45418  "call.mic_on": "Naka-on ang mic",
45419  "call.muted_label": "Naka-mute",
45420  "call.camera_off": "Naka-off ang camera",
45421  "call.connect_failed": "Connection failed \u2014 check mo internet mo tapos try ulit.",
45422  "call.camera_access_failed": "Hindi ma-access yung camera mo. Check mo browser permissions tapos try ulit.",
45423  "call.recording_failed": "Hindi mag-start yung recording. Tuloy pa rin ang call kahit wala 'to.",
45424  "call.initialize_failed": "May mali pag-start ng call. Pa-refresh na lang tapos try ulit.",
45425  "call.participants": "Participants",
45426  "call.open_participants": "I-open ang participants",
45427  "call.close_participants": "I-close ang participants",
45428  "call.lock_room": "I-lock ang room",
45429  "call.unlock_room": "I-unlock ang room",
45430  "call.locked": "naka-lock",
45431  "call.unlocked": "open",
45432  "call.kick_member": "I-kick sa room",
45433  "call.mute_member": "I-mute",
45434  "call.unmute_member": "I-unmute",
45435  "call.muted_by_host": "Muted ng host",
45436  "call.waiting_to_join": "Waiting maka-join",
45437  "call.approve": "Approve",
45438  "call.deny": "Deny",
45439  "call.profile_actions": "Profile actions",
45440  "call.profile_in_room": "Nasa room",
45441  "call.profile_role_host": "Host",
45442  "call.profile_role_you": "Ikaw",
45443  "call.profile_action_mute": "I-mute ang audio nila",
45444  "call.profile_action_mute_meta": "Para sa'yo lang \u2014 hindi nila malalaman",
45445  "call.profile_action_dm": "1:1 DM",
45446  "call.profile_action_dm_meta": "Mag-start ng private chat",
45447  "call.profile_action_view": "Tingnan ang full profile",
45448  "call.profile_action_view_meta": "Bio, languages, past sessions",
45449  "call.profile_action_report": "I-report",
45450  "call.profile_action_report_meta": "I-flag para ma-review",
45451  "call.profile_sheet_close": "I-close ang profile actions",
45452  "call.profile_open_actions": "I-open ang profile actions",
45453  "call.dm_title": "Direct message",
45454  "call.dm_back": "Back sa actions",
45455  "call.dm_close": "I-close ang direct message",
45456  "call.dm_status_online": "Online",
45457  "call.dm_in_room_with": "Nasa room na 'to",
45458  "call.dm_private_label": "Private chat",
45459  "call.dm_private_meta": "Kayong dalawa lang makakakita ng messages na 'to",
45460  "call.dm_input_placeholder": "Mag-send ng private message\u2026",
45461  "call.dm_send": "Send",
45462  "call.dm_just_now": "now",
45463  "call.dm_seen_just_now": "Seen just now",
45464  "call.dm_typing": "nagta-type si {name}\u2026",
45465  "call.dm_minimize": "Minimize",
45466  "call.dm_active_indicator": "I-open ang convo",
45467  "call.dm_unread_messages": "{count} unread",
45468  "call.dm_toast_tap_to_open": "I-tap para i-open",
45469  "call.dm_reopen_aria": "I-open ulit ang convo kay {name}",
45470  "home.join_denied": "Hindi ka pinapasok ng host.",
45471  "home.error.room_not_found": "Wala namang ganyang room code.",
45472  "home.error.profile_required": "I-setup muna ang profile mo para makatuloy.",
45473  "home.cta.set_up_profile": "I-setup ang profile mo",
45474  "home.profile_trigger_new": "I-tap para mag-add ng details",
45475  "home.profile_trigger_new_aria": "I-setup ang profile mo",
45476  "home.profile_trigger_edit_aria": "I-edit ang profile mo",
45477  "profile.eyebrow_new": "say hi",
45478  "profile.eyebrow_edit": "profile mo",
45479  "profile.title_new": "I-customize mo.",
45480  "profile.title_edit": "I-edit ang profile",
45481  "profile.subtitle": "Kunting details lang para alam nila kung sino kausap nila.",
45482  "profile.add_photo": "Mag-add ng photo",
45483  "profile.add_photo_soon": "coming soon ang photos",
45484  "profile.photo_empty": "i-tap para mag-add ng photo",
45485  "profile.photo_ready": "ready na ang photo",
45486  "profile.photo_save_first": "i-save muna ang profile bago mag-upload ng photo",
45487  "profile.photo_crop_caption": "i-frame ang photo mo",
45488  "profile.photo_auto_caption": "drag at zoom, tapos automatic na mase-save",
45489  "profile.photo_upload": "Mag-upload ng photo",
45490  "profile.photo_replace": "Palitan ang photo",
45491  "profile.photo_remove": "I-remove ang photo",
45492  "profile.photo_cancel": "Cancel",
45493  "profile.photo_save": "I-save ang photo",
45494  "profile.photo_uploading": "Ina-upload ang photo\u2026",
45495  "profile.photo_removing": "Nire-remove ang photo\u2026",
45496  "profile.photo_choose_another": "Pumili ng iba",
45497  "profile.photo_drag_hint": "I-drag ang photo sa loob ng circle. Automatic mase-save ang changes.",
45498  "profile.photo_zoom": "Zoom",
45499  "profile.photo_horizontal": "Horizontal crop",
45500  "profile.photo_vertical": "Vertical crop",
45501  "profile.name_label": "Pangalan",
45502  "profile.name_placeholder": "Ano itatawag namin sa'yo?",
45503  "profile.gender_label": "Ako ay",
45504  "profile.gender.woman": "Babae",
45505  "profile.gender.man": "Lalaki",
45506  "profile.gender.unspecified": "Prefer not to say",
45507  "profile.bio_label": "Bio",
45508  "profile.bio_optional": "optional",
45509  "profile.bio_placeholder": "Mga language na alam mo, mga trip mo, kahit ano\u2026",
45510  "profile.cta_new": "G na",
45511  "profile.cta_edit": "I-save ang changes",
45512  "profile.saving": "Sini-save\u2026",
45513  "profile.close": "I-close",
45514  "profile.error.save_failed": "Hindi ma-save ang profile mo. Try ulit.",
45515  "profile.error.avatar_invalid_type": "Pumili ng PNG, JPEG, GIF, o WebP na image.",
45516  "profile.error.avatar_too_large": "Pumili ng image na mas maliit sa 5 MB.",
45517  "profile.error.avatar_too_small": "Pumili ng image na at least 96 by 96 pixels.",
45518  "profile.error.avatar_load_failed": "Hindi ma-read yung image. Try ng ibang file.",
45519  "profile.error.avatar_failed": "Hindi ma-upload yung photo mo. Try ulit.",
45520  "profile.error.avatar_remove_failed": "Hindi ma-remove yung photo mo. Try ulit.",
45521  "effects.title": "Effects",
45522  "effects.soft": "Soft focus",
45523  "effects.vignette": "Vignette",
45524  "effects.face": "Face blur",
45525  "effects.face_preview_only": "Face blur (preview lang)",
45526  "effects.face_viewer_side": "Face blur (viewer-side)",
45527  "effects.face_strength": "Lakas ng face blur",
45528  "effects.grade.off": "OFF",
45529  "effects.grade.pop": "POP",
45530  "effects.grade.warm": "WARM",
45531  "effects.grade.cool": "COOL",
45532  "effects.grade.bw": "B&W",
45533  "camera.off": "naka-off ang camera",
45534  "camera.check": "i-check ang camera mo",
45535  "camera.retry": "i-retry ang camera",
45536  "camera.ready": "ready na ang camera",
45537  "camera.idle.title": "I-on ang camera mo",
45538  "camera.idle.hint": "Hihingi kami ng access sa browser mo pag ready ka na.",
45539  "camera.idle.button": "I-on ang camera",
45540  "camera.status.idle": "Waiting sa'yo",
45541  "camera.status.off": "Naka-off ang camera",
45542  "camera.status.loading": "Naghahanap ng camera access...",
45543  "camera.status.denied": "I-allow ang camera access sa browser, tapos try ulit.",
45544  "camera.status.error": "Nag-fail ang camera preview. Try ulit.",
45545  "camera.status.unsupported": "Hindi pwede ang camera access sa browser na 'to.",
45546  "camera.status.insecure": "Kailangan ng HTTPS o localhost para sa camera access.",
45547  "camera.guest_name_placeholder": "Pangalan ng guest",
45548  "camera.flip": "I-switch ang camera",
45549  "camera.save_name": "I-save",
45550  "camera.edit_name": "I-edit ang pangalan",
45551  "mic.on": "I-off ang mic",
45552  "mic.off": "I-on ang mic",
45553  "video.on": "I-off ang camera",
45554  "video.off": "I-on ang camera",
45555  "chat.title": "chat",
45556  "chat.close": "I-close ang chat",
45557  "chat.loading": "naglo-load...",
45558  "chat.load_earlier": "i-load ang mga luma",
45559  "chat.empty": "wala pang messages",
45560  "chat.send_error": "Hindi na-send ang message \u2014 try ulit.",
45561  "chat.input_placeholder": "mag-type ng message...",
45562  "room.host": "Host",
45563  "app.room_default_title": "Gumawa ng room",
45564  "app.chat_connection_rejected": "Hindi maka-connect ang chat \u2014 try mo i-refresh.",
45565  "app.copy_failed": "Hindi ma-copy ang link. Try mo i-select at i-copy manually.",
45566  "app.chat_not_connected": "Hindi pa connected ang chat. Wait lang ng konti tapos try ulit.",
45567  "footer.terms": "Terms & Conditions",
45568  "footer.copyright": "\xA9 2026 Yano.AI"
45569};
45570
45571// app/javascript/yano/locales/uk.js
45572var uk_default = {
45573  "home.heading.default": "\u0437\u0430\u043B\u0456\u0442\u0430\u0439 \u043D\u0430 \u0434\u0437\u0432\u0456\u043D\u043E\u043A",
45574  "home.heading.loading": "\u0412\u0456\u0434\u043A\u0440\u0438\u0432\u0430\u0454\u043C\u043E \u043A\u0456\u043C\u043D\u0430\u0442\u0443...",
45575  "home.heading.join": "\u0433\u043E\u0442\u043E\u0432\u0438\u0439 \u0437\u0430\u043B\u0435\u0442\u0456\u0442\u0438?",
45576  "home.heading.joined": "\u0442\u0438 \u0442\u0443\u0442",
45577  "home.heading.pending": "\u0447\u0435\u043A\u0430\u0454\u043C\u043E \u043D\u0430 \u0445\u043E\u0441\u0442\u0430",
45578  "home.body.default": "\u0441\u0442\u0432\u043E\u0440\u044E\u0439 \u043A\u0456\u043C\u043D\u0430\u0442\u0443, \u043A\u0438\u0434\u0430\u0439 \u043B\u0456\u043D\u043A, \u0432\u0430\u0439\u0431\u0443\u0439.",
45579  "home.body.loading": "\u0441\u0435\u043A\u0443\u043D\u0434\u0443, \u0433\u043E\u0442\u0443\u0454\u043C\u043E \u043A\u0456\u043C\u043D\u0430\u0442\u0443.",
45580  "home.body.join": "\u0447\u0435\u043A\u043D\u0438 \u043A\u0430\u043C\u0435\u0440\u0443 \u0442\u0430 \u043C\u0456\u043A\u0440\u043E \u0456 \u0437\u0430\u043B\u0456\u0442\u0430\u0439.",
45581  "home.body.joined": "\u043A\u0456\u043C\u043D\u0430\u0442\u0430 \u043B\u0430\u0439\u0432. \u043A\u0438\u0434\u0430\u0439 \u043B\u0456\u043D\u043A \u0430\u0431\u043E \u043F\u0440\u043E\u0441\u0442\u043E \u043F\u043E\u0447\u0438\u043D\u0430\u0439.",
45582  "home.body.joined_in_room": "\u0432 \u043A\u0456\u043C\u043D\u0430\u0442\u0456 \u2014 \u0437\u0430\u043B\u0456\u0442\u0430\u0439 \u0430\u0431\u043E \u043A\u0438\u0434\u0430\u0439 \u043B\u0456\u043D\u043A.",
45583  "home.body.pending": "\u043A\u0456\u043C\u043D\u0430\u0442\u0430 \u0437\u0430\u043A\u0440\u0438\u0442\u0430. \u0445\u043E\u0441\u0442 \u0442\u0435\u0431\u0435 \u0432\u043F\u0443\u0441\u0442\u0438\u0442\u044C.",
45584  "home.cta.create": "\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043A\u0456\u043C\u043D\u0430\u0442\u0443",
45585  "home.cta.join": "\u0417\u0430\u0439\u0442\u0438 \u0432 \u043A\u0456\u043C\u043D\u0430\u0442\u0443",
45586  "home.cta.enter": "\u0423\u0432\u0456\u0439\u0442\u0438",
45587  "home.cta.creating": "\u0421\u0442\u0432\u043E\u0440\u044E\u0454\u043C\u043E...",
45588  "home.cta.joining": "\u0417\u0430\u0445\u043E\u0434\u0438\u043C\u043E...",
45589  "home.cta.opening": "\u0412\u0456\u0434\u043A\u0440\u0438\u0432\u0430\u0454\u043C\u043E...",
45590  "home.cta.pending": "\u0427\u0435\u043A\u0430\u0454\u043C\u043E \u043D\u0430 \u0430\u043F\u0440\u0443\u0432...",
45591  "home.copy_link": "\u0441\u043A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u043B\u0456\u043D\u043A",
45592  "home.copied": "\u0441\u043A\u043E\u043F\u0456\u0439\u043E\u0432\u0430\u043D\u043E!",
45593  "home.leave": "\u0432\u0438\u0439\u0442\u0438 \u0437 \u043A\u0456\u043C\u043D\u0430\u0442\u0438",
45594  "home.back": "\u043D\u0430\u0437\u0430\u0434",
45595  "home.no_participants": "\u0442\u0443\u0442 \u043F\u043E\u043A\u0438 \u043D\u0456\u043A\u043E\u0433\u043E",
45596  "home.join_by_code": "\u0437\u0430\u0439\u0442\u0438 \u0437\u0430 \u043A\u043E\u0434\u043E\u043C",
45597  "home.code_placeholder": "\u0432\u0432\u0435\u0434\u0438 \u043A\u043E\u0434",
45598  "home.name_placeholder": "\u0442\u0432\u043E\u0454 \u0456\u043C'\u044F",
45599  "home.people_one": "\u043B\u044E\u0434\u0438\u043D\u0430",
45600  "home.people_other": "\u043B\u044E\u0434\u0435\u0439",
45601  "home.marketing.invite.title": "\u0421\u0442\u0432\u043E\u0440\u044E\u0439 \u043A\u0456\u043C\u043D\u0430\u0442\u0443,\n\u043A\u0438\u0434\u0430\u0439 \u043B\u0456\u043D\u043A.",
45602  "home.marketing.invite.body": "\u041E\u0434\u0438\u043D \u0442\u0430\u043F \u2014 \u0456 \u0433\u043E\u0442\u043E\u0432\u043E. \u041A\u0438\u0434\u0430\u0439 \u043B\u0456\u043D\u043A \u0434\u0440\u0443\u0437\u044F\u043C, \u0456 \u0431\u0443\u0434\u044C-\u0445\u0442\u043E \u0437\u043C\u043E\u0436\u0435 \u0437\u0430\u0439\u0442\u0438: \u0431\u0435\u0437 \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u044C \u0456 \u0440\u0435\u0454\u0441\u0442\u0440\u0430\u0446\u0456\u0439.",
45603  "home.marketing.invite.preview_url": "yano.ai/ROOM",
45604  "home.marketing.look.title": "\u0412\u0438\u0433\u043B\u044F\u0434\u0430\u0439\n\u044F\u043A \u0445\u043E\u0447\u0435\u0448.",
45605  "home.marketing.look.body": "\u041A\u043E\u0440\u0435\u043A\u0446\u0456\u044F \u043A\u043E\u043B\u044C\u043E\u0440\u0443, \u043F\u043E\u043C'\u044F\u043A\u0448\u0435\u043D\u043D\u044F, \u0432\u0456\u043D\u044C\u0454\u0442\u043A\u0430 \u2014 \u0430\u0431\u043E \u0432\u0437\u0430\u0433\u0430\u043B\u0456 \u0437\u0430\u0431\u043B\u044E\u0440 \u043E\u0431\u043B\u0438\u0447\u0447\u044F. \u0422\u0432\u043E\u044F \u043A\u0430\u043C\u0435\u0440\u0430, \u0442\u0432\u0456\u0439 \u0441\u0442\u0438\u043B\u044C.",
45606  "home.marketing.host.title": "\u0422\u0432\u0456\u0439 \u043F\u0440\u043E\u0441\u0442\u0456\u0440,\n\u0442\u0432\u043E\u0457 \u043F\u0440\u0430\u0432\u0438\u043B\u0430.",
45607  "home.marketing.host.body": "\u0417\u0430\u043A\u0440\u0438\u0439 \u043A\u0456\u043C\u043D\u0430\u0442\u0443, \u0437\u0430\u043C'\u044E\u0442\u044C \u043A\u043E\u0433\u043E\u0441\u044C \u0430\u0431\u043E \u0432\u0437\u0430\u0433\u0430\u043B\u0456 \u043A\u0456\u043A\u043D\u0438. \u
456070425\u043E\u0441\u0442 \u0442\u0443\u0442 \u0433\u043E\u043B\u043E\u0432\u043D\u0438\u0439.",
45608  "home.marketing.host.locked": "\u041A\u0456\u043C\u043D\u0430\u0442\u0430 \u0437\u0430\u043A\u0440\u0438\u0442\u0430",
45609  "home.marketing.host.waiting_to_join": "\u0427\u0435\u043A\u0430\u044E\u0442\u044C \u043D\u0430 \u0432\u0445\u0456\u0434",
45610  "home.marketing.host.wants_to_join": "\u0445\u043E\u0447\u0435 \u0437\u0430\u0439\u0442\u0438",
45611  "home.marketing.anything.title": "\u0420\u0435\u0430\u043B\u044C\u043D\u043E \u0434\u043B\u044F \u0431\u0443\u0434\u044C-\u0447\u043E\u0433\u043E.",
45612  "home.marketing.anything.body": "\u041D\u0430\u0432\u0447\u0430\u043D\u043D\u044F, \u0456\u0433\u0440\u0438, \u0440\u043E\u0431\u043E\u0447\u0456 \u0441\u0442\u0435\u043D\u0434\u0430\u043F\u0438, \u0441\u043F\u0456\u043B\u044C\u043D\u0438\u0439 \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434 \u0444\u0456\u043B\u044C\u043C\u0456\u0432 \u2014 \u0430\u0431\u043E \u043F\u0440\u043E\u0441\u0442\u043E \u043F\u043E\u0441\u0438\u0434\u0456\u0442\u0438.",
45613  "home.marketing.use_case.study_group": "\u{1F4DA} \u0441\u0442\u0430\u0434\u0456-\u0433\u0440\u0443\u043F\u0430",
45614  "home.marketing.use_case.game_night": "\u{1F3AE} \u0433\u0435\u0439\u043C-\u043D\u0430\u0439\u0442",
45615  "home.marketing.use_case.standup": "\u{1F4BC} \u0441\u0442\u0435\u043D\u0434\u0430\u043F",
45616  "home.marketing.use_case.watch_party": "\u{1F37F} \u0432\u043E\u0442\u0447-\u043F\u0430\u0442\u0456",
45617  "home.marketing.use_case.catch_up": "\u2615 \u043A\u0435\u0442\u0447\u0430\u043F",
45618  "home.marketing.use_case.jam_session": "\u{1F3B8} \u0434\u0436\u0435\u043C-\u0441\u0435\u0441\u0456\u044F",
45619  "home.marketing.use_case.book_club": "\u{1F4D6}
45619 \u043A\u043D\u0438\u0436\u043A\u043E\u0432\u0438\u0439 \u043A\u043B\u0443\u0431",
45620  "home.marketing.use_case.coworking": "\u{1F4BB} \u043A\u043E\u0432\u043E\u0440\u043A\u0456\u043D\u0433",
45621  "ended.heading": "\u0434\u0437\u0432\u0456\u043D\u043E\u043A \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E",
45622  "ended.left": "\u0442\u0438 \u0432\u0438\u0439\u0448\u043E\u0432 \u0437 \u043A\u0456\u043C\u043D\u0430\u0442\u0438.",
45623  "ended.room_ended": "{title} \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0432\u0441\u044F \u0434\u043B\u044F \u0442\u0435\u0431\u0435.",
45624  "ended.rejoin": "\u0437\u0430\u0439\u0442\u0438 \u0437\u043D\u043E\u0432\u0443",
45625  "ended.rejoining": "\u043F\u043E\u0432\u0435\u0440\u0442\u0430\u0454\u043C\u043E\u0441\u044C...",
45626  "ended.home": "\u043D\u0430 \u0433\u043E\u043B\u043E\u0432\u043D\u0443",
45627  "call.connecting": "\u0437'\u0454\u0434\u043D\u0443\u0454\u043C\u043E",
45628  "call.waiting": "\u0447\u0435\u043A\u0430\u0454\u043C\u043E \u043D\u0430 \u0456\u043D\u0448\u0438\u0445",
45629  "call.invite_code": "\u043A\u043E\u0434 \u0456\u043D\u0432\u0430\u0439\u0442\u0443",
45630  "call.audio_on": "\u0437\u0432\u0443\u043A \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E",
45631  "call.muted": "\u0432 \u043C\u0443\u0442\u0456",
45632  "call.listening": "\u0421\u043B\u0443\u0445\u0430\u0454",
45633  "call.audio_muted": "\u0417\u0432\u0443\u043A \u0432\u0438\u043C\u043A\u043D\u0435\u043D\u043E",
45634  "call.speaking": "\u0433\u043E\u0432\u043E\u0440\u0438\u0442\u044C",
45635  "call.you": "\u0442\u0438",
45636  "call.you_label": "\u0422\u0438",
45637  "call.you_suffix": "(\u0442\u0438)",
45638  "call.chat_placeholder": "\u043D\u0430\u043F\u0438\u0448\u0438 \u0449\u043E\u0441\u044C...",
45639  "call.guest": "\u0433\u0456\u0441\u0442\u044C",
45640  "call.room_fallback": "\u043A\u0456\u043C\u043D\u0430\u0442\u0430",
45641  "call.focus_view": "\u0424\u043E\u043A\u0443\u0441-\u0440\u0435\u0436\u0438\u043C",
45642  "call.grid_view": "\u0421\u0456\u0442\u043A\u0430",
45643  "call.swap_main_video": "\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0433\u043E\u043B\u043E\u0432\u043D\u0435 \u0432\u0456\u0434\u0435\u043E",
45644  "call.open_chat": "\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0447\u0430\u0442",
45645  "call.close_chat": "\u0417\u0430\u043A\u0440\u0438\u0442\u0438 \u0447\u0430\u0442",
45646  "call.leave_room": "\u0412\u0438\u0439\u0442\u0438 \u0437 \u043A\u0456\u043C\u043D\u0430\u0442\u0438",
45647  "call.confirm_leave": "\u0412\u0438\u0439\u0442\u0438?",
45648  "call.mic_on": "\u041C\u0456\u043A\u0440\u043E \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E",
45649  "call.muted_label": "\u0417\u0430\u043C'\u044E\u0447\u0435\u043D\u043E",
45650  "call.camera_off": "\u041A\u0430\u043C\u0435\u0440\u0430 \u0432\u0438\u043C\u043A\u043D\u0435\u043D\u0430",
45651  "call.connect_failed": "\u041D\u0435 \u0432\u0438\u0439\u0448\u043B\u043E \u043F\u0456\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u0438\u0441\u044F \u2014 \u0447\u0435\u043A\u043D\u0438 \u0456\u043D\u0435\u0442 \u0456 \u0441\u043F\u0440\u043E\u0431\u0443\u0439 \u0449\u0435 \u0440\u0430\u0437.",
45652  "call.camera_access_failed": "\u041D\u0435\u043C\u0430\u0454 \u0434\u043E\u0441\u0442\u0443\u043F\u0443 \u0434\u043E \u043A\u0430\u043C\u0435\u0440\u0438. \u0427\u0435\u043A\u043D\u0438 \u0434\u043E\u0437\u0432\u043E\u043B\u0438 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0456 \u0442\u0430 \u0441\u043F\u0440\u043E\u0431\u0443\u0439 \u0449\u0435.",
45653  "call.recording_failed": "\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u043F\u043E\u0447\u0430\u0442\u0438 \u0437\u0430\u043F\u0438\u0441. \u0414\u0437\u0432\u0456\u043D\u043E\u043A \u043F\u0440\u043E\u0434\u043E\u0432\u0436\u0438\u0442\u044C\u0441\u044F \u0431\u0435\u0437 \u043D\u044C\u043E\u0433\u043E.",
45654  "call.initialize_failed": "\u0429\u043E\u0441\u044C \u043F\u0456\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A \u043F\u0456\u0434 \u0447\u0430\u0441 \u0437\u0430\u043F\u0443\u0441\u043A\u0443. \u041E\u043D\u043E\u0432\u0438 \u0441\u0442\u043E\u0440\u0456\u043D\u043A\u0443 \u0456 \u0441\u043F\u0440\u043E\u0431\u0443\u0439 \u0449\u0435.",
45655  "call.participants": "\u0423\u0447\u0430\u0441\u043D\u0438\u043A\u0438",
45656  "call.open_participants": "\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0443\u0447\u0430\u0441\u043D\u0438\u043A\u0456\u0432",
45657  "call.close_participants": "\u0417\u0430\u043A\u0440\u0438\u0442\u0438 \u0443\u0447\u0430\u0441\u043D\u0438\u043A\u0456\u0432",
45658  "call.lock_room": "\u0417\u0430\u043A\u0440\u0438\u0442\u0438 \u043A\u0456\u043C\u043D\u0430\u0442\u0443",
45659  "call.unlock_room": "\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u043A\u0456\u043C\u043D\u0430\u0442\u0443",
45660  "call.locked": "\u0437\u0430\u043A\u0440\u0438\u0442\u0430",
45661  "call.unlocked": "\u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0430",
45662  "call.kick_member": "\u041A\u0456\u043A\u043D\u0443\u0442\u0438 \u0437 \u043A\u0456\u043C\u043D\u0430\u0442\u0438",
45663  "call.mute_member": "\u0417\u0430\u043C'\u044E\u0442\u0438\u0442\u0438",
45664  "call.unmute_member": "\u0420\u043E\u0437\u043C'\u044E\u0442\u0438\u0442\u0438",
45665  "call.muted_by_host": "\u0417\u0430\u043C'\u044E\u0447\u0435\u043D\u043E \u0445\u043E\u0441\u0442\u043E\u043C",
45666  "call.waiting_to_join": "\u0427\u0435\u043A\u0430\u044E\u0442\u044C \u043D\u0430 \u0432\u0445\u0456\u0434",
45667  "call.approve": "\u0412\u043F\u0443\u0441\u0442\u0438\u0442\u0438",
45668  "call.deny": "\u0412\u0456\u0434\u0445\u0438\u043B\u0438\u0442\u0438",
45669  "call.profile_actions": "\u0414\u0456\u0457 \u0437 \u043F\u0440\u043E\u0444\u0456\u043B\u0435\u043C",
45670  "call.profile_in_room": "\u0412 \u043A\u0456\u043C\u043D\u0430\u0442\u0456",
45671  "call.profile_role_host": "\u0425\u043E\u0441\u0442",
45672  "call.profile_role_you": "\u0422\u0438",
45673  "call.profile_action_mute": "\u0417\u0430\u043C'\u044E\u0442\u0438\u0442\u0438 \u0457\u0445",
45674  "call.profile_action_mute_meta": "\u0422\u0456\u043B\u044C\u043A\u0438 \u0434\u043B\u044F \u0442\u0435\u0431\u0435 \u2014 \u0432\u043E\u043D\u0438 \u043D\u0435 \u0434\u0456\u0437\u043D\u0430\u044E\u0442\u044C\u0441\u044F",
45675  "call.profile_action_dm": "DM",
45676  "call.profile_action_dm_meta": "\u041F\u043E\u0447\u0430\u0442\u0438 \u043F\u0440\u0438\u0432\u0430\u0442\u043D\u0438\u0439 \u0447\u0430\u0442",
45677  "call.profile_action_view": "\u0413\u043B\u044F\u043D\u0443\u0442\u0438 \u0444\u0443\u043B \u043F\u0440\u043E\u0444\u0456\u043B\u044C",
45678  "call.profile_action_view_meta": "\u0411\u0456\u043E, \u043C\u043E\u0432\u0438, \u043C\u0438\u043D\u0443\u043B\u0456 \u0441\u0435\u0441\u0456\u0457",
45679  "call.profile_action_report": "\u0420\u0435\u043F\u043E\u0440\u0442\u043D\u0443\u0442\u0438",
45680  "call.profile_action_report_meta": "\u0412\u0456\u0434\u043F\u0440\u0430\u0432\u0438\u0442\u0438 \u043C\u043E\u0434\u0435\u0440\u0430\u0442\u043E\u0440\u0430\u043C",
45681  "call.profile_sheet_close": "\u0417\u0430\u043A\u0440\u0438\u0442\u0438 \u0434\u0456\u0457 \u0437 \u043F\u0440\u043E\u0444\u0456\u043B\u0435\u043C",
45682  "call.profile_open_actions": "\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0434\u0456\u0457 \u0437 \u043F\u0440\u043E\u0444\u0456\u043B\u0435\u043C",
45683  "call.dm_title": "DM",
45684  "call.dm_back": "\u041D\u0430\u0437\u0430\u0434 \u0434\u043E \u0434\u0456\u0439",
45685  "call.dm_close": "\u0417\u0430\u043A\u0440\u0438\u0442\u0438 DM",
45686  "call.dm_status_online": "\u041E\u043D\u043B\u0430\u0439\u043D",
45687  "call.dm_in_room_with": "\u0423 \u0446\u0456\u0439 \u043A\u0456\u043C\u043D\u0430\u0442\u0456",
45688  "call.dm_private_label": "\u041F\u0440\u0438\u0432\u0430\u0442\u043D\u0438\u0439 \u0447\u0430\u0442",
45689  "call.dm_private_meta": "\u0426\u0456 \u043F\u043E\u0432\u0456\u0434\u043E\u043C\u043B\u0435\u043D\u043D\u044F \u0431\u0430\u0447\u0438\u0442\u0435 \u0442\u0456\u043B\u044C\u043A\u0438 \u0432\u0438 \u0434\u0432\u043E\u0454",
45690  "call.dm_input_placeholder": "\u041D\u0430\u043F\u0438\u0441\u0430\u0442\u0438 \u0432 \u043E\u0441\u043E\u0431\u0438\u0441\u0442\u0456\u2026",
45691  "call.dm_send": "\u041D\u0430\u0434\u0456\u0441\u043B\u0430\u0442\u0438",
45692  "call.dm_just_now": "\u0437\u0430\u0440\u0430\u0437",
45693  "call.dm_seen_just_now": "\u041F\u0440\u043E\u0447\u0438\u0442\u0430\u043D\u043E \u0449\u043E\u0439\u043D\u043E",
45694  "call.dm_typing": "{name} \u0434\u0440\u0443\u043A\u0443\u0454\u2026",
45695  "call.dm_minimize": "\u0417\u0433\u043E\u0440\u043D\u0443\u0442\u0438",
45696  "call.dm_active_indicator": "\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0447\u0430\u0442",
45697  "call.dm_unread_messages": "{count} \u043D\u0435\u043F\u0440\u043E\u0447\u0438\u0442\u0430\u043D\u0438\u0445",
45698  "call.dm_toast_tap_to_open": "\u0422\u0430\u043F\u043D\u0438, \u0449\u043E\u0431 \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438",
45699  "call.dm_reopen_aria": "\u0417\u043D\u043E\u0432\u0443 \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0447\u0430\u0442 \u0437 {name}",
45700  "home.join_denied": "\u0425\u043E\u0441\u0442 \u0442\u0435\u0431\u0435 \u043D\u0435 \u0432\u043F\u0443\u0441\u0442\u0438\u0432.",
45701  "home.error.room_not_found": "\u0422\u0430\u043A\u043E\u0433\u043E \u043A\u043E\u0434\u0443 \u043A\u0456\u043C\u043D\u0430\u0442\u0438 \u043D\u0435 \u0456\u0441\u043D\u0443\u0454.",
45702  "home.error.profile_required": "\u0417\u0430\u043F\u043E\u0432\u043D\u0438 \u043F\u0440\u043E\u0444\u0456\u043B\u044C, \u0449\u043E\u0431 \u043F\u0440\u043E\u0434\u043E\u0432\u0436\u0438\u0442\u0438.",
45703  "home.cta.set_up_profile": "\u0417\u0430\u043F\u043E\u0432\u043D\u0438\u0442\u0438 \u043F\u0440\u043E\u0444\u0456\u043B\u044C",
45704  "home.profile_trigger_new": "\u0422\u0430\u043F\u043D\u0438, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u0438 \u0456\u043D\u0444\u0443 \u043F\u0440\u043E \u0441\u0435\u0431\u0435",
45705  "home.profile_trigger_new_aria": "\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u043F\u0440\u043E\u0444\u0456\u043B\u044C",
45706  "home.profile_trigger_edit_aria": "\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043F\u0440\u043E\u0444\u0456\u043B\u044C",
45707  "profile.eyebrow_new": "\u043F\u0440\u0438\u0432\u0456\u0442\u0430\u0439\u0441\u044F",
45708  "profile.eyebrow_edit": "\u0442\u0432\u0456\u0439 \u043F\u0440\u043E\u0444\u0456\u043B\u044C",
45709  "profile.title_new": "\u0420\u043E\u0437\u043A\u0430\u0436\u0438 \u043F\u0440\u043E \u0441\u0435\u0431\u0435.",
45710  "profile.title_edit": "\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043F\u0440\u043E\u0444\u0456\u043B\u044C",
45711  "profile.subtitle": "\u0422\u0440\u043E\u0445\u0438 \u0456\u043D\u0444\u0438, \u0449\u043E\u0431 \u0456\u043D\u0448\u0456 \u0437\u043D\u0430\u043B\u0438, \u0437 \u043A\u0438\u043C \u0441\u043F\u0456\u043B\u043A\u0443\u044
45711E\u0442\u044C\u0441\u044F.",
45712  "profile.add_photo": "\u0414\u043E\u0434\u0430\u0442\u0438 \u0444\u043E\u0442\u043E",
45713  "profile.add_photo_soon": "\u0444\u043E\u0442\u043E \u0441\u043A\u043E\u0440\u043E \u0431\u0443\u0434\u0443\u0442\u044C",
45714  "profile.photo_empty": "\u0442\u0430\u043F\u043D\u0438, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u0438 \u0444\u043E\u0442\u043E",
45715  "profile.photo_ready": "\u0444\u043E\u0442\u043E \u0433\u043E\u0442\u043E\u0432\u0435",
45716  "profile.photo_save_first": "\u0437\u0431\u0435\u0440\u0435\u0436\u0438 \u043F\u0440\u043E\u0444\u0456\u043B\u044C \u043F\u0435\u0440\u0435\u0434 \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F\u043C \u0444\u043E\u0442\u043E",
45717  "profile.photo_crop_caption": "\u043A\u0430\u0434\u0440\u0443\u0439 \u0444\u043E\u0442\u043E",
45718  "profile.photo_auto_caption": "\u043F\u043E\u0441\u0443\u043D\u044C \u0456 \u043D\u0430\u0431\u043B\u0438\u0437\u044C, \u0430 \u043C\u0438 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043C\u043E \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E",
45719  "profile.photo_upload": "\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u0444\u043E\u0442\u043E",
45720  "profile.photo_replace": "\u0417\u0430\u043C\u0456\u043D\u0438\u0442\u0438 \u0444\u043E\u0442\u043E",
45721  "profile.photo_remove": "\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0444\u043E\u0442\u043E",
45722  "profile.photo_cancel": "\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438",
45723  "profile.photo_save": "\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u0444\u043E\u0442\u043E",
45724  "profile.photo_uploading": "\u0412\u0430\u043D\u0442\u0430\u0436\u0438\u043C\u043E \u0444\u043E\u0442\u043E\u2026",
45725  "profile.photo_removing": "\u0412\u0438\u0434\u0430\u043B\u044F\u0454\u043C\u043E \u0444\u043E\u0442\u043E\u2026",
45726  "profile.photo_choose_another": "\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u0456\u043D\u0448\u0435",
45727  "profile.photo_drag_hint": "\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0438 \u0444\u043E\u0442\u043E \u0432 \u043A\u043E\u043B\u043E. \u0417\u043C\u0456\u043D\u0438 \u0437\u0431\u0435\u0440\u0435\u0436\u0443\u0442\u044C\u0441\u044F \u0441\u0430\u043C\u0456.",
45728  "profile.photo_zoom": "\u0417\u0443\u043C",
45729  "profile.photo_horizontal": "\u041F\u043E \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u0456",
45730  "profile.photo_vertical": "\u041F\u043E \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u0456",
45731  "profile.name_label": "\u0406\u043C'\u044F",
45732  "profile.name_placeholder": "\u042F\u043A \u0434\u043E \u0442\u0435\u0431\u0435 \u0437\u0432\u0435\u0440\u0442\u0430\u0442\u0438\u0441\u044F?",
45733  "profile.gender_label": "\u042F",
45734  "profile.gender.woman": "\u0416\u0456\u043D\u043A\u0430",
45735  "profile.gender.man": "\u0427\u043E\u043B\u043E\u0432\u0456\u043A",
45736  "profile.gender.unspecified": "\u041D\u0435 \u0445\u043E\u0447\u0443 \u043A\u0430\u0437\u0430\u0442\u0438",
45737  "profile.bio_label": "\u0411\u0456\u043E",
45738  "profile.bio_optional": "\u043E\u043F\u0446\u0456\u043E\u043D\u0430\u043B\u044C\u043D\u043E",
45739  "profile.bio_placeholder": "\u041C\u043E\u0432\u0438, \u044F\u043A\u0456 \u0437\u043D\u0430\u0454\u0448, \u0449\u043E \u043B\u044E\u0431\u0438\u0448, \u0431\u0443\u0434\u044C-\u0449\u043E\u2026",
45740  "profile.cta_new": "\u041F\u043E\u0433\u043D\u0430\u043B\u0438",
45741  "profile.cta_edit": "\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u0437\u043C\u0456\u043D\u0438",
45742  "profile.saving": "\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0454\u043C\u043E\u2026",
45743  "profile.close": "\u0417\u0430\u043A\u0440\u0438\u0442\u0438",
45744  "profile.error.save_failed": "\u041D\u0435 \u0432\u0438\u0439\u0448\u043B\u043E \u0437\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u043F\u0440\u043E\u0444\u0456\u043B\u044C. \u0421\u043F\u0440\u043E\u0431\u0443\u0439 \u0449\u0435.",
45745  "profile.error.avatar_invalid_type": "\u0412\u0438\u0431\u0435\u0440\u0438 \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0443 \u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0456 PNG, JPEG, GIF \u0430\u0431\u043E WebP.",
45746  "profile.error.avatar_too_large": "\u0412\u0438\u0431\u0435\u0440\u0438 \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0443 \u0434\u043E 5 \u041C\u0411.",
45747  "profile.error.avatar_too_small": "\u0412\u0438\u0431\u0435\u0440\u0438 \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0443 \u0445\u043E\u0447\u0430 \u0431 96 \u043D\u0430 96 \u043F\u0456\u043A\u0441\u0435\u043B\u0456\u0432.",
45748  "profile.error.avatar_load_failed": "\u041D\u0435 \u0437\u043C\u043E\u0433\u043B\u0438 \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u0442\u0438 \u0446\u044E \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0443. \u0421\u043F\u0440\u043E\u0431\u0443\u0439 \u0456\u043D\u0448\u0438\u0439 \u0444\u0430\u0439\u043B.",
45749  "profile.error.avatar_failed": "\u041D\u0435 \u0432\u0438\u0439\u0448\u043B\u043E \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u0444\u043E\u0442\u043E. \u0421\u043F\u0440\u043E\u0431\u0443\u0439 \u0449\u0435.",
45750  "profile.error.avatar_remove_failed": "\u041D\u0435 \u0432\u0438\u0439\u0448\u043B\u043E \u0432\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0444\u043E\u0442\u043E. \u0421\u043F\u0440\u043E\u0431\u0443\u0439 \u0449\u0435.",
45751  "effects.title": "\u0415\u0444\u0435\u043A\u0442\u0438",
45752  "effects.soft": "\u041C'\u044F\u043A\u0438\u0439 \u0444\u043E\u043A\u0443\u0441",
45753  "effects.vignette": "\u0412\u0456\u043D\u044C\u0454\u0442\u043A\u0430",
45754  "effects.face": "\u0411\u043B\u044E\u0440 \u043E\u0431\u043B\u0438\u0447\u0447\u044F",
45755  "effects.face_preview_only": "\u0411\u043B\u044E\u0440 \u043E\u0431\u043B\u0438\u0447\u0447\u044F (\u0442\u0456\u043B\u044C\u043A\u0438 \u043F\u0440\u0435\u0432'\u044E)",
45756  "effects.face_viewer_side": "\u0411\u043B\u044E\u0440 \u043E\u0431\u043B\u0438\u0447\u0447\u044F (\u0434\u043B\u044F \u0433\u043B\u044F\u0434\u0430\u0447\u0456\u0432)",
45757  "effects.face_strength": "\u0421\u0438\u043B\u0430 \u0431\u043B\u044E\u0440\u0443",
45758  "effects.grade.off": "\u0412\u0418\u041C\u041A",
45759  "effects.grade.pop": "POP",
45760  "effects.grade.warm": "\u0422\u0415\u041F\u041B\u041E",
45761  "effects.grade.cool": "\u0425\u041E\u041B\u041E\u0414",
45762  "effects.grade.bw": "\u0427\u0411",
45763  "camera.off": "\u043A\u0430\u043C\u0435\u0440\u0430 \u0432\u0438\u043C\u043A\u043D\u0435\u043D\u0430",
45764  "camera.check": "\u0447\u0435\u043A\u043D\u0438 \u043A\u0430\u043C\u0435\u0440\u0443",
45765  "camera.retry": "\u0441\u043F\u0440\u043E\u0431\u0443\u0439 \u0449\u0435 \u0440\u0430\u0437",
45766  "camera.ready": "\u043A\u0430\u043C\u0435\u0440\u0430 \u0433\u043E\u0442\u043E\u0432\u0430",
45767  "camera.idle.title": "\u0423\u0432\u0456\u043C\u043A\u043D\u0438 \u043A\u0430\u043C\u0435\u0440\u0443",
45768  "camera.idle.hint": "\u041C\u0438 \u0437\u0430\u043F\u0438\u0442\u0430\u0454\u043C\u043E \u0434\u043E\u0437\u0432\u0456\u043B \u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u043A\u043E\u043B\u0438 \u0431\u0443\u0434\u0435\u0448 \u0433\u043E\u0442\u043E\u0432\u0438\u0439.",
45769  "camera.idle.button": "\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u0430\u043C\u0435\u0440\u0443",
45770  "camera.status.idle": "\u0427\u0435\u043A\u0430\u0454\u043C\u043E \u043D\u0430 \u0442\u0435\u0431\u0435",
45771  "camera.status.off": "\u041A\u0430\u043C\u0435\u0440\u0430 \u0432\u0438\u043C\u043A\u043D\u0435\u043D\u0430",
45772  "camera.status.loading": "\u041F\u0440\u043E\u0441\u0438\u043C\u043E \u0434\u043E\u0441\u0442\u0443\u043F \u0434\u043E \u043A\u0430\u043C\u0435\u0440\u0438...",
45773  "camera.status.denied": "\u0414\u0430\u0439 \u0434\u043E\u0441\u0442\u0443\u043F \u0434\u043E \u043A\u0430\u043C\u0435\u0440\u0438 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0456 \u0456 \u0441\u043F\u0440\u043E\u0431\u0443\u0439 \u0449\u0435.",
45774  "camera.status.error": "\u041D\u0435 \u0432\u0438\u0439\u0448\u043B\u043E \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0438 \u043F\u0440\u0435\u0432'\u044E \u043A\u0430\u043C\u0435\u0440\u0438. \u
457740421\u043F\u0440\u043E\u0431\u0443\u0439 \u0449\u0435.",
45775  "camera.status.unsupported": "\u0426\u0435\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043D\u0435 \u043F\u0456\u0434\u0442\u0440\u0438\u043C\u0443\u0454 \u0434\u043E\u0441\u0442\u0443\u043F \u0434\u043E \u043A\u0430\u043C\u0435\u0440\u0438.",
45776  "camera.status.insecure": "\u0414\u043B\u044F \u043A\u0430\u043C\u0435\u0440\u0438 \u043F\u043E\u0442\u0440\u0456\u0431\u0435\u043D HTTPS \u0430\u0431\u043E localhost.",
45777  "camera.status.attach_failed": "\u041F\u0440\u0435\u0432'\u044E \u043A\u0430\u043C\u0435\u0440\u0438 \u043D\u0435 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u043B\u043E\u0441\u044F. \u0421\u043F\u0440\u043E\u0431\u0443\u0439 \u0449\u0435.",
45778  "camera.guest_name_placeholder": "\u0406\u043C'\u044F \u0433\u043E\u0441\u0442\u044F",
45779  "camera.flip": "\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u0430\u043C\u0435\u0440\u0443",
45780  "camera.save_name": "\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438",
45781  "camera.edit_name": "\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0456\u043C'\u044F",
45782  "mic.on": "\u0412\u0438\u043C\u043A\u043D\u0443\u0442\u0438 \u043C\u0456\u043A\u0440\u043E",
45783  "mic.off": "\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043C\u0456\u043A\u0440\u043E",
45784  "video.on": "\u0412\u0438\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u0430\u043C\u0435\u0440\u0443",
45785  "video.off": "\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u0430\u043C\u0435\u0440\u0443",
45786  "chat.title": "\u0447\u0430\u0442",
45787  "chat.close": "\u0417\u0430\u043A\u0440\u0438\u0442\u0438 \u0447\u0430\u0442",
45788  "chat.loading": "\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u043C\u043E...",
45789  "chat.load_earlier": "\u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u0441\u0442\u0430\u0440\u0456\u0448\u0456",
45790  "chat.empty": "\u043F\u043E\u043A\u0438 \u043D\u0435\u043C\u0430\u0454 \u043F\u043E\u0432\u0456\u0434\u043E\u043C\u043B\u0435\u043D\u044C",
45791  "chat.send_error": "\u041F\u043E\u0432\u0456\u0434\u043E\u043C\u043B\u0435\u043D\u043D\u044F \u043D\u0435 \u043D\u0430\u0434\u0456\u0441\u043B\u0430\u043B\u043E\u0441\u044F \u2014 \u0441\u043F\u0440\u043E\u0431\u0443\u0439 \u0449\u0435.",
45792  "chat.input_placeholder": "\u043D\u0430\u043F\u0438\u0448\u0438 \u0449\u043E\u0441\u044C...",
45793  "room.host": "\u0425\u043E\u0441\u0442",
45794  "app.room_default_title": "\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043A\u0456\u043C\u043D\u0430\u0442\u0443",
45795  "app.chat_connection_rejected": "\u0427\u0430\u0442 \u043D\u0435 \u043F\u0456\u0434\u043A\u043B\u044E\u0447\u0438\u0432\u0441\u044F \u2014 \u0441\u043F\u0440\u043E\u0431\u0443\u0439 \u043E\u043D\u043E\u0432\u0438\u0442\u0438 \u0441\u0442\u043E\u0440\u0456\u043D\u043A\u0443.",
45796  "app.copy_failed": "\u041D\u0435 \u0432\u0438\u0439\u0448\u043B\u043E \u0441\u043A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u043B\u0456\u043D\u043A. \u0421\u043F\u0440\u043E\u0431\u0443\u0439 \u0432\u0438\u0434\u0456\u043B\u0438\u0442\u0438 \u0456 \u0441\u043A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0432\u0440\u0443\u0447\u043D\u0443.",
45797  "app.chat_not_connected": "\u0427\u0430\u0442 \u0449\u0435 \u043D\u0435 \u043F\u0456\u0434\u043A\u043B\u044E\u0447\u0438\u0432\u0441\u044F. \u041F\u043E\u0447\u0435\u043A\u0430\u0439 \u0441\u0435\u043A\u0443\u043D\u0434\u0443 \u0456 \u0441\u043F\u0440\u043E\u0431\u0443\u0439 \u0449\u0435.",
45798  "footer.terms": "\u0423\u043C\u043E\u0432\u0438 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F",
45799  "footer.copyright": "\xA9 2026 Yano.AI"
45800};
45801
45802// app/javascript/yano/locales/vi.js
45803var vi_default = {
45804  "home.heading.default": "v\xE0o call th\xF4i",
45805  "home.heading.loading": "\u0110ang m\u1EDF ph\xF2ng...",
45806  "home.heading.join": "s\u1EB5n s\xE0ng v\xF4 ch\u01B0a?",
45807  "home.heading.joined": "v\xF4 r\u1ED3i n\xE8",
45808  "home.heading.pending": "\u0111ang \u0111\u1EE3i host",
45809  "home.body.default": "t\u1EA1o ph\xF2ng, qu\u0103ng link, chill th\xF4i.",
45810  "home.body.loading": "ch\u1EDD x\xEDu, \u0111ang chu\u1EA9n b\u1ECB ph\xF2ng.",
45811  "home.body.join": "check cam v\u1EDBi mic r\u1ED3i nh\u1EA3y v\xF4 lu\xF4n.",
45812  "home.body.joined": "ph\xF2ng m\u1EDF r\u1ED3i. share link ho\u1EB7c v\xF4 lu\xF4n.",
45813  "home.body.joined_in_room": "\u0111ang trong ph\xF2ng \u2014 nh\u1EA3y v\xF4 ho\u1EB7c share link.",
45814  "home.body.pending": "ph\xF2ng \u0111ang kh\xF3a. \u0111\u1EE3i host duy\u1EC7t nha.",
45815  "home.cta.create": "T\u1EA1o ph\xF2ng",
45816  "home.cta.join": "V\xE0o ph\xF2ng",
45817  "home.cta.enter": "V\xF4 ph\xF2ng",
45818  "home.cta.creating": "\u0110ang t\u1EA1o...",
45819  "home.cta.joining": "\u0110ang v\xE0o...",
45820  "home.cta.opening": "\u0110ang m\u1EDF...",
45821  "home.cta.pending": "\u0110ang ch\u1EDD duy\u1EC7t...",
45822  "home.copy_link": "copy link",
45823  "home.copied": "\u0111\xE3 copy!",
45824  "home.leave": "r\u1EDDi ph\xF2ng",
45825  "home.back": "quay l\u1EA1i",
45826  "home.no_participants": "ch\u01B0a c\xF3 ai \u1EDF \u0111\xE2y",
45827  "home.join_by_code": "v\xE0o b\u1EB1ng m\xE3 m\u1EDDi",
45828  "home.code_placeholder": "nh\u1EADp m\xE3",
45829  "home.name_placeholder": "t\xEAn b\u1EA1n",
45830  "home.people_one": "ng\u01B0\u1EDDi",
45831  "home.people_other": "ng\u01B0\u1EDDi",
45832  "home.marketing.invite.title": "T\u1EA1o ph\xF2ng,\nshare link.",
45833  "home.marketing.invite.body": "Ch\u1EA1m l\xE0 b\u1EAFt \u0111\u1EA7u. G\u1EEDi link cho b\u1EA1n b\xE8 v\xE0 ai c\u0169ng v\xF4 \u0111\u01B0\u1EE3c \u2014 kh\xF4ng c\u1EA7n t\u1EA3i, kh\u1ECFi c\u1EA7n \u0111\u0103ng k\xFD.",
45834  "home.marketing.invite.preview_url": "yano.ai/ROOM",
45835  "home.marketing.look.title": "L\xEAn h\xECnh\nnh\u01B0 \xFD.",
45836  "home.marketing.look.body": "Ch\u1EC9nh m\xE0u, l\xE0m m\u1ECBn, t\u1ED1i g\xF3c \u2014 ho\u1EB7c l\xE0m m\u1EDD m\u1EB7t lu\xF4n c\u0169ng \u0111\u01B0\u1EE3c. Cam c\u1EE7a b\u1EA1n, style c\u1EE7a b\u1EA1n.",
45837  "home.marketing.host.title": "S\xE2n ch\u01A1i c\u1EE7a b\u1EA1n,\nlu\u1EADt c\u1EE7a b\u1EA1n.",
45838  "home.marketing.host.body": "Kh\xF3a ph\xF2ng, t\u1EAFt mic ai \u0111\xF3, ho\u1EB7c kick lu\xF4n. Host n\u1EAFm to\xE0n quy\u1EC1n.",
45839  "home.marketing.host.locked": "Ph\xF2ng \u0111\xE3 kh\xF3a",
45840  "home.marketing.host.waiting_to_join": "\u0110ang ch\u1EDD v\xE0o",
45841  "home.marketing.host.wants_to_join": "mu\u1ED1n v\xE0o ph\xF2ng",
45842  "home.marketing.anything.title": "L\xE0m g\xEC c\u0169ng h\u1EE3p.",
45843  "home.marketing.anything.body": "H\u1ECDc nh\xF3m, c\xE0y game, h\u1ECDp h\xE0nh, xem phim chung \u2014 hay \u0111\u01A1n gi\u1EA3n l\xE0 ng\u1ED3i chill.",
45844  "home.marketing.use_case.study_group": "\u{1F4DA} h\u1ECDc nh\xF3m",
45845  "home.marketing.use_case.game_night": "\u{1F3AE} c\xE0y game",
45846  "home.marketing.use_case.standup": "\u{1F4BC} h\u1ECDp nhanh",
45847  "home.marketing.use_case.watch_party": "\u{1F37F} xem chung",
45848  "home.marketing.use_case.catch_up": "\u2615 t\xE1m chuy\u1EC7n",
45849  "home.marketing.use_case.jam_session": "\u{1F3B8} ch\u01A1i nh\u1EA1c",
45850  "home.marketing.use_case.book_club": "\u{1F4D6}
45850 h\u1ED9i \u0111\u1ECDc s\xE1ch",
45851  "home.marketing.use_case.coworking": "\u{1F4BB} l\xE0m vi\u1EC7c chung",
45852  "ended.heading": "cu\u1ED9c g\u1ECDi k\u1EBFt th\xFAc",
45853  "ended.left": "b\u1EA1n \u0111\xE3 r\u1EDDi ph\xF2ng.",
45854  "ended.room_ended": "{title} \u0111\xE3 k\u1EBFt th\xFAc v\u1EDBi b\u1EA1n.",
45855  "ended.rejoin": "v\xE0o l\u1EA1i",
45856  "ended.rejoining": "\u0111ang v\xE0o l\u1EA1i...",
45857  "ended.home": "v\u1EC1 trang ch\u1EE7",
45858  "call.connecting": "\u0111ang k\u1EBFt n\u1ED1i",
45859  "call.waiting": "\u0111ang \u0111\u1EE3i m\u1ECDi ng\u01B0\u1EDDi",
45860  "call.invite_code": "m\xE3 m\u1EDDi",
45861  "call.audio_on": "\u0111ang b\u1EADt \xE2m thanh",
45862  "call.muted": "\u0111\xE3 t\u1EAFt mic",
45863  "call.listening": "\u0110ang nghe",
45864  "call.audio_muted": "\u0110\xE3 t\u1EAFt \xE2m",
45865  "call.speaking": "\u0111ang n\xF3i",
45866  "call.you": "b\u1EA1n",
45867  "call.you_label": "B\u1EA1n",
45868  "call.you_suffix": "(b\u1EA1n)",
45869  "call.chat_placeholder": "nh\u1EAFn g\xEC \u0111i...",
45870  "call.guest": "kh\xE1ch",
45871  "call.room_fallback": "ph\xF2ng",
45872  "call.focus_view": "Ch\u1EBF \u0111\u1ED9 t\u1EADp trung",
45873  "call.grid_view": "Ch\u1EBF \u0111\u1ED9 l\u01B0\u1EDBi",
45874  "call.swap_main_video": "\u0110\u1ED5i video ch\xEDnh",
45875  "call.open_chat": "M\u1EDF chat",
45876  "call.close_chat": "\u0110\xF3ng chat",
45877  "call.leave_room": "R\u1EDDi ph\xF2ng",
45878  "call.confirm_leave": "R\u1EDDi \u0111i?",
45879  "call.mic_on": "\u0110ang b\u1EADt mic",
45880  "call.muted_label": "\u0110\xE3 t\u1EAFt mic",
45881  "call.camera_off": "\u0110\xE3 t\u1EAFt cam",
45882  "call.connect_failed": "L\u1ED7i k\u1EBFt n\u1ED1i \u2014 check l\u1EA1i m\u1EA1ng r\u1ED3i th\u1EED l\u1EA1i nha.",
45883  "call.camera_access_failed": "Kh\xF4ng m\u1EDF \u0111\u01B0\u1EE3c cam. Check l\u1EA1i quy\u1EC1n tr\xEAn tr\xECnh duy\u1EC7t r\u1ED3i th\u1EED l\u1EA1i nha.",
45884  "call.recording_failed": "Kh\xF4ng th\u1EC3 b\u1EAFt \u0111\u1EA7u ghi h\xECnh. Cu\u1ED9c g\u1ECDi v\u1EABn s\u1EBD ti\u1EBFp t\u1EE5c.",
45885  "call.initialize_failed": "C\xF3 l\u1ED7i khi b\u1EAFt \u0111\u1EA7u cu\u1ED9c g\u1ECDi. F5 l\u1EA1i trang nha.",
45886  "call.participants": "Ng\u01B0\u1EDDi tham gia",
45887  "call.open_participants": "M\u1EDF danh s\xE1ch",
45888  "call.close_participants": "\u0110\xF3ng danh s\xE1ch",
45889  "call.lock_room": "Kh\xF3a ph\xF2ng",
45890  "call.unlock_room": "M\u1EDF kh\xF3a ph\xF2ng",
45891  "call.locked": "\u0111\xE3 kh\xF3a",
45892  "call.unlocked": "\u0111ang m\u1EDF",
45893  "call.kick_member": "Kick kh\u1ECFi ph\xF2ng",
45894  "call.mute_member": "T\u1EAFt mic",
45895  "call.unmute_member": "M\u1EDF mic",
45896  "call.muted_by_host": "B\u1ECB host t\u1EAFt mic",
45897  "call.waiting_to_join": "\u0110ang ch\u1EDD v\xE0o",
45898  "call.approve": "Duy\u1EC7t",
45899  "call.deny": "T\u1EEB ch\u1ED1i",
45900  "call.profile_actions": "T\xF9y ch\u1ECDn profile",
45901  "call.profile_in_room": "Trong ph\xF2ng",
45902  "call.profile_role_host": "Host",
45903  "call.profile_role_you": "B\u1EA1n",
45904  "call.profile_action_mute": "T\u1EAFt \xE2m ng\u01B0\u1EDDi n\xE0y",
45905  "call.profile_action_mute_meta": "Ch\u1EC9 m\xECnh b\u1EA1n nghe \u2014 h\u1ECD s\u1EBD kh\xF4ng bi\u1EBFt \u0111\xE2u",
45906  "call.profile_action_dm": "Nh\u1EAFn tin ri\xEAng",
45907  "call.profile_action_dm_meta": "M\u1EDF chat ri\xEAng t\u01B0",
45908  "call.profile_action_view": "Xem full profile",
45909  "call.profile_action_view_meta": "Bio, ng\xF4n ng\u1EEF, c\xE1c phi\xEAn tr\u01B0\u1EDBc",
45910  "call.profile_action_report": "B\xE1o c\xE1o",
45911  "call.profile_action_report_meta": "\u0110\xE1nh d\u1EA5u \u0111\u1EC3 admin xem x\xE9t",
45912  "call.profile_sheet_close": "\u0110\xF3ng t\xF9y ch\u1ECDn",
45913  "call.profile_open_actions": "M\u1EDF t\xF9y ch\u1ECDn",
45914  "call.dm_title": "Tin nh\u1EAFn ri\xEAng",
45915  "call.dm_back": "Quay l\u1EA1i",
45916  "call.dm_close": "\u0110\xF3ng tin nh\u1EAFn",
45917  "call.dm_status_online": "Online",
45918  "call.dm_in_room_with": "\u0110ang trong ph\xF2ng",
45919  "call.dm_private_label": "Chat ri\xEAng",
45920  "call.dm_private_meta": "Ch\u1EC9 hai ng\u01B0\u1EDDi m\u1EDBi th\u1EA5y tin nh\u1EAFn n\xE0y",
45921  "call.dm_input_placeholder": "Nh\u1EAFn tin ri\xEAng\u2026",
45922  "call.dm_send": "G\u1EEDi",
45923  "call.dm_just_now": "v\u1EEBa xong",
45924  "call.dm_seen_just_now": "V\u1EEBa xem",
45925  "call.dm_typing": "{name} \u0111ang g\xF5\u2026",
45926  "call.dm_minimize": "Thu nh\u1ECF",
45927  "call.dm_active_indicator": "M\u1EDF cu\u1ED9c tr\xF2 chuy\u1EC7n",
45928  "call.dm_unread_messages": "{count} tin ch\u01B0a \u0111\u1ECDc",
45929  "call.dm_toast_tap_to_open": "Ch\u1EA1m \u0111\u1EC3 m\u1EDF",
45930  "call.dm_reopen_aria": "M\u1EDF l\u1EA1i chat v\u1EDBi {name}",
45931  "home.join_denied": "Host kh\xF4ng cho b\u1EA1n v\xF4.",
45932  "home.error.room_not_found": "M\xE3 ph\xF2ng n\xE0y kh\xF4ng t\u1ED3n t\u1EA1i.",
45933  "home.error.profile_required": "C\xE0i \u0111\u1EB7t profile \u0111\u1EC3 ti\u1EBFp t\u1EE5c 
45933nha.",
45934  "home.cta.set_up_profile": "C\xE0i \u0111\u1EB7t profile",
45935  "home.profile_trigger_new": "Ch\u1EA1m \u0111\u1EC3 th\xEAm th\xF4ng tin",
45936  "home.profile_trigger_new_aria": "C\xE0i \u0111\u1EB7t profile",
45937  "home.profile_trigger_edit_aria": "S\u1EEDa profile",
45938  "profile.eyebrow_new": "say hi",
45939  "profile.eyebrow_edit": "profile c\u1EE7a b\u1EA1n",
45940  "profile.title_new": "T\u1EA1o n\xE9t ri\xEAng.",
45941  "profile.title_edit": "S\u1EEDa profile",
45942  "profile.subtitle": "V\xE0i th\xF4ng tin c\u01A1 b\u1EA3n \u0111\u1EC3 m\u1ECDi ng\u01B0\u1EDDi bi\u1EBFt b\u1EA1n l\xE0 ai n\xE8.",
45943  "profile.add_photo": "Th\xEAm \u1EA3nh",
45944  "profile.add_photo_soon": "s\u1EAFp c\xF3 t\xEDnh n\u0103ng \u1EA3nh",
45945  "profile.photo_empty": "ch\u1EA1m \u0111\u1EC3 th\xEAm \u1EA3nh",
45946  "profile.photo_ready": "\u1EA3nh \u0111\xE3 s\u1EB5n s\xE0ng",
45947  "profile.photo_save_first": "l\u01B0u profile tr\u01B0\u1EDBc khi t\u1EA3i \u1EA3nh l\xEAn nha",
45948  "profile.photo_crop_caption": "c\u0103n ch\u1EC9nh \u1EA3nh",
45949  "profile.photo_auto_caption": "k\xE9o v\xE0 zoom, h\u1EC7 th\u1ED1ng s\u1EBD t\u1EF1 l\u01B0u",
45950  "profile.photo_upload": "T\u1EA3i \u1EA3nh l\xEAn",
45951  "profile.photo_replace": "\u0110\u1ED5i \u1EA3nh",
45952  "profile.photo_remove": "X\xF3a \u1EA3nh",
45953  "profile.photo_cancel": "H\u1EE7y",
45954  "profile.photo_save": "L\u01B0u \u1EA3nh",
45955  "profile.photo_uploading": "\u0110ang t\u1EA3i \u1EA3nh\u2026",
45956  "profile.photo_removing": "\u0110ang x\xF3a \u1EA3nh\u2026",
45957  "profile.photo_choose_another": "Ch\u1ECDn \u1EA3nh kh\xE1c",
45958  "profile.photo_drag_hint": "K\xE9o \u1EA3nh v\xE0o trong v\xF2ng tr\xF2n. S\u1EBD t\u1EF1 \u0111\u1ED9ng l\u01B0u nha.",
45959  "profile.photo_zoom": "Ph\xF3ng to",
45960  "profile.photo_horizontal": "C\u1EAFt ngang",
45961  "profile.photo_vertical": "C\u1EAFt d\u1ECDc",
45962  "profile.name_label": "T\xEAn",
45963  "profile.name_placeholder": "M\u1ECDi ng\u01B0\u1EDDi n\xEAn g\u1ECDi b\u1EA1n l\xE0 g\xEC?",
45964  "profile.gender_label": "Gi\u1EDBi t\xEDnh",
45965  "profile.gender.woman": "N\u1EEF",
45966  "profile.gender.man": "Nam",
45967  "profile.gender.unspecified": "Kh\xF4ng mu\u1ED1n ti\u1EBFt l\u1ED9",
45968  "profile.bio_label": "Gi\u1EDBi thi\u1EC7u",
45969  "profile.bio_optional": "kh\xF4ng b\u1EAFt bu\u1ED9c",
45970  "profile.bio_placeholder": "Ng\xF4n ng\u1EEF b\u1EA1n bi\u1EBFt, s\u1EDF th\xEDch, hay b\u1EA5t c\u1EE9 th\u1EE9 g\xEC\u2026",
45971  "profile.cta_new": "L\xEAn lu\xF4n",
45972  "profile.cta_edit": "L\u01B0u thay \u0111\u1ED5i",
45973  "profile.saving": "\u0110ang l\u01B0u\u2026",
45974  "profile.close": "\u0110\xF3ng",
45975  "profile.error.save_failed": "Kh\xF4ng l\u01B0u \u0111\u01B0\u1EE3c profile. Th\u1EED l\u1EA1i nha.",
45976  "profile.error.avatar_invalid_type": "Ch\u1ECDn \u1EA3nh \u0111\u1ECBnh d\u1EA1ng PNG, JPEG, GIF, ho\u1EB7c WebP nha.",
45977  "profile.error.avatar_too_large": "Ch\u1ECDn \u1EA3nh nh\u1ECF h\u01A1n 5MB th\xF4i.",
45978  "profile.error.avatar_too_small": "Ch\u1ECDn \u1EA3nh \xEDt nh\u1EA5t l\xE0 96x96 pixel nha.",
45979  "profile.error.avatar_load_failed": "Kh\xF4ng \u0111\u1ECDc \u0111\u01B0\u1EE3c \u1EA3nh n\xE0y. Th\u1EED file kh\xE1c xem.",
45980  "profile.error.avatar_failed": "Kh\xF4ng t\u1EA3i \u1EA3nh l\xEAn \u0111\u01B0\u1EE3c. Th\u1EED l\u1EA1i nha.",
45981  "profile.error.avatar_remove_failed": "Kh\xF4ng x\xF3a \u1EA3nh \u0111\u01B0\u1EE3c. Th\u1EED l\u1EA1i nha.",
45982  "effects.title": "Hi\u1EC7u \u1EE9ng",
45983  "effects.soft": "L\xE0m m\u1ECBn",
45984  "effects.vignette": "T\u1ED1i g\xF3c",
45985  "effects.face": "Che m\u1EB7t",
45986  "effects.face_preview_only": "Che m\u1EB7t (ch\u1EC9 xem tr\u01B0\u1EDBc)",
45987  "effects.face_viewer_side": "Che m\u1EB7t (ph\xEDa ng\u01B0\u1EDDi xem)",
45988  "effects.face_strength": "M\u1EE9c \u0111\u1ED9 che m\u1EB7t",
45989  "effects.grade.off": "T\u1EAET",
45990  "effects.grade.pop": "N\u1ED4I B\u1EACT",
45991  "effects.grade.warm": "\u1EA4M",
45992  "effects.grade.cool": "L\u1EA0NH",
45993  "effects.grade.bw": "TR\u1EAENG \u0110EN",
45994  "camera.off": "cam \u0111ang t\u1EAFt",
45995  "camera.check": "check cam x\xEDu",
45996  "camera.retry": "th\u1EED l\u1EA1i cam",
45997  "camera.ready": "cam \u0111\xE3 s\u1EB5n s\xE0ng",
45998  "camera.idle.title": "B\u1EADt cam l\xEAn n\xE0o",
45999  "camera.idle.hint": "B\u1ECDn m\xECnh s\u1EBD xin quy\u1EC1n truy c\u1EADp tr\xECnh duy\u1EC7t khi b\u1EA1n s\u1EB5n s\xE0ng.",
46000  "camera.idle.button": "B\u1EADt cam",
46001  "camera.status.idle": "\u0110ang \u0111\u1EE3i b\u1EA1n",
46002  "camera.status.off": "Cam \u0111ang t\u1EAFt",
46003  "camera.status.loading": "\u0110ang xin quy\u1EC1n m\u1EDF cam...",
46004  "camera.status.denied": "C\u1EA5p quy\u1EC1n m\u1EDF cam tr\xEAn tr\xECnh duy\u1EC7t r\u1ED3i th\u1EED l\u1EA1i nha.",
46005  "camera.status.error": "L\u1ED7i xem tr\u01B0\u1EDBc cam. Th\u1EED l\u1EA1i nha.",
46006  "camera.status.unsupported": "Tr\xECnh duy\u1EC7t n\xE0y kh\xF4ng h\u1ED7 tr\u1EE3 m\u1EDF cam.",
46007  "camera.status.insecure": "M\u1EDF cam c\u1EA7n c\xF3 HTTPS ho\u1EB7c localhost.",
46008  "camera.status.attach_failed": "Kh\xF4ng th\u1EC3 b\u1EAFt \u0111\u1EA7u xem tr\u01B0\u1EDBc cam. Th\u1EED l\u1EA1i nha.",
46009  "camera.guest_name_placeholder": "T\xEAn kh\xE1ch",
46010  "camera.flip": "\u0110\u1ED5i cam",
46011  "camera.save_name": "L\u01B0u",
46012  "camera.edit_name": "S\u1EEDa t\xEAn",
46013  "mic.on": "T\u1EAFt mic",
46014  "mic.off": "B\u1EADt mic",
46015  "video.on": "T\u1EAFt cam",
46016  "video.off": "B\u1EADt cam",
46017  "chat.title": "chat",
46018  "chat.close": "\u0110\xF3ng chat",
46019  "chat.loading": "\u0111ang t\u1EA3i...",
46020  "chat.load_earlier": "t\u1EA3i tin c\u0169 h\u01A1n",
46021  "chat.empty": "ch\u01B0a c\xF3 tin nh\u1EAFn n\xE0o",
46022  "chat.send_error": "Ch\u01B0a g\u1EEDi \u0111\u01B0\u1EE3c tin nh\u1EAFn \u2014 th\u1EED l\u1EA1i nha.",
46023  "chat.input_placeholder": "nh\u1EADp tin nh\u1EAFn...",
46024  "room.host": "Host",
46025  "app.room_default_title": "T\u1EA1o ph\xF2ng",
46026  "app.chat_connection_rejected": "Kh\xF4ng k\u1EBFt n\u1ED1i \u0111\u01B0\u1EE3c chat \u2014 th\u1EED F5 l\u1EA1i nha.",
46027  "app.copy_failed": "Kh\xF4ng copy \u0111\u01B0\u1EE3c link. Th\u1EED b\xF4i \u0111en r\u1ED3i copy th\u1EE7 c\xF4ng nha.",
46028  "app.chat_not_connected": "Chat ch\u01B0a k\u1EBFt n\u1ED1i \u0111\u01B0\u1EE3c. \u0110\u1EE3i t\xED r\u1ED3i th\u1EED l\u1EA1i nha.",
46029  "footer.terms": "\u0110i\u1EC1u kho\u1EA3n & \u0110i\u1EC1u ki\u1EC7n",
46030  "footer.copyright": "\xA9 2026 Yano.AI"
46031};
46032
46033// app/javascript/yano/locales/zh.js
46034var zh_default = {
46035  "home.heading.default": "\u4E0A\u9EA6\u804A\u804A",
46036  "home.heading.loading": "\u6B63\u5728\u51C6\u5907\u623F\u95F4...",
46037  "home.heading.join": "\u51C6\u5907\u8FDB\u623F\uFF1F",
46038  "home.heading.joined": "\u8FDB\u6765\u4E86",
46039  "home.heading.pending": "\u7B49\u623F\u4E3B\u653E\u4EBA",
46040  "home.body.default": "\u5EFA\u4E2A\u623F\uFF0C\u4E22\u4E2A\u94FE\u63A5\uFF0C\u5F00\u804A\u3002",
46041  "home.body.loading": "\u7B49\u4E00\u4E0B\uFF0C\u9A6C\u4E0A\u5EFA\u597D\u3002",
46042  "home.body.join": "\u68C0\u67E5\u4E0B\u955C\u5934\u548C\u9EA6\uFF0C\u7136\u540E\u76F4\u63A5\u8FDB\u3002",
46043  "home.body.joined": "\u623F\u95F4\u5DF2\u5F00\u3002\u53D1\u94FE\u63A5\u6447\u4EBA\uFF0C\u6216\u8005\u76F4\u63A5\u5F00\u804A\u3002",
46044  "home.body.joined_in_room": "\u5DF2\u7ECF\u5728\u623F\u95F4\u91CC\u4E86\u2014\u2014\u76F4\u63A5\u804A\u6216\u8005\u53D1\u94FE\u63A5\u6447\u4EBA\u3002",
46045  "home.body.pending": "\u623F\u95F4\u9501\u4E86\uFF0C\u7B49\u623F\u4E3B\u653E\u4F60\u8FDB\u53BB\u3002",
46046  "home.cta.create": "\u5EFA\u4E2A\u623F\u95F4",
46047  "home.cta.join": "\u8FDB\u623F\u95F4",
46048  "home.cta.enter": "\u8FDB\u53BB",
46049  "home.cta.creating": "\u6B63\u5728\u5EFA...",
46050  "home.cta.joining": "\u6B63\u5728\u8FDB...",
46051  "home.cta.opening": "\u6B63\u5728\u5F00...",
46052  "home.cta.pending": "\u7B49\u623F\u4E3B\u653E\u884C...",
46053  "home.copy_link": "\u590D\u5236\u94FE\u63A5",
46054  "home.copied": "\u590D\u5236\u5566\uFF01",
46055  "home.leave": "\u79BB\u5F00\u623F\u95F4",
46056  "home.back": "\u8FD4\u56DE",
46057  "home.no_participants": "\u8FD8\u6CA1\u4EBA\u6765",
46058  "home.join_by_code": "\u7528\u9080\u8BF7\u7801\u8FDB",
46059  "home.code_placeholder": "\u586B\u9080\u8BF7\u7801",
46060  "home.name_placeholder": "\u600E\u4E48\u79F0\u547C",
46061  "home.people_one": "\u4EBA",
46062  "home.people_other": "\u4EBA",
46063  "home.marketing.invite.title": "\u5EFA\u4E2A\u623F\u95F4\uFF0C\n\u5206\u4EAB\u94FE\u63A5\u3002",
46064  "home.marketing.invite.body": "\u4E00\u952E\u5F00\u64AD\u3002\u628A\u94FE\u63A5\u53D1\u7ED9\u670B\u53CB\uFF0C\u8C01\u90FD\u80FD\u8FDB\u2014\u2014\u514D\u4E0B\u8F7D\uFF0C\u514D\u6CE8\u518C\u3002",
46065  "home.marketing.invite.preview_url": "yano.ai/ROOM",
46066  "home.marketing.look.title": "\u60F3\u8981\u4EC0\u4E48\u753B\u98CE\uFF0C\n\u81EA\u5DF1\u5B9A\u3002",
46067  "home.marketing.look.body": "\u8C03\u8272\u3001\u67D4\u5149\u3001\u6697\u89D2\u2014\u2014\u6216\u8005\u5E72\u8106\u628A\u8138\u7CCA\u6389\u3002\u4F60\u7684\u955C\u5934\uFF0C\u4F60\u8BF4\u4E86\u7B97\u3002",
46068  "home.marketing.host.title": "\u4F60\u7684\u5730\u76D8\uFF0C\n\u542C\u4F60\u7684\u3002",
46069  "home.marketing.host.body": "\u9501\u623F\u3001\u95ED\u9EA6\uFF0C\u6216\u8005\u76F4\u63A5\u8E22\u4EBA\u3002\u623F\u4E3B\u7EDD\u5BF9\u63A7\u573A\u3002",
46070  "home.marketing.host.locked": "\u623F\u95F4\u5DF2\u9501",
46071  "home.marketing.host.waiting_to_join": "\u7B49\u5F85\u8FDB\u5165",
46072  "home.marketing.host.wants_to_join": "\u60F3\u8FDB\u6765",
46073  "home.marketing.anything.title": "\u771F\u7684\uFF0C\u5E72\u5565\u90FD\u884C\u3002",
46074  "home.marketing.anything.body": "\u4E00\u8D77\u81EA\u4E60\u3001\u5F00\u9ED1\u3001\u5DE5\u4F5C\u7AD9\u4F1A\u3001\u770B\u7247\u2014\u2014\u6216\u8005\u5355\u7EAF\u6302\u7740\u95F2\u804A\u3002",
46075  "home.marketing.use_case.study_group": "\u{1F4DA} \u7EC4\u56E2\u81EA\u4E60",
46076  "home.marketing.use_case.game_night": "\u{1F3AE} \u71AC\u591C\u5F00\u9ED1",
46077  "home.marketing.use_case.standup": "\u{1F4BC} \u6BCF\u65E5\u7AD9\u4F1A",
46078  "home.marketing.use_case.watch_party": "\u{1F37F} \u4E00\u8D77\u770B\u7247",
46079  "home.marketing.use_case.catch_up": "\u2615 \u95F2\u804A\u53D9\u65E7",
46080  "home.marketing.use_case.jam_session": "\u{1F3B8} \u7EBF\u4E0A\u73A9\u4E50\u5668",
46081  "home.marketing.use_case.book_club": "\u{1F4D6}
46081 \u8BFB\u4E66\u4F1A",
46082  "home.marketing.use_case.coworking": "\u{1F4BB} \u4E91\u529E\u516C",
46083  "ended.heading": "\u804A\u5B8C\u4E86",
46084  "ended.left": "\u4F60\u5DF2\u9000\u51FA\u623F\u95F4\u3002",
46085  "ended.room_ended": "{title} \u5DF2\u7ECF\u7ED3\u675F\u5566\u3002",
46086  "ended.rejoin": "\u91CD\u65B0\u8FDB",
46087  "ended.rejoining": "\u6B63\u5728\u91CD\u65B0\u8FDB...",
46088  "ended.home": "\u56DE\u9996\u9875",
46089  "call.connecting": "\u8FDE\u63A5\u4E2D",
46090  "call.waiting": "\u7B49\u5176\u4ED6\u4EBA\u6765",
46091  "call.invite_code": "\u9080\u8BF7\u7801",
46092  "call.audio_on": "\u9EA6\u5F00\u7740",
46093  "call.muted": "\u5DF2\u95ED\u9EA6",
46094  "call.listening": "\u65C1\u542C\u4E2D",
46095  "call.audio_muted": "\u6CA1\u5F00\u9EA6",
46096  "call.speaking": "\u6B63\u5728\u8BF4\u8BDD",
46097  "call.you": "\u4F60",
46098  "call.you_label": "\u4F60",
46099  "call.you_suffix": "(\u4F60)",
46100  "call.chat_placeholder": "\u968F\u4FBF\u8BF4\u70B9\u5565...",
46101  "call.guest": "\u8BBF\u5BA2",
46102  "call.room_fallback": "\u623F\u95F4",
46103  "call.focus_view": "\u6C89\u6D78\u6A21\u5F0F",
46104  "call.grid_view": "\u7F51\u683C\u6A21\u5F0F",
46105  "call.swap_main_video": "\u5207\u6362\u4E3B\u753B\u9762",
46106  "call.open_chat": "\u6253\u5F00\u804A\u5929",
46107  "call.close_chat": "\u5173\u6389\u804A\u5929",
46108  "call.leave_room": "\u79BB\u5F00\u623F\u95F4",
46109  "call.confirm_leave": "\u771F\u8981\u8D70\uFF1F",
46110  "call.mic_on": "\u9EA6\u514B\u98CE\u5F00",
46111  "call.muted_label": "\u5DF2\u95ED\u9EA6",
46112  "call.camera_off": "\u955C\u5934\u5173",
46113  "call.connect_failed": "\u8FDE\u4E0D\u4E0A\u2014\u2014\u68C0\u67E5\u4E0B\u7F51\u518D\u8BD5\u8BD5\u3002",
46114  "call.camera_access_failed": "\u6253\u4E0D\u5F00\u955C\u5934\u3002\u68C0\u67E5\u4E0B\u6D4F\u89C8\u5668\u6743\u9650\u518D\u8BD5\u8BD5\u3002",
46115  "call.recording_failed": "\u5F55\u5236\u6CA1\u5F00\u8D77\u6765\uFF0C\u4E0D\u8FC7\u804A\u5929\u7EE7\u7EED\u3002",
46116  "call.initialize_failed": "\u5F00\u542F\u5931\u8D25\u4E86\uFF0C\u5237\u65B0\u4E00\u4E0B\u8BD5\u8BD5\u3002",
46117  "call.participants": "\u623F\u95F4\u91CC\u7684\u4EBA",
46118  "call.open_participants": "\u67E5\u770B\u6240\u6709\u4EBA",
46119  "call.close_participants": "\u6536\u8D77\u5217\u8868",
46120  "call.lock_room": "\u9501\u95E8",
46121  "call.unlock_room": "\u5F00\u95E8",
46122  "call.locked": "\u5DF2\u9501",
46123  "call.unlocked": "\u5F00\u653E\u4E2D",
46124  "call.kick_member": "\u8E22\u51FA\u623F\u95F4",
46125  "call.mute_member": "\u95ED\u9EA6",
46126  "call.unmute_member": "\u89E3\u9664\u95ED\u9EA6",
46127  "call.muted_by_host": "\u88AB\u623F\u4E3B\u95ED\u9EA6\u4E86",
46128  "call.waiting_to_join": "\u7B49\u7740\u8FDB\u5462",
46129  "call.approve": "\u653E\u884C",
46130  "call.deny": "\u62D2\u7EDD",
46131  "call.profile_actions": "\u8D44\u6599\u64CD\u4F5C",
46132  "call.profile_in_room": "\u5728\u623F\u95F4\u91CC",
46133  "call.profile_role_host": "\u623F\u4E3B",
46134  "call.profile_role_you": "\u4F60",
46135  "call.profile_action_mute": "\u5C4F\u853DTA\u7684\u58F0\u97F3",
46136  "call.profile_action_mute_meta": "\u53EA\u6709\u4F60\u542C\u4E0D\u5230\u2014\u2014TA\u4E0D\u4F1A\u77E5\u9053\u7684",
46137  "call.profile_action_dm": "\u79C1\u804A",
46138  "call.profile_action_dm_meta": "\u5F00\u4E2A\u79C1\u5BC6\u5C0F\u7A97",
46139  "call.profile_action_view": "\u770B\u5B8C\u6574\u8D44\u6599",
46140  "call.profile_action_view_meta": "\u7B80\u4ECB\u3001\u8BED\u8A00\u3001\u5386\u53F2\u8BB0\u5F55",
46141  "call.profile_action_report": "\u4E3E\u62A5",
46142  "call.profile_action_report_meta": "\u63D0\u4EA4\u7ED9\u7BA1\u7406\u5458\u5BA1\u6838",
46143  "call.profile_sheet_close": "\u5173\u95ED\u64CD\u4F5C",
46144  "call.profile_open_actions": "\u6253\u5F00\u64CD\u4F5C",
46145  "call.dm_title": "\u79C1\u804A",
46146  "call.dm_back": "\u8FD4\u56DE",
46147  "call.dm_close": "\u5173\u6389\u79C1\u804A",
46148  "call.dm_status_online": "\u5728\u7EBF",
46149  "call.dm_in_room_with": "\u5728\u540C\u4E00\u4E2A\u623F\u95F4",
46150  "call.dm_private_label": "\u79C1\u5BC6\u804A\u5929",
46151  "call.dm_private_meta": "\u53EA\u6709\u4F60\u4FE9\u80FD\u770B\u5230",
46152  "call.dm_input_placeholder": "\u53D1\u79C1\u4FE1\u2026",
46153  "call.dm_send": "\u53D1\u9001",
46154  "call.dm_just_now": "\u521A\u521A",
46155  "call.dm_seen_just_now": "\u521A\u521A\u5DF2\u8BFB",
46156  "call.dm_typing": "{name} \u6B63\u5728\u8F93\u5165\u2026",
46157  "call.dm_minimize": "\u6700\u5C0F\u5316",
46158  "call.dm_active_indicator": "\u6253\u5F00\u804A\u5929",
46159  "call.dm_unread_messages": "{count} \u6761\u672A\u8BFB",
46160  "call.dm_toast_tap_to_open": "\u70B9\u5F00\u770B\u770B",
46161  "call.dm_reopen_aria": "\u91CD\u65B0\u6253\u5F00\u548C {name} \u7684\u804A\u5929",
46162  "home.join_denied": "\u623F\u4E3B\u6CA1\u8BA9\u4F60\u8FDB\u3002",
46163  "home.error.room_not_found": "\u623F\u95F4\u7801\u4E0D\u5B58\u5728\u3002",
46164  "home.error.profile_required": "\u5148\u641E\u5B9A\u4E2A\u4EBA\u8D44\u6599\u518D\u7EE7\u7EED\u3002",
46165  "home.cta.set_up_profile": "\u8BBE\u7F6E\u4E2A\u4EBA\u8D44\u6599",
46166  "home.profile_trigger_new": "\u70B9\u8FD9\u91CC\u6DFB\u52A0\u8D44\u6599",
46167  "home.profile_trigger_new_aria": "\u8BBE\u7F6E\u4E2A\u4EBA\u8D44\u6599",
46168  "home.profile_trigger_edit_aria": "\u4FEE\u6539\u8D44\u6599",
46169  "profile.eyebrow_new": "\u6253\u4E2A\u62DB\u547C",
46170  "profile.eyebrow_edit": "\u4F60\u7684\u8D44\u6599",
46171  "profile.title_new": "\u6253\u9020\u4F60\u7684\u4E13\u5C5E\u540D\u7247\u3002",
46172  "profile.title_edit": "\u4FEE\u6539\u8D44\u6599",
46173  "profile.subtitle": "\u968F\u4FBF\u586B\u70B9\u5565\uFF0C\u8BA9\u5927\u5BB6\u8BA4\u8BC6\u8BA4\u8BC6\u4F60\u3002",
46174  "profile.add_photo": "\u52A0\u5F20\u7167\u7247",
46175  "profile.add_photo_soon": "\u7167\u7247\u529F\u80FD\u9A6C\u4E0A\u5C31\u6765",
46176  "profile.photo_empty": "\u70B9\u8FD9\u91CC\u52A0\u7167\u7247",
46177  "profile.photo_ready": "\u7167\u7247\u641E\u5B9A",
46178  "profile.photo_save_first": "\u4F20\u7167\u7247\u524D\u5148\u4FDD\u5B58\u8D44\u6599\u54E6",
46179  "profile.photo_crop_caption": "\u8C03\u6574\u4E00\u4E0B\u4F4D\u7F6E",
46180  "profile.photo_auto_caption": "\u62D6\u62FD\u7F29\u653E\uFF0C\u6211\u4EEC\u4F1A\u81EA\u52A8\u4FDD\u5B58",
46181  "profile.photo_upload": "\u4E0A\u4F20\u7167\u7247",
46182  "profile.photo_replace": "\u6362\u5F20\u7167\u7247",
46183  "profile.photo_remove": "\u5220\u6389\u7167\u7247",
46184  "profile.photo_cancel": "\u53D6\u6D88",
46185  "profile.photo_save": "\u4FDD\u5B58\u7167\u7247",
46186  "profile.photo_uploading": "\u6B63\u5728\u4F20\u7167\u7247\u2026",
46187  "profile.photo_removing": "\u6B63\u5728\u5220\u7167\u7247\u2026",
46188  "profile.photo_choose_another": "\u6362\u4E00\u5F20",
46189  "profile.photo_drag_hint": "\u628A\u7167\u7247\u62D6\u8FDB\u5708\u91CC\uFF0C\u4F1A\u81EA\u52A8\u4FDD\u5B58\u3002",
46190  "profile.photo_zoom": "\u7F29\u653E",
46191  "profile.photo_horizontal": "\u6C34\u5E73\u88C1\u526A",
46192  "profile.photo_vertical": "\u5782\u76F4\u88C1\u526A",
46193  "profile.name_label": "\u540D\u5B57",
46194  "profile.name_placeholder": "\u600E\u4E48\u79F0\u547C\u4F60\uFF1F",
46195  "profile.gender_label": "\u6211\u662F",
46196  "profile.gender.woman": "\u5973\u751F",
46197  "profile.gender.man": "\u7537\u751F",
46198  "profile.gender.unspecified": "\u4FDD\u5BC6",
46199  "profile.bio_label": "\u7B80\u4ECB",
46200  "profile.bio_optional": "\u9009\u586B",
46201  "profile.bio_placeholder": "\u4F1A\u5565\u8BED\u8A00\u3001\u559C\u6B22\u5565\uFF0C\u968F\u4FBF\u5199\u70B9\u2026",
46202  "profile.cta_new": "\u8D70\u8D77",
46203  "profile.cta_edit": "\u4FDD\u5B58\u4FEE\u6539",
46204  "profile.saving": "\u4FDD\u5B58\u4E2D\u2026",
46205  "profile.close": "\u5173\u95ED",
46206  "profile.error.save_failed": "\u8D44\u6599\u6CA1\u5B58\u4E0A\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002",
46207  "profile.error.avatar_invalid_type": "\u9009\u4E2A PNG\u3001JPEG\u3001GIF \u6216 WebP \u683C\u5F0F\u7684\u56FE\u5457\u3002",
46208  "profile.error.avatar_too_large": "\u56FE\u7247\u5F97\u5C0F\u4E8E 5 MB \u54E6\u3002",
46209  "profile.error.avatar_too_small": "\u56FE\u7247\u81F3\u5C11\u5F97 96x96 \u50CF\u7D20\u3002",
46210  "profile.error.avatar_load_failed": "\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765\uFF0C\u6362\u4E00\u5F20\u8BD5\u8BD5\u3002",
46211  "profile.error.avatar_failed": "\u7167\u7247\u6CA1\u4F20\u4E0A\u53BB\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002",
46212  "profile.error.avatar_remove_failed": "\u7167\u7247\u6CA1\u5220\u6389\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002",
46213  "effects.title": "\u7279\u6548",
46214  "effects.soft": "\u67D4\u5149",
46215  "effects.vignette": "\u6697\u89D2",
46216  "effects.face": "\u8138\u90E8\u6253\u7801",
46217  "effects.face_preview_only": "\u8138\u90E8\u6253\u7801\uFF08\u4EC5\u9884\u89C8\uFF09",
46218  "effects.face_viewer_side": "\u8138\u90E8\u6253\u7801\uFF08\u89C2\u4F17\u53EF\u89C1\uFF09",
46219  "effects.face_strength": "\u6253\u7801\u5F3A\u5EA6",
46220  "effects.grade.off": "\u5173",
46221  "effects.grade.pop": "\u9C9C\u8273",
46222  "effects.grade.warm": "\u6696\u8272",
46223  "effects.grade.cool": "\u51B7\u8272",
46224  "effects.grade.bw": "\u9ED1\u767D",
46225  "camera.off": "\u955C\u5934\u5173\u7740\u5462",
46226  "camera.check": "\u68C0\u67E5\u4E0B\u955C\u5934",
46227  "camera.retry": "\u91CD\u8BD5\u955C\u5934",
46228  "camera.ready": "\u955C\u5934\u641E\u5B9A",
46229  "camera.idle.title": "\u6253\u5F00\u955C\u5934",
46230  "camera.idle.hint": "\u51C6\u5907\u597D\u540E\uFF0C\u6211\u4EEC\u4F1A\u5411\u6D4F\u89C8\u5668\u7533\u8BF7\u6743\u9650\u3002",
46231  "camera.idle.button": "\u5F00\u542F\u955C\u5934",
46232  "camera.status.idle": "\u7B49\u4F60\u5462",
46233  "camera.status.off": "\u955C\u5934\u5173\u7740",
46234  "camera.status.loading": "\u6B63\u5728\u7533\u8BF7\u955C\u5934\u6743\u9650...",
46235  "camera.status.denied": "\u5728\u6D4F\u89C8\u5668\u91CC\u7ED9\u4E0B\u955C\u5934\u6743\u9650\uFF0C\u7136\u540E\u518D\u8BD5\u3002",
46236  "camera.status.error": "\u955C\u5934\u9884\u89C8\u5931\u8D25\u4E86\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002",
46237  "camera.status.unsupported": "\u8FD9\u4E2A\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u5F00\u955C\u5934\u3002",
46238  "camera.status.insecure": "\u5F00\u955C\u5934\u9700\u8981 HTTPS \u6216 localhost \u73AF\u5883\u3002",
46239  "camera.status.attach_failed": "\u955C\u5934\u9884\u89C8\u6CA1\u5F00\u8D77\u6765\uFF0C\u518D\u8BD5\u4E00\u6B21\u3002",
46240  "camera.guest_name_placeholder": "\u8BBF\u5BA2\u540D\u5B57",
46241  "camera.flip": "\u7FFB\u8F6C\u955C\u5934",
46242  "camera.save_name": "\u4FDD\u5B58",
46243  "camera.edit_name": "\u6539\u540D",
46244  "mic.on": "\u5173\u9EA6",
46245  "mic.off": "\u5F00\u9EA6",
46246  "video.on": "\u5173\u955C\u5934",
46247  "video.off": "\u5F00\u955C\u5934",
46248  "chat.title": "\u804A\u5929",
46249  "chat.close": "\u5173\u6389\u804A\u5929",
46250  "chat.loading": "\u52A0\u8F7D\u4E2D...",
46251  "chat.load_earlier": "\u770B\u4E4B\u524D\u7684",
46252  "chat.empty": "\u8FD8\u6CA1\u4EBA\u8BF4\u8BDD",
46253  "chat.send_error": "\u6D88\u606F\u6CA1\u53D1\u51FA\u53BB\u2014\u2014\u518D\u8BD5\u4E00\u6B21\u3002",
46254  "chat.input_placeholder": "\u968F\u4FBF\u8BF4\u70B9\u5565...",
46255  "room.host": "\u623F\u4E3B",
46256  "app.room_default_title": "\u5EFA\u4E2A\u623F\u95F4",
46257  "app.chat_connection_rejected": "\u804A\u5929\u8FDE\u4E0D\u4E0A\u2014\u2014\u5237\u65B0\u8BD5\u8BD5\u3002",
46258  "app.copy_failed": "\u94FE\u63A5\u6CA1\u590D\u5236\u6210\u529F\uFF0C\u8BD5\u7740\u624B\u52A8\u9009\u4E00\u4E0B\u590D\u5236\u5427\u3002",
46259  "app.chat_not_connected": "\u804A\u5929\u8FD8\u6CA1\u8FDE\u4E0A\uFF0C\u7B49\u4F1A\u513F\u518D\u8BD5\u3002",
46260  "footer.terms": "\u6761\u6B3E\u4E0E\u6761\u4EF6",
46261  "footer.copyright": "\xA9 2026 Yano.AI"
46262};
46263
46264// app/javascript/yano/i18n.jsx
46265var STORAGE_KEY2 = "yano_locale";
46266var translations = {
46267  de: de_default,
46268  en: en_default,
46269  es: es_default,
46270  et: et_default,
46271  fr: fr_default,
46272  it: it_default,
46273  ja: ja_default,
46274  ko: ko_default,
46275  lo: lo_default,
46276  lt: lt_default,
46277  lv: lv_default,
46278  nl: nl_default,
46279  pl: pl_default,
46280  pt: pt_default,
46281  ru: ru_default,
46282  th: th_default,
46283  tl: tl_default,
46284  uk: uk_default,
46285  vi: vi_default,
46286  zh: zh_default
46287};
46288var SUPPORTED_LOCALES = [
46289  { code: "de", flag: "\u{1F1E9}\u{1F1EA}", name: "Deutsch" },
46290  { code: "en", flag: "\u{1F1EC}\u{1F1E7}", name: "English" },
46291  { code: "es", flag: "\u{1F1EA}\u{1F1F8}", name: "Espa\xF1ol" },
46292  { code: "et", flag: "\u{1F1EA}\u{1F1EA}", name: "Eesti" },
46293  { code: "fr", flag: "\u{1F1EB}\u{1F1F7}", name: "Fran\xE7ais" },
46294  { code: "it", flag: "\u{1F1EE}\u{1F1F9}", name: "Italiano" },
46295  { code: "ja", flag: "\u{1F1EF}\u{1F1F5}", name: "\u65E5\u672C\u8A9E" },
46296  { code: "ko", flag: "\u{1F1F0}\u{1F1F7}", name: "\uD55C\uAD6D\uC5B4" },
46297  { code: "lo", flag: "\u{1F1F1}\u{1F1E6}", name: "\u0EA5\u0EB2\u0EA7" },
46298  { code: "lt", flag: "\u{1F1F1}\u{1F1F9}", name: "Lietuvi\u0173" },
46299  { code: "lv", flag: "\u{1F1F1}\u{1F1FB}", name: "Latvie\u0161u" },
46300  { code: "nl", flag: "\u{1F1F3}\u{1F1F1}", name: "Nederlands" },
46301  { code: "pl", flag: "\u{1F1F5}\u{1F1F1}", name: "Polski" },
46302  { code: "pt", flag: "\u{1F1F5}\u{1F1F9}", name: "Portugu\xEAs" },
46303  { code: "ru", flag: "\u{1F1F7}\u{1F1FA}", name: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439" },
46304  { code: "th", flag: "\u{1F1F9}\u{1F1ED}", name: "\u0E20\u0E32\u0E29\u0E32\u0E44\u0E17\u0E22" },
46305  { code: "tl", flag: "\u{1F1F5}\u{1F1ED}", name: "Tagalog" },
46306  { code: "uk", flag: "\u{1F1FA}\u{1F1E6}", name: "\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430" },
46307  { code: "vi", flag: "\u{1F1FB}\u{1F1F3}", name: "Ti\u1EBFng Vi\u1EC7t" },
46308  { code: "zh", flag: "\u{1F1E8}\u{1F1F3}", name: "\u4E2D\u6587" }
46309];
46310function detectLocale() {
46311  try {
46312    const raw = new URLSearchParams(window.location.search).get("lang");
46313    if (raw) {
46314      const base = raw.trim().toLowerCase().split("-")[0];
46315      if (base && translations[base]) return base;
46316    }
46317  } catch (_3) {
46318  }
46319  try {
46320    const stored = localStorage.getItem(STORAGE_KEY2);
46321    if (stored && translations[stored]) return stored;
46322  } catch (_3) {
46323  }
46324  const preferred = [];
46325  try {
46326    if (typeof navigator !== "undefined") {
46327      if (Array.isArray(navigator.languages)) preferred.push(...navigator.languages);
46328      if (navigator.language) preferred.push(navigator.language);
46329    }
46330  } catch (_3) {
46331  }
46332  const seen = /* @__PURE__ */ new Set();
46333  for (const entry of preferred) {
46334    if (!entry || typeof entry !== "string") continue;
46335    const normalized = entry.trim().toLowerCase();
46336    if (!normalized || seen.has(normalized)) continue;
46337    seen.add(normalized);
46338    const base = normalized.split("-")[0];
46339    if (translations[base]) return base;
46340  }
46341  return "en";
46342}
46343var I18nContext = (0, import_react2.createContext)(null);
46344function I18nProvider({ children }) {
46345  const [locale, setLocaleState] = (0, import_react2.useState)(detectLocale);
46346  const setLocale = (0, import_react2.useCallback)((code) => {
46347    setLocaleState(code);
46348    try {
46349      localStorage.setItem(STORAGE_KEY2, code);
46350    } catch (_3) {
46351    }
46352  }, []);
46353  (0, import_react2.useLayoutEffect)(() => {
46354    try {
46355      document.documentElement.lang = locale;
46356    } catch (_3) {
46357    }
46358  }, [locale]);
46359  (0, import_react2.useLayoutEffect)(() => {
46360    try {
46361      localStorage.setItem(STORAGE_KEY2, locale);
46362    } catch (_3) {
46363    }
46364  }, [locale]);
46365  const t3 = (0, import_react2.useCallback)((key, params) => {
46366    const str = translations[locale]?.[key] || translations.en[key] || key;
46367    if (!params) return str;
46368    return str.replace(/\{(\w+)\}/g, (_3, k3) => params[k3] ?? `{${k3}}`);
46369  }, [locale]);
46370  return /* @__PURE__ */ import_react2.default.createElement(I18nContext.Provider, { value: { locale, setLocale, t: t3, locales: SUPPORTED_LO
46370CALES } }, children);
46371}
46372function useI18n() {
46373  return (0, import_react2.useContext)(I18nContext);
46374}
46375function LocalePicker() {
46376  const { locale, setLocale, locales } = useI18n();
46377  const [open, setOpen] = (0, import_react2.useState)(false);
46378  const [menuStyle, setMenuStyle] = (0, import_react2.useState)(null);
46379  const buttonRef = (0, import_react2.useRef)(null);
46380  const menuRef = (0, import_react2.useRef)(null);
46381  const current = locales.find((l3) => l3.code === locale);
46382  const updateMenuPosition = (0, import_react2.useCallback)(() => {
46383    const rect = buttonRef.current?.getBoundingClientRect();
46384    if (!rect) return;
46385    const width = Math.min(352, window.innerWidth - 24);
46386    const estimatedHeight = Math.min(448, window.innerHeight - 24);
46387    const left = Math.min(
46388      Math.max(12, rect.right - width),
46389      Math.max(12, window.innerWidth - width - 12)
46390    );
46391    const top = rect.bottom + 8 + estimatedHeight > window.innerHeight - 12 ? Math.max(12, rect.top - estimatedHeight - 8) : rect.bottom + 8;
46392    setMenuStyle({
46393      top,
46394      left,
46395      width
46396    });
46397  }, []);
46398  (0, import_react2.useLayoutEffect)(() => {
46399    if (!open) return;
46400    updateMenuPosition();
46401    window.addEventListener("resize", updateMenuPosition);
46402    window.addEventListener("scroll", updateMenuPosition, true);
46403    return () => {
46404      window.removeEventListener("resize", updateMenuPosition);
46405      window.removeEventListener("scroll", updateMenuPosition, true);
46406    };
46407  }, [open, updateMenuPosition]);
46408  (0, import_react2.useLayoutEffect)(() => {
46409    if (!open || !menuStyle) return;
46410    const id = window.requestAnimationFrame(() => {
46411      menuRef.current?.focus?.({ preventScroll: true });
46412    });
46413    return () => window.cancelAnimationFrame(id);
46414  }, [open, menuStyle]);
46415  return /* @__PURE__ */ import_react2.default.createElement("div", { className: "relative z-[220]" }, /* @__PURE__ */ import_react2.default.createElement(
46416    "button",
46417    {
46418      ref: buttonRef,
46419      type: "button",
46420      onClick: () => setOpen((value) => !value),
46421      className: "flex items-center gap-1.5 rounded-xl bg-violet-500/10 px-2.5 py-1.5 text-xs font-bold text-violet-300 transition hover:bg-violet-500/18",
46422      "aria-haspopup": "menu",
46423      "aria-expanded": open,
46424      onKeyDown: (event) => {
46425        if (event.key !== "ArrowDown" && event.key !== "Enter" && event.key !== " ") return;
46426        event.preventDefault();
46427        setOpen(true);
46428      }
46429    },
46430    /* @__PURE__ */ import_react2.default.createElement("span", { className: "text-sm leading-none" }, current?.flag),
46431    /* @__PURE__ */ import_react2.default.createElement("span", null, current?.name),
46432    /* @__PURE__ */ import_react2.default.createElement("svg", { width: "10", height: "10", viewBox: "0 0 20 20", fill: "currentColor", className: `opacity-50 transition-transform ${open ? "rotate-180" : ""}` }, /* @__PURE__ */ import_react2.default.createElement("path", { d: "M5.3 7.7a1 1 0 0 1 1.4 0L10 11l3.3-3.3a1 1 0 1 1 1.4 1.4l-4 4a1 1 0 0 1-1.4 0l-4-4a1 1 0 0 1 0-1.4Z" }))
46433  ), open && menuStyle ? (0, import_react_dom.createPortal)(
46434    /* @__PURE__ */ import_react2.default.createElement(
46435      "div",
46436      {
46437        ref: menuRef,
46438        tabIndex: -1,
46439        className: "yano-menu-pop fixed z-[400] max-h-[min(28rem,calc(100vh-1.5rem))] overflow-y-auto rounded-2xl border border-violet-500/15 bg-[#1a0e2e]/98 p-1.5 shadow-[0_16px_40px_rgba(0,0,0,0.55)] backdrop-blur-md",
46440        style: menuStyle,
46441        role: "menu",
46442        onKeyDown: (event) => {
46443          if (event.key !== "Escape") return;
46444          event.preventDefault();
46445          setOpen(false);
46446          window.requestAnimationFrame(() => buttonRef.current?.focus?.({ preventScroll: true }));
46447        }
46448      },
46449      /* @__PURE__ */ import_react2.default.createElement("div", { className: "grid grid-cols-3 gap-1" }, locales.map((loc) => /* @__PURE__ */ import_react2.default.createElement(
46450        "button",
46451        {
46452          key: loc.code,
46453          type: "button",
46454          onClick: () => {
46455            setLocale(loc.code);
46456            setOpen(false);
46457            window.requestAnimationFrame(() => buttonRef.current?.focus?.({ preventScroll: true }));
46458          },
46459          className: `yano-locale-tile relative flex min-w-0 flex-col items-center justify-center gap-1 rounded-[1rem] px-2 py-3 text-center transition hover:bg-violet-500/12 ${locale === loc.code ? "bg-violet-500/14 font-bold text-violet-100 ring-1 ring-violet-400/30" : "text-violet-300/78"} focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-violet-300/50`,
46460          role: "menuitemradio",
46461          "aria-checked": locale === loc.code
46462        },
46463        /* @__PURE__ */ import_react2.default.createElement("span", { className: "text-2xl leading-none sm:text-3xl" }, loc.flag),
46464        /* @__PURE__ */ import_react2.default.createElement("span", { className: "min-w-0 text-[11px] leading-tight text-balance" }, loc.name),
46465        locale === loc.code ? /* @__PURE__ */ import_react2.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 20 20", fill: "currentColor", className: "absolute right-2 top-2 text-violet-300" }, /* @__PURE__ */ import_react2.default.createElement("path", { d: "M16.7 5.3a1 1 0 0 1 0 1.4l-8 8a1 1 0 0 1-1.4 0l-4-4a1 1 0 1 1 1.4-1.4L8 12.6l7.3-7.3a1 1 0 0 1 1.4 0Z" })) : null
46466      )))
46467    ),
46468    document.body
46469  ) : null);
46470}
46471
46472// app/javascript/yano/videoEffects.js
46473var YANO_VIDEO_EFFECTS_VERSION = 1;
46474var VIDEO_GRADES = [
46475  { id: "off", label: "OFF", filter: "saturate(1) contrast(1) brightness(1) hue-rotate(0deg)" },
46476  { id: "pop", label: "POP", filter: "saturate(1.14) contrast(1.06) brightness(1.05) hue-rotate(-6deg)" },
46477  { id: "warm", label: "WARM", filter: "saturate(1.08) contrast(1.05) brightness(1.03) hue-rotate(10deg)" },
46478  { id: "cool", label: "COOL", filter: "saturate(1.08) contrast(1.06) brightness(1.03) hue-rotate(-18deg)" },
46479  { id: "bw", label: "B&W", filter: "grayscale(1) contrast(1.08) brightness(1.05)" }
46480];
46481var SOFT_FILTER = "blur(0.7px) contrast(1.12) saturate(1.05) brightness(1.03)";
46482function normalizeVideoEffects(raw = {}) {
46483  const allowedGrades = new Set(VIDEO_GRADES.map((g3) => g3.id));
46484  const grade = typeof raw.grade === "string" && allowedGrades.has(raw.grade) ? raw.grade : "off";
46485  const soft = Boolean(raw.soft);
46486  const vignette = Boolean(raw.vignette);
46487  const faceBlur = Boolean(raw.faceBlur);
46488  const faceBlurPxRaw = Number(raw.faceBlurPx);
46489  const faceBlurPx = Number.isFinite(faceBlurPxRaw) ? Math.min(9, Math.max(2, Math.round(faceBlurPxRaw))) : 6;
46490  return {
46491    v: YANO_VIDEO_EFFECTS_VERSION,
46492    grade,
46493    soft,
46494    vignette,
46495    faceBlur,
46496    faceBlurPx
46497  };
46498}
46499function filterStringForVideoEffects(effects) {
46500  const normalized = normalizeVideoEffects(effects);
46501  const gradeFilter = VIDEO_GRADES.find((g3) => g3.id === normalized.grade)?.filter || VIDEO_GRADES[0].filter;
46502  return [gradeFilter, normalized.soft ? SOFT_FILTER : null].filter(Boolean).join(" ");
46503}
46504
46505// app/javascript/yano/hooks/useFaceBlurOverlay.js
46506var import_react3 = __toESM(require_react());
46507var FACE_DETECTOR_WASM_BASE = "https://cdn.jsdelivr.net/npm/@mediapipe/[email protected]/wasm";
46508var FACE_DETECTOR_MODEL_URL = "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/1/blaze_face_short_range.tflite";
46509var faceDetectorPromise;
46510async function getFaceDetector() {
46511  if (faceDetectorPromise) return faceDetectorPromise;
46512  faceDetectorPromise = (async () => {
46513    const module = await Promise.resolve().then(() => (init_vision_bundle(), vision_bundle_exports));
46514    const { FaceDetector, FilesetResolver } = module;
46515    const vision = await FilesetResolver.forVisionTasks(FACE_DETECTOR_WASM_BASE);
46516    return FaceDetector.createFromOptions(vision, {
46517      baseOptions: { modelAssetPath: FACE_DETECTOR_MODEL_URL },
46518      runningMode: "VIDEO"
46519    });
46520  })();
46521  faceDetectorPromise.catch(() => {
46522    faceDetectorPromise = null;
46523  });
46524  return faceDetectorPromise;
46525}
46526function layoutParams(vw, vh, dw, dh, fit) {
46527  if (fit === "contain") {
46528    const scale2 = Math.min(dw / vw, dh / vh);
46529    const dx = (dw - vw * scale2) / 2;
46530    const dy = (dh - vh * scale2) / 2;
46531    return { sx: 0, sy: 0, scale: scale2, dx, dy };
46532  }
46533  const scale = Math.max(dw / vw, dh / vh);
46534  const sw = dw / scale;
46535  const sh = dh / scale;
46536  const sx = (vw - sw) / 2;
46537  const sy = (vh - sh) / 2;
46538  return { sx, sy, scale, dx: 0, dy: 0 };
46539}
46540function lerpBox(a3, b3, t3) {
46541  if (!a3) return b3;
46542  return {
46543    x: a3.x + (b3.x - a3.x) * t3,
46544    y: a3.y + (b3.y - a3.y) * t3,
46545    w: a3.w + (b3.w - a3.w) * t3,
46546    h: a3.h + (b3.h - a3.h) * t3
46547  };
46548}
46549function pickStableBox(prevBox, nextBoxes) {
46550  if (!nextBoxes?.length) return null;
46551  const sorted = [...nextBoxes].sort((a3, b3) => b3.w * b3.h - a3.w * a3.h);
46552  const next = sorted[0];
46553  if (!prevBox) return next;
46554  const prevArea = prevBox.w * prevBox.h;
46555  const nextArea = next.w * next.h;
46556  if (prevArea > 0 && nextArea < prevArea * 0.18) return prevBox;
46557  const pcx = prevBox.x + prevBox.w / 2;
46558  const pcy = prevBox.y + prevBox.h / 2;
46559  const ncx = next.x + next.w / 2;
46560  const ncy = next.y + next.h / 2;
46561  const dist = Math.hypot(ncx - pcx, ncy - pcy);
46562  const maxJump = Math.max(prevBox.w, prevBox.h) * 1.15;
46563  if (dist > maxJump) return prevBox;
46564  return next;
46565}
46566function useFaceBlurOverlay({
46567  enabled,
46568  sourceVideoRef,
46569  overlayVideoRef,
46570  overlayRef,
46571  holdMs = 1200,
46572  lerpA = 0.22,
46573  fit = "cover"
46574}) {
46575  (0, import_react3.useEffect)(() => {
46576    if (!enabled) {
46577      const overlayElRef2 = overlayRef || overlayVideoRef;
46578      const overlay2 = overlayElRef2?.current;
46579      if (overlay2) {
46580        if (overlay2 instanceof HTMLCanvasElement) {
46581          const ctx = overlay2.getContext("2d");
46582          if (ctx) ctx.clearRect(0, 0, overlay2.width, overlay2.height);
46583        }
46584        overlay2.style.opacity = "0";
46585        overlay2.style.clipPath = "ellipse(0px 0px at 0px 0px)";
46586        overlay2.style.webkitClipPath = "ellipse(0px 0px at 0px 0px)";
46587        overlay2.style.maskImage = "none";
46588        overlay2.style.webkitMaskImage = "none";
46589        overlay2.style.filter = "";
46590      }
46591      return void 0;
46592    }
46593    let stopped = false;
46594    const video = sourceVideoRef.current;
46595    const overlayElRef = overlayRef || overlayVideoRef;
46596    const overlay = overlayElRef?.current;
46597    if (!video || !overlay) return void 0;
46598    const overlayIsCanvas = overlay instanceof HTMLCanvasElement;
46599    const deviceMemory = navigator.deviceMemory || 0;
46600    const cores = navigator.hardwareConcurrency || 0;
46601    const lowEnd = deviceMemory && deviceMemory <= 2 || cores && cores <= 4;
46602    const detectIntervalMs = lowEnd ? 260 : 140;
46603    let faceTarget = null;
46604    let faceCurrent = null;
46605    let pendingDetect = null;
46606    let lastDetectAt = 0;
46607    let lastSeenAt = 0;
46608    let rafId = null;
46609    let lastDrawAt = 0;
46610    let lastFilterReadAt = 0;
46611    let cachedBaseFilter = "none";
46612    let lastAppliedCanvasFilter = "";
46613    let lastBlurReadAt = 0;
46614    let cachedBlurPx = 12;
46615    function faceBlurPx(now3) {
46616      if (now3 - lastBlurReadAt > 250) {
46617        lastBlurReadAt = now3;
46618        const raw = window.getComputedStyle(overlay).getPropertyValue("--yano-face-blur") || window.getComputedStyle(overlay.parentElement || overlay).getPropertyValue("--yano-face-blur") || "";
46619        const value = Number.parseFloat(raw);
46620        if (Number.isFinite(value)) cachedBlurPx = value;
46621      }
46622      return cachedBlurPx;
46623    }
46624    function baseFilter(now3) {
46625      if (now3 - lastFilterReadAt > 250) {
46626        lastFilterReadAt = now3;
46627        try {
46628          cachedBaseFilter = window.getComputedStyle(video).filter || "none";
46629        } catch (_error) {
46630          cachedBaseFilter = "none";
46631        }
46632      }
46633      return cachedBaseFilter;
46634    }
46635    function setClipFromBox(box, now3) {
46636      if (!box) {
46637        overlay.style.opacity = "0";
46638        overlay.style.clipPath = "ellipse(0px 0px at 0px 0px)";
46639        overlay.style.webkitClipPath = "ellipse(0px 0px at 0px 0px)";
46640        overlay.style.maskImage = "none";
46641        overlay.style.webkitMaskImage = "none";
46642        return;
46643      }
46644      const w3 = overlay.clientWidth || 1;
46645      const h3 = overlay.clientHeight || 1;
46646      const pad = faceBlurPx(now3) * 0.95;
46647      let rx = Math.max(10, box.w * 0.74 + pad);
46648      let ry = Math.max(10, box.h * 0.98 + pad * 1.2);
46649      rx = Math.min(rx, Math.max(12, w3 / 2 - 2));
46650      ry = Math.min(ry, Math.max(12, h3 / 2 - 2));
46651      let cx = box.x + box.w / 2;
46652      let cy = box.y + box.h / 2 + box.h * 0.08;
46653      cx = Math.min(w3 - rx, Math.max(rx, cx));
46654      cy = Math.min(h3 - ry, Math.max(ry, cy));
46655      const clip = `ellipse(${rx}px ${ry}px at ${cx}px ${cy}px)`;
46656      overlay.style.opacity = "1";
46657      overlay.style.clipPath = clip;
46658      overlay.style.webkitClipPath = clip;
46659      const edgeMin = Math.min(cx - rx, cy - ry, w3 - (cx + rx), h3 - (cy + ry));
46660      if (edgeMin < 10) {
46661        overlay.style.maskImage = "none";
46662        overlay.style.webkitMaskImage = "none";
46663      } else {
46664        const innerStop = 70;
46665        const outerStop = 86;
46666        const mask = `radial-gradient(ellipse ${rx}px ${ry}px at ${cx}px ${cy}px, rgba(0,0,0,1) 0%, rgba(0,0,0,1) ${innerStop}%, rgba(0,0,0,0) ${outerStop}%)`;
46667        overlay.style.maskImage = mask;
46668        overlay.style.webkitMaskImage = mask;
46669        overlay.style.maskRepeat = "no-repeat";
46670        overlay.style.webkitMaskRepeat = "no-repeat";
46671        overlay.style.maskSize = "100% 100%";
46672        overlay.style.webkitMaskSize = "100% 100%";
46673      }
46674    }
46675    overlay.style.opacity = "0";
46676    overlay.style.clipPath = "ellipse(0px 0px at 0px 0px)";
46677    overlay.style.webkitClipPath = "ellipse(0px 0px at 0px 0px)";
46678    overlay.style.maskImage = "none";
46679    overlay.style.webkitMaskImage = "none";
46680    const canvasCtx = overlayIsCanvas ? overlay.getContext("2d") : null;
46681    async function runDetect(now3) {
46682      try {
46683        const detector = await getFaceDetector();
46684        const result = detector.detectForVideo(video, now3);
46685        const rect = overlay.getBoundingClientRect();
46686        const dw = Math.max(2, rect.width);
46687        const dh = Math.max(2, rect.height);
46688        const vw = video.videoWidth || 1280;
46689        const vh = video.videoHeight || 720;
46690        const layout = layoutParams(vw, vh, dw, dh, fit);
46691        const boxes = (result?.detections || []).map((d3) => d3.boundingBox).filter(Boolean).map((b3) => ({
46692          x: (b3.originX - layout.sx) * layout.scale + layout.dx,
46693          y: (b3.originY - layout.sy) * layout.scale + layout.dy,
46694          w: b3.width * layout.scale,
46695          h: b3.height * layout.scale
46696        })).filter((b3) => b3.w > 10 && b3.h > 10);
46697        const prev = faceTarget || faceCurrent;
46698        const picked = pickStableBox(prev, boxes);
46699        if (picked) {
46700          lastSeenAt = now3;
46701          faceTarget = picked;
46702        } else if (now3 - lastSeenAt > holdMs) {
46703          faceTarget = null;
46704        }
46705      } catch (_error) {
46706      }
46707    }
46708    function drawCanvas(now3) {
46709      if (!overlayIsCanvas || !canvasCtx) return;
46710      if (!faceCurrent && !faceTarget) {
46711        canvasCtx.clearRect(0, 0, overlay.width, overlay.height);
46712        return;
46713      }
46714      const rect = overlay.getBoundingClientRect();
46715      const dw = Math.max(2, rect.width);
46716      const dh = Math.max(2, rect.height);
46717      const area = dw * dh;
46718      const baseInterval = lowEnd ? 84 : 48;
46719      const drawIntervalMs = area > 7e4 ? baseInterval : area > 32e3 ? Math.max(baseInterval, 90) : Math.max(baseInterval, 150);
46720      if (now3 - lastDrawAt < drawIntervalMs) return;
46721      lastDrawAt = now3;
46722      const dpr = window.devicePixelRatio || 1;
46723      const nextW = Math.max(2, Math.round(dw * dpr));
46724      const nextH = Math.max(2, Math.round(dh * dpr));
46725      if (overlay.width !== nextW || overlay.height !== nextH) {
46726        overlay.width = nextW;
46727        overlay.height = nextH;
46728      }
46729      canvasCtx.setTransform(dpr, 0, 0, dpr, 0, 0);
46730      canvasCtx.clearRect(0, 0, dw, dh);
46731      canvasCtx.imageSmoothingEnabled = true;
46732      try {
46733        canvasCtx.imageSmoothingQuality = "high";
46734      } catch (_error) {
46735      }
46736      const vw = video.videoWidth || 1280;
46737      const vh = video.videoHeight || 720;
46738      const layout = layoutParams(vw, vh, dw, dh, fit);
46739      const blurPx = faceBlurPx(now3);
46740      const vf = baseFilter(now3);
46741      const extra = `blur(${blurPx}px) saturate(0.98) contrast(1.04)`;
46742      const composedFilter = vf && vf !== "none" ? `${vf} ${extra}` : extra;
46743      canvasCtx.filter = "none";
46744      if (composedFilter !== lastAppliedCanvasFilter) {
46745        lastAppliedCanvasFilter = composedFilter;
46746        overlay.style.filter = composedFilter;
46747      }
46748      if (fit === "contain") {
46749        canvasCtx.drawImage(video, 0, 0, vw, vh, layout.dx, layout.dy, vw * layout.scale, vh * layout.scale);
46750      } else {
46751        const sw = dw / layout.scale;
46752        const sh = dh / layout.scale;
46753        canvasCtx.drawImage(video, layout.sx, layout.sy, sw, sh, 0, 0, dw, dh);
46754      }
46755    }
46756    function tick(now3) {
46757      if (stopped) return;
46758      if (video.readyState >= 2 && video.videoWidth && video.videoHeight) {
46759        const w3 = overlay.clientWidth || 0;
46760        const h3 = overlay.clientHeight || 0;
46761        const area = w3 * h3;
46762        const dynamicIntervalMs = area > 7e4 ? detectIntervalMs : area > 32e3 ? Math.max(detectIntervalMs, 220) : Math.max(detectIntervalMs, 520);
46763        if (now3 - lastDetectAt > dynamicIntervalMs && !pendingDetect) {
46764          lastDetectAt = now3;
46765          pendingDetect = runDetect(now3).finally(() => {
46766            pendingDetect = null;
46767          });
46768        }
46769        if (faceTarget) {
46770          faceCurrent = lerpBox(faceCurrent, faceTarget, lerpA);
46771        } else if (now3 - lastSeenAt > holdMs) {
46772          faceCurrent = null;
46773        }
46774        if (now3 - lastSeenAt > holdMs) {
46775          faceTarget = null;
46776          faceCurrent = null;
46777          setClipFromBox(null, now3);
46778        } else {
46779          setClipFromBox(faceCurrent, now3);
46780          drawCanvas(now3);
46781        }
46782      }
46783      rafId = window.requestAnimationFrame(tick);
46784    }
46785    rafId = window.requestAnimationFrame(tick);
46786    return () => {
46787      stopped = true;
46788      if (rafId) window.cancelAnimationFrame(rafId);
46789      rafId = null;
46790      faceTarget = null;
46791      faceCurrent = null;
46792      pendingDetect = null;
46793      if (overlay) {
46794        if (overlay instanceof HTMLCanvasElement) {
46795          const ctx = overlay.getContext("2d");
46796          if (ctx) ctx.clearRect(0, 0, overlay.width, overlay.height);
46797        }
46798        overlay.style.opacity = "0";
46799        overlay.style.clipPath = "ellipse(0px 0px at 0px 0px)";
46800        overlay.style.webkitClipPath = "ellipse(0px 0px at 0px 0px)";
46801        overlay.style.maskImage = "none";
46802        overlay.style.webkitMaskImage = "none";
46803        overlay.style.filter = "";
46804      }
46805    };
46806  }, [enabled, sourceVideoRef, overlayVideoRef, overlayRef, holdMs, lerpA, fit]);
46807}
46808
46809// app/javascript/yano/components/callUiState.js
46810function waitingStateLabelKey(status) {
46811  return status === "live" ? "call.waiting" : "call.connecting";
46812}
46813
46814// app/javascript/yano/components/dmState.js
46815var DM_INITIAL_STATE = { conversations: {}, currentKey: null, toast: null };
46816function dmReducer(state, action) {
46817  switch (action.type) {
46818    case "OPEN": {
46819      const { target } = action;
46820      const key = target.key;
46821      const existing = state.conversations[key];
46822      return {
46823        ...state,
46824        currentKey: key,
46825        toast: state.toast?.key === key ? null : state.toast,
46826        conversations: {
46827          ...state.conversations,
46828          [key]: existing ? { ...existing, target, unread: 0, error: "", loading: false } : { target, messages: [], unread: 0, loading: false, loaded: false, sending: false, error: "" }
46829        }
46830      };
46831    }
46832    case "MINIMIZE":
46833      return { ...state, currentKey: null };
46834    case "CLOSE": {
46835      if (!state.currentKey) return state;
46836      const next = { ...state.conversations };
46837      delete next[state.currentKey];
46838      return { ...state, currentKey: null, conversations: next, toast: null };
46839    }
46840    case "LOAD_START": {
46841      const cur = state.conversations[action.key];
46842      if (!cur) return state;
46843      return {
46844        ...state,
46845        conversations: {
46846          ...state.conversations,
46847          [action.key]: {
46848            ...cur,
46849            loading: true,
46850            error: ""
46851          }
46852        }
46853      };
46854    }
46855    case "LOAD_SUCCESS": {
46856      const cur = state.conversations[action.key];
46857      if (!cur) return state;
46858      return {
46859        ...state,
46860        conversations: {
46861          ...state.conversations,
46862          [action.key]: {
46863            ...cur,
46864            loading: false,
46865            loaded: true,
46866            error: "",
46867            messages: mergeDmMessageList(cur.messages, action.messages || [])
46868          }
46869        }
46870      };
46871    }
46872    case "LOAD_ERROR": {
46873      const cur = state.conversations[action.key];
46874      if (!cur) return state;
46875      return {
46876        ...state,
46877        conversations: {
46878          ...state.conversations,
46879          [action.key]: {
46880            ...cur,
46881            loading: false,
46882            error: action.error || ""
46883          }
46884        }
46885      };
46886    }
46887    case "SEND_START": {
46888      const key = action.key || state.currentKey;
46889      if (!key) return state;
46890      const cur = state.conversations[key];
46891      if (!cur) return state;
46892      return {
46893        ...state,
46894        conversations: {
46895          ...state.conversations,
46896          [key]: {
46897            ...cur,
46898            sending: true,
46899            error: ""
46900          }
46901        }
46902      };
46903    }
46904    case "SEND": {
46905      const key = action.key || state.currentKey;
46906      if (!key) return state;
46907      const cur = state.conversations[key];
46908      if (!cur) return state;
46909      return {
46910        ...state,
46911        conversations: {
46912          ...state.conversations,
46913          [key]: {
46914            ...cur,
46915            messages: mergeDmMessageList(cur.messages, [action.message]),
46916            sending: false,
46917            error: ""
46918          }
46919        }
46920      };
46921    }
46922    case "SEND_ERROR": {
46923      const key = action.key || state.currentKey;
46924      if (!key) return state;
46925      const cur = state.conversations[key];
46926      if (!cur) return state;
46927      return {
46928        ...state,
46929        conversations: {
46930          ...state.conversations,
46931          [key]: {
46932            ...cur,
46933            sending: false,
46934            error: action.error || ""
46935          }
46936        }
46937      };
46938    }
46939    case "RECEIVE": {
46940      const { key } = action;
46941      const recv = state.conversations[key];
46942      const nextConversation = recv || {
46943        target: action.target,
46944        messages: [],
46945        unread: 0,
46946        loading: false,
46947        loaded: false,
46948        sending: false,
46949        error: ""
46950      };
46951      const isVisible = state.currentKey === key;
46952      return {
46953        ...state,
46954        conversations: {
46955          ...state.conversations,
46956          [key]: {
46957            ...nextConversation,
46958            target: action.target || nextConversation.target,
46959            loaded: nextConversation.loaded,
46960            error: "",
46961            messages: mergeDmMessageList(nextConversation.messages, [action.message]),
46962            unread: isVisible ? 0 : (nextConversation.unread || 0) + 1
46963          }
46964        },
46965        toast: isVisible ? state.toast : { id: Date.now(), key, target: action.target || nextConversation.target, text: action.message.text }
46966      };
46967    }
46968    case "DISMISS_TOAST":
46969      if (action.key && state.toast?.key !== action.key) return state;
46970      return { ...state, toast: null };
46971    default:
46972      return state;
46973  }
46974}
46975function mergeDmMessageList(existing = [], incoming = []) {
46976  const merged = [...existing];
46977  const seen = new Set(existing.map((message) => String(message.id)));
46978  incoming.forEach((message) => {
46979    const key = String(message.id);
46980    if (seen.has(key)) return;
46981    seen.add(key);
46982    merged.push(message);
46983  });
46984  merged.sort((left, right) => {
46985    if (left.createdAt && right.createdAt) {
46986      return new Date(left.createdAt).getTime() - new Date(right.createdAt).getTime();
46987    }
46988    return String(left.id).localeCompare(String(right.id), void 0, { numeric: true });
46989  });
46990  return merged;
46991}
46992
46993// app/javascript/yano/components/CallStage.jsx
46994function initialsFor(label) {
46995  const trimmed = label.trim();
46996  if (/^\p{Emoji}/u.test(trimmed)) return trimmed;
46997  return trimmed.split(/\s+/).filter(Boolean).slice(0, 2).map((part) => Array.from(part)[0]?.toUpperCase() || "").join("") || "Y";
46998}
46999function avatarGenderLabel(t3, value) {
47000  if (value === "woman") return t3("profile.gender.woman");
47001  if (value === "man") return t3("profile.gender.man");
47002  if (value === "unspecified") return t3("profile.gender.unspecified");
47003  return "";
47004}
47005function ProfileGenderIcon({ value }) {
47006  if (value === "woman") {
47007    return /* @__PURE__ */ import_react4.default.createElement("svg", { viewBox: "0 0 20 20", className: "h-4.5 w-4.5", fill: "none", stroke: "currentColor", strokeWidth: "1.9", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ import_react4.default.createElement("circle", { cx: "10", cy: "7", r: "3.2" }), /* @__PURE__ */ import_react4.default.createElement("path", { d: "M10 10.4v6.1M7.2 13.7H12.8" }));
47008  }
47009  if (value === "man") {
47010    return /* @__PURE__ */ import_react4.default.createElement("svg", { viewBox: "0 0 20 20", className: "h-4.5 w-4.5", fill: "none", stroke: "currentColor", strokeWidth: "1.9", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ import_react4.default.createElement("circle", { cx: "7.2", cy: "12.8", r: "3.2" }), /* @__PURE__ */ import_react4.default.createElement("path", { d: "M9.8 10.2L15.2 4.8M11.4 4.8H15.2V8.6" }));
47011  }
47012  return /* @__PURE__ */ import_react4.default.createElement("svg", { viewBox: "0 0 20 20", className: "h-4.5 w-4.5", fill: "none", stroke: "currentColor", strokeWidth: "1.9", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ import_react4.default.createElement("circle", { cx: "10", cy: "10", r: "6" }), /* @__PURE__ */ import_react4.default.createElement("path", { d: "M7.6 12.4c.7.7 1.5 1 2.4 1s1.7-.3 2.4-1M8 8.1h.01M12 8.1h.01" }));
47013}
47014function ProfileGenderPill({ value, label }) {
47015  return /* @__PURE__ */ import_react4.default.createElement("span", { className: `yano-sheet-profile__pill yano-sheet-profile__pill--${value}` }, /* @__PURE__ */ import_react4.default.createElement("span", { className: "yano-sheet-profile__pill-icon", "aria-hidden": "true" }, /* @__PURE__ */ import_react4.default.createElement(ProfileGenderIcon, { value })), /* @__PURE__ */ import_react4.default.createElement("span", null, label));
47016}
47017function AvatarBadge({ name, avatarUrl, className = "", imgClassName = "", children = null }) {
47018  const initials = initialsFor(name || "?");
47019  return /* @__PURE__ */ import_react4.default.createElement("span", { className: `relative ${className}`.trim(), "aria-hidden": "true" }
47019, avatarUrl ? /* @__PURE__ */ import_react4.default.createElement("span", { className: "absolute inset-0 overflow-hidden rounded-[inherit]" }, /* @__PURE__ */ import_react4.default.createElement("img", { src: avatarUrl, alt: "", className: imgClassName })) : initials, children);
47020}
47021function videoTrackFor(participant) {
47022  return participant?.tracks?.video?.persistentTrack || participant?.tracks?.video?.track || participant?.videoTrack || null;
47023}
47024function audioTrackFor(participant) {
47025  return participant?.tracks?.audio?.persistentTrack || participant?.tracks?.audio?.track || participant?.audioTrack || null;
47026}
47027function displayNameFor(participant, fallbackLabel = "") {
47028  return participant?.user_name || participant?.userData?.display_name || fallbackLabel;
47029}
47030function formatDuration(seconds) {
47031  const total = Math.max(0, Math.floor(seconds));
47032  const minutes = String(Math.floor(total / 60)).padStart(2, "0");
47033  const remainder = String(total % 60).padStart(2, "0");
47034  return `${minutes}:${remainder}`;
47035}
47036function stateForTrack(participant, kind) {
47037  return participant?.tracks?.[kind]?.state || "missing";
47038}
47039function hasPlayableTrack(participant, kind) {
47040  return stateForTrack(participant, kind) === "playable";
47041}
47042function ParticipantVideoFx({ track: track2, mirrored = false, muted = false, className = "", effects, fit = "cover" }) {
47043  const baseRef = (0, import_react4.useRef)(null);
47044  const blurCanvasRef = (0, import_react4.useRef)(null);
47045  const lastTrackRef = (0, import_react4.useRef)(track2);
47046  const normalized = (0, import_react4.useMemo)(() => normalizeVideoEffects(effects || {}), [
47047    effects?.grade,
47048    effects?.soft,
47049    effects?.vignette,
47050    effects?.faceBlur,
47051    effects?.faceBlurPx
47052  ]);
47053  const filter = (0, import_react4.useMemo)(() => filterStringForVideoEffects(normalized), [normalized]);
47054  if (track2) lastTrackRef.current = track2;
47055  const effectiveTrack = track2 || lastTrackRef.current;
47056  async function safePlay(element) {
47057    if (!element) return;
47058    element.muted = true;
47059    element.volume = 0;
47060    element.playsInline = true;
47061    for (let attempt = 0; attempt < 3; attempt += 1) {
47062      try {
47063        await element.play();
47064        return;
47065      } catch (_error) {
47066        await new Promise((resolve) => window.setTimeout(resolve, 180));
47067      }
47068    }
47069  }
47070  useFaceBlurOverlay({
47071    enabled: Boolean(normalized.faceBlur && effectiveTrack),
47072    sourceVideoRef: baseRef,
47073    overlayRef: blurCanvasRef,
47074    holdMs: 1200,
47075    lerpA: 0.22,
47076    fit
47077  });
47078  (0, import_react4.useEffect)(() => {
47079    const base = baseRef.current;
47080    if (!base) return void 0;
47081    if (!track2) {
47082      base.srcObject = null;
47083      return void 0;
47084    }
47085    const stream = new MediaStream([track2]);
47086    base.srcObject = stream;
47087    safePlay(base);
47088    const handleMetadata = () => safePlay(base);
47089    base.addEventListener("loadedmetadata", handleMetadata);
47090    base.addEventListener("canplay", handleMetadata);
47091    return () => {
47092      if (baseRef.current) baseRef.current.srcObject = null;
47093      base.removeEventListener("loadedmetadata", handleMetadata);
47094      base.removeEventListener("canplay", handleMetadata);
47095    };
47096  }, [track2]);
47097  const videoClassName = `${className} ${mirrored ? "scale-x-[-1]" : ""}`.trim();
47098  return /* @__PURE__ */ import_react4.default.createElement(
47099    "div",
47100    {
47101      className: "relative h-full w-full overflow-hidden",
47102      style: {
47103        "--yano-face-blur": `${normalized.faceBlurPx}px`
47104      }
47105    },
47106    /* @__PURE__ */ import_react4.default.createElement(
47107      "video",
47108      {
47109        ref: baseRef,
47110        autoPlay: true,
47111        playsInline: true,
47112        muted: true,
47113        className: `pointer-events-none ${videoClassName}`,
47114        style: { filter }
47115      }
47116    ),
47117    /* @__PURE__ */ import_react4.default.createElement(
47118      "canvas",
47119      {
47120        ref: blurCanvasRef,
47121        className: `yano-camera-faceblur yano-camera-canvas pointer-events-none absolute inset-0 h-full w-full ${mirrored ? "scale-x-[-1]" : ""}`,
47122        style: { display: normalized.faceBlur ? "block" : "none" }
47123      }
47124    ),
47125    /* @__PURE__ */ import_react4.default.createElement(
47126      "div",
47127      {
47128        "aria-hidden": true,
47129        className: `pointer-events-none absolute inset-0 yano-preview-vignette ${normalized.vignette ? "yano-preview-vignette--on" : ""}`
47130      }
47131    )
47132  );
47133}
47134function ParticipantAudio({ track: track2 }) {
47135  const mediaRef = (0, import_react4.useRef)(null);
47136  (0, import_react4.useEffect)(() => {
47137    if (!mediaRef.current) return void 0;
47138    if (!track2) {
47139      mediaRef.current.srcObject = null;
47140      return void 0;
47141    }
47142    const stream = new MediaStream([track2]);
47143    mediaRef.current.srcObject = stream;
47144    mediaRef.current.play().catch(() => {
47145    });
47146    return () => {
47147      if (mediaRef.current) {
47148        mediaRef.current.srcObject = null;
47149      }
47150    };
47151  }, [track2]);
47152  return /* @__PURE__ */ import_react4.default.createElement("audio", { ref: mediaRef, autoPlay: true, playsInl
47152ine: true });
47153}
47154function TileStatus({ muted, videoOff }) {
47155  const { t: t3 } = useI18n();
47156  return /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex items-center gap-2 text-[11px] font-semibold" }, /* @__PURE__ */ import_react4.default.createElement("span", { className: `inline-flex items-center gap-1 rounded-full px-2 py-1 ${muted ? "bg-violet-500/10 text-violet-300/60" : "bg-[rgb(126_235_122_/_0.15)] text-[rgb(126_235_122_/_0.9)]"}` }, /* @__PURE__ */ import_react4.default.createElement(MicIcon, null), muted ? t3("call.muted_label") : t3("call.mic_on")), videoOff ? /* @__PURE__ */ import_react4.default.createElement("span", { className: "inline-flex items-center gap-1 rounded-full bg-violet-500/10 px-2 py-1 text-violet-300/60" }, /* @__PURE__ */ import_react4.default.createElement(VideoIcon, null), t3("call.camera_off")) : null);
47157}
47158function ParticipantTile({ participant, isLocal = false, avatarUrl = "", fallbackLabel = "", effectsOverride = null, hideOverlay = false, latestMessage = null, onProfileTap = null, dmInfo = null }) {
47159  const { t: t3 } = useI18n();
47160  const videoTrack = videoTrackFor(participant);
47161  const videoOn = hasPlayableTrack(participant, "video") && Boolean(videoTrack);
47162  const micOn = hasPlayableTrack(participant, "audio");
47163  const displayName = displayNameFor(participant, fallbackLabel);
47164  const initials = initialsFor(displayName);
47165  const effects = effectsOverride || participant?.userData?.yano_fx;
47166  const handleProfileTap = (event) => {
47167    event.stopPropagation();
47168    onProfileTap?.(participant, isLocal);
47169  };
47170  return /* @__PURE__ */ import_react4.default.createElement("article", { className: "yano-call-tile" }, videoOn ? /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement(ParticipantVideoFx, { track: videoTrack, mirrored: isLocal, muted: isLocal, effects, fit: "contain", className: "h-full w-full object-contain" }
47170), latestMessage ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "absolute inset-x-3 top-3 z-[5]" }, /* @__PURE__ */ import_react4.default.createElement(TileMessage, { message: latestMessage })) : null) : /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex h-full items-center justify-center bg-[radial-gradient(circle_at_50%_30%,rgba(139,92,246,0.15),transparent_60%),#130a22]" }, /* @__PURE__ */ import_react4.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ import_react4.default.createElement(
47171    "button",
47172    {
47173      type: "button",
47174      onClick: handleProfileTap,
47175      className: "relative mx-auto transition active:scale-95",
47176      "aria-label": dmInfo?.active ? t3("call.dm_active_indicator") : t3("call.profile_open_actions")
47177    },
47178    /* @__PURE__ */ import_react4.default.createElement(
47179      AvatarBadge,
47180      {
47181        name: displayName,
47182        avatarUrl,
47183        className: "grid h-24 w-24 place-items-center rounded-full border-2 border-violet-400/15 bg-violet-500/12 text-3xl font-semibold text-violet-200 transition hover:bg-violet-500/18 hover:border-violet-400/25",
47184        imgClassName: "h-full w-full object-cover"
47185      },
47186      dmInfo?.active ? /* @__PURE__ */ import_react4.default.createElement("span", { className: `yano-dm-dot ${dmInfo.unread > 0 ? "" : "yano-dm-dot--read"}`, style: { top: "-2px", right: "-2px" } }, dmInfo.unread > 0 ? dmInfo.unread > 9 ? "9+" : dmInfo.unread : null) : null
47187    )
47188  ), latestMessage ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "mx-auto mt-5 max-w-[80%]" }, /* @__PURE__ */ import_react4.default.createElement(TileMessage, { message: latestMessage, variant: "audio" })) : /* @__PURE__ */ import_react4.default.createElement("p", { className: "mt-4 text-sm text-violet-400/60" }, micOn ? t3("call.listening") : t3("call.audio_muted")))), /* @__PURE__ */ import_react4.default.createElement("div", { className: `yano-ui-layer absolute inset-x-3 bottom-3 flex items-end justify-between gap-3 ${hideOverlay ? "yano-ui-layer--hidden" : ""}` }, /* @__PURE__ */ import_react4.default.createElement(
47189    "button",
47190    {
47191      type: "button",
47192      onClick: handleProfileTap,
47193      className: `relative flex items-center gap-2 rounded-2xl px-3 py-2 text-left text-sm text-violet-100 backdrop-blur-md transition active:scale-[0.97] ${dmInfo?.active ? "bg-violet-600/35 hover:bg-violet-600/45" : "bg-[#1a0e2e]/80 hover:bg-[#1a0e2e]/95"}`,
47194      "aria-label": dmInfo?.active ? t3("call.dm_active_indicator") : t3("call.profile_open_actions")
47195    },
47196    dmInfo?.active ? /* @__PURE__ */ import_react4.default.createElement(ChatBubbleLeftRightIcon_default, { className: "h-3.5 w-3.5 shrink-0 text-violet-200" }) : null,
47197    /* @__PURE__ */ import_react4.default.createElement("span", { className: "font-semibold" }, displayName),
47198    isLocal ? /* @__PURE__ */ import_react4.default.createElement("span", { className: "text-violet-400/60" }, t3("call.you_label")) : null,
47199    dmInfo?.active && dmInfo.unread > 0 ? /* @__PURE__ */ import_react4.default.createElement("span", { className: "ml-0.5 inline-flex h-[18px] min-w-[18px] items-center justify-center rounded-full bg-pink-500 px-1.5 text-[9px] font-extrabold leading-none text-white shadow-[0_3px_8px_-2px_rgba(236,72,153,0.6)]" }, dmInfo.unread > 9 ? "9+" : dmInfo.unread) : null
47200  ), /* @__PURE__ */ import_react4.default.createElement(TileStatus, { muted: !micOn, videoOff: !videoOn })));
47201}
47202function TileMessage({ message, variant = "overlay" }) {
47203  const [age, setAge] = (0, import_react4.useState)(() => message._receivedAt ? Date.now() - message._receivedAt : 0);
47204  (0, import_react4.useEffect)(() => {
47205    if (!message._receivedAt) return;
47206    const interval = window.setInterval(() => setAge(Date.now() - message._receivedAt), 500);
47207    return () => window.clearInterval(interval);
47208  }, [message._receivedAt, message.id]);
47209  const fresh = age < 5e3;
47210  const fading = age > 2e4;
47211  const opacity = fading ? Math.max(0, 1 - (age - 2e4) / 1e4) : 1;
47212  const glowOpacity = fresh ? Math.max(0, 1 - age / 5e3) : 0;
47213  if (variant === "audio") {
47214    return /* @__PURE__ */ import_react4.default.createElement("div", { className: "relative mx-auto mt-1.5 max-w-[12rem]", style: { opacity } }, fresh ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "absolute -inset-3 rounded-2xl transition-opacity duration-1000", style: { opacity: glowOpacity, background: "radial-gradient(ellipse at center, rgba(139, 92, 246, 0.35), transparent 70%)" } }) : null, /* @__PURE__ */ import_react4.default.createElement("p", { className: "relative rounded-xl bg-violet-500/12 px-3.5 py-2 text-sm font-semibold text-violet-100" }, message.body));
47215  }
47216  return /* @__PURE__ */ import_react4.default.createElement("div", { className: "relative inline-block max-w-[85%]", style: { opacity } }, fresh ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "absolute -inset-4 rounded-3xl transition-opacity duration-1000", style: { opacity: glowOpacity, background: "radial-gradient(ellipse at center, rgba(139, 92, 246, 0.4), transparent 70%)" } }) : null, /* @__PURE__ */ import_react4.default.createElement("div", { className: "relative rounded-2xl rounded-tl-sm bg-black/50 px-3.5 py-2.5 text-sm font-semibold text-white/90 backdrop-blur-sm" }, message.body));
47217}
47218async function destroyDailyCallObject(callObject) {
47219  if (!callObject) return;
47220  try {
47221    await callObject.leave().catch(() => {
47222    });
47223  } finally {
47224    callObject.destroy();
47225  }
47226}
47227function AudioIndicator({ name, avatarUrl = "", isLocal = false, speaking = false, latestMessage = null, onTap = null, dmInfo = null }) {
47228  const { t: t3 } = useI18n();
47229  const Wrapper = onTap ? "button" : "div";
47230  const wrapperProps = onTap ? {
47231    type: "button",
47232    onClick: onTap,
47233    "aria-label": dmInfo?.active ? t3("call.dm_active_indicator") : t3("call.profile_open_actions")
47234  } : {};
47235  return /* @__PURE__ */ import_react4.default.createElement(
47236    Wrapper,
47237    {
47238      ...wrapperProps,
47239      className: `flex flex-col items-center gap-3 text-center ${onTap ? "transition active:scale-[0.97]" : ""}`
47240    },
47241    /* @__PURE__ */ import_react4.default.createElement(
47242      AvatarBadge,
47243      {
47244        name,
47245        avatarUrl,
47246        className: `grid h-20 w-20 place-items-center rounded-full bg-violet-500/12 border-2 text-2xl font-semibold text-violet-200 transition-colors ${speaking ? "border-violet-400/40" : "border-violet-400/15"}`,
47247        imgClassName: "h-full w-full object-cover"
47248      },
47249      speaking ? /* @__PURE__ */ import_react4.default.createElement("span", { className: "absolute inset-0 rounded-full border-2 border-violet-400/30 animate-[waiting-pulse_1.8s_cubic-bezier(0.16,1,0.3,1)_infinite]" }) : null,
47250      !speaking ? /* @__PURE__ */ import_react4.default.createElement("span", { className: "absolute -bottom-0.5 -right-0.5 grid h-5 w-5 place-items-center rounded-full bg-red-500/90 shadow-[0_2px_6px_rgba(239,68,68,0.35)]" }, /* @__PURE__ */ import_react4.default.createElement("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "white", strokeWidth: "3", strokeLinecap: "round" }, /* @__PURE__ */ import_react4.default.createElement("rect", { x: "9", y: "2", width: "6", height: "12", rx: "3" }), /* @__PURE__ */ import_react4.default.createElement("path", { d: "M5 10a7 7 0 0 0 14 0" }), /* @__PURE__ */ import_react4.default.createElement("line", { x1: "4", y1: "4", x2: "20", y2: "20" }))) : null,
47251      dmInfo?.active ? /* @__PURE__ */ import_react4.default.createElement("span", { className: `yano-dm-dot ${dmInfo.unread > 0 ? "" : "yano-dm-dot--read"}`, style: { top: "-4px", right: "-4px" } }, dmInfo.unread > 0 ? dmInfo.unread > 9 ? "9+" : dmInfo.unread : null) : null
47252    ),
47253    /* @__PURE__ */ import_react4.default.createElement("div", null, /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex items-center justify-center gap-1.5" }, /* @__PURE__ */ import_react4.default.createElement("p", { className: "text-sm font-bold text-violet-200" }, name), isLocal ? /* @__PURE__ */ import_react4.default.createElement("span", { className: "rounded-full border border-violet-400/14 bg-violet-500/8 px-1.5 py-0.5 text-[9px] font-bold uppercase tracking-[0.14em] text-violet-300/55" }
47253, t3("call.you")) : null), latestMessage ? /* @__PURE__ */ import_react4.default.createElement(TileMessage, { message: latestMessage, variant: "audio" }) : /* @__PURE__ */ import_react4.default.createElement("p", { className: "mt-0.5 text-xs text-violet-400/50" }, speaking ? t3("call.speaking") : t3("call.listening")))
47254  );
47255}
47256function ControlButton({ active = true, danger = false, label, onClick, children, wide = false, className: extraClassName = "", pressed = void 0 }) {
47257  const className = [
47258    "yano-call-control",
47259    active ? "" : "yano-call-control--off",
47260    danger ? "yano-call-control--danger" : "",
47261    wide ? "yano-call-control--wide" : "",
47262    extraClassName
47263  ].filter(Boolean).join(" ");
47264  return /* @__PURE__ */ import_react4.default.createElement("button", { type: "button", className, onClick, "aria-label": label, title: label, "aria-pressed": pressed }, children, wide ? /* @__PURE__ */ import_react4.default.createElement("span", null, label) : null);
47265}
47266function ParticipantActionSheet({ target, onClose, onDm }) {
47267  const { t: t3 } = useI18n();
47268  const [mounted, setMounted] = (0, import_react4.useState)(false);
47269  const [open, setOpen] = (0, import_react4.useState)(false);
47270  const sheetRef = (0, import_react4.useRef)(null);
47271  const dragStateRef = (0, import_react4.useRef)({ startY: null, delta: 0 });
47272  (0, import_react4.useEffect)(() => {
47273    if (target) {
47274      setMounted(true);
47275      const id = window.requestAnimationFrame(() => setOpen(true));
47276      return () => window.cancelAnimationFrame(id);
47277    }
47278    setOpen(false);
47279    const timeout = window.setTimeout(() => setMounted(false), 480);
47280    return () => window.clearTimeout(timeout);
47281  }, [target]);
47282  (0, import_react4.useEffect)(() => {
47283    if (!open) return void 0;
47284    const onKey = (event) => {
47285      if (event.key === "Escape") {
47286        event.preventDefault();
47287        onClose?.();
47288      }
47289    };
47290    window.addEventListener("keydown", onKey);
47291    return () => window.removeEventListener("keydown", onKey);
47292  }, [open, onClose]);
47293  (0, import_react4.useEffect)(() => {
47294    if (!open) return void 0;
47295    const previous = document.body.style.overflow;
47296    document.body.style.overflow = "hidden";
47297    return () => {
47298      document.body.style.overflow = previous;
47299    };
47300  }, [open]);
47301  if (!mounted || !target) return null;
47302  const initials = initialsFor(target.name || "?");
47303  const closeWithAction = () => onClose?.();
47304  const handleDm = () => {
47305    onDm?.(target);
47306    onClose?.();
47307  };
47308  const genderLabel = avatarGenderLabel(t3, target.gender);
47309  const onPointerDown = (event) => {
47310    if (event.target.closest(".yano-sheet-action")) return;
47311    dragStateRef.current.startY = event.clientY;
47312    dragStateRef.current.delta = 0;
47313    if (sheetRef.current) sheetRef.current.style.transition = "none";
47314  };
47315  const onPointerMove = (event) => {
47316    const { startY } = dragStateRef.current;
47317    if (startY === null) return;
47318    const delta = Math.max(0, event.clientY - startY);
47319    dragStateRef.current.delta = delta;
47320    if (sheetRef.current) sheetRef.current.style.transform = `translateY(${delta}px)`;
47321  };
47322  const onPointerEnd = () => {
47323    const { startY, delta } = dragStateRef.current;
47324    if (startY === null) return;
47325    if (sheetRef.current) {
47326      sheetRef.current.style.transition = "";
47327      sheetRef.current.style.transform = "";
47328    }
47329    dragStateRef.current.startY = null;
47330    dragStateRef.current.delta = 0;
47331    if (delta > 80) onClose?.();
47332  };
47333  return (0, import_react_dom2.createPortal)(
47334    /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement(
47335      "div",
47336      {
47337        className: `yano-sheet-scrim ${open ? "yano-sheet-scrim--open" : ""}`,
47338        onClick: onClose,
47339        "aria-hidden": "true"
47340      }
47341    ), /* @__PURE__ */ import_react4.default.createElement(
47342      "div",
47343      {
47344        ref: sheetRef,
47345        className: `yano-sheet ${open ? "yano-sheet--open" : ""}`,
47346        role: "dialog",
47347        "aria-modal": "true",
47348        "aria-label": t3("call.profile_actions"),
47349        onPointerDown,
47350        onPointerMove,
47351        onPointerUp: onPointerEnd,
47352        onPointerCancel: onPointerEnd
47353      },
47354      /* @__PURE__ */ import_react4.default.createElement("div", { className: "yano-sheet-card" }, /* @__PURE__ */ import_react4.default.createElement("div", { className: "yano-sheet-grabber" }), /* @__PURE__ */ import_react4.default.createElement("div", { className: "yano-sheet-stagger flex flex-col" }, /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex items-center gap-4 px-6 pb-4 pt-1" }, /* @__PURE__ */ import_react4.default.createElement(
47355        AvatarBadge,
47356        {
47357          name: target.name,
47358          avatarUrl: target.avatarUrl,
47359          className: "grid h-16 w-16 shrink-0 place-items-center rounded-2xl bg-violet-500/15 text-xl font-bold text-violet-200 ring-1 ring-inset ring-violet-400/20 shadow-[0_12px_28px_-12px_rgba(167,139,250,0.55)]",
47360          imgClassName: "h-full w-full object-cover"
47361        }
47362      ), /* @__PURE__ */ import_react4.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react4.default.createElement("p", { className: "font-display text-2xl font-bold leading-tight tracking-tight text-violet-50 truncate" }, target.isLocal ? t3("call.profile_role_you") : target.name), /* @__PURE__ */ import_react4.default.createElement("div", { className: "mt-1.5 flex flex-wrap items-center gap-1.5" }, target.isHostMember ? /* @__PURE__ */ import_react4.default.createElement("span", { className: "inline-flex items-center gap-1 rounded-full bg-violet-500/14 px-2 py-0.5 text-[10.5px] font-bold uppercase tracking-wider text-violet-200" }, t3("call.profile_role_host")) : null, target.mutedByHost ? /* @__P
47362URE__ */ import_react4.default.createElement("span", { className: "inline-flex items-center gap-1 rounded-full bg-violet-500/10 px-2 py-0.5 text-[10.5px] font-semibold text-violet-300/70" }, /* @__PURE__ */ import_react4.default.createElement(SpeakerXMarkIcon_default, { className: "h-3 w-3" }), t3("call.muted_by_host")) : null))), genderLabel || target.bio ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "px-6 pb-4" }, /* @__PURE__ */ import_react4.default.createElement("div", { className: "yano-sheet-profile" }, genderLabel ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "yano-sheet-profile__row" }, /* @__PURE__ */ import_react4.default.createElement(ProfileGenderPill, { value: target.gender, label: genderLabel })) : null, target.bio ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "yano-sheet-profile__row yano-sheet-profile__row--stacked" }, /* @__PURE__ */ import_react4.default.createElement("p", { className: "yano-sheet-profile__bio" }, target.bio)) : null)) : null, !target.isLocal ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex flex-col px-3.5 pb-1" }, /* @__PURE__ */ import_react4.default.createElement(
47363        "button",
47364        {
47365          type: "button",
47366          className: "yano-sheet-action",
47367          onClick: handleDm
47368        },
47369        /* @__PURE__ */ import_react4.default.createElement("span", { className: "yano-sheet-action__icon" }, /* @__PURE__ */ import_react4.default.createElement(ChatBubbleLeftRightIcon_default, { className: "h-5 w-5" })),
47370        /* @__PURE__ */ import_react4.default.createElement("span", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react4.default.createElement("span", { className: "block font-display text-[15px] font-bold leading-tight text-violet-50" }, t3("call.profile_action_dm")), /* @__PURE__ */ import_react4.default.createElement("span", { className: "mt-0.5 block text-[11.5px] font-medium text-violet-300/55" }, t3("call.profile_action_dm_meta"))),
47371        /* @__PURE__ */ import_react4.default.createElement(ChevronTrail, null)
47372      )) : null))
47373    )),
47374    document.body
47375  );
47376}
47377function ChevronTrail() {
47378  return /* @__PURE__ */ import_react4.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", className: "shrink-0 text-violet-300/35" }, /* @__PURE__ */ import_react4.default.createElement("polyline", { points: "9 18 15 12 9 6" }));
47379}
47380function OneToOneDmPanel({ target, messages = [], loading = false, sending = false, error: error2 = "", onMinimize, onSend, onAvatarTap, formatTime }) {
47381  const { t: t3 } = useI18n();
47382  const [mounted, setMounted] = (0, import_react4.useState)(false);
47383  const [open, setOpen] = (0, import_react4.useState)(false);
47384  const [draft, setDraft] = (0, import_react4.useState)("");
47385  const [, setTimeTick] = (0, import_react4.useState)(0);
47386  const inputRef = (0, import_react4.useRef)(null);
47387  const scrollRef = (0, import_react4.useRef)(null);
47388  (0, import_react4.useEffect)(() => {
47389    if (target) {
47390      setMounted(true);
47391      setDraft("");
47392      const id = window.requestAnimationFrame(() => setOpen(true));
47393      return () => window.cancelAnimationFrame(id);
47394    }
47395    setOpen(false);
47396    const timeout = window.setTimeout(() => setMounted(false), 500);
47397    return () => window.clearTimeout(timeout);
47398  }, [target?.key]);
47399  (0, import_react4.useEffect)(() => {
47400    if (!open) return void 0;
47401    const id = window.setTimeout(() => inputRef.current?.focus({ preventScroll: true }), 380);
47402    return () => window.clearTimeout(id);
47403  }, [open]);
47404  (0, import_react4.useEffect)(() => {
47405    if (scrollRef.current) {
47406      scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
47407    }
47408  }, [messages.length]);
47409  (0, import_react4.useEffect)(() => {
47410    if (!open || !messages.length) return void 0;
47411    const id = window.setInterval(() => setTimeTick((value) => value + 1), 15e3);
47412    return () => window.clearInterval(id);
47413  }, [open, messages.length]);
47414  (0, import_react4.useEffect)(() => {
47415    if (!open) return void 0;
47416    const onKey = (event) => {
47417      if (event.key === "Escape") {
47418        event.preventDefault();
47419        onMinimize?.();
47420      }
47421    };
47422    window.addEventListener("keydown", onKey);
47423    return () => window.removeEventListener("keydown", onKey);
47424  }, [open, onMinimize]);
47425  if (!mounted || !target) return null;
47426  const initials = initialsFor(target.name || "?");
47427  const firstName = (target.name || "").split(/\s+/)[0] || target.name || "";
47428  const handleSend = async (event) => {
47429    event?.preventDefault();
47430    const text = draft.trim();
47431    if (!text) return;
47432    const sent = await onSend?.(text);
47433    if (sent === false) return;
47434    setDraft("");
47435  };
47436  return (0, import_react_dom2.createPortal)(
47437    /* @__PURE__ */ import_react4.default.createElement(
47438      "aside",
47439      {
47440        className: `yano-dm-panel ${open ? "yano-dm-panel--open" : ""}`,
47441        role: "dialog",
47442        "aria-modal": "true",
47443        "aria-label": t3("call.dm_title")
47444      },
47445      /* @__PURE__ */ import_react4.default.createElement("header", { className: "yano-dm-header" }, /* @__PURE__ */ import_react4.default.createElement(
47446        "button",
47447        {
47448          type: "button",
47449          className: "yano-dm-avatar yano-dm-avatar--tappable",
47450          onClick: onAvatarTap,
47451          "aria-label": t3("call.profile_open_actions"),
47452          title: t3("call.profile_actions")
47453        },
47454        target.avatarUrl ? /* @__PURE__ */ import_react4.default.createElement("img", { src: target.avatarUrl, alt: "", className: "h-full w-full object-cover" }) : initials,
47455        /* @__PURE__ */ import_react4.default.createElement("span", { className: "yano-dm-avatar__online" })
47456      ), /* @__PURE__ */ import_react4.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react4.default.createElement("p", { className: "font-display text-[15px] font-bold leading-tight tracking-tight text-violet-50 truncate" }, target.isLocal ? t3("call.profile_role_you") : firstName), /* @__PURE__ */ import_react4.default.createElement("div", { className: "mt-0.5 flex items-center gap-1.5 text-[11px] font-semibold text-violet-300/60" }, /* @__PURE__ */ import_react4.default.createElement("span", { className: "inline-block h-1.5 w-1.5 rounded-full bg-emerald-400 shadow-[0_0_8px_rgba(74,222,128,0.55)]" }), /* @__PURE__ */ import_react4.default.createElement("span", null, t3("call.dm_status_online")), /* @__PURE__ */ import_react4.default.createElement("span", { className: "opacity-40" }, "\xB7"), /* @__PURE__ */ import_react4.default.createElement("span", { className: "truncate" }, t3("call.dm_in_room_with")))), /* @__PURE__ */ import_react4.default.createElement(
47457        "button",
47458        {
47459          type: "button",
47460          className: "yano-dm-iconbtn",
47461          onClick: onMinimize,
47462          "aria-label": t3("call.dm_minimize"),
47463          title: t3("call.dm_minimize")
47464        },
47465        /* @__PURE__ */ import_react4.default.createElement(XMarkIcon_default, { className: "h-5 w-5" })
47466      )),
47467      /* @__PURE__ */ import_react4.default.createElement("div", { ref: scrollRef, className: "yano-dm-body" }, /* @__PURE__ */ import_react4.default.createElement("div", { className: "yano-dm-system" }, /* @__PURE__ */ import_react4.default.createElement(LockClosedIcon_default, { className: "h-3 w-3" }), /* @__PURE__ */ import_react4.default.createElement("span", null, t3("call.dm_private_meta"))), loading ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "px-2 py-4 text-center text-sm font-medium text-violet-300/60" }, t3("chat.loading")) : null, !loading && !messages.length ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "px-2 py-4 text-center text-sm font-medium text-violet-300/60" }, t3("chat.empty")) : null, messages.map((m3, idx) => {
47468        const prev = messages[idx - 1];
47469        const showTime = !prev || prev.from !== m3.from;
47470        return /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, { key: m3.id }, /* @__PURE__ */ import_react4.default.createElement("div", { className: `yano-dm-bubble yano-dm-bubble--${m3.from}` }, m3.text), showTime ? /* @__PURE__ */ import_react4.default.createElement("div", { className: `yano-dm-bubble-time yano-dm-bubble-time--${m3.from}` }, formatTime?.(m3.createdAt) || t3("call.dm_just_now")) : null);
47471      }), error2 ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "px-2 py-4 text-center text-sm font-medium text-violet-300/70" }, error2) : null),
47472      /* @__PURE__ */ import_react4.default.createElement("form", { className: "yano-dm-input-wrap", onSubmit: handleSend }, /* @__PURE__ */ import_react4.default.createElement("div", { className: "yano-dm-input" }, /* @__PURE__ */ import_react4.default.createElement(
47473        "input",
47474        {
47475          ref: inputRef,
47476          type: "text",
47477          value: draft,
47478          onChange: (e3) => setDraft(e3.target.value),
47479          placeholder: t3("call.dm_input_placeholder"),
47480          "aria-label": t3("call.dm_input_placeholder")
47481        }
47482      ), /* @__PURE__ */ import_react4.default.createElement(
47483        "button",
47484        {
47485          type: "submit",
47486          className: "yano-dm-send",
47487          disabled: sending || !draft.trim(),
47488          "aria-label": t3("call.dm_send")
47489        },
47490        /* @__PURE__ */ import_react4.default.createElement(PaperAirplaneIcon_default, { className: "h-4 w-4" })
47491      )))
47492    ),
47493    document.body
47494  );
47495}
47496function DmPreviewToast({ toast, onTap, onDismiss }) {
47497  const { t: t3 } = useI18n();
47498  const [mounted, setMounted] = (0, import_react4.useState)(false);
47499  const [open, setOpen] = (0, import_react4.useState)(false);
47500  const TOAST_LIFE_MS = 4500;
47501  (0, import_react4.useEffect)(() => {
47502    if (toast) {
47503      setMounted(true);
47504      const id = window.requestAnimationFrame(() => setOpen(true));
47505      const lifetime = window.setTimeout(() => onDismiss?.(), TOAST_LIFE_MS);
47506      return () => {
47507        window.cancelAnimationFrame(id);
47508        window.clearTimeout(lifetime);
47509      };
47510    }
47511    setOpen(false);
47512    const t1 = window.setTimeout(() => setMounted(false), 480);
47513    return () => window.clearTimeout(t1);
47514  }, [toast?.key, toast?.id]);
47515  if (!mounted || !toast) return null;
47516  const initials = initialsFor(toast.target?.name || "?");
47517  const firstName = (toast.target?.name || "").split(/\s+/)[0] || toast.target?.name || "";
47518  return (0, import_react_dom2.createPortal)(
47519    /* @__PURE__ */ import_react4.default.createElement(
47520      "button",
47521      {
47522        type: "button",
47523        className: `yano-dm-toast ${open ? "yano-dm-toast--open" : ""}`,
47524        onClick: onTap,
47525        "aria-label": t3("call.dm_toast_tap_to_open")
47526      },
47527      /* @__PURE__ */ import_react4.default.createElement("div", { className: "yano-dm-toast__avatar", "aria-hidden": "true" }, initials),
47528      /* @__PURE__ */ import_react4.default.createElement("div", { className: "min-w-0 flex-1 text-left" }, /* @__PURE__ */ import_react4.default.createElement("p", { className: "yano-dm-toast__name truncate" }, firstName), /* @__PURE__ */ import_react4.default.createElement("p", { className: "yano-dm-toast__text" }, toast.text))
47529    ),
47530    document.body
47531  );
47532}
47533function CallStage({
47534  join,
47535  title,
47536  roomCode,
47537  shareUrl,
47538  copied,
47539  onCopyLink,
47540  onLeaveRoom,
47541  chatOpen = false,
47542  onToggleChat,
47543  unreadCount = 0,
47544  onSendMessage,
47545  chatOverlayMessages = [],
47546  apiToken = "",
47547  currentUserId = null,
47548  displayName = "",
47549  initialMedia = { audioEnabled: true, videoEnabled: true },
47550  localVideoEffects = null,
47551  isHost = false,
47552  roomLocked = false,
47553  roomMembers = [],
47554  onLockRoom,
47555  onUnlockRoom,
47556  onKickMember,
47557  onMuteMember,
47558  pendingMembers = [],
47559  onApproveMember,
47560  onDenyMember
47561}) {
47562  const { t: t3 } = useI18n();
47563  const callObjectRef = (0, import_react4.useRef)(null);
47564  const pendingDestroyRef = (0, import_react4.useRef)(Promise.resolve());
47565  const initialMediaRef = (0, import_react4.useRef)(initialMedia);
47566  const recordingStartedRef = (0, import_react4.useRef)(false);
47567  const [status, setStatus] = (0, import_react4.useState)("connecting");
47568  const [error2, setError] = (0, import_react4.useState)("");
47569  const [participants, setParticipants] = (0, import_react4.useState)({});
47570  const [localAudioEnabled, setLocalAudioEnabled] = (0, import_react4.useState)(false);
47571  const [localVideoEnabled, setLocalVideoEnabled] = (0, import_react4.useState)(false);
47572  const [joinedAt, setJoinedAt] = (0, import_react4.useState)(null);
47573  const [elapsedSeconds, setElapsedSeconds] = (0, import_react4.useState)(0);
47574  const [selfIsMain, setSelfIsMain] = (0, import_react4.useState)(false);
47575  const [uiHidden, setUiHidden] = (0, import_react4.useState)(false);
47576  const [layoutMode, setLayoutMode] = (0, import_react4.useState)("auto");
47577  const [participantsOpen, setParticipantsOpen] = (0, import_react4.useState)(false);
47578  const [actionSheetTarget, setActionSheetTarget] = (0, import_react4.useState)(null);
47579  const [dmState, dispatchDm] = (0, import_react4.useReducer)(dmReducer, DM_INITIAL_STATE);
47580  const dmStateRef = (0, import_react4.useRef)(dmState);
47581  (0, import_react4.useEffect)(() => {
47582    dmStateRef.current = dmState;
47583  }, [dmState]);
47584  const dmConnectionRef = (0, import_react4.useRef)(null);
47585  const [chatDraft, setChatDraft] = (0, import_react4.useState)("");
47586  const [chatSending, setChatSending] = (0, import_react4.useState)(false);
47587  const chatInputRef = (0, import_react4.useRef)(null);
47588  const [keyboardOpen, setKeyboardOpen] = (0, import_react4.useState)(false);
47589  const [leaveArmed, setLeaveArmed] = (0, import_react4.useState)(false);
47590  const leaveTimerRef = (0, import_react4.useRef)(null);
47591  const guestLabel = t3("call.guest");
47592  const localDisplayName = displayName || guestLabel;
47593  const lastSentUserDataRef = (0, import_react4.useRef)("");
47594  const [effectsOpen, setEffectsOpen] = (0, import_react4.useState)(false);
47595  const localFxDirtyRef = (0, import_react4.useRef)(false);
47596  function loadFxFromStorage() {
47597    try {
47598      const grade = localStorage.getItem("yano_prejoin_grade");
47599      const soft = localStorage.getItem("yano_prejoin_soft");
47600      const vignette = localStorage.getItem("yano_prejoin_vignette");
47601      const faceBlur = localStorage.getItem("yano_prejoin_face_blur");
47602      const faceBlurAmount = localStorage.getItem("yano_prejoin_face_blur_amount");
47603      return {
47604        grade: grade || void 0,
47605        soft: soft ? soft === "1" : void 0,
47606        vignette: vignette ? vignette === "1" : void 0,
47607        faceBlur: faceBlur ? faceBlur === "1" : void 0,
47608        faceBlurPx: faceBlurAmount ? Number(faceBlurAmount) : void 0
47609      };
47610    } catch (_error) {
47611      return {};
47612    }
47613  }
47614  const [localFx, setLocalFx] = (0, import_react4.useState)(() => normalizeVideoEffects({ ...localVideoEffects || {}, ...loadFxFromStorage() }));
47615  (0, import_react4.useEffect)(() => {
47616    if (localFxDirtyRef.current) return;
47617    const next = normalizeVideoEffects({ ...localVideoEffects || {}, ...loadFxFromStorage() });
47618    setLocalFx(next);
47619  }, [localVideoEffects, status]);
47620  function persistLocalFx(nextFx) {
47621    try {
47622      localStorage.setItem("yano_prejoin_grade", nextFx.grade);
47623      localStorage.setItem("yano_prejoin_soft", nextFx.soft ? "1" : "0");
47624      localStorage.setItem("yano_prejoin_vignette", nextFx.vignette ? "1" : "0");
47625      localStorage.setItem("yano_prejoin_face_blur", nextFx.faceBlur ? "1" : "0");
47626      localStorage.setItem("yano_prejoin_face_blur_amount", String(nextFx.faceBlurPx));
47627    } catch (_error) {
47628    }
47629  }
47630  function updateLocalFx(patch) {
47631    localFxDirtyRef.current = true;
47632    setLocalFx((current) => {
47633      const next = normalizeVideoEffects({ ...current, ...patch });
47634      persistLocalFx(next);
47635      return next;
47636    });
47637  }
47638  const stubMediaRef = (0, import_react4.useRef)({ stream: null, audioTrack: null, videoTrack: null });
47639  const updateStubParticipants = (audioTrack, videoTrack) => {
47640    const audioState = audioTrack && audioTrack.enabled ? "playable" : "off";
47641    const videoState = videoTrack && videoTrack.enabled ? "playable" : "off";
47642    setParticipants({
47643      local: {
47644        user_name: localDisplayName,
47645        user_id: currentUserId ? `user-${currentUserId}` : null,
47646        tracks: {
47647          audio: { state: audioState, track: audioTrack },
47648          video: { state: videoState, track: videoTrack }
47649        }
47650      }
47651    });
47652  };
47653  function handleVideoAreaClick(event) {
47654    if (event.target.closest("button, input, a, form, [data-pip], .yano-participants-panel, .yano-overlay-chat")) return;
47655    if (chatOpen) {
47656      onToggleChat?.();
47657      setUiHidden(false);
47658      return;
47659    }
47660    if (uiHidden) {
47661      setUiHidden(false);
47662    } else {
47663      setUiHidden(true);
47664    }
47665  }
47666  (0, import_react4.useEffect)(() => {
47667    initialMediaRef.current = initialMedia;
47668  }, [initialMedia]);
47669  (0, import_react4.useEffect)(() => {
47670    let active = true;
47671    async function connect() {
47672      setStatus("connecting");
47673      setError("");
47674      setParticipants({});
47675      recordingStartedRef.current = false;
47676      try {
47677        if (join?.vendor === "stub") {
47678          if (stubMediaRef.current.stream) {
47679            stubMediaRef.current.stream.getTracks().forEach((track2) => track2.stop());
47680          }
47681          stubMediaRef.current = { stream: null, audioTrack: null, videoTrack: null };
47682          updateStubParticipants(null, null);
47683          setStatus("live");
47684          setJoinedAt(Date.now());
47685          return;
47686        }
47687        if (!join?.room_url || !join?.token) return;
47688        try {
47689          await pendingDestroyRef.current;
47690        } catch (_3) {
47691        }
47692        if (!active) return;
47693        const module = await Promise.resolve().then(() => (init_daily_esm(), daily_esm_exports));
47694        if (!active) return;
47695        const Daily = module.default || module;
47696        const existingCallObject = callObjectRef.current || Daily.getCallInstance?.();
47697        if (existingCallObject) {
47698          await destroyDailyCallObject(existingCallObject);
47699          if (callObjectRef.current === existingCallObject) {
47700            callObjectRef.current = null;
47701          }
47702        }
47703        if (!active) return;
47704        const callObject = Daily.createCallObject({
47705          subscribeToTracksAutomatically: true
47706        });
47707        callObjectRef.current = callObject;
47708        const syncParticipants = () => {
47709          if (!active) return;
47710          const nextParticipants = Object.fromEntries(
47711            Object.entries(callObject.participants()).map(([key, participant]) => [
47712              key,
47713              participant ? {
47714                ...participant,
47715                tracks: participant.tracks ? { ...participant.tracks } : participant.tracks
47716              } : participant
47717            ])
47718          );
47719          setParticipants(nextParticipants);
47720        };
47721        callObject.on("joined-meeting", () => {
47722          setStatus("live");
47723          setJoinedAt(Date.now());
47724          syncParticipants();
47725        });
47726        callObject.on("left-meeting", () => {
47727          setStatus("ended");
47728          syncParticipants();
47729        });
47730        callObject.on("participant-joined", syncParticipants);
47731        callObject.on("participant-updated", syncParticipants);
47732        callObject.on("participant-left", syncParticipants);
47733        callObject.on("track-started", syncParticipants);
47734        callObject.on("track-stopped", syncParticipants);
47735        callObject.on("error", () => {
47736          setStatus("error");
47737          setError(t3("call.connect_failed"));
47738        });
47739        callObject.on("camera-error", () => {
47740          setStatus("error");
47741          setError(t3("call.camera_access_failed"));
47742        });
47743        await callObject.join({
47744          url: join.room_url,
47745          token: join.token,
47746          subscribeToTracksAutomatically: true,
47747          // Join first, then enable local devices after the meeting is live.
47748          // This avoids aborting the whole call on browsers that fail device init
47749          // during join() even though the room/token are valid.
47750          startVideoOff: true,
47751          startAudioOff: true
47752        });
47753        setStatus("live");
47754        setJoinedAt(Date.now());
47755        if (join?.recording?.auto_start_method === "call_object" && join?.recording?.should_auto_start && !recordingStartedRef.current) {
47756          try {
47757            recordingStartedRef.current = true;
47758            await callObject.startRecording({
47759              type: join.recording.type
47760            });
47761          } catch (recordingError) {
47762            const rawMessage = recordingError?.message || recordingError?.errorMsg || "";
47763            if (!/already.*record/i.test(rawMessage)) {
47764              setError(t3("call.recording_failed"));
47765            }
47766          }
47767        }
47768        syncParticipants();
47769      } catch (event) {
47770        console.error("Failed to initialize call", {
47771          vendor: join?.vendor,
47772          room_url: join?.room_url,
47773          token_present: Boolean(join?.token),
47774          error: event
47775        });
47776        setStatus("error");
47777        setError(event?.name === "NotAllowedError" ? t3("call.camera_access_failed") : t3("call.initialize_failed"));
47778      }
47779    }
47780    connect();
47781    return () => {
47782      active = false;
47783      if (callObjectRef.current) {
47784        const obj = callObjectRef.current;
47785        callObjectRef.current = null;
47786        pendingDestroyRef.current = pendingDestroyRef.current.then(() => destroyDailyCallObject(obj)).catch(() => {
47787        });
47788      }
47789      if (stubMediaRef.current.stream) {
47790        stubMediaRef.current.stream.getTracks().forEach((track2) => track2.stop());
47791        stubMediaRef.current = { stream: null, audioTrack: null, videoTrack: null };
47792      }
47793    };
47794  }, [join?.vendor, join?.room_url, join?.token]);
47795  (0, import_react4.useEffect)(() => {
47796    if (join?.vendor !== "stub") return;
47797    if (status !== "live") return;
47798    const { audioTrack, videoTrack } = stubMediaRef.current;
47799    updateStubParticipants(audioTrack, videoTrack);
47800  }, [join?.vendor, currentUserId, localDisplayName, status]);
47801  (0, import_react4.useEffect)(() => {
47802    if (status !== "live") return;
47803    const callObject = callObjectRef.current;
47804    if (!callObject?.setUserData) return;
47805    const fx = normalizeVideoEffects(localFx || {});
47806    const payload = JSON.stringify({ fx, display_name: localDisplayName });
47807    if (payload === lastSentUserDataRef.current) return;
47808    lastSentUserDataRef.current = payload;
47809    try {
47810      const existing = callObject.participants()?.local?.userData || {};
47811      callObject.setUserData({
47812        ...existing,
47813        display_name: localDisplayName,
47814        yano_fx: fx
47815      });
47816    } catch (_error) {
47817    }
47818  }, [status, localDisplayName, localFx]);
47819  (0, import_react4.useEffect)(() => {
47820    if (!joinedAt || status !== "live") {
47821      setElapsedSeconds(0);
47822      return void 0;
47823    }
47824    const interval = window.setInterval(() => {
47825      setElapsedSeconds(Math.floor((Date.now() - joinedAt) / 1e3));
47826    }, 1e3);
47827    return () => {
47828      window.clearInterval(interval);
47829    };
47830  }, [joinedAt, status]);
47831  const participantTiles = (0, import_react4.useMemo)(() => {
47832    const entries = Object.entries(participants).map(([key, participant]) => ({ key, participant })).sort((left, right) => {
47833      if (left.key === "local") return 1;
47834      if (right.key === "local") return -1;
47835      return left.key.localeCompare(right.key);
47836    });
47837    return entries;
47838  }, [participants]);
47839  const participantTilesRef = (0, import_react4.useRef)(participantTiles);
47840  const roomMembersRef = (0, import_react4.useRef)(roomMembers);
47841  (0, import_react4.useEffect)(() => {
47842    participantTilesRef.current = participantTiles;
47843  }, [participantTiles]);
47844  (0, import_react4.useEffect)(() => {
47845    roomMembersRef.current = roomMembers;
47846  }, [roomMembers]);
47847  const remoteAudioTracks = (0, import_react4.useMemo)(
47848    () => participantTiles.filter(({ key, participant }) => key !== "local" && hasPlayableTrack(participant, "audio")).map(({ key, participant }) => ({
47849      key,
47850      track: audioTrackFor(participant)
47851    })).filter(({ track: track2 }) => Boolean(track2)),
47852    [participantTiles]
47853  );
47854  const localParticipant = participants.local || null;
47855  const remoteParticipants = participantTiles.filter(({ key }) => key !== "local").map(({ participant }) => participant);
47856  const pendingJoinCount = isHost ? pendingMembers.length : 0;
47857  const leadRemote = remoteParticipants[0] || null;
47858  const resolvedLocalAudio = localParticipant ? hasPlayableTrack(localParticipant, "audio") : localAudioEnabled;
47859  const resolvedLocalVideo = localParticipant ? hasPlayableTrack(localParticipant, "video") : localVideoEnabled;
47860  const tileCount = Math.max(participantTiles.length, 2);
47861  const gridClassName = tileCount <= 2 ? "grid-cols-1 md:grid-cols-2" : tileCount <= 4 ? "grid-cols-1 sm:grid-cols-2" : "grid-cols-2 xl:grid-cols-3";
47862  const useFocusLayout = layoutMode === "focus" ? true : layoutMode === "grid" ? false : participantTiles.length <= 2;
47863  const mainParticipant = useFocusLayout && (selfIsMain || !leadRemote) ? localParticipant : leadRemote;
47864  const mainParticipantName = displayNameFor(mainParticipant, selfIsMain ? localDisplayName : guestLabel);
47865  const mainParticipantVideo = videoTrackFor(mainParticipant);
47866  const mainParticipantVideoOn = hasPlayableTrack(mainParticipant, "video") && Boolean(mainParticipantVideo);
47867  const pipParticipant = useFocusLayout ? selfIsMain ? leadRemote : localParticipant : null;
47868  const pipName = pipParticipant ? displayNameFor(pipParticipant, pipParticipant === localParticipant ? localDisplayName : guestLabel) : "";
47869  const pipVideo = videoTrackFor(pipParticipant);
47870  const pipVideoOn = hasPlayableTrack(pipParticipant, "video") && Boolean(pipVideo);
47871  const remoteHasVideo = leadRemote ? hasPlayableTrack(leadRemote, "video") : false;
47872  const remoteHasAudio = leadRemote ? hasPlayableTrack(leadRemote, "audio") : false;
47873  const localHasVideo = resolvedLocalVideo;
47874  const bothHaveVideo = remoteHasVideo && localHasVideo;
47875  const neitherHasVideo = !remoteHasVideo && !localHasVideo;
47876  const showPendingJoinNotice = pendingJoinCount > 0;
47877  const formatDmTime = (0, import_react4.useCallback)((value) => {
47878    if (!value) return t3("call.dm_just_now");
47879    const date = value instanceof Date ? value : new Date(value);
47880    if (Number.isNaN(date.getTime())) return t3("call.dm_just_now");
47881    if (Date.now() - date.getTime() < 6e4) return t3("call.dm_just_now");
47882    return new Intl.DateTimeFormat(void 0, {
47883      hour: "numeric",
47884      minute: "2-digit"
47885    }).format(date);
47886  }, [t3]);
47887  const normalizeDmMessage = (0, import_react4.useCallback)((message) => ({
47888    id: message.id,
47889    from: message.sender?.id === currentUserId ? "you" : "them",
47890    text: message.body,
47891    createdAt: message.created_at
47892  }), [currentUserId, formatDmTime]);
47893  function latestMessageFor(participant) {
47894    if (!participant || !chatOverlayMessages.length) return null;
47895    const pid = participant.user_id;
47896    if (!pid) return null;
47897    const backendId = parseInt(pid.replace("user-", ""), 10);
47898    if (!backendId) return null;
47899    for (let i3 = chatOverlayMessages.length - 1; i3 >= 0; i3--) {
47900      if (chatOverlayMessages[i3].sender?.id === backendId) return chatOverlayMessages[i3];
47901    }
47902    return null;
47903  }
47904  const buildParticipantTarget = (0, import_react4.useCallback)((participant, isLocal) => {
47905    if (!participant) return null;
47906    const backendUserId = participant.user_id ? parseInt(String(participant.user_id).replace("user-", ""), 10) : null;
47907    const member = backendUserId ? roomMembers.find((m3) => m3.id === backendUserId) : null;
47908    return {
47909      key: participant.user_id || (isLocal ? "local" : participant.session_id || participant.user_name || "unknown"),
47910      participant,
47911      isLocal,
47912      backendUserId,
47913      name: displayNameFor(participant, isLocal ? localDisplayName : guestLabel),
47914      avatarUrl: member?.avatar_url || "",
47915      gender: member?.gender || "",
47916      bio: member?.bio || "",
47917      isHostMember: member?.role === "host",
47918      mutedByHost: Boolean(member?.muted_by_host)
47919    };
47920  }, [roomMembers, localDisplayName, guestLabel]);
47921  const buildTargetForUser = (0, import_react4.useCallback)((userId, fallbackName = guestLabel) => {
47922    if (!userId) return null;
47923    const participantEntry = participantTilesRef.current.find(({ participant }) => {
47924      const backendUserId = participant?.user_id ? parseInt(String(participant.user_id).replace("user-", ""), 10) : null;
47925      return backendUserId === userId;
47926    });
47927    if (participantEntry) {
47928      const isLocal = participantEntry.key === "local";
47929      const member2 = roomMembersRef.current.find((item) => item.id === userId);
47930      return {
47931        key: participantEntry.participant.user_id || (isLocal ? "local" : participantEntry.participant.session_id || participantEntry.participant.user_name || `user-${userId}`),
47932        participant: participantEntry.participant,
47933        isLocal,
47934        backendUserId: userId,
47935        name: displayNameFor(participantEntry.participant, isLocal ? localDisplayName : fallbackName),
47936        avatarUrl: member2?.avatar_url || "",
47937        gender: member2?.gender || "",
47938        bio: member2?.bio || "",
47939        isHostMember: member2?.role === "host",
47940        mutedByHost: Boolean(member2?.muted_by_host)
47941      };
47942    }
47943    const member = roomMembersRef.current.find((item) => item.id === userId);
47944    return {
47945      key: `user-${userId}`,
47946      participant: null,
47947      isLocal: false,
47948      backendUserId: userId,
47949      name: member?.display_name || fallbackName,
47950      avatarUrl: member?.avatar_url || "",
47951      gender: member?.gender || "",
47952      bio: member?.bio || "",
47953      isHostMember: member?.role === "host",
47954      mutedByHost: Boolean(member?.muted_by_host)
47955    };
47956  }, [guestLabel, localDisplayName]);
47957  const handleParticipantTap = (0, import_react4.useCallback)((participant, isLocal) => {
47958    const target = buildParticipantTarget(participant, isLocal);
47959    if (!target) return;
47960    const existing = dmStateRef.current.conversations[target.key];
47961    if (existing) {
47962      dispatchDm({ type: "OPEN", target });
47963    } else {
47964      setActionSheetTarget(target);
47965    }
47966  }, [buildParticipantTarget]);
47967  const closeActionSheet = (0, import_react4.useCallback)(() => setActionSheetTarget(null), []);
47968  const avatarUrlForParticipant = (0, import_react4.useCallback)((participant, isLocal = false) => {
47969    const backendUserId = participant?.user_id ? parseInt(String(participant.user_id).replace("user-", ""), 10) : isLocal ? currentUserId : null;
47970    if (!backendUserId) return "";
47971    return roomMembersRef.current.find((member) => member.id === backendUserId)?.avatar_url || "";
47972  }, [currentUserId]);
47973  const openDm = (0, import_react4.useCallback)((target) => {
47974    if (!target) return;
47975    dispatchDm({ type: "OPEN", target });
47976  }, []);
47977  const minimizeDm = (0, import_react4.useCallback)(() => dispatchDm({ type: "MINIMIZE" }), []);
47978  const sendDmMessage = (0, import_react4.useCallback)(async (text) => {
47979    const key = dmStateRef.current.currentKey;
47980    const conv = key ? dmStateRef.current.conversations[key] : null;
47981    const targetUserId = conv?.target?.backendUserId;
47982    const body = text?.trim();
47983    if (!key || !targetUserId || !body || !apiToken || !roomCode) return false;
47984    dispatchDm({ type: "SEND_START", key });
47985    try {
47986      const payload = await api.sendDirectMessage(apiToken, roomCode, targetUserId, body);
47987      if (!payload?.message) {
47988        dispatchDm({ type: "SEND_ERROR", key, error: t3("chat.send_error") });
47989        return false;
47990      }
47991      dispatchDm({
47992        type: "SEND",
47993        key,
47994        message: normalizeDmMessage(payload.message)
47995      });
47996      return true;
47997    } catch (_error) {
47998      dispatchDm({ type: "SEND_ERROR", key, error: t3("chat.send_error") });
47999      return false;
48000    }
48001  }, [apiToken, normalizeDmMessage, roomCode, t3]);
48002  const handleDmAvatarTap = (0, import_react4.useCallback)(() => {
48003    const key = dmStateRef.current.currentKey;
48004    const conv = key ? dmStateRef.current.conversations[key] : null;
48005    if (conv?.target) setActionSheetTarget(conv.target);
48006  }, []);
48007  const dismissDmToast = (0, import_react4.useCallback)(() => dispatchDm({ type: "DISMISS_TOAST" }), []);
48008  const handleToastTap = (0, import_react4.useCallback)(() => {
48009    const t4 = dmStateRef.current.toast;
48010    if (!t4) return;
48011    dispatchDm({ type: "OPEN", target: t4.target });
48012  }, []);
48013  const participantDmInfo = (0, import_react4.useCallback)((participant, isLocal) => {
48014    if (!participant) return null;
48015    const key = participant.user_id || (isLocal ? "local" : null);
48016    if (!key) return null;
48017    const conv = dmState.conversations[key];
48018    if (!conv) return null;
48019    return { active: true, unread: conv.unread || 0 };
48020  }, [dmState.conversations]);
48021  const currentDmConv = dmState.currentKey ? dmState.conversations[dmState.currentKey] : null;
48022  const currentDmTarget = currentDmConv?.target || null;
48023  const currentDmMessages = currentDmConv?.messages || [];
48024  (0, import_react4.useEffect)(() => {
48025    const key = currentDmTarget?.key;
48026    const targetUserId = currentDmTarget?.backendUserId;
48027    if (!key || !targetUserId || !apiToken || !roomCode) return;
48028    if (currentDmConv?.loading || currentDmConv?.loaded) return;
48029    let cancelled = false;
48030    async function loadConversation() {
48031      dispatchDm({ type: "LOAD_START", key });
48032      try {
48033        const payload = await api.getDirectMessages(apiToken, roomCode, targetUserId);
48034        if (cancelled) return;
48035        dispatchDm({
48036          type: "LOAD_SUCCESS",
48037          key,
48038          messages: (payload.messages || []).map(normalizeDmMessage)
48039        });
48040      } catch (_error) {
48041        if (!cancelled) {
48042          dispatchDm({ type: "LOAD_ERROR", key, error: "" });
48043        }
48044      }
48045    }
48046    loadConversation();
48047    return () => {
48048      cancelled = true;
48049    };
48050  }, [apiToken, currentDmConv?.loaded, currentDmTarget?.backendUserId, currentDmTarget?.key, normalizeDmMessage, roomCode]);
48051  (0, import_react4.useEffect)(() => {
48052    if (!apiToken || !roomCode || !currentUserId) {
48053      if (dmConnectionRef.current) {
48054        dmConnectionRef.current.unsubscribe();
48055        dmConnectionRef.current = null;
48056      }
48057      return void 0;
48058    }
48059    const connection = subscribeToUserChannel(apiToken, {
48060      onEvent(data) {
48061        if (data?.type !== "direct_message") return;
48062        if (data.room_code !== roomCode) return;
48063        if (!data.other_user?.id || !data.message) return;
48064        const target = buildTargetForUser(data.other_user.id, data.other_user.display_name || guestLabel);
48065        if (!target) return;
48066        dispatchDm({
48067          type: "RECEIVE",
48068          key: target.key,
48069          target,
48070          message: normalizeDmMessage(data.message)
48071        });
48072      }
48073    });
48074    dmConnectionRef.current = connection;
48075    return () => {
48076      connection.unsubscribe();
48077      if (dmConnectionRef.current === connection) {
48078        dmConnectionRef.current = null;
48079      }
48080    };
48081  }, [apiToken, buildTargetForUser, currentUserId, guestLabel, normalizeDmMessage, roomCode]);
48082  const videoParticipants = (0, import_react4.useMemo)(
48083    () => participantTiles.filter(({ key, participant }) => {
48084      if (key === "local") return resolvedLocalVideo;
48085      return hasPlayableTrack(participant, "video");
48086    }),
48087    [participantTiles, resolvedLocalVideo]
48088  );
48089  const nonVideoParticipants = (0, import_react4.useMemo)(
48090    () => participantTiles.filter(({ key, participant }) => {
48091      if (key === "local") return !resolvedLocalVideo;
48092      return !hasPlayableTrack(participant, "video");
48093    }),
48094    [participantTiles, resolvedLocalVideo]
48095  );
48096  async function handleChatSend() {
48097    const body = chatDraft.trim();
48098    if (!body || chatSending || !onSendMessage) return;
48099    setChatSending(true);
48100    try {
48101      await onSendMessage(body);
48102      setChatDraft("");
48103    } catch (_error) {
48104    } finally {
48105      setChatSending(false);
48106    }
48107  }
48108  (0, import_react4.useEffect)(() => {
48109    if (chatOpen && chatInputRef.current) {
48110      chatInputRef.current.focus();
48111    }
48112  }, [chatOpen]);
48113  function handleLeaveClick() {
48114    if (leaveArmed) {
48115      clearTimeout(leaveTimerRef.current);
48116      setLeaveArmed(false);
48117      onLeaveRoom?.();
48118      return;
48119    }
48120    setLeaveArmed(true);
48121    leaveTimerRef.current = setTimeout(() => setLeaveArmed(false), 3e3);
48122  }
48123  (0, import_react4.useEffect)(() => {
48124    return () => clearTimeout(leaveTimerRef.current);
48125  }, []);
48126  const isMobileRef = (0, import_react4.useRef)(typeof window !== "undefined" && window.matchMedia("(max-width: 640px)").matches);
48127  function handleChatInputFocus() {
48128    if (isMobileRef.current) setKeyboardOpen(true);
48129  }
48130  function handleChatInputBlur() {
48131    setKeyboardOpen(false);
48132  }
48133  async function toggleLocalAudio() {
48134    const nextValue = !resolvedLocalAudio;
48135    setLocalAudioEnabled(nextValue);
48136    try {
48137      if (join?.vendor === "stub") {
48138        const current = stubMediaRef.current;
48139        if (!nextValue && current.audioTrack) {
48140          current.audioTrack.enabled = false;
48141          updateStubParticipants(current.audioTrack, current.videoTrack);
48142          return;
48143        }
48144        if (nextValue) {
48145          if (current.audioTrack && current.audioTrack.readyState !== "ended") {
48146            current.audioTrack.enabled = true;
48147            updateStubParticipants(current.audioTrack, current.videoTrack);
48148            return;
48149          }
48150          const stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: false });
48151          const track2 = stream.getAudioTracks()[0] || null;
48152          if (!track2) {
48153            stream.getTracks().forEach((t4) => t4.stop());
48154            throw new Error("No audio track");
48155          }
48156          if (current.stream) {
48157            current.stream.addTrack(track2);
48158            stream.getTracks().forEach((t4) => t4 !== track2 && t4.stop());
48159          } else {
48160            current.stream = stream;
48161          }
48162          current.audioTrack = track2;
48163          updateStubParticipants(current.audioTrack, current.videoTrack);
48164          return;
48165        }
48166        return;
48167      }
48168      callObjectRef.current?.setLocalAudio(nextValue);
48169    } catch (_error) {
48170      setLocalAudioEnabled(!nextValue);
48171    }
48172  }
48173  async function toggleLocalVideo() {
48174    const nextValue = !resolvedLocalVideo;
48175    setLocalVideoEnabled(nextValue);
48176    try {
48177      if (join?.vendor === "stub") {
48178        const current = stubMediaRef.current;
48179        if (!nextValue && current.videoTrack) {
48180          current.videoTrack.enabled = false;
48181          updateStubParticipants(current.audioTrack, current.videoTrack);
48182          return;
48183        }
48184        if (nextValue) {
48185          if (current.videoTrack && current.videoTrack.readyState !== "ended") {
48186            current.videoTrack.enabled = true;
48187            updateStubParticipants(current.audioTrack, current.videoTrack);
48188            return;
48189          }
48190          const stream = await navigator.mediaDevices.getUserMedia({ audio: false, video: true });
48191          const track2 = stream.getVideoTracks()[0] || null;
48192          if (!track2) {
48193            stream.getTracks().forEach((t4) => t4.stop());
48194            throw new Error("No video track");
48195          }
48196          if (current.stream) {
48197            current.stream.addTrack(track2);
48198            stream.getTracks().forEach((t4) => t4 !== track2 && t4.stop());
48199          } else {
48200            current.stream = stream;
48201          }
48202          current.videoTrack = track2;
48203          updateStubParticipants(current.audioTrack, current.videoTrack);
48204          return;
48205        }
48206        return;
48207      }
48208      callObjectRef.current?.setLocalVideo(nextValue);
48209    } catch (_error) {
48210      setLocalVideoEnabled(!nextValue);
48211    }
48212  }
48213  return /* @__PURE__ */ import_react4.default.createElement("div", { className: "relative h-full overflow-hidden bg-[#1a0e2e]", onClick: handleVideoAreaClick }, /* @__PURE__ */ import_react4.default.createElement("div", { className: `yano-ui-layer absolute inset-x-0 top-0 z-10 flex items-center justify-between gap-3 px-4 py-4 sm:px-5 ${uiHidden || keyboardOpen ? "yano-ui-layer--hidden" : ""}` }, /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex min-w-0 items-center gap-3" }, /* @__PURE__ */ import_react4.default.createElement(YanoLogo, { className: "h-7 w-7" }), /* @__PURE__ */ import_react4.default.createElement("div", { className: "h-5 w-px bg-violet-400/20" }), /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex min-w-0 items-center gap-2.5" }, /* @__PURE__ */ import_react4.default.createElement(
48214    AvatarBadge,
48215    {
48216      name: mainParticipantName || title || t3("call.room_fallback"),
48217      avatarUrl: avatarUrlForParticipant(mainParticipant, mainParticipant === localParticipant),
48218      className: "flex h-7 w-7 items-center justify-center rounded-full bg-violet-500/20 text-[10px] font-extrabold text-violet-200",
48219      imgClassName: "h-full w-full object-cover"
48220    }
48221  ), /* @__PURE__ */ import_react4.default.createElement("p", { className: "truncate text-sm font-bold text-violet-200" }, mainParticipantName || title || t3("call.room_fallback")))), /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex items-center gap-2" }, participantTiles.length > 2 ? /* @__PURE__ */ import_react4.default.createElement(
48222    "button",
48223    {
48224      type: "button",
48225      className: "flex h-8 w-8 items-center justify-center rounded-lg bg-violet-500/12 text-violet-300 transition hover:bg-violet-500/20",
48226      onClick: () => setLayoutMode((m3) => m3 === "grid" ? "focus" : "grid"),
48227      "aria-label": layoutMode === "grid" ? t3("call.focus_view") : t3("call.grid_view"),
48228      title: layoutMode === "grid" ? t3("call.focus_view") : t3("call.grid_view")
48229    },
48230    layoutMode === "grid" ? /* @__PURE__ */ import_react4.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round" }, /* @__PURE__ */ import_react4.default.createElement("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }), /* @__PURE__ */ import_react4.default.createElement("line", { x1: "3", y1: "15", x2: "21", y2: "15" })) : /* @__PURE__ */ import_react4.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round" }, /* @__PURE__ */ import_react4.default.createElement("rect", { x: "3", y: "3", width: "7", height: "7", rx: "1" }), /* @__PURE__ */ import_react4.default.createElement("rect", { x: "14", y: "3", width: "7", height: "7", rx: "1" }), /* @__PURE__ */ import_react4.default.createElement("rect", { x: "3", y: "14", width: "7", height: "7", rx: "1" }
48230), /* @__PURE__ */ import_react4.default.createElement("rect", { x: "14", y: "14", width: "7", height: "7", rx: "1" }))
48231  ) : null, /* @__PURE__ */ import_react4.default.createElement("div", { className: "rounded-full bg-violet-500/12 px-3 py-1" }, /* @__PURE__ */ import_react4.default.createElement("span", { className: "font-display text-sm font-bold tabular-nums text-violet-300" }, formatDuration(elapsedSeconds))))), chatOverlayMessages.length ? /* @__PURE__ */ import_react4.default.createElement("div", { className: `yano-overlay-chat ${chatOpen ? keyboardOpen ? "yano-overlay-chat--keyboard" : "yano-overlay-chat--raised" : ""}` }, chatOverlayMessages.map((message) => {
48232    const self2 = message.sender?.id === currentUserId;
48233    return /* @__PURE__ */ import_react4.default.createElement("div", { key: message.id, className: "yano-overlay-chat__line" }, /* @__PURE__ */ import_react4.default.createElement("span", { className: `yano-overlay-chat__name ${self2 ? "yano-overlay-chat__name--self" : "yano-overlay-chat__name--other"}` }, self2 ? t3("call.you") : message.sender?.display_name || guestLabel), /* @__PURE__ */ import_react4.default.createElement("span", { className: "text-lg font-semibold text-white/90 sm:text-base" }, message.body));
48234  })) : null, participantsOpen ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "yano-participants-panel" }, /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex items-center justify-between border-b border-violet-500/10 px-4 py-3" }, /* @__PURE__ */ import_react4.default.createElement("h3", { className: "font-display text-sm font-bold text-violet-200" }
48234, t3("call.participants")), /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex items-center gap-2" }, isHost ? /* @__PURE__ */ import_react4.default.createElement(
48235    "button",
48236    {
48237      type: "button",
48238      className: `inline-flex items-center gap-1.5 rounded-full px-2.5 py-1 text-xs font-semibold transition ${roomLocked ? "bg-violet-400/20 text-violet-200" : "bg-violet-500/10 text-violet-400/70 hover:bg-violet-500/15 hover:text-violet-300"}`,
48239      onClick: roomLocked ? onUnlockRoom : onLockRoom,
48240      title: roomLocked ? t3("call.unlock_room") : t3("call.lock_room")
48241    },
48242    roomLocked ? /* @__PURE__ */ import_react4.default.createElement(LockClosedIcon_default, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ import_react4.default.createElement(LockOpenIcon_default, { className: "h-3.5 w-3.5" }),
48243    roomLocked ? t3("call.locked") : t3("call.unlocked")
48244  ) : roomLocked ? /* @__PURE__ */ import_react4.default.createElement("span", { className: "inline-flex items-center gap-1 rounded-full bg-violet-500/10 px-2.5 py-1 text-xs font-semibold text-violet-400/70" }, /* @__PURE__ */ import_react4.default.createElement(LockClosedIcon_default, { className: "h-3.5 w-3.5" }), t3("call.locked")) : null, /* @__PURE__ */ import_react4.default.createElement("button", { type: "button", className: "rounded-full p-1 text-violet-400/60 transition hover:text-violet-200", onClick: () => setParticipantsOpen(false) }, /* @__PURE__ */ import_react4.default.createElement(XCircleIcon_default, { className: "h-5 w-5" })))), /* @__PURE__ */ import_react4.default.createElement("ul", { className: "flex-1 overflow-y-auto px-2 py-2" }, participantTiles.map(({ key, participant }) => {
48245    const isSelf = key === "local";
48246    const name = displayNameFor(participant, isSelf ? localDisplayName : guestLabel);
48247    const backendUserId = participant.user_id ? parseInt(participant.user_id.replace("user-", ""), 10) : null;
48248    const backendMember = backendUserId ? roomMembers.find((m3) => m3.id === backendUserId) : null;
48249    const isHostMember = backendMember?.role === "host";
48250    const mutedByHost = backendMember?.muted_by_host || false;
48251    const hasAudio = hasPlayableTrack(participant, "audio");
48252    const dm = participantDmInfo(participant, isSelf);
48253    return /* @__PURE__ */ import_react4.default.createElement("li", { key, className: "flex items-center gap-1 rounded-xl pr-2 transition hover:bg-violet-500/8" }, /* @__PURE__ */ import_react4.default.createElement(
48254      "button",
48255      {
48256        type: "button",
48257        onClick: () => handleParticipantTap(participant, isSelf),
48258        className: "flex min-w-0 flex-1 items-center gap-2.5 rounded-xl px-2.5 py-2 text-left",
48259        "aria-label": dm?.active ? t3("call.dm_active_indicator") : t3("call.profile_open_actions")
48260      },
48261      /* @__PURE__ */ import_react4.default.createElement(
48262        AvatarBadge,
48263        {
48264          name,
48265          avatarUrl: backendMember?.avatar_url,
48266          className: `grid h-8 w-8 shrink-0 place-items-center rounded-full bg-violet-500/15 text-xs font-bold text-violet-300 ${hasAudio ? "ring-2 ring-violet-400/30" : ""}`,
48267          imgClassName: "h-full w-full object-cover"
48268        },
48269        dm?.active ? /* @__PURE__ */ import_react4.default.createElement("span", { className: `yano-dm-dot ${dm.unread > 0 ? "" : "yano-dm-dot--read"}`, style: { top: "-3px", right: "-3px" } }, dm.unread > 0 ? dm.unread > 9 ? "9+" : dm.unread : null) : null
48270      ),
48271      /* @__PURE__ */ import_react4.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react4.default.createElement("p", { className: "flex items-center gap-1.5 truncate text-sm font-semibold text-violet-100" }, /* @__PURE__ */ import_react4.default.createElement("span", { className: "truncate" }, name), isSelf ? /* @__PURE__ */ import_react4.default.createElement("span", { className: "text-violet-400/50" }, t3("call.you_suffix")) : null, dm?.active ? /* @__PURE__ */ import_react4.default.createElement(ChatBubbleLeftRightIcon_default, { className: "h-3 w-3 shrink-0 text-violet-300/70" }) : null), isHostMember ? /* @__PURE__ */ import_react4.default.createElement("p", { className: "text-[10px] font-semibold text-violet-400/50" }, t3("room.host")) : null)
48272    ), isHost && !isSelf && !isHostMember && backendUserId ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex shrink-0 items-center gap-1" }, /* @__PURE__ */ import_react4.default.createElement(
48273      "button",
48274      {
48275        type: "button",
48276        className: "rounded-full p-1.5 text-violet-400/50 transition hover:bg-violet-500/15 hover:text-violet-200",
48277        onClick: () => onMuteMember?.(backendUserId, !mutedByHost),
48278        title: mutedByHost ? t3("call.unmute_member") : t3("call.mute_member")
48279      },
48280      mutedByHost ? /* @__PURE__ */ import_react4.default.createElement(SpeakerXMarkIcon_default, { className: "h-4 w-4" }) : /* @__PURE__ */ import_react4.default.createElement(SpeakerWaveIcon_default, { className: "h-4 w-4" })
48281    ), /* @__PURE__ */ import_react4.default.createElement(
48282      "button",
48283      {
48284        type: "button",
48285        className: "rounded-full p-1.5 text-violet-400/50 transition hover:bg-red-500/15 hover:text-red-300",
48286        onClick: () => onKickMember?.(backendUserId),
48287        title: t3("call.kick_member")
48288      },
48289      /* @__PURE__ */ import_react4.default.createElement(XCircleIcon_default, { className: "h-4 w-4" })
48290    )) : null, !isHost && mutedByHost ? /* @__PURE__ */ import_react4.default.createElement(SpeakerXMarkIcon_default, { className: "h-4 w-4 shrink-0 text-violet-400/40", title: t3("call.muted_by_host") }) : null);
48291  })), isHost && pendingMembers.length > 0 ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "border-t border-violet-500/10 px-2 py-2" }, /* @__PURE__ */ import_react4.default.createElement("p", { className: "px-2.5 pb-1.5 text-[10px] font-bold uppercase tracking-wider text-violet-400/50" }, t3("call.waiting_to_join")), pendingMembers.map((member) => /* @__PURE__ */ import_react4.default.createElement("div", { key: member.id, className: "flex items-center gap-2.5 rounded-xl px-2.5 py-2 transition hover:bg-violet-500/8" }, /* @__PURE__ */ import_react4.default.createElement("span", { className: "grid h-8 w-8 shrink-0 place-items-center rounded-full bg-amber-500/15 text-xs font-bold text-amber-300" }, (member.display_name || "?").slice(0, 2)), /* @__PURE__ */ import_react4.default.createElement("p", { className: "min-w-0 flex-1 truncate text-sm font-semibold text-violet-100" }, member.display_name), /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ import_react4.default.createElement(
48292    "button",
48293    {
48294      type: "button",
48295      className: "rounded-full p-1.5 text-emerald-400/70 transition hover:bg-emerald-500/15 hover:text-emerald-300",
48296      onClick: () => onApproveMember?.(member.id),
48297      title: t3("call.approve")
48298    },
48299    /* @__PURE__ */ import_react4.default.createElement(CheckCircleIcon_default, { className: "h-5 w-5" })
48300  ), /* @__PURE__ */ import_react4.default.createElement(
48301    "button",
48302    {
48303      type: "button",
48304      className: "rounded-full p-1.5 text-violet-400/50 transition hover:bg-red-500/15 hover:text-red-300",
48305      onClick: () => onDenyMember?.(member.id),
48306      title: t3("call.deny")
48307    },
48308    /* @__PURE__ */ import_react4.default.createElement(XCircleIcon_default, { className: "h-5 w-5" })
48309  ))))) : null) : null, chatOpen ? /* @__PURE__ */ import_react4.default.createElement(
48310    "div",
48311    {
48312      className: `yano-ui-layer pointer-events-auto absolute inset-x-0 z-10 px-4 ${uiHidden ? "yano-ui-layer--hidden" : ""}`,
48313      style: { bottom: keyboardOpen ? "0.35rem" : "5.25rem" }
48314    },
48315    /* @__PURE__ */ import_react4.default.createElement(
48316      "form",
48317      {
48318        className: "mx-auto flex max-w-lg items-center gap-2",
48319        onSubmit: (event) => {
48320          event.preventDefault();
48321          handleChatSend();
48322        },
48323        onClick: (event) => event.stopPropagation()
48324      },
48325      /* @__PURE__ */ import_react4.default.createElement(
48326        "input",
48327        {
48328          ref: chatInputRef,
48329          type: "text",
48330          enterKeyHint: "send",
48331          autoComplete: "off",
48332          autoCorrect: "off",
48333          onFocus: handleChatInputFocus,
48334          onBlur: handleChatInputBlur,
48335          className: "flex-1 rounded-2xl border border-white/10 bg-black/40 px-4 py-2.5 text-sm font-semibold text-white outline-none backdrop-blur-sm transition placeholder:text-white/35 focus:border-violet-400/40",
48336          value: chatDraft,
48337          onChange: (event) => setChatDraft(event.target.value),
48338          placeholder: t3("chat.input_placeholder")
48339        }
48340      ),
48341      /* @__PURE__ */ import_react4.default.createElement(
48342        "button",
48343        {
48344          type: "button",
48345          disabled: chatSending || !chatDraft.trim(),
48346          onPointerDown: (event) => {
48347            event.preventDefault();
48348            handleChatSend();
48349          },
48350          className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-white/10 text-white/80 backdrop-blur-sm transition hover:bg-white/18 disabled:opacity-30"
48351        },
48352        /* @__PURE__ */ import_react4.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor" }, /* @__PURE__ */ import_react4.default.createElement("path", { d: "M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" }))
48353      )
48354    )
48355  ) : null, /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex h-full flex-col px-3 pb-[5.5rem] pt-[4.5rem] sm:px-4 sm:pb-24 sm:pt-20" }, error2 ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "mx-auto mb-3 w-full max-w-2xl rounded-[1.3rem] bg-violet-500/10 px-4 py-3 text-sm text-violet-200" }, error2) : null, useFocusLayout ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "relative min-h-0 flex-1 overflow-hidden rounded-[1.6rem]" }, !leadRemote ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex h-full flex-col" }, localHasVideo && videoTrackFor(localParticipant) ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "min-h-0 flex-1 overflow-hidden rounded-[1.6rem]" }, /* @__PURE__ */ import_react4.default.createElement(
48356    ParticipantVideoFx,
48357    {
48358      track: videoTrackFor(localParticipant),
48359      mirrored: true,
48360      muted: true,
48361      effects: localFx,
48362      fit: "contain",
48363      className: "h-full w-full object-contain"
48364    }
48365  )) : null, /* @__PURE__ */ import_react4.default.createElement("div", { className: "shrink-0 py-3 text-center sm:py-5" }, /* @__PURE__ */ import_react4.default.createElement("p", { className: "font-display text-xl leading-none text-violet-100 sm:text-2xl" }, t3(waitingStateLabelKey(status))), roomCode || shareUrl ? /* @__P
48365URE__ */ import_react4.default.createElement("div", { className: "mt-4 flex flex-col items-center gap-3" }, roomCode ? /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement("div", { className: "text-[10px] font-extrabold uppercase tracking-[0.22em] text-violet-300/55" }, t3("call.invite_code")), /* @__PURE__ */ import_react4.default.createElement("div", { className: "inline-flex items-center justify-center rounded-full bg-violet-500/12 px-3 py-1.5 text-[11px] font-extrabold tracking-[0.2em] text-violet-200/90" }, roomCode)) : null, shareUrl ? /* @__PURE__ */ import_react4.default.createElement("button", { type: "button", onClick: onCopyLink, className: "inline-flex items-center gap-2 rounded-2xl bg-violet-500/12 px-4 py-2.5 text-sm font-bold text-violet-300 transition hover:bg-violet-500/20" }, /* @__PURE__ */ import_react4.default.createElement(CopyIcon, null), copied ? t3("home.copied") : t3("home.copy_link")) : null) : null)) : bothHaveVideo ? /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, mainParticipantVideoOn ? /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement(
48366    ParticipantVideoFx,
48367    {
48368      track: mainParticipantVideo,
48369      mirrored: mainParticipant === localParticipant,
48370      muted: mainParticipant === localParticipant,
48371      effects: mainParticipant === localParticipant ? localFx : mainParticipant?.userData?.yano_fx,
48372      fit: "contain",
48373      className: "h-full w-full object-contain"
48374    }
48375  ), latestMessageFor(mainParticipant) ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "absolute inset-x-4 top-4 z-[5]" }, /* @__PURE__ */ import_react4.default.createElement(TileMessage, { message: latestMessageFor(mainParticipant) })) : null) : /* @__PURE__ */ import_react4.default.createElement(
48376    ParticipantTile,
48377    {
48378      participant: mainParticipant,
48379      isLocal: mainParticipant === localParticipant,
48380      avatarUrl: avatarUrlForParticipant(mainParticipant, mainParticipant === localParticipant),
48381      fallbackLabel: mainParticipant === localParticipant ? localDisplayName : guestLabel,
48382      effectsOverride: mainParticipant === localParticipant ? localFx : null,
48383      hideOverlay: uiHidden,
48384      latestMessage: latestMessageFor(mainParticipant),
48385      onProfileTap: handleParticipantTap,
48386      dmInfo: participantDmInfo(mainParticipant, mainParticipant === localParticipant)
48387    }
48388  )) : neitherHasVideo ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex h-full items-center justify-center gap-16" }, /* @__PURE__ */ import_react4.default.createElement(
48389    AudioIndicator,
48390    {
48391      name: displayNameFor(leadRemote, guestLabel),
48392      avatarUrl: avatarUrlForParticipant(leadRemote, false),
48393      isLocal: false,
48394      speaking: remoteHasAudio,
48395      latestMessage: latestMessageFor(leadRemote),
48396      onTap: leadRemote ? () => handleParticipantTap(leadRemote, false) : null,
48397      dmInfo: participantDmInfo(leadRemote, false)
48398    }
48399  ), /* @__PURE__ */ import_react4.default.createElement(
48400    AudioIndicator,
48401    {
48402      name: localDisplayName,
48403      avatarUrl: avatarUrlForParticipant(localParticipant, true),
48404      isLocal: true,
48405      speaking: resolvedLocalAudio,
48406      latestMessage: latestMessageFor(localParticipant),
48407      onTap: localParticipant ? () => handleParticipantTap(localParticipant, true) : null,
48408      dmInfo: participantDmInfo(localParticipant, true)
48409    }
48410  )) : /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, remoteHasVideo ? /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement(
48411    ParticipantVideoFx,
48412    {
48413      track: videoTrackFor(leadRemote),
48414      mirrored: false,
48415      muted: false,
48416      effects: leadRemote?.userData?.yano_fx,
48417      fit: "contain",
48418      className: "h-full w-full object-contain"
48419    }
48420  ), latestMessageFor(leadRemote) ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "absolute inset-x-4 top-4 z-[5]" }, /* @__PURE__ */ import_react4.default.createElement(TileMessage, { message: latestMessageFor(leadRemote) })) : null) : localHasVideo && videoTrackFor(localParticipant) ? /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement(
48421    ParticipantVideoFx,
48422    {
48423      track: videoTrackFor(localParticipant),
48424      mirrored: true,
48425      muted: true,
48426      effects: localFx,
48427      fit: "contain",
48428      className: "h-full w-full object-contain"
48429    }
48430  ), latestMessageFor(localParticipant) ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "absolute inset-x-4 top-4 z-[5]" }, /* @__PURE__ */ import_react4.default.createElement(TileMessage, { message: latestMessageFor(localParticipant) })) : null) : /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex h-full items-center justify-center" }, /* @__PURE__ */ import_react4.default.createElement(
48431    ParticipantTile,
48432    {
48433      participant: remoteHasVideo ? localParticipant : leadRemote,
48434      isLocal: !remoteHasVideo,
48435      avatarUrl: avatarUrlForParticipant(remoteHasVideo ? localParticipant : leadRemote, !remoteHasVideo),
48436      fallbackLabel: remoteHasVideo ? localDisplayName : guestLabel,
48437      effectsOverride: !remoteHasVideo ? null : localFx,
48438      hideOverlay: uiHidden,
48439      latestMessage: latestMessageFor(remoteHasVideo ? localParticipant : leadRemote),
48440      onProfileTap: handleParticipantTap,
48441      dmInfo: participantDmInfo(remoteHasVideo ? localParticipant : leadRemote, !remoteHasVideo)
48442    }
48443  )), /* @__PURE__ */ import_react4.default.createElement("div", { "data-pip": true, className: "absolute bottom-4 right-4 z-10 flex items-center gap-2.5 rounded-2xl border border-violet-400/15 bg-[#1a0e2e]/80 px-3 py-2.5 shadow-2xl backdrop-blur-sm md:right-6" }, /* @__PURE__ */ import_react4.default.createElement(
48444    AvatarBadge,
48445    {
48446      name: remoteHasVideo ? localDisplayName : displayNameFor(leadRemote, guestLabel),
48447      avatarUrl: avatarUrlForParticipant(remoteHasVideo ? localParticipant : leadRemote, remoteHasVideo),
48448      className: `grid h-9 w-9 place-items-center rounded-full bg-violet-500/15 text-sm font-bold text-violet-200 ${remoteHasVideo ? resolvedLocalAudio ? "ring-2 ring-violet-400/30" : "" : remoteHasAudio ? "ring-2 ring-violet-400/30" : ""}`,
48449      imgClassName: "h-full w-full object-cover"
48450    }
48451  ), /* @__PURE__ */ import_react4.default.createElement("div", null, /* @__PURE__ */ import_react4.default.createElement("p", { className: "text-xs font-bold text-violet-200" }, remoteHasVideo ? t3("call.you") : displayNameFor(leadRemote, guestLabel)), /* @__P
48451URE__ */ import_react4.default.createElement("p", { className: "text-[10px] text-violet-400/50" }, (remoteHasVideo ? resolvedLocalAudio : remoteHasAudio) ? t3("call.audio_on") : t3("call.muted"))))), leadRemote && bothHaveVideo && pipParticipant ? /* @__PURE__ */ import_react4.default.createElement(
48452    "button",
48453    {
48454      "data-pip": true,
48455      type: "button",
48456      className: "absolute bottom-4 right-4 z-10 h-24 w-32 overflow-hidden rounded-[1.15rem] border-2 border-violet-400/15 shadow-2xl transition-all duration-300 md:right-6 md:h-32 md:w-44",
48457      onClick: () => setSelfIsMain((value) => !value),
48458      "aria-label": t3("call.swap_main_video")
48459    },
48460    /* @__PURE__ */ import_react4.default.createElement(
48461      ParticipantVideoFx,
48462      {
48463        track: pipVideo,
48464        mirrored: pipParticipant === localParticipant,
48465        muted: pipParticipant === localParticipant,
48466        effects: pipParticipant === localParticipant ? localFx : pipParticipant?.userData?.yano_fx,
48467        fit: "cover",
48468        className: "h-full w-full object-cover"
48469      }
48470    ),
48471    /* @__PURE__ */ import_react4.default.createElement("div", { className: "absolute bottom-2 left-2 rounded-2xl bg-[#1a0e2e]/80 px-2 py-0.5 text-[10px] font-bold text-violet-200 backdrop-blur-sm" }, pipParticipant === localParticipant ? t3("call.you") : pipName)
48472  ) : null) : videoParticipants.length === 0 ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex min-h-0 flex-1 items-center justify-center gap-10 sm:gap-16" }, participantTiles.map(({ key, participant }) => /* @__PURE__ */ import_react4.default.createElement(
48473    AudioIndicator,
48474    {
48475      key,
48476      name: displayNameFor(participant, key === "local" ? localDisplayName : guestLabel),
48477      avatarUrl: avatarUrlForParticipant(participant, key === "local"),
48478      speaking: hasPlayableTrack(participant, "audio"),
48479      latestMessage: latestMessageFor(participant),
48480      onTap: () => handleParticipantTap(participant, key === "local"),
48481      dmInfo: participantDmInfo(participant, key === "local")
48482    }
48483  ))) : videoParticipants.length < participantTiles.length ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex min-h-0 flex-1 flex-col gap-3 md:flex-row" }, /* @__PURE__ */ import_react4.default.createElement("div", { className: `min-h-0 flex-1 ${videoParticipants.length === 1 ? "" : "grid grid-cols-1 gap-3 sm:grid-cols-2"}` }, videoParticipants.map(({ key, participant }) => /* @__PURE__ */ import_react4.default.createElement(
48484    ParticipantTile,
48485    {
48486      key,
48487      participant,
48488      isLocal: key === "local",
48489      avatarUrl: avatarUrlForParticipant(participant, key === "local"),
48490      fallbackLabel: key === "local" ? localDisplayName : guestLabel,
48491      effectsOverride: key === "local" ? localFx : null,
48492      hideOverlay: uiHidden,
48493      latestMessage: latestMessageFor(participant),
48494      onProfileTap: handleParticipantTap,
48495      dmInfo: participantDmInfo(participant, key === "local")
48496    }
48497  ))), /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex shrink-0 gap-3 md:w-48 md:flex-col md:justify-center" }, nonVideoParticipants.map(({ key, participant }) => {
48498    const dm = participantDmInfo(participant, key === "local");
48499    return /* @__PURE__ */ import_react4.default.createElement(
48500      "button",
48501      {
48502        key,
48503        type: "button",
48504        onClick: () => handleParticipantTap(participant, key === "local"),
48505        className: "relative flex flex-1 items-center gap-2.5 rounded-2xl border border-violet-400/15 bg-violet-500/8 p-3 text-left transition hover:bg-violet-500/12 active:scale-[0.98] md:flex-col md:py-5 md:text-center",
48506        "aria-label": dm?.active ? t3("call.dm_active_indicator") : t3("call.profile_open_actions")
48507      },
48508      /* @__PURE__ */ import_react4.default.createElement(
48509        AvatarBadge,
48510        {
48511          name: displayNameFor(participant, key === "local" ? localDisplayName : guestLabel),
48512          avatarUrl: avatarUrlForParticipant(participant, key === "local"),
48513          className: `grid h-10 w-10 shrink-0 place-items-center rounded-full bg-violet-500/15 text-sm font-bold text-violet-200 ${hasPlayableTrack(participant, "audio") ? "ring-2 ring-violet-400/30" : ""}`,
48514          imgClassName: "h-full w-full object-cover"
48515        },
48516        dm?.active ? /* @__PURE__ */ import_react4.default.createElement("span", { className: `yano-dm-dot ${dm.unread > 0 ? "" : "yano-dm-dot--read"}`, style: { top: "-3px", right: "-3px" } }, dm.unread > 0 ? dm.unread > 9 ? "9+" : dm.unread : null) : null
48517      ),
48518      /* @__PURE__ */ import_react4.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react4.default.createElement("p", { className: "truncate text-sm font-bold text-violet-200" }, displayNameFor(participant, key === "local" ? localDisplayName : guestLabel), key === "local" ? ` ${t3("call.you_suffix")}` : ""), /* @__PURE__ */ import_react4.default.createElement("p", { className: "text-[10px] text-violet-400/50" }, hasPlayableTrack(participant, "audio") ? t3("call.audio_on") : t3("call.muted")))
48519    );
48520  }))) : /* @__PURE__ */ import_react4.default.createElement("div", { className: `grid min-h-0 flex-1 gap-3 ${gridClassName}` }, participantTiles.map(({ key, participant }) => /* @__PURE__ */ import_react4.default.createElement(
48521    ParticipantTile,
48522    {
48523      key,
48524      participant,
48525      isLocal: key === "local",
48526      avatarUrl: avatarUrlForParticipant(participant, key === "local"),
48527      fallbackLabel: key === "local" ? localDisplayName : guestLabel,
48528      effectsOverride: key === "local" ? localFx : null,
48529      hideOverlay: uiHidden,
48530      latestMessage: latestMessageFor(participant),
48531      onProfileTap: handleParticipantTap,
48532      dmInfo: participantDmInfo(participant, key === "local")
48533    }
48534  )))), remoteAudioTracks.map(({ key, track: track2 }) => /* @__PURE__ */ import_react4.default.createElement(ParticipantAudio, { key, track: track2 })), /* @__PURE__ */ import_react4.default.createElement(
48535    "div",
48536    {
48537      "data-pip": true,
48538      className: `yano-ui-layer pointer-events-auto absolute inset-x-0 bottom-[5.25rem] z-10 px-4 ${uiHidden ? "yano-ui-layer--hidden" : ""}`
48539    },
48540    /* @__PURE__ */ import_react4.default.createElement("div", { className: "mx-auto w-full max-w-lg" }, /* @__PURE__ */ import_react4.default.createElement(
48541      "div",
48542      {
48543        className: "grid transition-[grid-template-rows] duration-200 ease-[cubic-bezier(0.16,1,0.3,1)]",
48544        style: { gridTemplateRows: effectsOpen ? "1fr" : "0fr" }
48545      },
48546      /* @__PURE__ */ import_react4.default.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ import_react4.default.createElement("div", { className: `rounded-[1.35rem] border border-violet-500/12 bg-[#120826]/70 p-3 shadow-2xl backdrop-blur-md ${effectsOpen ? "opacity-100 translate-y-0" : "opacity-0 -translate-y-1"} transition-[opacity,transform] duration-200 ease-[cubic-bezier(0.16,1,0.3,1)]` }, /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex flex-wrap gap-2" }, VIDEO_GRADES.map((effect) => {
48547        const selected = localFx.grade === effect.id;
48548        return /* @__PURE__ */ import_react4.default.createElement(
48549          "button",
48550          {
48551            key: effect.id,
48552            type: "button",
48553            onClick: () => updateLocalFx({ grade: effect.id }),
48554            className: `rounded-2xl border px-3 py-2 text-xs font-extrabold tracking-[0.12em] transition ${selected ? "border-violet-400/30 bg-violet-500/18 text-violet-100" : "border-violet-500/12 bg-black/10 text-violet-300/70 hover:bg-violet-500/10 hover:text-violet-200"}`,
48555            title: t3(`effects.grade.${effect.id}`),
48556            "aria-pressed": selected
48557          },
48558          t3(`effects.grade.${effect.id}`)
48559        );
48560      })), /* @__PURE__ */ import_react4.default.createElement("div", { className: "mt-3" }, /* @__PURE__ */ import_react4.default.createElement("div", { className: "h-px w-full bg-violet-500/10" }), /* @__PURE__ */ import_react4.default.createElement("div", { className: "mt-2 flex flex-wrap items-center gap-2" }, /* @__PURE__ */ import_react4.default.createElement(
48561        "button",
48562        {
48563          type: "button",
48564          onClick: () => updateLocalFx({ soft: !localFx.soft }),
48565          className: `rounded-2xl border px-3 py-2 text-xs font-extrabold tracking-[0.12em] transition ${localFx.soft ? "border-violet-400/30 bg-violet-500/18 text-violet-100" : "border-violet-500/12 bg-black/10 text-violet-300/70 hover:bg-violet-500/10 hover:text-violet-200"}`,
48566          "aria-pressed": localFx.soft,
48567          title: t3("effects.soft")
48568        },
48569        t3("effects.soft")
48570      ), /* @__PURE__ */ import_react4.default.createElement(
48571        "button",
48572        {
48573          type: "button",
48574          onClick: () => updateLocalFx({ vignette: !localFx.vignette }),
48575          className: `rounded-2xl border px-3 py-2 text-xs font-extrabold tracking-[0.12em] transition ${localFx.vignette ? "border-violet-400/30 bg-violet-500/18 text-violet-100" : "border-violet-500/12 bg-black/10 text-violet-300/70 hover:bg-violet-500/10 hover:text-violet-200"}`,
48576          "aria-pressed": localFx.vignette,
48577          title: t3("effects.vignette")
48578        },
48579        t3("effects.vignette")
48580      ), /* @__PURE__ */ import_react4.default.createElement(
48581        "button",
48582        {
48583          type: "button",
48584          onClick: () => updateLocalFx({ faceBlur: !localFx.faceBlur }),
48585          className: `rounded-2xl border px-3 py-2 text-xs font-extrabold tracking-[0.12em] transition ${localFx.faceBlur ? "border-violet-400/30 bg-violet-500/18 text-violet-100" : "border-violet-500/12 bg-black/10 text-violet-300/70 hover:bg-violet-500/10 hover:text-violet-200"}`,
48586          "aria-pressed": localFx.faceBlur,
48587          title: t3("effects.face_viewer_side")
48588        },
48589        t3("effects.face")
48590      ))), localFx.faceBlur ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "mt-3 rounded-2xl border border-violet-500/12 bg-black/10 px-3 py-3" }, /* @__PURE__ */ import_react4.default.createElement("div", { className: "flex items-center justify-between gap-3" }, /* @__PURE__ */ import_react4.default.createElement("div", { className: "text-[11px] font-extrabold tracking-[0.14em] text-violet-200/90" }, t3("effects.face")), /* @__PURE__ */ import_react4.default.createElement("div", { className: "text-[11px] font-bold text-violet-300/60" }
48590, localFx.faceBlurPx, "px")), /* @__PURE__ */ import_react4.default.createElement(
48591        "input",
48592        {
48593          className: "yano-range mt-2 w-full",
48594          type: "range",
48595          min: "2",
48596          max: "9",
48597          step: "1",
48598          value: localFx.faceBlurPx,
48599          onChange: (event) => updateLocalFx({ faceBlurPx: Number(event.target.value) }),
48600          "aria-label": t3("effects.face_strength")
48601        }
48602      )) : null))
48603    ))
48604  ), /* @__PURE__ */ import_react4.default.createElement("div", { className: `yano-ui-layer absolute inset-x-0 bottom-4 z-10 flex justify-center px-4 ${uiHidden || keyboardOpen ? "yano-ui-layer--hidden" : ""}` }, /* @__PURE__ */ import_react4.default.createElement("div", { className: "inline-flex items-center gap-3 text-white" }, /* @__PURE__ */ import_react4.default.createElement(ControlButton, { active: resolvedLocalAudio, label: resolvedLocalAudio ? t3("mic.on") : t3("mic.off"), onClick: toggleLocalAudio }, /* @__PURE__ */ import_react4.default.createElement(MicIcon, null)), /* @__P
48604URE__ */ import_react4.default.createElement(ControlButton, { active: resolvedLocalVideo, label: resolvedLocalVideo ? t3("video.on") : t3("video.off"), onClick: toggleLocalVideo }, /* @__PURE__ */ import_react4.default.createElement(VideoIcon, null)), /* @__PURE__ */ import_react4.default.createElement(
48605    ControlButton,
48606    {
48607      label: t3("effects.title"),
48608      onClick: () => setEffectsOpen((open) => !open),
48609      pressed: effectsOpen,
48610      className: effectsOpen ? "ring-2 ring-violet-400/35" : ""
48611    },
48612    /* @__PURE__ */ import_react4.default.createElement(EffectsIcon, null)
48613  ), onToggleChat ? /* @__PURE__ */ import_react4.default.createElement(ControlButton, { label: chatOpen ? t3("call.close_chat") : t3("call.open_chat"), onClick: onToggleChat, className: chatOpen ? "ring-2 ring-violet-400/35" : "" }, /* @__PURE__ */ import_react4.default.createElement("span", { className: "relative inline-flex" }, /* @__PURE__ */ import_react4.default.createElement(ChatIcon, null), unreadCount > 0 ? /* @__PURE__ */ import_react4.default.createElement("span", { className: "yano-chat-badge" }, unreadCount > 9 ? "9+" : unreadCount) : null)) : null, /* @__PURE__ */ import_react4.default.createElement(
48614    ControlButton,
48615    {
48616      label: participantsOpen ? t3("call.close_participants") : t3("call.open_participants"),
48617      onClick: () => setParticipantsOpen((open) => !open),
48618      className: showPendingJoinNotice ? "yano-call-control--attention" : ""
48619    },
48620    /* @__PURE__ */ import_react4.default.createElement("span", { className: "relative inline-flex" }, /* @__PURE__ */ import_react4.default.createElement(UsersIcon_default, { className: "h-[1.125rem] w-[1.125rem]" }), showPendingJoinNotice ? /* @__PURE__ */ import_react4.default.createElement("span", { className: "yano-pending-badge", "aria-hidden": "true" }, pendingJoinCount > 9 ? "9+" : pendingJoinCount) : null, /* @__PURE__ */ import_react4.default.createElement("span", { className: "absolute -right-1.5 -top-1.5 grid h-4 min-w-4 place-items-center rounded-full bg-violet-400 px-1 text-[10px] font-bold leading-none text-[#1a0e2e]" }, participantTiles.length))
48621  ), /* @__PURE__ */ import_react4.default.createElement(ControlButton, { danger: true, label: leaveArmed ? t3("call.confirm_leave") : t3("call.leave_room"), onClick: handleLeaveClick, wide: leaveArmed }, /* @__PURE__ */ import_react4.default.createElement(PhoneXMarkIcon_default, { className: "h-[1.125rem] w-[1.125rem]" })))), /* @__PURE__ */ import_react4.default.createElement(ParticipantActionSheet, { target: actionSheetTarget, onClose: closeActionSheet, onDm: openDm }), /* @__PURE__ */ import_react4.default.createElement(
48622    OneToOneDmPanel,
48623    {
48624      target: currentDmTarget,
48625      messages: currentDmMessages,
48626      loading: Boolean(currentDmConv?.loading),
48627      sending: Boolean(currentDmConv?.sending),
48628      error: currentDmConv?.error || "",
48629      onMinimize: minimizeDm,
48630      onSend: sendDmMessage,
48631      onAvatarTap: handleDmAvatarTap,
48632      formatTime: formatDmTime
48633    }
48634  ), /* @__PURE__ */ import_react4.default.createElement(DmPreviewToast, { toast: dmState.toast, onTap: handleToastTap, onDismiss: dismissDmToast }));
48635}
48636
48637// app/javascript/yano/components/CameraPreview.jsx
48638var import_react5 = __toESM(require_react());
48639function isSecureEnoughForCamera() {
48640  return window.isSecureContext || window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1";
48641}
48642function useStatusMessage(status) {
48643  const { t: t3 } = useI18n();
48644  switch (status) {
48645    case "unsupported":
48646      return t3("camera.status.unsupported");
48647    case "insecure":
48648      return t3("camera.status.insecure");
48649    case "denied":
48650      return t3("camera.status.denied");
48651    case "error":
48652      return t3("camera.status.error");
48653    case "loading":
48654      return t3("camera.status.loading");
48655    case "off":
48656      return t3("camera.status.off");
48657    case "idle":
48658      return t3("camera.status.idle");
48659    default:
48660      return t3("camera.status.loading");
48661  }
48662}
48663function initialsFor2(label) {
48664  const trimmed = label.trim();
48665  if (/^\p{Emoji}/u.test(trimmed)) return trimmed;
48666  return trimmed.split(/\s+/).filter(Boolean).slice(0, 2).map((part) => Array.from(part)[0]?.toUpperCase() || "").join("") || "Y";
48667}
48668function MediaToggle({ active, label, onClick, children }) {
48669  return /* @__PURE__ */ import_react5.default.createElement(
48670    "button",
48671    {
48672      className: `yano-media-toggle ${active ? "" : "yano-media-toggle--off"}`.trim(),
48673      type: "button",
48674      onClick,
48675      "aria-pressed": !active,
48676      "aria-label": label,
48677      title: label
48678    },
48679    children
48680  );
48681}
48682function CameraPreview({
48683  className = "",
48684  label = "",
48685  mirrored = true,
48686  minimal = false,
48687  vignette = false,
48688  faceBlur = false,
48689  canEditLabel = false,
48690  editingLabel = false,
48691  draftLabel = "",
48692  onDraftLabelChange,
48693  onEditLabel,
48694  onSaveLabel,
48695  onCancelLabel,
48696  videoEnabled = true,
48697  audioEnabled = true,
48698  onToggleVideo,
48699  onToggleAudio
48700}) {
48701  const videoRef = (0, import_react5.useRef)(null);
48702  const faceBlurCanvasRef = (0, import_react5.useRef)(null);
48703  const streamRef = (0, import_react5.useRef)(null);
48704  const audioTrackRef = (0, import_react5.useRef)(null);
48705  const [permissionRequested, setPermissionRequested] = (0, import_react5.useState)(false);
48706  const [status, setStatus] = (0, import_react5.useState)(videoEnabled ? "idle" : "off");
48707  const [errorDetail, setErrorDetail] = (0, import_react5.useState)("");
48708  const [attempt, setAttempt] = (0, import_react5.useState)(0);
48709  const [facingMode, setFacingMode] = (0, import_react5.useState)("user");
48710  const [readyFlash, setReadyFlash] = (0, import_react5.useState)(false);
48711  const lastReadyRef = (0, import_react5.useRef)(false);
48712  const { t: t3 } = useI18n();
48713  const statusMessage = useStatusMessage(status);
48714  (0, import_react5.useEffect)(() => {
48715    let cancelled = false;
48716    async function startPreview() {
48717      setErrorDetail("");
48718      if (!videoEnabled) {
48719        if (streamRef.current) {
48720          streamRef.current.getTracks().forEach((track2) => track2.stop());
48721          streamRef.current = null;
48722        }
48723        audioTrackRef.current = null;
48724        if (videoRef.current) {
48725          videoRef.current.srcObject = null;
48726        }
48727        setStatus("off");
48728        return;
48729      }
48730      if (!permissionRequested) {
48731        if (streamRef.current) {
48732          streamRef.current.getTracks().forEach((track2) => track2.stop());
48733          streamRef.current = null;
48734        }
48735        audioTrackRef.current = null;
48736        if (videoRef.current) {
48737          videoRef.current.srcObject = null;
48738        }
48739        setStatus("idle");
48740        return;
48741      }
48742      setStatus("loading");
48743      if (!navigator.mediaDevices?.getUserMedia) {
48744        setStatus("unsupported");
48745        return;
48746      }
48747      if (!isSecureEnoughForCamera()) {
48748        setStatus("insecure");
48749        return;
48750      }
48751      try {
48752        if (streamRef.current) {
48753          streamRef.current.getTracks().forEach((track2) => track2.stop());
48754          streamRef.current = null;
48755        }
48756        audioTrackRef.current = null;
48757        const stream = await navigator.mediaDevices.getUserMedia({
48758          video: {
48759            facingMode: { ideal: facingMode }
48760          },
48761          // If the mic toggle is on, request mic permission together with camera so we don't
48762          // trigger a second permission prompt when the call provider asks for audio.
48763          audio: Boolean(audioEnabled)
48764        });
48765        if (cancelled) {
48766          stream.getTracks().forEach((track2) => track2.stop());
48767          return;
48768        }
48769        streamRef.current = stream;
48770        audioTrackRef.current = stream.getAudioTracks()[0] || null;
48771        if (!videoRef.current) {
48772          throw new Error(t3("camera.status.attach_failed"));
48773        }
48774        videoRef.current.srcObject = stream;
48775        await videoRef.current.play().catch(() => {
48776        });
48777        setStatus("ready");
48778      } catch (error2) {
48779        const nextStatus = error2?.name === "NotAllowedError" || error2?.name === "PermissionDeniedError" ? "denied" : "error";
48780        setStatus(nextStatus);
48781        setErrorDetail(error2?.message || "");
48782      }
48783    }
48784    startPreview();
48785    return () => {
48786      cancelled = true;
48787      if (streamRef.current) {
48788        streamRef.current.getTracks().forEach((track2) => track2.stop());
48789        streamRef.current = null;
48790      }
48791      audioTrackRef.current = null;
48792    };
48793  }, [attempt, videoEnabled, facingMode, permissionRequested]);
48794  (0, import_react5.useEffect)(() => {
48795    let active = true;
48796    async function syncAudioTrack() {
48797      if (!videoEnabled) return;
48798      if (status !== "ready") return;
48799      if (!streamRef.current) return;
48800      const stream = streamRef.current;
48801      if (!audioEnabled) {
48802        const track2 = audioTrackRef.current;
48803        if (track2) {
48804          track2.enabled = false;
48805          try {
48806            track2.stop();
48807          } catch (_3) {
48808          }
48809        }
48810        audioTrackRef.current = null;
48811        stream.getAudioTracks().forEach((t4) => stream.removeTrack(t4));
48812        return;
48813      }
48814      if (audioTrackRef.current && audioTrackRef.current.readyState !== "ended") {
48815        audioTrackRef.current.enabled = true;
48816        return;
48817      }
48818      try {
48819        const audioStream = await navigator.mediaDevices.getUserMedia({ audio: true, video: false });
48820        if (!active) {
48821          audioStream.getTracks().forEach((t4) => t4.stop());
48822          return;
48823        }
48824        const track2 = audioStream.getAudioTracks()[0] || null;
48825        if (!track2) {
48826          audioStream.getTracks().forEach((t4) => t4.stop());
48827          return;
48828        }
48829        stream.addTrack(track2);
48830        audioTrackRef.current = track2;
48831        audioStream.getTracks().forEach((t4) => t4 !== track2 && t4.stop());
48832      } catch (_error) {
48833      }
48834    }
48835    syncAudioTrack();
48836    return () => {
48837      active = false;
48838    };
48839  }, [audioEnabled, status, videoEnabled]);
48840  const ready = status === "ready";
48841  const shouldMirror = mirrored && facingMode === "user";
48842  const initials = (0, import_react5.useMemo)(() => initialsFor2(label), [label]);
48843  const showPlaceholder = !videoEnabled || !ready;
48844  useFaceBlurOverlay({
48845    enabled: Boolean(faceBlur && !showPlaceholder),
48846    sourceVideoRef: videoRef,
48847    overlayRef: faceBlurCanvasRef,
48848    holdMs: 1200,
48849    lerpA: 0.22,
48850    fit: "cover"
48851  });
48852  (0, import_react5.useEffect)(() => {
48853    const lastReady = lastReadyRef.current;
48854    lastReadyRef.current = ready;
48855    if (!videoEnabled) return;
48856    if (ready && !lastReady) {
48857      setReadyFlash(true);
48858      const timeout = window.setTimeout(() => setReadyFlash(false), 220);
48859      return () => window.clearTimeout(timeout);
48860    }
48861  }, [ready, videoEnabled]);
48862  return /* @__PURE__ */ import_react5.default.createElement("div", { className: `relative overflow-hidden rounded-[calc(2rem-2px)] bg-[#130a22] ${className}` }
48862, /* @__PURE__ */ import_react5.default.createElement(
48863    "video",
48864    {
48865      ref: videoRef,
48866      autoPlay: true,
48867      playsInline: true,
48868      muted: true,
48869      className: `yano-camera-video h-full w-full object-cover ${shouldMirror ? "scale-x-[-1]" : ""} ${showPlaceholder ? "hidden" : "block"}`
48870    }
48871  ), faceBlur && !showPlaceholder ? /* @__PURE__ */ import_react5.default.createElement(
48872    "canvas",
48873    {
48874      ref: faceBlurCanvasRef,
48875      className: `yano-camera-faceblur yano-camera-canvas pointer-events-none absolute inset-0 h-full w-full ${shouldMirror ? "scale-x-[-1]" : ""}`
48876    }
48877  ) : null, /* @__PURE__ */ import_react5.default.createElement(
48878    "div",
48879    {
48880      "aria-hidden": true,
48881      className: `pointer-events-none absolute inset-0 yano-preview-vignette ${vignette && !showPlaceholder ? "yano-preview-vignette--on" : ""}`
48882    }
48883  ), !showPlaceholder ? /* @__PURE__ */ import_react5.default.createElement(
48884    "button",
48885    {
48886      type: "button",
48887      className: "absolute bottom-3 left-3 z-10 grid h-9 w-9 place-items-center rounded-full bg-black/40 text-white/80 backdrop-blur-sm transition hover:bg-black/55 hover:text-white active:scale-90",
48888      onClick: () => setFacingMode((current) => current === "user" ? "environment" : "user"),
48889      "aria-label": t3("camera.flip")
48890    },
48891    /* @__PURE__ */ import_react5.default.createElement(ArrowPathIcon_default, { className: "h-4.5 w-4.5" })
48892  ) : null, showPlaceholder ? /* @__PURE__ */ import_react5.default.createElement("div", { className: "flex h-full min-h-0 items-center justify-center bg-[radial-gradient(circle_at_50%_30%,rgba(139,92,246,0.18),transparent_60%)] p-4 text-center text-violet-200" }, /* @__PURE__ */ import_react5.default.createElement("div", { className: "max-w-sm" }, /* @__PURE__ */ import_react5.default.createElement("div", { className: "mx-auto grid h-16 w-16 place-items-center rounded-full border-2 border-violet-400/20 bg-violet-500/12 text-2xl font-extrabold text-violet-300" }, videoEnabled ? status === "idle" ? /* @__PURE__ */ import_react5.default.createElement(VideoIcon, null) : initials : /* @__PURE__ */ import_react5.default.createElement(VideoOffIcon, null)), /* @__P
48892URE__ */ import_react5.default.createElement("p", { className: "mt-3 font-display text-lg leading-none text-violet-200 sm:text-xl" }, videoEnabled ? status === "idle" ? t3("camera.idle.title") : t3("camera.check") : t3("camera.off")), videoEnabled && status === "idle" ? /* @__PURE__ */ import_react5.default.createElement("p", { className: "mt-1.5 text-xs font-semibold text-violet-400/50 sm:text-sm" }, t3("camera.idle.hint")) : videoEnabled ? /* @__PURE__ */ import_react5.default.createElement("p", { className: "mt-1.5 text-xs font-semibold text-violet-400/50 sm:text-sm" }, statusMessage) : null, errorDetail ? /* @__PURE__ */ import_react5.default.createElement("p", { className: "mt-1.5 text-xs text-violet-400/40" }, errorDetail) : null, videoEnabled && status === "idle" ? /* @__PURE__ */ import_react5.default.createElement(
48893    "button",
48894    {
48895      className: "mt-3 rounded-xl border-2 border-violet-400/30 bg-violet-500/25 px-4 py-2.5 text-sm font-extrabold text-violet-100 transition hover:bg-violet-500/40",
48896      type: "button",
48897      onClick: () => setPermissionRequested(true)
48898    },
48899    t3("camera.idle.button")
48900  ) : videoEnabled && !ready ? /* @__PURE__ */ import_react5.default.createElement("button", { className: "mt-3 rounded-xl border-2 border-violet-500/20 bg-violet-500/12 px-4 py-2.5 text-sm font-extrabold text-violet-200 transition hover:bg-violet-500/20", type: "button", onClick: () => setAttempt((value) => value + 1) }, t3("camera.retry")) : null)) : null, /* @__PURE__ */ import_react5.default.createElement("div", { className: `absolute top-4 flex items-start gap-3 ${minimal ? "right-4" : "inset-x-4 justify-between"}` }, !minimal ? /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null, editingLabel ? /* @__P
48900URE__ */ import_react5.default.createElement("div", { className: "flex min-w-0 flex-1 items-center gap-2 rounded-full bg-black/40 px-3 py-2 text-sm text-white backdrop-blur-sm" }, /* @__PURE__ */ import_react5.default.createElement(
48901    "input",
48902    {
48903      type: "text",
48904      value: draftLabel,
48905      onChange: (event) => onDraftLabelChange?.(event.target.value),
48906      onKeyDown: (event) => {
48907        if (event.key === "Enter") onSaveLabel?.();
48908        if (event.key === "Escape") onCancelLabel?.();
48909      },
48910      placeholder: t3("camera.guest_name_placeholder"),
48911      className: "min-w-0 flex-1 bg-transparent text-sm text-white outline-none placeholder:text-white/45",
48912      autoFocus: true
48913    }
48914  ), /* @__PURE__ */ import_react5.default.createElement("button", { className: "rounded-full bg-white/14 px-3 py-1.5 text-xs font-semibold text-white transition hover:bg-white/20", type: "button", onClick: onSaveLabel }, t3("camera.save_name"))) : /* @__PURE__ */ import_react5.default.createElement("div", { className: "inline-flex max-w-full items-center gap-2 rounded-full bg-black/40 px-3 py-2 text-sm text-white backdrop-blur-sm" }, /* @__PURE__ */ import_react5.default.createElement("span", { className: "truncate" }
48914, label), canEditLabel ? /* @__PURE__ */ import_react5.default.createElement(
48915    "button",
48916    {
48917      className: "inline-flex h-7 w-7 items-center justify-center rounded-full bg-white/14 text-white transition hover:bg-white/20",
48918      type: "button",
48919      onClick: onEditLabel,
48920      "aria-label": t3("camera.edit_name")
48921    },
48922    /* @__PURE__ */ import_react5.default.createElement(EditIcon, null)
48923  ) : null)) : null, /* @__PURE__ */ import_react5.default.createElement("div", { className: `inline-flex items-center gap-2 rounded-full bg-black/40 px-3 py-2 font-semibold text-white/90 backdrop-blur-sm ${minimal ? "text-[11px]" : "text-xs"}` }, /* @__PURE__ */ import_react5.default.createElement("span", { className: `h-2.5 w-2.5 rounded-full ${readyFlash ? "yano-dot-pop" : ""} ${videoEnabled && ready ? "bg-[var(--lime)]" : "bg-white/45"}` }), videoEnabled ? ready ? t3("camera.ready") : statusMessage : t3("camera.off"))), !minimal ? /* @__PURE__ */ import_react5.default.createElement("div", { className: "absolute inset-x-0 bottom-4 flex justify-center px-4" }, /* @__PURE__ */ import_react5.default.createElement("div", { className: "inline-flex items-center gap-3 text-white" }, /* @__PURE__ */ import_react5.default.createElement(MediaToggle, { active: audioEnabled, label: audioEnabled ? t3("mic.on") : t3("mic.off"), onClick: onToggleAudio }, /* @__PURE__ */ import_react5.default.createElement(MicIcon, null)), /* @__P
48923URE__ */ import_react5.default.createElement(MediaToggle, { active: videoEnabled, label: videoEnabled ? t3("video.on") : t3("video.off"), onClick: onToggleVideo }, /* @__PURE__ */ import_react5.default.createElement(VideoIcon, null)))) : null);
48924}
48925
48926// app/javascript/yano/userState.js
48927function mergeUserIntoRoom(room, user) {
48928  if (!room || !user?.id) return room;
48929  let changed = false;
48930  const nextHost = room.host?.id === user.id ? mergeIfChanged(room.host, {
48931    display_name: user.display_name
48932  }, () => {
48933    changed = true;
48934  }) : room.host;
48935  const nextMembers = Array.isArray(room.members) ? room.members.map((member) => {
48936    if (member?.id !== user.id) return member;
48937    return mergeIfChanged(member, {
48938      display_name: user.display_name,
48939      avatar_url: user.avatar_url || null,
48940      gender: user.gender,
48941      bio: user.bio,
48942      languages: user.languages
48943    }, () => {
48944      changed = true;
48945    });
48946  }) : room.members;
48947  return changed ? { ...room, host: nextHost, members: nextMembers } : room;
48948}
48949function mergeUserIntoMessages(messages, user) {
48950  if (!Array.isArray(messages) || !user?.id) return messages;
48951  let changed = false;
48952  const nextMessages = messages.map((message) => {
48953    if (message?.sender?.id !== user.id) return message;
48954    const nextSender = mergeIfChanged(message.sender, {
48955      display_name: user.display_name,
48956      avatar_url: user.avatar_url || null
48957    }, () => {
48958      changed = true;
48959    });
48960    return nextSender === message.sender ? message : { ...message, sender: nextSender };
48961  });
48962  return changed ? nextMessages : messages;
48963}
48964function mergeIfChanged(current, updates, onChange) {
48965  let next = current;
48966  Object.entries(updates).forEach(([key, value]) => {
48967    if (value === void 0 || current?.[key] === value) return;
48968    if (next === current) next = { ...current };
48969    next[key] = value;
48970  });
48971  if (next !== current) onChange?.();
48972  return next;
48973}
48974
48975// app/javascript/yano/App.jsx
48976var EMPTY_FORM = {
48977  display_name: "",
48978  gender: "",
48979  bio: ""
48980};
48981var AVATAR_ACCEPT = "image/png,image/jpeg,image/webp,image/gif";
48982var AVATAR_ALLOWED_TYPES = ["image/png", "image/jpeg", "image/webp", "image/gif"];
48983var AVATAR_MAX_BYTES = 5 * 1024 * 1024;
48984var AVATAR_MIN_DIMENSION = 96;
48985var AVATAR_CROP_PREVIEW_SIZE = 176;
48986var AVATAR_ZOOM_MIN = 1;
48987var AVATAR_ZOOM_MAX = 3;
48988function clamp(value, min, max) {
48989  return Math.min(Math.max(value, min), max);
48990}
48991function buildInitialAvatarCrop(width, height) {
48992  const size = Math.min(width, height);
48993  return {
48994    x: Math.max(Math.round((width - size) / 2), 0),
48995    y: Math.max(Math.round((height - size) / 2), 0),
48996    size
48997  };
48998}
48999function avatarZoomValue(selection) {
49000  const minSide = Math.min(selection.width, selection.height);
49001  return clamp(minSide / selection.size, AVATAR_ZOOM_MIN, AVATAR_ZOOM_MAX);
49002}
49003function applyAvatarZoom(selection, zoom) {
49004  const minSide = Math.min(selection.width, selection.height);
49005  const nextZoom = clamp(Number(zoom), AVATAR_ZOOM_MIN, AVATAR_ZOOM_MAX);
49006  const nextSize = clamp(minSide / nextZoom, minSide / AVATAR_ZOOM_MAX, minSide);
49007  const centerX = selection.x + selection.size / 2;
49008  const centerY = selection.y + selection.size / 2;
49009  return {
49010    ...selection,
49011    size: nextSize,
49012    x: clamp(centerX - nextSize / 2, 0, selection.width - nextSize),
49013    y: clamp(centerY - nextSize / 2, 0, selection.height - nextSize)
49014  };
49015}
49016function avatarCropPayload(selection) {
49017  return {
49018    x: Number((selection.x / selection.width).toFixed(6)),
49019    y: Number((selection.y / selection.height).toFixed(6)),
49020    width: Number((selection.size / selection.width).toFixed(6)),
49021    height: Number((selection.size / selection.height).toFixed(6))
49022  };
49023}
49024function avatarPreviewStyle(selection, frameSize = AVATAR_CROP_PREVIEW_SIZE) {
49025  const scale = frameSize / selection.size;
49026  return {
49027    width: `${selection.width * scale}px`,
49028    height: `${selection.height * scale}px`,
49029    transform: `translate(${-selection.x * scale}px, ${-selection.y * scale}px)`
49030  };
49031}
49032function loadImageDimensions(source) {
49033  return new Promise((resolve, reject) => {
49034    const image = new window.Image();
49035    image.onload = () => resolve({
49036      width: image.naturalWidth,
49037      height: image.naturalHeight
49038    });
49039    image.onerror = () => reject(new Error("image_load_failed"));
49040    image.src = source;
49041  });
49042}
49043function avatarHueFromName(name) {
49044  const value = (name || "").trim();
49045  if (!value) return 320;
49046  let hash = 0;
49047  for (let i3 = 0; i3 < value.length; i3 += 1) {
49048    hash = hash * 31 + value.charCodeAt(i3) | 0;
49049  }
49050  return Math.abs(hash) % 360;
49051}
49052function avatarInitial(name) {
49053  const value = (name || "").trim();
49054  if (!value) return "?";
49055  const codePoint = value.codePointAt(0);
49056  return String.fromCodePoint(codePoint).toUpperCase();
49057}
49058function ProfileGenderIcon2({ value }) {
49059  if (value === "woman") {
49060    return /* @__PURE__ */ import_react6.default.createElement("svg", { viewBox: "0 0 20 20", className: "h-5 w-5", fill: "none", stroke: "currentColor", strokeWidth: "1.9", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "10", cy: "7", r: "3.2" }), /* @__PURE__ */ import_react6.default.createElement("path", { d: "M10 10.4v6.1M7.2 13.7H12.8" }));
49061  }
49062  if (value === "man") {
49063    return /* @__PURE__ */ import_react6.default.createElement("svg", { viewBox: "0 0 20 20", className: "h-5 w-5", fill: "none", stroke: "currentColor", strokeWidth: "1.9", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "7.2", cy: "12.8", r: "3.2" }), /* @__PURE__ */ import_react6.default.createElement("path", { d: "M9.8 10.2L15.2 4.8M11.4 4.8H15.2V8.6" }));
49064  }
49065  return /* @__PURE__ */ import_react6.default.createElement("svg", { viewBox: "0 0 20 20", className: "h-5 w-5", fill: "none", stroke: "currentColor", strokeWidth: "1.9", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "10", cy: "10", r: "6" }
49065), /* @__PURE__ */ import_react6.default.createElement("path", { d: "M7.6 12.4c.7.7 1.5 1 2.4 1s1.7-.3 2.4-1M8 8.1h.01M12 8.1h.01" }));
49066}
49067function mergeMessages(existing, incoming, prepend = false) {
49068  const merged = prepend ? [...incoming, ...existing] : [...existing, ...incoming];
49069  const byId = /* @__PURE__ */ new Map();
49070  merged.forEach((message) => {
49071    byId.set(message.id, message);
49072  });
49073  return Array.from(byId.values()).sort((left, right) => left.id - right.id);
49074}
49075function currentRoomCodeFromPath() {
49076  const match = window.location.pathname.match(/^\/rooms\/([A-Za-z0-9_-]+)$/);
49077  return match?.[1]?.toUpperCase() || "";
49078}
49079function setRoomPath(code) {
49080  const nextPath = code ? `/rooms/${code}` : "/";
49081  if (window.location.pathname !== nextPath) {
49082    window.history.pushState({}, "", nextPath);
49083  }
49084}
49085var PREJOIN_GRADES = VIDEO_GRADES;
49086function normalizeProfile(user = {}) {
49087  return {
49088    display_name: user.display_name || "",
49089    gender: user.gender || "",
49090    bio: user.bio || ""
49091  };
49092}
49093function loadStoredSession() {
49094  try {
49095    const raw = window.localStorage.getItem(STORAGE_KEY);
49096    return raw ? JSON.parse(raw) : null;
49097  } catch (_error) {
49098    return null;
49099  }
49100}
49101function saveStoredSession(session2) {
49102  if (!session2) {
49103    window.localStorage.removeItem(STORAGE_KEY);
49104    return;
49105  }
49106  window.localStorage.setItem(STORAGE_KEY, JSON.stringify(session2));
49107}
49108function ProfileAvatar({ name, avatarUrl, size = 44 }) {
49109  if (avatarUrl) {
49110    return /* @__PURE__ */ import_react6.default.createElement(
49111      "img",
49112      {
49113        src: avatarUrl,
49114        alt: "",
49115        className: "shrink-0 rounded-full object-cover shadow-[0_6px_16px_rgba(10,4,24,0.45),inset_0_1px_0_rgba(255,255,255,0.45)]",
49116        style: { width: size, height: size }
49117      }
49118    );
49119  }
49120  const initial = avatarInitial(name);
49121  const hue = avatarHueFromName(name);
49122  const style = {
49123    width: size,
49124    height: size,
49125    background: `linear-gradient(140deg, oklch(0.78 0.16 ${hue}), oklch(0.66 0.18 ${(hue + 38) % 360}))`,
49126    fontSize: Math.round(size * 0.42)
49127  };
49128  return /* @__PURE__ */ import_react6.default.createElement(
49129    "span",
49130    {
49131      className: "font-display inline-flex shrink-0 items-center justify-center rounded-full font-extrabold text-[#1a0e2e] shadow-[0_6px_16px_rgba(10,4,24,0.45),inset_0_1px_0_rgba(255,255,255,0.45)]",
49132      style,
49133      "aria-hidden": "true"
49134    },
49135    initial
49136  );
49137}
49138function ProfileSheet({
49139  open,
49140  initialProfile,
49141  avatarUrl,
49142  hasExistingSession,
49143  saving,
49144  errorMessage,
49145  onSave,
49146  onAvatarUpload,
49147  onAvatarCropUpdate,
49148  onAvatarRemove,
49149  onClose,
49150  onClearError
49151}) {
49152  const { t: t3 } = useI18n();
49153  const [draft, setDraft] = (0, import_react6.useState)(initialProfile);
49154  const [avatarDraft, setAvatarDraft] = (0, import_react6.useState)(null);
49155  const [avatarError, setAvatarError] = (0, import_react6.useState)("");
49156  const [avatarSaving, setAvatarSaving] = (0, import_react6.useState)(false);
49157  const [avatarRemoving, setAvatarRemoving] = (0, import_react6.useState)(false);
49158  const [avatarDragging, setAvatarDragging] = (0, import_react6.useState)(false);
49159  const wasOpenRef = (0, import_react6.useRef)(false);
49160  const dialogRef = (0, import_react6.useRef)(null);
49161  const nameInputRef = (0, import_react6.useRef)(null);
49162  const fileInputRef = (0, import_react6.useRef)(null);
49163  const avatarDragRef = (0, import_react6.useRef)(null);
49164  (0, import_react6.useEffect)(() => {
49165    if (open && !wasOpenRef.current) {
49166      setDraft(initialProfile);
49167      setAvatarDraft(null);
49168      setAvatarError("");
49169      setAvatarSaving(false);
49170      setAvatarRemoving(false);
49171      setAvatarDragging(false);
49172    }
49173    wasOpenRef.current = open;
49174  }, [open, initialProfile]);
49175  (0, import_react6.useEffect)(() => {
49176    const previewUrl = avatarDraft?.previewUrl;
49177    return () => {
49178      if (previewUrl) {
49179        window.URL.revokeObjectURL(previewUrl);
49180      }
49181    };
49182  }, [avatarDraft?.previewUrl]);
49183  (0, import_react6.useEffect)(() => {
49184    if (!open) return;
49185    const previouslyFocused = document.activeElement;
49186    const id = window.requestAnimationFrame(() => {
49187      nameInputRef.current?.focus({ preventScroll: true });
49188    });
49189    const previousOverflow = document.body.style.overflow;
49190    document.body.style.overflow = "hidden";
49191    function handleKey(event) {
49192      if (event.key !== "Escape" || saving || avatarSaving || avatarRemoving) return;
49193      event.preventDefault();
49194      if (avatarDraft) clearAvatarDraft();
49195      else onClose();
49196    }
49197    window.addEventListener("keydown", handleKey);
49198    return () => {
49199      window.cancelAnimationFrame(id);
49200      window.removeEventListener("keydown", handleKey);
49201      document.body.style.overflow = previousOverflow;
49202      if (previouslyFocused && typeof previouslyFocused.focus === "function") {
49203        try {
49204          previouslyFocused.focus({ preventScroll: true });
49205        } catch (_e3) {
49206        }
49207      }
49208    };
49209  }, [open, avatarDraft, hasExistingSession, saving, avatarSaving, avatarRemoving, onClose]);
49210  if (!open) return null;
49211  const trimmedName = draft.display_name.trim();
49212  const busy = saving || avatarSaving || avatarRemoving;
49213  const canSave = Boolean(trimmedName) && !busy;
49214  const bioLength = draft.bio.length;
49215  const canManageAvatar = !busy;
49216  function updateField(field, value) {
49217    if (errorMessage) onClearError();
49218    setDraft((current) => ({ ...current, [field]: value }));
49219  }
49220  function handleBackdropClick() {
49221    if (busy) return;
49222    if (avatarDraft) {
49223      clearAvatarDraft();
49224      return;
49225    }
49226    onClose();
49227  }
49228  async function handleSubmit(event) {
49229    event.preventDefault();
49230    if (!canSave) return;
49231    const stagedAvatar = !hasExistingSession && avatarDraft ? avatarDraft : null;
49232    await onSave({
49233      display_name: trimmedName,
49234      gender: draft.gender,
49235      bio: draft.bio.trim()
49236    }, stagedAvatar);
49237  }
49238  function openFilePicker() {
49239    if (!canManageAvatar) return;
49240    setAvatarError("");
49241    if (avatarDraft && !avatarDraft.editing) {
49242      setAvatarDraft((current) => current ? { ...current, editing: true } : current);
49243      return;
49244    }
49245    fileInputRef.current?.click();
49246  }
49247  async function handleAvatarFileChange(event) {
49248    const file = event.target.files?.[0];
49249    event.target.value = "";
49250    if (!file) return;
49251    if (!AVATAR_ALLOWED_TYPES.includes(file.type)) {
49252      setAvatarError(t3("profile.error.avatar_invalid_type"));
49253      return;
49254    }
49255    if (file.size > AVATAR_MAX_BYTES) {
49256      setAvatarError(t3("profile.error.avatar_too_large"));
49257      return;
49258    }
49259    const previewUrl = window.URL.createObjectURL(file);
49260    try {
49261      const { width, height } = await loadImageDimensions(previewUrl);
49262      if (Math.min(width, height) < AVATAR_MIN_DIMENSION) {
49263        throw new Error("avatar_too_small");
49264      }
49265      const crop = buildInitialAvatarCrop(width, height);
49266      const nextDraft = {
49267        file,
49268        previewUrl,
49269        width,
49270        height,
49271        editing: true,
49272        ...crop
49273      };
49274      setAvatarDraft(nextDraft);
49275      setAvatarError("");
49276    } catch (uploadError) {
49277      window.URL.revokeObjectURL(previewUrl);
49278      setAvatarError(
49279        uploadError?.message === "avatar_too_small" ? t3("profile.error.avatar_too_small") : t3("profile.error.avatar_load_failed")
49280      );
49281    }
49282  }
49283  function updateAvatarZoom(value) {
49284    setAvatarDraft((current) => {
49285      if (!current) return current;
49286      const next = applyAvatarZoom(current, value);
49287      if (next.size === current.size && next.x === current.x && next.y === current.y) return current;
49288      return { ...next, hasChanges: true };
49289    });
49290    setAvatarError("");
49291  }
49292  function clearAvatarDraft() {
49293    setAvatarDraft(null);
49294    setAvatarError("");
49295    setAvatarDragging(false);
49296    avatarDragRef.current = null;
49297  }
49298  function handleAvatarCropPointerDown(event) {
49299    if (!avatarDraft || busy) return;
49300    event.preventDefault();
49301    event.currentTarget.setPointerCapture?.(event.pointerId);
49302    avatarDragRef.current = {
49303      pointerId: event.pointerId,
49304      clientX: event.clientX,
49305      clientY: event.clientY,
49306      cropX: avatarDraft.x,
49307      cropY: avatarDraft.y
49308    };
49309    setAvatarDragging(true);
49310    setAvatarError("");
49311  }
49312  function handleAvatarCropPointerMove(event) {
49313    if (!avatarDraft || !avatarDragRef.current) return;
49314    if (avatarDragRef.current.pointerId !== event.pointerId) return;
49315    event.preventDefault();
49316    const dragState = avatarDragRef.current;
49317    const scale = AVATAR_CROP_PREVIEW_SIZE / avatarDraft.size;
49318    const deltaX = (event.clientX - dragState.clientX) / scale;
49319    const deltaY = (event.clientY - dragState.clientY) / scale;
49320    setAvatarDraft((current) => {
49321      if (!current) return current;
49322      const nextX = clamp(dragState.cropX - deltaX, 0, current.width - current.size);
49323      const nextY = clamp(dragState.cropY - deltaY, 0, current.height - current.size);
49324      if (nextX === current.x && nextY === current.y) return current;
49325      return {
49326        ...current,
49327        x: nextX,
49328        y: nextY,
49329        hasChanges: true
49330      };
49331    });
49332  }
49333  function handleAvatarCropPointerUp(event) {
49334    if (avatarDragRef.current?.pointerId !== event.pointerId) return;
49335    event.currentTarget.releasePointerCapture?.(event.pointerId);
49336    avatarDragRef.current = null;
49337    setAvatarDragging(false);
49338  }
49339  async function handleUploadAvatar(nextDraft = avatarDraft) {
49340    if (!nextDraft || !hasExistingSession) return false;
49341    setAvatarSaving(true);
49342    setAvatarError("");
49343    try {
49344      await onAvatarUpload(
49345        nextDraft.file,
49346        avatarCropPayload(nextDraft),
49347        { width: nextDraft.width, height: nextDraft.height }
49348      );
49349      return true;
49350    } catch (uploadError) {
49351      setAvatarError(uploadError?.message || t3("profile.error.avatar_failed"));
49352      return false;
49353    } finally {
49354      setAvatarSaving(false);
49355    }
49356  }
49357  async function handleUpdateAvatarCrop(nextDraft = avatarDraft) {
49358    if (!nextDraft || !nextDraft.uploaded || !hasExistingSession) return false;
49359    setAvatarSaving(true);
49360    setAvatarError("");
49361    try {
49362      await onAvatarCropUpdate(avatarCropPayload(nextDraft));
49363      return true;
49364    } catch (uploadError) {
49365      setAvatarError(uploadError?.message || t3("profile.error.avatar_failed"));
49366      return false;
49367    } finally {
49368      setAvatarSaving(false);
49369    }
49370  }
49371  async function handleSaveAvatarDraft() {
49372    if (!avatarDraft) return;
49373    if (!hasExistingSession) {
49374      setAvatarDraft((current) => current ? { ...current, editing: false, hasChanges: false } : current);
49375      return;
49376    }
49377    const saved = avatarDraft.uploaded ? await handleUpdateAvatarCrop(avatarDraft) : await handleUploadAvatar(avatarDraft);
49378    if (saved) clearAvatarDraft();
49379  }
49380  async function handleRemoveAvatar() {
49381    if (!hasExistingSession) return;
49382    setAvatarRemoving(true);
49383    setAvatarError("");
49384    try {
49385      await onAvatarRemove();
49386      setAvatarDraft(null);
49387    } catch (uploadError) {
49388      setAvatarError(uploadError?.message || t3("profile.error.avatar_remove_failed"));
49389    } finally {
49390      setAvatarRemoving(false);
49391    }
49392  }
49393  function renderPhotoStage() {
49394    if (avatarDraft?.editing) {
49395      return /* @__PURE__ */ import_react6.default.createElement(
49396        "div",
49397        {
49398          className: `yano-profile-photo__crop ${avatarDragging ? "yano-profile-photo__crop--dragging" : ""}`,
49399          onPointerDown: handleAvatarCropPointerDown,
49400          onPointerMove: handleAvatarCropPointerMove,
49401          onPointerUp: handleAvatarCropPointerUp,
49402          onPointerCancel: handleAvatarCropPointerUp
49403        },
49404        /* @__PURE__ */ import_react6.default.createElement(
49405          "img",
49406          {
49407            src: avatarDraft.previewUrl,
49408            alt: "",
49409            className: "yano-profile-photo__image",
49410            style: avatarPreviewStyle(avatarDraft),
49411            draggable: "false",
49412            onDragStart: (event) => event.preventDefault()
49413          }
49414        ),
49415        /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-photo__crop-mask", "aria-hidden": "true" })
49416      );
49417    }
49418    if (avatarDraft) {
49419      return /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-photo__inner yano-profile-photo__inner--staged" }, /* @__PURE__ */ import_react6.default.createElement(
49420        "img",
49421        {
49422          className: "yano-profile-photo__image",
49423          src: avatarDraft.previewUrl,
49424          alt: "",
49425          style: avatarPreviewStyle(avatarDraft, 140),
49426          draggable: "false"
49427        }
49428      ), /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-photo__plus", "aria-hidden": "true" }, /* @__PURE__ */ import_react6.default.createElement("svg", { viewBox: "0 0 14 14", className: "h-3.5 w-3.5", fill: "none", stroke: "currentColor", strokeWidth: "2.4", strokeLinecap: "round" }, /* @__PURE__ */ import_react6.default.createElement("path", { d: "M7 2.5v9M2.5 7h9" }))));
49429    }
49430    if (avatarUrl) {
49431      return /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-photo__inner yano-profile-photo__inner--image" }, /* @__PURE__ */ import_react6.default.createElement("img", { className: "yano-profile-photo__image", src: avatarUrl, alt: "" }), /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-photo__plus", "aria-hidden": "true" }, /* @__PURE__ */ import_react6.default.createElement("svg", { viewBox: "0 0 14 14", className: "h-3.5 w-3.5", fill: "none", stroke: "currentColor", strokeWidth: "2.4", strokeLinecap: "round" }, /* @__PURE__ */ import_react6.default.createElement("path", { d: "M7 2.5v9M2.5 7h9" }))));
49432    }
49433    return /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-photo__ring" }), /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-photo__aura" }), /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-photo__inner" }, /* @__PURE__ */ import_react6.default.createElement("svg", { viewBox: "0 0 28 28", className: "h-8 w-8", fill: "none", stroke: "currentColor", strokeWidth: "1.7", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react6.default.createElement("path", { d: "M5 9.2h3.2l1.6-2.2h8.4l1.6 2.2H23a1.6 1.6 0 0 1 1.6 1.6v9.4a1.6 1.6 0 0 1-1.6 1.6H5a1.6 1.6 0 0 1-1.6-1.6v-9.4A1.6 1.6 0 0 1 5 9.2Z" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "14", cy: "15.2", r: "3.6" })), /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-photo__plus", "aria-hidden": "true" }, /* @__PURE__ */ import_react6.default.createElement("svg", { viewBox: "0 0 14 14", className: "h-3.5 w-3.5", fill: "none", stroke: "currentColor", strokeWidth: "2.4", strokeLinecap: "round" }, /* @__PURE__ */ import_react6.default.createElement("path", { d: "M7 2.5v9M2.5 7h9" })))));
49434  }
49435  const genderOptions = [
49436    { value: "woman", label: t3("profile.gender.woman") },
49437    { value: "man", label: t3("profile.gender.man") },
49438    { value: "unspecified", label: t3("profile.gender.unspecified") }
49439  ];
49440  return /* @__PURE__ */ import_react6.default.createElement("div", { className: "fixed inset-0 z-[400] flex items-end justify-center sm:items-center sm:p-6" }, /* @__PURE__ */ import_react6.default.createElement(
49441    "button",
49442    {
49443      type: "button",
49444      "aria-label": t3("profile.close"),
49445      onClick: handleBackdropClick,
49446      className: "yano-profile-backdrop absolute inset-0 cursor-default"
49447    }
49448  ), /* @__PURE__ */ import_react6.default.createElement(
49449    "div",
49450    {
49451      ref: dialogRef,
49452      role: "dialog",
49453      "aria-modal": "true",
49454      "aria-labelledby": "profile-sheet-title",
49455      className: "yano-profile-sheet relative flex max-h-[min(94vh,720px)] w-full max-w-[420px] flex-col"
49456    },
49457    /* @__PURE__ */ import_react6.default.createElement("div", { className: "yano-profile-sheet__handle", "aria-hidden": "true" }),
49458    /* @__PURE__ */ import_react6.default.createElement("form", { onSubmit: handleSubmit, className: "flex min-h-0 flex-1 flex-col" }, /* @__PURE__ */ import_react6.default.createElement("header", { className: "flex items-start justify-between gap-3 px-6 pb-2 pt-2 sm:pt-5" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react6.default.createElement("h2", { id: "profile-sheet-title", className: "font-display text-[clamp(1.65rem,6vw,2rem)] font-extrabold leading-[0.98] tracking-[-0.035em] text-white" }, hasExistingSession ? t3("profile.title_edit") : t3("profile.title_new"))), /* @__PURE__ */ import_react6.default.createElement(
49459      "button",
49460      {
49461        type: "button",
49462        onClick: onClose,
49463        disabled: busy,
49464        "aria-label": t3("profile.close"),
49465        className: "yano-profile-sheet__close shrink-0"
49466      },
49467      /* @__PURE__ */ import_react6.default.createElement("svg", { viewBox: "0 0 20 20", className: "h-4 w-4", fill: "none", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round" }, /* @__PURE__ */ import_react6.default.createElement("path", { d: "M5 5l10 10M15 5L5 15" }))
49468    )), avatarDraft?.editing ? /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, /* @__PURE__ */ import_react6.default.createElement("div", { className: "min-h-0 flex-1 overflow-y-auto px-6 pb-4 pt-6" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "yano-profile-photo yano-profile-photo--editing" }, /* @__PURE__ */ import_react6.default.createElement(
49469      "input",
49470      {
49471        ref: fileInputRef,
49472        type: "file",
49473        accept: AVATAR_ACCEPT,
49474        className: "sr-only",
49475        onChange: handleAvatarFileChange
49476      }
49477    ), /* @__PURE__ */ import_react6.default.createElement("div", { className: "yano-profile-photo__stage", "aria-hidden": "true" }, renderPhotoStage()), /* @__PURE__ */ import_react6.default.createElement("div", { className: "yano-profile-photo__editor" }, /* @__PURE__ */ import_react6.default.createElement("label", { className: "yano-profile-photo__range" }, /* @__PURE__ */ import_react6.default.createElement("span", null, t3("profile.photo_zoom")), /* @__PURE__ */ import_react6.default.createElement(
49478      "input",
49479      {
49480        type: "range",
49481        min: AVATAR_ZOOM_MIN,
49482        max: AVATAR_ZOOM_MAX,
49483        step: "0.01",
49484        value: avatarZoomValue(avatarDraft),
49485        onChange: (event) => updateAvatarZoom(event.target.value),
49486        disabled: busy
49487      }
49488    ))), avatarError ? /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-3 rounded-2xl border border-red-400/30 bg-red-500/10 px-4 py-3 text-[13px] font-semibold text-red-100" }
49488, avatarError) : null)), /* @__PURE__ */ import_react6.default.createElement("footer", { className: "flex gap-3 px-6 pb-[max(1.1rem,env(safe-area-inset-bottom))] pt-3" }, /* @__PURE__ */ import_react6.default.createElement(
49489      "button",
49490      {
49491        type: "button",
49492        onClick: clearAvatarDraft,
49493        disabled: busy,
49494        className: "yano-button yano-button--secondary flex-1"
49495      },
49496      t3("profile.photo_cancel")
49497    ), /* @__PURE__ */ import_react6.default.createElement(
49498      "button",
49499      {
49500        type: "button",
49501        onClick: handleSaveAvatarDraft,
49502        disabled: busy,
49503        className: "yano-button yano-button--primary flex-1"
49504      },
49505      avatarSaving ? t3("profile.photo_uploading") : t3("profile.photo_save")
49506    ))) : /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, /* @__PURE__ */ import_react6.default.createElement("div", { className: "min-h-0 flex-1 overflow-y-auto px-6 pb-2 pt-3" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex justify-center" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "yano-profile-photo" }, /* @__PURE__ */ import_react6.default.createElement(
49507      "input",
49508      {
49509        ref: fileInputRef,
49510        type: "file",
49511        accept: AVATAR_ACCEPT,
49512        className: "sr-only",
49513        onChange: handleAvatarFileChange
49514      }
49515    ), /* @__PURE__ */ import_react6.default.createElement(
49516      "button",
49517      {
49518        type: "button",
49519        onClick: openFilePicker,
49520        disabled: !canManageAvatar,
49521        "aria-label": t3("profile.add_photo"),
49522        title: t3("profile.add_photo"),
49523        className: "yano-profile-photo__button group"
49524      },
49525      /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-photo__stage", "aria-hidden": "true" }, renderPhotoStage())
49526    ), avatarSaving || avatarRemoving ? /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-photo__caption" }, avatarSaving ? t3("profile.photo_uploading") : t3("profile.photo_removing")) : null, avatarError ? /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-3 rounded-2xl border border-red-400/30 bg-red-500/10 px-4 py-3 text-[13px] font-semibold text-red-100" }, avatarError) : null, avatarUrl || avatarDraft ? /* @__PURE__ */ import_react6.default.createElement("div", { className: "yano-profile-photo__actions" }, /* @__PURE__ */ import_react6.default.createElement(
49527      "button",
49528      {
49529        type: "button",
49530        onClick: avatarUrl ? handleRemoveAvatar : clearAvatarDraft,
49531        disabled: !canManageAvatar,
49532        className: "yano-profile-photo__action"
49533      },
49534      avatarRemoving ? t3("profile.photo_removing") : t3("profile.photo_remove")
49535    )) : null)), /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-7" }, /* @__PURE__ */ import_react6.default.createElement("label", { htmlFor: "profile-name", className: "yano-profile-label" }, t3("profile.name_label"), " ", /* @__PURE__ */ import_react6.default.createElement("span", { className: "text-[var(--melon)]" }, "*")), /* @__PURE__ */ import_react6.default.createElement(
49536      "input",
49537      {
49538        id: "profile-name",
49539        ref: nameInputRef,
49540        type: "text",
49541        inputMode: "text",
49542        autoComplete: "given-name",
49543        maxLength: 40,
49544        value: draft.display_name,
49545        onChange: (event) => updateField("display_name", event.target.value),
49546        placeholder: t3("profile.name_placeholder"),
49547        className: "yano-profile-input mt-2"
49548      }
49549    )), /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-5" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "grid grid-cols-3 gap-2", role: "group", "aria-label": t3("profile.gender_label") }, genderOptions.map((option) => {
49550      const active = draft.gender === option.value;
49551      return /* @__PURE__ */ import_react6.default.createElement(
49552        "button",
49553        {
49554          key: option.value,
49555          type: "button",
49556          onClick: () => updateField("gender", option.value),
49557          "aria-pressed": active,
49558          className: `yano-profile-chip yano-profile-chip--${option.value} ${active ? "yano-profile-chip--active" : ""}`
49559        },
49560        /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-chip__icon" }, /* @__PURE__ */ import_react6.default.createElement(ProfileGenderIcon2, { value: option.value })),
49561        /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-chip__label" }, option.label)
49562      );
49563    }))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-5" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex items-baseline justify-between gap-3" }, /* @__PURE__ */ import_react6.default.createElement("label", { htmlFor: "profile-bio", className: "yano-profile-label" }, t3("profile.bio_label"), /* @__PURE__ */ import_react6.default.createElement("span", { className: "ml-1.5 text-[10px] font-bold tracking-[0.16em] text-violet-300/40" }, t3("profile.bio_optional"))), /* @__PURE__ */ import_react6.default.createElement("span", { className: `text-[10px] font-bold tabular-nums ${bioLength >= 180 ? "text-[var(--melon)]" : "text-violet-300/40"}` }
49563, bioLength, "/200")), /* @__PURE__ */ import_react6.default.createElement(
49564      "textarea",
49565      {
49566        id: "profile-bio",
49567        value: draft.bio,
49568        onChange: (event) => updateField("bio", event.target.value.slice(0, 200)),
49569        placeholder: t3("profile.bio_placeholder"),
49570        rows: 3,
49571        className: "yano-profile-input yano-profile-input--textarea mt-2"
49572      }
49573    )), errorMessage ? /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-4 rounded-2xl border border-red-400/30 bg-red-500/10 px-4 py-3 text-[13px] font-semibold text-red-100" }, errorMessage) : null), /* @__PURE__ */ import_react6.default.createElement("footer", { className: "px-6 pb-[max(1.1rem,env(safe-area-inset-bottom))] pt-3" }, /* @__PURE__ */ import_react6.default.createElement(
49574      "button",
49575      {
49576        type: "submit",
49577        disabled: !canSave,
49578        className: "yano-button yano-button--primary"
49579      },
49580      saving ? t3("profile.saving") : hasExistingSession ? t3("profile.cta_edit") : t3("profile.cta_new")
49581    ))))
49582  ));
49583}
49584var EFFECTS_IMAGES = ["/effects-1.webp", "/effects-2.webp", "/effects-3.webp"];
49585function EffectsShowcase() {
49586  const [index, setIndex] = (0, import_react6.useState)(0);
49587  (0, import_react6.useEffect)(() => {
49588    const interval = window.setInterval(() => setIndex((i3) => (i3 + 1) % EFFECTS_IMAGES.length), 800);
49589    return () => window.clearInterval(interval);
49590  }, []);
49591  return /* @__PURE__ */ import_react6.default.createElement("div", { className: "relative aspect-[4/3] w-full max-w-xs overflow-hidden rounded-2xl border border-white/8 sm:w-64" }, EFFECTS_IMAGES.map((src, i3) => /* @__PURE__ */ import_react6.default.createElement(
49592    "img",
49593    {
49594      key: src,
49595      src,
49596      alt: "",
49597      loading: "lazy",
49598      className: "absolute inset-0 h-full w-full object-cover transition-opacity duration-150 ease-in-out",
49599      style: { opacity: i3 === index ? 1 : 0 }
49600    }
49601  )));
49602}
49603function StatusBanner({ tone = "neutral", children }) {
49604  const className = [
49605    "rounded-[1rem] border px-4 py-3 text-sm font-semibold",
49606    tone === "error" ? "border-red-500/30 bg-red-500/14 text-red-100" : "",
49607    tone === "success" ? "border-violet-500/30 bg-violet-500/14 text-violet-100" : "",
49608    tone === "neutral" ? "border-zinc-700 bg-zinc-900 text-zinc-300" : ""
49609  ].filter(Boolean).join(" ");
49610  return /* @__PURE__ */ import_react6.default.createElement("div", { className }, children);
49611}
49612function EndedScreen({ room, onRejoin, onReturnHome, submitting = false }) {
49613  const { t: t3 } = useI18n();
49614  return /* @__PURE__ */ import_react6.default.createElement("section", { className: "grid min-h-0 flex-1 place-items-center p-4" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "w-full max-w-md text-center" }, /* @__PURE__ */ import_react6.default.createElement("p", { className: "font-display text-[clamp(2.4rem,9vw,3.6rem)] font-extrabold leading-[1] tracking-[-0.04em] text-violet-100" }, t3("ended.heading")), /* @__PURE__ */ import_react6.default.createElement("p", { className: "mt-3 text-sm font-semibold text-violet-400/70 sm:text-base" }, room?.title ? t3("ended.room_ended", { title: room.title }) : t3("ended.left")), room?.code ? /* @__PURE__ */ import_react6.default.createElement("p", { className: "mt-3 text-xs font-extrabold uppercase tracking-[0.18em] text-violet-500/50" }, "Room ", room.code) : null, /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-10 grid gap-3" }, /* @__PURE__ */ import_react6.default.createElement("button", { className: "yano-button yano-button--primary", type: "button", disabled: submitting, onClick: onRejoin }, submitting ? t3("ended.rejoining") : t3("ended.rejoin")), /* @__P
49614URE__ */ import_react6.default.createElement("button", { className: "yano-button yano-button--secondary", type: "button", onClick: onReturnHome }, t3("ended.home")))));
49615}
49616function App() {
49617  const { t: t3, locale } = useI18n();
49618  const storedSession = loadStoredSession();
49619  const [session2, setSession] = (0, import_react6.useState)(storedSession);
49620  const [profile, setProfile] = (0, import_react6.useState)(() => normalizeProfile(storedSession?.user || EMPTY_FORM));
49621  const [profileSheetOpen, setProfileSheetOpen] = (0, import_react6.useState)(false);
49622  const [profileSheetSaving, setProfileSheetSaving] = (0, import_react6.useState)(false);
49623  const [profileSheetError, setProfileSheetError] = (0, import_react6.useState)("");
49624  const [inviteRoom, setInviteRoom] = (0, import_react6.useState)(null);
49625  const [roomCode, setRoomCode] = (0, import_react6.useState)(currentRoomCodeFromPath());
49626  const [copied, setCopied] = (0, import_react6.useState)(false);
49627  const [notice, setNotice] = (0, import_react6.useState)("");
49628  const [error2, setError] = (0, import_react6.useState)("");
49629  const [submitting, setSubmitting] = (0, import_react6.useState)(false);
49630  const [roomLoading, setRoomLoading] = (0, import_react6.useState)(false);
49631  const [meetingStarted, setMeetingStarted] = (0, import_react6.useState)(false);
49632  const [endedRoom, setEndedRoom] = (0, import_react6.useState)(null);
49633  const [mediaPreferences, setMediaPreferences] = (0, import_react6.useState)({
49634    audioEnabled: true,
49635    videoEnabled: true
49636  });
49637  const [prejoinEffectsOpen, setPrejoinEffectsOpen] = (0, import_react6.useState)(false);
49638  const [prejoinGrade, setPrejoinGrade] = (0, import_react6.useState)(() => {
49639    try {
49640      const legacy = localStorage.getItem("yano_prejoin_effect");
49641      if (legacy && PREJOIN_GRADES.some((item) => item.id === legacy)) return legacy;
49642      if (legacy === "portrait") return "pop";
49643      return localStorage.getItem("yano_prejoin_grade") || "pop";
49644    } catch (_error) {
49645      return "pop";
49646    }
49647  });
49648  const [prejoinSoftEnabled, setPrejoinSoftEnabled] = (0, import_react6.useState)(() => {
49649    try {
49650      const legacy = localStorage.getItem("yano_prejoin_effect");
49651      if (legacy === "portrait") return true;
49652      const stored = localStorage.getItem("yano_prejoin_soft");
49653      return stored ? stored === "1" : false;
49654    } catch (_error) {
49655      return false;
49656    }
49657  });
49658  const [prejoinVignetteEnabled, setPrejoinVignetteEnabled] = (0, import_react6.useState)(() => {
49659    try {
49660      const stored = localStorage.getItem("yano_prejoin_vignette");
49661      return stored ? stored === "1" : true;
49662    } catch (_error) {
49663      return true;
49664    }
49665  });
49666  const [prejoinFaceBlurEnabled, setPrejoinFaceBlurEnabled] = (0, import_react6.useState)(() => {
49667    try {
49668      const stored = localStorage.getItem("yano_prejoin_face_blur");
49669      return stored ? stored === "1" : false;
49670    } catch (_error) {
49671      return false;
49672    }
49673  });
49674  const [prejoinFaceBlurAmount, setPrejoinFaceBlurAmount] = (0, import_react6.useState)(() => {
49675    try {
49676      const raw = localStorage.getItem("yano_prejoin_face_blur_amount");
49677      const value = raw ? Number(raw) : 6;
49678      if (!Number.isFinite(value)) return 6;
49679      return Math.min(9, Math.max(2, Math.round(value)));
49680    } catch (_error) {
49681      return 6;
49682    }
49683  });
49684  const [chatMessages, setChatMessages] = (0, import_react6.useState)([]);
49685  const [chatOpen, setChatOpen] = (0, import_react6.useState)(false);
49686  const [unreadCount, setUnreadCount] = (0, import_react6.useState)(0);
49687  const [chatHasMore, setChatHasMore] = (0, import_react6.useState)(false);
49688  const [chatLoading, setChatLoading] = (0, import_react6.useState)(false);
49689  const [chatConnected, setChatConnected] = (0, import_react6.useState)(false);
49690  const [chatOverlayTick, setChatOverlayTick] = (0, import_react6.useState)(0);
49691  const [joinByCodeOpen, setJoinByCodeOpen] = (0, import_react6.useState)(false);
49692  const [joinCodeDraft, setJoinCodeDraft] = (0, import_react6.useState)("");
49693  const chatConnectionRef = (0, import_react6.useRef)(null);
49694  const chatOpenRef = (0, import_react6.useRef)(false);
49695  const currentUserIdRef = (0, import_react6.useRef)(storedSession?.user?.id || null);
49696  const pendingProfileActionRef = (0, import_react6.useRef)(null);
49697  const inviteJoined = inviteRoom?.membership?.status === "joined";
49698  const invitePending = inviteRoom?.membership?.status === "pending";
49699  (0, import_react6.useEffect)(() => {
49700    bootstrap();
49701  }, []);
49702  (0, import_react6.useEffect)(() => {
49703    if (!roomCode) {
49704      setInviteRoom(null);
49705      setMeetingStarted(false);
49706      return;
49707    }
49708    loadRoom(roomCode);
49709  }, [roomCode, session2?.api_token]);
49710  (0, import_react6.useEffect)(() => {
49711    setCopied(false);
49712  }, [inviteRoom?.code]);
49713  (0, import_react6.useEffect)(() => {
49714    chatOpenRef.current = chatOpen;
49715    if (chatOpen) {
49716      setUnreadCount(0);
49717    }
49718  }, [chatOpen]);
49719  (0, import_react6.useEffect)(() => {
49720    currentUserIdRef.current = session2?.user?.id || null;
49721  }, [session2?.user?.id]);
49722  (0, import_react6.useEffect)(() => {
49723    if (roomCode) {
49724      setEndedRoom(null);
49725    }
49726  }, [roomCode]);
49727  (0, import_react6.useEffect)(() => {
49728    let cancelled = false;
49729    function teardownChat(clearState = true) {
49730      if (chatConnectionRef.current) {
49731        chatConnectionRef.current.unsubscribe();
49732        chatConnectionRef.current = null;
49733      }
49734      setChatConnected(false);
49735      if (clearState) {
49736        setChatMessages([]);
49737        setChatHasMore(false);
49738        setUnreadCount(0);
49739        setChatOpen(false);
49740        setChatLoading(false);
49741      }
49742    }
49743    async function bootstrapChat() {
49744      if (!session2?.api_token || !inviteRoom?.code || !inviteJoined && !invitePending) {
49745        teardownChat();
49746        return;
49747      }
49748      teardownChat(false);
49749      setChatMessages([]);
49750      setChatHasMore(false);
49751      setUnreadCount(0);
49752      try {
49753        const connection = subscribeToRoomChannel(session2.api_token, inviteRoom.code, {
49754          onConnected() {
49755            if (!cancelled) {
49756              setChatConnected(true);
49757            }
49758          },
49759          onDisconnected() {
49760            if (!cancelled) {
49761              setChatConnected(false);
49762            }
49763          },
49764          onRejected() {
49765            setChatConnected(false);
49766            setError(t3("app.chat_connection_rejected"));
49767          },
49768          onEvent(data) {
49769            if (data?.type === "new_message" && data.message) {
49770              setChatMessages((current) => mergeMessages(current, [{ ...data.message, _receivedAt: Date.now() }]));
49771              if (!chatOpenRef.current && data.message.sender.id !== currentUserIdRef.current) {
49772                setUnreadCount((count) => count + 1);
49773              }
49774              return;
49775            }
49776            if (data?.type === "member_joined" && data.member) {
49777              setInviteRoom((current) => {
49778                if (!current) return current;
49779                const nextPresenceCount = Number.isFinite(Number(data.presence_count)) ? Number(data.presence_count) : current.presence_count;
49780                const members = current.members || [];
49781                const existing = members.find((m3) => m3.id === data.member.id);
49782                if (existing) {
49783                  return {
49784                    ...current,
49785                    presence_count: nextPresenceCount,
49786                    members: members.map((m3) => m3.id === data.member.id ? { ...m3, ...data.member, present_in_call: true } : m3)
49787                  };
49788                }
49789                return { ...current, presence_count: nextPresenceCount, members: [...members, { ...data.member, present_in_call: true }] };
49790              });
49791              return;
49792            }
49793            if (data?.type === "member_left" && data.user_id) {
49794              setInviteRoom((current) => {
49795                if (!current) return current;
49796                const nextPresenceCount = Number.isFinite(Number(data.presence_count)) ? Number(data.presence_count) : current.presence_count;
49797                return {
49798                  ...current,
49799                  presence_count: nextPresenceCount,
49800                  members: (current.members || []).map((m3) => m3.id === data.user_id ? { ...m3, present_in_call: false } : m3)
49801                };
49802              });
49803              return;
49804            }
49805            if (data?.type === "chat_error" && data.error) {
49806              setError(data.error);
49807              return;
49808            }
49809            if (data?.type === "room_locked") {
49810              setInviteRoom((current) => current ? { ...current, locked: true, locked_at: data.locked_at } : current);
49811              return;
49812            }
49813            if (data?.type === "room_unlocked") {
49814              setInviteRoom((current) =>
49814 current ? { ...current, locked: false, locked_at: null } : current);
49815              return;
49816            }
49817            if (data?.type === "member_kicked") {
49818              if (data.user_id === currentUserIdRef.current) {
49819                handleLeaveRoom();
49820                return;
49821              }
49822              setInviteRoom((current) => {
49823                if (!current) return current;
49824                return { ...current, members: (current.members || []).filter((m3) => m3.id !== data.user_id) };
49825              });
49826              return;
49827            }
49828            if (data?.type === "member_muted") {
49829              setInviteRoom((current) => {
49830                if (!current) return current;
49831                return {
49832                  ...current,
49833                  members: (current.members || []).map(
49834                    (m3) => m3.id === data.user_id ? { ...m3, muted_by_host: data.muted } : m3
49835                  )
49836                };
49837              });
49838              return;
49839            }
49840            if (data?.type === "member_requested") {
49841              setInviteRoom((current) => {
49842                if (!current) return current;
49843                const pending = current.pending_members || [];
49844                if (pending.some((m3) => m3.id === data.user_id)) return current;
49845                return { ...current, pending_members: [...pending, { id: data.user_id, display_name: data.display_name }] };
49846              });
49847              return;
49848            }
49849            if (data?.type === "join_approved") {
49850              if (data.user_id === currentUserIdRef.current) {
49851                refreshRoom();
49852                return;
49853              }
49854              setInviteRoom((current) => {
49855                if (!current) return current;
49856                const pending = (current.pending_members || []).filter((m3) => m3.id !== data.user_id);
49857                const alreadyMember = (current.members || []).some((m3) => m3.id === data.user_id);
49858                const members = alreadyMember ? current.members : [...current.members || [], { id: data.user_id, display_name: data.display_name, role: "guest", muted_by_host: false }];
49859                return { ...current, pending_members: pending, members };
49860              });
49861              return;
49862            }
49863            if (data?.type === "join_denied") {
49864              if (data.user_id === currentUserIdRef.current) {
49865                setInviteRoom(null);
49866                setRoomCode("");
49867                setRoomPath("");
49868                setError(t3("home.join_denied"));
49869                return;
49870              }
49871              setInviteRoom((current) => {
49872                if (!current) return current;
49873                return { ...current, pending_members: (current.pending_members || []).filter((m3) => m3.id !== data.user_id) };
49874              });
49875              return;
49876            }
49877          }
49878        });
49879        if (cancelled) {
49880          connection.unsubscribe();
49881          return;
49882        }
49883        chatConnectionRef.current = connection;
49884        if (inviteJoined) {
49885          setChatLoading(true);
49886          const payload = await api.getRoomMessages(session2.api_token, inviteRoom.code);
49887          if (cancelled) return;
49888          setChatMessages((current) => mergeMessages(current, payload.messages || [], true));
49889          setChatHasMore(Boolean(payload.has_more));
49890        }
49891      } catch (event) {
49892        if (!cancelled) {
49893          setChatConnected(false);
49894          setError(event.message);
49895        }
49896      } finally {
49897        if (!cancelled) {
49898          setChatLoading(false);
49899        }
49900      }
49901    }
49902    bootstrapChat();
49903    return () => {
49904      cancelled = true;
49905      teardownChat();
49906    };
49907  }, [session2?.api_token, inviteRoom?.code, inviteJoined, invitePending, t3]);
49908  const stageJoin = inviteRoom?.join;
49909  const inMeeting = Boolean(stageJoin && meetingStarted);
49910  const previewName = session2?.user?.display_name || profile.display_name || t3("call.guest");
49911  const localVideoEffects = (0, import_react6.useMemo)(
49912    () => normalizeVideoEffects({
49913      grade: prejoinGrade,
49914      soft: prejoinSoftEnabled,
49915      vignette: prejoinVignetteEnabled,
49916      faceBlur: prejoinFaceBlurEnabled,
49917      faceBlurPx: prejoinFaceBlurAmount
49918    }),
49919    [prejoinGrade, prejoinSoftEnabled, prejoinVignetteEnabled, prejoinFaceBlurEnabled, prejoinFaceBlurAmount]
49920  );
49921  const roomMembers = inviteRoom?.members || [];
49922  const termsHref = locale === "en" ? "/terms" : `/terms?lang=${encodeURIComponent(locale)}`;
49923  const marketingUseCases = [
49924    t3("home.marketing.use_case.study_group"),
49925    t3("home.marketing.use_case.game_night"),
49926    t3("home.marketing.use_case.standup"),
49927    t3("home.marketing.use_case.watch_party"),
49928    t3("home.marketing.use_case.catch_up"),
49929    t3("home.marketing.use_case.jam_session"),
49930    t3("home.marketing.use_case.book_club"),
49931    t3("home.marketing.use_case.coworking")
49932  ];
49933  const stageTitle = inviteRoom?.title || t3("app.room_default_title");
49934  const prejoinHeading = (0, import_react6.useMemo)(() => {
49935    if (roomLoading) return t3("home.heading.loading");
49936    if (!inviteRoom) return t3("home.heading.default");
49937    if (invitePending) return t3("home.heading.pending");
49938    if (!inviteJoined) return t3("home.heading.join");
49939    return t3("home.heading.joined");
49940  }, [inviteJoined, invitePending, inviteRoom, roomLoading, t3]);
49941  const prejoinBody = (0, import_react6.useMemo)(() => {
49942    if (roomLoading) return t3("home.body.loading");
49943    if (!inviteRoom) return t3("home.body.default");
49944    if (invitePending) return t3("home.body.pending");
49945    if (!inviteJoined) return t3("home.body.join");
49946    const countRaw = inviteRoom?.presence_count;
49947    const count = Number.isFinite(Number(countRaw)) ? Number(countRaw) : roomMembers.length;
49948    const people = count === 1 ? t3("home.people_one") : t3("home.people_other");
49949    return `${count} ${people} ${t3("home.body.joined_in_room")}`;
49950  }, [inviteJoined, invitePending, inviteRoom, roomLoading, roomMembers.length, t3]);
49951  const primaryActionLabel = (0, import_react6.useMemo)(() => {
49952    if (roomLoading) return t3("home.cta.opening");
49953    if (!inviteRoom) return t3("home.cta.create");
49954    if (invitePending) return t3("home.cta.pending");
49955    if (!inviteJoined) return t3("home.cta.join");
49956    return t3("home.cta.enter");
49957  }, [inviteJoined, invitePending, inviteRoom, roomLoading, t3]);
49958  async function bootstrap() {
49959    if (!storedSession?.api_token) return;
49960    try {
49961      const me3 = await api.getMe(storedSession.api_token);
49962      persistSessionUser(me3.user, storedSession.api_token);
49963    } catch (event) {
49964      saveStoredSession(null);
49965      setSession(null);
49966      setInviteRoom(null);
49967      setProfile(EMPTY_FORM);
49968      setError(event.message);
49969    }
49970  }
49971  function persistSessionUser(user, apiToken = session2?.api_token || user?.api_token) {
49972    const nextSession = {
49973      api_token: apiToken,
49974      user
49975    };
49976    saveStoredSession(nextSession);
49977    setSession(nextSession);
49978    setProfile(normalizeProfile(user));
49979    setInviteRoom((current) => mergeUserIntoRoom(current, user));
49980    setChatMessages((current) => mergeUserIntoMessages(current, user));
49981    return nextSession;
49982  }
49983  async function ensureSession() {
49984    if (!session2?.api_token) {
49985      setProfileSheetError("");
49986      setProfileSheetOpen(true);
49987      throw new Error(t3("home.error.profile_required"));
49988    }
49989    return session2;
49990  }
49991  function openProfileSheet() {
49992    setProfileSheetError("");
49993    setProfileSheetOpen(true);
49994  }
49995  function closeProfileSheet() {
49996    if (profileSheetSaving) return;
49997    pendingProfileActionRef.current = null;
49998    setProfileSheetOpen(false);
49999    setProfileSheetError("");
50000  }
50001  function queueProfileAction(action) {
50002    pendingProfileActionRef.current = action;
50003    openProfileSheet();
50004  }
50005  async function createRoomWithSession(activeSession) {
50006    const payload = await api.createRoom(activeSession.api_token, {});
50007    setInviteRoom(payload.room);
50008    setRoomCode(payload.room.code);
50009    setRoomPath(payload.room.code);
50010    setNotice("");
50011    setMeetingStarted(true);
50012    setEndedRoom(null);
50013  }
50014  async function joinRoomByCodeWithSession(activeSession, code) {
50015    const payload = await api.joinRoom(activeSession.api_token, code);
50016    setInviteRoom(payload.room);
50017    setRoomCode(payload.room.code);
50018    setMeetingStarted(true);
50019    setEndedRoom(null);
50020    setChatOpen(false);
50021  }
50022  async function resumePendingProfileAction(activeSession) {
50023    const pendingAction = pendingProfileActionRef.current;
50024    pendingProfileActionRef.current = null;
50025    if (!pendingAction) return;
50026    setSubmitting(true);
50027    setError("");
50028    setNotice("");
50029    try {
50030      if (pendingAction.type === "create_room") {
50031        await createRoomWithSession(activeSession);
50032      } else if (pendingAction.type === "join_room" && pendingAction.code) {
50033        await joinRoomByCodeWithSession(activeSession, pendingAction.code);
50034      }
50035    } catch (event) {
50036      setError(event.message);
50037    } finally {
50038      setSubmitting(false);
50039    }
50040  }
50041  async function handleSaveProfile(payload, stagedAvatar = null) {
50042    setProfileSheetSaving(true);
50043    setProfileSheetError("");
50044    try {
50045      const result = session2?.api_token ? await api.updateMe(session2.api_token, payload) : await api.createSession(payload);
50046      const token = session2?.api_token || result.user.api_token;
50047      let user = result.user;
50048      if (stagedAvatar) {
50049        try {
50050          const avatarResult = await api.uploadAvatar(
50051            token,
50052            stagedAvatar.file,
50053            avatarCropPayload(stagedAvatar),
50054            { width: stagedAvatar.width, height: stagedAvatar.height }
50055          );
50056          user = avatarResult.user;
50057        } catch (avatarError) {
50058          console.error("avatar upload failed after signup", avatarError);
50059        }
50060      }
50061      const persisted = persistSessionUser(user, token);
50062      setProfileSheetOpen(false);
50063      await resumePendingProfileAction(persisted);
50064    } catch (event) {
50065      setProfileSheetError(event.message || t3("profile.error.save_failed"));
50066    } finally {
50067      setProfileSheetSaving(false);
50068    }
50069  }
50070  async function handleProfileAvatarUpload(file, crop, source) {
50071    const result = await api.uploadAvatar(session2.api_token, file, crop, source);
50072    persistSessionUser(result.user, session2.api_token);
50073    return result.user;
50074  }
50075  async function handleProfileAvatarCropUpdate(crop) {
50076    const result = await api.updateAvatarCrop(session2.api_token, crop);
50077    persistSessionUser(result.user, session2.api_token);
50078    return result.user;
50079  }
50080  async function handleProfileAvatarRemove() {
50081    const result = await api.deleteAvatar(session2.api_token);
50082    persistSessionUser(result.user, session2.api_token);
50083    return result.user;
50084  }
50085  async function loadRoom(code) {
50086    setRoomLoading(true);
50087    setError("");
50088    try {
50089      const payload = await api.getRoom(code, session2?.api_token);
50090      setInviteRoom(payload.room);
50091    } catch (event) {
50092      setInviteRoom(null);
50093      if (event?.code === "room_not_found") {
50094        setError(t3("home.error.room_not_found"));
50095      } else {
50096        setError(event.message);
50097      }
50098    } finally {
50099      setRoomLoading(false);
50100    }
50101  }
50102  async function handleCreateRoom() {
50103    setSubmitting(true);
50104    setError("");
50105    setNotice("");
50106    try {
50107      const activeSession = await ensureSession();
50108      await createRoomWithSession(activeSession);
50109    } catch (event) {
50110      setError(event.message);
50111    } finally {
50112      setSubmitting(false);
50113    }
50114  }
50115  async function handleJoinRoom() {
50116    await handleJoinRoomFromCode(roomCode);
50117  }
50118  function handleEnterRoom() {
50119    setMeetingStarted(true);
50120    setNotice("");
50121    setError("");
50122  }
50123  async function handleLeaveRoom() {
50124    if (!session2?.api_token || !inviteRoom?.code) return;
50125    setSubmitting(true);
50126    setError("");
50127    try {
50128      const endedSnapshot = inviteRoom ? {
50129        code: inviteRoom.code,
50130        title: inviteRoom.title,
50131        share_url: inviteRoom.share_url
50132      } : null;
50133      await api.leaveRoom(session2.api_token, inviteRoom.code);
50134      setEndedRoom(endedSnapshot);
50135      setInviteRoom(null);
50136      setRoomCode("");
50137      setCopied(false);
50138      setMeetingStarted(false);
50139      setChatOpen(false);
50140      setRoomPath("");
50141      setNotice("");
50142    } catch (event) {
50143      setError(event.message);
50144    } finally {
50145      setSubmitting(false);
50146    }
50147  }
50148  async function handleLockRoom() {
50149    if (!session2?.api_token || !inviteRoom?.code) return;
50150    setInviteRoom((current) => current ? { ...current, locked: true } : current);
50151    try {
50152      await api.lockRoom(session2.api_token, inviteRoom.code);
50153    } catch (event) {
50154      setInviteRoom((current) => current ? { ...current, locked: false } : current);
50155      setError(event.message);
50156    }
50157  }
50158  async function handleUnlockRoom() {
50159    if (!session2?.api_token || !inviteRoom?.code) return;
50160    setInviteRoom((current) =>
50160 current ? { ...current, locked: false } : current);
50161    try {
50162      await api.unlockRoom(session2.api_token, inviteRoom.code);
50163    } catch (event) {
50164      setInviteRoom((current) => current ? { ...current, locked: true } : current);
50165      setError(event.message);
50166    }
50167  }
50168  async function handleKickMember(userId) {
50169    if (!session2?.api_token || !inviteRoom?.code) return;
50170    try {
50171      await api.kickMember(session2.api_token, inviteRoom.code, userId);
50172    } catch (event) {
50173      setError(event.message);
50174    }
50175  }
50176  async function handleMuteMember(userId, muted = true) {
50177    if (!session2?.api_token || !inviteRoom?.code) return;
50178    try {
50179      await api.muteMember(session2.api_token, inviteRoom.code, userId, muted);
50180    } catch (event) {
50181      setError(event.message);
50182    }
50183  }
50184  async function refreshRoom() {
50185    if (!session2?.api_token || !inviteRoom?.code) return;
50186    try {
50187      const payload = await api.getRoom(inviteRoom.code, session2.api_token);
50188      if (payload?.room) setInviteRoom(payload.room);
50189    } catch (_event) {
50190    }
50191  }
50192  async function handleApproveMember(userId) {
50193    if (!session2?.api_token || !inviteRoom?.code) return;
50194    try {
50195      await api.approveMember(session2.api_token, inviteRoom.code, userId);
50196    } catch (event) {
50197      setError(event.message);
50198    }
50199  }
50200  async function handleDenyMember(userId) {
50201    if (!session2?.api_token || !inviteRoom?.code) return;
50202    try {
50203      await api.denyMember(session2.api_token, inviteRoom.code, userId);
50204    } catch (event) {
50205      setError(event.message);
50206    }
50207  }
50208  async function copyRoomLink() {
50209    if (!inviteRoom?.share_url) return;
50210    try {
50211      let urlToCopy = inviteRoom.share_url;
50212      try {
50213        const next = new URL(inviteRoom.share_url, window.location.origin);
50214        next.searchParams.set("lang", locale);
50215        urlToCopy = next.toString();
50216      } catch (_error) {
50217        const sep = inviteRoom.share_url.includes("?") ? "&" : "?";
50218        urlToCopy = `${inviteRoom.share_url}${sep}lang=${encodeURIComponent(locale)}`;
50219      }
50220      await navigator.clipboard.writeText(urlToCopy);
50221      setCopied(true);
50222      window.setTimeout(() => setCopied(false), 1500);
50223    } catch (_error) {
50224      setError(t3("app.copy_failed"));
50225    }
50226  }
50227  function handleSetPrejoinGrade(gradeId) {
50228    setPrejoinGrade(gradeId);
50229    try {
50230      localStorage.setItem("yano_prejoin_grade", gradeId);
50231    } catch (_error) {
50232    }
50233  }
50234  function handleTogglePrejoinSoft() {
50235    setPrejoinSoftEnabled((value) => {
50236      const next = !value;
50237      try {
50238        localStorage.setItem("yano_prejoin_soft", next ? "1" : "0");
50239      } catch (_error) {
50240      }
50241      return next;
50242    });
50243  }
50244  function handleTogglePrejoinVignette() {
50245    setPrejoinVignetteEnabled((value) => {
50246      const next = !value;
50247      try {
50248        localStorage.setItem("yano_prejoin_vignette", next ? "1" : "0");
50249      } catch (_error) {
50250      }
50251      return next;
50252    });
50253  }
50254  function handleTogglePrejoinFaceBlur() {
50255    setPrejoinFaceBlurEnabled((value) => {
50256      const next = !value;
50257      try {
50258        localStorage.setItem("yano_prejoin_face_blur", next ? "1" : "0");
50259      } catch (_error) {
50260      }
50261      return next;
50262    });
50263  }
50264  function handleSetPrejoinFaceBlurAmount(nextValue) {
50265    const value = Math.min(9, Math.max(2, Math.round(Number(nextValue) || 2)));
50266    setPrejoinFaceBlurAmount(value);
50267    try {
50268      localStorage.setItem("yano_prejoin_face_blur_amount", String(value));
50269    } catch (_error) {
50270    }
50271  }
50272  function renderPrimaryAction() {
50273    const hasProfile = Boolean(session2?.user?.display_name);
50274    if (roomLoading) {
50275      return /* @__PURE__ */ import_react6.default.createElement("button", { className: "yano-button yano-button--primary", type: "button", disabled: true }, t3("home.cta.opening"));
50276    }
50277    if (!inviteRoom) {
50278      return /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, /* @__PURE__ */ import_react6.default.createElement(
50279        "button",
50280        {
50281          className: "yano-button yano-button--primary",
50282          type: "button",
50283          disabled: submitting,
50284          onClick: hasProfile ? handleCreateRoom : () => queueProfileAction({ type: "create_room" })
50285        },
50286        submitting ? t3("home.cta.creating") : hasProfile ? primaryActionLabel : t3("home.cta.set_up_profile")
50287      ), joinByCodeOpen ? /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-3 flex items-center gap-2" }, /* @__PURE__ */ import_react6.default.createElement(
50288        "input",
50289        {
50290          type: "text",
50291          value: joinCodeDraft,
50292          onChange: (event) => setJoinCodeDraft(event.target.value.toUpperCase()),
50293          onKeyDown: (event) => {
50294            if (event.key === "Enter" && joinCodeDraft.trim()) {
50295              if (hasProfile) handleJoinRoomFromCode(joinCodeDraft.trim());
50296              else queueProfileAction({ type: "join_room", code: joinCodeDraft.trim() });
50297            }
50298          },
50299          placeholder: t3("home.code_placeholder"),
50300          maxLength: 6,
50301          className: "min-w-0 flex-1 rounded-2xl border border-violet-500/15 bg-violet-500/8 px-4 py-2.5 text-center text-sm font-bold uppercase tracking-widest text-violet-100 outline-none transition placeholder:text-violet-500/40 placeholder:tracking-normal placeholder:font-semibold focus:border-violet-400/40",
50302          autoFocus: true
50303        }
50304      ), /* @__PURE__ */ import_react6.default.createElement(
50305        "button",
50306        {
50307          className: "yano-button yano-button--secondary shrink-0",
50308          type: "button",
50309          disabled: !joinCodeDraft.trim() || submitting,
50310          onClick: () => {
50311            if (hasProfile) handleJoinRoomFromCode(joinCodeDraft.trim());
50312            else queueProfileAction({ type: "join_room", code: joinCodeDraft.trim() });
50313          }
50314        },
50315        t3("home.cta.join")
50316      )) : /* @__PURE__ */ import_react6.default.createElement("button", { className: "mt-3 text-sm font-semibold text-violet-300/70 transition hover:text-violet-200", type: "button", onClick: () => setJoinByCodeOpen(true) }, t3("home.join_by_code")));
50317    }
50318    if (invitePending) {
50319      return /* @__PURE__ */ import_react6.default.createElement("button", { className: "yano-button yano-button--primary", type: "button", disabled: true }, primaryActionLabel);
50320    }
50321    if (!inviteJoined) {
50322      return /* @__PURE__ */ import_react6.default.createElement(
50323        "button",
50324        {
50325          className: "yano-button yano-button--primary",
50326          type: "button",
50327          disabled: submitting,
50328          onClick: hasProfile ? handleJoinRoom : () => queueProfileAction({ type: "join_room", code: roomCode })
50329        },
50330        submitting ? t3("home.cta.joining") : hasProfile ? primaryActionLabel : t3("home.cta.set_up_profile")
50331      );
50332    }
50333    return /* @__PURE__ */ import_react6.default.createElement("button", { className: "yano-button yano-button--primary", type: "button", onClick: handleEnterRoom }, primaryActionLabel);
50334  }
50335  async function handleRejoinEndedRoom() {
50336    if (!endedRoom?.code) return;
50337    setRoomCode(endedRoom.code);
50338    setRoomPath(endedRoom.code);
50339    setNotice("");
50340    setError("");
50341    await handleJoinRoomFromCode(endedRoom.code);
50342  }
50343  async function handleJoinRoomFromCode(code) {
50344    if (!code) return;
50345    setSubmitting(true);
50346    setError("");
50347    setNotice("");
50348    try {
50349      const activeSession = await ensureSession();
50350      await joinRoomByCodeWithSession(activeSession, code);
50351    } catch (event) {
50352      setError(event.message);
50353    } finally {
50354      setSubmitting(false);
50355    }
50356  }
50357  function handleReturnHome() {
50358    if (chatConnectionRef.current) {
50359      chatConnectionRef.current.unsubscribe();
50360      chatConnectionRef.current = null;
50361    }
50362    setEndedRoom(null);
50363    setInviteRoom(null);
50364    setRoomCode("");
50365    setCopied(false);
50366    setMeetingStarted(false);
50367    setNotice("");
50368    setError("");
50369    setChatMessages([]);
50370    setChatHasMore(false);
50371    setUnreadCount(0);
50372    setChatOpen(false);
50373    setRoomPath("");
50374  }
50375  async function handleSendMessage(body) {
50376    if (!chatConnectionRef.current || !chatConnected) {
50377      throw new Error(t3("app.chat_not_connected"));
50378    }
50379    chatConnectionRef.current.send("send_message", { body });
50380  }
50381  async function handleLoadMoreMessages() {
50382    if (!session2?.api_token || !inviteRoom?.code || !chatHasMore || !chatMessages.length) return;
50383    setChatLoading(true);
50384    try {
50385      const payload = await api.getRoomMessages(session2.api_token, inviteRoom.code, chatMessages[0].id);
50386      setChatMessages((current) => mergeMessages(current, payload.messages || [], true));
50387      setChatHasMore(Boolean(payload.has_more));
50388    } catch (event) {
50389      setError(event.message);
50390    } finally {
50391      setChatLoading(false);
50392    }
50393  }
50394  function handleToggleChat() {
50395    setChatOpen((open) => !open);
50396  }
50397  (0, import_react6.useEffect)(() => {
50398    if (!inMeeting) return;
50399    const interval = window.setInterval(() => setChatOverlayTick((n3) => n3 + 1), 5e3);
50400    return () => window.clearInterval(interval);
50401  }, [inMeeting]);
50402  if (inMeeting) {
50403    const now3 = Date.now();
50404    const chatOverlayMessages = chatMessages.filter((m3) => m3._receivedAt && now3 - m3._receivedAt < 3e4).slice(-4);
50405    return /* @__PURE__ */ import_react6.default.createElement("main", { className: "h-dvh overflow-hidden bg-[#1a0e2e] p-0" }
50405, /* @__PURE__ */ import_react6.default.createElement(
50406      CallStage,
50407      {
50408        join: stageJoin,
50409        title: stageTitle,
50410        roomCode: inviteRoom?.code,
50411        shareUrl: inviteRoom?.share_url,
50412        copied,
50413        onCopyLink: copyRoomLink,
50414        onLeaveRoom: handleLeaveRoom,
50415        chatOpen,
50416        onToggleChat: handleToggleChat,
50417        unreadCount,
50418        onSendMessage: handleSendMessage,
50419        onLoadMoreMessages: handleLoadMoreMessages,
50420        chatOverlayMessages,
50421        chatMessages,
50422        chatHasMore,
50423        chatLoading,
50424        chatConnected,
50425        apiToken: session2?.api_token,
50426        currentUserId: session2?.user?.id,
50427        displayName: previewName,
50428        initialMedia: mediaPreferences,
50429        localVideoEffects,
50430        isHost: inviteRoom?.membership?.role === "host",
50431        roomLocked: Boolean(inviteRoom?.locked),
50432        roomMembers,
50433        onLockRoom: handleLockRoom,
50434        onUnlockRoom: handleUnlockRoom,
50435        onKickMember: handleKickMember,
50436        onMuteMember: handleMuteMember,
50437        pendingMembers: inviteRoom?.pending_members || [],
50438        onApproveMember: handleApproveMember,
50439        onDenyMember: handleDenyMember
50440      }
50441    ));
50442  }
50443  if (endedRoom) {
50444    return /* @__PURE__ */ import_react6.default.createElement("main", { className: "yano-grain h-dvh overflow-hidden bg-[#1a0e2e] text-white" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "relative z-[1] mx-auto flex h-dvh max-w-md flex-col px-5 py-5 sm:px-8" }, /* @__PURE__ */ import_react6.default.createElement("header", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react6.default.createElement(YanoLogo, { className: "h-10 w-10" }), /* @__PURE__ */ import_react6.default.createElement(YanoWordmark, null)), /* @__P
50444URE__ */ import_react6.default.createElement(EndedScreen, { room: endedRoom, onRejoin: handleRejoinEndedRoom, onReturnHome: handleReturnHome, submitting })));
50445  }
50446  return /* @__PURE__ */ import_react6.default.createElement("main", { className: "yano-grain min-h-dvh bg-[#1a0e2e] text-white" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "relative z-[1] mx-auto flex min-h-dvh max-w-md flex-col px-5 py-5 sm:px-8 lg:max-w-5xl lg:px-10 lg:py-8" }, /* @__PURE__ */ import_react6.default.createElement("header", { className: "yano-enter relative z-[140] flex items-center justify-between overflow-visible", style: { animationDelay: "0ms" } }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ import_react6.default.createElement(YanoLogo, { className: "h-10 w-10" }), /* @__PURE__ */ import_react6.default.createElement(YanoWordmark, null)), /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex items-center gap-2" }, inviteRoom?.code ? /* @__PURE__ */ import_react6.default.createElement("div", { className: "rounded-full bg-violet-500/15 px-3 py-1.5 text-xs font-bold text-violet-300" }, inviteRoom.code) : null, /* @__PURE__ */ import_react6.default.createElement(LocalePicker, null))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "relative z-0 flex flex-1 flex-col items-center justify-center py-8 lg:py-10" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "w-full lg:grid lg:grid-cols-[minmax(0,1.35fr)_minmax(0,0.95fr)] lg:items-start lg:gap-10" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "w-full yano-enter lg:col-start-2 lg:row-start-1", style: { animationDelay: "60ms" } }, /* @__PURE__ */ import_react6.default.createElement("h1", { className: "font-display text-[clamp(2.6rem,10vw,4rem)] font-extrabold leading-[0.95] tracking-[-0.045em] text-white" }, prejoinHeading), /* @__PURE__ */ import_react6.default.createElement("p", { className: "mt-3 text-[0.95rem] leading-relaxed text-violet-300/60" }, prejoinBody)), /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-8 w-full yano-enter lg:col-start-1 lg:row-start-1 lg:row-span-3 lg:mt-0", style: { animationDelay: "120ms" } }, /* @__PURE__ */ import_react6.default.createElement(
50447    "div",
50448    {
50449      className: "yano-prejoin-preview overflow-hidden rounded-[1.6rem] bg-violet-500/8 lg:rounded-[2rem]",
50450      style: {
50451        "--yano-preview-filter": filterStringForVideoEffects(localVideoEffects),
50452        "--yano-face-blur": `${prejoinFaceBlurAmount}px`
50453      }
50454    },
50455    /* @__PURE__ */ import_react6.default.createElement("div", { className: "rounded-[1.6rem] bg-violet-500/20 p-[2px] lg:rounded-[2rem]" }, /* @__PURE__ */ import_react6.default.createElement(
50456      CameraPreview,
50457      {
50458        className: "aspect-[3/4] w-full sm:aspect-video",
50459        minimal: true,
50460        vignette: prejoinVignetteEnabled,
50461        faceBlur: prejoinFaceBlurEnabled,
50462        label: previewName,
50463        videoEnabled: mediaPreferences.videoEnabled,
50464        audioEnabled: mediaPreferences.audioEnabled
50465      }
50466    )),
50467    /* @__PURE__ */ import_react6.default.createElement(
50468      "div",
50469      {
50470        className: "grid transition-[grid-template-rows] duration-200 ease-[cubic-bezier(0.16,1,0.3,1)]",
50471        style: { gridTemplateRows: prejoinEffectsOpen ? "1fr" : "0fr" }
50472      },
50473      /* @__PURE__ */ import_react6.default.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: `px-4 pt-3 ${prejoinEffectsOpen ? "opacity-100 translate-y-0" : "opacity-0 -translate-y-1"} transition-[opacity,transform] duration-200 ease-[cubic-bezier(0.16,1,0.3,1)]` }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex flex-wrap gap-2" }, PREJOIN_GRADES.map((effect) => {
50474        const selected = prejoinGrade === effect.id;
50475        return /* @__PURE__ */ import_react6.default.createElement(
50476          "button",
50477          {
50478            key: effect.id,
50479            type: "button",
50480            onClick: () => handleSetPrejoinGrade(effect.id),
50481            className: `rounded-2xl border px-3 py-2 text-xs font-extrabold tracking-[0.12em] transition ${selected ? "border-violet-400/30 bg-violet-500/18 text-violet-100" : "border-violet-500/12 bg-black/10 text-violet-300/70 hover:bg-violet-500/10 hover:text-violet-200"}`,
50482            title: t3(`effects.grade.${effect.id}`),
50483            "aria-pressed": selected
50484          },
50485          t3(`effects.grade.${effect.id}`)
50486        );
50487      })), /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-3" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "h-px w-full bg-violet-500/10" }), /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-2 flex flex-wrap items-center gap-2" }, /* @__PURE__ */ import_react6.default.createElement(
50488        "button",
50489        {
50490          type: "button",
50491          onClick: handleTogglePrejoinSoft,
50492          className: `rounded-2xl border px-3 py-2 text-xs font-extrabold tracking-[0.12em] transition ${prejoinSoftEnabled ? "border-violet-400/30 bg-violet-500/18 text-violet-100" : "border-violet-500/12 bg-black/10 text-violet-300/70 hover:bg-violet-500/10 hover:text-violet-200"}`,
50493          "aria-pressed": prejoinSoftEnabled,
50494          title: t3("effects.soft")
50495        },
50496        t3("effects.soft")
50497      ), /* @__PURE__ */ import_react6.default.createElement(
50498        "button",
50499        {
50500          type: "button",
50501          onClick: handleTogglePrejoinVignette,
50502          className: `rounded-2xl border px-3 py-2 text-xs font-extrabold tracking-[0.12em] transition ${prejoinVignetteEnabled ? "border-violet-400/30 bg-violet-500/18 text-violet-100" : "border-violet-500/12 bg-black/10 text-violet-300/70 hover:bg-violet-500/10 hover:text-violet-200"}`,
50503          "aria-pressed": prejoinVignetteEnabled,
50504          title: t3("effects.vignette")
50505        },
50506        t3("effects.vignette")
50507      ), /* @__PURE__ */ import_react6.default.createElement(
50508        "button",
50509        {
50510          type: "button",
50511          onClick: handleTogglePrejoinFaceBlur,
50512          className: `rounded-2xl border px-3 py-2 text-xs font-extrabold tracking-[0.12em] transition ${prejoinFaceBlurEnabled ? "border-violet-400/30 bg-violet-500/18 text-violet-100" : "border-violet-500/12 bg-black/10 text-violet-300/70 hover:bg-violet-500/10 hover:text-violet-200"}`,
50513          "aria-pressed": prejoinFaceBlurEnabled,
50514          title: t3("effects.face_preview_only")
50515        },
50516        t3("effects.face")
50517      ))), prejoinFaceBlurEnabled ? /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-3 rounded-2xl border border-violet-500/12 bg-black/10 px-3 py-3" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex items-center justify-between gap-3" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "text-[11px] font-extrabold tracking-[0.14em] text-violet-200/90" }, t3("effects.face")), /* @__PURE__ */ import_react6.default.createElement("div", { className: "text-[11px] font-bold text-violet-300/60" }
50517, prejoinFaceBlurAmount, "px")), /* @__PURE__ */ import_react6.default.createElement(
50518        "input",
50519        {
50520          className: "yano-range mt-2 w-full",
50521          type: "range",
50522          min: "2",
50523          max: "9",
50524          step: "1",
50525          value: prejoinFaceBlurAmount,
50526          onChange: (event) => handleSetPrejoinFaceBlurAmount(event.target.value),
50527          "aria-label": t3("effects.face_strength")
50528        }
50529      )) : null))
50530    ),
50531    /* @__PURE__ */ import_react6.default.createElement("div", { className: "relative flex items-center justify-between gap-3 px-4 py-3" }, /* @__PURE__ */ import_react6.default.createElement(
50532      "button",
50533      {
50534        type: "button",
50535        onClick: openProfileSheet,
50536        className: "yano-profile-trigger group min-w-0 flex-1",
50537        "aria-label": session2?.user?.display_name ? t3("home.profile_trigger_edit_aria") : t3("home.profile_trigger_new_aria")
50538      },
50539      session2?.user?.display_name ? /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, /* @__PURE__ */ import_react6.default.createElement(ProfileAvatar, { name: session2.user.display_name, avatarUrl: session2.user.avatar_url, size: 32 }), /* @__PURE__ */ import_react6.default.createElement("span", { className: "min-w-0 flex-1 truncate text-left text-sm font-bold text-violet-100" }, session2.user.display_name), /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-trigger__edit shrink-0" }, /* @__PURE__ */ import_react6.default.createElement("svg", { viewBox: "0 0 16 16", className: "h-3.5 w-3.5", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react6.default.createElement("path", { d: "M11.5 2.5a1.6 1.6 0 0 1 2.3 2.3l-7.4 7.4-3 .7.7-3 7.4-7.4Z" })))) : /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-trigger__avatar-empty shrink-0", "aria-hidden": "true" }, /* @__PURE__ */ import_react6.default.createElement("svg", { viewBox: "0 0 18 18", className: "h-3.5 w-3.5", fill: "none", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round" }, /* @__PURE__ */ import_react6.default.createElement("path", { d: "M9 3.5v11M3.5 9h11" }))), /* @__PURE__ */ import_react6.default.createElement("span", { className: "min-w-0 flex-1 truncate text-left text-sm font-bold text-violet-200/85" }
50539, t3("home.profile_trigger_new")), /* @__PURE__ */ import_react6.default.createElement("span", { className: "yano-profile-trigger__arrow shrink-0", "aria-hidden": "true" }, "\u2192"))
50540    ), /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react6.default.createElement(MediaToggle, { active: mediaPreferences.audioEnabled, label: mediaPreferences.audioEnabled ? t3("mic.on") : t3("mic.off"), onClick: () => setMediaPreferences((current) => ({ ...current, audioEnabled: !current.audioEnabled })) }, /* @__PURE__ */ import_react6.default.createElement(MicIcon, null)), /* @__PURE__ */ import_react6.default.createElement(MediaToggle, { active: mediaPreferences.videoEnabled, label: mediaPreferences.videoEnabled ? t3("video.on") : t3("video.off"), onClick: () => setMediaPreferences((current) => ({ ...current, videoEnabled: !current.videoEnabled })) }, /* @__PURE__ */ import_react6.default.createElement(VideoIcon, null)), /* @__PURE__ */ import_react6.default.createElement(
50541      "button",
50542      {
50543        type: "button",
50544        className: "yano-media-toggle",
50545        onClick: () => setPrejoinEffectsOpen((value) => !value),
50546        "aria-pressed": prejoinEffectsOpen,
50547        "aria-label": t3("effects.title"),
50548        title: t3("effects.title")
50549      },
50550      /* @__PURE__ */ import_react6.default.createElement(EffectsIcon, null)
50551    )))
50552  )), /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-8 w-full lg:col-start-2 lg:row-start-2 lg:mt-6" }, error2 ? /* @__PURE__ */ import_react6.default.createElement("div", { className: "w-full yano-enter" }, /* @__PURE__ */ import_react6.default.createElement(StatusBanner, { tone: "error" }, error2)) : null, !error2 && notice ? /* @__PURE__ */ import_react6.default.createElement("div", { className: "w-full yano-enter" }, /* @__PURE__ */ import_react6.default.createElement(StatusBanner, { tone: "success" }, notice)) : null, /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-6 w-full yano-enter", style: { animationDelay: "180ms" } }, renderPrimaryAction(), inviteRoom ? /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-3 flex items-center justify-center" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "inline-flex items-center gap-1.5 rounded-full border border-violet-500/15 bg-violet-500/8 px-3 py-1.5 text-sm font-semibold text-violet-200/80" }, /* @__PURE__ */ import_react6.default.createElement(UsersIcon_default, { className: "h-4 w-4 text-violet-300/70" }), /* @__PURE__ */ import_react6.default.createElement("span", { className: "tabular-nums" }, inviteRoom?.presence_count ?? roomMembers.length))) : null))))), /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, /* @__PURE__ */ import_react6.default.createElement("section", { className: "relative z-[1] overflow-hidden border-t border-violet-500/8 bg-[#130a22]" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "pointer-events-none absolute inset-0", "aria-hidden": true }, /* @__PURE__ */ import_react6.default.createElement("svg", { className: "absolute right-[4%] top-[10%] opacity-[0.06] sm:opacity-[0.09]", style: { width: "clamp(100px, 14vw, 200px)" }, viewBox: "0 0 120 100", fill: "none" }, /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "20", cy: "20", r: "8", stroke: "#a78bfa", strokeWidth: "1.3" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "100", cy: "15", r: "6", stroke: "#a78bfa", strokeWidth: "1.3" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "60", cy: "70", r: "10", stroke: "#a78bfa", strokeWidth: "1.3" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "105", cy: "80", r: "5", stroke: "#a78bfa", strokeWidth: "1.3" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "28", y1: "24", x2: "52", y2: "62", stroke: "#a78bfa", strokeWidth: "1", opacity: "0.5" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "68", y1: "64", x2: "94", y2: "18", stroke: "#a78bfa", strokeWidth: "1", opacity: "0.5" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "70", y1: "72", x2: "100", y2: "78", stroke: "#a78bfa", strokeWidth: "1", opacity: "0.5" })), /* @__PURE__ */ import_react6.default.createElement("svg", { className: "absolute bottom-[12%] left-[4%] opacity-[0.06] sm:opacity-[0.09]", style: { width: "clamp(80px, 10vw, 150px)" }, viewBox: "0 0 80 80", fill: "none" }, /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "15", cy: "40", r: "10", stroke: "#c084fc", strokeWidth: "1.3" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "65", cy: "15", r: "10", stroke: "#c084fc", strokeWidth: "1.3" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "65", cy: "65", r: "10", stroke: "#c084fc", strokeWidth: "1.3" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "25", y1: "35", x2: "55", y2: "20", stroke: "#c084fc", strokeWidth: "1", opacity: "0.5" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "25", y1: "45", x2: "55", y2: "60", stroke: "#c084fc", strokeWidth: "1", opacity: "0.5" }))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "relative mx-auto flex max-w-4xl flex-col gap-6 px-6 py-20 sm:flex-row sm:items-center sm:gap-14 sm:py-28" }
50552, /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex-1" }, /* @__PURE__ */ import_react6.default.createElement("h2", { className: "font-display text-[clamp(1.6rem,5vw,2.4rem)] font-extrabold leading-[1.05] tracking-[-0.04em] text-white" }, t3("home.marketing.invite.title").split("\n").map((line, index) => /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, { key: line }, index > 0 ? /* @__PURE__ */ import_react6.default.createElement("br", null) : null, line))), /* @__PURE__ */ import_react6.default.createElement("p", { className: "mt-3 text-[0.9rem] leading-relaxed text-violet-300/50" }, t3("home.marketing.invite.body"))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex shrink-0 items-center justify-center sm:w-60" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "w-full max-w-[14rem]" }, /* @__PURE__ */ import_react6.default.createElement("svg", { viewBox: "0 0 240 160", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "w-full" }, /* @__PURE__ */ import_react6.default.createElement("rect", { x: "1", y: "1", width: "238", height: "158", rx: "12", stroke: "#a78bfa", strokeWidth: "1", opacity: "0.15" }), /* @__PURE__ */ import_react6.default.createElement("rect", { x: "1", y: "1", width: "238", height: "24", rx: "12", fill: "#a78bfa", fillOpacity: "0.06" }), /* @__PURE__ */ import_react6.default.createElement("rect", { x: "1", y: "13", width: "238", height: "12", fill: "#a78bfa", fillOpacity: "0.06" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "16", cy: "13", r: "3", fill: "#a78bfa", opacity: "0.2" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "26", cy: "13", r: "3", fill: "#a78bfa", opacity: "0.15" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "36", cy: "13", r: "3", fill: "#a78bfa", opacity: "0.1" }), /* @__PURE__ */ import_react6.default.createElement("rect", { x: "52", y: "8", width: "136", height: "10", rx: "5", fill: "#a78bfa", fillOpacity: "0.08" }), /* @__PURE__ */ import_react6.default.createElement("text", { x: "72", y: "16", fontSize: "6", fontWeight: "600", fill: "#a78bfa", opacity: "0.35", fontFamily: "system-ui" }, t3("home.marketing.invite.preview_url")), /* @__PURE__ */ import_react6.default.createElement("rect", { x: "12", y: "34", width: "104", height: "56", rx: "8", fill: "#a78bfa", fillOpacity: "0.06", stroke: "#a78bfa", strokeWidth: "0.8", opacity: "0.2" }), /* @__PURE__ */ import_react6.default.createElement("rect", { x: "124", y: "34", width: "104", height: "56", rx: "8", fill: "#a78bfa", fillOpacity: "0.06", stroke: "#a78bfa", strokeWidth: "0.8", opacity: "0.2" }), /* @__PURE__ */ import_react6.default.createElement("rect", { x: "12", y: "96", width: "104", height: "56", rx: "8", fill: "#a78bfa", fillOpacity: "0.06", stroke: "#a78bfa", strokeWidth: "0.8", opacity: "0.2" }), /* @__PURE__ */ import_react6.default.createElement("rect", { x: "124", y: "96", width: "104", height: "56", rx: "8", fill: "#a78bfa", fillOpacity: "0.06", stroke: "#a78bfa", strokeWidth: "0.8", opacity: "0.2" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "64", cy: "58", r: "10", stroke: "#c084fc", strokeWidth: "1", opacity: "0.3" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "176", cy: "58", r: "10", stroke: "#c084fc", strokeWidth: "1", opacity: "0.3" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "64", cy: "120", r: "10", stroke: "#c084fc", strokeWidth: "1", opacity: "0.3" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "176", cy: "120", r: "10", stroke: "#c084fc", strokeWidth: "1", opacity: "0.2", strokeDasharray: "3 3" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "172", y1: "120", x2: "180", y2: "120", stroke: "#c084fc", strokeWidth: "1", opacity: "0.2" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "176", y1: "116", x2: "176", y2: "124", stroke: "#c084fc", strokeWidth: "1", opacity: "0.2" }
50552), /* @__PURE__ */ import_react6.default.createElement("rect", { x: "50", y: "72", width: "28", height: "3", rx: "1.5", fill: "#a78bfa", opacity: "0.15" }), /* @__PURE__ */ import_react6.default.createElement("rect", { x: "162", y: "72", width: "28", height: "3", rx: "1.5", fill: "#a78bfa", opacity: "0.15" }), /* @__PURE__ */ import_react6.default.createElement("rect", { x: "50", y: "134", width: "28", height: "3", rx: "1.5", fill: "#a78bfa", opacity: "0.15" })))))), /* @__PURE__ */ import_react6.default.createElement("section", { className: "relative z-[1] overflow-hidden bg-[#0f0720]" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "pointer-events-none absolute inset-0", "aria-hidden": true }, /* @__PURE__ */ import_react6.default.createElement("svg", { className: "absolute left-[3%] top-[8%] opacity-[0.06] sm:opacity-[0.09]", style: { width: "clamp(90px, 12vw, 170px)" }, viewBox: "0 0 100 100", fill: "none" }, /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "50", cy: "50", r: "44", stroke: "#f0abfc", strokeWidth: "1.3" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "50", cy: "50", r: "28", stroke: "#f0abfc", strokeWidth: "1", opacity: "0.6" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "50", cy: "50", r: "12", stroke: "#f0abfc", strokeWidth: "1", opacity: "0.3" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "50", y1: "6", x2: "50", y2: "22", stroke: "#f0abfc", strokeWidth: "0.8", opacity: "0.3" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "50", y1: "78", x2: "50", y2: "94", stroke: "#f0abfc", strokeWidth: "0.8", opacity: "0.3" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "6", y1: "50", x2: "22", y2: "50", stroke: "#f0abfc", strokeWidth: "0.8", opacity: "0.3" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "78", y1: "50", x2: "94", y2: "50", stroke: "#f0abfc", strokeWidth: "0.8", opacity: "0.3" })), /* @__PURE__ */ import_react6.default.createElement("svg", { className: "absolute bottom-[10%] right-[4%] opacity-[0.06] sm:opacity-[0.09]", style: { width: "clamp(80px, 11vw, 160px)" }, viewBox: "0 0 100 80", fill: "none" }, /* @__PURE__ */ import_react6.default.createElement("line", { x1: "10", y1: "15", x2: "90", y2: "15", stroke: "#c084fc", strokeWidth: "1.2", opacity: "0.4" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "35", cy: "15", r: "5", stroke: "#c084fc", strokeWidth: "1.3" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "10", y1: "40", x2: "90", y2: "40", stroke: "#c084fc", strokeWidth: "1.2", opacity: "0.4" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "62", cy: "40", r: "5", stroke: "#c084fc", strokeWidth: "1.3" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "10", y1: "65", x2: "90", y2: "65", stroke: "#c084fc", strokeWidth: "1.2", opacity: "0.4" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "48", cy: "65", r: "5", stroke: "#c084fc", strokeWidth: "1.3" })), /* @__PURE__ */ import_react6.default.createElement("svg", { className: "absolute right-[8%] top-[15%] opacity-[0.06] sm:opacity-[0.09]", style: { width: "clamp(60px, 8vw, 110px)" }, viewBox: "0 0 60 60", fill: "none" }, /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "30", cy: "10", r: "2.5", fill: "#e879f9", opacity: "0.5" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "10", cy: "35", r: "1.5", fill: "#e879f9", opacity: "0.3" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "50", cy: "30", r: "3", fill: "#e879f9", opacity: "0.4" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "25", cy: "50", r: "2", fill: "#e879f9", opacity: "0.35" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "45", cy: "55", r: "1.5", fill: "#e879f9", opacity: "0.25" }), /* @__PURE__ */ import_react6.default.createElement("path", { d: "M30 2 L32 8 L38 10 L32 12 L30 18 L28 12 L22 10 L28 8 Z", stroke: "#e879f9", strokeWidth: "0.8", opacity: "0.4", fill: "none" }
50552))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "relative mx-auto flex max-w-4xl flex-col-reverse gap-6 px-6 py-20 sm:flex-row sm:items-center sm:gap-14 sm:py-28" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex shrink-0 items-center justify-center" }, /* @__PURE__ */ import_react6.default.createElement(EffectsShowcase, null)), /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex-1" }, /* @__PURE__ */ import_react6.default.createElement("h2", { className: "font-display text-[clamp(1.6rem,5vw,2.4rem)] font-extrabold leading-[1.05] tracking-[-0.04em] text-white" }, t3("home.marketing.look.title").split("\n").map((line, index) => /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, { key: line }, index > 0 ? /* @__PURE__ */ import_react6.default.createElement("br", null) : null, line))), /* @__PURE__ */ import_react6.default.createElement("p", { className: "mt-3 text-[0.9rem] leading-relaxed text-violet-300/50" }, t3("home.marketing.look.body"))))), /* @__PURE__ */ import_react6.default.createElement("section", { className: "relative z-[1] overflow-hidden bg-[#0f0720]" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "pointer-events-none absolute inset-0", "aria-hidden": true }, /* @__PURE__ */ import_react6.default.createElement("svg", { className: "absolute right-[5%] top-[8%] opacity-[0.06] sm:opacity-[0.09]", style: { width: "clamp(80px, 11vw, 150px)" }, viewBox: "0 0 80 100", fill: "none" }, /* @__PURE__ */ import_react6.default.createElement("path", { d: "M40 4 L72 20 L72 52 Q72 80 40 96 Q8 80 8 52 L8 20 Z", stroke: "#fbbf24", strokeWidth: "1.3" }), /* @__PURE__ */ import_react6.default.createElement("path", { d: "M40 24 L56 32 L56 48 Q56 64 40 72 Q24 64 24 48 L24 32 Z", stroke: "#fbbf24", strokeWidth: "1", opacity: "0.4" })), /* @__PURE__ */ import_react6.default.createElement("svg", { className: "absolute bottom-[10%] left-[4%] opacity-[0.06] sm:opacity-[0.09]", style: { width: "clamp(70px, 9vw, 130px)" }, viewBox: "0 0 80 80", fill: "none" }, /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "40", cy: "28", r: "12", stroke: "#f59e0b", strokeWidth: "1.3" }), /* @__PURE__ */ import_react6.default.createElement("path", { d: "M20 68 Q20 50 40 50 Q60 50 60 68", stroke: "#f59e0b", strokeWidth: "1.3" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "14", y1: "14", x2: "66", y2: "66", stroke: "#f59e0b", strokeWidth: "1.5", strokeLinecap: "round", opacity: "0.5" })), /* @__PURE__ */ import_react6.default.createElement("svg", { className: "absolute bottom-[15%] right-[8%] opacity-[0.06] sm:opacity-[0.09]", style: { width: "clamp(50px, 7vw, 90px)" }, viewBox: "0 0 60 60", fill: "none" }, /* @__PURE__ */ import_react6.default.createElement("rect", { x: "22", y: "8", width: "16", height: "28", rx: "8", stroke: "#fbbf24", strokeWidth: "1.3" }), /* @__PURE__ */ import_react6.default.createElement("path", { d: "M14 30 Q14 48 30 48 Q46 48 46 30", stroke: "#fbbf24", strokeWidth: "1.2", opacity: "0.5" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "30", y1: "48", x2: "30", y2: "56", stroke: "#fbbf24", strokeWidth: "1.2", opacity: "0.4" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "10", y1: "10", x2: "50", y2: "50", stroke: "#fbbf24", strokeWidth: "1.3", strokeLinecap: "round", opacity: "0.4" }))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "relative mx-auto flex max-w-4xl flex-col gap-6 px-6 py-20 sm:flex-row sm:items-center sm:gap-14 sm:py-28" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex-1" }, /* @__PURE__ */ import_react6.default.createElement("h2", { className: "font-display text-[clamp(1.6rem,5vw,2.4rem)] font-extrabold leading-[1.05] tracking-[-0.04em] text-white" }, t3("home.marketing.host.title").split("\n").map((line, index) => /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, { key: line }, index >
50552 0 ? /* @__PURE__ */ import_react6.default.createElement("br", null) : null, line))), /* @__PURE__ */ import_react6.default.createElement("p", { className: "mt-3 text-[0.9rem] leading-relaxed text-violet-300/50" }, t3("home.marketing.host.body"))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex shrink-0 items-center justify-center sm:w-64" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "w-full max-w-[16rem] overflow-hidden rounded-2xl border border-amber-400/10 bg-amber-400/[0.03]" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex items-center gap-2 border-b border-amber-400/8 px-4 py-2.5" }, /* @__PURE__ */ import_react6.default.createElement(LockClosedIcon_default, { className: "h-3.5 w-3.5 text-amber-400/40" }), /* @__PURE__ */ import_react6.default.createElement("span", { className: "text-[10px] font-bold uppercase tracking-wider text-amber-300/40" }, t3("home.marketing.host.locked"))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "px-4 py-3" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "mb-2 text-[9px] font-bold uppercase tracking-wider text-amber-300/25" }
50552, t3("home.marketing.host.waiting_to_join")), /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex items-center gap-2.5" }, /* @__PURE__ */ import_react6.default.createElement("span", { className: "grid h-8 w-8 shrink-0 place-items-center rounded-full bg-amber-400/10 text-[10px] font-bold text-amber-300/50" }, "SK"), /* @__PURE__ */ import_react6.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "text-[11px] font-semibold text-amber-100/60" }, "Sara K."), /* @__PURE__ */ import_react6.default.createElement("div", { className: "text-[9px] text-amber-300/30" }, t3("home.marketing.host.wants_to_join"))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ import_react6.default.createElement("span", { className: "grid h-6 w-6 place-items-center rounded-full bg-emerald-500/15 text-emerald-400/70" }, /* @__PURE__ */ import_react6.default.createElement("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react6.default.createElement("polyline", { points: "20 6 9 17 4 12" }))), /* @__PURE__ */ import_react6.default.createElement("span", { className: "grid h-6 w-6 place-items-center rounded-full bg-red-500/15 text-red-400/60" }, /* @__PURE__ */ import_react6.default.createElement("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round" }, /* @__PURE__ */ import_react6.default.createElement("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "6", y1: "6", x2: "18", y2: "18" }))))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-2.5 flex items-center gap-2.5 opacity-50" }, /* @__PURE__ */ import_react6.default.createElement("span", { className: "grid h-8 w-8 shrink-0 place-items-center rounded-full bg-amber-400/10 text-[10px] font-bold text-amber-300/50" }, "JM"), /* @__PURE__ */ import_react6.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "text-[11px] font-semibold text-amber-100/60" }, "James M."), /* @__PURE__ */ import_react6.default.createElement("div", { className: "text-[9px] text-amber-300/30" }, t3("home.marketing.host.wants_to_join"))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "flex items-center gap-1.5" }, /* @__PURE__ */ import_react6.default.createElement("span", { className: "grid h-6 w-6 place-items-center rounded-full bg-emerald-500/15 text-emerald-400/70" }, /* @__PURE__ */ import_react6.default.createElement("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react6.default.createElement("polyline", { points: "20 6 9 17 4 12" }))), /* @__PURE__ */ import_react6.default.createElement("span", { className: "grid h-6 w-6 place-items-center rounded-full bg-red-500/15 text-red-400/60" }, /* @__PURE__ */ import_react6.default.createElement("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round" }, /* @__PURE__ */ import_react6.default.createElement("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "6", y1: "6", x2: "18", y2: "18" })))))))))), /* @__PURE__ */ import_react6.default.createElement("section", { className: "relative z-[1] overflow-hidden bg-[#130a22]" }, /* @__PURE__ */ import_react6.default.createElement("div", { className: "pointer-events-none absolute inset-0", "aria-hidden": true }, /* @__PURE__ */ import_react6.default.createElement("svg", { className: "absolute left-[3%] top-[8%] opacity-[0.06] sm:opacity-[0.09]", style: { width: "clamp(140px, 18vw, 260px)" }, viewBox: "0 0 180 130", fill: "none" }
50552, /* @__PURE__ */ import_react6.default.createElement("rect", { x: "2", y: "2", width: "82", height: "58", rx: "10", stroke: "#a78bfa", strokeWidth: "1.5" }), /* @__PURE__ */ import_react6.default.createElement("rect", { x: "96", y: "2", width: "82", height: "58", rx: "10", stroke: "#a78bfa", strokeWidth: "1.5" }), /* @__PURE__ */ import_react6.default.createElement("rect", { x: "2", y: "70", width: "82", height: "58", rx: "10", stroke: "#a78bfa", strokeWidth: "1.5" }), /* @__PURE__ */ import_react6.default.createElement("rect", { x: "96", y: "70", width: "82", height: "58", rx: "10", stroke: "#a78bfa", strokeWidth: "1.5" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "43", cy: "27", r: "8", stroke: "#a78bfa", strokeWidth: "1.2" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "137", cy: "27", r: "8", stroke: "#a78bfa", strokeWidth: "1.2" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "43", cy: "95", r: "8", stroke: "#a78bfa", strokeWidth: "1.2" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "137", cy: "95", r: "8", stroke: "#a78bfa", strokeWidth: "1.2" })), /* @__PURE__ */ import_react6.default.createElement("svg", { className: "absolute right-[3%] top-[10%] opacity-[0.06] sm:opacity-[0.09]", style: { width: "clamp(120px, 15vw, 220px)" }, viewBox: "0 0 140 100", fill: "none" }, /* @__PURE__ */ import_react6.default.createElement("rect", { x: "30", y: "2", width: "108", height: "32", rx: "12", stroke: "#c084fc", strokeWidth: "1.5" }), /* @__PURE__ */ import_react6.default.createElement("rect", { x: "2", y: "42", width: "90", height: "32", rx: "12", stroke: "#c084fc", strokeWidth: "1.5" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "40", cy: "18", r: "4", fill: "#c084fc", opacity: "0.3" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "54", y1: "14", x2: "120", y2: "14", stroke: "#c084fc", strokeWidth: "1.2", opacity: "0.25" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "54", y1: "22", x2: "100", y2: "22", stroke: "#c084fc", strokeWidth: "1.2", opacity: "0.15" }), /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "14", cy: "58", r: "4", fill: "#c084fc", opacity: "0.3" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "26", y1: "54", x2: "76", y2: "54", stroke: "#c084fc", strokeWidth: "1.2", opacity: "0.25" }), /* @__PURE__ */ import_react6.default.createElement("line", { x1: "26", y1: "62", x2: "60", y2: "62", stroke: "#c084fc", strokeWidth: "1.2", opacity: "0.15" })), /* @__PURE__ */ import_react6.default.createElement("svg", { className: "absolute bottom-[12%] left-[5%] opacity-[0.06] sm:opacity-[0.09]", style: { width: "clamp(130px, 16vw, 240px)" }, viewBox: "0 0 160 50", fill: "none" }, /* @__PURE__ */ import_react6.default.createElement("polyline", { points: "0,25 12,18 24,30 36,10 48,35 60,8 72,40 84,12 96,38 108,15 120,32 132,20 144,28 160,25", stroke: "#818cf8", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })), /* @__PURE__ */ import_react6.default.createElement("svg", { className: "absolute bottom-[10%] right-[5%] opacity-[0.06] sm:opacity-[0.09]", style: { width: "clamp(70px, 9vw, 120px)" }, viewBox: "0 0 80 80", fill: "none" }, /* @__PURE__ */ import_react6.default.createElement("circle", { cx: "40", cy: "40", r: "36", stroke: "#f0abfc", strokeWidth: "1.5" }), /* @__PURE__ */ import_react6.default.createElement("polygon", { points: "32,22 32,58 60,40", stroke: "#f0abfc", strokeWidth: "1.5", strokeLinejoin: "round", fill: "none" }))), /* @__PURE__ */ import_react6.default.createElement("div", { className: "relative mx-auto max-w-4xl px-6 py-20 sm:py-28" }, /* @__PURE__ */ import_react6.default.createElement("h2", { className: "font-display text-center text-[clamp(1.6rem,5vw,2.4rem)] font-extrabold leading-[1.05] tracking-[-0.04em] text-white" }, t3("home.marketing.anything.title")), /* @__PURE__ */ import_react6.default.createElement("p", { className: "mx-auto mt-3 max-w-md text-center text-[0.9rem] leading-relaxed text-violet-300/50" }
50552, t3("home.marketing.anything.body")), /* @__PURE__ */ import_react6.default.createElement("div", { className: "mt-10 flex flex-wrap items-center justify-center gap-3" }, marketingUseCases.map((use) => /* @__PURE__ */ import_react6.default.createElement("span", { key: use, className: "rounded-full border border-violet-400/10 bg-violet-400/5 px-4 py-2 text-sm font-semibold text-violet-300/60" }, use)))))), /* @__PURE__ */ import_react6.default.createElement("footer", { className: "relative z-[1] shrink-0 bg-[#0a0515] py-6 text-center text-xs text-violet-400/30" }, t3("footer.copyright"), " \xB7", " ", /* @__PURE__ */ import_react6.default.createElement("a", { href: termsHref, className: "underline decoration-violet-400/20 transition hover:text-violet-300/50", target: "_blank", rel: "noopener noreferrer" }, t3("footer.terms"))), /* @__PURE__ */ import_react6.default.createElement(
50553    ProfileSheet,
50554    {
50555      open: profileSheetOpen,
50556      initialProfile: profile,
50557      avatarUrl: session2?.user?.avatar_url || "",
50558      hasExistingSession: Boolean(session2?.api_token),
50559      saving: profileSheetSaving,
50560      errorMessage: profileSheetError,
50561      onSave: handleSaveProfile,
50562      onAvatarUpload: handleProfileAvatarUpload,
50563      onAvatarCropUpdate: handleProfileAvatarCropUpdate,
50564      onAvatarRemove: handleProfileAvatarRemove,
50565      onClose: closeProfileSheet,
50566      onClearError: () => setProfileSheetError("")
50567    }
50568  ));
50569}
50570
50571// app/javascript/yano/boot.jsx
50572var root;
50573var swRegistered = false;
50574function registerServiceWorker() {
50575  if (swRegistered) return;
50576  swRegistered = true;
50577  if (!("serviceWorker" in navigator)) return;
50578  if (!window.isSecureContext) return;
50579  navigator.serviceWorker.register("/service-worker.js").catch(() => {
50580  });
50581}
50582function mount() {
50583  const element = document.getElementById("yano-app");
50584  if (!element) return;
50585  if (!root) {
50586    root = (0, import_client.createRoot)(element);
50587  }
50588  root.render(/* @__PURE__ */ import_react7.default.createElement(I18nProvider, null, /* @__PURE__ */ import_react7.default.createElement(App, null)));
50589}
50590document.addEventListener("turbo:load", () => {
50591  registerServiceWorker();
50592  mount();
50593});
50594/*! Bundled license information:
50595
50596react/cjs/react.development.js:
50597  (**
50598   * @license React
50599   * react.development.js
50600   *
50601   * Copyright (c) Meta Platforms, Inc. and affiliates.
50602   *
50603   * This source code is licensed under the MIT license found in the
50604   * LICENSE file in the root directory of this source tree.
50605   *)
50606
50607scheduler/cjs/scheduler.development.js:
50608  (**
50609   * @license React
50610   * scheduler.development.js
50611   *
50612   * Copyright (c) Meta Platforms, Inc. and affiliates.
50613   *
50614   * This source code is licensed under the MIT license found in the
50615   * LICENSE file in the root directory of this source tree.
50616   *)
50617
50618react-dom/cjs/react-dom.development.js:
50619  (**
50620   * @license React
50621   * react-dom.development.js
50622   *
50623   * Copyright (c) Meta Platforms, Inc. and affiliates.
50624   *
50625   * This source code is licensed under the MIT license found in the
50626   * LICENSE file in the root directory of this source tree.
50627   *)
50628
50629react-dom/cjs/react-dom-client.development.js:
50630  (**
50631   * @license React
50632   * react-dom-client.development.js
50633   *
50634   * Copyright (c) Meta Platforms, Inc. and affiliates.
50635   *
50636   * This source code is licensed under the MIT license found in the
50637   * LICENSE file in the root directory of this source tree.
50638   *)
50639
50640@daily-co/daily-js/dist/daily-esm.js:
50641  (*!
50642   * Bowser - a browser detector
50643   * https://github.com/lancedikson/bowser
50644   * MIT License | (c) Dustin Diaz 2012-2015
50645   * MIT License | (c) Denis Demchenko 2015-2019
50646   *)
50647
50648@hotwired/turbo/dist/turbo.es2017-esm.js:
50649  (*!
50650  Turbo 8.0.23
50651  Copyright © 2026 37signals LLC
50652   *)
50653*/
50654//# sourceMappingURL=/assets/application-c5cbcc37.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.