@enderrealmmc/cf-static-guard 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2333 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // ../../node_modules/unenv/dist/runtime/_internal/utils.mjs
5
+ // @__NO_SIDE_EFFECTS__
6
+ function createNotImplementedError(name) {
7
+ return new Error(`[unenv] ${name} is not implemented yet!`);
8
+ }
9
+ __name(createNotImplementedError, "createNotImplementedError");
10
+ // @__NO_SIDE_EFFECTS__
11
+ function notImplemented(name) {
12
+ const fn = /* @__PURE__ */ __name(() => {
13
+ throw /* @__PURE__ */ createNotImplementedError(name);
14
+ }, "fn");
15
+ return Object.assign(fn, { __unenv__: true });
16
+ }
17
+ __name(notImplemented, "notImplemented");
18
+ // @__NO_SIDE_EFFECTS__
19
+ function notImplementedClass(name) {
20
+ return class {
21
+ __unenv__ = true;
22
+ constructor() {
23
+ throw new Error(`[unenv] ${name} is not implemented yet!`);
24
+ }
25
+ };
26
+ }
27
+ __name(notImplementedClass, "notImplementedClass");
28
+
29
+ // ../../node_modules/unenv/dist/runtime/node/internal/perf_hooks/performance.mjs
30
+ var _timeOrigin = globalThis.performance?.timeOrigin ?? Date.now();
31
+ var _performanceNow = globalThis.performance?.now ? globalThis.performance.now.bind(globalThis.performance) : () => Date.now() - _timeOrigin;
32
+ var nodeTiming = {
33
+ name: "node",
34
+ entryType: "node",
35
+ startTime: 0,
36
+ duration: 0,
37
+ nodeStart: 0,
38
+ v8Start: 0,
39
+ bootstrapComplete: 0,
40
+ environment: 0,
41
+ loopStart: 0,
42
+ loopExit: 0,
43
+ idleTime: 0,
44
+ uvMetricsInfo: {
45
+ loopCount: 0,
46
+ events: 0,
47
+ eventsWaiting: 0
48
+ },
49
+ detail: void 0,
50
+ toJSON() {
51
+ return this;
52
+ }
53
+ };
54
+ var PerformanceEntry = class {
55
+ static {
56
+ __name(this, "PerformanceEntry");
57
+ }
58
+ __unenv__ = true;
59
+ detail;
60
+ entryType = "event";
61
+ name;
62
+ startTime;
63
+ constructor(name, options) {
64
+ this.name = name;
65
+ this.startTime = options?.startTime || _performanceNow();
66
+ this.detail = options?.detail;
67
+ }
68
+ get duration() {
69
+ return _performanceNow() - this.startTime;
70
+ }
71
+ toJSON() {
72
+ return {
73
+ name: this.name,
74
+ entryType: this.entryType,
75
+ startTime: this.startTime,
76
+ duration: this.duration,
77
+ detail: this.detail
78
+ };
79
+ }
80
+ };
81
+ var PerformanceMark = class PerformanceMark2 extends PerformanceEntry {
82
+ static {
83
+ __name(this, "PerformanceMark");
84
+ }
85
+ entryType = "mark";
86
+ constructor() {
87
+ super(...arguments);
88
+ }
89
+ get duration() {
90
+ return 0;
91
+ }
92
+ };
93
+ var PerformanceMeasure = class extends PerformanceEntry {
94
+ static {
95
+ __name(this, "PerformanceMeasure");
96
+ }
97
+ entryType = "measure";
98
+ };
99
+ var PerformanceResourceTiming = class extends PerformanceEntry {
100
+ static {
101
+ __name(this, "PerformanceResourceTiming");
102
+ }
103
+ entryType = "resource";
104
+ serverTiming = [];
105
+ connectEnd = 0;
106
+ connectStart = 0;
107
+ decodedBodySize = 0;
108
+ domainLookupEnd = 0;
109
+ domainLookupStart = 0;
110
+ encodedBodySize = 0;
111
+ fetchStart = 0;
112
+ initiatorType = "";
113
+ name = "";
114
+ nextHopProtocol = "";
115
+ redirectEnd = 0;
116
+ redirectStart = 0;
117
+ requestStart = 0;
118
+ responseEnd = 0;
119
+ responseStart = 0;
120
+ secureConnectionStart = 0;
121
+ startTime = 0;
122
+ transferSize = 0;
123
+ workerStart = 0;
124
+ responseStatus = 0;
125
+ };
126
+ var PerformanceObserverEntryList = class {
127
+ static {
128
+ __name(this, "PerformanceObserverEntryList");
129
+ }
130
+ __unenv__ = true;
131
+ getEntries() {
132
+ return [];
133
+ }
134
+ getEntriesByName(_name, _type) {
135
+ return [];
136
+ }
137
+ getEntriesByType(type) {
138
+ return [];
139
+ }
140
+ };
141
+ var Performance = class {
142
+ static {
143
+ __name(this, "Performance");
144
+ }
145
+ __unenv__ = true;
146
+ timeOrigin = _timeOrigin;
147
+ eventCounts = /* @__PURE__ */ new Map();
148
+ _entries = [];
149
+ _resourceTimingBufferSize = 0;
150
+ navigation = void 0;
151
+ timing = void 0;
152
+ timerify(_fn, _options) {
153
+ throw createNotImplementedError("Performance.timerify");
154
+ }
155
+ get nodeTiming() {
156
+ return nodeTiming;
157
+ }
158
+ eventLoopUtilization() {
159
+ return {};
160
+ }
161
+ markResourceTiming() {
162
+ return new PerformanceResourceTiming("");
163
+ }
164
+ onresourcetimingbufferfull = null;
165
+ now() {
166
+ if (this.timeOrigin === _timeOrigin) {
167
+ return _performanceNow();
168
+ }
169
+ return Date.now() - this.timeOrigin;
170
+ }
171
+ clearMarks(markName) {
172
+ this._entries = markName ? this._entries.filter((e) => e.name !== markName) : this._entries.filter((e) => e.entryType !== "mark");
173
+ }
174
+ clearMeasures(measureName) {
175
+ this._entries = measureName ? this._entries.filter((e) => e.name !== measureName) : this._entries.filter((e) => e.entryType !== "measure");
176
+ }
177
+ clearResourceTimings() {
178
+ this._entries = this._entries.filter((e) => e.entryType !== "resource" || e.entryType !== "navigation");
179
+ }
180
+ getEntries() {
181
+ return this._entries;
182
+ }
183
+ getEntriesByName(name, type) {
184
+ return this._entries.filter((e) => e.name === name && (!type || e.entryType === type));
185
+ }
186
+ getEntriesByType(type) {
187
+ return this._entries.filter((e) => e.entryType === type);
188
+ }
189
+ mark(name, options) {
190
+ const entry = new PerformanceMark(name, options);
191
+ this._entries.push(entry);
192
+ return entry;
193
+ }
194
+ measure(measureName, startOrMeasureOptions, endMark) {
195
+ let start;
196
+ let end;
197
+ if (typeof startOrMeasureOptions === "string") {
198
+ start = this.getEntriesByName(startOrMeasureOptions, "mark")[0]?.startTime;
199
+ end = this.getEntriesByName(endMark, "mark")[0]?.startTime;
200
+ } else {
201
+ start = Number.parseFloat(startOrMeasureOptions?.start) || this.now();
202
+ end = Number.parseFloat(startOrMeasureOptions?.end) || this.now();
203
+ }
204
+ const entry = new PerformanceMeasure(measureName, {
205
+ startTime: start,
206
+ detail: {
207
+ start,
208
+ end
209
+ }
210
+ });
211
+ this._entries.push(entry);
212
+ return entry;
213
+ }
214
+ setResourceTimingBufferSize(maxSize) {
215
+ this._resourceTimingBufferSize = maxSize;
216
+ }
217
+ addEventListener(type, listener, options) {
218
+ throw createNotImplementedError("Performance.addEventListener");
219
+ }
220
+ removeEventListener(type, listener, options) {
221
+ throw createNotImplementedError("Performance.removeEventListener");
222
+ }
223
+ dispatchEvent(event) {
224
+ throw createNotImplementedError("Performance.dispatchEvent");
225
+ }
226
+ toJSON() {
227
+ return this;
228
+ }
229
+ };
230
+ var PerformanceObserver = class {
231
+ static {
232
+ __name(this, "PerformanceObserver");
233
+ }
234
+ __unenv__ = true;
235
+ static supportedEntryTypes = [];
236
+ _callback = null;
237
+ constructor(callback) {
238
+ this._callback = callback;
239
+ }
240
+ takeRecords() {
241
+ return [];
242
+ }
243
+ disconnect() {
244
+ throw createNotImplementedError("PerformanceObserver.disconnect");
245
+ }
246
+ observe(options) {
247
+ throw createNotImplementedError("PerformanceObserver.observe");
248
+ }
249
+ bind(fn) {
250
+ return fn;
251
+ }
252
+ runInAsyncScope(fn, thisArg, ...args) {
253
+ return fn.call(thisArg, ...args);
254
+ }
255
+ asyncId() {
256
+ return 0;
257
+ }
258
+ triggerAsyncId() {
259
+ return 0;
260
+ }
261
+ emitDestroy() {
262
+ return this;
263
+ }
264
+ };
265
+ var performance = globalThis.performance && "addEventListener" in globalThis.performance ? globalThis.performance : new Performance();
266
+
267
+ // ../../node_modules/@cloudflare/unenv-preset/dist/runtime/polyfill/performance.mjs
268
+ if (!("__unenv__" in performance)) {
269
+ const proto = Performance.prototype;
270
+ for (const key of Object.getOwnPropertyNames(proto)) {
271
+ if (key !== "constructor" && !(key in performance)) {
272
+ const desc = Object.getOwnPropertyDescriptor(proto, key);
273
+ if (desc) {
274
+ Object.defineProperty(performance, key, desc);
275
+ }
276
+ }
277
+ }
278
+ }
279
+ globalThis.performance = performance;
280
+ globalThis.Performance = Performance;
281
+ globalThis.PerformanceEntry = PerformanceEntry;
282
+ globalThis.PerformanceMark = PerformanceMark;
283
+ globalThis.PerformanceMeasure = PerformanceMeasure;
284
+ globalThis.PerformanceObserver = PerformanceObserver;
285
+ globalThis.PerformanceObserverEntryList = PerformanceObserverEntryList;
286
+ globalThis.PerformanceResourceTiming = PerformanceResourceTiming;
287
+
288
+ // ../../node_modules/unenv/dist/runtime/node/console.mjs
289
+ import { Writable } from "node:stream";
290
+
291
+ // ../../node_modules/unenv/dist/runtime/mock/noop.mjs
292
+ var noop_default = Object.assign(() => {
293
+ }, { __unenv__: true });
294
+
295
+ // ../../node_modules/unenv/dist/runtime/node/console.mjs
296
+ var _console = globalThis.console;
297
+ var _ignoreErrors = true;
298
+ var _stderr = new Writable();
299
+ var _stdout = new Writable();
300
+ var log = _console?.log ?? noop_default;
301
+ var info = _console?.info ?? log;
302
+ var trace = _console?.trace ?? info;
303
+ var debug = _console?.debug ?? log;
304
+ var table = _console?.table ?? log;
305
+ var error = _console?.error ?? log;
306
+ var warn = _console?.warn ?? error;
307
+ var createTask = _console?.createTask ?? /* @__PURE__ */ notImplemented("console.createTask");
308
+ var clear = _console?.clear ?? noop_default;
309
+ var count = _console?.count ?? noop_default;
310
+ var countReset = _console?.countReset ?? noop_default;
311
+ var dir = _console?.dir ?? noop_default;
312
+ var dirxml = _console?.dirxml ?? noop_default;
313
+ var group = _console?.group ?? noop_default;
314
+ var groupEnd = _console?.groupEnd ?? noop_default;
315
+ var groupCollapsed = _console?.groupCollapsed ?? noop_default;
316
+ var profile = _console?.profile ?? noop_default;
317
+ var profileEnd = _console?.profileEnd ?? noop_default;
318
+ var time = _console?.time ?? noop_default;
319
+ var timeEnd = _console?.timeEnd ?? noop_default;
320
+ var timeLog = _console?.timeLog ?? noop_default;
321
+ var timeStamp = _console?.timeStamp ?? noop_default;
322
+ var Console = _console?.Console ?? /* @__PURE__ */ notImplementedClass("console.Console");
323
+ var _times = /* @__PURE__ */ new Map();
324
+ var _stdoutErrorHandler = noop_default;
325
+ var _stderrErrorHandler = noop_default;
326
+
327
+ // ../../node_modules/@cloudflare/unenv-preset/dist/runtime/node/console.mjs
328
+ var workerdConsole = globalThis["console"];
329
+ var {
330
+ assert,
331
+ clear: clear2,
332
+ // @ts-expect-error undocumented public API
333
+ context,
334
+ count: count2,
335
+ countReset: countReset2,
336
+ // @ts-expect-error undocumented public API
337
+ createTask: createTask2,
338
+ debug: debug2,
339
+ dir: dir2,
340
+ dirxml: dirxml2,
341
+ error: error2,
342
+ group: group2,
343
+ groupCollapsed: groupCollapsed2,
344
+ groupEnd: groupEnd2,
345
+ info: info2,
346
+ log: log2,
347
+ profile: profile2,
348
+ profileEnd: profileEnd2,
349
+ table: table2,
350
+ time: time2,
351
+ timeEnd: timeEnd2,
352
+ timeLog: timeLog2,
353
+ timeStamp: timeStamp2,
354
+ trace: trace2,
355
+ warn: warn2
356
+ } = workerdConsole;
357
+ Object.assign(workerdConsole, {
358
+ Console,
359
+ _ignoreErrors,
360
+ _stderr,
361
+ _stderrErrorHandler,
362
+ _stdout,
363
+ _stdoutErrorHandler,
364
+ _times
365
+ });
366
+ var console_default = workerdConsole;
367
+
368
+ // ../../node_modules/wrangler/_virtual_unenv_global_polyfill-@cloudflare-unenv-preset-node-console
369
+ globalThis.console = console_default;
370
+
371
+ // ../../node_modules/unenv/dist/runtime/node/internal/process/hrtime.mjs
372
+ var hrtime = /* @__PURE__ */ Object.assign(/* @__PURE__ */ __name(function hrtime2(startTime) {
373
+ const now = Date.now();
374
+ const seconds = Math.trunc(now / 1e3);
375
+ const nanos = now % 1e3 * 1e6;
376
+ if (startTime) {
377
+ let diffSeconds = seconds - startTime[0];
378
+ let diffNanos = nanos - startTime[0];
379
+ if (diffNanos < 0) {
380
+ diffSeconds = diffSeconds - 1;
381
+ diffNanos = 1e9 + diffNanos;
382
+ }
383
+ return [diffSeconds, diffNanos];
384
+ }
385
+ return [seconds, nanos];
386
+ }, "hrtime"), { bigint: /* @__PURE__ */ __name(function bigint() {
387
+ return BigInt(Date.now() * 1e6);
388
+ }, "bigint") });
389
+
390
+ // ../../node_modules/unenv/dist/runtime/node/internal/process/process.mjs
391
+ import { EventEmitter } from "node:events";
392
+
393
+ // ../../node_modules/unenv/dist/runtime/node/internal/tty/read-stream.mjs
394
+ var ReadStream = class {
395
+ static {
396
+ __name(this, "ReadStream");
397
+ }
398
+ fd;
399
+ isRaw = false;
400
+ isTTY = false;
401
+ constructor(fd) {
402
+ this.fd = fd;
403
+ }
404
+ setRawMode(mode) {
405
+ this.isRaw = mode;
406
+ return this;
407
+ }
408
+ };
409
+
410
+ // ../../node_modules/unenv/dist/runtime/node/internal/tty/write-stream.mjs
411
+ var WriteStream = class {
412
+ static {
413
+ __name(this, "WriteStream");
414
+ }
415
+ fd;
416
+ columns = 80;
417
+ rows = 24;
418
+ isTTY = false;
419
+ constructor(fd) {
420
+ this.fd = fd;
421
+ }
422
+ clearLine(dir3, callback) {
423
+ callback && callback();
424
+ return false;
425
+ }
426
+ clearScreenDown(callback) {
427
+ callback && callback();
428
+ return false;
429
+ }
430
+ cursorTo(x, y, callback) {
431
+ callback && typeof callback === "function" && callback();
432
+ return false;
433
+ }
434
+ moveCursor(dx, dy, callback) {
435
+ callback && callback();
436
+ return false;
437
+ }
438
+ getColorDepth(env2) {
439
+ return 1;
440
+ }
441
+ hasColors(count3, env2) {
442
+ return false;
443
+ }
444
+ getWindowSize() {
445
+ return [this.columns, this.rows];
446
+ }
447
+ write(str2, encoding, cb) {
448
+ if (str2 instanceof Uint8Array) {
449
+ str2 = new TextDecoder().decode(str2);
450
+ }
451
+ try {
452
+ console.log(str2);
453
+ } catch {
454
+ }
455
+ cb && typeof cb === "function" && cb();
456
+ return false;
457
+ }
458
+ };
459
+
460
+ // ../../node_modules/unenv/dist/runtime/node/internal/process/node-version.mjs
461
+ var NODE_VERSION = "22.14.0";
462
+
463
+ // ../../node_modules/unenv/dist/runtime/node/internal/process/process.mjs
464
+ var Process = class _Process extends EventEmitter {
465
+ static {
466
+ __name(this, "Process");
467
+ }
468
+ env;
469
+ hrtime;
470
+ nextTick;
471
+ constructor(impl) {
472
+ super();
473
+ this.env = impl.env;
474
+ this.hrtime = impl.hrtime;
475
+ this.nextTick = impl.nextTick;
476
+ for (const prop of [...Object.getOwnPropertyNames(_Process.prototype), ...Object.getOwnPropertyNames(EventEmitter.prototype)]) {
477
+ const value = this[prop];
478
+ if (typeof value === "function") {
479
+ this[prop] = value.bind(this);
480
+ }
481
+ }
482
+ }
483
+ // --- event emitter ---
484
+ emitWarning(warning, type, code) {
485
+ console.warn(`${code ? `[${code}] ` : ""}${type ? `${type}: ` : ""}${warning}`);
486
+ }
487
+ emit(...args) {
488
+ return super.emit(...args);
489
+ }
490
+ listeners(eventName) {
491
+ return super.listeners(eventName);
492
+ }
493
+ // --- stdio (lazy initializers) ---
494
+ #stdin;
495
+ #stdout;
496
+ #stderr;
497
+ get stdin() {
498
+ return this.#stdin ??= new ReadStream(0);
499
+ }
500
+ get stdout() {
501
+ return this.#stdout ??= new WriteStream(1);
502
+ }
503
+ get stderr() {
504
+ return this.#stderr ??= new WriteStream(2);
505
+ }
506
+ // --- cwd ---
507
+ #cwd = "/";
508
+ chdir(cwd2) {
509
+ this.#cwd = cwd2;
510
+ }
511
+ cwd() {
512
+ return this.#cwd;
513
+ }
514
+ // --- dummy props and getters ---
515
+ arch = "";
516
+ platform = "";
517
+ argv = [];
518
+ argv0 = "";
519
+ execArgv = [];
520
+ execPath = "";
521
+ title = "";
522
+ pid = 200;
523
+ ppid = 100;
524
+ get version() {
525
+ return `v${NODE_VERSION}`;
526
+ }
527
+ get versions() {
528
+ return { node: NODE_VERSION };
529
+ }
530
+ get allowedNodeEnvironmentFlags() {
531
+ return /* @__PURE__ */ new Set();
532
+ }
533
+ get sourceMapsEnabled() {
534
+ return false;
535
+ }
536
+ get debugPort() {
537
+ return 0;
538
+ }
539
+ get throwDeprecation() {
540
+ return false;
541
+ }
542
+ get traceDeprecation() {
543
+ return false;
544
+ }
545
+ get features() {
546
+ return {};
547
+ }
548
+ get release() {
549
+ return {};
550
+ }
551
+ get connected() {
552
+ return false;
553
+ }
554
+ get config() {
555
+ return {};
556
+ }
557
+ get moduleLoadList() {
558
+ return [];
559
+ }
560
+ constrainedMemory() {
561
+ return 0;
562
+ }
563
+ availableMemory() {
564
+ return 0;
565
+ }
566
+ uptime() {
567
+ return 0;
568
+ }
569
+ resourceUsage() {
570
+ return {};
571
+ }
572
+ // --- noop methods ---
573
+ ref() {
574
+ }
575
+ unref() {
576
+ }
577
+ // --- unimplemented methods ---
578
+ umask() {
579
+ throw createNotImplementedError("process.umask");
580
+ }
581
+ getBuiltinModule() {
582
+ return void 0;
583
+ }
584
+ getActiveResourcesInfo() {
585
+ throw createNotImplementedError("process.getActiveResourcesInfo");
586
+ }
587
+ exit() {
588
+ throw createNotImplementedError("process.exit");
589
+ }
590
+ reallyExit() {
591
+ throw createNotImplementedError("process.reallyExit");
592
+ }
593
+ kill() {
594
+ throw createNotImplementedError("process.kill");
595
+ }
596
+ abort() {
597
+ throw createNotImplementedError("process.abort");
598
+ }
599
+ dlopen() {
600
+ throw createNotImplementedError("process.dlopen");
601
+ }
602
+ setSourceMapsEnabled() {
603
+ throw createNotImplementedError("process.setSourceMapsEnabled");
604
+ }
605
+ loadEnvFile() {
606
+ throw createNotImplementedError("process.loadEnvFile");
607
+ }
608
+ disconnect() {
609
+ throw createNotImplementedError("process.disconnect");
610
+ }
611
+ cpuUsage() {
612
+ throw createNotImplementedError("process.cpuUsage");
613
+ }
614
+ setUncaughtExceptionCaptureCallback() {
615
+ throw createNotImplementedError("process.setUncaughtExceptionCaptureCallback");
616
+ }
617
+ hasUncaughtExceptionCaptureCallback() {
618
+ throw createNotImplementedError("process.hasUncaughtExceptionCaptureCallback");
619
+ }
620
+ initgroups() {
621
+ throw createNotImplementedError("process.initgroups");
622
+ }
623
+ openStdin() {
624
+ throw createNotImplementedError("process.openStdin");
625
+ }
626
+ assert() {
627
+ throw createNotImplementedError("process.assert");
628
+ }
629
+ binding() {
630
+ throw createNotImplementedError("process.binding");
631
+ }
632
+ // --- attached interfaces ---
633
+ permission = { has: /* @__PURE__ */ notImplemented("process.permission.has") };
634
+ report = {
635
+ directory: "",
636
+ filename: "",
637
+ signal: "SIGUSR2",
638
+ compact: false,
639
+ reportOnFatalError: false,
640
+ reportOnSignal: false,
641
+ reportOnUncaughtException: false,
642
+ getReport: /* @__PURE__ */ notImplemented("process.report.getReport"),
643
+ writeReport: /* @__PURE__ */ notImplemented("process.report.writeReport")
644
+ };
645
+ finalization = {
646
+ register: /* @__PURE__ */ notImplemented("process.finalization.register"),
647
+ unregister: /* @__PURE__ */ notImplemented("process.finalization.unregister"),
648
+ registerBeforeExit: /* @__PURE__ */ notImplemented("process.finalization.registerBeforeExit")
649
+ };
650
+ memoryUsage = Object.assign(() => ({
651
+ arrayBuffers: 0,
652
+ rss: 0,
653
+ external: 0,
654
+ heapTotal: 0,
655
+ heapUsed: 0
656
+ }), { rss: /* @__PURE__ */ __name(() => 0, "rss") });
657
+ // --- undefined props ---
658
+ mainModule = void 0;
659
+ domain = void 0;
660
+ // optional
661
+ send = void 0;
662
+ exitCode = void 0;
663
+ channel = void 0;
664
+ getegid = void 0;
665
+ geteuid = void 0;
666
+ getgid = void 0;
667
+ getgroups = void 0;
668
+ getuid = void 0;
669
+ setegid = void 0;
670
+ seteuid = void 0;
671
+ setgid = void 0;
672
+ setgroups = void 0;
673
+ setuid = void 0;
674
+ // internals
675
+ _events = void 0;
676
+ _eventsCount = void 0;
677
+ _exiting = void 0;
678
+ _maxListeners = void 0;
679
+ _debugEnd = void 0;
680
+ _debugProcess = void 0;
681
+ _fatalException = void 0;
682
+ _getActiveHandles = void 0;
683
+ _getActiveRequests = void 0;
684
+ _kill = void 0;
685
+ _preload_modules = void 0;
686
+ _rawDebug = void 0;
687
+ _startProfilerIdleNotifier = void 0;
688
+ _stopProfilerIdleNotifier = void 0;
689
+ _tickCallback = void 0;
690
+ _disconnect = void 0;
691
+ _handleQueue = void 0;
692
+ _pendingMessage = void 0;
693
+ _channel = void 0;
694
+ _send = void 0;
695
+ _linkedBinding = void 0;
696
+ };
697
+
698
+ // ../../node_modules/@cloudflare/unenv-preset/dist/runtime/node/process.mjs
699
+ var globalProcess = globalThis["process"];
700
+ var getBuiltinModule = globalProcess.getBuiltinModule;
701
+ var workerdProcess = getBuiltinModule("node:process");
702
+ var unenvProcess = new Process({
703
+ env: globalProcess.env,
704
+ hrtime,
705
+ // `nextTick` is available from workerd process v1
706
+ nextTick: workerdProcess.nextTick
707
+ });
708
+ var { exit, features, platform } = workerdProcess;
709
+ var {
710
+ _channel,
711
+ _debugEnd,
712
+ _debugProcess,
713
+ _disconnect,
714
+ _events,
715
+ _eventsCount,
716
+ _exiting,
717
+ _fatalException,
718
+ _getActiveHandles,
719
+ _getActiveRequests,
720
+ _handleQueue,
721
+ _kill,
722
+ _linkedBinding,
723
+ _maxListeners,
724
+ _pendingMessage,
725
+ _preload_modules,
726
+ _rawDebug,
727
+ _send,
728
+ _startProfilerIdleNotifier,
729
+ _stopProfilerIdleNotifier,
730
+ _tickCallback,
731
+ abort,
732
+ addListener,
733
+ allowedNodeEnvironmentFlags,
734
+ arch,
735
+ argv,
736
+ argv0,
737
+ assert: assert2,
738
+ availableMemory,
739
+ binding,
740
+ channel,
741
+ chdir,
742
+ config,
743
+ connected,
744
+ constrainedMemory,
745
+ cpuUsage,
746
+ cwd,
747
+ debugPort,
748
+ disconnect,
749
+ dlopen,
750
+ domain,
751
+ emit,
752
+ emitWarning,
753
+ env,
754
+ eventNames,
755
+ execArgv,
756
+ execPath,
757
+ exitCode,
758
+ finalization,
759
+ getActiveResourcesInfo,
760
+ getegid,
761
+ geteuid,
762
+ getgid,
763
+ getgroups,
764
+ getMaxListeners,
765
+ getuid,
766
+ hasUncaughtExceptionCaptureCallback,
767
+ hrtime: hrtime3,
768
+ initgroups,
769
+ kill,
770
+ listenerCount,
771
+ listeners,
772
+ loadEnvFile,
773
+ mainModule,
774
+ memoryUsage,
775
+ moduleLoadList,
776
+ nextTick,
777
+ off,
778
+ on,
779
+ once,
780
+ openStdin,
781
+ permission,
782
+ pid,
783
+ ppid,
784
+ prependListener,
785
+ prependOnceListener,
786
+ rawListeners,
787
+ reallyExit,
788
+ ref,
789
+ release,
790
+ removeAllListeners,
791
+ removeListener,
792
+ report,
793
+ resourceUsage,
794
+ send,
795
+ setegid,
796
+ seteuid,
797
+ setgid,
798
+ setgroups,
799
+ setMaxListeners,
800
+ setSourceMapsEnabled,
801
+ setuid,
802
+ setUncaughtExceptionCaptureCallback,
803
+ sourceMapsEnabled,
804
+ stderr,
805
+ stdin,
806
+ stdout,
807
+ throwDeprecation,
808
+ title,
809
+ traceDeprecation,
810
+ umask,
811
+ unref,
812
+ uptime,
813
+ version,
814
+ versions
815
+ } = unenvProcess;
816
+ var _process = {
817
+ abort,
818
+ addListener,
819
+ allowedNodeEnvironmentFlags,
820
+ hasUncaughtExceptionCaptureCallback,
821
+ setUncaughtExceptionCaptureCallback,
822
+ loadEnvFile,
823
+ sourceMapsEnabled,
824
+ arch,
825
+ argv,
826
+ argv0,
827
+ chdir,
828
+ config,
829
+ connected,
830
+ constrainedMemory,
831
+ availableMemory,
832
+ cpuUsage,
833
+ cwd,
834
+ debugPort,
835
+ dlopen,
836
+ disconnect,
837
+ emit,
838
+ emitWarning,
839
+ env,
840
+ eventNames,
841
+ execArgv,
842
+ execPath,
843
+ exit,
844
+ finalization,
845
+ features,
846
+ getBuiltinModule,
847
+ getActiveResourcesInfo,
848
+ getMaxListeners,
849
+ hrtime: hrtime3,
850
+ kill,
851
+ listeners,
852
+ listenerCount,
853
+ memoryUsage,
854
+ nextTick,
855
+ on,
856
+ off,
857
+ once,
858
+ pid,
859
+ platform,
860
+ ppid,
861
+ prependListener,
862
+ prependOnceListener,
863
+ rawListeners,
864
+ release,
865
+ removeAllListeners,
866
+ removeListener,
867
+ report,
868
+ resourceUsage,
869
+ setMaxListeners,
870
+ setSourceMapsEnabled,
871
+ stderr,
872
+ stdin,
873
+ stdout,
874
+ title,
875
+ throwDeprecation,
876
+ traceDeprecation,
877
+ umask,
878
+ uptime,
879
+ version,
880
+ versions,
881
+ // @ts-expect-error old API
882
+ domain,
883
+ initgroups,
884
+ moduleLoadList,
885
+ reallyExit,
886
+ openStdin,
887
+ assert: assert2,
888
+ binding,
889
+ send,
890
+ exitCode,
891
+ channel,
892
+ getegid,
893
+ geteuid,
894
+ getgid,
895
+ getgroups,
896
+ getuid,
897
+ setegid,
898
+ seteuid,
899
+ setgid,
900
+ setgroups,
901
+ setuid,
902
+ permission,
903
+ mainModule,
904
+ _events,
905
+ _eventsCount,
906
+ _exiting,
907
+ _maxListeners,
908
+ _debugEnd,
909
+ _debugProcess,
910
+ _fatalException,
911
+ _getActiveHandles,
912
+ _getActiveRequests,
913
+ _kill,
914
+ _preload_modules,
915
+ _rawDebug,
916
+ _startProfilerIdleNotifier,
917
+ _stopProfilerIdleNotifier,
918
+ _tickCallback,
919
+ _disconnect,
920
+ _handleQueue,
921
+ _pendingMessage,
922
+ _channel,
923
+ _send,
924
+ _linkedBinding
925
+ };
926
+ var process_default = _process;
927
+
928
+ // ../../node_modules/wrangler/_virtual_unenv_global_polyfill-@cloudflare-unenv-preset-node-process
929
+ globalThis.process = process_default;
930
+
931
+ // src/assets.ts
932
+ async function serveAssets(request, env2, url) {
933
+ const spa = (env2.SPA_FALLBACK ?? "false").toLowerCase() === "true" || env2.SPA_FALLBACK === "1";
934
+ const assetRes = await env2.ASSETS.fetch(request);
935
+ if (assetRes.status !== 404) {
936
+ return withGuardHeaders(assetRes);
937
+ }
938
+ if (spa && request.method === "GET" && !url.pathname.includes(".")) {
939
+ const indexReq = new Request(new URL("/index.html", url.origin), {
940
+ method: "GET",
941
+ headers: request.headers
942
+ });
943
+ const indexRes = await env2.ASSETS.fetch(indexReq);
944
+ if (indexRes.ok) {
945
+ return withGuardHeaders(
946
+ new Response(indexRes.body, {
947
+ status: 200,
948
+ headers: indexRes.headers
949
+ })
950
+ );
951
+ }
952
+ }
953
+ return withGuardHeaders(
954
+ new Response("Not Found", {
955
+ status: 404,
956
+ headers: {
957
+ "content-type": "text/plain; charset=utf-8",
958
+ "cache-control": "no-store"
959
+ }
960
+ })
961
+ );
962
+ }
963
+ __name(serveAssets, "serveAssets");
964
+ function withGuardHeaders(res) {
965
+ const headers = new Headers(res.headers);
966
+ headers.set("x-robots-tag", "noindex, nofollow");
967
+ headers.set("x-content-type-options", "nosniff");
968
+ headers.set("referrer-policy", "no-referrer");
969
+ return new Response(res.body, {
970
+ status: res.status,
971
+ statusText: res.statusText,
972
+ headers
973
+ });
974
+ }
975
+ __name(withGuardHeaders, "withGuardHeaders");
976
+
977
+ // src/auth/providers/github.ts
978
+ var AUTHORIZE_URL = "https://github.com/login/oauth/authorize";
979
+ var TOKEN_URL = "https://github.com/login/oauth/access_token";
980
+ var API = "https://api.github.com";
981
+ async function ghJson(path, accessToken) {
982
+ const res = await fetch(`${API}${path}`, {
983
+ headers: {
984
+ Authorization: `Bearer ${accessToken}`,
985
+ Accept: "application/vnd.github+json",
986
+ "X-GitHub-Api-Version": "2022-11-28",
987
+ "User-Agent": "cf-static-guard"
988
+ }
989
+ });
990
+ if (!res.ok) {
991
+ throw new Error(`GitHub API ${path} failed: ${res.status}`);
992
+ }
993
+ return await res.json();
994
+ }
995
+ __name(ghJson, "ghJson");
996
+ var githubProvider = {
997
+ id: "github",
998
+ displayName: "GitHub",
999
+ // read:org is required for /user/orgs and /user/teams in strict mode.
1000
+ // Keep the requested scope minimal-ish; user:email helps emailDomain rules later.
1001
+ authorizeScopes: "read:user user:email read:org",
1002
+ capabilities() {
1003
+ return {
1004
+ accountAge: true,
1005
+ orgs: true,
1006
+ teams: true,
1007
+ email: true
1008
+ };
1009
+ },
1010
+ getAuthorizeUrl({ clientId, state, redirectUri }) {
1011
+ const url = new URL(AUTHORIZE_URL);
1012
+ url.searchParams.set("client_id", clientId);
1013
+ url.searchParams.set("redirect_uri", redirectUri);
1014
+ url.searchParams.set("state", state);
1015
+ url.searchParams.set("scope", githubProvider.authorizeScopes ?? "read:user");
1016
+ url.searchParams.set("allow_signup", "true");
1017
+ return url.toString();
1018
+ },
1019
+ async exchangeCode({ clientId, clientSecret, code, redirectUri }) {
1020
+ const res = await fetch(TOKEN_URL, {
1021
+ method: "POST",
1022
+ headers: {
1023
+ Accept: "application/json",
1024
+ "Content-Type": "application/json"
1025
+ },
1026
+ body: JSON.stringify({
1027
+ client_id: clientId,
1028
+ client_secret: clientSecret,
1029
+ code,
1030
+ redirect_uri: redirectUri
1031
+ })
1032
+ });
1033
+ if (!res.ok) {
1034
+ throw new Error(`GitHub token exchange failed: ${res.status}`);
1035
+ }
1036
+ const data = await res.json();
1037
+ if (!data.access_token) {
1038
+ throw new Error(
1039
+ data.error_description || data.error || "GitHub did not return access_token"
1040
+ );
1041
+ }
1042
+ return {
1043
+ accessToken: data.access_token,
1044
+ tokenType: data.token_type,
1045
+ scope: data.scope
1046
+ };
1047
+ },
1048
+ async fetchProfile(tokens) {
1049
+ const user = await ghJson("/user", tokens.accessToken);
1050
+ let email = user.email ?? void 0;
1051
+ if (!email) {
1052
+ try {
1053
+ const emails = await ghJson("/user/emails", tokens.accessToken);
1054
+ const primary = emails.find((e) => e.primary && e.verified);
1055
+ email = (primary ?? emails.find((e) => e.verified))?.email;
1056
+ } catch {
1057
+ }
1058
+ }
1059
+ let orgs;
1060
+ try {
1061
+ const orgList = await ghJson(
1062
+ "/user/orgs?per_page=100",
1063
+ tokens.accessToken
1064
+ );
1065
+ orgs = orgList.map((o) => o.login);
1066
+ } catch {
1067
+ orgs = [];
1068
+ }
1069
+ let teams;
1070
+ try {
1071
+ const teamList = await ghJson("/user/teams?per_page=100", tokens.accessToken);
1072
+ teams = teamList.filter((t) => t.organization?.login).map((t) => ({
1073
+ org: t.organization.login,
1074
+ team: t.slug || t.name
1075
+ }));
1076
+ } catch {
1077
+ teams = [];
1078
+ }
1079
+ return {
1080
+ provider: "github",
1081
+ id: String(user.id),
1082
+ login: user.login,
1083
+ name: user.name ?? void 0,
1084
+ avatarUrl: user.avatar_url,
1085
+ email,
1086
+ createdAt: user.created_at,
1087
+ orgs,
1088
+ teams
1089
+ };
1090
+ }
1091
+ };
1092
+
1093
+ // src/auth/providers/index.ts
1094
+ var providers = {
1095
+ [githubProvider.id]: githubProvider
1096
+ };
1097
+ function getProvider(id) {
1098
+ return providers[id];
1099
+ }
1100
+ __name(getProvider, "getProvider");
1101
+ function listProviders() {
1102
+ return Object.values(providers);
1103
+ }
1104
+ __name(listProviders, "listProviders");
1105
+
1106
+ // src/auth/rules-engine.ts
1107
+ function normalizeLogin(value) {
1108
+ return value.trim().toLowerCase();
1109
+ }
1110
+ __name(normalizeLogin, "normalizeLogin");
1111
+ function checkAllowlist(profile3, rules) {
1112
+ if (!rules.allowlist?.length) {
1113
+ return { ok: true, code: "allowlist_skipped", message: "no allowlist" };
1114
+ }
1115
+ const login = normalizeLogin(profile3.login);
1116
+ const id = profile3.id;
1117
+ const matched = rules.allowlist.some((entry) => {
1118
+ const e = entry.trim();
1119
+ const lower = normalizeLogin(e);
1120
+ if (lower === login) return true;
1121
+ if (lower === `${profile3.provider}:${login}`) return true;
1122
+ if (e === id) return true;
1123
+ return false;
1124
+ });
1125
+ return matched ? { ok: true, code: "allowlist_ok", message: "login in allowlist" } : {
1126
+ ok: false,
1127
+ code: "allowlist_deny",
1128
+ message: "account is not on the allowlist"
1129
+ };
1130
+ }
1131
+ __name(checkAllowlist, "checkAllowlist");
1132
+ function checkBlocklist(profile3, rules) {
1133
+ if (!rules.blocklist?.length) {
1134
+ return { ok: true, code: "blocklist_skipped", message: "no blocklist" };
1135
+ }
1136
+ const login = normalizeLogin(profile3.login);
1137
+ const matched = rules.blocklist.some((entry) => {
1138
+ const lower = normalizeLogin(entry);
1139
+ return lower === login || lower === `${profile3.provider}:${login}` || entry === profile3.id;
1140
+ });
1141
+ return matched ? {
1142
+ ok: false,
1143
+ code: "blocklist_deny",
1144
+ message: "account is blocked"
1145
+ } : { ok: true, code: "blocklist_ok", message: "not in blocklist" };
1146
+ }
1147
+ __name(checkBlocklist, "checkBlocklist");
1148
+ function checkAccountAge(profile3, rules) {
1149
+ const days = rules.minAccountAgeDays;
1150
+ if (days == null) {
1151
+ return { ok: true, code: "age_skipped", message: "no minAccountAgeDays" };
1152
+ }
1153
+ if (!profile3.createdAt) {
1154
+ return {
1155
+ ok: false,
1156
+ code: "age_missing",
1157
+ message: "provider did not return account creation time"
1158
+ };
1159
+ }
1160
+ const created = Date.parse(profile3.createdAt);
1161
+ if (Number.isNaN(created)) {
1162
+ return {
1163
+ ok: false,
1164
+ code: "age_invalid",
1165
+ message: "invalid account creation time"
1166
+ };
1167
+ }
1168
+ const ageDays = (Date.now() - created) / 864e5;
1169
+ return ageDays >= days ? { ok: true, code: "age_ok", message: `account age ${ageDays.toFixed(1)}d` } : {
1170
+ ok: false,
1171
+ code: "age_deny",
1172
+ message: `account must be at least ${days} days old`
1173
+ };
1174
+ }
1175
+ __name(checkAccountAge, "checkAccountAge");
1176
+ function checkOrgs(profile3, rules) {
1177
+ const required = rules.requiredOrgs;
1178
+ if (!required?.length) {
1179
+ return { ok: true, code: "orgs_skipped", message: "no requiredOrgs" };
1180
+ }
1181
+ const orgs = new Set((profile3.orgs ?? []).map((o) => normalizeLogin(o)));
1182
+ const missing = required.filter((r) => !orgs.has(normalizeLogin(r)));
1183
+ return missing.length === 0 ? { ok: true, code: "orgs_ok", message: "required orgs satisfied" } : {
1184
+ ok: false,
1185
+ code: "orgs_deny",
1186
+ message: `missing organization membership: ${missing.join(", ")}`
1187
+ };
1188
+ }
1189
+ __name(checkOrgs, "checkOrgs");
1190
+ function checkTeams(profile3, rules) {
1191
+ const required = rules.requiredTeams;
1192
+ if (!required?.length) {
1193
+ return { ok: true, code: "teams_skipped", message: "no requiredTeams" };
1194
+ }
1195
+ const teams = new Set(
1196
+ (profile3.teams ?? []).map(
1197
+ (t) => `${normalizeLogin(t.org)}/${normalizeLogin(t.team)}`
1198
+ )
1199
+ );
1200
+ const missing = required.filter(
1201
+ (r) => !teams.has(`${normalizeLogin(r.org)}/${normalizeLogin(r.team)}`)
1202
+ );
1203
+ return missing.length === 0 ? { ok: true, code: "teams_ok", message: "required teams satisfied" } : {
1204
+ ok: false,
1205
+ code: "teams_deny",
1206
+ message: `missing team membership: ${missing.map((m) => `${m.org}/${m.team}`).join(", ")}`
1207
+ };
1208
+ }
1209
+ __name(checkTeams, "checkTeams");
1210
+ function checkEmailDomains(profile3, rules) {
1211
+ const domains = rules.emailDomainAllowlist;
1212
+ if (!domains?.length) {
1213
+ return { ok: true, code: "email_skipped", message: "no emailDomainAllowlist" };
1214
+ }
1215
+ const email = profile3.email?.toLowerCase();
1216
+ if (!email || !email.includes("@")) {
1217
+ return {
1218
+ ok: false,
1219
+ code: "email_missing",
1220
+ message: "no verified email available"
1221
+ };
1222
+ }
1223
+ const domain2 = email.split("@").pop() ?? "";
1224
+ const ok = domains.some((d) => domain2 === d.trim().toLowerCase());
1225
+ return ok ? { ok: true, code: "email_ok", message: "email domain allowed" } : {
1226
+ ok: false,
1227
+ code: "email_deny",
1228
+ message: "email domain is not allowed"
1229
+ };
1230
+ }
1231
+ __name(checkEmailDomains, "checkEmailDomains");
1232
+ function evaluateRules(input) {
1233
+ const details = [];
1234
+ const failures = [];
1235
+ const block = checkBlocklist(input.profile, input.rules);
1236
+ details.push(block);
1237
+ if (!block.ok) failures.push(block);
1238
+ if (input.mode === "normal") {
1239
+ return { ok: failures.length === 0, failures, details };
1240
+ }
1241
+ const checks = [
1242
+ checkAllowlist(input.profile, input.rules),
1243
+ checkAccountAge(input.profile, input.rules),
1244
+ checkOrgs(input.profile, input.rules),
1245
+ checkTeams(input.profile, input.rules),
1246
+ checkEmailDomains(input.profile, input.rules)
1247
+ ];
1248
+ for (const c of checks) {
1249
+ details.push(c);
1250
+ if (!c.ok) failures.push(c);
1251
+ }
1252
+ return { ok: failures.length === 0, failures, details };
1253
+ }
1254
+ __name(evaluateRules, "evaluateRules");
1255
+
1256
+ // src/session.ts
1257
+ function b64urlEncode(data) {
1258
+ const bytes = data instanceof Uint8Array ? data : new Uint8Array(data);
1259
+ let str2 = "";
1260
+ for (const b of bytes) str2 += String.fromCharCode(b);
1261
+ return btoa(str2).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
1262
+ }
1263
+ __name(b64urlEncode, "b64urlEncode");
1264
+ function b64urlDecode(input) {
1265
+ const pad = input.length % 4 === 0 ? "" : "=".repeat(4 - input.length % 4);
1266
+ const b64 = input.replace(/-/g, "+").replace(/_/g, "/") + pad;
1267
+ const bin = atob(b64);
1268
+ const out = new Uint8Array(bin.length);
1269
+ for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);
1270
+ return out;
1271
+ }
1272
+ __name(b64urlDecode, "b64urlDecode");
1273
+ function b64urlEncodeString(value) {
1274
+ return b64urlEncode(new TextEncoder().encode(value));
1275
+ }
1276
+ __name(b64urlEncodeString, "b64urlEncodeString");
1277
+ function b64urlDecodeString(value) {
1278
+ return new TextDecoder().decode(b64urlDecode(value));
1279
+ }
1280
+ __name(b64urlDecodeString, "b64urlDecodeString");
1281
+ async function importKey(secret) {
1282
+ return crypto.subtle.importKey(
1283
+ "raw",
1284
+ new TextEncoder().encode(secret),
1285
+ { name: "HMAC", hash: "SHA-256" },
1286
+ false,
1287
+ ["sign", "verify"]
1288
+ );
1289
+ }
1290
+ __name(importKey, "importKey");
1291
+ async function signSession(payload, secret) {
1292
+ const header = b64urlEncodeString(
1293
+ JSON.stringify({ alg: "HS256", typ: "JWT" })
1294
+ );
1295
+ const body = b64urlEncodeString(JSON.stringify(payload));
1296
+ const data = `${header}.${body}`;
1297
+ const key = await importKey(secret);
1298
+ const sig = await crypto.subtle.sign("HMAC", key, new TextEncoder().encode(data));
1299
+ return `${data}.${b64urlEncode(sig)}`;
1300
+ }
1301
+ __name(signSession, "signSession");
1302
+ async function verifySession(token, secret) {
1303
+ const parts = token.split(".");
1304
+ if (parts.length !== 3) return null;
1305
+ const [header, body, sig] = parts;
1306
+ const data = `${header}.${body}`;
1307
+ const key = await importKey(secret);
1308
+ let valid = false;
1309
+ try {
1310
+ valid = await crypto.subtle.verify(
1311
+ "HMAC",
1312
+ key,
1313
+ b64urlDecode(sig),
1314
+ new TextEncoder().encode(data)
1315
+ );
1316
+ } catch {
1317
+ return null;
1318
+ }
1319
+ if (!valid) return null;
1320
+ try {
1321
+ const payload = JSON.parse(b64urlDecodeString(body));
1322
+ if (!payload?.sub || !payload?.provider || !payload?.exp) return null;
1323
+ if (payload.exp * 1e3 <= Date.now()) return null;
1324
+ return payload;
1325
+ } catch {
1326
+ return null;
1327
+ }
1328
+ }
1329
+ __name(verifySession, "verifySession");
1330
+ function buildSessionPayload(input, ttlSeconds2) {
1331
+ const now = Math.floor(Date.now() / 1e3);
1332
+ return {
1333
+ sub: input.sub,
1334
+ provider: input.provider,
1335
+ login: input.login,
1336
+ name: input.name,
1337
+ avatarUrl: input.avatarUrl,
1338
+ iat: now,
1339
+ exp: now + ttlSeconds2
1340
+ };
1341
+ }
1342
+ __name(buildSessionPayload, "buildSessionPayload");
1343
+ function sessionCookie(token, maxAgeSeconds, secure) {
1344
+ const parts = [
1345
+ `csg_session=${token}`,
1346
+ "Path=/",
1347
+ "HttpOnly",
1348
+ "SameSite=Lax",
1349
+ `Max-Age=${maxAgeSeconds}`
1350
+ ];
1351
+ if (secure) parts.push("Secure");
1352
+ return parts.join("; ");
1353
+ }
1354
+ __name(sessionCookie, "sessionCookie");
1355
+ function clearSessionCookie(secure) {
1356
+ const parts = [
1357
+ "csg_session=",
1358
+ "Path=/",
1359
+ "HttpOnly",
1360
+ "SameSite=Lax",
1361
+ "Max-Age=0"
1362
+ ];
1363
+ if (secure) parts.push("Secure");
1364
+ return parts.join("; ");
1365
+ }
1366
+ __name(clearSessionCookie, "clearSessionCookie");
1367
+ function readSessionCookie(request) {
1368
+ const header = request.headers.get("Cookie");
1369
+ if (!header) return null;
1370
+ for (const part of header.split(";")) {
1371
+ const [k, ...rest] = part.trim().split("=");
1372
+ if (k === "csg_session") {
1373
+ const v = rest.join("=").trim();
1374
+ return v || null;
1375
+ }
1376
+ }
1377
+ return null;
1378
+ }
1379
+ __name(readSessionCookie, "readSessionCookie");
1380
+
1381
+ // src/auth/types.ts
1382
+ function defaultUiConfig() {
1383
+ return {
1384
+ siteTitle: "\u53D7\u4FDD\u62A4\u7AD9\u70B9",
1385
+ siteSubtitle: "\u767B\u5F55\u540E\u7EE7\u7EED\u8BBF\u95EE",
1386
+ loginHeading: "\u8BBF\u95EE\u53D7\u4FDD\u62A4\u7AD9\u70B9",
1387
+ loginSubtitle: "\u4F7F\u7528\u5DF2\u6388\u6743\u8D26\u53F7\u767B\u5F55\u540E\u7EE7\u7EED\u6D4F\u89C8",
1388
+ providerButtonPrefix: "\u4F7F\u7528",
1389
+ footerBrand: "cf-static-guard",
1390
+ copyright: "",
1391
+ icp: "",
1392
+ icpLink: "https://beian.miit.gov.cn/",
1393
+ showModeBadge: true,
1394
+ showFooterBrand: true,
1395
+ showGithubIcon: true
1396
+ };
1397
+ }
1398
+ __name(defaultUiConfig, "defaultUiConfig");
1399
+ var ADMIN_COOKIE = "csg_admin";
1400
+ function defaultGuardConfig() {
1401
+ return {
1402
+ mode: "normal",
1403
+ providers: {
1404
+ github: {
1405
+ enabled: true,
1406
+ mode: void 0,
1407
+ rules: {}
1408
+ }
1409
+ }
1410
+ };
1411
+ }
1412
+ __name(defaultGuardConfig, "defaultGuardConfig");
1413
+
1414
+ // src/config.ts
1415
+ var KV_CONFIG_KEY = "auth:config";
1416
+ function parseMode(value, fallback) {
1417
+ return value === "strict" || value === "normal" ? value : fallback;
1418
+ }
1419
+ __name(parseMode, "parseMode");
1420
+ function asStringArray(value) {
1421
+ if (!Array.isArray(value)) return void 0;
1422
+ return value.filter((v) => typeof v === "string" && v.length > 0);
1423
+ }
1424
+ __name(asStringArray, "asStringArray");
1425
+ function asTeamList(value) {
1426
+ if (!Array.isArray(value)) return void 0;
1427
+ const out = [];
1428
+ for (const item of value) {
1429
+ if (item && typeof item === "object" && typeof item.org === "string" && typeof item.team === "string") {
1430
+ out.push({
1431
+ org: item.org,
1432
+ team: item.team
1433
+ });
1434
+ }
1435
+ }
1436
+ return out.length ? out : void 0;
1437
+ }
1438
+ __name(asTeamList, "asTeamList");
1439
+ function normalizeRules(raw) {
1440
+ if (!raw || typeof raw !== "object") return {};
1441
+ const r = raw;
1442
+ const rules = {};
1443
+ const allowlist = asStringArray(r.allowlist);
1444
+ if (allowlist) rules.allowlist = allowlist;
1445
+ const blocklist = asStringArray(r.blocklist);
1446
+ if (blocklist) rules.blocklist = blocklist;
1447
+ if (typeof r.minAccountAgeDays === "number" && r.minAccountAgeDays >= 0) {
1448
+ rules.minAccountAgeDays = r.minAccountAgeDays;
1449
+ }
1450
+ const requiredOrgs = asStringArray(r.requiredOrgs);
1451
+ if (requiredOrgs) rules.requiredOrgs = requiredOrgs;
1452
+ const requiredTeams = asTeamList(r.requiredTeams);
1453
+ if (requiredTeams) rules.requiredTeams = requiredTeams;
1454
+ const emailDomainAllowlist = asStringArray(r.emailDomainAllowlist);
1455
+ if (emailDomainAllowlist) rules.emailDomainAllowlist = emailDomainAllowlist;
1456
+ return rules;
1457
+ }
1458
+ __name(normalizeRules, "normalizeRules");
1459
+ function normalizeProvider(raw) {
1460
+ if (!raw || typeof raw !== "object") {
1461
+ return { enabled: false, rules: {} };
1462
+ }
1463
+ const p = raw;
1464
+ return {
1465
+ enabled: p.enabled !== false,
1466
+ mode: p.mode === "strict" || p.mode === "normal" ? p.mode : void 0,
1467
+ rules: normalizeRules(p.rules)
1468
+ };
1469
+ }
1470
+ __name(normalizeProvider, "normalizeProvider");
1471
+ function parseGuardConfig(raw, env2) {
1472
+ const base = defaultGuardConfig();
1473
+ const envMode = parseMode(env2.GUARD_MODE, base.mode);
1474
+ if (!raw || typeof raw !== "object") {
1475
+ return {
1476
+ mode: envMode,
1477
+ providers: {
1478
+ github: {
1479
+ enabled: Boolean(env2.GITHUB_CLIENT_ID && env2.GITHUB_CLIENT_SECRET),
1480
+ rules: {}
1481
+ }
1482
+ }
1483
+ };
1484
+ }
1485
+ const obj = raw;
1486
+ const mode = parseMode(obj.mode, envMode);
1487
+ const providersRaw = obj.providers && typeof obj.providers === "object" ? obj.providers : { github: {} };
1488
+ const providers2 = {};
1489
+ for (const [id, value] of Object.entries(providersRaw)) {
1490
+ providers2[id] = normalizeProvider(value);
1491
+ }
1492
+ if (!providers2.github) {
1493
+ providers2.github = {
1494
+ enabled: Boolean(env2.GITHUB_CLIENT_ID && env2.GITHUB_CLIENT_SECRET),
1495
+ rules: {}
1496
+ };
1497
+ }
1498
+ return { mode, providers: providers2 };
1499
+ }
1500
+ __name(parseGuardConfig, "parseGuardConfig");
1501
+ async function loadGuardConfig(env2) {
1502
+ if (env2.RULES) {
1503
+ try {
1504
+ const cached = await env2.RULES.get(KV_CONFIG_KEY, "json");
1505
+ if (cached) return parseGuardConfig(cached, env2);
1506
+ } catch {
1507
+ }
1508
+ }
1509
+ return parseGuardConfig(null, env2);
1510
+ }
1511
+ __name(loadGuardConfig, "loadGuardConfig");
1512
+ async function saveGuardConfig(env2, config2) {
1513
+ if (!env2.RULES) {
1514
+ throw new Error("KV binding RULES is required to save auth config");
1515
+ }
1516
+ await env2.RULES.put(KV_CONFIG_KEY, JSON.stringify(config2));
1517
+ }
1518
+ __name(saveGuardConfig, "saveGuardConfig");
1519
+ function resolveProviderConfig(config2, providerId) {
1520
+ const p = config2.providers[providerId];
1521
+ if (!p) {
1522
+ return { mode: config2.mode, rules: {} };
1523
+ }
1524
+ return {
1525
+ mode: p.mode ?? config2.mode,
1526
+ rules: p.rules ?? {}
1527
+ };
1528
+ }
1529
+ __name(resolveProviderConfig, "resolveProviderConfig");
1530
+ function isProviderEnabled(config2, providerId, env2) {
1531
+ const p = config2.providers[providerId];
1532
+ if (!p) return false;
1533
+ if (providerId === "github") {
1534
+ if (!env2.GITHUB_CLIENT_ID || !env2.GITHUB_CLIENT_SECRET) return false;
1535
+ }
1536
+ return p.enabled;
1537
+ }
1538
+ __name(isProviderEnabled, "isProviderEnabled");
1539
+ function listPublicPaths(env2) {
1540
+ const raw = env2.PUBLIC_PATHS ?? "/health";
1541
+ return raw.split(",").map((s) => s.trim()).filter(Boolean).map((p) => p.startsWith("/") ? p : `/${p}`);
1542
+ }
1543
+ __name(listPublicPaths, "listPublicPaths");
1544
+
1545
+ // src/ui-config.ts
1546
+ var KV_UI_KEY = "ui:config";
1547
+ function str(v, fallback) {
1548
+ return typeof v === "string" ? v : fallback;
1549
+ }
1550
+ __name(str, "str");
1551
+ function bool(v, fallback) {
1552
+ return typeof v === "boolean" ? v : fallback;
1553
+ }
1554
+ __name(bool, "bool");
1555
+ function parseUiConfig(raw) {
1556
+ const d = defaultUiConfig();
1557
+ if (!raw || typeof raw !== "object") return d;
1558
+ const o = raw;
1559
+ return {
1560
+ siteTitle: str(o.siteTitle, d.siteTitle),
1561
+ siteSubtitle: str(o.siteSubtitle, d.siteSubtitle),
1562
+ loginHeading: str(o.loginHeading, d.loginHeading),
1563
+ loginSubtitle: str(o.loginSubtitle, d.loginSubtitle),
1564
+ providerButtonPrefix: str(o.providerButtonPrefix, d.providerButtonPrefix),
1565
+ footerBrand: str(o.footerBrand, d.footerBrand),
1566
+ copyright: str(o.copyright, d.copyright),
1567
+ icp: str(o.icp, d.icp),
1568
+ icpLink: str(o.icpLink, d.icpLink),
1569
+ showModeBadge: bool(o.showModeBadge, d.showModeBadge),
1570
+ showFooterBrand: bool(o.showFooterBrand, d.showFooterBrand),
1571
+ showGithubIcon: bool(o.showGithubIcon, d.showGithubIcon)
1572
+ };
1573
+ }
1574
+ __name(parseUiConfig, "parseUiConfig");
1575
+ async function loadUiConfig(env2) {
1576
+ if (!env2.RULES) return defaultUiConfig();
1577
+ try {
1578
+ const raw = await env2.RULES.get(KV_UI_KEY, "json");
1579
+ if (raw) return parseUiConfig(raw);
1580
+ } catch {
1581
+ }
1582
+ return defaultUiConfig();
1583
+ }
1584
+ __name(loadUiConfig, "loadUiConfig");
1585
+ async function saveUiConfig(env2, config2) {
1586
+ if (!env2.RULES) {
1587
+ throw new Error("KV binding RULES is required to save UI config");
1588
+ }
1589
+ await env2.RULES.put(KV_UI_KEY, JSON.stringify(config2));
1590
+ }
1591
+ __name(saveUiConfig, "saveUiConfig");
1592
+
1593
+ // src/pages/login-spa.ts
1594
+ var LOGIN_SPA_HTML = '<!DOCTYPE html>\n<html lang="zh-CN">\n <head>\n <meta charset="UTF-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <meta name="robots" content="noindex, nofollow" />\n <title>Sign in \xB7 Static Guard</title>\n <script type="module" crossorigin>(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll(\'link[rel="modulepreload"]\'))n(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function s(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(r){if(r.ep)return;r.ep=!0;const i=s(r);fetch(r.href,i)}})();/**\n* @vue/shared v3.5.42\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/function Ns(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const W={},lt=[],Re=()=>{},Nn=()=>!1,ts=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ss=e=>e.startsWith("onUpdate:"),te=Object.assign,$s=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Jr=Object.prototype.hasOwnProperty,j=(e,t)=>Jr.call(e,t),P=Array.isArray,Ge=e=>It(e)==="[object Map]",Gt=e=>It(e)==="[object Set]",fn=e=>It(e)==="[object Date]",R=e=>typeof e=="function",G=e=>typeof e=="string",Ie=e=>typeof e=="symbol",$=e=>e!==null&&typeof e=="object",$n=e=>($(e)||R(e))&&R(e.then)&&R(e.catch),Un=Object.prototype.toString,It=e=>Un.call(e),zr=e=>It(e).slice(8,-1),Bn=e=>It(e)==="[object Object]",Us=e=>G(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,vt=Ns(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ns=e=>{const t=Object.create(null);return(s=>t[s]||(t[s]=e(s)))},Yr=/-\\w/g,pe=ns(e=>e.replace(Yr,t=>t.slice(1).toUpperCase())),Xr=/\\B([A-Z])/g,rt=ns(e=>e.replace(Xr,"-$1").toLowerCase()),Kn=ns(e=>e.charAt(0).toUpperCase()+e.slice(1)),gs=ns(e=>e?`on${Kn(e)}`:""),Pe=(e,t)=>!Object.is(e,t),_s=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},Vn=(e,t,s,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},Zr=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let un;const rs=()=>un||(un=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Bs(e){if(P(e)){const t={};for(let s=0;s<e.length;s++){const n=e[s],r=G(n)?si(n):Bs(n);if(r)for(const i in r)t[i]=r[i]}return t}else if(G(e)||$(e))return e}const Qr=/;(?![^(]*\\))/g,ei=/:([^]+)/,ti=/\\/\\*[^]*?\\*\\//g;function si(e){const t={};return e.replace(ti,"").split(Qr).forEach(s=>{if(s){const n=s.split(ei);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function is(e){let t="";if(G(e))t=e;else if(P(e))for(let s=0;s<e.length;s++){const n=is(e[s]);n&&(t+=n+" ")}else if($(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const ni="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",ri=Ns(ni);function Wn(e){return!!e||e===""}function ii(e,t){if(e.length!==t.length)return!1;let s=!0;for(let n=0;s&&n<e.length;n++)s=os(e[n],t[n]);return s}function an(e,t){if(e.size!==t.size)return!1;const s=Array.from(t),n=new Uint8Array(s.length);for(const r of e){let i=-1;for(let o=0;o<s.length;o++)if(!n[o]&&os(r,s[o])){i=o;break}if(i<0)return!1;n[i]=1}return!0}function os(e,t){if(e===t)return!0;let s=fn(e),n=fn(t);if(s||n)return s&&n?e.getTime()===t.getTime():!1;if(s=Ie(e),n=Ie(t),s||n)return e===t;if(s=P(e),n=P(t),s||n)return s&&n?ii(e,t):!1;if(s=$(e),n=$(t),s||n){if(!s||!n)return!1;if(s=Ge(e),n=Ge(t),s||n||(s=Gt(e),n=Gt(t),s||n))return s&&n?an(e,t):!1;const r=Object.keys(e).length,i=Object.keys(t).length;if(r!==i)return!1;for(const o in e){const l=e.hasOwnProperty(o),f=t.hasOwnProperty(o);if(l&&!f||!l&&f||!os(e[o],t[o]))return!1}}return String(e)===String(t)}const qn=e=>!!(e&&e.__v_isRef===!0),de=e=>G(e)?e:e==null?"":P(e)||$(e)&&(e.toString===Un||!R(e.toString))?qn(e)?de(e.value):JSON.stringify(e,kn,2):String(e),kn=(e,t)=>qn(t)?kn(e,t.value):Ge(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,r],i)=>(s[ms(n,i)+" =>"]=r,s),{})}:Gt(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>ms(s))}:Ie(t)?ms(t):$(t)&&!P(t)&&!Bn(t)?String(t):t,ms=(e,t="")=>{var s;return Ie(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/**\n* @vue/reactivity v3.5.42\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/let ee;class oi{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&ee&&(ee.active?(this.parent=ee,this.index=(ee.scopes||(ee.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes){const n=this.scopes.slice();for(t=0,s=n.length;t<s;t++)n[t].pause()}for(t=0,s=this.effects.length;t<s;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,s;if(this.scopes){const r=this.scopes.slice();for(t=0,s=r.length;t<s;t++)r[t].resume()}const n=this.effects.slice();for(t=0,s=n.length;t<s;t++)n[t].resume()}}run(t){if(this._active){const s=ee;try{return ee=this,t()}finally{ee=s}}}on(){++this._on===1&&(this.prevScope=ee,ee=this)}off(){if(this._on>0&&--this._on===0){if(ee===this)ee=this.prevScope;else{let t=ee;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s<n;s++)this.effects[s].stop();for(this.effects.length=0,s=0,n=this.cleanups.length;s<n;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){const r=this.scopes.slice();for(s=0,n=r.length;s<n;s++)r[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function li(){return ee}let V;const bs=new WeakSet;class Gn{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,ee&&(ee.active?ee.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,bs.has(this)&&(bs.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||zn(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,dn(this),Yn(this);const t=V,s=ge;V=this,ge=!0;try{return this.fn()}finally{Xn(this),V=t,ge=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Ws(t);this.deps=this.depsTail=void 0,dn(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?bs.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Os(this)&&this.run()}get dirty(){return Os(this)}}let Jn=0,xt,St;function zn(e,t=!1){if(e.flags|=8,t){e.next=St,St=e;return}e.next=xt,xt=e}function Ks(){Jn++}function Vs(){if(--Jn>0)return;if(St){let t=St;for(St=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;xt;){let t=xt;for(xt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function Yn(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Xn(e){let t,s=e.depsTail,n=s;for(;n;){const r=n.prevDep;n.version===-1?(n===s&&(s=r),Ws(n),ci(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=r}e.deps=t,e.depsTail=s}function Os(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Zn(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Zn(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Et)||(e.globalVersion=Et,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Os(e))))return;e.flags|=2;const t=e.dep,s=V,n=ge;V=e,ge=!0;try{Yn(e);const r=e.fn(e._value);(t.version===0||Pe(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{V=s,ge=n,Xn(e),e.flags&=-3}}function Ws(e,t=!1){const{dep:s,prevSub:n,nextSub:r}=e;if(n&&(n.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let i=s.computed.deps;i;i=i.nextDep)Ws(i,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function ci(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let ge=!0;const Qn=[];function Ne(){Qn.push(ge),ge=!1}function $e(){const e=Qn.pop();ge=e===void 0?!0:e}function dn(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=V;V=void 0;try{t()}finally{V=s}}}let Et=0;class fi{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class qs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!V||!ge||V===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==V)s=this.activeLink=new fi(V,this),V.deps?(s.prevDep=V.depsTail,V.depsTail.nextDep=s,V.depsTail=s):V.deps=V.depsTail=s,er(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=V.depsTail,s.nextDep=void 0,V.depsTail.nextDep=s,V.depsTail=s,V.deps===s&&(V.deps=n)}return s}trigger(t){this.version++,Et++,this.notify(t)}notify(t){Ks();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Vs()}}}function er(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)er(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Ps=new WeakMap,tt=Symbol(""),Ms=Symbol(""),At=Symbol("");function ne(e,t,s){if(ge&&V){let n=Ps.get(e);n||Ps.set(e,n=new Map);let r=n.get(s);r||(n.set(s,r=new qs),r.map=n,r.key=s),r.track()}}function He(e,t,s,n,r,i){const o=Ps.get(e);if(!o){Et++;return}const l=f=>{f&&f.trigger()};if(Ks(),t==="clear")o.forEach(l);else{const f=P(e),d=f&&Us(s);if(f&&s==="length"){const a=Number(n);o.forEach((p,y)=>{(y==="length"||y===At||!Ie(y)&&y>=a)&&l(p)})}else switch((s!==void 0||o.has(void 0))&&l(o.get(s)),d&&l(o.get(At)),t){case"add":f?d&&l(o.get("length")):(l(o.get(tt)),Ge(e)&&l(o.get(Ms)));break;case"delete":f||(l(o.get(tt)),Ge(e)&&l(o.get(Ms)));break;case"set":Ge(e)&&l(o.get(tt));break}}Vs()}function it(e){const t=D(e);return t===e?t:(ne(t,"iterate",At),he(e)?t:t.map(_e))}function ls(e){return ne(e=D(e),"iterate",At),e}function Ee(e,t){return Ue(e)?ut(st(e)?_e(t):t):_e(t)}const ui={__proto__:null,[Symbol.iterator](){return ys(this,Symbol.iterator,e=>Ee(this,e))},concat(...e){return it(this).concat(...e.map(t=>P(t)?it(t):t))},entries(){return ys(this,"entries",e=>(e[1]=Ee(this,e[1]),e))},every(e,t){return Fe(this,"every",e,t,void 0,arguments)},filter(e,t){return Fe(this,"filter",e,t,s=>s.map(n=>Ee(this,n)),arguments)},find(e,t){return Fe(this,"find",e,t,s=>Ee(this,s),arguments)},findIndex(e,t){return Fe(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Fe(this,"findLast",e,t,s=>Ee(this,s),arguments)},findLastIndex(e,t){return Fe(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Fe(this,"forEach",e,t,void 0,arguments)},includes(...e){return vs(this,"includes",e)},indexOf(...e){return vs(this,"indexOf",e)},join(e){return it(this).join(e)},lastIndexOf(...e){return vs(this,"lastIndexOf",e)},map(e,t){return Fe(this,"map",e,t,void 0,arguments)},pop(){return _t(this,"pop")},push(...e){return _t(this,"push",e)},reduce(e,...t){return hn(this,"reduce",e,t)},reduceRight(e,...t){return hn(this,"reduceRight",e,t)},shift(){return _t(this,"shift")},some(e,t){return Fe(this,"some",e,t,void 0,arguments)},splice(...e){return _t(this,"splice",e)},toReversed(){return it(this).toReversed()},toSorted(e){return it(this).toSorted(e)},toSpliced(...e){return it(this).toSpliced(...e)},unshift(...e){return _t(this,"unshift",e)},values(){return ys(this,"values",e=>Ee(this,e))}};function ys(e,t,s){const n=ls(e),r=n[t]();return n!==e&&!he(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.done||(i.value=s(i.value)),i}),r}const ai=Array.prototype;function Fe(e,t,s,n,r,i){const o=ls(e),l=o!==e&&!he(e),f=o[t];if(f!==ai[t]){const p=f.apply(e,i);return l?_e(p):p}let d=s;o!==e&&(l?d=function(p,y){return s.call(this,Ee(e,p),y,e)}:s.length>2&&(d=function(p,y){return s.call(this,p,y,e)}));const a=f.call(o,d,n);return l&&r?r(a):a}function hn(e,t,s,n){const r=ls(e),i=r!==e&&!he(e);let o=s,l=!1;r!==e&&(i?(l=n.length===0,o=function(d,a,p){return l&&(l=!1,d=Ee(e,d)),s.call(this,d,Ee(e,a),p,e)}):s.length>3&&(o=function(d,a,p){return s.call(this,d,a,p,e)}));const f=r[t](o,...n);return l?Ee(e,f):f}function vs(e,t,s){const n=D(e);ne(n,"iterate",At);const r=n[t](...s);return(r===-1||r===!1)&&zs(s[0])?(s[0]=D(s[0]),n[t](...s)):r}function _t(e,t,s=[]){Ne(),Ks();const n=D(e)[t].apply(e,s);return Vs(),$e(),n}const di=Ns("__proto__,__v_isRef,__isVue"),tr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ie));function hi(e){Ie(e)||(e=String(e));const t=D(this);return ne(t,"has",e),t.hasOwnProperty(e)}class sr{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(s==="__v_isReactive")return!r;if(s==="__v_isReadonly")return r;if(s==="__v_isShallow")return i;if(s==="__v_raw")return n===(r?i?wi:or:i?ir:rr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=P(t);if(!r){let f;if(o&&(f=ui[s]))return f;if(s==="hasOwnProperty")return hi}const l=Reflect.get(t,s,re(t)?t:n);if((Ie(s)?tr.has(s):di(s))||(r||ne(t,"get",s),i))return l;if(re(l)){const f=o&&Us(s)?l:l.value;return r&&$(f)?Is(f):f}return $(l)?r?Is(l):Gs(l):l}}class nr extends sr{constructor(t=!1){super(!1,t)}set(t,s,n,r){let i=t[s];const o=P(t)&&Us(s);if(!this._isShallow){const d=Ue(i);if(!he(n)&&!Ue(n)&&(i=D(i),n=D(n)),!o&&re(i)&&!re(n))return d||(i.value=n),!0}const l=o?Number(s)<t.length:j(t,s),f=Reflect.set(t,s,n,re(t)?t:r);return t===D(r)&&f&&(l?Pe(n,i)&&He(t,"set",s,n):He(t,"add",s,n)),f}deleteProperty(t,s){const n=j(t,s);t[s];const r=Reflect.deleteProperty(t,s);return r&&n&&He(t,"delete",s,void 0),r}has(t,s){const n=Reflect.has(t,s);return(!Ie(s)||!tr.has(s))&&ne(t,"has",s),n}ownKeys(t){return ne(t,"iterate",P(t)?"length":tt),Reflect.ownKeys(t)}}class pi extends sr{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const gi=new nr,_i=new pi,mi=new nr(!0);const Rs=e=>e,Ut=e=>Reflect.getPrototypeOf(e);function bi(e,t,s){return function(...n){const r=this.__v_raw,i=D(r),o=Ge(i),l=e==="entries"||e===Symbol.iterator&&o,f=e==="keys"&&o,d=r[e](...n),a=s?Rs:t?ut:_e;return!t&&ne(i,"iterate",f?Ms:tt),te(Object.create(d),{next(){const{value:p,done:y}=d.next();return y?{value:p,done:y}:{value:l?[a(p[0]),a(p[1])]:a(p),done:y}}})}}function Bt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function yi(e,t){const s={get(r){const i=this.__v_raw,o=D(i),l=D(r);e||(Pe(r,l)&&ne(o,"get",r),ne(o,"get",l));const{has:f}=Ut(o),d=t?Rs:e?ut:_e;if(f.call(o,r))return d(i.get(r));if(f.call(o,l))return d(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&ne(D(r),"iterate",tt),r.size},has(r){const i=this.__v_raw,o=D(i),l=D(r);return e||(Pe(r,l)&&ne(o,"has",r),ne(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,f=D(l),d=t?Rs:e?ut:_e;return!e&&ne(f,"iterate",tt),l.forEach((a,p)=>r.call(i,d(a),d(p),o))}};return te(s,e?{add:Bt("add"),set:Bt("set"),delete:Bt("delete"),clear:Bt("clear")}:{add(r){const i=D(this),o=Ut(i),l=D(r),f=!t&&!he(r)&&!Ue(r)?l:r;return o.has.call(i,f)||Pe(r,f)&&o.has.call(i,r)||Pe(l,f)&&o.has.call(i,l)||(i.add(f),He(i,"add",f,f)),this},set(r,i){!t&&!he(i)&&!Ue(i)&&(i=D(i));const o=D(this),{has:l,get:f}=Ut(o);let d=l.call(o,r);d||(r=D(r),d=l.call(o,r));const a=f.call(o,r);return o.set(r,i),d?Pe(i,a)&&He(o,"set",r,i):He(o,"add",r,i),this},delete(r){const i=D(this),{has:o,get:l}=Ut(i);let f=o.call(i,r);f||(r=D(r),f=o.call(i,r)),l&&l.call(i,r);const d=i.delete(r);return f&&He(i,"delete",r,void 0),d},clear(){const r=D(this),i=r.size!==0,o=r.clear();return i&&He(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{s[r]=bi(r,e,t)}),s}function ks(e,t){const s=yi(e,t);return(n,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?n:Reflect.get(j(s,r)&&r in n?s:n,r,i)}const vi={get:ks(!1,!1)},xi={get:ks(!1,!0)},Si={get:ks(!0,!1)};const rr=new WeakMap,ir=new WeakMap,or=new WeakMap,wi=new WeakMap;function Ci(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Gs(e){return Ue(e)?e:Js(e,!1,gi,vi,rr)}function Ti(e){return Js(e,!1,mi,xi,ir)}function Is(e){return Js(e,!0,_i,Si,or)}function Js(e,t,s,n,r){if(!$(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const i=r.get(e);if(i)return i;const o=Ci(zr(e));if(o===0)return e;const l=new Proxy(e,o===2?n:s);return r.set(e,l),l}function st(e){return Ue(e)?st(e.__v_raw):!!(e&&e.__v_isReactive)}function Ue(e){return!!(e&&e.__v_isReadonly)}function he(e){return!!(e&&e.__v_isShallow)}function zs(e){return e?!!e.__v_raw:!1}function D(e){const t=e&&e.__v_raw;return t?D(t):e}function Ei(e){return!j(e,"__v_skip")&&Object.isExtensible(e)&&Vn(e,"__v_skip",!0),e}const _e=e=>$(e)?Gs(e):e,ut=e=>$(e)?Is(e):e;function re(e){return e?e.__v_isRef===!0:!1}function We(e){return Ai(e,!1)}function Ai(e,t){return re(e)?e:new Oi(e,t)}class Oi{constructor(t,s){this.dep=new qs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:D(t),this._value=s?t:_e(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||he(t)||Ue(t);t=n?t:D(t),Pe(t,s)&&(this._rawValue=t,this._value=n?t:_e(t),this.dep.trigger())}}function B(e){return re(e)?e.value:e}const Pi={get:(e,t,s)=>t==="__v_raw"?e:B(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const r=e[t];return re(r)&&!re(s)?(r.value=s,!0):Reflect.set(e,t,s,n)}};function lr(e){return st(e)?e:new Proxy(e,Pi)}class Mi{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new qs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Et-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&V!==this)return zn(this,!0),!0}get value(){const t=this.dep.track();return Zn(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Ri(e,t,s=!1){let n,r;return R(e)?n=e:(n=e.get,r=e.set),new Mi(n,r,s)}const Kt={},Jt=new WeakMap;let et;function Ii(e,t=!1,s=et){if(s){let n=Jt.get(s);n||Jt.set(s,n=[]),n.push(e)}}function Fi(e,t,s=W){const{immediate:n,deep:r,once:i,scheduler:o,augmentJob:l,call:f}=s,d=A=>r?A:he(A)||r===!1||r===0?ke(A,1):ke(A);let a,p,y,C,H=!1,M=!1;if(re(e)?(p=()=>e.value,H=he(e)):st(e)?(p=()=>d(e),H=!0):P(e)?(M=!0,H=e.some(A=>st(A)||he(A)),p=()=>e.map(A=>{if(re(A))return A.value;if(st(A))return d(A);if(R(A))return f?f(A,2):A()})):R(e)?t?p=f?()=>f(e,2):e:p=()=>{if(y){Ne();try{y()}finally{$e()}}const A=et;et=a;try{return f?f(e,3,[C]):e(C)}finally{et=A}}:p=Re,t&&r){const A=p,Y=r===!0?1/0:r;p=()=>ke(A(),Y)}const J=li(),q=()=>{a.stop(),J&&J.active&&$s(J.effects,a)};if(i&&t){const A=t;t=(...Y)=>{const be=A(...Y);return q(),be}}let F=M?new Array(e.length).fill(Kt):Kt;const L=A=>{if(!(!(a.flags&1)||!a.dirty&&!A))if(t){const Y=a.run();if(A||r||H||(M?Y.some((be,ye)=>Pe(be,F[ye])):Pe(Y,F))){y&&y();const be=et;et=a;try{const ye=[Y,F===Kt?void 0:M&&F[0]===Kt?[]:F,C];F=Y,f?f(t,3,ye):t(...ye)}finally{et=be}}}else a.run()};return l&&l(L),a=new Gn(p),a.scheduler=o?()=>o(L,!1):L,C=A=>Ii(A,!1,a),y=a.onStop=()=>{const A=Jt.get(a);if(A){if(f)f(A,4);else for(const Y of A)Y();Jt.delete(a)}},t?n?L(!0):F=a.run():o?o(L.bind(null,!0),!0):a.run(),q.pause=a.pause.bind(a),q.resume=a.resume.bind(a),q.stop=q,q}function ke(e,t=1/0,s){if(t<=0||!$(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,re(e))ke(e.value,t,s);else if(P(e))for(let n=0;n<e.length;n++)ke(e[n],t,s);else if(Gt(e)||Ge(e))e.forEach(n=>{ke(n,t,s)});else if(Bn(e)){for(const n in e)ke(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&ke(e[n],t,s)}return e}/**\n* @vue/runtime-core v3.5.42\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/function Ft(e,t,s,n){try{return n?e(...n):e()}catch(r){cs(r,t,s)}}function me(e,t,s,n){if(R(e)){const r=Ft(e,t,s,n);return r&&$n(r)&&r.catch(i=>{cs(i,t,s)}),r}if(P(e)){const r=[];for(let i=0;i<e.length;i++)r.push(me(e[i],t,s,n));return r}}function cs(e,t,s,n=!0){const r=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:o}=t&&t.appContext.config||W;if(t){let l=t.parent;const f=t.proxy,d=`https://vuejs.org/error-reference/#runtime-${s}`;for(;l;){const a=l.ec;if(a){for(let p=0;p<a.length;p++)if(a[p](e,f,d)===!1)return}l=l.parent}if(i){Ne(),Ft(i,null,10,[e,f,d]),$e();return}}Di(e,s,r,n,o)}function Di(e,t,s,n=!0,r=!1){if(r)throw e;console.error(e)}const le=[];let Te=-1;const ct=[];let qe=null,ot=0;const cr=Promise.resolve();let zt=null;function ji(e){const t=zt||cr;return e?t.then(this?e.bind(this):e):t}function Hi(e){let t=Te+1,s=le.length;for(;t<s;){const n=t+s>>>1,r=le[n],i=Ot(r);i<e||i===e&&r.flags&2?t=n+1:s=n}return t}function Ys(e){if(!(e.flags&1)){const t=Ot(e),s=le[le.length-1];!s||!(e.flags&2)&&t>=Ot(s)?le.push(e):le.splice(Hi(t),0,e),e.flags|=1,fr()}}function fr(){zt||(zt=cr.then(ar))}function Li(e){if(!P(e))qe&&e.id===-1?qe.splice(ot+1,0,e):e.flags&1||(ct.push(e),e.flags|=1);else for(let t=0;t<e.length;t++)ct.push(e[t]);fr()}function pn(e,t,s=Te+1){for(;s<le.length;s++){const n=le[s];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;le.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function ur(e){if(ct.length){const t=[...new Set(ct)].sort((s,n)=>Ot(s)-Ot(n));if(ct.length=0,qe){for(let s=0;s<t.length;s++)qe.push(t[s]);return}for(qe=t,ot=0;ot<qe.length;ot++){const s=qe[ot];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}qe=null,ot=0}}const Ot=e=>e.id==null?e.flags&2?-1:1/0:e.id;function ar(e){try{for(Te=0;Te<le.length;Te++){const t=le[Te];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Ft(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Te<le.length;Te++){const t=le[Te];t&&(t.flags&=-2)}Te=-1,le.length=0,ur(),zt=null,(le.length||ct.length)&&ar()}}let Me=null,dr=null;function Yt(e){const t=Me;return Me=e,dr=e&&e.type.__scopeId||null,t}function Ni(e,t=Me,s){if(!t||e._n)return e;const n=(...r)=>{n._d&&Tn(-1);const i=Yt(t),o=nt.length;let l;try{l=e(...r)}finally{for(let f=nt.length;f>o;f--)Lr();Yt(i),n._d&&Tn(1)}return l};return n._n=!0,n._c=!0,n._d=!0,n}function Xe(e,t,s,n){const r=e.dirs,i=t&&t.dirs;for(let o=0;o<r.length;o++){const l=r[o];i&&(l.oldValue=i[o].value);let f=l.dir[n];f&&(Ne(),me(f,s,8,[e.el,l,e,t]),$e())}}function $i(e,t){if(ce){let s=ce.provides;const n=ce.parent&&ce.parent.provides;n===s&&(s=ce.provides=Object.create(n)),s[e]=t}}function Wt(e,t,s=!1){const n=$o();if(n||ft){let r=ft?ft._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return s&&R(t)?t.call(n&&n.proxy):t}}const Ui=Symbol.for("v-scx"),Bi=()=>Wt(Ui);function xs(e,t,s){return hr(e,t,s)}function hr(e,t,s=W){const{immediate:n,deep:r,flush:i,once:o}=s,l=te({},s),f=t&&n||!t&&i!=="post";let d;if(Rt){if(i==="sync"){const C=Bi();d=C.__watcherHandles||(C.__watcherHandles=[])}else if(!f){const C=()=>{};return C.stop=Re,C.resume=Re,C.pause=Re,C}}const a=ce;l.call=(C,H,M)=>me(C,a,H,M);let p=!1;i==="post"?l.scheduler=C=>{fe(C,a&&a.suspense)}:i!=="sync"&&(p=!0,l.scheduler=(C,H)=>{H?C():Ys(C)}),l.augmentJob=C=>{t&&(C.flags|=4),p&&(C.flags|=2,a&&(C.id=a.uid,C.i=a))};const y=Fi(e,t,l);return Rt&&(d?d.push(y):f&&y()),y}function Ki(e,t,s){const n=this.proxy,r=G(e)?e.includes(".")?pr(n,e):()=>n[e]:e.bind(n,n);let i;R(t)?i=t:(i=t.handler,s=t);const o=Dt(this),l=hr(r,i.bind(n),s);return o(),l}function pr(e,t){const s=t.split(".");return()=>{let n=e;for(let r=0;r<s.length&&n;r++)n=n[s[r]];return n}}const Vi=Symbol("_vte"),fs=e=>e.__isTeleport,Ss=Symbol("_leaveCb");function Wi(e){let t=e[0];if(e.length>1){for(const s of e)if(s.type!==Be){t=s;break}}return t}function gr(e){if(!Zs(e))return fs(e.type)&&e.children?Wi(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:s}=e;if(s){if(t&16)return s[0];if(t&32&&R(s.default))return s.default()}}function Xs(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const s=e.component.subTree;Xs(fs(s.type)&&gr(s)||s,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function qi(e,t){return R(e)?te({name:e.name},t,{setup:e}):e}function _r(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function gn(e,t){let s;return!!((s=Object.getOwnPropertyDescriptor(e,t))&&!s.configurable)}const Xt=new WeakMap;function wt(e,t,s,n,r=!1){if(P(e)){e.forEach((M,J)=>wt(M,t&&(P(t)?t[J]:t),s,n,r));return}if(Ct(n)&&!r){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&wt(e,t,s,n.component.subTree);return}const i=n.shapeFlag&4?tn(n.component):n.el,o=r?null:i,{i:l,r:f}=e,d=t&&t.r,a=l.refs===W?l.refs={}:l.refs,p=l.setupState,y=D(p),C=p===W?Nn:M=>gn(a,M)?!1:j(y,M),H=(M,J)=>!(J&&gn(a,J));if(d!=null&&d!==f){if(_n(t),G(d))a[d]=null,C(d)&&(p[d]=null);else if(re(d)){const M=t;H(d,M.k)&&(d.value=null),M.k&&(a[M.k]=null)}}if(R(f))Ft(f,l,12,[o,a]);else{const M=G(f),J=re(f);if(M||J){const q=()=>{if(e.f){const F=M?C(f)?p[f]:a[f]:H()||!e.k?f.value:a[e.k];if(r)P(F)&&$s(F,i);else if(P(F))F.includes(i)||F.push(i);else if(M)a[f]=[i],C(f)&&(p[f]=a[f]);else{const L=[i];H(f,e.k)&&(f.value=L),e.k&&(a[e.k]=L)}}else M?(a[f]=o,C(f)&&(p[f]=o)):J&&(H(f,e.k)&&(f.value=o),e.k&&(a[e.k]=o))};if(o){const F=()=>{q(),Xt.delete(e)};F.id=-1,Xt.set(e,F),fe(F,s)}else _n(e),q()}}}function _n(e){const t=Xt.get(e);t&&(t.flags|=8,Xt.delete(e))}rs().requestIdleCallback;rs().cancelIdleCallback;const Ct=e=>!!e.type.__asyncLoader,Zs=e=>e.type.__isKeepAlive;function ki(e,t){mr(e,"a",t)}function Gi(e,t){mr(e,"da",t)}function mr(e,t,s=ce){const n=e.__wdc||(e.__wdc=()=>{let r=s;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(us(t,n,s),s){let r=s.parent;for(;r&&r.parent;)Zs(r.parent.vnode)&&Ji(n,t,s,r),r=r.parent}}function Ji(e,t,s,n){const r=us(t,e,n,!0);yr(()=>{$s(n[t],r)},s)}function us(e,t,s=ce,n=!1){if(s){const r=s[e]||(s[e]=[]),i=t.__weh||(t.__weh=(...o)=>{Ne();const l=Dt(s),f=me(t,s,e,o);return l(),$e(),f});return n?r.unshift(i):r.push(i),i}}const Ke=e=>(t,s=ce)=>{(!Rt||e==="sp")&&us(e,(...n)=>t(...n),s)},zi=Ke("bm"),br=Ke("m"),Yi=Ke("bu"),Xi=Ke("u"),Zi=Ke("bum"),yr=Ke("um"),Qi=Ke("sp"),eo=Ke("rtg"),to=Ke("rtc");function so(e,t=ce){us("ec",e,t)}const no=Symbol.for("v-ndc");function ro(e,t,s,n){let r;const i=s,o=P(e);if(o||G(e)){const l=o&&st(e);let f=!1,d=!1;l&&(f=!he(e),d=Ue(e),e=ls(e)),r=new Array(e.length);for(let a=0,p=e.length;a<p;a++)r[a]=t(f?d?ut(_e(e[a])):_e(e[a]):e[a],a,void 0,i)}else if(typeof e=="number"){r=new Array(e);for(let l=0;l<e;l++)r[l]=t(l+1,l,void 0,i)}else if($(e))if(e[Symbol.iterator])r=Array.from(e,(l,f)=>t(l,f,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let f=0,d=l.length;f<d;f++){const a=l[f];r[f]=t(e[a],a,f,i)}}else r=[];return r}const Fs=e=>e?Kr(e)?tn(e):Fs(e.parent):null,Tt=te(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Fs(e.parent),$root:e=>Fs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>xr(e),$forceUpdate:e=>e.f||(e.f=()=>{Ys(e.update)}),$nextTick:e=>e.n||(e.n=ji.bind(e.proxy)),$watch:e=>Ki.bind(e)}),ws=(e,t)=>e!==W&&!e.__isScriptSetup&&j(e,t),io={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:r,props:i,accessCache:o,type:l,appContext:f}=e;if(t[0]!=="$"){const y=o[t];if(y!==void 0)switch(y){case 1:return n[t];case 2:return r[t];case 4:return s[t];case 3:return i[t]}else{if(ws(n,t))return o[t]=1,n[t];if(r!==W&&j(r,t))return o[t]=2,r[t];if(j(i,t))return o[t]=3,i[t];if(s!==W&&j(s,t))return o[t]=4,s[t];Ds&&(o[t]=0)}}const d=Tt[t];let a,p;if(d)return t==="$attrs"&&ne(e.attrs,"get",""),d(e);if((a=l.__cssModules)&&(a=a[t]))return a;if(s!==W&&j(s,t))return o[t]=4,s[t];if(p=f.config.globalProperties,j(p,t))return p[t]},set({_:e},t,s){const{data:n,setupState:r,ctx:i}=e;return ws(r,t)?(r[t]=s,!0):n!==W&&j(n,t)?(n[t]=s,!0):j(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:r,props:i,type:o}},l){let f;return!!(s[l]||e!==W&&l[0]!=="$"&&j(e,l)||ws(t,l)||j(i,l)||j(n,l)||j(Tt,l)||j(r.config.globalProperties,l)||(f=o.__cssModules)&&f[l])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:j(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function mn(e){return P(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let Ds=!0;function oo(e){const t=xr(e),s=e.proxy,n=e.ctx;Ds=!1,t.beforeCreate&&bn(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:f,inject:d,created:a,beforeMount:p,mounted:y,beforeUpdate:C,updated:H,activated:M,deactivated:J,beforeDestroy:q,beforeUnmount:F,destroyed:L,unmounted:A,render:Y,renderTracked:be,renderTriggered:ye,errorCaptured:Ve,serverPrefetch:jt,expose:Je,inheritAttrs:dt,components:Ht,directives:Lt,filters:hs}=t;if(d&&lo(d,n,null),o)for(const k in o){const K=o[k];R(K)&&(n[k]=K.bind(s))}if(r){const k=r.call(s,s);$(k)&&(e.data=Gs(k))}if(Ds=!0,i)for(const k in i){const K=i[k],ze=R(K)?K.bind(s,s):R(K.get)?K.get.bind(s,s):Re,Nt=!R(K)&&R(K.set)?K.set.bind(s):Re,Ye=Wr({get:ze,set:Nt});Object.defineProperty(n,k,{enumerable:!0,configurable:!0,get:()=>Ye.value,set:ve=>Ye.value=ve})}if(l)for(const k in l)vr(l[k],n,s,k);if(f){const k=R(f)?f.call(s):f;Reflect.ownKeys(k).forEach(K=>{$i(K,k[K])})}a&&bn(a,e,"c");function ie(k,K){P(K)?K.forEach(ze=>k(ze.bind(s))):K&&k(K.bind(s))}if(ie(zi,p),ie(br,y),ie(Yi,C),ie(Xi,H),ie(ki,M),ie(Gi,J),ie(so,Ve),ie(to,be),ie(eo,ye),ie(Zi,F),ie(yr,A),ie(Qi,jt),P(Je))if(Je.length){const k=e.exposed||(e.exposed={});Je.forEach(K=>{Object.defineProperty(k,K,{get:()=>s[K],set:ze=>s[K]=ze,enumerable:!0})})}else e.exposed||(e.exposed={});Y&&e.render===Re&&(e.render=Y),dt!=null&&(e.inheritAttrs=dt),Ht&&(e.components=Ht),Lt&&(e.directives=Lt),jt&&_r(e)}function lo(e,t,s=Re){P(e)&&(e=js(e));for(const n in e){const r=e[n];let i;$(r)?"default"in r?i=Wt(r.from||n,r.default,!0):i=Wt(r.from||n):i=Wt(r),re(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[n]=i}}function bn(e,t,s){me(P(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function vr(e,t,s,n){let r=n.includes(".")?pr(s,n):()=>s[n];if(G(e)){const i=t[e];R(i)&&xs(r,i)}else if(R(e))xs(r,e.bind(s));else if($(e))if(P(e))e.forEach(i=>vr(i,t,s,n));else{const i=R(e.handler)?e.handler.bind(s):t[e.handler];R(i)&&xs(r,i,e)}}function xr(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let f;return l?f=l:!r.length&&!s&&!n?f=t:(f={},r.length&&r.forEach(d=>Zt(f,d,o,!0)),Zt(f,t,o)),$(t)&&i.set(t,f),f}function Zt(e,t,s,n=!1){const{mixins:r,extends:i}=t;i&&Zt(e,i,s,!0),r&&r.forEach(o=>Zt(e,o,s,!0));for(const o in t)if(!(n&&o==="expose")){const l=co[o]||s&&s[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const co={data:yn,props:vn,emits:vn,methods:bt,computed:bt,beforeCreate:oe,created:oe,beforeMount:oe,mounted:oe,beforeUpdate:oe,updated:oe,beforeDestroy:oe,beforeUnmount:oe,destroyed:oe,unmounted:oe,activated:oe,deactivated:oe,errorCaptured:oe,serverPrefetch:oe,components:bt,directives:bt,watch:uo,provide:yn,inject:fo};function yn(e,t){return t?e?function(){return te(R(e)?e.call(this,this):e,R(t)?t.call(this,this):t)}:t:e}function fo(e,t){return bt(js(e),js(t))}function js(e){if(P(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function oe(e,t){return e?[...new Set([].concat(e,t))]:t}function bt(e,t){return e?te(Object.create(null),e,t):t}function vn(e,t){return e?P(e)&&P(t)?[...new Set([...e,...t])]:te(Object.create(null),mn(e),mn(t??{})):t}function uo(e,t){if(!e)return t;if(!t)return e;const s=te(Object.create(null),e);for(const n in t)s[n]=oe(e[n],t[n]);return s}function Sr(){return{app:null,config:{isNativeTag:Nn,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let ao=0;function ho(e,t){return function(n,r=null){R(n)||(n=te({},n)),r!=null&&!$(r)&&(r=null);const i=Sr(),o=new WeakSet,l=[];let f=!1;const d=i.app={_uid:ao++,_component:n,_props:r,_container:null,_context:i,_instance:null,version:qo,get config(){return i.config},set config(a){},use(a,...p){return o.has(a)||(a&&R(a.install)?(o.add(a),a.install(d,...p)):R(a)&&(o.add(a),a(d,...p))),d},mixin(a){return i.mixins.includes(a)||i.mixins.push(a),d},component(a,p){return p?(i.components[a]=p,d):i.components[a]},directive(a,p){return p?(i.directives[a]=p,d):i.directives[a]},mount(a,p,y){if(!f){const C=d._ceVNode||Le(n,r);return C.appContext=i,y===!0?y="svg":y===!1&&(y=void 0),e(C,a,y),f=!0,d._container=a,a.__vue_app__=d,tn(C.component)}},onUnmount(a){l.push(a)},unmount(){f&&(me(l,d._instance,16),e(null,d._container),delete d._container.__vue_app__)},provide(a,p){return i.provides[a]=p,d},runWithContext(a){const p=ft;ft=d;try{return a()}finally{ft=p}}};return d}}let ft=null;const po=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${pe(t)}Modifiers`]||e[`${rt(t)}Modifiers`];function go(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||W;let r=s;const i=t.startsWith("update:"),o=i&&po(n,t.slice(7));o&&(o.trim&&(r=s.map(a=>G(a)?a.trim():a)),o.number&&(r=r.map(Zr)));let l,f=n[l=gs(t)]||n[l=gs(pe(t))];!f&&i&&(f=n[l=gs(rt(t))]),f&&me(f,e,6,r);const d=n[l+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,me(d,e,6,r)}}const _o=new WeakMap;function wr(e,t,s=!1){const n=s?_o:t.emitsCache,r=n.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!R(e)){const f=d=>{const a=wr(d,t,!0);a&&(l=!0,te(o,a))};!s&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}return!i&&!l?($(e)&&n.set(e,null),null):(P(i)?i.forEach(f=>o[f]=null):te(o,i),$(e)&&n.set(e,o),o)}function as(e,t){return!e||!ts(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),j(e,t[0].toLowerCase()+t.slice(1))||j(e,rt(t))||j(e,t))}function xn(e){const{type:t,vnode:s,proxy:n,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:f,render:d,renderCache:a,props:p,data:y,setupState:C,ctx:H,inheritAttrs:M}=e,J=Yt(e);let q,F;try{if(s.shapeFlag&4){const A=r||n,Y=A;q=Oe(d.call(Y,A,a,p,C,y,H)),F=l}else{const A=t;q=Oe(A.length>1?A(p,{attrs:l,slots:o,emit:f}):A(p,null)),F=t.props?l:mo(l)}}catch(A){nt.length=0,cs(A,e,1),q=Le(Be)}let L=q;if(F&&M!==!1){const A=Object.keys(F),{shapeFlag:Y}=L;A.length&&Y&7&&(i&&A.some(ss)&&(F=bo(F,i)),L=at(L,F,!1,!0))}if(s.dirs&&(L=at(L,null,!1,!0),L.dirs=L.dirs?L.dirs.concat(s.dirs):s.dirs),s.transition){const A=fs(L.type)&&gr(L)||L;Xs(A,s.transition)}return q=L,Yt(J),q}const mo=e=>{let t;for(const s in e)(s==="class"||s==="style"||ts(s))&&((t||(t={}))[s]=e[s]);return t},bo=(e,t)=>{const s={};for(const n in e)(!ss(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function yo(e,t,s){const{props:n,children:r,component:i}=e,{props:o,children:l,patchFlag:f}=t,d=i.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&f>=0){if(f&1024)return!0;if(f&16)return n?Sn(n,o,d):!!o;if(f&8){const a=t.dynamicProps;for(let p=0;p<a.length;p++){const y=a[p];if(Cr(o,n,y)&&!as(d,y))return!0}}}else return(r||l)&&(!l||!l.$stable)?!0:n===o?!1:n?o?Sn(n,o,d):!0:!!o;return!1}function Sn(e,t,s){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let r=0;r<n.length;r++){const i=n[r];if(Cr(t,e,i)&&!as(s,i))return!0}return!1}function Cr(e,t,s){const n=e[s],r=t[s];return s==="style"&&$(n)&&$(r)?!os(n,r):n!==r}function vo({vnode:e,parent:t,suspense:s},n){for(;t;){const r=t.subTree;if(r.suspense&&r.suspense.activeBranch===e&&(r.suspense.vnode.el=r.el=n,e=r),r===e)(e=t.vnode).el=n,t=t.parent;else break}s&&s.activeBranch===e&&(s.vnode.el=n)}const Tr={},Er=()=>Object.create(Tr),Ar=e=>Object.getPrototypeOf(e)===Tr;function xo(e,t,s,n=!1){const r={},i=Er();e.propsDefaults=Object.create(null),Or(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);s?e.props=n?r:Ti(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function So(e,t,s,n){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=D(r),[f]=e.propsOptions;let d=!1;if((n||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let p=0;p<a.length;p++){let y=a[p];if(as(e.emitsOptions,y))continue;const C=t[y];if(f)if(j(i,y))C!==i[y]&&(i[y]=C,d=!0);else{const H=pe(y);r[H]=Hs(f,l,H,C,e,!1)}else C!==i[y]&&(i[y]=C,d=!0)}}}else{Or(e,t,r,i)&&(d=!0);let a;for(const p in l)(!t||!j(t,p)&&((a=rt(p))===p||!j(t,a)))&&(f?s&&(s[p]!==void 0||s[a]!==void 0)&&(r[p]=Hs(f,l,p,void 0,e,!0)):delete r[p]);if(i!==l)for(const p in i)(!t||!j(t,p))&&(delete i[p],d=!0)}d&&He(e.attrs,"set","")}function Or(e,t,s,n){const[r,i]=e.propsOptions;let o=!1,l;if(t)for(let f in t){if(vt(f))continue;const d=t[f];let a;r&&j(r,a=pe(f))?!i||!i.includes(a)?s[a]=d:(l||(l={}))[a]=d:as(e.emitsOptions,f)||(!(f in n)||d!==n[f])&&(n[f]=d,o=!0)}if(i){const f=D(s),d=l||W;for(let a=0;a<i.length;a++){const p=i[a];s[p]=Hs(r,f,p,d[p],e,!j(d,p))}}return o}function Hs(e,t,s,n,r,i){const o=e[s];if(o!=null){const l=j(o,"default");if(l&&n===void 0){const f=o.default;if(o.type!==Function&&!o.skipFactory&&R(f)){const{propsDefaults:d}=r;if(s in d)n=d[s];else{const a=Dt(r);n=d[s]=f.call(null,t),a()}}else n=f;r.ce&&r.ce._setProp(s,n)}o[0]&&(i&&!l?n=!1:o[1]&&(n===""||n===rt(s))&&(n=!0))}return n}const wo=new WeakMap;function Pr(e,t,s=!1){const n=s?wo:t.propsCache,r=n.get(e);if(r)return r;const i=e.props,o={},l=[];let f=!1;if(!R(e)){const a=p=>{f=!0;const[y,C]=Pr(p,t,!0);te(o,y),C&&l.push(...C)};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!f)return $(e)&&n.set(e,lt),lt;if(P(i))for(let a=0;a<i.length;a++){const p=pe(i[a]);wn(p)&&(o[p]=W)}else if(i)for(const a in i){const p=pe(a);if(wn(p)){const y=i[a],C=o[p]=P(y)||R(y)?{type:y}:te({},y),H=C.type;let M=!1,J=!0;if(P(H))for(let q=0;q<H.length;++q){const F=H[q],L=R(F)&&F.name;if(L==="Boolean"){M=!0;break}else L==="String"&&(J=!1)}else M=R(H)&&H.name==="Boolean";C[0]=M,C[1]=J,(M||j(C,"default"))&&l.push(p)}}const d=[o,l];return $(e)&&n.set(e,d),d}function wn(e){return e[0]!=="$"&&!vt(e)}const Qs=e=>e==="_"||e==="_ctx"||e==="$stable",en=e=>P(e)?e.map(Oe):[Oe(e)],Co=(e,t,s)=>{if(t._n)return t;const n=Ni((...r)=>en(t(...r)),s);return n._c=!1,n},Mr=(e,t,s)=>{const n=e._ctx;for(const r in e){if(Qs(r))continue;const i=e[r];if(R(i))t[r]=Co(r,i,n);else if(i!=null){const o=en(i);t[r]=()=>o}}},Rr=(e,t)=>{const s=en(t);e.slots.default=()=>s},Ir=(e,t,s)=>{for(const n in t)(s||!Qs(n))&&(e[n]=t[n])},To=(e,t,s)=>{const n=e.slots=Er();if(e.vnode.shapeFlag&32){const r=t._;r?(Ir(n,t,s),s&&Vn(n,"_",r,!0)):Mr(t,n)}else t&&Rr(e,t)},Eo=(e,t,s)=>{const{vnode:n,slots:r}=e;let i=!0,o=W;if(n.shapeFlag&32){const l=t._;l?s&&l===1?i=!1:Ir(r,t,s):(i=!t.$stable,Mr(t,r)),o=t}else t&&(Rr(e,t),o={default:1});if(i)for(const l in r)!Qs(l)&&o[l]==null&&delete r[l]},fe=Ro;function Ao(e){return Oo(e)}function Oo(e,t){const s=rs();s.__VUE__=!0;const{insert:n,remove:r,patchProp:i,createElement:o,createText:l,createComment:f,setText:d,setElementText:a,parentNode:p,nextSibling:y,setScopeId:C=Re,insertStaticContent:H}=e,M=(c,u,h,b=null,m=null,g=null,S=void 0,x=null,v=!!u.dynamicChildren)=>{if(c===u)return;c&&!mt(c,u)&&(b=$t(c),ve(c,m,g,!0),c=null),u.patchFlag===-2&&(v=!1,u.dynamicChildren=null);const{type:_,ref:E,shapeFlag:w}=u;switch(_){case ds:J(c,u,h,b);break;case Be:q(c,u,h,b);break;case Ts:c==null&&F(u,h,b,S);break;case Ae:Ht(c,u,h,b,m,g,S,x,v);break;default:w&1?Y(c,u,h,b,m,g,S,x,v):w&6?Lt(c,u,h,b,m,g,S,x,v):(w&64||w&128)&&_.process(c,u,h,b,m,g,S,x,v,pt)}E!=null&&m?wt(E,c&&c.ref,g,u||c,!u):E==null&&c&&c.ref!=null&&wt(c.ref,null,g,c,!0)},J=(c,u,h,b)=>{if(c==null)n(u.el=l(u.children),h,b);else{const m=u.el=c.el;u.children!==c.children&&d(m,u.children)}},q=(c,u,h,b)=>{c==null?n(u.el=f(u.children||""),h,b):u.el=c.el},F=(c,u,h,b)=>{[c.el,c.anchor]=H(c.children,u,h,b,c.el,c.anchor)},L=({el:c,anchor:u},h,b)=>{let m;for(;c&&c!==u;)m=y(c),n(c,h,b),c=m;n(u,h,b)},A=({el:c,anchor:u})=>{let h;for(;c&&c!==u;)h=y(c),r(c),c=h;r(u)},Y=(c,u,h,b,m,g,S,x,v)=>{if(u.type==="svg"?S="svg":u.type==="math"&&(S="mathml"),c==null)be(u,h,b,m,g,S,x,v);else{const _=c.el&&c.el._isVueCE?c.el:null;try{_&&_._beginPatch(),jt(c,u,m,g,S,x,v)}finally{_&&_._endPatch()}}},be=(c,u,h,b,m,g,S,x)=>{let v,_;const{props:E,shapeFlag:w,transition:T,dirs:O}=c;if(v=c.el=o(c.type,g,E&&E.is,E),w&8?a(v,c.children):w&16&&Ve(c.children,v,null,b,m,Cs(c,g),S,x),O&&Xe(c,null,b,"created"),ye(v,c,c.scopeId,S,b),E){for(const U in E)U!=="value"&&!vt(U)&&i(v,U,null,E[U],g,b);"value"in E&&i(v,"value",null,E.value,g),(_=E.onVnodeBeforeMount)&&Ce(_,b,c)}O&&Xe(c,null,b,"beforeMount");const I=Po(m,T);I&&T.beforeEnter(v),n(v,u,h),((_=E&&E.onVnodeMounted)||I||O)&&fe(()=>{try{_&&Ce(_,b,c),I&&T.enter(v),O&&Xe(c,null,b,"mounted")}finally{}},m)},ye=(c,u,h,b,m)=>{if(h&&C(c,h),b)for(let g=0;g<b.length;g++)C(c,b[g]);if(m){let g=m.subTree;if(u===g||Hr(g.type)&&(g.ssContent===u||g.ssFallback===u)){const S=m.vnode;ye(c,S,S.scopeId,S.slotScopeIds,m.parent)}}},Ve=(c,u,h,b,m,g,S,x,v=0)=>{for(let _=v;_<c.length;_++){const E=c[_]=x?je(c[_]):Oe(c[_]);M(null,E,u,h,b,m,g,S,x)}},jt=(c,u,h,b,m,g,S)=>{const x=u.el=c.el;let{patchFlag:v,dynamicChildren:_,dirs:E}=u;v|=c.patchFlag&16;const w=c.props||W,T=u.props||W;let O;if(h&&Ze(h,!1),(O=T.onVnodeBeforeUpdate)&&Ce(O,h,u,c),E&&Xe(u,c,h,"beforeUpdate"),h&&Ze(h,!0),_&&(!c.dynamicChildren||c.dynamicChildren.length!==_.length)&&(v=0,S=!1,_=null),(w.innerHTML&&T.innerHTML==null||w.textContent&&T.textContent==null)&&a(x,""),_?Je(c.dynamicChildren,_,x,h,b,Cs(u,m),g):S||K(c,u,x,null,h,b,Cs(u,m),g,!1),v>0){if(v&16)dt(x,w,T,h,m);else if(v&2&&w.class!==T.class&&i(x,"class",null,T.class,m),v&4&&i(x,"style",w.style,T.style,m),v&8){const I=u.dynamicProps;for(let U=0;U<I.length;U++){const N=I[U],z=w[N],X=T[N];(X!==z||N==="value")&&i(x,N,z,X,m,h)}}v&1&&c.children!==u.children&&a(x,u.children)}else!S&&_==null&&dt(x,w,T,h,m);((O=T.onVnodeUpdated)||E)&&fe(()=>{O&&Ce(O,h,u,c),E&&Xe(u,c,h,"updated")},b)},Je=(c,u,h,b,m,g,S)=>{for(let x=0;x<u.length;x++){const v=c[x],_=u[x],E=v.el&&(v.type===Ae||!mt(v,_)||v.shapeFlag&198)?p(v.el):h;M(v,_,E,null,b,m,g,S,!0)}},dt=(c,u,h,b,m)=>{if(u!==h){if(u!==W)for(const g in u)!vt(g)&&!(g in h)&&i(c,g,u[g],null,m,b);for(const g in h){if(vt(g))continue;const S=h[g],x=u[g];S!==x&&g!=="value"&&i(c,g,x,S,m,b)}"value"in h&&i(c,"value",u.value,h.value,m)}},Ht=(c,u,h,b,m,g,S,x,v)=>{const _=u.el=c?c.el:l(""),E=u.anchor=c?c.anchor:l("");let{patchFlag:w,dynamicChildren:T,slotScopeIds:O}=u;O&&(x=x?x.concat(O):O),c==null?(n(_,h,b),n(E,h,b),Ve(u.children||[],h,E,m,g,S,x,v)):w>0&&w&64&&T&&c.dynamicChildren&&c.dynamicChildren.length===T.length?(Je(c.dynamicChildren,T,h,m,g,S,x),(u.key!=null||m&&u===m.subTree)&&Fr(c,u,!0)):K(c,u,h,E,m,g,S,x,v)},Lt=(c,u,h,b,m,g,S,x,v)=>{u.slotScopeIds=x,c==null?u.shapeFlag&512?m.ctx.activate(u,h,b,S,v):hs(u,h,b,m,g,S,v):sn(c,u,v)},hs=(c,u,h,b,m,g,S)=>{const x=c.component=No(c,b,m);if(Zs(c)&&(x.ctx.renderer=pt),Uo(x,!1,S),x.asyncDep){if(m&&m.registerDep(x,ie,S),!c.el){const v=x.subTree=Le(Be);q(null,v,u,h),c.placeholder=v.el}}else ie(x,c,u,h,m,g,S)},sn=(c,u,h)=>{const b=u.component=c.component;if(yo(c,u,h))if(b.asyncDep&&!b.asyncResolved){k(b,u,h);return}else b.next=u,b.update();else u.el=c.el,b.vnode=u},ie=(c,u,h,b,m,g,S)=>{const x=()=>{if(c.isMounted){let{next:w,bu:T,u:O,parent:I,vnode:U}=c;{const Se=Dr(c);if(Se){w&&(w.el=U.el,k(c,w,S)),Se.asyncDep.then(()=>{fe(()=>{c.isUnmounted||_()},m)});return}}let N=w,z;Ze(c,!1),w?(w.el=U.el,k(c,w,S)):w=U,T&&_s(T),(z=w.props&&w.props.onVnodeBeforeUpdate)&&Ce(z,I,w,U),Ze(c,!0);const X=xn(c),xe=c.subTree;c.subTree=X,M(xe,X,p(xe.el),$t(xe),c,m,g),w.el=X.el,N===null&&vo(c,X.el),O&&fe(O,m),(z=w.props&&w.props.onVnodeUpdated)&&fe(()=>Ce(z,I,w,U),m)}else{let w;const{el:T,props:O}=u,{bm:I,m:U,parent:N,root:z,type:X}=c,xe=Ct(u);Ze(c,!1),I&&_s(I),!xe&&(w=O&&O.onVnodeBeforeMount)&&Ce(w,N,u),Ze(c,!0);{z.ce&&z.ce._hasShadowRoot()&&z.ce._injectChildStyle(X,c.parent?c.parent.type:void 0);const Se=c.subTree=xn(c);M(null,Se,h,b,c,m,g),u.el=Se.el}if(U&&fe(U,m),!xe&&(w=O&&O.onVnodeMounted)){const Se=u;fe(()=>Ce(w,N,Se),m)}(u.shapeFlag&256||N&&Ct(N.vnode)&&N.vnode.shapeFlag&256)&&c.a&&fe(c.a,m),c.isMounted=!0,u=h=b=null}};c.scope.on();const v=c.effect=new Gn(x);c.scope.off();const _=c.update=v.run.bind(v),E=c.job=v.runIfDirty.bind(v);E.i=c,E.id=c.uid,v.scheduler=()=>Ys(E),Ze(c,!0),_()},k=(c,u,h)=>{u.component=c;const b=c.vnode.props;c.vnode=u,c.next=null,So(c,u.props,b,h),Eo(c,u.children,h),Ne(),pn(c),$e()},K=(c,u,h,b,m,g,S,x,v=!1)=>{const _=c&&c.children,E=c?c.shapeFlag:0,w=u.children,{patchFlag:T,shapeFlag:O}=u;if(T>0){if(T&128){Nt(_,w,h,b,m,g,S,x,v);return}else if(T&256){ze(_,w,h,b,m,g,S,x,v);return}}O&8?(E&16&&ht(_,m,g),w!==_&&a(h,w)):E&16?O&16?Nt(_,w,h,b,m,g,S,x,v):ht(_,m,g,!0):(E&8&&a(h,""),O&16&&Ve(w,h,b,m,g,S,x,v))},ze=(c,u,h,b,m,g,S,x,v)=>{c=c||lt,u=u||lt;const _=c.length,E=u.length,w=Math.min(_,E);let T;for(T=0;T<w;T++){const O=u[T]=v?je(u[T]):Oe(u[T]);M(c[T],O,h,null,m,g,S,x,v)}_>E?ht(c,m,g,!0,!1,w):Ve(u,h,b,m,g,S,x,v,w)},Nt=(c,u,h,b,m,g,S,x,v)=>{let _=0;const E=u.length;let w=c.length-1,T=E-1;for(;_<=w&&_<=T;){const O=c[_],I=u[_]=v?je(u[_]):Oe(u[_]);if(mt(O,I))M(O,I,h,null,m,g,S,x,v);else break;_++}for(;_<=w&&_<=T;){const O=c[w],I=u[T]=v?je(u[T]):Oe(u[T]);if(mt(O,I))M(O,I,h,null,m,g,S,x,v);else break;w--,T--}if(_>w){if(_<=T){const O=T+1,I=O<E?u[O].el:b;for(;_<=T;)M(null,u[_]=v?je(u[_]):Oe(u[_]),h,I,m,g,S,x,v),_++}}else if(_>T)for(;_<=w;)ve(c[_],m,g,!0),_++;else{const O=_,I=_,U=new Map;for(_=I;_<=T;_++){const ue=u[_]=v?je(u[_]):Oe(u[_]);ue.key!=null&&U.set(ue.key,_)}let N,z=0;const X=T-I+1;let xe=!1,Se=0;const gt=new Array(X);for(_=0;_<X;_++)gt[_]=0;for(_=O;_<=w;_++){const ue=c[_];if(z>=X){ve(ue,m,g,!0);continue}let we;if(ue.key!=null)we=U.get(ue.key);else for(N=I;N<=T;N++)if(gt[N-I]===0&&mt(ue,u[N])){we=N;break}we===void 0?ve(ue,m,g,!0):(gt[we-I]=_+1,we>=Se?Se=we:xe=!0,M(ue,u[we],h,null,m,g,S,x,v),z++)}const on=xe?Mo(gt):lt;for(N=on.length-1,_=X-1;_>=0;_--){const ue=I+_,we=u[ue],ln=u[ue+1],cn=ue+1<E?ln.el||jr(ln):b;gt[_]===0?M(null,we,h,cn,m,g,S,x,v):xe&&(N<0||_!==on[N]?Ye(we,h,cn,2):N--)}}},Ye=(c,u,h,b,m=null)=>{const{el:g,type:S,transition:x,children:v,shapeFlag:_}=c;if(_&6){Ye(c.component.subTree,u,h,b);return}if(_&128){c.suspense.move(u,h,b);return}if(_&64){S.move(c,u,h,pt);return}if(S===Ae){n(g,u,h);for(let w=0;w<v.length;w++)Ye(v[w],u,h,b);n(c.anchor,u,h);return}if(S===Ts){L(c,u,h);return}if(b!==2&&_&1&&x)if(b===0)x.persisted&&!g[Ss]?n(g,u,h):(x.beforeEnter(g),n(g,u,h),fe(()=>x.enter(g),m));else{const{leave:w,delayLeave:T,afterLeave:O}=x,I=()=>{c.ctx.isUnmounted?r(g):n(g,u,h)},U=()=>{const N=g._isLeaving||!!g[Ss];g._isLeaving&&g[Ss](!0),x.persisted&&!N?I():w(g,()=>{I(),O&&O()})};T?T(g,I,U):U()}else n(g,u,h)},ve=(c,u,h,b=!1,m=!1)=>{const{type:g,props:S,ref:x,children:v,dynamicChildren:_,shapeFlag:E,patchFlag:w,dirs:T,cacheIndex:O,memo:I}=c;if(w===-2&&(m=!1),x!=null&&(Ne(),wt(x,null,h,c,!0),$e()),O!=null&&(u.renderCache[O]=void 0),E&256){u.ctx.deactivate(c);return}const U=E&1&&T,N=!Ct(c);let z;if(N&&(z=S&&S.onVnodeBeforeUnmount)&&Ce(z,u,c),E&6)Gr(c.component,h,b);else{if(E&128){c.suspense.unmount(h,b);return}U&&Xe(c,null,u,"beforeUnmount"),E&64?c.type.remove(c,u,h,pt,b):_&&!_.hasOnce&&(g!==Ae||w>0&&w&64)?ht(_,u,h,!1,!0):(g===Ae&&w&384||!m&&E&16)&&ht(v,u,h),b&&nn(c)}const X=I!=null&&O==null;(N&&(z=S&&S.onVnodeUnmounted)||U||X)&&fe(()=>{z&&Ce(z,u,c),U&&Xe(c,null,u,"unmounted"),X&&(c.el=null)},h)},nn=c=>{const{type:u,el:h,anchor:b,transition:m}=c;if(u===Ae){kr(h,b);return}if(u===Ts){A(c);return}const g=()=>{r(h),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(c.shapeFlag&1&&m&&!m.persisted){const{leave:S,delayLeave:x}=m,v=()=>S(h,g);x?x(c.el,g,v):v()}else g()},kr=(c,u)=>{let h;for(;c!==u;)h=y(c),r(c),c=h;r(u)},Gr=(c,u,h)=>{const{bum:b,scope:m,job:g,subTree:S,um:x,m:v,a:_}=c;Cn(v),Cn(_),b&&_s(b),m.stop(),g&&(g.flags|=8,ve(S,c,u,h)),x&&fe(x,u),fe(()=>{c.isUnmounted=!0},u)},ht=(c,u,h,b=!1,m=!1,g=0)=>{for(let S=g;S<c.length;S++)ve(c[S],u,h,b,m)},$t=c=>{if(c.shapeFlag&6)return $t(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const u=y(c.anchor||c.el),h=u&&u[Vi];return h?y(h):u};let ps=!1;const rn=(c,u,h)=>{let b;c==null?u._vnode&&(ve(u._vnode,null,null,!0),b=u._vnode.component):M(u._vnode||null,c,u,null,null,null,h),u._vnode=c,ps||(ps=!0,pn(b),ur(),ps=!1)},pt={p:M,um:ve,m:Ye,r:nn,mt:hs,mc:Ve,pc:K,pbc:Je,n:$t,o:e};return{render:rn,hydrate:void 0,createApp:ho(rn)}}function Cs({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function Ze({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Po(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Fr(e,t,s=!1){const n=e.children,r=t.children;if(P(n)&&P(r))for(let i=0;i<n.length;i++){const o=n[i];let l=r[i];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=r[i]=je(r[i]),l.el=o.el),!s&&l.patchFlag!==-2&&Fr(o,l)),l.type===ds&&(l.patchFlag===-1&&(l=r[i]=je(l)),l.el=o.el),l.type===Be&&!l.el&&(l.el=o.el)}}function Mo(e){const t=e.slice(),s=[0];let n,r,i,o,l;const f=e.length;for(n=0;n<f;n++){const d=e[n];if(d!==0){if(r=s[s.length-1],e[r]<d){t[n]=r,s.push(n);continue}for(i=0,o=s.length-1;i<o;)l=i+o>>1,e[s[l]]<d?i=l+1:o=l;d<e[s[i]]&&(i>0&&(t[n]=s[i-1]),s[i]=n)}}for(i=s.length,o=s[i-1];i-- >0;)s[i]=o,o=t[o];return s}function Dr(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Dr(t)}function Cn(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function jr(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?jr(t.subTree):null}const Hr=e=>e.__isSuspense;function Ro(e,t){t&&t.pendingBranch?P(e)?t.effects.push(...e):t.effects.push(e):Li(e)}const Ae=Symbol.for("v-fgt"),ds=Symbol.for("v-txt"),Be=Symbol.for("v-cmt"),Ts=Symbol.for("v-stc"),nt=[];let ae=null;function Z(e=!1){nt.push(ae=e?null:[])}function Lr(){nt.pop(),ae=nt[nt.length-1]||null}let Pt=1;function Tn(e,t=!1){Pt+=e,e<0&&ae&&t&&(ae.hasOnce=!0)}function Nr(e){return e.dynamicChildren=Pt>0?ae||lt:null,Lr(),Pt>0&&ae&&ae.push(e),e}function se(e,t,s,n,r,i){return Nr(Q(e,t,s,n,r,i,!0))}function Io(e,t,s,n,r){return Nr(Le(e,t,s,n,r,!0))}function $r(e){return e?e.__v_isVNode===!0:!1}function mt(e,t){return e.type===t.type&&e.key===t.key}const Ur=({key:e})=>e??null,qt=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?G(e)||re(e)||R(e)?{i:Me,r:e,k:t,f:!!s}:e:null);function Q(e,t=null,s=null,n=0,r=null,i=e===Ae?0:1,o=!1,l=!1){const f={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ur(t),ref:t&&qt(t),scopeId:dr,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Me};return l?(Qt(f,s),i&128&&e.normalize(f)):s&&(f.shapeFlag|=G(s)?8:16),Pt>0&&!o&&ae&&(f.patchFlag>0||i&6)&&f.patchFlag!==32&&ae.push(f),f}const Le=Fo;function Fo(e,t=null,s=null,n=0,r=null,i=!1){if((!e||e===no)&&(e=Be),$r(e)){const l=at(e,t,!0);return s&&Qt(l,s),Pt>0&&!i&&ae&&(l.shapeFlag&6?ae[ae.indexOf(e)]=l:ae.push(l)),l.patchFlag=-2,l}if(Wo(e)&&(e=e.__vccOpts),t){t=Do(t);let{class:l,style:f}=t;l&&!G(l)&&(t.class=is(l)),$(f)&&(zs(f)&&!P(f)&&(f=te({},f)),t.style=Bs(f))}const o=G(e)?1:Hr(e)?128:fs(e)?64:$(e)?4:R(e)?2:0;return Q(e,t,s,n,r,o,i,!0)}function Do(e){return e?zs(e)||Ar(e)?te({},e):e:null}function at(e,t,s=!1,n=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:f}=e,d=t?jo(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&Ur(d),ref:t&&t.ref?s&&i?P(i)?i.concat(qt(t)):[i,qt(t)]:qt(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ae?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:f,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&at(e.ssContent),ssFallback:e.ssFallback&&at(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return f&&n&&Xs(a,f.clone(a)),a}function Br(e=" ",t=0){return Le(ds,null,e,t)}function Qe(e="",t=!1){return t?(Z(),Io(Be,null,e)):Le(Be,null,e)}function Oe(e){return e==null||typeof e=="boolean"?Le(Be):P(e)?Le(Ae,null,e.slice()):$r(e)?je(e):Le(ds,null,String(e))}function je(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:at(e)}function Qt(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(P(t))s=16;else if(typeof t=="object")if(n&65){const r=t.default;r&&(r._c&&(r._d=!1),Qt(e,r()),r._c&&(r._d=!0));return}else{s=32;const r=t._;!r&&!Ar(t)?t._ctx=Me:r===3&&Me&&(Me.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(R(t)){if(n&65){Qt(e,{default:t});return}t={default:t,_ctx:Me},s=32}else t=String(t),n&64?(s=16,t=[Br(t)]):s=8;e.children=t,e.shapeFlag|=s}function jo(...e){const t={};for(let s=0;s<e.length;s++){const n=e[s];for(const r in n)if(r==="class")t.class!==n.class&&(t.class=is([t.class,n.class]));else if(r==="style")t.style=Bs([t.style,n.style]);else if(ts(r)){const i=t[r],o=n[r];o&&i!==o&&!(P(i)&&i.includes(o))?t[r]=i?[].concat(i,o):o:o==null&&i==null&&!ss(r)&&(t[r]=o)}else r!==""&&(t[r]=n[r])}return t}function Ce(e,t,s,n=null){me(e,t,7,[s,n])}const Ho=Sr();let Lo=0;function No(e,t,s){const n=e.type,r=(t?t.appContext:e.appContext)||Ho,i={uid:Lo++,vnode:e,type:n,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new oi(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Pr(n,r),emitsOptions:wr(n,r),emit:null,emitted:null,propsDefaults:W,inheritAttrs:n.inheritAttrs,ctx:W,data:W,props:W,attrs:W,slots:W,refs:W,setupState:W,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=go.bind(null,i),e.ce&&e.ce(i),i}let ce=null;const $o=()=>ce||Me;let es,Mt;{const e=rs(),t=(s,n)=>{let r;return(r=e[s])||(r=e[s]=[]),r.push(n),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};es=t("__VUE_INSTANCE_SETTERS__",s=>ce=s),Mt=t("__VUE_SSR_SETTERS__",s=>Rt=s)}const Dt=e=>{const t=ce;return es(e),e.scope.on(),()=>{e.scope.off(),es(t)}},En=()=>{ce&&ce.scope.off(),es(null)};function Kr(e){return e.vnode.shapeFlag&4}let Rt=!1;function Uo(e,t=!1,s=!1){t&&Mt(t);const{props:n,children:r}=e.vnode,i=Kr(e);xo(e,n,i,t),To(e,r,s||t);const o=i?Bo(e,t):void 0;return t&&Mt(!1),o}function Bo(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,io);const{setup:n}=s;if(n){Ne();const r=e.setupContext=n.length>1?Vo(e):null,i=Dt(e),o=Ft(n,e,0,[e.props,r]),l=$n(o);if($e(),i(),(l||e.sp)&&!Ct(e)&&_r(e),l){if(o.then(En,En),t)return o.then(f=>{Mt(!0);try{An(e,f,t)}finally{Mt(!1)}}).catch(f=>{cs(f,e,0)});e.asyncDep=o}else An(e,o)}else Vr(e)}function An(e,t,s){R(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:$(t)&&(e.setupState=lr(t)),Vr(e)}function Vr(e,t,s){const n=e.type;e.render||(e.render=n.render||Re);{const r=Dt(e);Ne();try{oo(e)}finally{$e(),r()}}}const Ko={get(e,t){return ne(e,"get",""),e[t]}};function Vo(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,Ko),slots:e.slots,emit:e.emit,expose:t}}function tn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(lr(Ei(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in Tt)return Tt[s](e)},has(t,s){return s in t||s in Tt}})):e.proxy}function Wo(e){return R(e)&&"__vccOpts"in e}const Wr=(e,t)=>Ri(e,t,Rt),qo="3.5.42";/**\n* @vue/runtime-dom v3.5.42\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/let Ls;const On=typeof window<"u"&&window.trustedTypes;if(On)try{Ls=On.createPolicy("vue",{createHTML:e=>e})}catch{}const qr=Ls?e=>Ls.createHTML(e):e=>e,ko="http://www.w3.org/2000/svg",Go="http://www.w3.org/1998/Math/MathML",De=typeof document<"u"?document:null,Pn=De&&De.createElement("template"),Jo={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const r=t==="svg"?De.createElementNS(ko,e):t==="mathml"?De.createElementNS(Go,e):s?De.createElement(e,{is:s}):De.createElement(e);return e==="select"&&n&&n.multiple!=null&&r.setAttribute("multiple",n.multiple),r},createText:e=>De.createTextNode(e),createComment:e=>De.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>De.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,r,i){const o=s?s.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),s),!(r===i||!(r=r.nextSibling)););else{Pn.innerHTML=qr(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const l=Pn.content;if(n==="svg"||n==="mathml"){const f=l.firstChild;for(;f.firstChild;)l.appendChild(f.firstChild);l.removeChild(f)}t.insertBefore(l,s)}return[o?o.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},zo=Symbol("_vtc");function Yo(e,t,s){const n=e[zo];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Mn=Symbol("_vod"),Xo=Symbol("_vsh"),Zo=Symbol(""),Qo=/(?:^|;)\\s*display\\s*:/;function el(e,t,s){const n=e.style,r=G(s);let i=!1;if(s&&!r){if(t)if(G(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();s[l]==null&&yt(n,l,"")}else for(const o in t)s[o]==null&&yt(n,o,"");for(const o in s){o==="display"&&(i=!0);const l=s[o];l!=null?sl(e,o,!G(t)&&t?t[o]:void 0,l)||yt(n,o,l):yt(n,o,"")}}else if(r){if(t!==s){const o=n[Zo];o&&(s+=";"+o),n.cssText=s,i=Qo.test(s)}}else t&&e.removeAttribute("style");Mn in e&&(e[Mn]=i?n.display:"",e[Xo]&&(n.display="none"))}const Vt=/\\s*!important$/;function yt(e,t,s){if(P(s))s.forEach(n=>yt(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))Vt.test(s)?e.setProperty(t,s.replace(Vt,""),"important"):e.setProperty(t,s);else{const n=tl(e,t);Vt.test(s)?e.setProperty(rt(n),s.replace(Vt,""),"important"):e[n]=s}}const Rn=["Webkit","Moz","ms"],Es={};function tl(e,t){const s=Es[t];if(s)return s;let n=pe(t);if(n!=="filter"&&n in e)return Es[t]=n;n=Kn(n);for(let r=0;r<Rn.length;r++){const i=Rn[r]+n;if(i in e)return Es[t]=i}return t}function sl(e,t,s,n){return e.tagName==="TEXTAREA"&&(t==="width"||t==="height")&&G(n)&&s===n}const In="http://www.w3.org/1999/xlink";function Fn(e,t,s,n,r,i=ri(t)){n&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(In,t.slice(6,t.length)):e.setAttributeNS(In,t,s):s==null||i&&!Wn(s)?e.removeAttribute(t):e.setAttribute(t,i?"":Ie(s)?String(s):s)}function Dn(e,t,s,n,r){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?qr(s):s);return}const i=e.tagName;if(t==="value"&&i!=="PROGRESS"&&!i.includes("-")){const l=i==="OPTION"?e.getAttribute("value")||"":e.value,f=s==null?e.type==="checkbox"?"on":"":String(s);(l!==f||!("_value"in e))&&(e.value=f),s==null&&e.removeAttribute(t),e._value=s;return}let o=!1;if(s===""||s==null){const l=typeof e[t];l==="boolean"?s=Wn(s):s==null&&l==="string"?(s="",o=!0):l==="number"&&(s=0,o=!0)}try{e[t]=s}catch{}o&&e.removeAttribute(r||t)}function nl(e,t,s,n){e.addEventListener(t,s,n)}function rl(e,t,s,n){e.removeEventListener(t,s,n)}const jn=Symbol("_vei");function il(e,t,s,n,r=null){const i=e[jn]||(e[jn]={}),o=i[t];if(n&&o)o.value=n;else{const[l,f]=cl(t);if(n){const d=i[t]=al(n,r);nl(e,l,d,f)}else o&&(rl(e,l,o,f),i[t]=void 0)}}const ol=/(Once|Passive|Capture)$/,ll=/^on:?(?:Once|Passive|Capture)$/;function cl(e){let t,s;for(;(s=e.match(ol))&&!ll.test(e);)t||(t={}),e=e.slice(0,e.length-s[1].length),t[s[1].toLowerCase()]=!0;return[e[2]===":"?e.slice(3):rt(e.slice(2)),t]}let As=0;const fl=Promise.resolve(),ul=()=>As||(fl.then(()=>As=0),As=Date.now());function al(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;const r=s.value;if(P(r)){const i=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{i.call(n),n._stopped=!0};const o=r.slice(),l=[n];for(let f=0;f<o.length&&!n._stopped;f++){const d=o[f];d&&me(d,t,5,l)}}else me(r,t,5,[n])};return s.value=e,s.attached=ul(),s}const Hn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,dl=(e,t,s,n,r,i)=>{const o=r==="svg";t==="class"?Yo(e,n,o):t==="style"?el(e,s,n):ts(t)?ss(t)||il(e,t,s,n,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):hl(e,t,n,o))?(Dn(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Fn(e,t,n,o,i,t!=="value")):e._isVueCE&&(pl(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!G(n)))?Dn(e,pe(t),n,i,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),Fn(e,t,n,o))};function hl(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Hn(t)&&R(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Hn(t)&&G(s)?!1:t in e}function pl(e,t){const s=e._def.props;if(!s)return!1;const n=pe(t);return Array.isArray(s)?s.some(r=>pe(r)===n):Object.keys(s).some(r=>pe(r)===n)}const gl=te({patchProp:dl},Jo);let Ln;function _l(){return Ln||(Ln=Ao(gl))}const ml=((...e)=>{const t=_l().createApp(...e),{mount:s}=t;return t.mount=n=>{const r=yl(n);if(!r)return;const i=t._component;!R(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=s(r,!1,bl(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t});function bl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function yl(e){return G(e)?document.querySelector(e):e}function kt(){return{siteTitle:"\u53D7\u4FDD\u62A4\u7AD9\u70B9",siteSubtitle:"\u767B\u5F55\u540E\u7EE7\u7EED\u8BBF\u95EE",loginHeading:"\u8BBF\u95EE\u53D7\u4FDD\u62A4\u7AD9\u70B9",loginSubtitle:"\u4F7F\u7528\u5DF2\u6388\u6743\u8D26\u53F7\u767B\u5F55\u540E\u7EE7\u7EED\u6D4F\u89C8",providerButtonPrefix:"\u4F7F\u7528",footerBrand:"cf-static-guard",copyright:"",icp:"",icpLink:"https://beian.miit.gov.cn/",showModeBadge:!0,showFooterBrand:!0,showGithubIcon:!0}}async function vl(){const e=await fetch("/auth/providers",{headers:{Accept:"application/json"}});if(!e.ok)throw new Error(`providers HTTP ${e.status}`);return await e.json()}async function xl(){try{const e=await fetch("/ui-config",{headers:{Accept:"application/json"}});if(!e.ok)return kt();const t=await e.json();return{...kt(),...t}}catch{return kt()}}function Sl(){const e=We("normal"),t=We([]),s=We(kt()),n=We(!0),r=We(""),i=We(""),o=We(""),l=We("/");function f(y){return y&&y.startsWith("/")&&!y.startsWith("//")?y:"/"}async function d(){n.value=!0,r.value="";try{const[y,C]=await Promise.all([vl(),xl()]);e.value=y.mode||"normal",t.value=y.providers||[],s.value=C}catch(y){r.value=y instanceof Error?y.message:"failed to load providers"}finally{n.value=!1}}const a=Wr(()=>t.value.length>0);function p(y){return`/auth/start/${encodeURIComponent(y)}?next=${encodeURIComponent(l.value)}`}return br(()=>{const y=new URLSearchParams(window.location.search);i.value=y.get("error")||"",o.value=y.get("reason")||"",l.value=f(y.get("next")),d()}),{mode:e,providers:t,ui:s,loading:n,loadError:r,queryError:i,queryReason:o,hasProviders:a,startUrl:p,nextPath:l}}const wl={class:"card"},Cl={class:"hero"},Tl={class:"sub"},El={key:0,class:"alert",role:"alert"},Al={key:0,class:"alert-sub"},Ol={key:1,class:"status"},Pl={key:2,class:"alert"},Ml={class:"alert-sub"},Rl={key:3,class:"status"},Il={key:4,class:"stack"},Fl=["href"],Dl={key:0,class:"btn-icon","aria-hidden":"true"},jl={class:"footer"},Hl={class:"footer-row"},Ll={key:0},Nl={key:1},$l={key:0,class:"legal"},Ul={key:0},Bl=["href"],Kl=qi({__name:"App",setup(e){const{mode:t,providers:s,ui:n,loading:r,loadError:i,queryError:o,queryReason:l,hasProviders:f,startUrl:d}=Sl();return(a,p)=>(Z(),se("main",wl,[Q("div",Cl,[p[0]||(p[0]=Q("div",{class:"logo","aria-hidden":"true"},[Q("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none"},[Q("path",{d:"M12 3l7 3v5.5c0 4.4-2.9 8.4-7 9.5-4.1-1.1-7-5.1-7-9.5V6l7-3z",stroke:"currentColor","stroke-width":"1.8","stroke-linejoin":"round"}),Q("path",{d:"M9.2 12.2l1.9 1.9 3.8-4",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"})])],-1)),Q("div",null,[Q("h1",null,de(B(n).loginHeading),1),Q("p",Tl,de(B(n).loginSubtitle),1)])]),B(o)?(Z(),se("div",El,[Q("strong",null,de(B(o)),1),B(l)?(Z(),se("div",Al,de(B(l)),1)):Qe("",!0)])):Qe("",!0),B(r)?(Z(),se("div",Ol,"\u6B63\u5728\u52A0\u8F7D\u767B\u5F55\u65B9\u5F0F\u2026")):B(i)?(Z(),se("div",Pl,[p[1]||(p[1]=Q("strong",null,"\u65E0\u6CD5\u52A0\u8F7D\u767B\u5F55\u9009\u9879",-1)),Q("div",Ml,de(B(i)),1)])):B(f)?(Z(),se("div",Il,[(Z(!0),se(Ae,null,ro(B(s),y=>(Z(),se("a",{key:y.id,class:"btn",href:B(d)(y.id)},[y.id==="github"&&B(n).showGithubIcon?(Z(),se("span",Dl,[...p[2]||(p[2]=[Q("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor"},[Q("path",{d:"M12 2C6.48 2 2 6.58 2 12.26c0 4.52 2.87 8.35 6.84 9.7.5.1.68-.22.68-.48 0-.24-.01-.87-.01-1.7-2.78.62-3.37-1.37-3.37-1.37-.45-1.18-1.11-1.5-1.11-1.5-.91-.64.07-.63.07-.63 1 .07 1.53 1.06 1.53 1.06.9 1.57 2.36 1.12 2.94.86.09-.67.35-1.12.63-1.38-2.22-.26-4.56-1.14-4.56-5.07 0-1.12.39-2.03 1.03-2.75-.1-.26-.45-1.32.1-2.75 0 0 .84-.27 2.75 1.05A9.3 9.3 0 0 1 12 6.84c.85 0 1.71.12 2.51.35 1.9-1.32 2.74-1.05 2.74-1.05.55 1.43.2 2.49.1 2.75.64.72 1.03 1.63 1.03 2.75 0 3.94-2.34 4.8-4.57 5.06.36.32.68.94.68 1.9 0 1.38-.01 2.48-.01 2.82 0 .26.18.58.69.48A10.27 10.27 0 0 0 22 12.26C22 6.58 17.52 2 12 2z"})],-1)])])):Qe("",!0),Br(" "+de(B(n).providerButtonPrefix)+" "+de(y.displayName)+" \u767B\u5F55 ",1)],8,Fl))),128))])):(Z(),se("div",Rl," \u5C1A\u672A\u542F\u7528\u4EFB\u4F55 OAuth \u767B\u5F55\u3002\u8BF7\u914D\u7F6E\u5BC6\u94A5\u5E76\u5728 KV \u4E2D\u6253\u5F00 provider\u3002 ")),Q("div",jl,[Q("div",Hl,[B(n).showFooterBrand?(Z(),se("span",Ll,de(B(n).footerBrand),1)):(Z(),se("span",Nl)),B(n).showModeBadge?(Z(),se("span",{key:2,class:is(["badge",B(t)==="strict"?"strict":"normal"])},de(B(t)==="strict"?"\u4E25\u683C\u6A21\u5F0F":"\u666E\u901A\u6A21\u5F0F"),3)):Qe("",!0)]),B(n).copyright||B(n).icp?(Z(),se("div",$l,[B(n).copyright?(Z(),se("span",Ul,de(B(n).copyright),1)):Qe("",!0),B(n).icp?(Z(),se("a",{key:1,class:"legal-link",href:B(n).icpLink||"https://beian.miit.gov.cn/",target:"_blank",rel:"noopener noreferrer"},de(B(n).icp),9,Bl)):Qe("",!0)])):Qe("",!0)])]))}}),Vl=(e,t)=>{const s=e.__vccOpts||e;for(const[n,r]of t)s[n]=r;return s},Wl=Vl(Kl,[["__scopeId","data-v-95a052ec"]]);ml(Wl).mount("#app");<\/script>\n <style rel="stylesheet" crossorigin>.card[data-v-95a052ec]{width:100%;background:var(--panel);border:1px solid var(--border);border-radius:20px;padding:32px 28px 24px;box-shadow:var(--shadow)}.hero[data-v-95a052ec]{display:flex;gap:14px;align-items:flex-start;margin-bottom:22px}.logo[data-v-95a052ec]{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;color:#fff;background:linear-gradient(145deg,#3b82f6,#0ea5e9);box-shadow:0 8px 18px #2563eb47;flex-shrink:0}h1[data-v-95a052ec]{margin:0;font-size:1.25rem;letter-spacing:-.02em;color:var(--ink)}.sub[data-v-95a052ec]{margin:6px 0 0;color:var(--muted);font-size:.92rem;line-height:1.45}.stack[data-v-95a052ec]{display:grid;gap:10px}.btn[data-v-95a052ec]{display:flex;align-items:center;justify-content:center;gap:10px;height:46px;border-radius:12px;border:1px solid var(--accent-border);background:var(--accent-soft);color:#1d4ed8;text-decoration:none;font-weight:600;font-size:.95rem;transition:transform .12s ease,box-shadow .12s ease,background .12s ease}.btn[data-v-95a052ec]:hover{background:#dbeafe;box-shadow:0 8px 18px #2563eb1f;transform:translateY(-1px);text-decoration:none}.btn-icon[data-v-95a052ec]{display:inline-flex;align-items:center;justify-content:center}.alert[data-v-95a052ec]{margin-bottom:16px;padding:12px 14px;border-radius:12px;background:var(--danger-bg);color:var(--danger-ink);border:1px solid var(--danger-border);font-size:.9rem;line-height:1.45}.alert-sub[data-v-95a052ec]{margin-top:4px;opacity:.92;font-size:.85rem}.status[data-v-95a052ec]{color:var(--muted);font-size:.9rem;line-height:1.5;margin-bottom:12px}.footer[data-v-95a052ec]{margin-top:20px;padding-top:16px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px;color:var(--muted);font-size:.8rem}.footer-row[data-v-95a052ec]{display:flex;justify-content:space-between;align-items:center;gap:8px}.legal[data-v-95a052ec]{display:flex;flex-wrap:wrap;gap:8px 12px}.legal-link[data-v-95a052ec]{color:var(--muted);text-decoration:none}.legal-link[data-v-95a052ec]:hover{color:var(--accent)}.badge[data-v-95a052ec]{display:inline-flex;padding:3px 9px;border-radius:999px;border:1px solid var(--border);background:#f8fafc;font-size:.75rem;font-weight:600}.badge.strict[data-v-95a052ec]{color:#b45309;background:#fffbeb;border-color:#fde68a}.badge.normal[data-v-95a052ec]{color:#047857;background:#ecfdf5;border-color:#a7f3d0}:root{color-scheme:light;--bg: #f4f6fb;--panel: #ffffff;--ink: #0f172a;--muted: #64748b;--accent: #2563eb;--accent-soft: #eff6ff;--accent-border: #bfdbfe;--danger-bg: #fef2f2;--danger-ink: #b91c1c;--danger-border: #fecaca;--border: #e2e8f0;--shadow: 0 18px 50px rgba(15, 23, 42, .08);font-family:Segoe UI,system-ui,-apple-system,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{min-height:100vh;display:grid;place-items:center;padding:24px;color:var(--ink);background:radial-gradient(900px 480px at 12% -8%,rgba(37,99,235,.12),transparent 55%),radial-gradient(720px 420px at 92% 0%,rgba(14,165,233,.1),transparent 50%),linear-gradient(180deg,#f8fafc 0%,var(--bg) 100%)}#app{width:min(420px,100%)}</style>\n </head>\n <body>\n <div id="app"></div>\n </body>\n</html>\n';
1595
+
1596
+ // src/auth/routes.ts
1597
+ var STATE_COOKIE = "csg_oauth_state";
1598
+ var PENDING_COOKIE = "csg_oauth_next";
1599
+ function htmlEscape(s) {
1600
+ return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
1601
+ }
1602
+ __name(htmlEscape, "htmlEscape");
1603
+ function isSecureRequest(request) {
1604
+ const url = new URL(request.url);
1605
+ if (url.protocol === "https:") return true;
1606
+ return request.headers.get("CF-Visitor")?.includes("https") === true;
1607
+ }
1608
+ __name(isSecureRequest, "isSecureRequest");
1609
+ function redirectBase(request, env2) {
1610
+ if (env2.OAUTH_REDIRECT_BASE) {
1611
+ return env2.OAUTH_REDIRECT_BASE.replace(/\/$/, "");
1612
+ }
1613
+ const url = new URL(request.url);
1614
+ return url.origin;
1615
+ }
1616
+ __name(redirectBase, "redirectBase");
1617
+ function ttlSeconds(env2) {
1618
+ const n = Number(env2.SESSION_TTL_SECONDS ?? "604800");
1619
+ return Number.isFinite(n) && n > 0 ? Math.floor(n) : 604800;
1620
+ }
1621
+ __name(ttlSeconds, "ttlSeconds");
1622
+ function parseCookies(header) {
1623
+ const out = {};
1624
+ if (!header) return out;
1625
+ for (const part of header.split(";")) {
1626
+ const idx = part.indexOf("=");
1627
+ if (idx === -1) continue;
1628
+ const k = part.slice(0, idx).trim();
1629
+ const v = part.slice(idx + 1).trim();
1630
+ if (k) out[k] = decodeURIComponent(v);
1631
+ }
1632
+ return out;
1633
+ }
1634
+ __name(parseCookies, "parseCookies");
1635
+ function setTempCookie(headers, name, value, maxAge, secure) {
1636
+ const parts = [
1637
+ `${name}=${encodeURIComponent(value)}`,
1638
+ "Path=/",
1639
+ "HttpOnly",
1640
+ "SameSite=Lax",
1641
+ `Max-Age=${maxAge}`
1642
+ ];
1643
+ if (secure) parts.push("Secure");
1644
+ headers.append("Set-Cookie", parts.join("; "));
1645
+ }
1646
+ __name(setTempCookie, "setTempCookie");
1647
+ function buildLoginHtml(opts) {
1648
+ const ui = opts.ui;
1649
+ const prefix = ui?.providerButtonPrefix || "\u4F7F\u7528";
1650
+ const showIcon = ui?.showGithubIcon !== false;
1651
+ const buttons = opts.providers.map((p) => {
1652
+ const nextQ = opts.next ? `?next=${encodeURIComponent(opts.next)}` : "";
1653
+ const href = `/auth/start/${htmlEscape(p.id)}${nextQ}`;
1654
+ const icon = p.id === "github" && showIcon ? `<svg class="btn-icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 2C6.48 2 2 6.58 2 12.26c0 4.52 2.87 8.35 6.84 9.7.5.1.68-.22.68-.48 0-.24-.01-.87-.01-1.7-2.78.62-3.37-1.37-3.37-1.37-.45-1.18-1.11-1.5-1.11-1.5-.91-.64.07-.63.07-.63 1 .07 1.53 1.06 1.53 1.06.9 1.57 2.36 1.12 2.94.86.09-.67.35-1.12.63-1.38-2.22-.26-4.56-1.14-4.56-5.07 0-1.12.39-2.03 1.03-2.75-.1-.26-.45-1.32.1-2.75 0 0 .84-.27 2.75 1.05A9.3 9.3 0 0 1 12 6.84c.85 0 1.71.12 2.51.35 1.9-1.32 2.74-1.05 2.74-1.05.55 1.43.2 2.49.1 2.75.64.72 1.03 1.63 1.03 2.75 0 3.94-2.34 4.8-4.57 5.06.36.32.68.94.68 1.9 0 1.38-.01 2.48-.01 2.82 0 .26.18.58.69.48A10.27 10.27 0 0 0 22 12.26C22 6.58 17.52 2 12 2z"/></svg>` : p.id === "github" ? "" : `<span class="btn-icon">${htmlEscape(p.displayName.charAt(0))}</span>`;
1655
+ return `<a class="btn" href="${href}">${icon}${htmlEscape(prefix)} ${htmlEscape(p.displayName)} \u767B\u5F55</a>`;
1656
+ }).join("\n");
1657
+ const empty = '<p class="status">\u5C1A\u672A\u542F\u7528\u4EFB\u4F55 OAuth \u767B\u5F55\u3002\u8BF7\u914D\u7F6E\u5BC6\u94A5\u5E76\u5728 KV \u4E2D\u6253\u5F00 provider\u3002</p>';
1658
+ const errorBlock = opts.error ? `<div class="alert" role="alert"><strong>${htmlEscape(opts.error)}</strong>${opts.reason ? `<div class="alert-sub">${htmlEscape(opts.reason)}</div>` : ""}</div>` : "";
1659
+ const heading = ui?.loginHeading || "\u8BBF\u95EE\u53D7\u4FDD\u62A4\u7AD9\u70B9";
1660
+ const subtitle = ui?.loginSubtitle || "\u4F7F\u7528\u5DF2\u6388\u6743\u8D26\u53F7\u767B\u5F55\u540E\u7EE7\u7EED\u6D4F\u89C8";
1661
+ const modeLabel = opts.mode === "strict" ? "\u4E25\u683C\u6A21\u5F0F" : "\u666E\u901A\u6A21\u5F0F";
1662
+ const showMode = ui?.showModeBadge !== false;
1663
+ const showBrand = ui?.showFooterBrand !== false;
1664
+ const brand = ui?.footerBrand || "cf-static-guard";
1665
+ const copyright = ui?.copyright || "";
1666
+ const icp = ui?.icp || "";
1667
+ const icpLink = ui?.icpLink || "https://beian.miit.gov.cn/";
1668
+ const legalHtml = [copyright ? `<span>${htmlEscape(copyright)}</span>` : "", icp ? `<a class="legal-link" href="${htmlEscape(icpLink)}" target="_blank" rel="noopener noreferrer">${htmlEscape(icp)}</a>` : ""].filter(Boolean).join("");
1669
+ return `<!DOCTYPE html>
1670
+ <html lang="zh-CN">
1671
+ <head>
1672
+ <meta charset="utf-8" />
1673
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
1674
+ <meta name="robots" content="noindex, nofollow" />
1675
+ <title>\u767B\u5F55 \xB7 Static Guard</title>
1676
+ <style>
1677
+ :root {
1678
+ color-scheme: light;
1679
+ --bg: #f4f6fb;
1680
+ --panel: #ffffff;
1681
+ --ink: #0f172a;
1682
+ --muted: #64748b;
1683
+ --accent: #2563eb;
1684
+ --accent-soft: #eff6ff;
1685
+ --accent-border: #bfdbfe;
1686
+ --danger-bg: #fef2f2;
1687
+ --danger-ink: #b91c1c;
1688
+ --danger-border: #fecaca;
1689
+ --border: #e2e8f0;
1690
+ --shadow: 0 18px 50px rgba(15, 23, 42, 0.08);
1691
+ font-family: "Segoe UI", system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
1692
+ }
1693
+ * { box-sizing: border-box; }
1694
+ body {
1695
+ margin: 0;
1696
+ min-height: 100vh;
1697
+ display: grid;
1698
+ place-items: center;
1699
+ padding: 24px;
1700
+ color: var(--ink);
1701
+ background:
1702
+ radial-gradient(900px 480px at 12% -8%, rgba(37, 99, 235, 0.12), transparent 55%),
1703
+ radial-gradient(720px 420px at 92% 0%, rgba(14, 165, 233, 0.1), transparent 50%),
1704
+ linear-gradient(180deg, #f8fafc 0%, var(--bg) 100%);
1705
+ }
1706
+ .card {
1707
+ width: min(420px, 100%);
1708
+ background: var(--panel);
1709
+ border: 1px solid var(--border);
1710
+ border-radius: 20px;
1711
+ padding: 32px 28px 24px;
1712
+ box-shadow: var(--shadow);
1713
+ }
1714
+ .hero { display: flex; gap: 14px; align-items: flex-start; margin-bottom: 22px; }
1715
+ .logo {
1716
+ width: 44px;
1717
+ height: 44px;
1718
+ border-radius: 14px;
1719
+ display: grid;
1720
+ place-items: center;
1721
+ color: #fff;
1722
+ background: linear-gradient(145deg, #3b82f6, #0ea5e9);
1723
+ box-shadow: 0 8px 18px rgba(37, 99, 235, 0.28);
1724
+ flex-shrink: 0;
1725
+ }
1726
+ h1 { margin: 0; font-size: 1.25rem; letter-spacing: -0.02em; }
1727
+ .sub { margin: 6px 0 0; color: var(--muted); font-size: 0.92rem; line-height: 1.45; }
1728
+ .stack { display: grid; gap: 10px; }
1729
+ .btn {
1730
+ display: flex;
1731
+ align-items: center;
1732
+ justify-content: center;
1733
+ gap: 10px;
1734
+ height: 46px;
1735
+ border-radius: 12px;
1736
+ border: 1px solid var(--accent-border);
1737
+ background: var(--accent-soft);
1738
+ color: #1d4ed8;
1739
+ text-decoration: none;
1740
+ font-weight: 600;
1741
+ font-size: 0.95rem;
1742
+ transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s ease;
1743
+ }
1744
+ .btn-icon {
1745
+ display: inline-flex;
1746
+ align-items: center;
1747
+ justify-content: center;
1748
+ }
1749
+ .btn:hover {
1750
+ background: #dbeafe;
1751
+ box-shadow: 0 8px 18px rgba(37, 99, 235, 0.12);
1752
+ transform: translateY(-1px);
1753
+ text-decoration: none;
1754
+ }
1755
+ .alert {
1756
+ margin-bottom: 16px;
1757
+ padding: 12px 14px;
1758
+ border-radius: 12px;
1759
+ background: var(--danger-bg);
1760
+ color: var(--danger-ink);
1761
+ border: 1px solid var(--danger-border);
1762
+ font-size: 0.9rem;
1763
+ line-height: 1.45;
1764
+ }
1765
+ .alert-sub { margin-top: 4px; opacity: 0.92; font-size: 0.85rem; }
1766
+ .status { color: var(--muted); font-size: 0.9rem; line-height: 1.5; }
1767
+ .footer {
1768
+ margin-top: 20px;
1769
+ padding-top: 16px;
1770
+ border-top: 1px solid var(--border);
1771
+ display: flex;
1772
+ flex-direction: column;
1773
+ gap: 8px;
1774
+ color: var(--muted);
1775
+ font-size: 0.8rem;
1776
+ }
1777
+ .footer-row { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
1778
+ .legal { display: flex; flex-wrap: wrap; gap: 8px 12px; }
1779
+ .legal-link { color: var(--muted); text-decoration: none; }
1780
+ .legal-link:hover { color: var(--accent); }
1781
+ .badge {
1782
+ display: inline-flex;
1783
+ padding: 3px 9px;
1784
+ border-radius: 999px;
1785
+ border: 1px solid var(--border);
1786
+ background: #f8fafc;
1787
+ font-size: 0.75rem;
1788
+ font-weight: 600;
1789
+ }
1790
+ .badge.strict { color: #b45309; background: #fffbeb; border-color: #fde68a; }
1791
+ .badge.normal { color: #047857; background: #ecfdf5; border-color: #a7f3d0; }
1792
+ </style>
1793
+ </head>
1794
+ <body>
1795
+ <main class="card">
1796
+ <div class="hero">
1797
+ <div class="logo" aria-hidden="true">
1798
+ <svg width="22" height="22" viewBox="0 0 24 24" fill="none">
1799
+ <path d="M12 3l7 3v5.5c0 4.4-2.9 8.4-7 9.5-4.1-1.1-7-5.1-7-9.5V6l7-3z" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"/>
1800
+ <path d="M9.2 12.2l1.9 1.9 3.8-4" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
1801
+ </svg>
1802
+ </div>
1803
+ <div>
1804
+ <h1>${htmlEscape(heading)}</h1>
1805
+ <p class="sub">${htmlEscape(subtitle)}</p>
1806
+ </div>
1807
+ </div>
1808
+ ${errorBlock}
1809
+ <div class="stack">
1810
+ ${buttons || empty}
1811
+ </div>
1812
+ <div class="footer">
1813
+ <div class="footer-row">
1814
+ ${showBrand ? `<span>${htmlEscape(brand)}</span>` : "<span></span>"}
1815
+ ${showMode ? `<span class="badge ${opts.mode === "strict" ? "strict" : "normal"}">${htmlEscape(modeLabel)}</span>` : ""}
1816
+ </div>
1817
+ ${legalHtml ? `<div class="legal">${legalHtml}</div>` : ""}
1818
+ </div>
1819
+ </main>
1820
+ </body>
1821
+ </html>`;
1822
+ }
1823
+ __name(buildLoginHtml, "buildLoginHtml");
1824
+ function buildDeniedHtml(opts) {
1825
+ const items = opts.failures.map((f) => `<li><code>${htmlEscape(f.code)}</code> \u2014 ${htmlEscape(f.message)}</li>`).join("");
1826
+ return `<!DOCTYPE html>
1827
+ <html lang="zh-CN">
1828
+ <head>
1829
+ <meta charset="utf-8" />
1830
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
1831
+ <meta name="robots" content="noindex, nofollow" />
1832
+ <title>\u8BBF\u95EE\u88AB\u62D2\u7EDD \xB7 Static Guard</title>
1833
+ <style>
1834
+ :root {
1835
+ color-scheme: light;
1836
+ font-family: "Segoe UI", system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
1837
+ }
1838
+ body {
1839
+ margin: 0;
1840
+ min-height: 100vh;
1841
+ display: grid;
1842
+ place-items: center;
1843
+ background:
1844
+ radial-gradient(900px 480px at 12% -8%, rgba(37, 99, 235, 0.12), transparent 55%),
1845
+ linear-gradient(180deg, #f8fafc 0%, #f4f6fb 100%);
1846
+ color: #0f172a;
1847
+ padding: 24px;
1848
+ }
1849
+ .card {
1850
+ width: min(480px, 100%);
1851
+ background: #ffffff;
1852
+ border: 1px solid #e2e8f0;
1853
+ border-radius: 20px;
1854
+ padding: 32px 28px;
1855
+ box-shadow: 0 18px 50px rgba(15, 23, 42, 0.08);
1856
+ }
1857
+ h1 { margin: 0 0 8px; font-size: 1.2rem; }
1858
+ p { color: #64748b; line-height: 1.5; margin: 0 0 16px; }
1859
+ ul { margin: 0 0 20px; padding-left: 18px; color: #b91c1c; line-height: 1.6; }
1860
+ code { color: #b45309; background: #fffbeb; padding: 0.1em 0.35em; border-radius: 6px; }
1861
+ a.btn {
1862
+ display: inline-flex;
1863
+ height: 42px;
1864
+ align-items: center;
1865
+ padding: 0 16px;
1866
+ border-radius: 12px;
1867
+ background: #eff6ff;
1868
+ color: #1d4ed8;
1869
+ text-decoration: none;
1870
+ border: 1px solid #bfdbfe;
1871
+ font-weight: 600;
1872
+ }
1873
+ </style>
1874
+ </head>
1875
+ <body>
1876
+ <main class="card">
1877
+ <h1>\u8BBF\u95EE\u88AB\u62D2\u7EDD</h1>
1878
+ <p>\u8D26\u53F7 <strong>${htmlEscape(opts.login)}</strong> \u5DF2\u901A\u8FC7 ${htmlEscape(opts.provider)} \u767B\u5F55\uFF0C\u4F46\u672A\u6EE1\u8DB3 <strong>${htmlEscape(opts.mode)}</strong> \u7B56\u7565\u3002</p>
1879
+ <ul>${items || "<li>\u7B56\u7565\u6821\u9A8C\u5931\u8D25</li>"}</ul>
1880
+ <a class="btn" href="/auth/logout">\u9000\u51FA\u767B\u5F55</a>
1881
+ </main>
1882
+ </body>
1883
+ </html>`;
1884
+ }
1885
+ __name(buildDeniedHtml, "buildDeniedHtml");
1886
+ async function verifyRequestSession(request, env2) {
1887
+ const token = readSessionCookie(request);
1888
+ if (!token) return null;
1889
+ return verifySession(token, env2.SESSION_SECRET);
1890
+ }
1891
+ __name(verifyRequestSession, "verifyRequestSession");
1892
+ function isPublicPath(pathname, env2) {
1893
+ if (pathname === "/health" || pathname === "/health/") return true;
1894
+ if (pathname.startsWith("/auth/")) return true;
1895
+ const allowed = listPublicPaths(env2);
1896
+ return allowed.some((p) => pathname === p || pathname === `${p}/`);
1897
+ }
1898
+ __name(isPublicPath, "isPublicPath");
1899
+ async function handleAuthRequest(request, env2, url) {
1900
+ const path = url.pathname;
1901
+ if (!path.startsWith("/auth")) return null;
1902
+ const secure = isSecureRequest(request);
1903
+ const config2 = await loadGuardConfig(env2);
1904
+ if (path === "/auth/providers" || path === "/auth/providers/") {
1905
+ const providers2 = listProviders().filter((p) => isProviderEnabled(config2, p.id, env2)).map((p) => ({ id: p.id, displayName: p.displayName }));
1906
+ return Response.json(
1907
+ { mode: config2.mode, providers: providers2 },
1908
+ { headers: { "cache-control": "no-store" } }
1909
+ );
1910
+ }
1911
+ if (path === "/auth/login" || path === "/auth/login/") {
1912
+ const providers2 = listProviders().filter(
1913
+ (p) => isProviderEnabled(config2, p.id, env2)
1914
+ );
1915
+ const error3 = url.searchParams.get("error") ?? void 0;
1916
+ const reason = url.searchParams.get("reason") ?? void 0;
1917
+ const next = url.searchParams.get("next") ?? void 0;
1918
+ const ui = await loadUiConfig(env2);
1919
+ const html = LOGIN_SPA_HTML ? LOGIN_SPA_HTML : buildLoginHtml({
1920
+ providers: providers2.map((p) => ({
1921
+ id: p.id,
1922
+ displayName: p.displayName
1923
+ })),
1924
+ mode: config2.mode,
1925
+ error: error3,
1926
+ reason,
1927
+ next,
1928
+ ui
1929
+ });
1930
+ return new Response(html, {
1931
+ headers: {
1932
+ "content-type": "text/html; charset=utf-8",
1933
+ "cache-control": "no-store",
1934
+ "x-robots-tag": "noindex"
1935
+ }
1936
+ });
1937
+ }
1938
+ if (path === "/auth/logout" || path === "/auth/logout/") {
1939
+ const headers = new Headers({ Location: "/auth/login" });
1940
+ headers.append("Set-Cookie", clearSessionCookie(secure));
1941
+ headers.append("Cache-Control", "no-store");
1942
+ return new Response(null, { status: 302, headers });
1943
+ }
1944
+ if (path === "/auth/me" || path === "/auth/me/") {
1945
+ const session = await verifyRequestSession(request, env2);
1946
+ if (!session) {
1947
+ return Response.json({ authenticated: false }, { status: 401 });
1948
+ }
1949
+ return Response.json({
1950
+ authenticated: true,
1951
+ provider: session.provider,
1952
+ login: session.login,
1953
+ name: session.name ?? null,
1954
+ avatarUrl: session.avatarUrl ?? null,
1955
+ exp: session.exp,
1956
+ mode: config2.mode
1957
+ });
1958
+ }
1959
+ const startMatch = path.match(/^\/auth\/start\/([a-z0-9_-]+)\/?$/i);
1960
+ if (startMatch) {
1961
+ const providerId = startMatch[1].toLowerCase();
1962
+ const provider = getProvider(providerId);
1963
+ if (!provider || !isProviderEnabled(config2, providerId, env2)) {
1964
+ return redirectLogin(url, { error: "Provider not available" });
1965
+ }
1966
+ const next = url.searchParams.get("next") || "/";
1967
+ if (!next.startsWith("/") || next.startsWith("//")) {
1968
+ return redirectLogin(url, { error: "Invalid next path" });
1969
+ }
1970
+ const state = crypto.randomUUID();
1971
+ const redirectUri = `${redirectBase(request, env2)}/auth/callback/${provider.id}`;
1972
+ const authorizeUrl = provider.getAuthorizeUrl({
1973
+ clientId: env2.GITHUB_CLIENT_ID,
1974
+ state,
1975
+ redirectUri
1976
+ });
1977
+ const headers = new Headers({ Location: authorizeUrl });
1978
+ setTempCookie(headers, STATE_COOKIE, state, 600, secure);
1979
+ setTempCookie(headers, PENDING_COOKIE, next, 600, secure);
1980
+ return new Response(null, { status: 302, headers });
1981
+ }
1982
+ const cbMatch = path.match(/^\/auth\/callback\/([a-z0-9_-]+)\/?$/i);
1983
+ if (cbMatch) {
1984
+ const providerId = cbMatch[1].toLowerCase();
1985
+ const provider = getProvider(providerId);
1986
+ if (!provider || !isProviderEnabled(config2, providerId, env2)) {
1987
+ return redirectLogin(url, { error: "Provider not available" });
1988
+ }
1989
+ const cookies = parseCookies(request.headers.get("Cookie"));
1990
+ const code = url.searchParams.get("code");
1991
+ const state = url.searchParams.get("state");
1992
+ const ghError = url.searchParams.get("error");
1993
+ const errorDesc = url.searchParams.get("error_description");
1994
+ if (ghError) {
1995
+ return redirectLogin(url, {
1996
+ error: "Authorization failed",
1997
+ reason: errorDesc || ghError
1998
+ });
1999
+ }
2000
+ if (!code || !state) {
2001
+ return redirectLogin(url, { error: "Missing OAuth code/state" });
2002
+ }
2003
+ if (cookies[STATE_COOKIE] !== state) {
2004
+ return redirectLogin(url, { error: "State mismatch", reason: "Possible CSRF" });
2005
+ }
2006
+ const redirectUri = `${redirectBase(request, env2)}/auth/callback/${provider.id}`;
2007
+ try {
2008
+ const tokens = await provider.exchangeCode({
2009
+ clientId: env2.GITHUB_CLIENT_ID,
2010
+ clientSecret: env2.GITHUB_CLIENT_SECRET,
2011
+ code,
2012
+ redirectUri
2013
+ });
2014
+ const profile3 = await provider.fetchProfile(tokens);
2015
+ const { mode, rules } = resolveProviderConfig(config2, provider.id);
2016
+ const result = evaluateRules({ mode, rules, profile: profile3 });
2017
+ const next = cookies[PENDING_COOKIE] || "/";
2018
+ if (!result.ok) {
2019
+ if (mode === "strict") {
2020
+ const denied = buildDeniedHtml({
2021
+ mode,
2022
+ failures: result.failures.map((f) => ({
2023
+ code: f.code,
2024
+ message: f.message
2025
+ })),
2026
+ login: profile3.login,
2027
+ provider: provider.displayName
2028
+ });
2029
+ return new Response(denied, {
2030
+ status: 403,
2031
+ headers: {
2032
+ "content-type": "text/html; charset=utf-8",
2033
+ "cache-control": "no-store",
2034
+ "set-cookie": clearSessionCookie(secure),
2035
+ "x-robots-tag": "noindex"
2036
+ }
2037
+ });
2038
+ }
2039
+ return redirectLogin(url, {
2040
+ error: "Access denied",
2041
+ reason: result.failures[0]?.message ?? "policy failed"
2042
+ });
2043
+ }
2044
+ const payload = buildSessionPayload(
2045
+ {
2046
+ sub: profile3.id,
2047
+ provider: profile3.provider,
2048
+ login: profile3.login,
2049
+ name: profile3.name,
2050
+ avatarUrl: profile3.avatarUrl
2051
+ },
2052
+ ttlSeconds(env2)
2053
+ );
2054
+ const token = await signSession(payload, env2.SESSION_SECRET);
2055
+ const safeNext = next.startsWith("/") && !next.startsWith("//") ? next : "/";
2056
+ const headers = new Headers({ Location: safeNext });
2057
+ headers.append(
2058
+ "Set-Cookie",
2059
+ sessionCookie(token, ttlSeconds(env2), secure)
2060
+ );
2061
+ setTempCookie(headers, STATE_COOKIE, "", 0, secure);
2062
+ setTempCookie(headers, PENDING_COOKIE, "", 0, secure);
2063
+ return new Response(null, { status: 302, headers });
2064
+ } catch (err) {
2065
+ const message = err instanceof Error ? err.message : "OAuth error";
2066
+ return redirectLogin(url, {
2067
+ error: "Sign-in failed",
2068
+ reason: message.slice(0, 200)
2069
+ });
2070
+ }
2071
+ }
2072
+ return new Response("Not found", { status: 404 });
2073
+ }
2074
+ __name(handleAuthRequest, "handleAuthRequest");
2075
+ function redirectLogin(url, params) {
2076
+ const target = new URL("/auth/login", url.origin);
2077
+ if (params.error) target.searchParams.set("error", params.error);
2078
+ if (params.reason) target.searchParams.set("reason", params.reason);
2079
+ const next = url.searchParams.get("next");
2080
+ if (next) target.searchParams.set("next", next);
2081
+ return new Response(null, {
2082
+ status: 302,
2083
+ headers: { Location: target.pathname + target.search }
2084
+ });
2085
+ }
2086
+ __name(redirectLogin, "redirectLogin");
2087
+ function unauthorizedRedirect(request, url) {
2088
+ const target = new URL("/auth/login", url.origin);
2089
+ const path = url.pathname + url.search;
2090
+ if (path && path !== "/") {
2091
+ target.searchParams.set("next", path);
2092
+ }
2093
+ const accept = request.headers.get("Accept") ?? "";
2094
+ const wantsJson = request.headers.get("X-Requested-With") === "fetch" || !accept.includes("text/html") && accept.includes("application/json");
2095
+ if (wantsJson) {
2096
+ return Response.json(
2097
+ { error: "unauthenticated", login: "/auth/login" },
2098
+ { status: 401, headers: { "cache-control": "no-store" } }
2099
+ );
2100
+ }
2101
+ return new Response(null, {
2102
+ status: 302,
2103
+ headers: {
2104
+ Location: target.pathname + target.search,
2105
+ "cache-control": "no-store"
2106
+ }
2107
+ });
2108
+ }
2109
+ __name(unauthorizedRedirect, "unauthorizedRedirect");
2110
+ function healthResponse(env2) {
2111
+ return Response.json(
2112
+ {
2113
+ ok: true,
2114
+ service: "cf-static-guard",
2115
+ time: (/* @__PURE__ */ new Date()).toISOString(),
2116
+ hasGithubSecrets: Boolean(env2.GITHUB_CLIENT_ID && env2.GITHUB_CLIENT_SECRET),
2117
+ hasSessionSecret: Boolean(env2.SESSION_SECRET),
2118
+ hasKv: Boolean(env2.RULES)
2119
+ },
2120
+ { headers: { "cache-control": "no-store" } }
2121
+ );
2122
+ }
2123
+ __name(healthResponse, "healthResponse");
2124
+
2125
+ // src/pages/admin-spa.ts
2126
+ var ADMIN_SPA_HTML = '<!DOCTYPE html>\n<html lang="zh-CN">\n <head>\n <meta charset="UTF-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <meta name="robots" content="noindex, nofollow" />\n <title>\u5B88\u536B\u7BA1\u7406\u540E\u53F0</title>\n <script type="module" crossorigin>(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll(\'link[rel="modulepreload"]\'))n(i);new MutationObserver(i=>{for(const r of i)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function s(i){const r={};return i.integrity&&(r.integrity=i.integrity),i.referrerPolicy&&(r.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?r.credentials="include":i.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function n(i){if(i.ep)return;i.ep=!0;const r=s(i);fetch(i.href,r)}})();/**\n* @vue/shared v3.5.42\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/function Xs(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const W={},ht=[],Fe=()=>{},ei=()=>!1,hs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),gs=e=>e.startsWith("onUpdate:"),ne=Object.assign,Zs=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},pr=Object.prototype.hasOwnProperty,$=(e,t)=>pr.call(e,t),R=Array.isArray,et=e=>qt(e)==="[object Map]",ke=e=>qt(e)==="[object Set]",wn=e=>qt(e)==="[object Date]",D=e=>typeof e=="function",Q=e=>typeof e=="string",De=e=>typeof e=="symbol",k=e=>e!==null&&typeof e=="object",ti=e=>(k(e)||D(e))&&D(e.then)&&D(e.catch),si=Object.prototype.toString,qt=e=>si.call(e),hr=e=>qt(e).slice(8,-1),ni=e=>qt(e)==="[object Object]",Qs=e=>Q(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Rt=Xs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ms=e=>{const t=Object.create(null);return(s=>t[s]||(t[s]=e(s)))},gr=/-\\w/g,be=ms(e=>e.replace(gr,t=>t.slice(1).toUpperCase())),mr=/\\B([A-Z])/g,st=ms(e=>e.replace(mr,"-$1").toLowerCase()),ii=ms(e=>e.charAt(0).toUpperCase()+e.slice(1)),Os=ms(e=>e?`on${ii(e)}`:""),Re=(e,t)=>!Object.is(e,t),ns=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},ri=(e,t,s,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},bs=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Sn;const ys=()=>Sn||(Sn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function en(e){if(R(e)){const t={};for(let s=0;s<e.length;s++){const n=e[s],i=Q(n)?vr(n):en(n);if(i)for(const r in i)t[r]=i[r]}return t}else if(Q(e)||k(e))return e}const br=/;(?![^(]*\\))/g,yr=/:([^]+)/,_r=/\\/\\*[^]*?\\*\\//g;function vr(e){const t={};return e.replace(_r,"").split(br).forEach(s=>{if(s){const n=s.split(yr);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function gt(e){let t="";if(Q(e))t=e;else if(R(e))for(let s=0;s<e.length;s++){const n=gt(e[s]);n&&(t+=n+" ")}else if(k(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const xr="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",wr=Xs(xr);function oi(e){return!!e||e===""}function Sr(e,t){if(e.length!==t.length)return!1;let s=!0;for(let n=0;s&&n<e.length;n++)s=qe(e[n],t[n]);return s}function Cn(e,t){if(e.size!==t.size)return!1;const s=Array.from(t),n=new Uint8Array(s.length);for(const i of e){let r=-1;for(let o=0;o<s.length;o++)if(!n[o]&&qe(i,s[o])){r=o;break}if(r<0)return!1;n[r]=1}return!0}function qe(e,t){if(e===t)return!0;let s=wn(e),n=wn(t);if(s||n)return s&&n?e.getTime()===t.getTime():!1;if(s=De(e),n=De(t),s||n)return e===t;if(s=R(e),n=R(t),s||n)return s&&n?Sr(e,t):!1;if(s=k(e),n=k(t),s||n){if(!s||!n)return!1;if(s=et(e),n=et(t),s||n||(s=ke(e),n=ke(t),s||n))return s&&n?Cn(e,t):!1;const i=Object.keys(e).length,r=Object.keys(t).length;if(i!==r)return!1;for(const o in e){const l=e.hasOwnProperty(o),u=t.hasOwnProperty(o);if(l&&!u||!l&&u||!qe(e[o],t[o]))return!1}}return String(e)===String(t)}function tn(e,t){return e.findIndex(s=>qe(s,t))}const li=e=>!!(e&&e.__v_isRef===!0),fi=e=>Q(e)?e:e==null?"":R(e)||k(e)&&(e.toString===si||!D(e.toString))?li(e)?fi(e.value):JSON.stringify(e,ui,2):String(e),ui=(e,t)=>li(t)?ui(e,t.value):et(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,i],r)=>(s[Es(n,r)+" =>"]=i,s),{})}:ke(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>Es(s))}:De(t)?Es(t):k(t)&&!R(t)&&!ni(t)?String(t):t,Es=(e,t="")=>{var s;return De(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/**\n* @vue/reactivity v3.5.42\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/let se;class Cr{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&se&&(se.active?(this.parent=se,this.index=(se.scopes||(se.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes){const n=this.scopes.slice();for(t=0,s=n.length;t<s;t++)n[t].pause()}for(t=0,s=this.effects.length;t<s;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,s;if(this.scopes){const i=this.scopes.slice();for(t=0,s=i.length;t<s;t++)i[t].resume()}const n=this.effects.slice();for(t=0,s=n.length;t<s;t++)n[t].resume()}}run(t){if(this._active){const s=se;try{return se=this,t()}finally{se=s}}}on(){++this._on===1&&(this.prevScope=se,se=this)}off(){if(this._on>0&&--this._on===0){if(se===this)se=this.prevScope;else{let t=se;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s<n;s++)this.effects[s].stop();for(this.effects.length=0,s=0,n=this.cleanups.length;s<n;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){const i=this.scopes.slice();for(s=0,n=i.length;s<n;s++)i[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const i=this.parent.scopes.pop();i&&i!==this&&(this.parent.scopes[this.index]=i,i.index=this.index)}this.parent=void 0}}}function Tr(){return se}let Y;const As=new WeakSet;class ci{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,se&&(se.active?se.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,As.has(this)&&(As.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||di(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Tn(this),pi(this);const t=Y,s=ye;Y=this,ye=!0;try{return this.fn()}finally{hi(this),Y=t,ye=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)rn(t);this.deps=this.depsTail=void 0,Tn(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?As.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){$s(this)&&this.run()}get dirty(){return $s(this)}}let ai=0,Vt,Ft;function di(e,t=!1){if(e.flags|=8,t){e.next=Ft,Ft=e;return}e.next=Vt,Vt=e}function sn(){ai++}function nn(){if(--ai>0)return;if(Ft){let t=Ft;for(Ft=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;Vt;){let t=Vt;for(Vt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function pi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function hi(e){let t,s=e.depsTail,n=s;for(;n;){const i=n.prevDep;n.version===-1?(n===s&&(s=i),rn(n),Or(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=i}e.deps=t,e.depsTail=s}function $s(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(gi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function gi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Ut)||(e.globalVersion=Ut,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!$s(e))))return;e.flags|=2;const t=e.dep,s=Y,n=ye;Y=e,ye=!0;try{pi(e);const i=e.fn(e._value);(t.version===0||Re(i,e._value))&&(e.flags|=128,e._value=i,t.version++)}catch(i){throw t.version++,i}finally{Y=s,ye=n,hi(e),e.flags&=-3}}function rn(e,t=!1){const{dep:s,prevSub:n,nextSub:i}=e;if(n&&(n.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let r=s.computed.deps;r;r=r.nextDep)rn(r,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Or(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let ye=!0;const mi=[];function Ge(){mi.push(ye),ye=!1}function Je(){const e=mi.pop();ye=e===void 0?!0:e}function Tn(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=Y;Y=void 0;try{t()}finally{Y=s}}}let Ut=0;class Er{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class on{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!Y||!ye||Y===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==Y)s=this.activeLink=new Er(Y,this),Y.deps?(s.prevDep=Y.depsTail,Y.depsTail.nextDep=s,Y.depsTail=s):Y.deps=Y.depsTail=s,bi(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=Y.depsTail,s.nextDep=void 0,Y.depsTail.nextDep=s,Y.depsTail=s,Y.deps===s&&(Y.deps=n)}return s}trigger(t){this.version++,Ut++,this.notify(t)}notify(t){sn();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{nn()}}}function bi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)bi(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Ks=new WeakMap,ft=Symbol(""),Bs=Symbol(""),jt=Symbol("");function re(e,t,s){if(ye&&Y){let n=Ks.get(e);n||Ks.set(e,n=new Map);let i=n.get(s);i||(n.set(s,i=new on),i.map=n,i.key=s),i.track()}}function Ke(e,t,s,n,i,r){const o=Ks.get(e);if(!o){Ut++;return}const l=u=>{u&&u.trigger()};if(sn(),t==="clear")o.forEach(l);else{const u=R(e),d=u&&Qs(s);if(u&&s==="length"){const a=Number(n);o.forEach((g,T)=>{(T==="length"||T===jt||!De(T)&&T>=a)&&l(g)})}else switch((s!==void 0||o.has(void 0))&&l(o.get(s)),d&&l(o.get(jt)),t){case"add":u?d&&l(o.get("length")):(l(o.get(ft)),et(e)&&l(o.get(Bs)));break;case"delete":u||(l(o.get(ft)),et(e)&&l(o.get(Bs)));break;case"set":et(e)&&l(o.get(ft));break}}nn()}function dt(e){const t=L(e);return t===e?t:(re(t,"iterate",jt),_e(e)?t:t.map(Ye))}function ln(e){return re(e=L(e),"iterate",jt),e}function Me(e,t){return tt(e)?Lt(bt(e)?Ye(t):t):Ye(t)}const Ar={__proto__:null,[Symbol.iterator](){return Ps(this,Symbol.iterator,e=>Me(this,e))},concat(...e){return dt(this).concat(...e.map(t=>R(t)?dt(t):t))},entries(){return Ps(this,"entries",e=>(e[1]=Me(this,e[1]),e))},every(e,t){return Ne(this,"every",e,t,void 0,arguments)},filter(e,t){return Ne(this,"filter",e,t,s=>s.map(n=>Me(this,n)),arguments)},find(e,t){return Ne(this,"find",e,t,s=>Me(this,s),arguments)},findIndex(e,t){return Ne(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ne(this,"findLast",e,t,s=>Me(this,s),arguments)},findLastIndex(e,t){return Ne(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ne(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ms(this,"includes",e)},indexOf(...e){return Ms(this,"indexOf",e)},join(e){return dt(this).join(e)},lastIndexOf(...e){return Ms(this,"lastIndexOf",e)},map(e,t){return Ne(this,"map",e,t,void 0,arguments)},pop(){return Ot(this,"pop")},push(...e){return Ot(this,"push",e)},reduce(e,...t){return On(this,"reduce",e,t)},reduceRight(e,...t){return On(this,"reduceRight",e,t)},shift(){return Ot(this,"shift")},some(e,t){return Ne(this,"some",e,t,void 0,arguments)},splice(...e){return Ot(this,"splice",e)},toReversed(){return dt(this).toReversed()},toSorted(e){return dt(this).toSorted(e)},toSpliced(...e){return dt(this).toSpliced(...e)},unshift(...e){return Ot(this,"unshift",e)},values(){return Ps(this,"values",e=>Me(this,e))}};function Ps(e,t,s){const n=ln(e),i=n[t]();return n!==e&&!_e(e)&&(i._next=i.next,i.next=()=>{const r=i._next();return r.done||(r.value=s(r.value)),r}),i}const Pr=Array.prototype;function Ne(e,t,s,n,i,r){const o=ln(e),l=o!==e&&!_e(e),u=o[t];if(u!==Pr[t]){const g=u.apply(e,r);return l?Ye(g):g}let d=s;o!==e&&(l?d=function(g,T){return s.call(this,Me(e,g),T,e)}:s.length>2&&(d=function(g,T){return s.call(this,g,T,e)}));const a=u.call(o,d,n);return l&&i?i(a):a}function On(e,t,s,n){const i=ln(e),r=i!==e&&!_e(e);let o=s,l=!1;i!==e&&(r?(l=n.length===0,o=function(d,a,g){return l&&(l=!1,d=Me(e,d)),s.call(this,d,Me(e,a),g,e)}):s.length>3&&(o=function(d,a,g){return s.call(this,d,a,g,e)}));const u=i[t](o,...n);return l?Me(e,u):u}function Ms(e,t,s){const n=L(e);re(n,"iterate",jt);const i=n[t](...s);return(i===-1||i===!1)&&cn(s[0])?(s[0]=L(s[0]),n[t](...s)):i}function Ot(e,t,s=[]){Ge(),sn();const n=L(e)[t].apply(e,s);return nn(),Je(),n}const Mr=Xs("__proto__,__v_isRef,__isVue"),yi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(De));function Ir(e){De(e)||(e=String(e));const t=L(this);return re(t,"has",e),t.hasOwnProperty(e)}class _i{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const i=this._isReadonly,r=this._isShallow;if(s==="__v_isReactive")return!i;if(s==="__v_isReadonly")return i;if(s==="__v_isShallow")return r;if(s==="__v_raw")return n===(i?r?$r:Si:r?wi:xi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=R(t);if(!i){let u;if(o&&(u=Ar[s]))return u;if(s==="hasOwnProperty")return Ir}const l=Reflect.get(t,s,oe(t)?t:n);if((De(s)?yi.has(s):Mr(s))||(i||re(t,"get",s),r))return l;if(oe(l)){const u=o&&Qs(s)?l:l.value;return i&&k(u)?ks(u):u}return k(l)?i?ks(l):mt(l):l}}class vi extends _i{constructor(t=!1){super(!1,t)}set(t,s,n,i){let r=t[s];const o=R(t)&&Qs(s);if(!this._isShallow){const d=tt(r);if(!_e(n)&&!tt(n)&&(r=L(r),n=L(n)),!o&&oe(r)&&!oe(n))return d||(r.value=n),!0}const l=o?Number(s)<t.length:$(t,s),u=Reflect.set(t,s,n,oe(t)?t:i);return t===L(i)&&u&&(l?Re(n,r)&&Ke(t,"set",s,n):Ke(t,"add",s,n)),u}deleteProperty(t,s){const n=$(t,s);t[s];const i=Reflect.deleteProperty(t,s);return i&&n&&Ke(t,"delete",s,void 0),i}has(t,s){const n=Reflect.has(t,s);return(!De(s)||!yi.has(s))&&re(t,"has",s),n}ownKeys(t){return re(t,"iterate",R(t)?"length":ft),Reflect.ownKeys(t)}}class Rr extends _i{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const Vr=new vi,Fr=new Rr,Dr=new vi(!0);const Ws=e=>e,Zt=e=>Reflect.getPrototypeOf(e);function Nr(e,t,s){return function(...n){const i=this.__v_raw,r=L(i),o=et(r),l=e==="entries"||e===Symbol.iterator&&o,u=e==="keys"&&o,d=i[e](...n),a=s?Ws:t?Lt:Ye;return!t&&re(r,"iterate",u?Bs:ft),ne(Object.create(d),{next(){const{value:g,done:T}=d.next();return T?{value:g,done:T}:{value:l?[a(g[0]),a(g[1])]:a(g),done:T}}})}}function Qt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Hr(e,t){const s={get(i){const r=this.__v_raw,o=L(r),l=L(i);e||(Re(i,l)&&re(o,"get",i),re(o,"get",l));const{has:u}=Zt(o),d=t?Ws:e?Lt:Ye;if(u.call(o,i))return d(r.get(i));if(u.call(o,l))return d(r.get(l));r!==o&&r.get(i)},get size(){const i=this.__v_raw;return!e&&re(L(i),"iterate",ft),i.size},has(i){const r=this.__v_raw,o=L(r),l=L(i);return e||(Re(i,l)&&re(o,"has",i),re(o,"has",l)),i===l?r.has(i):r.has(i)||r.has(l)},forEach(i,r){const o=this,l=o.__v_raw,u=L(l),d=t?Ws:e?Lt:Ye;return!e&&re(u,"iterate",ft),l.forEach((a,g)=>i.call(r,d(a),d(g),o))}};return ne(s,e?{add:Qt("add"),set:Qt("set"),delete:Qt("delete"),clear:Qt("clear")}:{add(i){const r=L(this),o=Zt(r),l=L(i),u=!t&&!_e(i)&&!tt(i)?l:i;return o.has.call(r,u)||Re(i,u)&&o.has.call(r,i)||Re(l,u)&&o.has.call(r,l)||(r.add(u),Ke(r,"add",u,u)),this},set(i,r){!t&&!_e(r)&&!tt(r)&&(r=L(r));const o=L(this),{has:l,get:u}=Zt(o);let d=l.call(o,i);d||(i=L(i),d=l.call(o,i));const a=u.call(o,i);return o.set(i,r),d?Re(r,a)&&Ke(o,"set",i,r):Ke(o,"add",i,r),this},delete(i){const r=L(this),{has:o,get:l}=Zt(r);let u=o.call(r,i);u||(i=L(i),u=o.call(r,i)),l&&l.call(r,i);const d=r.delete(i);return u&&Ke(r,"delete",i,void 0),d},clear(){const i=L(this),r=i.size!==0,o=i.clear();return r&&Ke(i,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(i=>{s[i]=Nr(i,e,t)}),s}function fn(e,t){const s=Hr(e,t);return(n,i,r)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?n:Reflect.get($(s,i)&&i in n?s:n,i,r)}const Ur={get:fn(!1,!1)},jr={get:fn(!1,!0)},Lr={get:fn(!0,!1)};const xi=new WeakMap,wi=new WeakMap,Si=new WeakMap,$r=new WeakMap;function Kr(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function mt(e){return tt(e)?e:un(e,!1,Vr,Ur,xi)}function Br(e){return un(e,!1,Dr,jr,wi)}function ks(e){return un(e,!0,Fr,Lr,Si)}function un(e,t,s,n,i){if(!k(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const r=i.get(e);if(r)return r;const o=Kr(hr(e));if(o===0)return e;const l=new Proxy(e,o===2?n:s);return i.set(e,l),l}function bt(e){return tt(e)?bt(e.__v_raw):!!(e&&e.__v_isReactive)}function tt(e){return!!(e&&e.__v_isReadonly)}function _e(e){return!!(e&&e.__v_isShallow)}function cn(e){return e?!!e.__v_raw:!1}function L(e){const t=e&&e.__v_raw;return t?L(t):e}function Wr(e){return!$(e,"__v_skip")&&Object.isExtensible(e)&&ri(e,"__v_skip",!0),e}const Ye=e=>k(e)?mt(e):e,Lt=e=>k(e)?ks(e):e;function oe(e){return e?e.__v_isRef===!0:!1}function He(e){return kr(e,!1)}function kr(e,t){return oe(e)?e:new qr(e,t)}class qr{constructor(t,s){this.dep=new on,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:L(t),this._value=s?t:Ye(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||_e(t)||tt(t);t=n?t:L(t),Re(t,s)&&(this._rawValue=t,this._value=n?t:Ye(t),this.dep.trigger())}}function Gr(e){return oe(e)?e.value:e}const Jr={get:(e,t,s)=>t==="__v_raw"?e:Gr(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const i=e[t];return oe(i)&&!oe(s)?(i.value=s,!0):Reflect.set(e,t,s,n)}};function Ci(e){return bt(e)?e:new Proxy(e,Jr)}class Yr{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new on(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Ut-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&Y!==this)return di(this,!0),!0}get value(){const t=this.dep.track();return gi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function zr(e,t,s=!1){let n,i;return D(e)?n=e:(n=e.get,i=e.set),new Yr(n,i,s)}const es={},os=new WeakMap;let lt;function Xr(e,t=!1,s=lt){if(s){let n=os.get(s);n||os.set(s,n=[]),n.push(e)}}function Zr(e,t,s=W){const{immediate:n,deep:i,once:r,scheduler:o,augmentJob:l,call:u}=s,d=P=>i?P:_e(P)||i===!1||i===0?Be(P,1):Be(P);let a,g,T,E,H=!1,I=!1;if(oe(e)?(g=()=>e.value,H=_e(e)):bt(e)?(g=()=>d(e),H=!0):R(e)?(I=!0,H=e.some(P=>bt(P)||_e(P)),g=()=>e.map(P=>{if(oe(P))return P.value;if(bt(P))return d(P);if(D(P))return u?u(P,2):P()})):D(e)?t?g=u?()=>u(e,2):e:g=()=>{if(T){Ge();try{T()}finally{Je()}}const P=lt;lt=a;try{return u?u(e,3,[E]):e(E)}finally{lt=P}}:g=Fe,t&&i){const P=g,Z=i===!0?1/0:i;g=()=>Be(P(),Z)}const q=Tr(),G=()=>{a.stop(),q&&q.active&&Zs(q.effects,a)};if(r&&t){const P=t;t=(...Z)=>{const he=P(...Z);return G(),he}}let N=I?new Array(e.length).fill(es):es;const j=P=>{if(!(!(a.flags&1)||!a.dirty&&!P))if(t){const Z=a.run();if(P||i||H||(I?Z.some((he,F)=>Re(he,N[F])):Re(Z,N))){T&&T();const he=lt;lt=a;try{const F=[Z,N===es?void 0:I&&N[0]===es?[]:N,E];N=Z,u?u(t,3,F):t(...F)}finally{lt=he}}}else a.run()};return l&&l(j),a=new ci(g),a.scheduler=o?()=>o(j,!1):j,E=P=>Xr(P,!1,a),T=a.onStop=()=>{const P=os.get(a);if(P){if(u)u(P,4);else for(const Z of P)Z();os.delete(a)}},t?n?j(!0):N=a.run():o?o(j.bind(null,!0),!0):a.run(),G.pause=a.pause.bind(a),G.resume=a.resume.bind(a),G.stop=G,G}function Be(e,t=1/0,s){if(t<=0||!k(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,oe(e))Be(e.value,t,s);else if(R(e))for(let n=0;n<e.length;n++)Be(e[n],t,s);else if(ke(e)||et(e))e.forEach(n=>{Be(n,t,s)});else if(ni(e)){for(const n in e)Be(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&Be(e[n],t,s)}return e}/**\n* @vue/runtime-core v3.5.42\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/function Gt(e,t,s,n){try{return n?e(...n):e()}catch(i){_s(i,t,s)}}function ve(e,t,s,n){if(D(e)){const i=Gt(e,t,s,n);return i&&ti(i)&&i.catch(r=>{_s(r,t,s)}),i}if(R(e)){const i=[];for(let r=0;r<e.length;r++)i.push(ve(e[r],t,s,n));return i}}function _s(e,t,s,n=!0){const i=t?t.vnode:null,{errorHandler:r,throwUnhandledErrorInProduction:o}=t&&t.appContext.config||W;if(t){let l=t.parent;const u=t.proxy,d=`https://vuejs.org/error-reference/#runtime-${s}`;for(;l;){const a=l.ec;if(a){for(let g=0;g<a.length;g++)if(a[g](e,u,d)===!1)return}l=l.parent}if(r){Ge(),Gt(r,null,10,[e,u,d]),Je();return}}Qr(e,s,i,n,o)}function Qr(e,t,s,n=!0,i=!1){if(i)throw e;console.error(e)}const ue=[];let Pe=-1;const yt=[];let Ze=null,pt=0;const Ti=Promise.resolve();let ls=null;function Oi(e){const t=ls||Ti;return e?t.then(this?e.bind(this):e):t}function eo(e){let t=Pe+1,s=ue.length;for(;t<s;){const n=t+s>>>1,i=ue[n],r=$t(i);r<e||r===e&&i.flags&2?t=n+1:s=n}return t}function an(e){if(!(e.flags&1)){const t=$t(e),s=ue[ue.length-1];!s||!(e.flags&2)&&t>=$t(s)?ue.push(e):ue.splice(eo(t),0,e),e.flags|=1,Ei()}}function Ei(){ls||(ls=Ti.then(Pi))}function to(e){if(!R(e))Ze&&e.id===-1?Ze.splice(pt+1,0,e):e.flags&1||(yt.push(e),e.flags|=1);else for(let t=0;t<e.length;t++)yt.push(e[t]);Ei()}function En(e,t,s=Pe+1){for(;s<ue.length;s++){const n=ue[s];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;ue.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function Ai(e){if(yt.length){const t=[...new Set(yt)].sort((s,n)=>$t(s)-$t(n));if(yt.length=0,Ze){for(let s=0;s<t.length;s++)Ze.push(t[s]);return}for(Ze=t,pt=0;pt<Ze.length;pt++){const s=Ze[pt];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}Ze=null,pt=0}}const $t=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Pi(e){try{for(Pe=0;Pe<ue.length;Pe++){const t=ue[Pe];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Gt(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Pe<ue.length;Pe++){const t=ue[Pe];t&&(t.flags&=-2)}Pe=-1,ue.length=0,Ai(),ls=null,(ue.length||yt.length)&&Pi()}}let me=null,Mi=null;function fs(e){const t=me;return me=e,Mi=e&&e.type.__scopeId||null,t}function so(e,t=me,s){if(!t||e._n)return e;const n=(...i)=>{n._d&&Un(-1);const r=fs(t),o=ut.length;let l;try{l=e(...i)}finally{for(let u=ut.length;u>o;u--)tr();fs(r),n._d&&Un(1)}return l};return n._n=!0,n._c=!0,n._d=!0,n}function z(e,t){if(me===null)return e;const s=Cs(me),n=e.dirs||(e.dirs=[]);for(let i=0;i<t.length;i++){let[r,o,l,u=W]=t[i];r&&(D(r)&&(r={mounted:r,updated:r}),r.deep&&Be(o),n.push({dir:r,instance:s,value:o,oldValue:void 0,arg:l,modifiers:u}))}return e}function rt(e,t,s,n){const i=e.dirs,r=t&&t.dirs;for(let o=0;o<i.length;o++){const l=i[o];r&&(l.oldValue=r[o].value);let u=l.dir[n];u&&(Ge(),ve(u,s,8,[e.el,l,e,t]),Je())}}function no(e,t){if(ce){let s=ce.provides;const n=ce.parent&&ce.parent.provides;n===s&&(s=ce.provides=Object.create(n)),s[e]=t}}function is(e,t,s=!1){const n=sl();if(n||_t){let i=_t?_t._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(i&&e in i)return i[e];if(arguments.length>1)return s&&D(t)?t.call(n&&n.proxy):t}}const io=Symbol.for("v-scx"),ro=()=>is(io);function Is(e,t,s){return Ii(e,t,s)}function Ii(e,t,s=W){const{immediate:n,deep:i,flush:r,once:o}=s,l=ne({},s),u=t&&n||!t&&r!=="post";let d;if(Wt){if(r==="sync"){const E=ro();d=E.__watcherHandles||(E.__watcherHandles=[])}else if(!u){const E=()=>{};return E.stop=Fe,E.resume=Fe,E.pause=Fe,E}}const a=ce;l.call=(E,H,I)=>ve(E,a,H,I);let g=!1;r==="post"?l.scheduler=E=>{ae(E,a&&a.suspense)}:r!=="sync"&&(g=!0,l.scheduler=(E,H)=>{H?E():an(E)}),l.augmentJob=E=>{t&&(E.flags|=4),g&&(E.flags|=2,a&&(E.id=a.uid,E.i=a))};const T=Zr(e,t,l);return Wt&&(d?d.push(T):u&&T()),T}function oo(e,t,s){const n=this.proxy,i=Q(e)?e.includes(".")?Ri(n,e):()=>n[e]:e.bind(n,n);let r;D(t)?r=t:(r=t.handler,s=t);const o=Jt(this),l=Ii(i,r.bind(n),s);return o(),l}function Ri(e,t){const s=t.split(".");return()=>{let n=e;for(let i=0;i<s.length&&n;i++)n=n[s[i]];return n}}const lo=Symbol("_vte"),vs=e=>e.__isTeleport,Rs=Symbol("_leaveCb");function fo(e){let t=e[0];if(e.length>1){for(const s of e)if(s.type!==ze){t=s;break}}return t}function Vi(e){if(!pn(e))return vs(e.type)&&e.children?fo(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:s}=e;if(s){if(t&16)return s[0];if(t&32&&D(s.default))return s.default()}}function dn(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const s=e.component.subTree;dn(vs(s.type)&&Vi(s)||s,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function uo(e,t){return D(e)?ne({name:e.name},t,{setup:e}):e}function Fi(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function An(e,t){let s;return!!((s=Object.getOwnPropertyDescriptor(e,t))&&!s.configurable)}const us=new WeakMap;function Dt(e,t,s,n,i=!1){if(R(e)){e.forEach((I,q)=>Dt(I,t&&(R(t)?t[q]:t),s,n,i));return}if(Nt(n)&&!i){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&Dt(e,t,s,n.component.subTree);return}const r=n.shapeFlag&4?Cs(n.component):n.el,o=i?null:r,{i:l,r:u}=e,d=t&&t.r,a=l.refs===W?l.refs={}:l.refs,g=l.setupState,T=L(g),E=g===W?ei:I=>An(a,I)?!1:$(T,I),H=(I,q)=>!(q&&An(a,q));if(d!=null&&d!==u){if(Pn(t),Q(d))a[d]=null,E(d)&&(g[d]=null);else if(oe(d)){const I=t;H(d,I.k)&&(d.value=null),I.k&&(a[I.k]=null)}}if(D(u))Gt(u,l,12,[o,a]);else{const I=Q(u),q=oe(u);if(I||q){const G=()=>{if(e.f){const N=I?E(u)?g[u]:a[u]:H()||!e.k?u.value:a[e.k];if(i)R(N)&&Zs(N,r);else if(R(N))N.includes(r)||N.push(r);else if(I)a[u]=[r],E(u)&&(g[u]=a[u]);else{const j=[r];H(u,e.k)&&(u.value=j),e.k&&(a[e.k]=j)}}else I?(a[u]=o,E(u)&&(g[u]=o)):q&&(H(u,e.k)&&(u.value=o),e.k&&(a[e.k]=o))};if(o){const N=()=>{G(),us.delete(e)};N.id=-1,us.set(e,N),ae(N,s)}else Pn(e),G()}}}function Pn(e){const t=us.get(e);t&&(t.flags|=8,us.delete(e))}ys().requestIdleCallback;ys().cancelIdleCallback;const Nt=e=>!!e.type.__asyncLoader,pn=e=>e.type.__isKeepAlive;function co(e,t){Di(e,"a",t)}function ao(e,t){Di(e,"da",t)}function Di(e,t,s=ce){const n=e.__wdc||(e.__wdc=()=>{let i=s;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(xs(t,n,s),s){let i=s.parent;for(;i&&i.parent;)pn(i.parent.vnode)&&po(n,t,s,i),i=i.parent}}function po(e,t,s,n){const i=xs(t,e,n,!0);Hi(()=>{Zs(n[t],i)},s)}function xs(e,t,s=ce,n=!1){if(s){const i=s[e]||(s[e]=[]),r=t.__weh||(t.__weh=(...o)=>{Ge();const l=Jt(s),u=ve(t,s,e,o);return l(),Je(),u});return n?i.unshift(r):i.push(r),r}}const Xe=e=>(t,s=ce)=>{(!Wt||e==="sp")&&xs(e,(...n)=>t(...n),s)},ho=Xe("bm"),Ni=Xe("m"),go=Xe("bu"),mo=Xe("u"),bo=Xe("bum"),Hi=Xe("um"),yo=Xe("sp"),_o=Xe("rtg"),vo=Xe("rtc");function xo(e,t=ce){xs("ec",e,t)}const wo=Symbol.for("v-ndc"),qs=e=>e?rr(e)?Cs(e):qs(e.parent):null,Ht=ne(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>qs(e.parent),$root:e=>qs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ji(e),$forceUpdate:e=>e.f||(e.f=()=>{an(e.update)}),$nextTick:e=>e.n||(e.n=Oi.bind(e.proxy)),$watch:e=>oo.bind(e)}),Vs=(e,t)=>e!==W&&!e.__isScriptSetup&&$(e,t),So={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:i,props:r,accessCache:o,type:l,appContext:u}=e;if(t[0]!=="$"){const T=o[t];if(T!==void 0)switch(T){case 1:return n[t];case 2:return i[t];case 4:return s[t];case 3:return r[t]}else{if(Vs(n,t))return o[t]=1,n[t];if(i!==W&&$(i,t))return o[t]=2,i[t];if($(r,t))return o[t]=3,r[t];if(s!==W&&$(s,t))return o[t]=4,s[t];Gs&&(o[t]=0)}}const d=Ht[t];let a,g;if(d)return t==="$attrs"&&re(e.attrs,"get",""),d(e);if((a=l.__cssModules)&&(a=a[t]))return a;if(s!==W&&$(s,t))return o[t]=4,s[t];if(g=u.config.globalProperties,$(g,t))return g[t]},set({_:e},t,s){const{data:n,setupState:i,ctx:r}=e;return Vs(i,t)?(i[t]=s,!0):n!==W&&$(n,t)?(n[t]=s,!0):$(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:i,props:r,type:o}},l){let u;return!!(s[l]||e!==W&&l[0]!=="$"&&$(e,l)||Vs(t,l)||$(r,l)||$(n,l)||$(Ht,l)||$(i.config.globalProperties,l)||(u=o.__cssModules)&&u[l])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:$(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function Mn(e){return R(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let Gs=!0;function Co(e){const t=ji(e),s=e.proxy,n=e.ctx;Gs=!1,t.beforeCreate&&In(t.beforeCreate,e,"bc");const{data:i,computed:r,methods:o,watch:l,provide:u,inject:d,created:a,beforeMount:g,mounted:T,beforeUpdate:E,updated:H,activated:I,deactivated:q,beforeDestroy:G,beforeUnmount:N,destroyed:j,unmounted:P,render:Z,renderTracked:he,renderTriggered:F,errorCaptured:p,serverPrefetch:O,expose:ge,inheritAttrs:xe,components:ct,directives:at,filters:wt}=t;if(d&&To(d,n,null),o)for(const X in o){const J=o[X];D(J)&&(n[X]=J.bind(s))}if(i){const X=i.call(s,s);k(X)&&(e.data=mt(X))}if(Gs=!0,r)for(const X in r){const J=r[X],nt=D(J)?J.bind(s,s):D(J.get)?J.get.bind(s,s):Fe,zt=!D(J)&&D(J.set)?J.set.bind(s):Fe,it=lr({get:nt,set:zt});Object.defineProperty(n,X,{enumerable:!0,configurable:!0,get:()=>it.value,set:we=>it.value=we})}if(l)for(const X in l)Ui(l[X],n,s,X);if(u){const X=D(u)?u.call(s):u;Reflect.ownKeys(X).forEach(J=>{no(J,X[J])})}a&&In(a,e,"c");function le(X,J){R(J)?J.forEach(nt=>X(nt.bind(s))):J&&X(J.bind(s))}if(le(ho,g),le(Ni,T),le(go,E),le(mo,H),le(co,I),le(ao,q),le(xo,p),le(vo,he),le(_o,F),le(bo,N),le(Hi,P),le(yo,O),R(ge))if(ge.length){const X=e.exposed||(e.exposed={});ge.forEach(J=>{Object.defineProperty(X,J,{get:()=>s[J],set:nt=>s[J]=nt,enumerable:!0})})}else e.exposed||(e.exposed={});Z&&e.render===Fe&&(e.render=Z),xe!=null&&(e.inheritAttrs=xe),ct&&(e.components=ct),at&&(e.directives=at),O&&Fi(e)}function To(e,t,s=Fe){R(e)&&(e=Js(e));for(const n in e){const i=e[n];let r;k(i)?"default"in i?r=is(i.from||n,i.default,!0):r=is(i.from||n):r=is(i),oe(r)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:o=>r.value=o}):t[n]=r}}function In(e,t,s){ve(R(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function Ui(e,t,s,n){let i=n.includes(".")?Ri(s,n):()=>s[n];if(Q(e)){const r=t[e];D(r)&&Is(i,r)}else if(D(e))Is(i,e.bind(s));else if(k(e))if(R(e))e.forEach(r=>Ui(r,t,s,n));else{const r=D(e.handler)?e.handler.bind(s):t[e.handler];D(r)&&Is(i,r,e)}}function ji(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:i,optionsCache:r,config:{optionMergeStrategies:o}}=e.appContext,l=r.get(t);let u;return l?u=l:!i.length&&!s&&!n?u=t:(u={},i.length&&i.forEach(d=>cs(u,d,o,!0)),cs(u,t,o)),k(t)&&r.set(t,u),u}function cs(e,t,s,n=!1){const{mixins:i,extends:r}=t;r&&cs(e,r,s,!0),i&&i.forEach(o=>cs(e,o,s,!0));for(const o in t)if(!(n&&o==="expose")){const l=Oo[o]||s&&s[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Oo={data:Rn,props:Vn,emits:Vn,methods:Mt,computed:Mt,beforeCreate:fe,created:fe,beforeMount:fe,mounted:fe,beforeUpdate:fe,updated:fe,beforeDestroy:fe,beforeUnmount:fe,destroyed:fe,unmounted:fe,activated:fe,deactivated:fe,errorCaptured:fe,serverPrefetch:fe,components:Mt,directives:Mt,watch:Ao,provide:Rn,inject:Eo};function Rn(e,t){return t?e?function(){return ne(D(e)?e.call(this,this):e,D(t)?t.call(this,this):t)}:t:e}function Eo(e,t){return Mt(Js(e),Js(t))}function Js(e){if(R(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function fe(e,t){return e?[...new Set([].concat(e,t))]:t}function Mt(e,t){return e?ne(Object.create(null),e,t):t}function Vn(e,t){return e?R(e)&&R(t)?[...new Set([...e,...t])]:ne(Object.create(null),Mn(e),Mn(t??{})):t}function Ao(e,t){if(!e)return t;if(!t)return e;const s=ne(Object.create(null),e);for(const n in t)s[n]=fe(e[n],t[n]);return s}function Li(){return{app:null,config:{isNativeTag:ei,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Po=0;function Mo(e,t){return function(n,i=null){D(n)||(n=ne({},n)),i!=null&&!k(i)&&(i=null);const r=Li(),o=new WeakSet,l=[];let u=!1;const d=r.app={_uid:Po++,_component:n,_props:i,_container:null,_context:r,_instance:null,version:fl,get config(){return r.config},set config(a){},use(a,...g){return o.has(a)||(a&&D(a.install)?(o.add(a),a.install(d,...g)):D(a)&&(o.add(a),a(d,...g))),d},mixin(a){return r.mixins.includes(a)||r.mixins.push(a),d},component(a,g){return g?(r.components[a]=g,d):r.components[a]},directive(a,g){return g?(r.directives[a]=g,d):r.directives[a]},mount(a,g,T){if(!u){const E=d._ceVNode||We(n,i);return E.appContext=r,T===!0?T="svg":T===!1&&(T=void 0),e(E,a,T),u=!0,d._container=a,a.__vue_app__=d,Cs(E.component)}},onUnmount(a){l.push(a)},unmount(){u&&(ve(l,d._instance,16),e(null,d._container),delete d._container.__vue_app__)},provide(a,g){return r.provides[a]=g,d},runWithContext(a){const g=_t;_t=d;try{return a()}finally{_t=g}}};return d}}let _t=null;const Io=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${be(t)}Modifiers`]||e[`${st(t)}Modifiers`];function Ro(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||W;let i=s;const r=t.startsWith("update:"),o=r&&Io(n,t.slice(7));o&&(o.trim&&(i=s.map(a=>Q(a)?a.trim():a)),o.number&&(i=i.map(bs)));let l,u=n[l=Os(t)]||n[l=Os(be(t))];!u&&r&&(u=n[l=Os(st(t))]),u&&ve(u,e,6,i);const d=n[l+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,ve(d,e,6,i)}}const Vo=new WeakMap;function $i(e,t,s=!1){const n=s?Vo:t.emitsCache,i=n.get(e);if(i!==void 0)return i;const r=e.emits;let o={},l=!1;if(!D(e)){const u=d=>{const a=$i(d,t,!0);a&&(l=!0,ne(o,a))};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!r&&!l?(k(e)&&n.set(e,null),null):(R(r)?r.forEach(u=>o[u]=null):ne(o,r),k(e)&&n.set(e,o),o)}function ws(e,t){return!e||!hs(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),$(e,t[0].toLowerCase()+t.slice(1))||$(e,st(t))||$(e,t))}function Fn(e){const{type:t,vnode:s,proxy:n,withProxy:i,propsOptions:[r],slots:o,attrs:l,emit:u,render:d,renderCache:a,props:g,data:T,setupState:E,ctx:H,inheritAttrs:I}=e,q=fs(e);let G,N;try{if(s.shapeFlag&4){const P=i||n,Z=P;G=Ie(d.call(Z,P,a,g,E,T,H)),N=l}else{const P=t;G=Ie(P.length>1?P(g,{attrs:l,slots:o,emit:u}):P(g,null)),N=t.props?l:Fo(l)}}catch(P){ut.length=0,_s(P,e,1),G=We(ze)}let j=G;if(N&&I!==!1){const P=Object.keys(N),{shapeFlag:Z}=j;P.length&&Z&7&&(r&&P.some(gs)&&(N=Do(N,r)),j=vt(j,N,!1,!0))}if(s.dirs&&(j=vt(j,null,!1,!0),j.dirs=j.dirs?j.dirs.concat(s.dirs):s.dirs),s.transition){const P=vs(j.type)&&Vi(j)||j;dn(P,s.transition)}return G=j,fs(q),G}const Fo=e=>{let t;for(const s in e)(s==="class"||s==="style"||hs(s))&&((t||(t={}))[s]=e[s]);return t},Do=(e,t)=>{const s={};for(const n in e)(!gs(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function No(e,t,s){const{props:n,children:i,component:r}=e,{props:o,children:l,patchFlag:u}=t,d=r.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return n?Dn(n,o,d):!!o;if(u&8){const a=t.dynamicProps;for(let g=0;g<a.length;g++){const T=a[g];if(Ki(o,n,T)&&!ws(d,T))return!0}}}else return(i||l)&&(!l||!l.$stable)?!0:n===o?!1:n?o?Dn(n,o,d):!0:!!o;return!1}function Dn(e,t,s){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let i=0;i<n.length;i++){const r=n[i];if(Ki(t,e,r)&&!ws(s,r))return!0}return!1}function Ki(e,t,s){const n=e[s],i=t[s];return s==="style"&&k(n)&&k(i)?!qe(n,i):n!==i}function Ho({vnode:e,parent:t,suspense:s},n){for(;t;){const i=t.subTree;if(i.suspense&&i.suspense.activeBranch===e&&(i.suspense.vnode.el=i.el=n,e=i),i===e)(e=t.vnode).el=n,t=t.parent;else break}s&&s.activeBranch===e&&(s.vnode.el=n)}const Bi={},Wi=()=>Object.create(Bi),ki=e=>Object.getPrototypeOf(e)===Bi;function Uo(e,t,s,n=!1){const i={},r=Wi();e.propsDefaults=Object.create(null),qi(e,t,i,r);for(const o in e.propsOptions[0])o in i||(i[o]=void 0);s?e.props=n?i:Br(i):e.type.props?e.props=i:e.props=r,e.attrs=r}function jo(e,t,s,n){const{props:i,attrs:r,vnode:{patchFlag:o}}=e,l=L(i),[u]=e.propsOptions;let d=!1;if((n||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let g=0;g<a.length;g++){let T=a[g];if(ws(e.emitsOptions,T))continue;const E=t[T];if(u)if($(r,T))E!==r[T]&&(r[T]=E,d=!0);else{const H=be(T);i[H]=Ys(u,l,H,E,e,!1)}else E!==r[T]&&(r[T]=E,d=!0)}}}else{qi(e,t,i,r)&&(d=!0);let a;for(const g in l)(!t||!$(t,g)&&((a=st(g))===g||!$(t,a)))&&(u?s&&(s[g]!==void 0||s[a]!==void 0)&&(i[g]=Ys(u,l,g,void 0,e,!0)):delete i[g]);if(r!==l)for(const g in r)(!t||!$(t,g))&&(delete r[g],d=!0)}d&&Ke(e.attrs,"set","")}function qi(e,t,s,n){const[i,r]=e.propsOptions;let o=!1,l;if(t)for(let u in t){if(Rt(u))continue;const d=t[u];let a;i&&$(i,a=be(u))?!r||!r.includes(a)?s[a]=d:(l||(l={}))[a]=d:ws(e.emitsOptions,u)||(!(u in n)||d!==n[u])&&(n[u]=d,o=!0)}if(r){const u=L(s),d=l||W;for(let a=0;a<r.length;a++){const g=r[a];s[g]=Ys(i,u,g,d[g],e,!$(d,g))}}return o}function Ys(e,t,s,n,i,r){const o=e[s];if(o!=null){const l=$(o,"default");if(l&&n===void 0){const u=o.default;if(o.type!==Function&&!o.skipFactory&&D(u)){const{propsDefaults:d}=i;if(s in d)n=d[s];else{const a=Jt(i);n=d[s]=u.call(null,t),a()}}else n=u;i.ce&&i.ce._setProp(s,n)}o[0]&&(r&&!l?n=!1:o[1]&&(n===""||n===st(s))&&(n=!0))}return n}const Lo=new WeakMap;function Gi(e,t,s=!1){const n=s?Lo:t.propsCache,i=n.get(e);if(i)return i;const r=e.props,o={},l=[];let u=!1;if(!D(e)){const a=g=>{u=!0;const[T,E]=Gi(g,t,!0);ne(o,T),E&&l.push(...E)};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!r&&!u)return k(e)&&n.set(e,ht),ht;if(R(r))for(let a=0;a<r.length;a++){const g=be(r[a]);Nn(g)&&(o[g]=W)}else if(r)for(const a in r){const g=be(a);if(Nn(g)){const T=r[a],E=o[g]=R(T)||D(T)?{type:T}:ne({},T),H=E.type;let I=!1,q=!0;if(R(H))for(let G=0;G<H.length;++G){const N=H[G],j=D(N)&&N.name;if(j==="Boolean"){I=!0;break}else j==="String"&&(q=!1)}else I=D(H)&&H.name==="Boolean";E[0]=I,E[1]=q,(I||$(E,"default"))&&l.push(g)}}const d=[o,l];return k(e)&&n.set(e,d),d}function Nn(e){return e[0]!=="$"&&!Rt(e)}const hn=e=>e==="_"||e==="_ctx"||e==="$stable",gn=e=>R(e)?e.map(Ie):[Ie(e)],$o=(e,t,s)=>{if(t._n)return t;const n=so((...i)=>gn(t(...i)),s);return n._c=!1,n},Ji=(e,t,s)=>{const n=e._ctx;for(const i in e){if(hn(i))continue;const r=e[i];if(D(r))t[i]=$o(i,r,n);else if(r!=null){const o=gn(r);t[i]=()=>o}}},Yi=(e,t)=>{const s=gn(t);e.slots.default=()=>s},zi=(e,t,s)=>{for(const n in t)(s||!hn(n))&&(e[n]=t[n])},Ko=(e,t,s)=>{const n=e.slots=Wi();if(e.vnode.shapeFlag&32){const i=t._;i?(zi(n,t,s),s&&ri(n,"_",i,!0)):Ji(t,n)}else t&&Yi(e,t)},Bo=(e,t,s)=>{const{vnode:n,slots:i}=e;let r=!0,o=W;if(n.shapeFlag&32){const l=t._;l?s&&l===1?r=!1:zi(i,t,s):(r=!t.$stable,Ji(t,i)),o=t}else t&&(Yi(e,t),o={default:1});if(r)for(const l in i)!hn(l)&&o[l]==null&&delete i[l]},ae=Jo;function Wo(e){return ko(e)}function ko(e,t){const s=ys();s.__VUE__=!0;const{insert:n,remove:i,patchProp:r,createElement:o,createText:l,createComment:u,setText:d,setElementText:a,parentNode:g,nextSibling:T,setScopeId:E=Fe,insertStaticContent:H}=e,I=(f,c,h,v=null,_=null,b=null,S=void 0,w=null,x=!!c.dynamicChildren)=>{if(f===c)return;f&&!Et(f,c)&&(v=Xt(f),we(f,_,b,!0),f=null),c.patchFlag===-2&&(x=!1,c.dynamicChildren=null);const{type:y,ref:M,shapeFlag:C}=c;switch(y){case Ss:q(f,c,h,v);break;case ze:G(f,c,h,v);break;case Ds:f==null&&N(c,h,v,S);break;case Le:ct(f,c,h,v,_,b,S,w,x);break;default:C&1?Z(f,c,h,v,_,b,S,w,x):C&6?at(f,c,h,v,_,b,S,w,x):(C&64||C&128)&&y.process(f,c,h,v,_,b,S,w,x,Ct)}M!=null&&_?Dt(M,f&&f.ref,b,c||f,!c):M==null&&f&&f.ref!=null&&Dt(f.ref,null,b,f,!0)},q=(f,c,h,v)=>{if(f==null)n(c.el=l(c.children),h,v);else{const _=c.el=f.el;c.children!==f.children&&d(_,c.children)}},G=(f,c,h,v)=>{f==null?n(c.el=u(c.children||""),h,v):c.el=f.el},N=(f,c,h,v)=>{[f.el,f.anchor]=H(f.children,c,h,v,f.el,f.anchor)},j=({el:f,anchor:c},h,v)=>{let _;for(;f&&f!==c;)_=T(f),n(f,h,v),f=_;n(c,h,v)},P=({el:f,anchor:c})=>{let h;for(;f&&f!==c;)h=T(f),i(f),f=h;i(c)},Z=(f,c,h,v,_,b,S,w,x)=>{if(c.type==="svg"?S="svg":c.type==="math"&&(S="mathml"),f==null)he(c,h,v,_,b,S,w,x);else{const y=f.el&&f.el._isVueCE?f.el:null;try{y&&y._beginPatch(),O(f,c,_,b,S,w,x)}finally{y&&y._endPatch()}}},he=(f,c,h,v,_,b,S,w)=>{let x,y;const{props:M,shapeFlag:C,transition:A,dirs:V}=f;if(x=f.el=o(f.type,b,M&&M.is,M),C&8?a(x,f.children):C&16&&p(f.children,x,null,v,_,Fs(f,b),S,w),V&&rt(f,null,v,"created"),F(x,f,f.scopeId,S,v),M){for(const B in M)B!=="value"&&!Rt(B)&&r(x,B,null,M[B],b,v);"value"in M&&r(x,"value",null,M.value,b),(y=M.onVnodeBeforeMount)&&Oe(y,v,f)}V&&rt(f,null,v,"beforeMount");const U=qo(_,A);U&&A.beforeEnter(x),n(x,c,h),((y=M&&M.onVnodeMounted)||U||V)&&ae(()=>{try{y&&Oe(y,v,f),U&&A.enter(x),V&&rt(f,null,v,"mounted")}finally{}},_)},F=(f,c,h,v,_)=>{if(h&&E(f,h),v)for(let b=0;b<v.length;b++)E(f,v[b]);if(_){let b=_.subTree;if(c===b||er(b.type)&&(b.ssContent===c||b.ssFallback===c)){const S=_.vnode;F(f,S,S.scopeId,S.slotScopeIds,_.parent)}}},p=(f,c,h,v,_,b,S,w,x=0)=>{for(let y=x;y<f.length;y++){const M=f[y]=w?$e(f[y]):Ie(f[y]);I(null,M,c,h,v,_,b,S,w)}},O=(f,c,h,v,_,b,S)=>{const w=c.el=f.el;let{patchFlag:x,dynamicChildren:y,dirs:M}=c;x|=f.patchFlag&16;const C=f.props||W,A=c.props||W;let V;if(h&&ot(h,!1),(V=A.onVnodeBeforeUpdate)&&Oe(V,h,c,f),M&&rt(c,f,h,"beforeUpdate"),h&&ot(h,!0),y&&(!f.dynamicChildren||f.dynamicChildren.length!==y.length)&&(x=0,S=!1,y=null),(C.innerHTML&&A.innerHTML==null||C.textContent&&A.textContent==null)&&a(w,""),y?ge(f.dynamicChildren,y,w,h,v,Fs(c,_),b):S||J(f,c,w,null,h,v,Fs(c,_),b,!1),x>0){if(x&16)xe(w,C,A,h,_);else if(x&2&&C.class!==A.class&&r(w,"class",null,A.class,_),x&4&&r(w,"style",C.style,A.style,_),x&8){const U=c.dynamicProps;for(let B=0;B<U.length;B++){const K=U[B],ee=C[K],te=A[K];(te!==ee||K==="value")&&r(w,K,ee,te,_,h)}}x&1&&f.children!==c.children&&a(w,c.children)}else!S&&y==null&&xe(w,C,A,h,_);((V=A.onVnodeUpdated)||M)&&ae(()=>{V&&Oe(V,h,c,f),M&&rt(c,f,h,"updated")},v)},ge=(f,c,h,v,_,b,S)=>{for(let w=0;w<c.length;w++){const x=f[w],y=c[w],M=x.el&&(x.type===Le||!Et(x,y)||x.shapeFlag&198)?g(x.el):h;I(x,y,M,null,v,_,b,S,!0)}},xe=(f,c,h,v,_)=>{if(c!==h){if(c!==W)for(const b in c)!Rt(b)&&!(b in h)&&r(f,b,c[b],null,_,v);for(const b in h){if(Rt(b))continue;const S=h[b],w=c[b];S!==w&&b!=="value"&&r(f,b,w,S,_,v)}"value"in h&&r(f,"value",c.value,h.value,_)}},ct=(f,c,h,v,_,b,S,w,x)=>{const y=c.el=f?f.el:l(""),M=c.anchor=f?f.anchor:l("");let{patchFlag:C,dynamicChildren:A,slotScopeIds:V}=c;V&&(w=w?w.concat(V):V),f==null?(n(y,h,v),n(M,h,v),p(c.children||[],h,M,_,b,S,w,x)):C>0&&C&64&&A&&f.dynamicChildren&&f.dynamicChildren.length===A.length?(ge(f.dynamicChildren,A,h,_,b,S,w),(c.key!=null||_&&c===_.subTree)&&Xi(f,c,!0)):J(f,c,h,M,_,b,S,w,x)},at=(f,c,h,v,_,b,S,w,x)=>{c.slotScopeIds=w,f==null?c.shapeFlag&512?_.ctx.activate(c,h,v,S,x):wt(c,h,v,_,b,S,x):mn(f,c,x)},wt=(f,c,h,v,_,b,S)=>{const w=f.component=tl(f,v,_);if(pn(f)&&(w.ctx.renderer=Ct),nl(w,!1,S),w.asyncDep){if(_&&_.registerDep(w,le,S),!f.el){const x=w.subTree=We(ze);G(null,x,c,h),f.placeholder=x.el}}else le(w,f,c,h,_,b,S)},mn=(f,c,h)=>{const v=c.component=f.component;if(No(f,c,h))if(v.asyncDep&&!v.asyncResolved){X(v,c,h);return}else v.next=c,v.update();else c.el=f.el,v.vnode=c},le=(f,c,h,v,_,b,S)=>{const w=()=>{if(f.isMounted){let{next:C,bu:A,u:V,parent:U,vnode:B}=f;{const Ce=Zi(f);if(Ce){C&&(C.el=B.el,X(f,C,S)),Ce.asyncDep.then(()=>{ae(()=>{f.isUnmounted||y()},_)});return}}let K=C,ee;ot(f,!1),C?(C.el=B.el,X(f,C,S)):C=B,A&&ns(A),(ee=C.props&&C.props.onVnodeBeforeUpdate)&&Oe(ee,U,C,B),ot(f,!0);const te=Fn(f),Se=f.subTree;f.subTree=te,I(Se,te,g(Se.el),Xt(Se),f,_,b),C.el=te.el,K===null&&Ho(f,te.el),V&&ae(V,_),(ee=C.props&&C.props.onVnodeUpdated)&&ae(()=>Oe(ee,U,C,B),_)}else{let C;const{el:A,props:V}=c,{bm:U,m:B,parent:K,root:ee,type:te}=f,Se=Nt(c);ot(f,!1),U&&ns(U),!Se&&(C=V&&V.onVnodeBeforeMount)&&Oe(C,K,c),ot(f,!0);{ee.ce&&ee.ce._hasShadowRoot()&&ee.ce._injectChildStyle(te,f.parent?f.parent.type:void 0);const Ce=f.subTree=Fn(f);I(null,Ce,h,v,f,_,b),c.el=Ce.el}if(B&&ae(B,_),!Se&&(C=V&&V.onVnodeMounted)){const Ce=c;ae(()=>Oe(C,K,Ce),_)}(c.shapeFlag&256||K&&Nt(K.vnode)&&K.vnode.shapeFlag&256)&&f.a&&ae(f.a,_),f.isMounted=!0,c=h=v=null}};f.scope.on();const x=f.effect=new ci(w);f.scope.off();const y=f.update=x.run.bind(x),M=f.job=x.runIfDirty.bind(x);M.i=f,M.id=f.uid,x.scheduler=()=>an(M),ot(f,!0),y()},X=(f,c,h)=>{c.component=f;const v=f.vnode.props;f.vnode=c,f.next=null,jo(f,c.props,v,h),Bo(f,c.children,h),Ge(),En(f),Je()},J=(f,c,h,v,_,b,S,w,x=!1)=>{const y=f&&f.children,M=f?f.shapeFlag:0,C=c.children,{patchFlag:A,shapeFlag:V}=c;if(A>0){if(A&128){zt(y,C,h,v,_,b,S,w,x);return}else if(A&256){nt(y,C,h,v,_,b,S,w,x);return}}V&8?(M&16&&St(y,_,b),C!==y&&a(h,C)):M&16?V&16?zt(y,C,h,v,_,b,S,w,x):St(y,_,b,!0):(M&8&&a(h,""),V&16&&p(C,h,v,_,b,S,w,x))},nt=(f,c,h,v,_,b,S,w,x)=>{f=f||ht,c=c||ht;const y=f.length,M=c.length,C=Math.min(y,M);let A;for(A=0;A<C;A++){const V=c[A]=x?$e(c[A]):Ie(c[A]);I(f[A],V,h,null,_,b,S,w,x)}y>M?St(f,_,b,!0,!1,C):p(c,h,v,_,b,S,w,x,C)},zt=(f,c,h,v,_,b,S,w,x)=>{let y=0;const M=c.length;let C=f.length-1,A=M-1;for(;y<=C&&y<=A;){const V=f[y],U=c[y]=x?$e(c[y]):Ie(c[y]);if(Et(V,U))I(V,U,h,null,_,b,S,w,x);else break;y++}for(;y<=C&&y<=A;){const V=f[C],U=c[A]=x?$e(c[A]):Ie(c[A]);if(Et(V,U))I(V,U,h,null,_,b,S,w,x);else break;C--,A--}if(y>C){if(y<=A){const V=A+1,U=V<M?c[V].el:v;for(;y<=A;)I(null,c[y]=x?$e(c[y]):Ie(c[y]),h,U,_,b,S,w,x),y++}}else if(y>A)for(;y<=C;)we(f[y],_,b,!0),y++;else{const V=y,U=y,B=new Map;for(y=U;y<=A;y++){const de=c[y]=x?$e(c[y]):Ie(c[y]);de.key!=null&&B.set(de.key,y)}let K,ee=0;const te=A-U+1;let Se=!1,Ce=0;const Tt=new Array(te);for(y=0;y<te;y++)Tt[y]=0;for(y=V;y<=C;y++){const de=f[y];if(ee>=te){we(de,_,b,!0);continue}let Te;if(de.key!=null)Te=B.get(de.key);else for(K=U;K<=A;K++)if(Tt[K-U]===0&&Et(de,c[K])){Te=K;break}Te===void 0?we(de,_,b,!0):(Tt[Te-U]=y+1,Te>=Ce?Ce=Te:Se=!0,I(de,c[Te],h,null,_,b,S,w,x),ee++)}const _n=Se?Go(Tt):ht;for(K=_n.length-1,y=te-1;y>=0;y--){const de=U+y,Te=c[de],vn=c[de+1],xn=de+1<M?vn.el||Qi(vn):v;Tt[y]===0?I(null,Te,h,xn,_,b,S,w,x):Se&&(K<0||y!==_n[K]?it(Te,h,xn,2):K--)}}},it=(f,c,h,v,_=null)=>{const{el:b,type:S,transition:w,children:x,shapeFlag:y}=f;if(y&6){it(f.component.subTree,c,h,v);return}if(y&128){f.suspense.move(c,h,v);return}if(y&64){S.move(f,c,h,Ct);return}if(S===Le){n(b,c,h);for(let C=0;C<x.length;C++)it(x[C],c,h,v);n(f.anchor,c,h);return}if(S===Ds){j(f,c,h);return}if(v!==2&&y&1&&w)if(v===0)w.persisted&&!b[Rs]?n(b,c,h):(w.beforeEnter(b),n(b,c,h),ae(()=>w.enter(b),_));else{const{leave:C,delayLeave:A,afterLeave:V}=w,U=()=>{f.ctx.isUnmounted?i(b):n(b,c,h)},B=()=>{const K=b._isLeaving||!!b[Rs];b._isLeaving&&b[Rs](!0),w.persisted&&!K?U():C(b,()=>{U(),V&&V()})};A?A(b,U,B):B()}else n(b,c,h)},we=(f,c,h,v=!1,_=!1)=>{const{type:b,props:S,ref:w,children:x,dynamicChildren:y,shapeFlag:M,patchFlag:C,dirs:A,cacheIndex:V,memo:U}=f;if(C===-2&&(_=!1),w!=null&&(Ge(),Dt(w,null,h,f,!0),Je()),V!=null&&(c.renderCache[V]=void 0),M&256){c.ctx.deactivate(f);return}const B=M&1&&A,K=!Nt(f);let ee;if(K&&(ee=S&&S.onVnodeBeforeUnmount)&&Oe(ee,c,f),M&6)dr(f.component,h,v);else{if(M&128){f.suspense.unmount(h,v);return}B&&rt(f,null,c,"beforeUnmount"),M&64?f.type.remove(f,c,h,Ct,v):y&&!y.hasOnce&&(b!==Le||C>0&&C&64)?St(y,c,h,!1,!0):(b===Le&&C&384||!_&&M&16)&&St(x,c,h),v&&bn(f)}const te=U!=null&&V==null;(K&&(ee=S&&S.onVnodeUnmounted)||B||te)&&ae(()=>{ee&&Oe(ee,c,f),B&&rt(f,null,c,"unmounted"),te&&(f.el=null)},h)},bn=f=>{const{type:c,el:h,anchor:v,transition:_}=f;if(c===Le){ar(h,v);return}if(c===Ds){P(f);return}const b=()=>{i(h),_&&!_.persisted&&_.afterLeave&&_.afterLeave()};if(f.shapeFlag&1&&_&&!_.persisted){const{leave:S,delayLeave:w}=_,x=()=>S(h,b);w?w(f.el,b,x):x()}else b()},ar=(f,c)=>{let h;for(;f!==c;)h=T(f),i(f),f=h;i(c)},dr=(f,c,h)=>{const{bum:v,scope:_,job:b,subTree:S,um:w,m:x,a:y}=f;Hn(x),Hn(y),v&&ns(v),_.stop(),b&&(b.flags|=8,we(S,f,c,h)),w&&ae(w,c),ae(()=>{f.isUnmounted=!0},c)},St=(f,c,h,v=!1,_=!1,b=0)=>{for(let S=b;S<f.length;S++)we(f[S],c,h,v,_)},Xt=f=>{if(f.shapeFlag&6)return Xt(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const c=T(f.anchor||f.el),h=c&&c[lo];return h?T(h):c};let Ts=!1;const yn=(f,c,h)=>{let v;f==null?c._vnode&&(we(c._vnode,null,null,!0),v=c._vnode.component):I(c._vnode||null,f,c,null,null,null,h),c._vnode=f,Ts||(Ts=!0,En(v),Ai(),Ts=!1)},Ct={p:I,um:we,m:it,r:bn,mt:wt,mc:p,pc:J,pbc:ge,n:Xt,o:e};return{render:yn,hydrate:void 0,createApp:Mo(yn)}}function Fs({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function ot({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function qo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Xi(e,t,s=!1){const n=e.children,i=t.children;if(R(n)&&R(i))for(let r=0;r<n.length;r++){const o=n[r];let l=i[r];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=i[r]=$e(i[r]),l.el=o.el),!s&&l.patchFlag!==-2&&Xi(o,l)),l.type===Ss&&(l.patchFlag===-1&&(l=i[r]=$e(l)),l.el=o.el),l.type===ze&&!l.el&&(l.el=o.el)}}function Go(e){const t=e.slice(),s=[0];let n,i,r,o,l;const u=e.length;for(n=0;n<u;n++){const d=e[n];if(d!==0){if(i=s[s.length-1],e[i]<d){t[n]=i,s.push(n);continue}for(r=0,o=s.length-1;r<o;)l=r+o>>1,e[s[l]]<d?r=l+1:o=l;d<e[s[r]]&&(r>0&&(t[n]=s[r-1]),s[r]=n)}}for(r=s.length,o=s[r-1];r-- >0;)s[r]=o,o=t[o];return s}function Zi(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Zi(t)}function Hn(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function Qi(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?Qi(t.subTree):null}const er=e=>e.__isSuspense;function Jo(e,t){t&&t.pendingBranch?R(e)?t.effects.push(...e):t.effects.push(e):to(e)}const Le=Symbol.for("v-fgt"),Ss=Symbol.for("v-txt"),ze=Symbol.for("v-cmt"),Ds=Symbol.for("v-stc"),ut=[];let pe=null;function Ee(e=!1){ut.push(pe=e?null:[])}function tr(){ut.pop(),pe=ut[ut.length-1]||null}let Kt=1;function Un(e,t=!1){Kt+=e,e<0&&pe&&t&&(pe.hasOnce=!0)}function sr(e){return e.dynamicChildren=Kt>0?pe||ht:null,tr(),Kt>0&&pe&&pe.push(e),e}function Ue(e,t,s,n,i,r){return sr(m(e,t,s,n,i,r,!0))}function Yo(e,t,s,n,i){return sr(We(e,t,s,n,i,!0))}function nr(e){return e?e.__v_isVNode===!0:!1}function Et(e,t){return e.type===t.type&&e.key===t.key}const ir=({key:e})=>e??null,rs=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?Q(e)||oe(e)||D(e)?{i:me,r:e,k:t,f:!!s}:e:null);function m(e,t=null,s=null,n=0,i=null,r=e===Le?0:1,o=!1,l=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ir(t),ref:t&&rs(t),scopeId:Mi,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:n,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:me};return l?(as(u,s),r&128&&e.normalize(u)):s&&(u.shapeFlag|=Q(s)?8:16),Kt>0&&!o&&pe&&(u.patchFlag>0||r&6)&&u.patchFlag!==32&&pe.push(u),u}const We=zo;function zo(e,t=null,s=null,n=0,i=null,r=!1){if((!e||e===wo)&&(e=ze),nr(e)){const l=vt(e,t,!0);return s&&as(l,s),Kt>0&&!r&&pe&&(l.shapeFlag&6?pe[pe.indexOf(e)]=l:pe.push(l)),l.patchFlag=-2,l}if(ll(e)&&(e=e.__vccOpts),t){t=Xo(t);let{class:l,style:u}=t;l&&!Q(l)&&(t.class=gt(l)),k(u)&&(cn(u)&&!R(u)&&(u=ne({},u)),t.style=en(u))}const o=Q(e)?1:er(e)?128:vs(e)?64:k(e)?4:D(e)?2:0;return m(e,t,s,n,i,o,r,!0)}function Xo(e){return e?cn(e)||ki(e)?ne({},e):e:null}function vt(e,t,s=!1,n=!1){const{props:i,ref:r,patchFlag:o,children:l,transition:u}=e,d=t?Zo(i||{},t):i,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&ir(d),ref:t&&t.ref?s&&r?R(r)?r.concat(rs(t)):[r,rs(t)]:rs(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Le?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&vt(e.ssContent),ssFallback:e.ssFallback&&vt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&n&&dn(a,u.clone(a)),a}function Ae(e=" ",t=0){return We(Ss,null,e,t)}function At(e="",t=!1){return t?(Ee(),Yo(ze,null,e)):We(ze,null,e)}function Ie(e){return e==null||typeof e=="boolean"?We(ze):R(e)?We(Le,null,e.slice()):nr(e)?$e(e):We(Ss,null,String(e))}function $e(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:vt(e)}function as(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(R(t))s=16;else if(typeof t=="object")if(n&65){const i=t.default;i&&(i._c&&(i._d=!1),as(e,i()),i._c&&(i._d=!0));return}else{s=32;const i=t._;!i&&!ki(t)?t._ctx=me:i===3&&me&&(me.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(D(t)){if(n&65){as(e,{default:t});return}t={default:t,_ctx:me},s=32}else t=String(t),n&64?(s=16,t=[Ae(t)]):s=8;e.children=t,e.shapeFlag|=s}function Zo(...e){const t={};for(let s=0;s<e.length;s++){const n=e[s];for(const i in n)if(i==="class")t.class!==n.class&&(t.class=gt([t.class,n.class]));else if(i==="style")t.style=en([t.style,n.style]);else if(hs(i)){const r=t[i],o=n[i];o&&r!==o&&!(R(r)&&r.includes(o))?t[i]=r?[].concat(r,o):o:o==null&&r==null&&!gs(i)&&(t[i]=o)}else i!==""&&(t[i]=n[i])}return t}function Oe(e,t,s,n=null){ve(e,t,7,[s,n])}const Qo=Li();let el=0;function tl(e,t,s){const n=e.type,i=(t?t.appContext:e.appContext)||Qo,r={uid:el++,vnode:e,type:n,parent:t,appContext:i,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Cr(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(i.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Gi(n,i),emitsOptions:$i(n,i),emit:null,emitted:null,propsDefaults:W,inheritAttrs:n.inheritAttrs,ctx:W,data:W,props:W,attrs:W,slots:W,refs:W,setupState:W,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return r.ctx={_:r},r.root=t?t.root:r,r.emit=Ro.bind(null,r),e.ce&&e.ce(r),r}let ce=null;const sl=()=>ce||me;let ds,Bt;{const e=ys(),t=(s,n)=>{let i;return(i=e[s])||(i=e[s]=[]),i.push(n),r=>{i.length>1?i.forEach(o=>o(r)):i[0](r)}};ds=t("__VUE_INSTANCE_SETTERS__",s=>ce=s),Bt=t("__VUE_SSR_SETTERS__",s=>Wt=s)}const Jt=e=>{const t=ce;return ds(e),e.scope.on(),()=>{e.scope.off(),ds(t)}},jn=()=>{ce&&ce.scope.off(),ds(null)};function rr(e){return e.vnode.shapeFlag&4}let Wt=!1;function nl(e,t=!1,s=!1){t&&Bt(t);const{props:n,children:i}=e.vnode,r=rr(e);Uo(e,n,r,t),Ko(e,i,s||t);const o=r?il(e,t):void 0;return t&&Bt(!1),o}function il(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,So);const{setup:n}=s;if(n){Ge();const i=e.setupContext=n.length>1?ol(e):null,r=Jt(e),o=Gt(n,e,0,[e.props,i]),l=ti(o);if(Je(),r(),(l||e.sp)&&!Nt(e)&&Fi(e),l){if(o.then(jn,jn),t)return o.then(u=>{Bt(!0);try{Ln(e,u,t)}finally{Bt(!1)}}).catch(u=>{_s(u,e,0)});e.asyncDep=o}else Ln(e,o)}else or(e)}function Ln(e,t,s){D(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:k(t)&&(e.setupState=Ci(t)),or(e)}function or(e,t,s){const n=e.type;e.render||(e.render=n.render||Fe);{const i=Jt(e);Ge();try{Co(e)}finally{Je(),i()}}}const rl={get(e,t){return re(e,"get",""),e[t]}};function ol(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,rl),slots:e.slots,emit:e.emit,expose:t}}function Cs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ci(Wr(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in Ht)return Ht[s](e)},has(t,s){return s in t||s in Ht}})):e.proxy}function ll(e){return D(e)&&"__vccOpts"in e}const lr=(e,t)=>zr(e,t,Wt),fl="3.5.42";/**\n* @vue/runtime-dom v3.5.42\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/let zs;const $n=typeof window<"u"&&window.trustedTypes;if($n)try{zs=$n.createPolicy("vue",{createHTML:e=>e})}catch{}const fr=zs?e=>zs.createHTML(e):e=>e,ul="http://www.w3.org/2000/svg",cl="http://www.w3.org/1998/Math/MathML",je=typeof document<"u"?document:null,Kn=je&&je.createElement("template"),al={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const i=t==="svg"?je.createElementNS(ul,e):t==="mathml"?je.createElementNS(cl,e):s?je.createElement(e,{is:s}):je.createElement(e);return e==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:e=>je.createTextNode(e),createComment:e=>je.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>je.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,i,r){const o=s?s.previousSibling:t.lastChild;if(i&&(i===r||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),s),!(i===r||!(i=i.nextSibling)););else{Kn.innerHTML=fr(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const l=Kn.content;if(n==="svg"||n==="mathml"){const u=l.firstChild;for(;u.firstChild;)l.appendChild(u.firstChild);l.removeChild(u)}t.insertBefore(l,s)}return[o?o.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},dl=Symbol("_vtc");function pl(e,t,s){const n=e[dl];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const ps=Symbol("_vod"),ur=Symbol("_vsh"),Bn={name:"show",beforeMount(e,{value:t},{transition:s}){e[ps]=e.style.display==="none"?"":e.style.display,s&&t?s.beforeEnter(e):Pt(e,t)},mounted(e,{value:t},{transition:s}){s&&t&&s.enter(e)},updated(e,{value:t,oldValue:s},{transition:n}){!t!=!s&&(n?t?(n.beforeEnter(e),Pt(e,!0),n.enter(e)):n.leave(e,()=>{Pt(e,!1)}):Pt(e,t))},beforeUnmount(e,{value:t}){Pt(e,t)}};function Pt(e,t){e.style.display=t?e[ps]:"none",e[ur]=!t}const hl=Symbol(""),gl=/(?:^|;)\\s*display\\s*:/;function ml(e,t,s){const n=e.style,i=Q(s);let r=!1;if(s&&!i){if(t)if(Q(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();s[l]==null&&It(n,l,"")}else for(const o in t)s[o]==null&&It(n,o,"");for(const o in s){o==="display"&&(r=!0);const l=s[o];l!=null?yl(e,o,!Q(t)&&t?t[o]:void 0,l)||It(n,o,l):It(n,o,"")}}else if(i){if(t!==s){const o=n[hl];o&&(s+=";"+o),n.cssText=s,r=gl.test(s)}}else t&&e.removeAttribute("style");ps in e&&(e[ps]=r?n.display:"",e[ur]&&(n.display="none"))}const ts=/\\s*!important$/;function It(e,t,s){if(R(s))s.forEach(n=>It(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))ts.test(s)?e.setProperty(t,s.replace(ts,""),"important"):e.setProperty(t,s);else{const n=bl(e,t);ts.test(s)?e.setProperty(st(n),s.replace(ts,""),"important"):e[n]=s}}const Wn=["Webkit","Moz","ms"],Ns={};function bl(e,t){const s=Ns[t];if(s)return s;let n=be(t);if(n!=="filter"&&n in e)return Ns[t]=n;n=ii(n);for(let i=0;i<Wn.length;i++){const r=Wn[i]+n;if(r in e)return Ns[t]=r}return t}function yl(e,t,s,n){return e.tagName==="TEXTAREA"&&(t==="width"||t==="height")&&Q(n)&&s===n}const kn="http://www.w3.org/1999/xlink";function qn(e,t,s,n,i,r=wr(t)){n&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(kn,t.slice(6,t.length)):e.setAttributeNS(kn,t,s):s==null||r&&!oi(s)?e.removeAttribute(t):e.setAttribute(t,r?"":De(s)?String(s):s)}function Gn(e,t,s,n,i){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?fr(s):s);return}const r=e.tagName;if(t==="value"&&r!=="PROGRESS"&&!r.includes("-")){const l=r==="OPTION"?e.getAttribute("value")||"":e.value,u=s==null?e.type==="checkbox"?"on":"":String(s);(l!==u||!("_value"in e))&&(e.value=u),s==null&&e.removeAttribute(t),e._value=s;return}let o=!1;if(s===""||s==null){const l=typeof e[t];l==="boolean"?s=oi(s):s==null&&l==="string"?(s="",o=!0):l==="number"&&(s=0,o=!0)}try{e[t]=s}catch{}o&&e.removeAttribute(i||t)}function Qe(e,t,s,n){e.addEventListener(t,s,n)}function _l(e,t,s,n){e.removeEventListener(t,s,n)}const Jn=Symbol("_vei");function vl(e,t,s,n,i=null){const r=e[Jn]||(e[Jn]={}),o=r[t];if(n&&o)o.value=n;else{const[l,u]=Sl(t);if(n){const d=r[t]=Ol(n,i);Qe(e,l,d,u)}else o&&(_l(e,l,o,u),r[t]=void 0)}}const xl=/(Once|Passive|Capture)$/,wl=/^on:?(?:Once|Passive|Capture)$/;function Sl(e){let t,s;for(;(s=e.match(xl))&&!wl.test(e);)t||(t={}),e=e.slice(0,e.length-s[1].length),t[s[1].toLowerCase()]=!0;return[e[2]===":"?e.slice(3):st(e.slice(2)),t]}let Hs=0;const Cl=Promise.resolve(),Tl=()=>Hs||(Cl.then(()=>Hs=0),Hs=Date.now());function Ol(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;const i=s.value;if(R(i)){const r=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{r.call(n),n._stopped=!0};const o=i.slice(),l=[n];for(let u=0;u<o.length&&!n._stopped;u++){const d=o[u];d&&ve(d,t,5,l)}}else ve(i,t,5,[n])};return s.value=e,s.attached=Tl(),s}const Yn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,El=(e,t,s,n,i,r)=>{const o=i==="svg";t==="class"?pl(e,n,o):t==="style"?ml(e,s,n):hs(t)?gs(t)||vl(e,t,s,n,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Al(e,t,n,o))?(Gn(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&qn(e,t,n,o,r,t!=="value")):e._isVueCE&&(Pl(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!Q(n)))?Gn(e,be(t),n,r,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),qn(e,t,n,o))};function Al(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Yn(t)&&D(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return Yn(t)&&Q(s)?!1:t in e}function Pl(e,t){const s=e._def.props;if(!s)return!1;const n=be(t);return Array.isArray(s)?s.some(i=>be(i)===n):Object.keys(s).some(i=>be(i)===n)}const xt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return R(t)?s=>ns(t,s):t};function Ml(e){e.target.composing=!0}function zn(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ve=Symbol("_assign"),ss=Symbol("_initialValue");function Us(e,t,s){return t&&(e=e.trim()),s&&(e=bs(e)),e}const ie={created(e,{modifiers:{lazy:t,trim:s,number:n}},i){e.parentNode&&(e.type==="text"?e[ss]=e.defaultValue.replace(/[\\r\\n]/g,""):e.type==="textarea"&&(e[ss]=e.defaultValue.replace(/\\r\\n?/g,`\n`))),e[Ve]=xt(i);const r=n||i.props&&i.props.type==="number";Qe(e,t?"change":"input",o=>{o.target.composing||e[Ve](Us(e.value,s,r))}),(s||r)&&Qe(e,"change",()=>{e.value=Us(e.value,s,r)}),t||(Qe(e,"compositionstart",Ml),Qe(e,"compositionend",zn),Qe(e,"change",zn))},mounted(e,{value:t,modifiers:{trim:s,number:n}}){const i=t??"",r=e[ss];delete e[ss],r!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==r?e[Ve](Us(e.value,s,n)):e.value=i},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:i,number:r}},o){if(e[Ve]=xt(o),e.composing)return;const l=(r||e.type==="number")&&!/^0\\d/.test(e.value)?bs(e.value):e.value,u=t??"";if(l===u)return;const d=e.getRootNode();(d instanceof Document||d instanceof ShadowRoot)&&d.activeElement===e&&e.type!=="range"&&(n&&t===s||i&&e.value.trim()===u)||(e.value=u)}},js={deep:!0,created(e,t,s){e[Ve]=xt(s),Qe(e,"change",()=>{const n=e._modelValue,i=kt(e),r=e.checked,o=e[Ve];if(R(n)){const l=tn(n,i),u=l!==-1;if(r&&!u)o(n.concat(i));else if(!r&&u){const d=[...n];d.splice(l,1),o(d)}}else if(ke(n)){const l=new Set(n);r?l.add(i):l.delete(i),o(l)}else o(cr(e,r))})},mounted:Xn,beforeUpdate(e,t,s){e[Ve]=xt(s),Xn(e,t,s)}};function Xn(e,{value:t,oldValue:s},n){e._modelValue=t;let i;if(R(t))i=tn(t,n.props.value)>-1;else if(ke(t))i=t.has(n.props.value);else{if(t===s)return;i=qe(t,cr(e,!0))}e.checked!==i&&(e.checked=i)}const Ls={deep:!0,created(e,{value:t,modifiers:{number:s}},n){e._modelValue=t,Qe(e,"change",()=>{const i=Array.prototype.filter.call(e.options,u=>u.selected).map(u=>s?bs(kt(u)):kt(u)),r=e.multiple,o=r?ke(e._modelValue)?new Set(i):i:i[0],l=e._pendingValue=[r,r?R(o)?i.slice():i:o];try{e[Ve](o)}finally{Oi(()=>{e._pendingValue===l&&(e._pendingValue=void 0)})}}),e[Ve]=xt(n)},mounted(e,{value:t}){Zn(e,t)},beforeUpdate(e,{value:t},s){e._modelValue=t,e[Ve]=xt(s)},updated(e,{value:t}){const s=e._pendingValue;e._pendingValue=void 0,(!s||s[0]!==e.multiple||!Il(t,s[1],s[0]))&&Zn(e,t)}};function Il(e,t,s){if(!s||R(e))return qe(e,t);if(ke(e)){if(e.size!==t.length)return!1;for(const n of t)if(!e.has(n))return!1;return!0}return!1}function Zn(e,t){const s=e.multiple,n=R(t);if(!(s&&!n&&!ke(t))){for(let i=0,r=e.options.length;i<r;i++){const o=e.options[i],l=kt(o);if(s)if(n){const u=typeof l;u==="string"||u==="number"?o.selected=t.some(d=>String(d)===String(l)):o.selected=tn(t,l)>-1}else o.selected=t.has(l);else if(qe(kt(o),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function kt(e){return"_value"in e?e._value:e.value}function cr(e,t){const s=t?"_trueValue":"_falseValue";return s in e?e[s]:t}const Rl={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Vl=(e,t)=>{const s=e._withKeys||(e._withKeys={}),n=t.join(".");return s[n]||(s[n]=(i=>{if(!("key"in i))return;const r=st(i.key);if(t.some(o=>o===r||Rl[o]===r))return e(i)}))},Fl=ne({patchProp:El},al);let Qn;function Dl(){return Qn||(Qn=Wo(Fl))}const Nl=((...e)=>{const t=Dl().createApp(...e),{mount:s}=t;return t.mount=n=>{const i=Ul(n);if(!i)return;const r=t._component;!D(r)&&!r.render&&!r.template&&(r.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const o=s(i,!1,Hl(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),o},t});function Hl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ul(e){return Q(e)?document.querySelector(e):e}async function Yt(e,t){const s=await fetch(e,{headers:{"Content-Type":"application/json",Accept:"application/json"},...t}),n=await s.json().catch(()=>({}));if(!s.ok)throw new Error(n.error||`HTTP ${s.status}`);return n}function jl(e){return Yt("/admin/login",{method:"POST",body:JSON.stringify({password:e})})}function Ll(){return Yt("/admin/logout",{method:"POST"})}function $l(){return Yt("/admin/api/state")}function Kl(e){return Yt("/admin/api/auth-config",{method:"PUT",body:JSON.stringify(e)})}function Bl(e){return Yt("/admin/api/ui-config",{method:"PUT",body:JSON.stringify(e)})}const Wl={class:"topbar"},kl={class:"actions",style:{margin:"0"}},ql={key:1,class:"card"},Gl={key:2,class:"card"},Jl={key:3,class:"card"},Yl={key:4,class:"card"},zl={class:"tabs"},Xl={class:"stack"},Zl={class:"row"},Ql={key:0,class:"hint"},ef={class:"row"},tf={key:0,class:"hint"},sf={class:"stack"},nf={class:"row"},rf={class:"row"},of={class:"row"},lf={class:"row"},ff={class:"checks"},uf={class:"check"},cf={class:"check"},af={class:"check"},df=uo({__name:"App",setup(e){const t=He(!1),s=He(!1),n=He(!0),i=He(""),r=He(!1),o=He(""),l=He("rules"),u=mt({mode:"normal",providers:{github:{enabled:!0,rules:{}}}}),d=mt({siteTitle:"\u53D7\u4FDD\u62A4\u7AD9\u70B9",siteSubtitle:"\u767B\u5F55\u540E\u7EE7\u7EED\u8BBF\u95EE",loginHeading:"\u8BBF\u95EE\u53D7\u4FDD\u62A4\u7AD9\u70B9",loginSubtitle:"\u4F7F\u7528\u5DF2\u6388\u6743\u8D26\u53F7\u767B\u5F55\u540E\u7EE7\u7EED\u6D4F\u89C8",providerButtonPrefix:"\u4F7F\u7528",footerBrand:"cf-static-guard",copyright:"",icp:"",icpLink:"https://beian.miit.gov.cn/",showModeBadge:!0,showFooterBrand:!0,showGithubIcon:!0}),a=mt({ghEnabled:!0,ghMode:"",minAge:"",allowlist:"",blocklist:"",requiredOrgs:"",requiredTeams:"",emailDomains:""}),g=He(!1),T=He(!1),E=lr(()=>!s.value&&!t.value);function H(F,p=!1){i.value=F,r.value=p,p||setTimeout(()=>i.value="",2500)}function I(F){return F.split(`\n`).map(p=>p.trim()).filter(Boolean)}function q(F){return(F||[]).join(`\n`)}function G(F){if(Object.assign(u,F.auth),Object.assign(d,F.ui),g.value=F.hasKv,T.value=F.githubConfigured,!F.hasAdminPassword){t.value=!0;return}t.value=!1;const p=F.auth.providers.github||{enabled:!0,rules:{}},O=p.rules||{};a.ghEnabled=p.enabled!==!1,a.ghMode=p.mode||"",a.minAge=O.minAccountAgeDays??"",a.allowlist=q(O.allowlist),a.blocklist=q(O.blocklist),a.requiredOrgs=q(O.requiredOrgs),a.requiredTeams=q((O.requiredTeams||[]).map(ge=>`${ge.org}/${ge.team}`)),a.emailDomains=q(O.emailDomainAllowlist)}async function N(){n.value=!0;try{const F=await $l();s.value=!1,G(F)}catch(F){const p=F instanceof Error?F.message:String(F);p==="unauthorized"?s.value=!0:p==="admin_disabled"?t.value=!0:s.value=!0}finally{n.value=!1}}async function j(){try{await jl(o.value),o.value="",s.value=!1,await N(),H("\u767B\u5F55\u6210\u529F")}catch(F){H(F instanceof Error?F.message:"\u767B\u5F55\u5931\u8D25",!0)}}async function P(){try{await Ll()}catch{}s.value=!0}async function Z(){try{const F=String(a.minAge).trim(),p={allowlist:I(a.allowlist),blocklist:I(a.blocklist),requiredOrgs:I(a.requiredOrgs),requiredTeams:I(a.requiredTeams).map(xe=>{const[ct,at]=xe.split("/").map(wt=>wt.trim());return{org:ct||"",team:at||""}}).filter(xe=>xe.org&&xe.team),emailDomainAllowlist:I(a.emailDomains)};F!==""&&(p.minAccountAgeDays=Number(F));const O={mode:u.mode,providers:{github:{enabled:a.ghEnabled,mode:a.ghMode||void 0,rules:p}}},ge=await Kl(O);Object.assign(u,ge.auth),H("\u89C4\u5219\u5DF2\u4FDD\u5B58"),await N()}catch(F){H(F instanceof Error?F.message:"\u4FDD\u5B58\u5931\u8D25",!0)}}async function he(){try{const F=await Bl({...d});Object.assign(d,F.ui),H("\u6587\u6848\u5DF2\u4FDD\u5B58")}catch(F){H(F instanceof Error?F.message:"\u4FDD\u5B58\u5931\u8D25",!0)}}return Ni(N),(F,p)=>(Ee(),Ue("div",null,[m("div",Wl,[p[25]||(p[25]=m("div",null,[m("h1",null,"\u5B88\u536B\u7BA1\u7406\u540E\u53F0"),m("p",{class:"sub"},"\u4FEE\u6539\u8BBF\u95EE\u89C4\u5219\u3001\u767B\u5F55\u6587\u6848\u4E0E\u9875\u811A\u5907\u6848\u4FE1\u606F\u3002\u914D\u7F6E\u4FDD\u5B58\u5728 KV\uFF0C\u5373\u65F6\u751F\u6548\u3002")],-1)),m("div",kl,[p[24]||(p[24]=m("a",{class:"btn ghost",href:"/auth/login",target:"_blank"},"\u9884\u89C8\u767B\u5F55\u9875",-1)),!s.value&&!t.value?(Ee(),Ue("button",{key:0,class:"btn ghost",type:"button",onClick:P}," \u9000\u51FA ")):At("",!0)])]),i.value?(Ee(),Ue("div",{key:0,class:gt(["alert",{err:r.value}])},fi(i.value),3)):At("",!0),n.value?(Ee(),Ue("div",ql,"\u52A0\u8F7D\u4E2D\u2026")):t.value?(Ee(),Ue("div",Gl,[...p[26]||(p[26]=[m("h2",null,"\u7BA1\u7406\u540E\u53F0\u672A\u542F\u7528",-1),m("p",{class:"hint"},[Ae(" \u8BF7\u5728 Worker \u4E2D\u8BBE\u7F6E Secret "),m("code",null,"ADMIN_PASSWORD"),Ae("\uFF0C\u7136\u540E\u91CD\u65B0\u90E8\u7F72\u3002\u8BBE\u7F6E\u540E\u8BBF\u95EE "),m("code",null,"/admin"),Ae(" \u5373\u53EF\u767B\u5F55\u7BA1\u7406\u3002 ")],-1)])])):s.value?(Ee(),Ue("div",Jl,[p[27]||(p[27]=m("h2",null,"\u7BA1\u7406\u5458\u767B\u5F55",-1)),p[28]||(p[28]=m("p",{class:"hint"},[Ae("\u5BC6\u7801\u6765\u81EA Secret "),m("code",null,"ADMIN_PASSWORD")],-1)),p[29]||(p[29]=m("label",{class:"field-label"},"\u5BC6\u7801",-1)),z(m("input",{"onUpdate:modelValue":p[0]||(p[0]=O=>o.value=O),type:"password",autocomplete:"current-password",onKeyup:Vl(j,["enter"])},null,544),[[ie,o.value]]),m("div",{class:"actions"},[m("button",{class:"btn primary",type:"button",onClick:j},"\u767B\u5F55")])])):E.value?(Ee(),Ue("div",Yl,[m("div",zl,[m("button",{class:gt(["tab",{active:l.value==="rules"}]),type:"button",onClick:p[1]||(p[1]=O=>l.value="rules")}," \u8BBF\u95EE\u89C4\u5219 ",2),m("button",{class:gt(["tab",{active:l.value==="ui"}]),type:"button",onClick:p[2]||(p[2]=O=>l.value="ui")}," \u6587\u6848\u4E0E\u9875\u811A ",2)]),z(m("section",Xl,[m("div",Zl,[m("div",null,[p[31]||(p[31]=m("label",{class:"field-label"},"\u5168\u5C40\u6A21\u5F0F",-1)),z(m("select",{"onUpdate:modelValue":p[3]||(p[3]=O=>u.mode=O)},[...p[30]||(p[30]=[m("option",{value:"normal"},"\u666E\u901A\u6A21\u5F0F\uFF08OAuth \u6210\u529F\u5373\u53EF\uFF09",-1),m("option",{value:"strict"},"\u4E25\u683C\u6A21\u5F0F\uFF08\u6267\u884C\u5DF2\u914D\u7F6E\u89C4\u5219\uFF09",-1)])],512),[[Ls,u.mode]]),p[32]||(p[32]=m("div",{class:"hint"}," \u4E25\u683C\u89C4\u5219\u5224\u5B9A\uFF1A\u4EC5\u6821\u9A8C\u300C\u5DF2\u586B\u5199\u300D\u7684\u5B57\u6BB5\uFF1B\u672A\u586B\u5199\u7684\u89C4\u5219\u8DF3\u8FC7\u3002\u9ED1\u540D\u5355\u5728\u4E24\u79CD\u6A21\u5F0F\u4E0B\u90FD\u4F1A\u62D2\u7EDD\u3002 ",-1))]),m("div",null,[p[34]||(p[34]=m("label",{class:"field-label"},"GitHub \u542F\u7528",-1)),z(m("select",{"onUpdate:modelValue":p[4]||(p[4]=O=>a.ghEnabled=O)},[...p[33]||(p[33]=[m("option",{value:!0},"\u542F\u7528",-1),m("option",{value:!1},"\u505C\u7528",-1)])],512),[[Ls,a.ghEnabled]]),T.value?At("",!0):(Ee(),Ue("div",Ql,"\u5C1A\u672A\u914D\u7F6E GitHub Client ID/Secret"))])]),m("div",ef,[m("div",null,[p[36]||(p[36]=m("label",{class:"field-label"},"GitHub \u6A21\u5F0F\uFF08\u8986\u76D6\u5168\u5C40\uFF0C\u53EF\u9009\uFF09",-1)),z(m("select",{"onUpdate:modelValue":p[5]||(p[5]=O=>a.ghMode=O)},[...p[35]||(p[35]=[m("option",{value:""},"\u8DDF\u968F\u5168\u5C40",-1),m("option",{value:"normal"},"\u666E\u901A",-1),m("option",{value:"strict"},"\u4E25\u683C",-1)])],512),[[Ls,a.ghMode]])]),m("div",null,[p[37]||(p[37]=m("label",{class:"field-label"},"\u6700\u5C11\u8D26\u53F7\u5E74\u9F84\uFF08\u5929\uFF0C\u7559\u7A7A\u4E0D\u6821\u9A8C\uFF09",-1)),z(m("input",{"onUpdate:modelValue":p[6]||(p[6]=O=>a.minAge=O),type:"number",min:"0",placeholder:"\u4F8B\u5982 30"},null,512),[[ie,a.minAge]])])]),m("div",null,[p[38]||(p[38]=m("label",{class:"field-label"},"\u767D\u540D\u5355 allowlist\uFF08\u6BCF\u884C\u4E00\u4E2A login \u6216 github:login\uFF09",-1)),z(m("textarea",{"onUpdate:modelValue":p[7]||(p[7]=O=>a.allowlist=O),placeholder:`alice\ngithub:bob`},null,512),[[ie,a.allowlist]])]),m("div",null,[p[39]||(p[39]=m("label",{class:"field-label"},"\u9ED1\u540D\u5355 blocklist\uFF08\u666E\u901A/\u4E25\u683C\u90FD\u4F1A\u62D2\u7EDD\uFF09",-1)),z(m("textarea",{"onUpdate:modelValue":p[8]||(p[8]=O=>a.blocklist=O)},null,512),[[ie,a.blocklist]])]),m("div",null,[p[40]||(p[40]=m("label",{class:"field-label"},"\u5FC5\u987B\u52A0\u5165\u7684\u7EC4\u7EC7 requiredOrgs\uFF08\u6BCF\u884C\u4E00\u4E2A\uFF09",-1)),z(m("textarea",{"onUpdate:modelValue":p[9]||(p[9]=O=>a.requiredOrgs=O),placeholder:"your-org"},null,512),[[ie,a.requiredOrgs]])]),m("div",null,[p[41]||(p[41]=m("label",{class:"field-label"},"\u5FC5\u987B\u52A0\u5165\u7684\u56E2\u961F requiredTeams\uFF08\u6BCF\u884C org/team\uFF09",-1)),z(m("textarea",{"onUpdate:modelValue":p[10]||(p[10]=O=>a.requiredTeams=O),placeholder:"your-org/docs-readers"},null,512),[[ie,a.requiredTeams]])]),m("div",null,[p[42]||(p[42]=m("label",{class:"field-label"},"\u90AE\u7BB1\u57DF\u540D\u767D\u540D\u5355\uFF08\u6BCF\u884C\u4E00\u4E2A\u57DF\u540D\uFF09",-1)),z(m("textarea",{"onUpdate:modelValue":p[11]||(p[11]=O=>a.emailDomains=O),placeholder:"example.com"},null,512),[[ie,a.emailDomains]])]),m("div",{class:"actions"},[m("button",{class:"btn primary",type:"button",onClick:Z},"\u4FDD\u5B58\u89C4\u5219")]),g.value?At("",!0):(Ee(),Ue("p",tf,"\u672A\u7ED1\u5B9A KV\uFF08RULES\uFF09\uFF0C\u4FDD\u5B58\u4F1A\u5931\u8D25\u3002\u8BF7\u5148\u521B\u5EFA KV namespace \u5E76\u5199\u5165 wrangler.toml\u3002"))],512),[[Bn,l.value==="rules"]]),z(m("section",sf,[m("div",nf,[m("div",null,[p[43]||(p[43]=m("label",{class:"field-label"},"\u7AD9\u70B9\u6807\u9898",-1)),z(m("input",{"onUpdate:modelValue":p[12]||(p[12]=O=>d.siteTitle=O),type:"text"},null,512),[[ie,d.siteTitle]])]),m("div",null,[p[44]||(p[44]=m("label",{class:"field-label"},"\u7AD9\u70B9\u526F\u6807\u9898",-1)),z(m("input",{"onUpdate:modelValue":p[13]||(p[13]=O=>d.siteSubtitle=O),type:"text"},null,512),[[ie,d.siteSubtitle]])])]),m("div",rf,[m("div",null,[p[45]||(p[45]=m("label",{class:"field-label"},"\u767B\u5F55\u9875\u4E3B\u6807\u9898",-1)),z(m("input",{"onUpdate:modelValue":p[14]||(p[14]=O=>d.loginHeading=O),type:"text"},null,512),[[ie,d.loginHeading]])]),m("div",null,[p[46]||(p[46]=m("label",{class:"field-label"},"\u767B\u5F55\u9875\u8BF4\u660E",-1)),z(m("input",{"onUpdate:modelValue":p[15]||(p[15]=O=>d.loginSubtitle=O),type:"text"},null,512),[[ie,d.loginSubtitle]])])]),m("div",of,[m("div",null,[p[47]||(p[47]=m("label",{class:"field-label"},"\u6309\u94AE\u524D\u7F00\uFF08\u300C\u4F7F\u7528\u300DGitHub \u767B\u5F55\uFF09",-1)),z(m("input",{"onUpdate:modelValue":p[16]||(p[16]=O=>d.providerButtonPrefix=O),type:"text"},null,512),[[ie,d.providerButtonPrefix]])]),m("div",null,[p[48]||(p[48]=m("label",{class:"field-label"},"\u9875\u811A\u54C1\u724C\u540D",-1)),z(m("input",{"onUpdate:modelValue":p[17]||(p[17]=O=>d.footerBrand=O),type:"text"},null,512),[[ie,d.footerBrand]])])]),m("div",lf,[m("div",null,[p[49]||(p[49]=m("label",{class:"field-label"},"\u7248\u6743\u4FE1\u606F copyright",-1)),z(m("input",{"onUpdate:modelValue":p[18]||(p[18]=O=>d.copyright=O),type:"text",placeholder:"\xA9 2026 Your Name"},null,512),[[ie,d.copyright]])]),m("div",null,[p[50]||(p[50]=m("label",{class:"field-label"},"ICP \u5907\u6848\u53F7",-1)),z(m("input",{"onUpdate:modelValue":p[19]||(p[19]=O=>d.icp=O),type:"text",placeholder:"\u4EACICP\u5907xxxxxxxx\u53F7"},null,512),[[ie,d.icp]])])]),m("div",null,[p[51]||(p[51]=m("label",{class:"field-label"},"ICP \u94FE\u63A5",-1)),z(m("input",{"onUpdate:modelValue":p[20]||(p[20]=O=>d.icpLink=O),type:"text",placeholder:"https://beian.miit.gov.cn/"},null,512),[[ie,d.icpLink]])]),m("div",ff,[m("label",uf,[z(m("input",{"onUpdate:modelValue":p[21]||(p[21]=O=>d.showModeBadge=O),type:"checkbox"},null,512),[[js,d.showModeBadge]]),p[52]||(p[52]=Ae(" \u663E\u793A\u6A21\u5F0F\u5FBD\u7AE0\uFF08\u666E\u901A/\u4E25\u683C\uFF09 ",-1))]),m("label",cf,[z(m("input",{"onUpdate:modelValue":p[22]||(p[22]=O=>d.showFooterBrand=O),type:"checkbox"},null,512),[[js,d.showFooterBrand]]),p[53]||(p[53]=Ae(" \u663E\u793A\u9875\u811A\u54C1\u724C\u540D ",-1))]),m("label",af,[z(m("input",{"onUpdate:modelValue":p[23]||(p[23]=O=>d.showGithubIcon=O),type:"checkbox"},null,512),[[js,d.showGithubIcon]]),p[54]||(p[54]=Ae(" GitHub \u6309\u94AE\u663E\u793A\u56FE\u6807 ",-1))])]),m("div",{class:"actions"},[m("button",{class:"btn primary",type:"button",onClick:he},"\u4FDD\u5B58\u6587\u6848")]),p[55]||(p[55]=m("p",{class:"hint"},[Ae(" \u6587\u6848\u901A\u8FC7 "),m("code",null,"GET /ui-config"),Ae(" \u63D0\u4F9B\u7ED9\u767B\u5F55\u9875\uFF1B\u6539\u5B8C\u5237\u65B0\u767B\u5F55\u9875\u5373\u53EF\u770B\u5230\u3002 ")],-1))],512),[[Bn,l.value==="ui"]])])):At("",!0)]))}});Nl(df).mount("#app");<\/script>\n <style rel="stylesheet" crossorigin>:root{color-scheme:light;--bg: #f4f6fb;--panel: #ffffff;--ink: #0f172a;--muted: #64748b;--accent: #2563eb;--accent-soft: #eff6ff;--accent-border: #bfdbfe;--border: #e2e8f0;--danger: #b91c1c;--ok: #047857;--shadow: 0 18px 50px rgba(15, 23, 42, .08);font-family:Segoe UI,system-ui,-apple-system,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{min-height:100vh;background:radial-gradient(900px 480px at 12% -8%,rgba(37,99,235,.12),transparent 55%),linear-gradient(180deg,#f8fafc,var(--bg));color:var(--ink);padding:24px}#app{width:min(920px,100%);margin:0 auto}.card{background:var(--panel);border:1px solid var(--border);border-radius:20px;padding:28px;box-shadow:var(--shadow);margin-bottom:16px}h1{margin:0 0 4px;font-size:1.3rem}h2{margin:0 0 12px;font-size:1rem}.sub{color:var(--muted);font-size:.92rem;margin:0}label.field-label{display:block;font-size:.82rem;color:var(--muted);margin:10px 0 4px}input[type=text],input[type=password],input[type=number],textarea,select{width:100%;border:1px solid var(--border);border-radius:10px;padding:10px 12px;font:inherit;background:#fff;color:var(--ink)}textarea{min-height:88px;resize:vertical}.row{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:640px){.row{grid-template-columns:1fr}}.btn{display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 16px;border-radius:10px;border:1px solid var(--accent-border);background:var(--accent-soft);color:#1d4ed8;font-weight:600;cursor:pointer;text-decoration:none;font:inherit}.btn:hover{background:#dbeafe}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:#1d4ed8}.btn.ghost{background:#fff;color:var(--muted);border-color:var(--border)}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.tabs{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.tab{border:1px solid var(--border);background:#fff;border-radius:999px;padding:8px 14px;cursor:pointer;font-size:.9rem;color:var(--muted);font-family:inherit}.tab.active{background:var(--accent-soft);border-color:var(--accent-border);color:#1d4ed8;font-weight:600}.hint{font-size:.8rem;color:var(--muted);margin-top:6px;line-height:1.45}.alert{padding:10px 12px;border-radius:10px;background:#ecfdf5;color:var(--ok);border:1px solid #a7f3d0;margin-bottom:12px;font-size:.9rem}.alert.err{background:#fef2f2;color:var(--danger);border-color:#fecaca}.checks{display:grid;gap:8px;margin-top:8px}.check{display:flex;align-items:center;gap:8px;font-size:.9rem}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:12px;flex-wrap:wrap}.stack{display:grid;gap:12px}code{background:#f1f5f9;padding:.1em .4em;border-radius:6px;font-size:.9em}</style>\n </head>\n <body>\n <div id="app"></div>\n </body>\n</html>\n';
2127
+
2128
+ // src/admin/routes.ts
2129
+ function isSecure(request) {
2130
+ const url = new URL(request.url);
2131
+ if (url.protocol === "https:") return true;
2132
+ return request.headers.get("CF-Visitor")?.includes("https") === true;
2133
+ }
2134
+ __name(isSecure, "isSecure");
2135
+ function readCookie(request, name) {
2136
+ const header = request.headers.get("Cookie");
2137
+ if (!header) return null;
2138
+ for (const part of header.split(";")) {
2139
+ const [k, ...rest] = part.trim().split("=");
2140
+ if (k === name) return rest.join("=") || null;
2141
+ }
2142
+ return null;
2143
+ }
2144
+ __name(readCookie, "readCookie");
2145
+ function json(data, status = 200) {
2146
+ return Response.json(data, {
2147
+ status,
2148
+ headers: { "cache-control": "no-store" }
2149
+ });
2150
+ }
2151
+ __name(json, "json");
2152
+ function adminPage(needLogin) {
2153
+ if (!ADMIN_SPA_HTML) {
2154
+ return new Response(
2155
+ needLogin ? "Admin SPA not built. Run npm run build:admin && npm run sync-assets." : "Admin SPA not built.",
2156
+ {
2157
+ status: 503,
2158
+ headers: { "content-type": "text/plain; charset=utf-8" }
2159
+ }
2160
+ );
2161
+ }
2162
+ return new Response(ADMIN_SPA_HTML, {
2163
+ headers: {
2164
+ "content-type": "text/html; charset=utf-8",
2165
+ "cache-control": "no-store",
2166
+ "x-robots-tag": "noindex"
2167
+ }
2168
+ });
2169
+ }
2170
+ __name(adminPage, "adminPage");
2171
+ async function verifyAdmin(request, env2) {
2172
+ if (!env2.ADMIN_PASSWORD) return false;
2173
+ const token = readCookie(request, ADMIN_COOKIE);
2174
+ if (!token) return false;
2175
+ const payload = await verifySession(token, env2.SESSION_SECRET);
2176
+ return payload?.provider === "admin" && payload.sub === "admin";
2177
+ }
2178
+ __name(verifyAdmin, "verifyAdmin");
2179
+ async function handleAdminRequest(request, env2, url) {
2180
+ const path = url.pathname;
2181
+ if (path !== "/admin" && path !== "/admin/" && !path.startsWith("/admin/")) {
2182
+ return null;
2183
+ }
2184
+ const secure = isSecure(request);
2185
+ if (path === "/admin" || path === "/admin/" || path === "/admin/index.html") {
2186
+ return adminPage(!await verifyAdmin(request, env2));
2187
+ }
2188
+ if (path === "/admin/login" && request.method === "POST") {
2189
+ if (!env2.ADMIN_PASSWORD) {
2190
+ return json({ error: "admin_disabled" }, 403);
2191
+ }
2192
+ let password = "";
2193
+ try {
2194
+ const body = await request.json();
2195
+ password = body.password ?? "";
2196
+ } catch {
2197
+ return json({ error: "invalid_json" }, 400);
2198
+ }
2199
+ const a = new TextEncoder().encode(password);
2200
+ const b = new TextEncoder().encode(env2.ADMIN_PASSWORD);
2201
+ let diff = a.length === b.length ? 0 : 1;
2202
+ const n = Math.max(a.length, b.length);
2203
+ for (let i = 0; i < n; i++) {
2204
+ diff |= (a[i] ?? 0) ^ (b[i] ?? 0);
2205
+ }
2206
+ if (diff !== 0) {
2207
+ return json({ error: "invalid_password" }, 401);
2208
+ }
2209
+ const payload = buildSessionPayload(
2210
+ { sub: "admin", provider: "admin", login: "admin" },
2211
+ 8 * 3600
2212
+ );
2213
+ const token = await signSession(payload, env2.SESSION_SECRET);
2214
+ const headers = new Headers({ "content-type": "application/json" });
2215
+ const parts = [
2216
+ `${ADMIN_COOKIE}=${token}`,
2217
+ "Path=/",
2218
+ "HttpOnly",
2219
+ "SameSite=Lax",
2220
+ `Max-Age=${8 * 3600}`
2221
+ ];
2222
+ if (secure) parts.push("Secure");
2223
+ headers.append("Set-Cookie", parts.join("; "));
2224
+ return new Response(JSON.stringify({ ok: true }), { headers });
2225
+ }
2226
+ if (path === "/admin/logout" && request.method === "POST") {
2227
+ const headers = new Headers({ "content-type": "application/json" });
2228
+ const parts = [
2229
+ `${ADMIN_COOKIE}=`,
2230
+ "Path=/",
2231
+ "HttpOnly",
2232
+ "SameSite=Lax",
2233
+ "Max-Age=0"
2234
+ ];
2235
+ if (secure) parts.push("Secure");
2236
+ headers.append("Set-Cookie", parts.join("; "));
2237
+ return new Response(JSON.stringify({ ok: true }), { headers });
2238
+ }
2239
+ if (path.startsWith("/admin/api/")) {
2240
+ if (!env2.ADMIN_PASSWORD) {
2241
+ return json({ error: "admin_disabled" }, 403);
2242
+ }
2243
+ if (!await verifyAdmin(request, env2)) {
2244
+ return json({ error: "unauthorized" }, 401);
2245
+ }
2246
+ if (path === "/admin/api/state" && request.method === "GET") {
2247
+ const [auth, ui] = await Promise.all([
2248
+ loadGuardConfig(env2),
2249
+ loadUiConfig(env2)
2250
+ ]);
2251
+ return json({
2252
+ auth,
2253
+ ui,
2254
+ hasKv: Boolean(env2.RULES),
2255
+ hasAdminPassword: true,
2256
+ githubConfigured: Boolean(
2257
+ env2.GITHUB_CLIENT_ID && env2.GITHUB_CLIENT_SECRET
2258
+ )
2259
+ });
2260
+ }
2261
+ if (path === "/admin/api/auth-config" && request.method === "PUT") {
2262
+ let body;
2263
+ try {
2264
+ body = await request.json();
2265
+ } catch {
2266
+ return json({ error: "invalid_json" }, 400);
2267
+ }
2268
+ try {
2269
+ const config2 = parseGuardConfig(body, env2);
2270
+ await saveGuardConfig(env2, config2);
2271
+ return json({ ok: true, auth: config2 });
2272
+ } catch (e) {
2273
+ return json(
2274
+ { error: e instanceof Error ? e.message : "save_failed" },
2275
+ 400
2276
+ );
2277
+ }
2278
+ }
2279
+ if (path === "/admin/api/ui-config" && request.method === "PUT") {
2280
+ let body;
2281
+ try {
2282
+ body = await request.json();
2283
+ } catch {
2284
+ return json({ error: "invalid_json" }, 400);
2285
+ }
2286
+ try {
2287
+ const ui = parseUiConfig(body);
2288
+ await saveUiConfig(env2, ui);
2289
+ return json({ ok: true, ui });
2290
+ } catch (e) {
2291
+ return json(
2292
+ { error: e instanceof Error ? e.message : "save_failed" },
2293
+ 400
2294
+ );
2295
+ }
2296
+ }
2297
+ return json({ error: "not_found" }, 404);
2298
+ }
2299
+ return json({ error: "not_found" }, 404);
2300
+ }
2301
+ __name(handleAdminRequest, "handleAdminRequest");
2302
+
2303
+ // src/index.ts
2304
+ var index_default = {
2305
+ async fetch(request, env2) {
2306
+ const url = new URL(request.url);
2307
+ if (url.pathname === "/health" || url.pathname === "/health/") {
2308
+ return healthResponse(env2);
2309
+ }
2310
+ if (url.pathname === "/ui-config" || url.pathname === "/ui-config/") {
2311
+ const ui = await loadUiConfig(env2);
2312
+ return Response.json(ui, {
2313
+ headers: { "cache-control": "no-store" }
2314
+ });
2315
+ }
2316
+ const authRes = await handleAuthRequest(request, env2, url);
2317
+ if (authRes) return authRes;
2318
+ const adminRes = await handleAdminRequest(request, env2, url);
2319
+ if (adminRes) return adminRes;
2320
+ if (isPublicPath(url.pathname, env2)) {
2321
+ return serveAssets(request, env2, url);
2322
+ }
2323
+ const session = await verifyRequestSession(request, env2);
2324
+ if (!session) {
2325
+ return unauthorizedRedirect(request, url);
2326
+ }
2327
+ return serveAssets(request, env2, url);
2328
+ }
2329
+ };
2330
+ export {
2331
+ index_default as default
2332
+ };
2333
+ //# sourceMappingURL=index.js.map