diff --git a/.gitattributes b/.gitattributes index a6344aac8c09253b3b630fb776ae94478aa0275b..5c3feef89f9c3d27e1e5259b6d3a78e18a96c503 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,35 +1,2 @@ -*.7z filter=lfs diff=lfs merge=lfs -text -*.arrow filter=lfs diff=lfs merge=lfs -text -*.bin filter=lfs diff=lfs merge=lfs -text -*.bz2 filter=lfs diff=lfs merge=lfs -text -*.ckpt filter=lfs diff=lfs merge=lfs -text -*.ftz filter=lfs diff=lfs merge=lfs -text -*.gz filter=lfs diff=lfs merge=lfs -text -*.h5 filter=lfs diff=lfs merge=lfs -text -*.joblib filter=lfs diff=lfs merge=lfs -text -*.lfs.* filter=lfs diff=lfs merge=lfs -text -*.mlmodel filter=lfs diff=lfs merge=lfs -text -*.model filter=lfs diff=lfs merge=lfs -text -*.msgpack filter=lfs diff=lfs merge=lfs -text -*.npy filter=lfs diff=lfs merge=lfs -text -*.npz filter=lfs diff=lfs merge=lfs -text -*.onnx filter=lfs diff=lfs merge=lfs -text -*.ot filter=lfs diff=lfs merge=lfs -text -*.parquet filter=lfs diff=lfs merge=lfs -text -*.pb filter=lfs diff=lfs merge=lfs -text -*.pickle filter=lfs diff=lfs merge=lfs -text -*.pkl filter=lfs diff=lfs merge=lfs -text -*.pt filter=lfs diff=lfs merge=lfs -text -*.pth filter=lfs diff=lfs merge=lfs -text -*.rar filter=lfs diff=lfs merge=lfs -text -*.safetensors filter=lfs diff=lfs merge=lfs -text -saved_model/**/* filter=lfs diff=lfs merge=lfs -text -*.tar.* filter=lfs diff=lfs merge=lfs -text -*.tar filter=lfs diff=lfs merge=lfs -text -*.tflite filter=lfs diff=lfs merge=lfs -text -*.tgz filter=lfs diff=lfs merge=lfs -text -*.wasm filter=lfs diff=lfs merge=lfs -text -*.xz filter=lfs diff=lfs merge=lfs -text -*.zip filter=lfs diff=lfs merge=lfs -text -*.zst filter=lfs diff=lfs merge=lfs -text -*tfevents* filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text diff --git a/CNN/CNN.py b/CNN/CNN.py new file mode 100644 index 0000000000000000000000000000000000000000..9f0b03d90c3a63a623615388fa1ab8f1911b6988 --- /dev/null +++ b/CNN/CNN.py @@ -0,0 +1,132 @@ +import os +import torch +import torch.nn as nn +import torch.optim as optim +from torchvision import transforms, models +import medmnist +from medmnist import INFO +from torch.utils.data import DataLoader +from tqdm import tqdm +import matplotlib.pyplot as plt + +def main(): + # 1. Setup and Hardware Configuration + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Training on: {device}") + + # Set this to point to your secondary NVMe drive to prevent OS drive I/O bottlenecks + dataset_root = r"C:\Users\USER\Downloads\MedMNIST_Data" + os.makedirs(dataset_root, exist_ok=True) + + data_flag = 'pneumoniamnist' + info = INFO[data_flag] + DataClass = getattr(medmnist, info['python_class']) + + # 2. The Golden Preprocessing & Dynamic Augmentation + # We normalize to [-1, 1] using mean=0.5, std=0.5 so it matches your team's generator math + train_transform = transforms.Compose([ + transforms.Grayscale(num_output_channels=3), # ResNet expects 3 RGB channels + transforms.RandomHorizontalFlip(), # Dynamic spatial augmentation + transforms.RandomRotation(10), # Dynamic spatial augmentation + transforms.ToTensor(), + transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]) + ]) + + val_transform = transforms.Compose([ + transforms.Grayscale(num_output_channels=3), + transforms.ToTensor(), # NO spatial augmentation for validation + transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]) + ]) + + # 3. Load Datasets + print("Fetching 224x224 dataset...") + train_dataset = DataClass(split='train', transform=train_transform, download=True, size=224, root=dataset_root) + val_dataset = DataClass(split='val', transform=val_transform, download=True, size=224, root=dataset_root) + + # 4. DataLoaders + # Using batch size 32. num_workers=0 is the safest default for Windows to prevent multiprocessing crashes. + train_loader = DataLoader(dataset=train_dataset, batch_size=32, shuffle=True, num_workers=0) + val_loader = DataLoader(dataset=val_dataset, batch_size=32, shuffle=False, num_workers=0) + + # 5. Initialize ResNet50 + print("Loading ResNet50...") + model = models.resnet50(weights=models.ResNet50_Weights.IMAGENET1K_V1) + + # Modify the final layer for Binary Classification (Pneumonia vs Normal) + num_ftrs = model.fc.in_features + model.fc = nn.Linear(num_ftrs, 2) + model = model.to(device) + + # 6. Loss and Optimizer + criterion = nn.CrossEntropyLoss() + optimizer = optim.Adam(model.parameters(), lr=1e-4) # 1e-4 is a very stable learning rate for fine-tuning + num_epochs = 10 + + history_loss = [] + history_acc = [] + + # 7. The Training Loop + for epoch in range(num_epochs): + model.train() + running_loss = 0.0 + correct = 0 + total = 0 + + # tqdm creates a nice progress bar in the terminal + loop = tqdm(train_loader, leave=True) + for images, labels in loop: + images, labels = images.to(device), labels.to(device).squeeze().long() + + optimizer.zero_grad() + outputs = model(images) + loss = criterion(outputs, labels) + loss.backward() + optimizer.step() + + running_loss += loss.item() + _, predicted = torch.max(outputs.data, 1) + total += labels.size(0) + correct += (predicted == labels).sum().item() + + loop.set_description(f"Epoch [{epoch+1}/{num_epochs}]") + loop.set_postfix(loss=loss.item(), acc=100.*correct/total) + + # Calculate the average loss and accuracy for this epoch + epoch_loss = running_loss / len(train_loader) + epoch_acc = 100. * correct / total + + history_loss.append(epoch_loss) + history_acc.append(epoch_acc) + + # 8. Save the Frozen Weights for your team + save_path = os.path.join(dataset_root, 'baseline_resnet50.pth') + torch.save(model.state_dict(), save_path) + print(f"\nTraining Complete! Baseline weights saved to: {save_path}") + + # Create the Learning Curve Graph + fig, ax1 = plt.subplots(figsize=(10, 6)) + + # Plot Loss (Red Line) + color = 'tab:red' + ax1.set_xlabel('Epochs', fontweight='bold') + ax1.set_ylabel('Training Loss', color=color, fontweight='bold') + ax1.plot(range(1, num_epochs+1), history_loss, color=color, marker='o', label='Loss') + ax1.tick_params(axis='y', labelcolor=color) + + # Plot Accuracy (Blue Line) on the same graph + ax2 = ax1.twinx() + color = 'tab:blue' + ax2.set_ylabel('Training Accuracy (%)', color=color, fontweight='bold') + ax2.plot(range(1, num_epochs+1), history_acc, color=color, marker='s', label='Accuracy') + ax2.tick_params(axis='y', labelcolor=color) + + plt.title('ResNet50 Training Curve', fontsize=14, fontweight='bold') + fig.tight_layout() + + # Save the image + graph_path = os.path.join(dataset_root, 'learning_curve.png') + plt.savefig(graph_path, dpi=300) + print(f"Learning Curve saved to: {graph_path}") + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/CNN/Confusion Matrixabseline.png b/CNN/Confusion Matrixabseline.png new file mode 100644 index 0000000000000000000000000000000000000000..ccfa2d65f866d9ffc9606fddec6eaa97e39332b4 --- /dev/null +++ b/CNN/Confusion Matrixabseline.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d89638aea497d4e6dbb02da45d872b0f90680ba41c3ce299040eb3a109a6a57 +size 23936 diff --git a/CNN/Evaluate.py b/CNN/Evaluate.py new file mode 100644 index 0000000000000000000000000000000000000000..0f6d8899b62d845dfcba16c9e879a5a80ff9bc3e --- /dev/null +++ b/CNN/Evaluate.py @@ -0,0 +1,110 @@ +import os +import torch +import torch.nn as nn +from torchvision import transforms, models +import medmnist +from medmnist import INFO +from torch.utils.data import DataLoader +from sklearn.metrics import classification_report, confusion_matrix, ConfusionMatrixDisplay, roc_curve, auc +import matplotlib.pyplot as plt +import numpy as np + +def main(): + # 1. Hardware Setup (Hardware Agnostic) + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Evaluating on: {device}") + + # Streaming from the secondary NVMe + dataset_root = r"C:\Users\USER\Downloads\MedMNIST_Data" + + data_flag = 'pneumoniamnist' + info = INFO[data_flag] + DataClass = getattr(medmnist, info['python_class']) + + # 2. Strict Validation Preprocessing + val_transform = transforms.Compose([ + transforms.Grayscale(num_output_channels=3), + transforms.ToTensor(), + transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]) + ]) + + # 3. Load the Validation Dataset + print("Loading Validation Data...") + val_dataset = DataClass(split='val', transform=val_transform, download=False, size=224, root=dataset_root) + val_loader = DataLoader(dataset=val_dataset, batch_size=32, shuffle=False, num_workers=0) + + # 4. Reconstruct and Load the Model + print("Rebuilding ResNet50 Architecture...") + model = models.resnet50() + num_ftrs = model.fc.in_features + model.fc = nn.Linear(num_ftrs, 2) + + #Put Model Path here + weights_path = r"C:\Users\Brian ooi\Documents\code\CVPR\CVPRAssignment\baseline_resnet50.pth" + model.load_state_dict(torch.load(weights_path, map_location=device, weights_only=True)) + model = model.to(device) + model.eval() + + all_predictions = [] + all_true_labels = [] + all_probabilities = [] # Raw probabilities for the ROC curve + + print("Running Inference...") + with torch.no_grad(): + for images, labels in val_loader: + images = images.to(device) + labels = labels.to(device).squeeze().long() + + outputs = model(images) + + # Apply softmax to get percentages (0.0 to 1.0) instead of raw logits + probabilities = torch.softmax(outputs, dim=1) + _, predicted = torch.max(outputs.data, 1) + + all_predictions.extend(predicted.cpu().numpy()) + all_true_labels.extend(labels.cpu().numpy()) + # Save the probability specifically for the "Pneumonia (1)" class + all_probabilities.extend(probabilities[:, 1].cpu().numpy()) + + # 5. The Clinical Metrics (Sensitivity & Specificity) + cm = confusion_matrix(all_true_labels, all_predictions) + tn, fp, fn, tp = cm.ravel() + + sensitivity = tp / (tp + fn) + specificity = tn / (tn + fp) + + print("\n" + "="*50) + print("CLINICAL PERFORMANCE METRICS") + print("="*50) + print(f"Sensitivity (Recall for Pneumonia): {sensitivity:.4f}") + print(f"Specificity (Recall for Normal): {specificity:.4f}") + print("="*50) + + # 6. Generate the ROC Curve + print("Generating ROC Curve Window...") + fpr, tpr, thresholds = roc_curve(all_true_labels, all_probabilities) + roc_auc = auc(fpr, tpr) + + fig, ax = plt.subplots(figsize=(8, 6)) + ax.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC curve (AUC = {roc_auc:.4f})') + ax.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--', label='Random Guessing') + ax.set_xlim([0.0, 1.0]) + ax.set_ylim([0.0, 1.05]) + ax.set_xlabel('False Positive Rate (1 - Specificity)', fontweight='bold') + ax.set_ylabel('True Positive Rate (Sensitivity)', fontweight='bold') + ax.set_title('Receiver Operating Characteristic (ROC) - Baseline ResNet50 (No Augmentation)', fontweight='bold') + ax.legend(loc="lower right") + + # Save the ROC curve to your NVMe + roc_path = os.path.join(dataset_root, 'roc_curve.png') + plt.savefig(roc_path, dpi=300) + # 7. Generate and Save the Confusion Matrix Grid + print("Generating Confusion Matrix Window...") + disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=["Normal (0)", "Pneumonia (1)"]) + disp.plot(cmap=plt.cm.Blues) + plt.title('Baseline ResNet50 (No Augmentation) - PneumoniaMNIST', fontweight='bold') + plt.savefig(os.path.join(dataset_root, 'baseline_confusion_matrix.png'), dpi=300) + plt.show() + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/CNN/Evaluate_All.py b/CNN/Evaluate_All.py new file mode 100644 index 0000000000000000000000000000000000000000..6d57042a16cdfaf1cd2b701318ec537dc93c9ba4 --- /dev/null +++ b/CNN/Evaluate_All.py @@ -0,0 +1,186 @@ +import os +import torch +import torch.nn as nn +from torchvision import transforms, models +import medmnist +from medmnist import INFO +from torch.utils.data import DataLoader +from sklearn.metrics import classification_report, confusion_matrix, ConfusionMatrixDisplay, roc_curve, auc +import matplotlib.pyplot as plt +import numpy as np + +# ── CONFIG ──────────────────────────────────────────────────────────────────── +PROJECT_ROOT = r"C:\Users\Brian ooi\Documents\code\CVPR\CVPRAssignment" +RESULTS_ROOT = os.path.join(PROJECT_ROOT, "results_run2") +FIRST_RESULTS = os.path.join(PROJECT_ROOT, "results") + +MODELS = { + "Baseline": { + "weights": os.path.join(PROJECT_ROOT, "baseline_resnet50.pth"), + "label": "Baseline ResNet50 (No Augmentation)", + }, + "GAN": { + "weights": os.path.join(FIRST_RESULTS, "GAN-20260621T100120Z-3-001", "GAN", "hybrid_resnet50.pth"), + "label": "Hybrid GAN ResNet50", + }, + "EBM": { + "weights": os.path.join(FIRST_RESULTS, "EBM-20260621T100117Z-3-001", "EBM", "hybrid_ebm_resnet50.pth"), + "label": "Hybrid EBM ResNet50", + }, + "DiT": { + "weights": os.path.join(FIRST_RESULTS, "DiT-20260621T100114Z-3-001", "DiT", "hybrid_dit_resnet50.pth"), + "label": "Hybrid DiT ResNet50", + }, + "Diffusion": { + "weights": os.path.join(FIRST_RESULTS, "Diffusion-20260621T100111Z-3-001", "Diffusion", "hybrid_diffusion_resnet50.pth"), + "label": "Hybrid Diffusion ResNet50", + }, + "MaskGIT": { + "weights": os.path.join(FIRST_RESULTS, "MaskGiT-20260621T100123Z-3-001", "MaskGiT", "hybrid_maskgit_resnet50.pth"), + "label": "Hybrid MaskGIT ResNet50", + }, + "VAE": { + "weights": os.path.join(FIRST_RESULTS, "VAE-20260621T100129Z-3-001", "VAE", "hybrid_vae_resnet50.pth"), + "label": "Hybrid VAE ResNet50", + }, +} +# ───────────────────────────────────────────────────────────────────────────── + +def build_model(device): + model = models.resnet50() + model.fc = nn.Linear(model.fc.in_features, 2) + return model.to(device) + +def get_val_loader(): + val_transform = transforms.Compose([ + transforms.Grayscale(num_output_channels=3), + transforms.ToTensor(), + transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]), + ]) + info = INFO["pneumoniamnist"] + DataClass = getattr(medmnist, info["python_class"]) + val_ds = DataClass(split="val", transform=val_transform, + download=False, size=224, root=PROJECT_ROOT) + return DataLoader(val_ds, batch_size=32, shuffle=False, num_workers=0) + +def evaluate(model, val_loader, device): + model.eval() + preds, labels, probs = [], [], [] + with torch.no_grad(): + for imgs, lbls in val_loader: + imgs = imgs.to(device) + lbls = lbls.to(device).squeeze().long() + out = model(imgs) + prob = torch.softmax(out, dim=1) + _, pred = torch.max(out, 1) + preds.extend(pred.cpu().numpy()) + labels.extend(lbls.cpu().numpy()) + probs.extend(prob[:, 1].cpu().numpy()) + return np.array(preds), np.array(labels), np.array(probs) + +def save_results(name, label, preds, labels, probs, out_dir): + os.makedirs(out_dir, exist_ok=True) + + # ── Confusion Matrix ────────────────────────────────────────────────────── + cm = confusion_matrix(labels, preds) + tn, fp, fn, tp = cm.ravel() + disp = ConfusionMatrixDisplay(cm, display_labels=["Normal (0)", "Pneumonia (1)"]) + disp.plot(cmap=plt.cm.Blues) + plt.title(f"{label} - PneumoniaMNIST", fontweight="bold") + plt.savefig(os.path.join(out_dir, f"{name}_confusion_matrix.png"), dpi=300, bbox_inches="tight") + plt.close() + + # ── ROC Curve ───────────────────────────────────────────────────────────── + fpr, tpr, _ = roc_curve(labels, probs) + roc_auc = auc(fpr, tpr) + fig, ax = plt.subplots(figsize=(8, 6)) + ax.plot(fpr, tpr, color="darkorange", lw=2, label=f"ROC curve (AUC = {roc_auc:.4f})") + ax.plot([0, 1], [0, 1], color="navy", lw=2, linestyle="--", label="Random Guessing") + ax.set_xlim([0, 1]); ax.set_ylim([0, 1.05]) + ax.set_xlabel("False Positive Rate (1 - Specificity)", fontweight="bold") + ax.set_ylabel("True Positive Rate (Sensitivity)", fontweight="bold") + ax.set_title(f"ROC - {label}", fontweight="bold") + ax.legend(loc="lower right") + plt.savefig(os.path.join(out_dir, f"{name}_roc_curve.png"), dpi=300, bbox_inches="tight") + plt.close() + + # ── Score TXT ───────────────────────────────────────────────────────────── + sensitivity = tp / (tp + fn) + specificity = tn / (tn + fp) + accuracy = (tp + tn) / (tp + tn + fp + fn) + report = classification_report(labels, preds, target_names=["Normal (0)", "Pneumonia (1)"]) + + score_path = os.path.join(out_dir, f"{name}_score.txt") + with open(score_path, "w") as f: + f.write(f"{'='*50}\n") + f.write(f"CLASSIFICATION REPORT: {name.upper()}-AUGMENTED MODEL\n") + f.write(f"{'='*50}\n\n") + f.write(report) + f.write(f"\n{'='*50}\n") + f.write(f"CLINICAL METRICS\n") + f.write(f"{'='*50}\n") + f.write(f"Accuracy : {accuracy:.4f} ({accuracy*100:.2f}%)\n") + f.write(f"Sensitivity : {sensitivity:.4f} ({sensitivity*100:.2f}%)\n") + f.write(f"Specificity : {specificity:.4f} ({specificity*100:.2f}%)\n") + f.write(f"AUC : {roc_auc:.4f}\n") + f.write(f"TN={tn} FP={fp} FN={fn} TP={tp}\n") + + return { + "accuracy": accuracy, "sensitivity": sensitivity, + "specificity": specificity, "auc": roc_auc, + "tn": tn, "fp": fp, "fn": fn, "tp": tp, + } + +def save_summary(summary, out_dir): + """Save a master comparison table.""" + path = os.path.join(out_dir, "SUMMARY_TABLE.txt") + with open(path, "w") as f: + header = f"{'Model':<12} {'Accuracy':>10} {'Sensitivity':>13} {'Specificity':>13} {'AUC':>8} {'TN':>5} {'FP':>5} {'FN':>5} {'TP':>5}" + f.write("="*len(header) + "\n") + f.write("MASTER COMPARISON TABLE - PneumoniaMNIST\n") + f.write("="*len(header) + "\n") + f.write(header + "\n") + f.write("-"*len(header) + "\n") + for name, m in summary.items(): + f.write( + f"{name:<12} {m['accuracy']*100:>9.2f}% " + f"{m['sensitivity']*100:>12.2f}% " + f"{m['specificity']*100:>12.2f}% " + f"{m['auc']:>8.4f} " + f"{m['tn']:>5} {m['fp']:>5} {m['fn']:>5} {m['tp']:>5}\n" + ) + f.write("="*len(header) + "\n") + print(f"\n✅ Summary table saved → {path}") + +def main(): + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Evaluating on: {device}\n") + val_loader = get_val_loader() + summary = {} + + for name, cfg in MODELS.items(): + print(f"── Evaluating: {name} ──────────────────────────") + if not os.path.exists(cfg["weights"]): + print(f" ⚠️ Weights not found: {cfg['weights']}\n") + continue + + model = build_model(device) + model.load_state_dict(torch.load(cfg["weights"], map_location=device, weights_only=True)) + + preds, labels, probs = evaluate(model, val_loader, device) + out_dir = os.path.join(RESULTS_ROOT, name) + metrics = save_results(name, cfg["label"], preds, labels, probs, out_dir) + summary[name] = metrics + + print(f" Accuracy : {metrics['accuracy']*100:.2f}%") + print(f" Sensitivity: {metrics['sensitivity']*100:.2f}%") + print(f" Specificity: {metrics['specificity']*100:.2f}%") + print(f" AUC : {metrics['auc']:.4f}") + print(f" TN={metrics['tn']} FP={metrics['fp']} FN={metrics['fn']} TP={metrics['tp']}") + print(f" ✅ Saved → {out_dir}\n") + + save_summary(summary, RESULTS_ROOT) + print(f"\n🎉 All done! Results saved to: {RESULTS_ROOT}") + +if __name__ == "__main__": + main() diff --git a/CNN/GradCam.py b/CNN/GradCam.py new file mode 100644 index 0000000000000000000000000000000000000000..0d8d1c00f0c4cddf4aade653562e1ab1dfad40db --- /dev/null +++ b/CNN/GradCam.py @@ -0,0 +1,87 @@ +import os +import torch +import torch.nn as nn +from torchvision import transforms, models +import medmnist +from medmnist import INFO +import matplotlib.pyplot as plt +import numpy as np +from pytorch_grad_cam import GradCAM +from pytorch_grad_cam.utils.model_targets import ClassifierOutputTarget +from pytorch_grad_cam.utils.image import show_cam_on_image + +def main(): + # 1. Hardware Setup + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Generating Grad-CAM on: {device}") + + dataset_root = r"C:\Users\USER\Downloads\MedMNIST_Data" + info = INFO['pneumoniamnist'] + DataClass = getattr(medmnist, info['python_class']) + + # 2. Rebuild and Load the Frozen Model + print("Loading Baseline ResNet50...") + model = models.resnet50() + model.fc = nn.Linear(model.fc.in_features, 2) + weights_path = os.path.join(dataset_root, 'baseline_resnet50.pth') + model.load_state_dict(torch.load(weights_path, map_location=device, weights_only=True)) + model = model.to(device) + model.eval() # Lock the model + + # 3. Hook into the final layer + # Target layer4[-1], which is the final convolutional block before the classification head + target_layers = [model.layer4[-1]] + cam = GradCAM(model=model, target_layers=target_layers) + + # 4. Grab a sample image (without mathematical augmentations) + val_dataset_raw = DataClass(split='val', download=False, size=224, root=dataset_root) + + # Mathematical preprocessing just for the model's brain + transform = transforms.Compose([ + transforms.Grayscale(num_output_channels=3), + transforms.ToTensor(), + transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]) + ]) + + sample_idx = 0 + for i in range(len(val_dataset_raw)): + img, label = val_dataset_raw[i] + if label[0] == 1: + sample_idx = i + break + + raw_img, _ = val_dataset_raw[sample_idx] + + # Convert the raw grayscale image to RGB and scale to [0, 1] for the visual heatmap overlay + rgb_img = np.array(raw_img.convert('RGB'), dtype=np.float32) / 255.0 + + # Push the math-ready tensor to the GPU + input_tensor = transform(raw_img).unsqueeze(0).to(device) + + # 5. Generate the Heatmap + # Show pneumonia + targets = [ClassifierOutputTarget(1)] + grayscale_cam = cam(input_tensor=input_tensor, targets=targets)[0, :] + + # Overlay the red/yellow heatmap on the black and white X-ray + visualization = show_cam_on_image(rgb_img, grayscale_cam, use_rgb=True) + + # 6. Plot and Save for the Report + print("Generating Figure...") + fig, axes = plt.subplots(1, 2, figsize=(10, 5)) + axes[0].imshow(rgb_img) + axes[0].set_title("Original X-Ray (Pneumonia)", fontweight='bold') + axes[0].axis('off') + + axes[1].imshow(visualization) + axes[1].set_title("Grad-CAM Heatmap", fontweight='bold') + axes[1].axis('off') + + save_path = os.path.join(dataset_root, 'gradcam_pneumonia.png') + plt.tight_layout() + plt.savefig(save_path, dpi=300) + print(f"Success! Image saved to: {save_path}") + plt.show() + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/CNN/Train_Hybrid_CNN.py b/CNN/Train_Hybrid_CNN.py new file mode 100644 index 0000000000000000000000000000000000000000..e0dce7a67bdf2daa6bd2c8244cc2c80e0523113c --- /dev/null +++ b/CNN/Train_Hybrid_CNN.py @@ -0,0 +1,117 @@ +import os +import torch +import torch.nn as nn +import torch.optim as optim +from torchvision import transforms, models +from torch.utils.data import DataLoader, Dataset, ConcatDataset +from PIL import Image +import medmnist +from medmnist import INFO +from tqdm import tqdm +import numpy as np + +# 1. Custom Dataset Loader for GAN Images +class SyntheticDataset(Dataset): + def __init__(self, folder_path, transform=None): + self.folder_path = folder_path + self.transform = transform + self.image_files = [f for f in os.listdir(folder_path) if f.endswith('.png')] + + def __len__(self): + return len(self.image_files) + + def __getitem__(self, idx): + img_path = os.path.join(self.folder_path, self.image_files[idx]) + # Force load as grayscale to match the real X-rays perfectly + image = Image.open(img_path).convert('L') + + if self.transform: + image = self.transform(image) + + # Explicitly assign the "Normal (0)" label in the exact format MedMNIST uses + label = np.array([0]) + return image, label + +def main(): + # 2. Hardware Setup + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Training Hybrid CNN on: {device}") + + dataset_root = r"C:\Users\USER\Downloads\MedMNIST_Data" + synthetic_folder = os.path.join(dataset_root, "MaskGIT_Synthetic", "Normal_0") + + # 3. Strict Preprocessing Pipeline + train_transform = transforms.Compose([ + transforms.Resize(224), + transforms.RandomHorizontalFlip(), + transforms.RandomRotation(10), + # Convert the 1-channel X-ray to 3-channel RGB for the ResNet + transforms.Grayscale(num_output_channels=3), + transforms.ToTensor(), + transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]) + ]) + + # 4. Load the Real Dataset + print("Loading Real MedMNIST Data...") + info = INFO['pneumoniamnist'] + DataClass = getattr(medmnist, info['python_class']) + real_train_dataset = DataClass(split='train', transform=train_transform, download=False, size=224, root=dataset_root) + + # 5. Load the Synthetic Dataset + print("Loading Synthetic GAN Data...") + synthetic_train_dataset = SyntheticDataset(folder_path=synthetic_folder, transform=train_transform) + + # 6. Data Fusion (Stitching them together) + print("Fusing Datasets into Hybrid Structure...") + hybrid_dataset = ConcatDataset([real_train_dataset, synthetic_train_dataset]) + + # Num workers = 0 to prevent Windows I/O crashes + train_loader = DataLoader(dataset=hybrid_dataset, batch_size=32, shuffle=True, num_workers=0) + + print(f"Total Training Images: {len(hybrid_dataset)} (Balanced Class Distribution)") + + # 7. Initialize a Fresh ResNet50 + print("Initializing fresh ResNet50 architecture...") + model = models.resnet50(weights=models.ResNet50_Weights.DEFAULT) + num_ftrs = model.fc.in_features + model.fc = nn.Linear(num_ftrs, 2) + model = model.to(device) + + # 8. Training Parameters + criterion = nn.CrossEntropyLoss() + optimizer = optim.Adam(model.parameters(), lr=1e-4) + num_epochs = 10 + + # 9. The Training Loop + for epoch in range(num_epochs): + model.train() + running_loss = 0.0 + correct = 0 + total = 0 + + loop = tqdm(train_loader, leave=True) + for images, labels in loop: + images = images.to(device) + labels = labels.to(device).squeeze().long() + + optimizer.zero_grad() + outputs = model(images) + loss = criterion(outputs, labels) + loss.backward() + optimizer.step() + + running_loss += loss.item() + _, predicted = torch.max(outputs.data, 1) + total += labels.size(0) + correct += (predicted == labels).sum().item() + + loop.set_description(f"Epoch [{epoch+1}/{num_epochs}]") + loop.set_postfix(loss=loss.item(), acc=100.*correct/total) + + # 10. Save the Final Hybrid Brain + save_path = os.path.join(dataset_root, 'hybrid_maskgit_resnet50.pth') + torch.save(model.state_dict(), save_path) + print(f"\nHybrid Training Complete! Weights saved to: {save_path}") + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/CNN/gradcam_pneumoniabaseline.png b/CNN/gradcam_pneumoniabaseline.png new file mode 100644 index 0000000000000000000000000000000000000000..666ca838960a2fc53c42c689012e04dd11c9d57d --- /dev/null +++ b/CNN/gradcam_pneumoniabaseline.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:333fe2f5d012979dbadf35c83054f00acf4c4def38c155eb07e9e05dad04d76a +size 216462 diff --git a/CNN/rocbaseline.png b/CNN/rocbaseline.png new file mode 100644 index 0000000000000000000000000000000000000000..b1dddfac28d88080a45b8f9cee6f183eae754034 --- /dev/null +++ b/CNN/rocbaseline.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6374943239055c1cc944184ec6be03994c98f13fc0313eee8f6d1722da972228 +size 40687 diff --git a/CNN/scorebaeline.txt b/CNN/scorebaeline.txt new file mode 100644 index 0000000000000000000000000000000000000000..0a197c9b49a97f36e233ea5904c4f2be7728b29d --- /dev/null +++ b/CNN/scorebaeline.txt @@ -0,0 +1,22 @@ +================================================== + +CLASSIFICATION REPORT + +================================================== + + precision recall f1-score support + + + + Normal (0) 0.99 0.93 0.96 135 + +Pneumonia (1) 0.97 1.00 0.99 389 + + + + accuracy 0.98 524 + + macro avg 0.98 0.96 0.97 524 + + weighted avg 0.98 0.98 0.98 524 + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..a7329f2939e96a7dc9325146dfdb8c5864bc2bf6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM python:3.9-slim + +WORKDIR /app + +# Install dependencies first (for faster caching) +COPY hf_requirements.txt . +RUN pip install --no-cache-dir -r hf_requirements.txt + +# Copy only the necessary code and weights +# We copy gui/, CNN/, EBM/, VAE/ because main.py imports from them +COPY gui/ ./gui/ +COPY CNN/ ./CNN/ +COPY EBM/ ./EBM/ +COPY VAE/ ./VAE/ + +# Copy the pre-generated images and metrics +COPY results/ ./results/ + +# Copy the model weights needed for live inference +COPY *.pth ./ + +# Hugging Face Spaces require web apps to run on port 7860 +EXPOSE 7860 + +# Run FastAPI +CMD ["uvicorn", "gui.backend.main:app", "--host", "0.0.0.0", "--port", "7860"] diff --git a/EBMs/Harvest_EBM.py b/EBMs/Harvest_EBM.py new file mode 100644 index 0000000000000000000000000000000000000000..8dfa5b23b8ca43b4684d9d3ae3dcd4b1262bb3e7 --- /dev/null +++ b/EBMs/Harvest_EBM.py @@ -0,0 +1,99 @@ +import os +import torch +import torch.nn as nn +from torchvision.utils import save_image +from tqdm import tqdm + +# 1. Rebuild the Exact EBM Architecture +class EnergyModel(nn.Module): + def __init__(self): + super(EnergyModel, self).__init__() + self.net = nn.Sequential( + nn.Conv2d(1, 32, 4, 2, 1), + nn.LeakyReLU(0.2, inplace=True), + nn.Conv2d(32, 64, 4, 2, 1), + nn.LeakyReLU(0.2, inplace=True), + nn.Conv2d(64, 128, 4, 2, 1), + nn.LeakyReLU(0.2, inplace=True), + nn.Conv2d(128, 256, 4, 2, 1), + nn.LeakyReLU(0.2, inplace=True), + nn.Conv2d(256, 512, 4, 2, 1), + nn.LeakyReLU(0.2, inplace=True), + nn.Flatten(), + nn.Linear(512 * 7 * 7, 1) + ) + + def forward(self, x): + return self.net(x) + +# 2. The Langevin Sampler (Requires gradients to simulate physics!) +def sample_langevin(model, x, steps=100, step_size=10, noise_scale=0.005): + x = x.clone().detach().requires_grad_(True) + + # Enable gradients here, even if the main loop is evaluating + with torch.enable_grad(): + for _ in range(steps): + energy = model(x) + grad = torch.autograd.grad(energy.sum(), x, only_inputs=True)[0] + + # Move down the energy slope, add thermodynamic noise + x.data -= step_size * grad + noise_scale * torch.randn_like(x) + x.data = torch.clamp(x.data, -1.0, 1.0) + + return x.detach() + +def main(): + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Targeting device for EBM Harvest: {device}") + + # Windows path + dataset_root = r"C:\Users\USER\Downloads\MedMNIST_Data" + output_dir = os.path.join(dataset_root, "EBM_Synthetic", "Normal_0") + os.makedirs(output_dir, exist_ok=True) + + # 3. Load the Thermodynamic Brain + print("Loading EBM weights...") + model = EnergyModel().to(device) + weight_path = os.path.join(dataset_root, "EBM_Outputs", "ebm_baseline.pth") + + if not os.path.exists(weight_path): + print(f"Error: Weights not found at {weight_path}") + return + + model.load_state_dict(torch.load(weight_path, map_location=device, weights_only=True)) + model.eval() + + # 4. Harvest Parameters + total_images_needed = 2600 + batch_size = 64 # Pushing batch size up to maximize CUDA parallelization + generated_count = 0 + + print(f"Commencing Langevin thermodynamic sampling for {total_images_needed} lungs...") + print("Warning: This will take significantly longer than GAN/VAE harvesting!") + + # No torch.no_grad() globally because Langevin dynamics require gradients + with tqdm(total=total_images_needed, desc="Cooling Static") as pbar: + while generated_count < total_images_needed: + current_batch_size = min(batch_size, total_images_needed - generated_count) + + # Start with pure random static [-1, 1] + initial_noise = (torch.rand(current_batch_size, 1, 224, 224, device=device) * 2 - 1) + + # Run the physics simulation (100 steps for higher fidelity) + fake_images = sample_langevin(model, initial_noise, steps=100) + + # Denormalize from [-1, 1] back to [0, 1] + fake_images = (fake_images + 1) / 2.0 + + # Save the synthesized lungs + for i in range(current_batch_size): + img_path = os.path.join(output_dir, f"ebm_normal_{generated_count}.png") + save_image(fake_images[i], img_path) + generated_count += 1 + + pbar.update(current_batch_size) + + print(f"\nSuccess! EBM Harvest complete. Images stored in: {output_dir}") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/EBMs/Train_EBM.py b/EBMs/Train_EBM.py new file mode 100644 index 0000000000000000000000000000000000000000..c2a022a7e2a95ed49bb518996923ba4f45949c10 --- /dev/null +++ b/EBMs/Train_EBM.py @@ -0,0 +1,151 @@ +import os +import torch +import torch.nn as nn +import torch.optim as optim +from torchvision import transforms +from torchvision.utils import save_image +from torch.utils.data import DataLoader, Subset +import medmnist +from medmnist import INFO +from tqdm import tqdm + +# ========================================== +# 1. The Energy Function (A simple CNN) +# ========================================== +# This network's only job is to output a single scalar "Energy" score. +# Low score = Real Lung. High score = Fake/Noise. +class EnergyModel(nn.Module): + def __init__(self): + super(EnergyModel, self).__init__() + self.net = nn.Sequential( + nn.Conv2d(1, 32, 4, 2, 1), + nn.LeakyReLU(0.2, inplace=True), + nn.Conv2d(32, 64, 4, 2, 1), + nn.LeakyReLU(0.2, inplace=True), + nn.Conv2d(64, 128, 4, 2, 1), + nn.LeakyReLU(0.2, inplace=True), + nn.Conv2d(128, 256, 4, 2, 1), + nn.LeakyReLU(0.2, inplace=True), + nn.Conv2d(256, 512, 4, 2, 1), + nn.LeakyReLU(0.2, inplace=True), + nn.Flatten(), + nn.Linear(512 * 7 * 7, 1) # Output a single number + ) + + def forward(self, x): + return self.net(x) + +# ========================================== +# 2. Langevin Dynamics (The Thermodynamic Generator) +# ========================================== +def sample_langevin(model, x, steps=60, step_size=10, noise_scale=0.005): + # This is Markov Chain Monte Carlo (MCMC) + # Detach x to start a fresh computational graph + x = x.clone().detach().requires_grad_(True) + + for _ in range(steps): + # Calculate the energy of the current image + energy = model(x) + + # Sum the energy so autograd can compute gradients for the whole batch at once + grad = torch.autograd.grad(energy.sum(), x, only_inputs=True)[0] + + # Langevin Equation: + # Move pixels in the OPPOSITE direction of the gradient (to lower the energy) + # Add a tiny bit of random thermodynamic heat (noise) to prevent getting stuck + x.data -= step_size * grad + noise_scale * torch.randn_like(x) + + # Clamp pixels to stay within valid grayscale image bounds [-1, 1] + x.data = torch.clamp(x.data, -1.0, 1.0) + + return x.detach() # Strip the autograd receipt so it doesn't cause an OOM! + +# ========================================== +# 3. The Training Loop +# ========================================== +def main(): + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Igniting Thermodynamic EBM on: {device}") + + dataset_root = r"C:\Users\USER\Downloads\MedMNIST_Data" + out_dir = os.path.join(dataset_root, "EBM_Outputs") + os.makedirs(out_dir, exist_ok=True) + + # We scale to [-1, 1] for stable gradient flows in Langevin dynamics + transform = transforms.Compose([ + transforms.Resize(224), + transforms.ToTensor(), + transforms.Normalize(mean=[0.5], std=[0.5]) + ]) + + print("Loading Normal Lungs...") + info = INFO['pneumoniamnist'] + DataClass = getattr(medmnist, info['python_class']) + full_dataset = DataClass(split='train', transform=transform, download=False, size=224, root=dataset_root) + + # Isolate healthy lungs + normal_indices = [i for i in range(len(full_dataset)) if full_dataset[i][1][0] == 0] + normal_dataset = Subset(full_dataset, normal_indices) + dataloader = DataLoader(normal_dataset, batch_size=32, shuffle=True, num_workers=0) + + model = EnergyModel().to(device) + optimizer = optim.Adam(model.parameters(), lr=1e-4) + + num_epochs = 100 + print("Commencing Energy Optimization...") + + for epoch in range(num_epochs): + model.train() + loop = tqdm(dataloader, leave=True) + + for real_images, _ in loop: + real_images = real_images.to(device) + batch_size = real_images.size(0) + + # 1. Start with pure random static + initial_noise = torch.rand_like(real_images) * 2 - 1 + + # 2. Cool the static down into fake lungs via Langevin Dynamics + fake_images = sample_langevin(model, initial_noise, steps=60) + + optimizer.zero_grad() + + # 3. Calculate Energy for both Real and Fake + real_energy = model(real_images) + fake_energy = model(fake_images) + + # 4. Contrastive Divergence Loss + # Real Energy low (negative), Fake Energy high (positive) + loss = real_energy.mean() - fake_energy.mean() + + # Add L2 Regularization (Prevents the energy values from exploding to infinity) + loss += 0.001 * (real_energy ** 2 + fake_energy ** 2).mean() + + loss.backward() + + # Gradient clipping to prevent thermodynamic explosions + torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0) + optimizer.step() + + loop.set_description(f"EBM Epoch [{epoch+1}/{num_epochs}]") + loop.set_postfix(Loss=loss.item(), Real_E=real_energy.mean().item(), Fake_E=fake_energy.mean().item()) + + # Save visual progression + if (epoch + 1) % 10 == 0: + model.eval() + print(f"\nGenerating checkpoint samples for Epoch {epoch+1}...") + with torch.no_grad(): + # Use gradients to sample, enable grad temporarily + with torch.enable_grad(): + test_noise = (torch.rand(16, 1, 224, 224, device=device) * 2 - 1) + test_samples = sample_langevin(model, test_noise, steps=100) + + # Denormalize from [-1, 1] back to [0, 1] for saving + test_samples = (test_samples + 1) / 2.0 + save_image(test_samples, os.path.join(out_dir, f'ebm_sample_{epoch+1}.png'), nrow=4) + + torch.save(model.state_dict(), os.path.join(out_dir, 'ebm_baseline.pth')) + print("\nEBM Training Complete.") + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/GAN/GAN_Architecture.py b/GAN/GAN_Architecture.py new file mode 100644 index 0000000000000000000000000000000000000000..75f7c7d95e1d5ff25aff620d8396e782b6194121 --- /dev/null +++ b/GAN/GAN_Architecture.py @@ -0,0 +1,105 @@ +import torch +import torch.nn as nn + +class Generator(nn.Module): + def __init__(self, latent_dim=100): + super(Generator, self).__init__() + + # Mapping the 100-dimension noise vector to a 7x7 spatial foundation + self.init_size = 7 + self.l1 = nn.Sequential(nn.Linear(latent_dim, 256 * self.init_size ** 2)) + + # Using kernel=4, stride=2, padding=1 perfectly doubles the resolution at each step + self.conv_blocks = nn.Sequential( + nn.BatchNorm2d(256), + + # 7x7 -> 14x14 + nn.ConvTranspose2d(256, 128, kernel_size=4, stride=2, padding=1), + nn.BatchNorm2d(128), + nn.LeakyReLU(0.2, inplace=True), + + # 14x14 -> 28x28 + nn.ConvTranspose2d(128, 64, kernel_size=4, stride=2, padding=1), + nn.BatchNorm2d(64), + nn.LeakyReLU(0.2, inplace=True), + + # 28x28 -> 56x56 + nn.ConvTranspose2d(64, 32, kernel_size=4, stride=2, padding=1), + nn.BatchNorm2d(32), + nn.LeakyReLU(0.2, inplace=True), + + # 56x56 -> 112x112 + nn.ConvTranspose2d(32, 16, kernel_size=4, stride=2, padding=1), + nn.BatchNorm2d(16), + nn.LeakyReLU(0.2, inplace=True), + + # 112x112 -> 224x224 + # Output is 1 channel (Grayscale) and uses Tanh to map pixels to [-1, 1] + nn.ConvTranspose2d(16, 1, kernel_size=4, stride=2, padding=1), + nn.Tanh() + ) + + def forward(self, z): + out = self.l1(z) + out = out.view(out.shape[0], 256, self.init_size, self.init_size) + img = self.conv_blocks(out) + return img + + +class Discriminator(nn.Module): + def __init__(self): + super(Discriminator, self).__init__() + + def discriminator_block(in_filters, out_filters, bn=True): + block = [ + # Wrap the convolution in spectral normalization + nn.utils.spectral_norm(nn.Conv2d(in_filters, out_filters, kernel_size=4, stride=2, padding=1)), + nn.LeakyReLU(0.2, inplace=True), + nn.Dropout2d(0.25) + ] + if bn: + block.append(nn.BatchNorm2d(out_filters, 0.8)) + return block + + self.model = nn.Sequential( + # Input: 1 x 224 x 224 + *discriminator_block(1, 16, bn=False), # 112x112 + *discriminator_block(16, 32), # 56x56 + *discriminator_block(32, 64), # 28x28 + *discriminator_block(64, 128), # 14x14 + *discriminator_block(128, 256), # 7x7 + ) + + # The downsampled image is flattened and fed into a single neuron to guess: Real or Fake? + ds_size = 7 + self.adv_layer = nn.Sequential( + nn.Linear(256 * ds_size ** 2, 1), + nn.Sigmoid() + ) + + def forward(self, img): + out = self.model(img) + out = out.view(out.shape[0], -1) + validity = self.adv_layer(out) + return validity + +if __name__ == "__main__": + print("Testing GAN Dimensions...") + + # 1. Create a dummy noise vector (Batch Size of 2, 100 random numbers each) + latent_dim = 100 + z = torch.randn(2, latent_dim) + + # 2. Test Generator + gen = Generator(latent_dim) + fake_imgs = gen(z) + print(f"Generator Output Shape: {fake_imgs.shape}") + # EXPECTED: [2, 1, 224, 224] (2 images, 1 channel, 224x224 pixels) + + # 3. Test Discriminator + disc = Discriminator() + validity = disc(fake_imgs) + print(f"Discriminator Output Shape: {validity.shape}") + # EXPECTED: [2, 1] (2 guesses between 0.0 and 1.0) + + print("If you see [2, 1, 224, 224] and [2, 1], the architecture is perfectly locked in!") \ No newline at end of file diff --git a/GAN/Harvest_Fakes.py b/GAN/Harvest_Fakes.py new file mode 100644 index 0000000000000000000000000000000000000000..39874e78824749f0fbf8291f4436a29f656f5b22 --- /dev/null +++ b/GAN/Harvest_Fakes.py @@ -0,0 +1,54 @@ +import os +import torch +from torchvision.utils import save_image +from tqdm import tqdm + +# Import the blueprint +from GAN_Architecture import Generator + +def main(): + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Harvesting synthetic data on: {device}") + + # Set up the exact folder structure needed for easy PyTorch loading later + dataset_root = r"C:\Users\USER\Downloads\MedMNIST_Data" + synthetic_dir = os.path.join(dataset_root, "Synthetic_Data", "Normal_0") + os.makedirs(synthetic_dir, exist_ok=True) + + # 1. Load the frozen brain + print("Waking up the trained Generator...") + latent_dim = 100 + generator = Generator(latent_dim=latent_dim).to(device) + + weights_path = os.path.join(dataset_root, 'generator_weights.pth') + generator.load_state_dict(torch.load(weights_path, map_location=device, weights_only=True)) + generator.eval() # CRITICAL: Lock the gradients + + # 2. Harvesting Parameters + num_images_needed = 2600 + batch_size = 100 + batches = num_images_needed // batch_size + + print(f"Generating {num_images_needed} high-resolution synthetic X-rays...") + + img_counter = 0 + with torch.no_grad(): + for i in tqdm(range(batches), desc="Harvesting Batches"): + # Generate pure noise + z = torch.randn(batch_size, latent_dim, device=device) + + # Pass noise through the GAN to hallucinate the images + fake_imgs = generator(z) + + # Save each image individually to the NVMe drive + for j in range(fake_imgs.size(0)): + # Un-normalize from [-1, 1] back to standard [0, 1] pixel values + save_path = os.path.join(synthetic_dir, f"synthetic_normal_{img_counter}.png") + save_image(fake_imgs[j], save_path, normalize=True) + img_counter += 1 + + print(f"\nHarvest Complete! {img_counter} synthetic healthy lungs saved to:") + print(synthetic_dir) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/GAN/Train_GAN.py b/GAN/Train_GAN.py new file mode 100644 index 0000000000000000000000000000000000000000..020d89e2bb4919b7cd188323ef6b3e98e5648b1c --- /dev/null +++ b/GAN/Train_GAN.py @@ -0,0 +1,119 @@ +import os +import torch +import torch.nn as nn +import torch.optim as optim +from torchvision import transforms +from torch.utils.data import DataLoader, Subset +import torchvision.utils as vutils +import medmnist +from medmnist import INFO +from tqdm import tqdm + +# Import your blueprints +from GAN_Architecture import Generator, Discriminator + +def main(): + # 1. Hardware & Setup + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Training GAN on: {device}") + + dataset_root = r"C:\Users\USER\Downloads\MedMNIST_Data" + os.makedirs(os.path.join(dataset_root, "GAN_Outputs"), exist_ok=True) + + # 2. Hyperparameters (The standard for stable GANs) + latent_dim = 100 + lr = 0.0002 + b1 = 0.5 + b2 = 0.999 + num_epochs = 300 # Pushed from 50 to 300 + batch_size = 128 # Taking advantage of the VRAM + + # 3. Load & Filter the Dataset (CRITICAL STEP) + # Only grayscale images mathematically bounded to [-1, 1] + transform = transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize(mean=[0.5], std=[0.5]) + ]) + + info = INFO['pneumoniamnist'] + DataClass = getattr(medmnist, info['python_class']) + + print("Loading dataset and isolating 'Normal (0)' lungs...") + full_dataset = DataClass(split='train', transform=transform, download=False, size=224, root=dataset_root) + + # Filter out all Pneumonia (1) images. + normal_indices = [i for i in range(len(full_dataset)) if full_dataset[i][1][0] == 0] + normal_dataset = Subset(full_dataset, normal_indices) + + # num_workers=0 to prevent Windows multiprocessing crashes + # Pass the new batch_size variable here + dataloader = DataLoader(normal_dataset, batch_size=batch_size, shuffle=True, num_workers=0) + print(f"Isolated {len(normal_dataset)} healthy lung images for training.") + + # 4. Initialize Networks + generator = Generator(latent_dim).to(device) + discriminator = Discriminator().to(device) + + # 5. Loss & Optimizers + adversarial_loss = nn.BCELoss() # Binary Cross Entropy + optimizer_G = optim.Adam(generator.parameters(), lr=lr, betas=(b1, b2)) + optimizer_D = optim.Adam(discriminator.parameters(), lr=lr, betas=(b1, b2)) + + # Create a static noise vector to visually track how the Generator improves over time + fixed_noise = torch.randn(16, latent_dim, device=device) + + # 6. The Arena (Training Loop) + for epoch in range(num_epochs): + loop = tqdm(dataloader, leave=True) + for i, (imgs, _) in enumerate(loop): + + # Ground truth labels (Real = 1.0, Fake = 0.0) + # Change from 1.0 to 0.9 for real images + valid = torch.full((imgs.size(0), 1), 0.9, device=device, requires_grad=False) + # Change from 0.0 to 0.1 for fake images + fake = torch.full((imgs.size(0), 1), 0.1, device=device, requires_grad=False) + + real_imgs = imgs.to(device) + + # ----------------- + # Train Generator + # ----------------- + optimizer_G.zero_grad() + + # Generate a batch of images from random noise + z = torch.randn(imgs.size(0), latent_dim, device=device) + gen_imgs = generator(z) + + # The Generator's goal is to trick the Discriminator into guessing 'valid' (1.0) + g_loss = adversarial_loss(discriminator(gen_imgs), valid) + g_loss.backward() + optimizer_G.step() + + # --------------------- + # Train Discriminator + # --------------------- + optimizer_D.zero_grad() + + real_loss = adversarial_loss(discriminator(real_imgs), valid) + fake_loss = adversarial_loss(discriminator(gen_imgs.detach()), fake) + + d_loss = (real_loss + fake_loss) / 2 + d_loss.backward() + optimizer_D.step() + + loop.set_description(f"Epoch [{epoch+1}/{num_epochs}]") + loop.set_postfix(D_loss=d_loss.item(), G_loss=g_loss.item()) + + # Save a visual sample of the hallucinated lungs every 5 epochs + if (epoch + 1) % 5 == 0: + with torch.no_grad(): + sample_imgs = generator(fixed_noise) + # Un-normalize from [-1, 1] back to [0, 1] for saving as a standard image file + vutils.save_image(sample_imgs, os.path.join(dataset_root, "GAN_Outputs", f"epoch_{epoch+1}.png"), nrow=4, normalize=True) + + # 7. Save the final Generator Brain + torch.save(generator.state_dict(), os.path.join(dataset_root, 'generator_weights.pth')) + print("GAN Training Complete! Generator saved.") + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/baseline_resnet50.pth b/baseline_resnet50.pth new file mode 100644 index 0000000000000000000000000000000000000000..39224e4921a7a9a5cc15a36cea082540a149e895 --- /dev/null +++ b/baseline_resnet50.pth @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6924d57f89b224f0118469826ceca25a6b4ea61e8ad22345d1cd88dd799e87a3 +size 94369787 diff --git a/gui/backend/main.py b/gui/backend/main.py new file mode 100644 index 0000000000000000000000000000000000000000..3e518df4d6d5481360769a36082e65ae899bf372 --- /dev/null +++ b/gui/backend/main.py @@ -0,0 +1,338 @@ +import io +import base64 +import math +import random +from pathlib import Path + +import numpy as np +import torch +import torch.nn as nn +import torch.nn.functional as F +from torchvision import transforms, models +from PIL import Image + +from fastapi import FastAPI, File, UploadFile, Form +from fastapi.middleware.cors import CORSMiddleware +from fastapi.responses import JSONResponse + +# ── Paths ───────────────────────────────────────────────────────────────────── +PROJECT_ROOT = Path(r"C:\Users\Brian ooi\Documents\code\CVPR\CVPRAssignment") +RESULTS = PROJECT_ROOT / "results" + +CLASSIFIER_WEIGHTS = { + "Baseline": PROJECT_ROOT / "baseline_resnet50.pth", + "GAN": RESULTS / "GAN-20260621T100120Z-3-001/GAN/hybrid_resnet50.pth", + "EBM": RESULTS / "EBM-20260621T100117Z-3-001/EBM/hybrid_ebm_resnet50.pth", + "DiT": RESULTS / "DiT-20260621T100114Z-3-001/DiT/hybrid_dit_resnet50.pth", + "Diffusion": RESULTS / "Diffusion-20260621T100111Z-3-001/Diffusion/hybrid_diffusion_resnet50.pth", + "MaskGIT": RESULTS / "MaskGiT-20260621T100123Z-3-001/MaskGiT/hybrid_maskgit_resnet50.pth", + "VAE": RESULTS / "VAE-20260621T100129Z-3-001/VAE/hybrid_vae_resnet50.pth", +} + +GAN_GEN_PATH = RESULTS / "GAN-20260621T100120Z-3-001/GAN/generator_weights.pth" +EBM_PATH = RESULTS / "EBM-20260621T100117Z-3-001/EBM/EBM_Outputs/ebm_baseline.pth" +VAE_PATH = RESULTS / "VAE-20260621T100129Z-3-001/VAE/vae_baseline.pth" + +# Pre-generated epoch sample grid image directories (instant serving, no inference) +SAMPLE_DIRS = { + "EBM": RESULTS / "EBM-20260621T100117Z-3-001/EBM/EBM_Outputs", + "DiT": RESULTS / "DiT-20260621T100114Z-3-001/DiT/DiT_Outputs", + "Diffusion":RESULTS / "Diffusion-20260621T100111Z-3-001/Diffusion/Diffusion_Outputs", + "MaskGIT": RESULTS / "MaskGiT-20260621T100123Z-3-001/MaskGiT/MaskGIT_Outputs", +} + +# ── GAN Architecture ────────────────────────────────────────────────────────── +class Generator(nn.Module): + def __init__(self, latent_dim=100): + super().__init__() + self.init_size = 7 + self.l1 = nn.Sequential(nn.Linear(latent_dim, 256 * self.init_size ** 2)) + self.conv_blocks = nn.Sequential( + nn.BatchNorm2d(256), + nn.ConvTranspose2d(256, 128, 4, 2, 1), nn.BatchNorm2d(128), nn.LeakyReLU(0.2, inplace=True), + nn.ConvTranspose2d(128, 64, 4, 2, 1), nn.BatchNorm2d(64), nn.LeakyReLU(0.2, inplace=True), + nn.ConvTranspose2d(64, 32, 4, 2, 1), nn.BatchNorm2d(32), nn.LeakyReLU(0.2, inplace=True), + nn.ConvTranspose2d(32, 16, 4, 2, 1), nn.BatchNorm2d(16), nn.LeakyReLU(0.2, inplace=True), + nn.ConvTranspose2d(16, 1, 4, 2, 1), nn.Tanh(), + ) + def forward(self, z): + out = self.l1(z) + out = out.view(out.shape[0], 256, self.init_size, self.init_size) + return self.conv_blocks(out) + +# ── EBM Architecture ────────────────────────────────────────────────────────── +class EnergyModel(nn.Module): + def __init__(self): + super().__init__() + self.net = nn.Sequential( + nn.Conv2d(1, 32, 4, 2, 1), nn.LeakyReLU(0.2, inplace=True), + nn.Conv2d(32, 64, 4, 2, 1), nn.LeakyReLU(0.2, inplace=True), + nn.Conv2d(64, 128, 4, 2, 1), nn.LeakyReLU(0.2, inplace=True), + nn.Conv2d(128, 256, 4, 2, 1), nn.LeakyReLU(0.2, inplace=True), + nn.Conv2d(256, 512, 4, 2, 1), nn.LeakyReLU(0.2, inplace=True), + nn.Flatten(), nn.Linear(512 * 7 * 7, 1), + ) + def forward(self, x): + return self.net(x) + +def sample_langevin(model, x, steps=25, step_size=10, noise_scale=0.005): + x = x.clone().detach().requires_grad_(True) + with torch.enable_grad(): + for _ in range(steps): + energy = model(x) + grad = torch.autograd.grad(energy.sum(), x, only_inputs=True)[0] + x.data -= step_size * grad + noise_scale * torch.randn_like(x) + x.data = torch.clamp(x.data, -1.0, 1.0) + return x.detach() + +# ── VAE Architecture ────────────────────────────────────────────────────────── +class VAE(nn.Module): + def __init__(self, latent_dim=128): + super().__init__() + self.enc1 = nn.Conv2d(1, 32, 4, 2, 1) + self.enc2 = nn.Conv2d(32, 64, 4, 2, 1) + self.enc3 = nn.Conv2d(64, 128, 4, 2, 1) + self.enc4 = nn.Conv2d(128, 256, 4, 2, 1) + self.enc5 = nn.Conv2d(256, 512, 4, 2, 1) + self.fc_mu = nn.Linear(512 * 7 * 7, latent_dim) + self.fc_logvar = nn.Linear(512 * 7 * 7, latent_dim) + self.dec_fc = nn.Linear(latent_dim, 512 * 7 * 7) + self.dec1 = nn.ConvTranspose2d(512, 256, 4, 2, 1) + self.dec2 = nn.ConvTranspose2d(256, 128, 4, 2, 1) + self.dec3 = nn.ConvTranspose2d(128, 64, 4, 2, 1) + self.dec4 = nn.ConvTranspose2d(64, 32, 4, 2, 1) + self.dec5 = nn.ConvTranspose2d(32, 1, 4, 2, 1) + + def decode(self, z): + x = F.relu(self.dec_fc(z)) + x = x.view(x.size(0), 512, 7, 7) + x = F.relu(self.dec1(x)) + x = F.relu(self.dec2(x)) + x = F.relu(self.dec3(x)) + x = F.relu(self.dec4(x)) + return torch.sigmoid(self.dec5(x)) + + def forward(self, x): + x = F.relu(self.enc1(x)); x = F.relu(self.enc2(x)) + x = F.relu(self.enc3(x)); x = F.relu(self.enc4(x)) + x = F.relu(self.enc5(x)); x = x.view(x.size(0), -1) + mu, logvar = self.fc_mu(x), self.fc_logvar(x) + std = torch.exp(0.5 * logvar) + z = mu + std * torch.randn_like(std) + return self.decode(z), mu, logvar + +# ── Model Cache ─────────────────────────────────────────────────────────────── +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") +_cache: dict = {} + +def get_gan(): + if "gan" not in _cache: + gen = Generator(latent_dim=100).to(device) + gen.load_state_dict(torch.load(GAN_GEN_PATH, map_location=device, weights_only=True)) + gen.eval(); _cache["gan"] = gen + return _cache["gan"] + +def get_ebm(): + if "ebm" not in _cache: + ebm = EnergyModel().to(device) + ebm.load_state_dict(torch.load(EBM_PATH, map_location=device, weights_only=True)) + ebm.eval(); _cache["ebm"] = ebm + return _cache["ebm"] + +def get_vae(): + if "vae" not in _cache: + vae = VAE(latent_dim=128).to(device) + vae.load_state_dict(torch.load(VAE_PATH, map_location=device, weights_only=True)) + vae.eval(); _cache["vae"] = vae + return _cache["vae"] + +def get_classifier(name: str): + key = f"clf_{name}" + if key not in _cache: + m = models.resnet50() + m.fc = nn.Linear(m.fc.in_features, 2) + m.load_state_dict(torch.load(CLASSIFIER_WEIGHTS[name], map_location=device, weights_only=True)) + m.eval(); m.to(device); _cache[key] = m + return _cache[key] + +# ── Helpers ─────────────────────────────────────────────────────────────────── +def tensor_to_b64(t: torch.Tensor) -> str: + arr = t.squeeze().cpu().numpy() + arr = np.clip(arr * 255, 0, 255).astype(np.uint8) + pil = Image.fromarray(arr, mode="L").convert("RGB") + buf = io.BytesIO(); pil.save(buf, format="PNG") + return base64.b64encode(buf.getvalue()).decode() + +def pil_to_b64(pil: Image.Image) -> str: + pil = pil.convert("RGB") + buf = io.BytesIO(); pil.save(buf, format="PNG") + return base64.b64encode(buf.getvalue()).decode() + +def grid_png_to_tiles(path: Path, n: int = 3) -> list[str]: + """Crop n individual tiles from a 4x4 grid image and return as base64 list.""" + img = Image.open(path).convert("RGB") + w, h = img.size + cols, rows = 4, 4 + tw, th = w // cols, h // rows + tiles = [] + positions = random.sample(range(cols * rows), min(n, cols * rows)) + for pos in positions: + r, c = divmod(pos, cols) + tile = img.crop((c * tw, r * th, (c+1) * tw, (r+1) * th)) + tile = tile.resize((224, 224), Image.LANCZOS) + buf = io.BytesIO(); tile.save(buf, format="PNG") + tiles.append(base64.b64encode(buf.getvalue()).decode()) + return tiles + +def get_sample_tiles(model_key: str, n: int = 3) -> list[str]: + """Return n sample images from pre-generated epoch outputs.""" + sample_dir = SAMPLE_DIRS.get(model_key) + if not sample_dir or not sample_dir.exists(): + return [] + pngs = list(sample_dir.glob("*.png")) + # Prefer later epoch samples (higher quality) + pngs.sort() + # Pick from the last half of available samples + best = pngs[len(pngs)//2:] if len(pngs) > 1 else pngs + chosen = random.sample(best, min(n, len(best))) + results = [] + for p in chosen: + results.extend(grid_png_to_tiles(p, n=1)) + if len(results) >= n: + break + return results[:n] + +# ── App ─────────────────────────────────────────────────────────────────────── +app = FastAPI(title="CVPR Medical Imaging GUI") +app.add_middleware(CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"]) + +@app.get("/health") +def health(): + return {"status": "ok", "device": str(device)} + +@app.get("/metrics_images") +def metrics_images(): + baseline_cm = RESULTS / "CNN-20260621T100109Z-3-001/CNN/Confusion Matrixabseline.png" + gan_cm = RESULTS / "GAN-20260621T100120Z-3-001/GAN/hybrid_confusion_matrix.png" + ebm_cm = RESULTS / "EBM-20260621T100117Z-3-001/EBM/hybrid_ebm_confusion_matrix.png" + + baseline_roc = RESULTS / "CNN-20260621T100109Z-3-001/CNN/rocbaseline.png" + gan_roc = RESULTS / "GAN-20260621T100120Z-3-001/GAN/roc_curvehybrid.png" + ebm_roc = RESULTS / "EBM-20260621T100117Z-3-001/EBM/roc_curveebm.png" + + def to_b64(path): + if not path.exists(): return None + return pil_to_b64(Image.open(path)) + + return { + "Baseline": {"cm": to_b64(baseline_cm), "roc": to_b64(baseline_roc)}, + "GAN": {"cm": to_b64(gan_cm), "roc": to_b64(gan_roc)}, + "EBM": {"cm": to_b64(ebm_cm), "roc": to_b64(ebm_roc)}, + } + +@app.get("/dataset_samples") +def dataset_samples(): + import medmnist + from medmnist import PneumoniaMNIST + dataset = PneumoniaMNIST(split='test', download=True) + normal_imgs = [] + pneumonia_imgs = [] + + for img, label in dataset: + if label[0] == 0 and len(normal_imgs) < 3: + normal_imgs.append(pil_to_b64(img)) + elif label[0] == 1 and len(pneumonia_imgs) < 3: + pneumonia_imgs.append(pil_to_b64(img)) + if len(normal_imgs) == 3 and len(pneumonia_imgs) == 3: + break + + return {"normal": normal_imgs, "pneumonia": pneumonia_imgs} + +@app.post("/augment") +async def augment(file: UploadFile = File(...)): + raw = await file.read() + pil = Image.open(io.BytesIO(raw)).convert("L").resize((224, 224), Image.LANCZOS) + aug_list = [ + ("Original", transforms.Compose([transforms.Resize((224, 224))])), + ("H-Flip", transforms.Compose([transforms.Resize((224, 224)), transforms.RandomHorizontalFlip(p=1.0)])), + ("Rotation ±15°", transforms.Compose([transforms.Resize((224, 224)), transforms.RandomRotation(15)])), + ("Brightness", transforms.Compose([transforms.Resize((224, 224)), transforms.ColorJitter(brightness=0.5, contrast=0.4)])), + ("Gaussian Blur", transforms.Compose([transforms.Resize((224, 224)), transforms.GaussianBlur(kernel_size=11, sigma=(2, 4))])), + ("Random Crop", transforms.Compose([transforms.Resize((256, 256)), transforms.RandomCrop(224)])), + ] + results = [{"label": lbl, "image": pil_to_b64(t(pil))} for lbl, t in aug_list] + return {"augmentations": results} + +@app.post("/generate_all") +async def generate_all(n: int = 3): + """Generate/retrieve n samples from all 6 generative models.""" + n = min(max(n, 1), 4) + output = {} + + # GAN — live generation (fast) + gen = get_gan() + z = torch.randn(n, 100, device=device) + with torch.no_grad(): + fake = gen(z) + output["GAN"] = [tensor_to_b64((fake[i] + 1) / 2.0) for i in range(n)] + + # VAE — live generation (just decoder, very fast) + vae = get_vae() + z_vae = torch.randn(n, 128, device=device) + with torch.no_grad(): + vae_out = vae.decode(z_vae) + output["VAE"] = [tensor_to_b64(vae_out[i]) for i in range(n)] + + # EBM — serve from pre-generated epoch samples (Langevin is slow on CPU) + output["EBM"] = get_sample_tiles("EBM", n) + + # DiT — serve from pre-generated epoch samples (1000-step denoising is slow) + output["DiT"] = get_sample_tiles("DiT", n) + + # Diffusion — serve from pre-generated epoch samples + output["Diffusion"] = get_sample_tiles("Diffusion", n) + + # MaskGIT — serve from pre-generated epoch samples + output["MaskGIT"] = get_sample_tiles("MaskGIT", n) + + return output + +# Keep the old /generate endpoint for backward compatibility +@app.post("/generate") +async def generate(n: int = 3): + n = min(max(n, 1), 6) + gen = get_gan() + z = torch.randn(n, 100, device=device) + with torch.no_grad(): + fake = gen(z) + gan_imgs = [tensor_to_b64((fake[i] + 1) / 2.0) for i in range(n)] + ebm = get_ebm() + noise = torch.rand(n, 1, 224, 224, device=device) * 2 - 1 + ebm_raw = sample_langevin(ebm, noise, steps=25) + ebm_imgs = [tensor_to_b64((ebm_raw[i] + 1) / 2.0) for i in range(n)] + return {"gan": gan_imgs, "ebm": ebm_imgs} + +@app.post("/classify") +async def classify(file: UploadFile = File(...), model_name: str = Form("Baseline")): + if model_name not in CLASSIFIER_WEIGHTS: + return JSONResponse(status_code=400, content={"error": f"Unknown model: {model_name}"}) + raw = await file.read() + pil = Image.open(io.BytesIO(raw)).convert("L") + t = transforms.Compose([ + transforms.Grayscale(num_output_channels=3), + transforms.Resize((224, 224)), + transforms.ToTensor(), + transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]), + ]) + tensor = t(pil).unsqueeze(0).to(device) + clf = get_classifier(model_name) + with torch.no_grad(): + prob = torch.softmax(clf(tensor), dim=1).cpu().numpy()[0] + idx = int(np.argmax(prob)) + return { + "model": model_name, + "prediction": "Normal" if idx == 0 else "Pneumonia", + "confidence": float(prob[idx]), + "prob_normal": float(prob[0]), + "prob_pneumonia": float(prob[1]), + } diff --git a/gui/frontend/.gitignore b/gui/frontend/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..a547bf36d8d11a4f89c59c144f24795749086dd1 --- /dev/null +++ b/gui/frontend/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/gui/frontend/dist/assets/index-B4BfuFGE.js b/gui/frontend/dist/assets/index-B4BfuFGE.js new file mode 100644 index 0000000000000000000000000000000000000000..24f3d0d0dff404c79cc9ac4912287026db84f3d4 --- /dev/null +++ b/gui/frontend/dist/assets/index-B4BfuFGE.js @@ -0,0 +1,9 @@ +var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var t=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var ee=Array.isArray;function S(){}var C={H:null,A:null,T:null,S:null},te=Object.prototype.hasOwnProperty;function ne(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function re(e,t){return ne(e.type,t,e.props)}function w(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ie(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ae=/\/+/g;function oe(e,t){return typeof e==`object`&&e&&e.key!=null?ie(``+e.key):t.toString(36)}function se(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(S,S):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function ce(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,ce(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+oe(e,0):a,ee(o)?(i=``,c!=null&&(i=c.replace(ae,`$&/`)+`/`),ce(o,r,i,``,function(e){return e})):o!=null&&(w(o)&&(o=re(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ae,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(ee(e))for(var u=0;u{n.exports=t()})),r=e((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,ee||(ee=!0,w());else{var t=n(l);t!==null&&oe(x,t.startTime-e)}}var ee=!1,S=-1,C=5,te=-1;function ne(){return g?!0:!(e.unstable_now()-tet&&ne());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&oe(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?w():ee=!1}}}var w;if(typeof y==`function`)w=function(){y(re)};else if(typeof MessageChannel<`u`){var ie=new MessageChannel,ae=ie.port2;ie.port1.onmessage=re,w=function(){ae.postMessage(null)}}else w=function(){_(re,0)};function oe(t,n){S=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(S),S=-1):h=!0,oe(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,ee||(ee=!0,w()))),r},e.unstable_shouldYield=ne,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),i=e(((e,t)=>{t.exports=r()})),a=e((e=>{var t=n();function r(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=a()})),s=e((e=>{var t=i(),r=n(),a=o();function s(e){var t=`https://react.dev/errors/`+e;if(1pe||(e.current=fe[pe],fe[pe]=null,pe--)}function O(e,t){pe++,fe[pe]=e.current,e.current=t}var he=me(null),ge=me(null),_e=me(null),ve=me(null);function ye(e,t){switch(O(_e,t),O(ge,e),O(he,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}D(he),O(he,e)}function be(){D(he),D(ge),D(_e)}function xe(e){e.memoizedState!==null&&O(ve,e);var t=he.current,n=Hd(t,e.type);t!==n&&(O(ge,e),O(he,n))}function Se(e){ge.current===e&&(D(he),D(ge)),ve.current===e&&(D(ve),Qf._currentValue=de)}var Ce,we;function Te(e){if(Ce===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ce=t&&t[1]||``,we=-1)`:-1i||c[r]!==l[i]){var u=` +`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Ee=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Te(n):``}function Oe(e,t){switch(e.tag){case 26:case 27:case 5:return Te(e.type);case 16:return Te(`Lazy`);case 13:return e.child!==t&&t!==null?Te(`Suspense Fallback`):Te(`Suspense`);case 19:return Te(`SuspenseList`);case 0:case 15:return De(e.type,!1);case 11:return De(e.type.render,!1);case 1:return De(e.type,!0);case 31:return Te(`Activity`);default:return``}}function ke(e){try{var t=``,n=null;do t+=Oe(e,n),n=e,e=e.return;while(e);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var Ae=Object.prototype.hasOwnProperty,je=t.unstable_scheduleCallback,Me=t.unstable_cancelCallback,Ne=t.unstable_shouldYield,Pe=t.unstable_requestPaint,Fe=t.unstable_now,Ie=t.unstable_getCurrentPriorityLevel,Le=t.unstable_ImmediatePriority,Re=t.unstable_UserBlockingPriority,ze=t.unstable_NormalPriority,Be=t.unstable_LowPriority,Ve=t.unstable_IdlePriority,He=t.log,Ue=t.unstable_setDisableYieldValue,We=null,Ge=null;function Ke(e){if(typeof He==`function`&&Ue(e),Ge&&typeof Ge.setStrictMode==`function`)try{Ge.setStrictMode(We,e)}catch{}}var qe=Math.clz32?Math.clz32:Xe,Je=Math.log,Ye=Math.LN2;function Xe(e){return e>>>=0,e===0?32:31-(Je(e)/Ye|0)|0}var Ze=256,Qe=262144,$e=4194304;function et(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function tt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=et(n))):i=et(o):i=et(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=et(n))):i=et(o)):i=et(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function nt(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function rt(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function it(){var e=$e;return $e<<=1,!($e&62914560)&&($e=4194304),e}function at(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function ot(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function st(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),yn=!1;if(vn)try{var bn={};Object.defineProperty(bn,"passive",{get:function(){yn=!0}}),window.addEventListener(`test`,bn,bn),window.removeEventListener(`test`,bn,bn)}catch{yn=!1}var xn=null,Sn=null,Cn=null;function wn(){if(Cn)return Cn;var e,t=Sn,n=t.length,r,i=`value`in xn?xn.value:xn.textContent,a=i.length;for(e=0;e=nr),ar=` `,or=!1;function sr(e,t){switch(e){case`keyup`:return er.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function cr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var lr=!1;function ur(e,t){switch(e){case`compositionend`:return cr(t);case`keypress`:return t.which===32?(or=!0,ar):null;case`textInput`:return e=t.data,e===ar&&or?null:e;default:return null}}function dr(e,t){if(lr)return e===`compositionend`||!tr&&sr(e,t)?(e=wn(),Cn=Sn=xn=null,lr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Nr(n)}}function Fr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Fr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Ir(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Gt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Gt(e.document)}return t}function Lr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Rr=vn&&`documentMode`in document&&11>=document.documentMode,zr=null,Br=null,Vr=null,Hr=!1;function Ur(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Hr||zr==null||zr!==Gt(r)||(r=zr,`selectionStart`in r&&Lr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Vr&&Mr(Vr,r)||(Vr=r,r=Ed(Br,`onSelect`),0>=o,i-=o,Fi=1<<32-qe(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),o=a(_,o,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),j&&Li(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(i,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(i,h),o=a(y,o,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(i,h),j&&Li(i,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(i,v.value,l),v!==null&&(o=a(v,o,g),d===null?u=v:d.sibling=v,d=v);return j&&Li(i,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,i,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),o=a(v,o,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(i,e)}),j&&Li(i,g),u}function b(e,r,a,c){if(typeof a==`object`&&a&&a.type===y&&a.key===null&&(a=a.props.children),typeof a==`object`&&a){switch(a.$$typeof){case _:a:{for(var l=a.key;r!==null;){if(r.key===l){if(l=a.type,l===y){if(r.tag===7){n(e,r.sibling),c=i(r,a.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===w&&Fa(l)===r.type){n(e,r.sibling),c=i(r,a.props),Ha(c,a),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}a.type===y?(c=Si(a.props.children,e.mode,c,a.key),c.return=e,e=c):(c=xi(a.type,a.key,a.props,null,e.mode,c),Ha(c,a),c.return=e,e=c)}return o(e);case v:a:{for(l=a.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){n(e,r.sibling),c=i(r,a.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=Ti(a,e.mode,c),c.return=e,e=c}return o(e);case w:return a=Fa(a),b(e,r,a,c)}if(ue(a))return h(e,r,a,c);if(se(a)){if(l=se(a),typeof l!=`function`)throw Error(s(150));return a=l.call(a),g(e,r,a,c)}if(typeof a.then==`function`)return b(e,r,Va(a),c);if(a.$$typeof===S)return b(e,r,ua(e,a),c);Ua(e,a)}return typeof a==`string`&&a!==``||typeof a==`number`||typeof a==`bigint`?(a=``+a,r!==null&&r.tag===6?(n(e,r.sibling),c=i(r,a),c.return=e,e=c):(n(e,r),c=Ci(a,e.mode,c),c.return=e,e=c),o(e)):n(e,r)}return function(e,t,n,r){try{Ba=0;var i=b(e,t,n,r);return za=null,i}catch(t){if(t===ka||t===ja)throw t;var a=_i(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Ga=Wa(!0),Ka=Wa(!1),qa=!1;function Ja(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ya(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Xa(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Za(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,W&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=mi(e),pi(e,null,n),t}return ui(e,r,t,n),mi(e)}function Qa(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,lt(e,n)}}function $a(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var eo=!1;function to(){if(eo){var e=ba;if(e!==null)throw e}}function no(e,t,n,r){eo=!1;var i=e.updateQueue;qa=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(q&f)===f:(r&f)===f){f!==0&&f===ya&&(eo=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(m=g.payload,typeof m==`function`){d=m.call(_,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,f=typeof m==`function`?m.call(_,d,f):m,f==null)break a;d=h({},d,f);break a;case 2:qa=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Kl|=o,e.lanes=o,e.memoizedState=d}}function ro(e,t){if(typeof e!=`function`)throw Error(s(191,e));e.call(t)}function io(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=T.T,s={};T.T=s,zs(e,!1,t,n);try{var c=i(),l=T.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Rs(e,t,Ca(c,r),pu(e)):Rs(e,t,r,pu(e))}catch(n){Rs(e,t,{then:function(){},status:`rejected`,reason:n},pu())}finally{E.p=a,o!==null&&s.types!==null&&(o.types=s.types),T.T=o}}function Os(){}function ks(e,t,n,r){if(e.tag!==5)throw Error(s(476));var i=As(e).queue;Ds(e,i,t,de,n===null?Os:function(){return js(e),n(r)})}function As(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:de,baseState:de,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Bo,lastRenderedState:de},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Bo,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function js(e){var t=As(e);t.next===null&&(t=e.alternate.memoizedState),Rs(e,t.next.queue,{},pu())}function Ms(){return la(Qf)}function Ns(){return R().memoizedState}function Ps(){return R().memoizedState}function Fs(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=pu();e=Xa(n);var r=Za(t,e,n);r!==null&&(hu(r,t,n),Qa(r,t,n)),t={cache:ha()},e.payload=t;return}t=t.return}}function Is(e,t,n){var r=pu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Bs(e)?Vs(t,n):(n=di(e,t,n,r),n!==null&&(hu(n,e,r),Hs(n,t,r)))}function Ls(e,t,n){Rs(e,t,n,pu())}function Rs(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Bs(e))Vs(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,jr(s,o))return ui(e,t,i,0),G===null&&li(),!1}catch{}if(n=di(e,t,i,r),n!==null)return hu(n,e,r),Hs(n,t,r),!0}return!1}function zs(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Bs(e)){if(t)throw Error(s(479))}else t=di(e,n,r,2),t!==null&&hu(t,e,2)}function Bs(e){var t=e.alternate;return e===P||t!==null&&t===P}function Vs(e,t){xo=bo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Hs(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,lt(e,n)}}var Us={readContext:la,use:Ro,useCallback:L,useContext:L,useEffect:L,useImperativeHandle:L,useLayoutEffect:L,useInsertionEffect:L,useMemo:L,useReducer:L,useRef:L,useState:L,useDebugValue:L,useDeferredValue:L,useTransition:L,useSyncExternalStore:L,useId:L,useHostTransitionStatus:L,useFormState:L,useActionState:L,useOptimistic:L,useMemoCache:L,useCacheRefresh:L};Us.useEffectEvent=L;var Ws={readContext:la,use:Ro,useCallback:function(e,t){return Fo().memoizedState=[e,t===void 0?null:t],e},useContext:la,useEffect:ms,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),fs(4194308,4,bs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return fs(4194308,4,e,t)},useInsertionEffect:function(e,t){fs(4,2,e,t)},useMemo:function(e,t){var n=Fo();t=t===void 0?null:t;var r=e();if(So){Ke(!0);try{e()}finally{Ke(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Fo();if(n!==void 0){var i=n(t);if(So){Ke(!0);try{n(t)}finally{Ke(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=Is.bind(null,P,e),[r.memoizedState,e]},useRef:function(e){var t=Fo();return e={current:e},t.memoizedState=e},useState:function(e){e=Xo(e);var t=e.queue,n=Ls.bind(null,P,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Ss,useDeferredValue:function(e,t){return Ts(Fo(),e,t)},useTransition:function(){var e=Xo(!1);return e=Ds.bind(null,P,e.queue,!0,!1),Fo().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=P,i=Fo();if(j){if(n===void 0)throw Error(s(407));n=n()}else{if(n=t(),G===null)throw Error(s(349));q&127||Go(r,t,n)}i.memoizedState=n;var a={value:n,getSnapshot:t};return i.queue=a,ms(qo.bind(null,r,a,e),[e]),r.flags|=2048,us(9,{destroy:void 0},Ko.bind(null,r,a,n,t),null),n},useId:function(){var e=Fo(),t=G.identifierPrefix;if(j){var n=Ii,r=Fi;n=(r&~(1<<32-qe(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=Co++,0<\/script>`,a=a.removeChild(a.firstChild);break;case`select`:a=typeof r.is==`string`?o.createElement(`select`,{is:r.is}):o.createElement(`select`),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a=typeof r.is==`string`?o.createElement(i,{is:r.is}):o.createElement(i)}}a[gt]=t,a[_t]=r;a:for(o=t.child;o!==null;){if(o.tag===5||o.tag===6)a.appendChild(o.stateNode);else if(o.tag!==4&&o.tag!==27&&o.child!==null){o.child.return=o,o=o.child;continue}if(o===t)break a;for(;o.sibling===null;){if(o.return===null||o.return===t)break a;o=o.return}o.sibling.return=o.return,o=o.sibling}t.stateNode=a;a:switch(Pd(a,i,r),i){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Lc(t)}}return B(t),Rc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Lc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(s(166));if(e=_e.current,Yi(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,i=Hi,i!==null)switch(i.tag){case 27:case 5:r=i.memoizedProps}e[gt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Ki(t,!0)}else e=Bd(e).createTextNode(r),e[gt]=t,t.stateNode=e}return B(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Yi(t),n!==null){if(e===null){if(!r)throw Error(s(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(s(557));e[gt]=t}else Xi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;B(t),e=!1}else n=Zi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(_o(t),t):(_o(t),null);if(t.flags&128)throw Error(s(558))}return B(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=Yi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!i)throw Error(s(318));if(i=t.memoizedState,i=i===null?null:i.dehydrated,!i)throw Error(s(317));i[gt]=t}else Xi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;B(t),i=!1}else i=Zi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(_o(t),t):(_o(t),null)}return _o(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,i=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(i=r.alternate.memoizedState.cachePool.pool),a=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(a=r.memoizedState.cachePool.pool),a!==i&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Bc(t,t.updateQueue),B(t),null);case 4:return be(),e===null&&Sd(t.stateNode.containerInfo),B(t),null;case 10:return ra(t.type),B(t),null;case 19:if(D(N),r=t.memoizedState,r===null)return B(t),null;if(i=(t.flags&128)!=0,a=r.rendering,a===null)if(i)Vc(r,!1);else{if(Y!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(a=vo(e),a!==null){for(t.flags|=128,Vc(r,!1),e=a.updateQueue,t.updateQueue=e,Bc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)bi(n,e),n=n.sibling;return O(N,N.current&1|2),j&&Li(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Fe()>nu&&(t.flags|=128,i=!0,Vc(r,!1),t.lanes=4194304)}else{if(!i)if(e=vo(a),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,Bc(t,e),Vc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!a.alternate&&!j)return B(t),null}else 2*Fe()-r.renderingStartTime>nu&&n!==536870912&&(t.flags|=128,i=!0,Vc(r,!1),t.lanes=4194304);r.isBackwards?(a.sibling=t.child,t.child=a):(e=r.last,e===null?t.child=a:e.sibling=a,r.last=a)}return r.tail===null?(B(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Fe(),e.sibling=null,n=N.current,O(N,i?n&1|2:n&1),j&&Li(t,r.treeForkCount),e);case 22:case 23:return _o(t),lo(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(B(t),t.subtreeFlags&6&&(t.flags|=8192)):B(t),n=t.updateQueue,n!==null&&Bc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&D(Ta),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ra(M),B(t),null;case 25:return null;case 30:return null}throw Error(s(156,t.tag))}function Uc(e,t){switch(Bi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ra(M),be(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Se(t),null;case 31:if(t.memoizedState!==null){if(_o(t),t.alternate===null)throw Error(s(340));Xi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(_o(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(s(340));Xi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return D(N),null;case 4:return be(),null;case 10:return ra(t.type),null;case 22:case 23:return _o(t),lo(),e!==null&&D(Ta),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ra(M),null;case 25:return null;default:return null}}function Wc(e,t){switch(Bi(t),t.tag){case 3:ra(M),be();break;case 26:case 27:case 5:Se(t);break;case 4:be();break;case 31:t.memoizedState!==null&&_o(t);break;case 13:_o(t);break;case 19:D(N);break;case 10:ra(t.type);break;case 22:case 23:_o(t),lo(),e!==null&&D(Ta);break;case 24:ra(M)}}function Gc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Kc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function qc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{io(t,n)}catch(t){Z(e,e.return,t)}}}function Jc(e,t,n){n.props=Zs(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Yc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Xc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}function Zc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function Qc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[_t]=t}catch(t){Z(e,e.return,t)}}function $c(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function el(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||$c(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function tl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=ln));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(tl(e,t,n),e=e.sibling;e!==null;)tl(e,t,n),e=e.sibling}function nl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(nl(e,t,n),e=e.sibling;e!==null;)nl(e,t,n),e=e.sibling}function rl(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[gt]=e,t[_t]=n}catch(t){Z(e,e.return,t)}}var il=!1,V=!1,al=!1,ol=typeof WeakSet==`function`?WeakSet:Set,H=null;function sl(e,t){if(e=e.containerInfo,Rd=sp,e=Ir(e),Lr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,a=r.focusNode;r=r.focusOffset;try{n.nodeType,a.nodeType}catch{n=null;break a}var o=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||i!==0&&f.nodeType!==3||(c=o+i),f!==a||r!==0&&f.nodeType!==3||(l=o+r),f.nodeType===3&&(o+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===i&&(c=o),p===a&&++d===r&&(l=o),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,H=t;H!==null;)if(t=H,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,H=e;else for(;H!==null;){switch(t=H,a=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Pd(a,r,n),a[gt]=e,k(a),r=a;break a;case`link`:var o=Vf(`link`,`href`,i).get(r+(n.href||``));if(o){for(var c=0;cg&&(o=g,g=h,h=o);var _=Pr(s,h),v=Pr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,T.T=null,n=lu,lu=null;var a=au,o=su;if(X=0,ou=au=null,su=0,W&6)throw Error(s(331));var c=W;if(W|=4,Il(a.current),Ol(a,a.current,o,n),W=c,id(0,!1),Ge&&typeof Ge.onPostCommitFiberRoot==`function`)try{Ge.onPostCommitFiberRoot(We,a)}catch{}return!0}finally{E.p=i,T.T=r,Vu(e,t)}}function Wu(e,t,n){t=Di(n,t),t=rc(e.stateNode,t,2),e=Za(e,t,2),e!==null&&(ot(e,2),rd(e))}function Z(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(iu===null||!iu.has(r))){e=Di(n,e),n=ic(2),r=Za(t,n,2),r!==null&&(ac(n,r,t,e),ot(r,2),rd(r));break}}t=t.return}}function Gu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Bl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Wl=!0,i.add(n),e=Ku.bind(null,e,t,n),t.then(e,e))}function Ku(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,G===e&&(q&n)===n&&(Y===4||Y===3&&(q&62914560)===q&&300>Fe()-eu?!(W&2)&&Su(e,0):Jl|=n,Xl===q&&(Xl=0)),rd(e)}function qu(e,t){t===0&&(t=it()),e=fi(e,t),e!==null&&(ot(e,t),rd(e))}function Ju(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Yu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(s(314))}r!==null&&r.delete(t),qu(e,n)}function Xu(e,t){return je(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-qe(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=q,a=tt(r,r===G?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||nt(r,a)||(n=!0,ld(r,a));r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Gd()&&(e=nd);for(var t=Fe(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}X!==0&&X!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=qt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),k(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+qt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+qt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+qt(n.imageSizes)+`"]`)):i+=`[href="`+qt(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),k(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+qt(r)+`"][href="`+qt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=h({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),k(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=Ot(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);k(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=Ot(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),k(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=Ot(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),k(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var i=(i=_e.current)?gf(i):null;if(!i)throw Error(s(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=Ot(i).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var a=Ot(i).hoistableStyles,o=a.get(e);if(o||(i=i.ownerDocument||i,o={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},a.set(e,o),(a=i.querySelector(jf(e)))&&!a._p&&(o.instance=a,o.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),a||Nf(i,e,n,o.state))),t&&r===null)throw Error(s(528,``));return o}if(t&&r!==null)throw Error(s(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=Ot(i).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(s(444,e))}}function Af(e){return`href="`+qt(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),k(t),e.head.appendChild(t))}function Pf(e){return`[src="`+qt(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+qt(n.href)+`"]`);if(r)return t.instance=r,k(r),r;var i=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),k(r),Pd(r,`style`,i),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:i=Af(n.href);var a=e.querySelector(jf(i));if(a)return t.state.loading|=4,t.instance=a,k(a),a;r=Mf(n),(i=mf.get(i))&&Rf(r,i),a=(e.ownerDocument||e).createElement(`link`),k(a);var o=a;return o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),t.state.loading|=4,Lf(a,n.precedence,e),t.instance=a;case`script`:return a=Pf(n.src),(i=e.querySelector(Ff(a)))?(t.instance=i,k(i),i):(r=n,(i=mf.get(a))&&(r=h({},n),zf(r,i)),e=e.ownerDocument||e,i=e.createElement(`script`),k(i),Pd(i,`link`,r),e.head.appendChild(i),t.instance=i);case`void`:return null;default:throw Error(s(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,k(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),k(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=s()})),l=n(),u=c(),d=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),f=e(((e,t)=>{t.exports=d()}))(),p=`http://localhost:8000`,m=[`Baseline`,`GAN`,`EBM`],h={GAN:{color:`#4f8ef7`,desc:`ConvTranspose2d Generator + Spectral Norm Discriminator`},EBM:{color:`#a855f7`,desc:`Energy-Based Model via Langevin Dynamics (MCMC sampling)`}};function g({onUpload:e,preview:t}){let[n,r]=(0,l.useState)(!1),i=(0,l.useRef)(),a=(0,l.useCallback)(t=>{t&&t.type.startsWith(`image/`)&&e(t)},[e]);return(0,f.jsxs)(`div`,{id:`upload-zone`,className:`upload-zone ${n?`dragging`:``} ${t?`has-preview`:``}`,onDragOver:e=>{e.preventDefault(),r(!0)},onDragLeave:()=>r(!1),onDrop:e=>{e.preventDefault(),r(!1),a(e.dataTransfer.files[0])},onClick:()=>i.current.click(),children:[(0,f.jsx)(`input`,{ref:i,type:`file`,accept:`image/*`,hidden:!0,onChange:e=>a(e.target.files[0])}),t?(0,f.jsxs)(`div`,{className:`preview-wrap`,children:[(0,f.jsx)(`img`,{src:t,alt:`Uploaded X-ray`,className:`preview-img`}),(0,f.jsx)(`span`,{className:`preview-change`,children:`Click to change`})]}):(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`div`,{className:`upload-icon`,children:`🫁`}),(0,f.jsx)(`p`,{className:`upload-title`,children:`Drop your chest X-ray here`}),(0,f.jsx)(`p`,{className:`upload-sub`,children:`or click to browse — PNG, JPG, JPEG`})]})]})}function _({items:e,loading:t}){return t?(0,f.jsx)(`div`,{className:`spinner-wrap`,children:(0,f.jsx)(`div`,{className:`spinner`})}):e.length?(0,f.jsx)(`div`,{className:`img-grid`,children:e.map((e,t)=>(0,f.jsxs)(`div`,{className:`img-card`,children:[(0,f.jsx)(`img`,{src:`data:image/png;base64,${e.image}`,alt:e.label}),(0,f.jsx)(`span`,{className:`img-label`,children:e.label})]},t))}):(0,f.jsx)(`p`,{className:`empty`,children:`Upload an image to see augmented versions.`})}function v({name:e,images:t}){let n=h[e];return(0,f.jsxs)(`div`,{className:`model-col`,children:[(0,f.jsxs)(`div`,{className:`model-col-header`,style:{borderColor:n.color},children:[(0,f.jsx)(`span`,{className:`model-name`,style:{color:n.color},children:e}),(0,f.jsx)(`span`,{className:`model-desc`,children:n.desc})]}),(0,f.jsx)(`div`,{className:`model-img-stack`,children:t.length===0?[0].map(e=>(0,f.jsx)(`div`,{className:`img-placeholder`},e)):t.map((t,n)=>(0,f.jsxs)(`div`,{className:`img-card`,children:[(0,f.jsx)(`img`,{src:`data:image/png;base64,${t}`,alt:`${e} sample`}),(0,f.jsx)(`span`,{className:`img-label`,children:`Sample`})]},n))})]})}function y({label:e,value:t,color:n}){return(0,f.jsxs)(`div`,{className:`conf-row`,children:[(0,f.jsx)(`span`,{className:`conf-label`,children:e}),(0,f.jsx)(`div`,{className:`conf-track`,children:(0,f.jsx)(`div`,{className:`conf-fill`,style:{width:`${t*100}%`,background:n}})}),(0,f.jsxs)(`span`,{className:`conf-pct`,children:[(t*100).toFixed(1),`%`]})]})}function b({navigate:e}){let[t,n]=(0,l.useState)(null),[r,i]=(0,l.useState)(null),[a,o]=(0,l.useState)(!0);return(0,l.useEffect)(()=>{Promise.all([fetch(`${p}/metrics_images`).then(e=>e.json()),fetch(`${p}/dataset_samples`).then(e=>e.json())]).then(([e,t])=>{n(e),i(t),o(!1)}).catch(()=>o(!1))},[]),(0,f.jsxs)(`div`,{className:`app`,children:[(0,f.jsx)(`header`,{className:`hero`,children:(0,f.jsxs)(`div`,{className:`hero-content`,children:[(0,f.jsx)(`a`,{href:`/`,onClick:t=>e(`/`,t),className:`nav-link`,style:{marginBottom:`16px`,display:`inline-block`},children:`← Back to Generator`}),(0,f.jsxs)(`h1`,{children:[`Model Evaluation `,(0,f.jsx)(`span`,{className:`gradient-text`,children:`Metrics`})]}),(0,f.jsx)(`p`,{className:`hero-sub`,children:`Confusion Matrices and ROC Curves for Baseline, GAN, and EBM`})]})}),(0,f.jsx)(`main`,{className:`main`,children:a?(0,f.jsxs)(`div`,{className:`spinner-wrap`,children:[(0,f.jsx)(`div`,{className:`spinner`}),(0,f.jsx)(`p`,{className:`spinner-label`,children:`Loading metrics and dataset samples...`})]}):t?(0,f.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`24px`},children:[r&&(0,f.jsxs)(`section`,{className:`card`,children:[(0,f.jsx)(`div`,{className:`card-header`,children:(0,f.jsx)(`h2`,{children:`PneumoniaMNIST Dataset Samples`})}),(0,f.jsx)(`p`,{className:`card-desc`,children:`Real examples from the test set used to evaluate the models.`}),(0,f.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`1fr 1fr`,gap:`24px`,padding:`16px 0`},children:[(0,f.jsxs)(`div`,{className:`model-col`,children:[(0,f.jsxs)(`div`,{className:`model-col-header`,style:{borderColor:`#10b981`},children:[(0,f.jsx)(`span`,{className:`model-name`,style:{color:`#10b981`},children:`Normal (Healthy)`}),(0,f.jsx)(`span`,{className:`model-desc`,children:`The minority class in training (Needs augmentation)`})]}),(0,f.jsx)(`div`,{className:`model-img-stack`,style:{flexDirection:`row`,justifyContent:`center`},children:r.normal.map((e,t)=>(0,f.jsx)(`img`,{src:`data:image/png;base64,${e}`,style:{width:`30%`,borderRadius:`4px`},alt:`Normal`},t))})]}),(0,f.jsxs)(`div`,{className:`model-col`,children:[(0,f.jsxs)(`div`,{className:`model-col-header`,style:{borderColor:`#f87171`},children:[(0,f.jsx)(`span`,{className:`model-name`,style:{color:`#f87171`},children:`Pneumonia`}),(0,f.jsx)(`span`,{className:`model-desc`,children:`The majority class (Notice the cloudy opacities)`})]}),(0,f.jsx)(`div`,{className:`model-img-stack`,style:{flexDirection:`row`,justifyContent:`center`},children:r.pneumonia.map((e,t)=>(0,f.jsx)(`img`,{src:`data:image/png;base64,${e}`,style:{width:`30%`,borderRadius:`4px`},alt:`Pneumonia`},t))})]})]})]}),(0,f.jsxs)(`section`,{className:`card`,children:[(0,f.jsx)(`div`,{className:`card-header`,children:(0,f.jsx)(`h2`,{children:`Why did EBM outperform GAN?`})}),(0,f.jsxs)(`div`,{style:{padding:`16px`,fontSize:`14px`,color:`var(--text)`,lineHeight:`1.6`},children:[(0,f.jsxs)(`p`,{style:{marginBottom:`12px`},children:[(0,f.jsx)(`strong`,{children:`1. No Mode Collapse:`}),` GANs often suffer from mode collapse, where the generator finds a few realistic examples and repeats them. This creates sharp but repetitive images, failing to capture the full natural diversity of human lungs.`]}),(0,f.jsxs)(`p`,{style:{marginBottom:`12px`},children:[(0,f.jsx)(`strong`,{children:`2. Diverse Distribution Modeling:`}),` EBMs (via Langevin dynamics) explore the entire continuous space of the data distribution. Because they assign low "energy" to all realistic lung states, EBMs generate a massive, diverse variety of healthy lungs including subtle variations in rib cage shapes and tissue densities.`]}),(0,f.jsxs)(`p`,{children:[(0,f.jsx)(`strong`,{children:`Conclusion:`}),` When the EBM-generated "Normal" images were added to the dataset, they provided the classifier with a much wider, richer spectrum of healthy lungs to learn from. This led to a more robust decision boundary, drastically reducing `,(0,f.jsx)(`strong`,{children:`False Positives`}),` from 10 (Baseline) to 5 (EBM), pushing Specificity to 96.30%.`]})]})]}),(0,f.jsxs)(`section`,{children:[(0,f.jsx)(`h2`,{style:{fontSize:`18px`,marginBottom:`16px`},children:`Model Metrics`}),(0,f.jsx)(`div`,{className:`metrics-grid`,children:[`Baseline`,`GAN`,`EBM`].map(e=>(0,f.jsxs)(`section`,{className:`card`,children:[(0,f.jsx)(`div`,{className:`card-header`,children:(0,f.jsxs)(`h2`,{style:{color:h[e]?.color||`var(--text)`},children:[e,` Metrics`]})}),(0,f.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`1fr 1fr`,gap:`24px`,padding:`16px`},children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`h3`,{style:{fontSize:`12px`,textTransform:`uppercase`,color:`var(--muted)`,marginBottom:`8px`,textAlign:`center`},children:`Confusion Matrix`}),t[e]?.cm?(0,f.jsx)(`img`,{src:`data:image/png;base64,${t[e].cm}`,alt:`${e} CM`,style:{width:`100%`,borderRadius:`8px`,border:`1px solid var(--border)`}}):(0,f.jsx)(`div`,{className:`img-placeholder`})]}),(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`h3`,{style:{fontSize:`12px`,textTransform:`uppercase`,color:`var(--muted)`,marginBottom:`8px`,textAlign:`center`},children:`ROC Curve`}),t[e]?.roc?(0,f.jsx)(`img`,{src:`data:image/png;base64,${t[e].roc}`,alt:`${e} ROC`,style:{width:`100%`,borderRadius:`8px`,border:`1px solid var(--border)`}}):(0,f.jsx)(`div`,{className:`img-placeholder`})]})]})]},e))})]})]}):(0,f.jsx)(`p`,{className:`empty`,children:`Failed to load metrics. Check backend.`})})]})}function x(){let[e,t]=(0,l.useState)(window.location.pathname),[n,r]=(0,l.useState)(null),[i,a]=(0,l.useState)(``),[o,s]=(0,l.useState)([]),[c,u]=(0,l.useState)({}),[d,x]=(0,l.useState)(null),[ee,S]=(0,l.useState)(`Baseline`),[C,te]=(0,l.useState)(!1),[ne,re]=(0,l.useState)(!1),[w,ie]=(0,l.useState)(!1);(0,l.useEffect)(()=>{let e=()=>t(window.location.pathname);return window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[]);let ae=(e,n)=>{n&&n.preventDefault(),window.history.pushState({},``,e),t(e)};return e===`/dashboard`?(0,f.jsx)(b,{navigate:ae}):(0,f.jsxs)(`div`,{className:`app`,children:[(0,f.jsxs)(`header`,{className:`hero`,children:[(0,f.jsx)(`div`,{className:`hero-glow`}),(0,f.jsxs)(`div`,{className:`hero-content`,children:[(0,f.jsx)(`div`,{className:`hero-badge`,children:`CVPR 2026 — BERR 4743`}),(0,f.jsxs)(`h1`,{children:[`Generative Medical Imaging`,(0,f.jsx)(`br`,{}),(0,f.jsx)(`span`,{className:`gradient-text`,children:`Augmentation Dashboard`})]}),(0,f.jsx)(`p`,{className:`hero-sub`,children:`PneumoniaMNIST • GAN • EBM`}),(0,f.jsx)(`div`,{style:{marginTop:`16px`},children:(0,f.jsx)(`a`,{href:`/dashboard`,onClick:e=>ae(`/dashboard`,e),className:`nav-link`,children:`View Model Metrics →`})})]})]}),(0,f.jsxs)(`main`,{className:`main`,children:[(0,f.jsxs)(`section`,{className:`card`,children:[(0,f.jsxs)(`div`,{className:`card-header`,children:[(0,f.jsx)(`h2`,{children:`Upload Chest X-ray`}),(0,f.jsx)(`span`,{className:`badge`,children:`Step 1`})]}),(0,f.jsx)(g,{onUpload:async e=>{r(e),a(URL.createObjectURL(e)),s([]),u({}),x(null),te(!0),re(!0);try{let t=new FormData;t.append(`file`,e);let[n,r]=await Promise.all([fetch(`${p}/augment`,{method:`POST`,body:t}),fetch(`${p}/generate?n=1`,{method:`POST`})]),[i,a]=await Promise.all([n.json(),r.json()]);s(i.augmentations),u(a)}catch{alert(`Backend not reachable. Make sure FastAPI is running on port 8000.`)}finally{te(!1),re(!1)}},preview:i})]}),(0,f.jsxs)(`section`,{className:`card`,children:[(0,f.jsxs)(`div`,{className:`card-header`,children:[(0,f.jsx)(`h2`,{children:`Traditional Augmentations`}),(0,f.jsx)(`span`,{className:`badge`,children:`Row 1`})]}),(0,f.jsx)(`p`,{className:`card-desc`,children:`Standard image transforms applied to the uploaded X-ray — flips, rotations, brightness, blur, and cropping.`}),(0,f.jsx)(_,{items:o,loading:C})]}),(0,f.jsxs)(`section`,{className:`card`,children:[(0,f.jsxs)(`div`,{className:`card-header`,children:[(0,f.jsx)(`h2`,{children:`Generative Model Samples`}),(0,f.jsx)(`span`,{className:`badge gen-badge`,children:`Row 2 — GAN & EBM`})]}),(0,f.jsxs)(`p`,{className:`card-desc`,children:[`Synthetic `,(0,f.jsx)(`strong`,{children:`Normal`}),` lung images auto-generated when you upload — these are what each model added to the training set to fix class imbalance.`]}),ne&&(0,f.jsxs)(`div`,{className:`spinner-wrap`,children:[(0,f.jsx)(`div`,{className:`spinner`}),(0,f.jsx)(`p`,{className:`spinner-label`,children:`Generating GAN & EBM samples…`})]}),!ne&&Object.keys(c).length===0&&(0,f.jsx)(`p`,{className:`empty`,children:`Upload an image above to auto-generate GAN & EBM samples.`}),Object.keys(c).length>0&&(0,f.jsxs)(`div`,{className:`gen-all-grid`,style:{gridTemplateColumns:`1fr 1fr`},children:[(0,f.jsx)(v,{name:`GAN`,images:c.gan||[]}),(0,f.jsx)(v,{name:`EBM`,images:c.ebm||[]})]})]}),(0,f.jsxs)(`section`,{className:`card`,children:[(0,f.jsxs)(`div`,{className:`card-header`,children:[(0,f.jsx)(`h2`,{children:`Classification`}),(0,f.jsx)(`span`,{className:`badge`,children:`Step 2 — Run Inference`})]}),(0,f.jsx)(`p`,{className:`card-desc`,children:`Select a ResNet50 model trained with each augmentation strategy and classify your uploaded X-ray.`}),(0,f.jsxs)(`div`,{className:`clf-controls`,children:[(0,f.jsx)(`div`,{className:`select-wrap`,children:(0,f.jsx)(`select`,{id:`model-select`,value:ee,onChange:e=>S(e.target.value),children:m.map(e=>(0,f.jsx)(`option`,{value:e,children:e},e))})}),(0,f.jsx)(`button`,{id:`btn-classify`,className:`btn-primary`,onClick:async()=>{if(n){ie(!0),x(null);try{let e=new FormData;e.append(`file`,n),e.append(`model_name`,ee),x(await(await fetch(`${p}/classify`,{method:`POST`,body:e})).json())}catch{alert(`Classification failed. Check backend.`)}finally{ie(!1)}}},disabled:!n||w,children:w?`Classifying…`:`🔬 Classify`})]}),w&&(0,f.jsx)(`div`,{className:`spinner-wrap`,children:(0,f.jsx)(`div`,{className:`spinner`})}),d&&(0,f.jsxs)(`div`,{className:`result-box ${d.prediction===`Normal`?`normal`:`pneumonia`}`,children:[(0,f.jsxs)(`div`,{className:`result-header`,children:[(0,f.jsx)(`span`,{className:`result-icon`,children:d.prediction===`Normal`?`✅`:`⚠️`}),(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`div`,{className:`result-label`,children:`Prediction`}),(0,f.jsx)(`div`,{className:`result-pred`,children:d.prediction})]}),(0,f.jsx)(`div`,{className:`result-model-badge`,children:d.model})]}),(0,f.jsxs)(`div`,{className:`conf-bars`,children:[(0,f.jsx)(y,{label:`Normal`,value:d.prob_normal,color:`var(--green)`}),(0,f.jsx)(y,{label:`Pneumonia`,value:d.prob_pneumonia,color:`var(--red)`})]})]})]}),(0,f.jsxs)(`section`,{className:`card`,children:[(0,f.jsxs)(`div`,{className:`card-header`,children:[(0,f.jsx)(`h2`,{children:`Model Performance Summary`}),(0,f.jsx)(`span`,{className:`badge`,children:`PneumoniaMNIST Test Set`})]}),(0,f.jsx)(`div`,{className:`table-wrap`,children:(0,f.jsxs)(`table`,{className:`results-table`,children:[(0,f.jsx)(`thead`,{children:(0,f.jsxs)(`tr`,{children:[(0,f.jsx)(`th`,{children:`Model`}),(0,f.jsx)(`th`,{children:`Accuracy`}),(0,f.jsx)(`th`,{children:`Sensitivity`}),(0,f.jsx)(`th`,{children:`Specificity`}),(0,f.jsx)(`th`,{children:`AUC`}),(0,f.jsx)(`th`,{children:`FP ↓`}),(0,f.jsx)(`th`,{children:`FN ↓`})]})}),(0,f.jsx)(`tbody`,{children:[{name:`Baseline`,acc:97.9,sens:99.74,spec:92.59,auc:.9983,fp:10,fn:1},{name:`GAN`,acc:98.47,sens:99.74,spec:94.81,auc:.9979,fp:7,fn:1},{name:`EBM`,acc:98.85,sens:99.74,spec:96.3,auc:.9993,fp:5,fn:1,best:!0}].map(e=>(0,f.jsxs)(`tr`,{className:e.best?`row-best`:``,children:[(0,f.jsx)(`td`,{children:(0,f.jsxs)(`span`,{className:`table-model-name`,children:[e.name!==`Baseline`&&(0,f.jsx)(`span`,{className:`table-dot`,style:{background:h[e.name]?.color}}),(0,f.jsx)(`strong`,{children:e.name}),e.best&&(0,f.jsx)(`span`,{className:`trophy`,children:`🏆 Best`})]})}),(0,f.jsx)(`td`,{className:e.best?`cell-best`:``,children:(0,f.jsxs)(`strong`,{children:[e.acc.toFixed(2),`%`]})}),(0,f.jsxs)(`td`,{children:[e.sens.toFixed(2),`%`]}),(0,f.jsxs)(`td`,{children:[e.spec.toFixed(2),`%`]}),(0,f.jsx)(`td`,{children:e.auc.toFixed(4)}),(0,f.jsx)(`td`,{className:e.fp<=3?`cell-fp-low`:e.fp>=10?`cell-worst`:``,children:e.fp}),(0,f.jsx)(`td`,{className:e.fn<=1?`cell-fp-low`:e.fn>=4?`cell-worst`:``,children:e.fn})]},e.name))})]})})]})]}),(0,f.jsx)(`footer`,{className:`footer`,children:(0,f.jsx)(`p`,{children:`CVPR Assignment — Generative Medical Imaging Augmentation — PneumoniaMNIST`})})]})}(0,u.createRoot)(document.getElementById(`root`)).render((0,f.jsx)(l.StrictMode,{children:(0,f.jsx)(x,{})})); \ No newline at end of file diff --git a/gui/frontend/dist/assets/index-_A223EyE.css b/gui/frontend/dist/assets/index-_A223EyE.css new file mode 100644 index 0000000000000000000000000000000000000000..e64d34e8a185d6e644ab89c315801663f638d291 --- /dev/null +++ b/gui/frontend/dist/assets/index-_A223EyE.css @@ -0,0 +1 @@ +@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap";*,:before,:after{box-sizing:border-box}body{margin:0}:root{--bg:#060b17;--surface:#0d1526;--surface2:#111d35;--border:#4f8ef726;--blue:#4f8ef7;--purple:#a855f7;--green:#22c55e;--red:#ef4444;--text:#e2e8f0;--muted:#64748b;--radius:14px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:Inter,sans-serif}.hero{text-align:center;border-bottom:1px solid var(--border);padding:64px 24px 56px;position:relative;overflow:hidden}.hero-glow{pointer-events:none;background:radial-gradient(80% 60% at 50% -20%,#4f8ef72e 0%,#0000 70%);position:absolute;inset:0}.hero-badge{letter-spacing:.1em;text-transform:uppercase;color:var(--blue);background:#4f8ef714;border:1px solid #4f8ef759;border-radius:99px;margin-bottom:20px;padding:4px 14px;font-size:11px;font-weight:600;display:inline-block}.hero h1{color:#fff;margin-bottom:16px;font-size:clamp(28px,5vw,52px);font-weight:800;line-height:1.15}.gradient-text{background:linear-gradient(135deg, var(--blue), var(--purple));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.hero-sub{color:var(--muted);letter-spacing:.04em;font-size:14px}.main{flex-direction:column;gap:28px;max-width:1100px;margin:0 auto;padding:40px 24px 80px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:28px;transition:border-color .2s}.card:hover{border-color:#4f8ef74d}.card-header{align-items:center;gap:12px;margin-bottom:20px;display:flex}.card-header h2{color:#fff;font-size:18px;font-weight:700}.card-desc{color:var(--muted);margin-bottom:20px;font-size:13px;line-height:1.6}.badge{letter-spacing:.06em;text-transform:uppercase;color:var(--blue);white-space:nowrap;background:#4f8ef71f;border:1px solid #4f8ef740;border-radius:99px;padding:3px 10px;font-size:11px;font-weight:600}.upload-zone{text-align:center;cursor:pointer;background:#4f8ef70a;border:2px dashed #4f8ef759;border-radius:12px;padding:48px 24px;transition:all .25s}.upload-zone:hover,.upload-zone.dragging{border-color:var(--blue);background:#4f8ef717;transform:scale(1.005)}.upload-zone.has-preview{padding:16px}.upload-icon{margin-bottom:12px;font-size:48px}.upload-title{color:#fff;margin-bottom:6px;font-size:16px;font-weight:600}.upload-sub{color:var(--muted);font-size:13px}.preview-wrap{display:inline-block;position:relative}.preview-img{border-radius:8px;max-height:220px;margin:0 auto;display:block}.preview-change{color:#fff;opacity:0;background:#0000008c;border-radius:0 0 8px 8px;padding:6px;font-size:12px;transition:opacity .2s;position:absolute;bottom:0;left:0;right:0}.preview-wrap:hover .preview-change{opacity:1}.img-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px;display:grid}.img-card{background:var(--surface2);border:1px solid var(--border);border-radius:10px;transition:transform .2s,border-color .2s;overflow:hidden}.img-card:hover{border-color:#4f8ef766;transform:translateY(-3px)}.img-card img{aspect-ratio:1;object-fit:cover;width:100%;display:block}.img-label{color:var(--muted);text-align:center;padding:6px 4px;font-size:11px;font-weight:500;display:block}.gen-all-grid{grid-template-columns:repeat(3,1fr);gap:16px;margin-top:24px;display:grid}.model-col{background:var(--surface2);border:1px solid var(--border);border-radius:12px;transition:border-color .2s,transform .2s;overflow:hidden}.model-col:hover{transform:translateY(-2px)}.model-col-header{border-left:3px solid;border-bottom:1px solid var(--border);background:#ffffff05;padding:12px 14px}.model-name{letter-spacing:.05em;text-transform:uppercase;margin-bottom:3px;font-size:13px;font-weight:700;display:block}.model-desc{color:var(--muted);font-size:10px;line-height:1.4;display:block}.model-img-stack{flex-direction:column;gap:8px;padding:10px;display:flex}.img-placeholder{aspect-ratio:1;background:#ffffff0a;border:1px dashed #ffffff14;border-radius:8px;width:100%}.gen-badge{color:#10b981!important;background:#10b9811f!important;border-color:#10b9814d!important}.spinner-label{color:var(--muted);text-align:center;margin-top:10px;font-size:12px}@media (width<=900px){.gen-all-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=580px){.gen-all-grid{grid-template-columns:1fr}}.btn-primary{background:linear-gradient(135deg, var(--blue), var(--purple));color:#fff;cursor:pointer;border:none;border-radius:10px;padding:11px 24px;font-family:inherit;font-size:14px;font-weight:600;transition:opacity .2s,transform .15s}.btn-primary:hover:not(:disabled){opacity:.88;transform:translateY(-1px)}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.clf-controls{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.select-wrap select{background:var(--surface2);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:10px;outline:none;min-width:150px;padding:10px 16px;font-family:inherit;font-size:14px;transition:border-color .2s}.select-wrap select:focus{border-color:var(--blue)}.result-box{border:1px solid;border-radius:12px;margin-top:20px;padding:20px}.result-box.normal{background:#22c55e0f;border-color:#22c55e59}.result-box.pneumonia{background:#ef44440f;border-color:#ef444459}.result-header{align-items:center;gap:14px;margin-bottom:16px;display:flex}.result-icon{font-size:28px}.result-label{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:11px}.result-pred{color:#fff;font-size:22px;font-weight:800}.result-model-badge{color:var(--blue);background:#4f8ef71f;border:1px solid #4f8ef740;border-radius:99px;margin-left:auto;padding:4px 12px;font-size:11px;font-weight:600}.conf-bars{flex-direction:column;gap:10px;display:flex}.conf-row{align-items:center;gap:10px;display:flex}.conf-label{width:80px;color:var(--muted);font-size:13px;font-weight:500}.conf-track{background:#ffffff14;border-radius:99px;flex:1;height:8px;overflow:hidden}.conf-fill{border-radius:99px;height:100%;transition:width .6s cubic-bezier(.4,0,.2,1)}.conf-pct{text-align:right;width:48px;color:var(--text);font-size:13px;font-weight:600}.table-wrap{overflow-x:auto}.results-table{border-collapse:collapse;width:100%;font-size:13px}.results-table th{text-align:left;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);border-bottom:1px solid var(--border);padding:10px 14px;font-size:11px;font-weight:600}.results-table td{border-bottom:1px solid #ffffff0a;padding:12px 14px}.results-table tr:last-child td{border-bottom:none}.results-table tr:hover td{background:#4f8ef70d}.row-best td{background:#4f8ef712}.row-best td:first-child{border-left:3px solid var(--blue)}.cell-best,.cell-fp-low{color:#22d3a5;font-weight:700}.cell-worst{color:#f87171;font-weight:600}.table-model-name{align-items:center;gap:8px;display:flex}.table-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.trophy{color:var(--blue);background:linear-gradient(135deg,#4f8ef733,#a855f733);border:1px solid #4f8ef766;border-radius:99px;margin-left:4px;padding:2px 8px;font-size:11px;font-weight:700}.spinner-wrap{justify-content:center;padding:32px;display:flex}.spinner{border:3px solid #4f8ef733;border-top-color:var(--blue);border-radius:50%;width:36px;height:36px;animation:.75s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.empty{color:var(--muted);text-align:center;padding:32px 0;font-size:13px}.footer{border-top:1px solid var(--border);text-align:center;color:var(--muted);padding:20px;font-size:12px}@media (width<=640px){.gen-grid{grid-template-columns:1fr}.gen-divider{display:none}.clf-controls{flex-direction:column;align-items:stretch}} diff --git a/gui/frontend/dist/favicon.svg b/gui/frontend/dist/favicon.svg new file mode 100644 index 0000000000000000000000000000000000000000..6893eb13237060adc0c968a690149a49faa2d7d3 --- /dev/null +++ b/gui/frontend/dist/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gui/frontend/dist/icons.svg b/gui/frontend/dist/icons.svg new file mode 100644 index 0000000000000000000000000000000000000000..e9522193d9f796a9748e9ad8c952a5df73c87db9 --- /dev/null +++ b/gui/frontend/dist/icons.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gui/frontend/dist/index.html b/gui/frontend/dist/index.html new file mode 100644 index 0000000000000000000000000000000000000000..5c76f61d6896241ed03215f40f7d62c07b62954c --- /dev/null +++ b/gui/frontend/dist/index.html @@ -0,0 +1,15 @@ + + + + + + + CVPR — Generative Medical Imaging Augmentation + + + + + +
+ + diff --git a/gui/frontend/eslint.config.js b/gui/frontend/eslint.config.js new file mode 100644 index 0000000000000000000000000000000000000000..ea36dd3dc45ddadb9d25dd5e1c74a706dd61a6a9 --- /dev/null +++ b/gui/frontend/eslint.config.js @@ -0,0 +1,21 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{js,jsx}'], + extends: [ + js.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + ], + languageOptions: { + globals: globals.browser, + parserOptions: { ecmaFeatures: { jsx: true } }, + }, + }, +]) diff --git a/gui/frontend/index.html b/gui/frontend/index.html new file mode 100644 index 0000000000000000000000000000000000000000..42d3840dbb37b2f5ffc3d2704bbf88ffb69d639f --- /dev/null +++ b/gui/frontend/index.html @@ -0,0 +1,14 @@ + + + + + + + CVPR — Generative Medical Imaging Augmentation + + + +
+ + + diff --git a/gui/frontend/node_modules/.bin/acorn b/gui/frontend/node_modules/.bin/acorn new file mode 100644 index 0000000000000000000000000000000000000000..679bd163cc4adfd8e92cc64c559990cd34c5a261 --- /dev/null +++ b/gui/frontend/node_modules/.bin/acorn @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../acorn/bin/acorn" "$@" +else + exec node "$basedir/../acorn/bin/acorn" "$@" +fi diff --git a/gui/frontend/node_modules/.bin/acorn.cmd b/gui/frontend/node_modules/.bin/acorn.cmd new file mode 100644 index 0000000000000000000000000000000000000000..f38017c45767fc8842ae06ebc48a2b06cc035499 --- /dev/null +++ b/gui/frontend/node_modules/.bin/acorn.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\acorn\bin\acorn" %* diff --git a/gui/frontend/node_modules/.bin/acorn.ps1 b/gui/frontend/node_modules/.bin/acorn.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..6f6dcddf3bedbbdd275f0cf39734caee1a1b3485 --- /dev/null +++ b/gui/frontend/node_modules/.bin/acorn.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args + } else { + & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../acorn/bin/acorn" $args + } else { + & "node$exe" "$basedir/../acorn/bin/acorn" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/gui/frontend/node_modules/.bin/baseline-browser-mapping b/gui/frontend/node_modules/.bin/baseline-browser-mapping new file mode 100644 index 0000000000000000000000000000000000000000..7e4dd08bba45dccb90ff74c23cef2e676cd7e6ad --- /dev/null +++ b/gui/frontend/node_modules/.bin/baseline-browser-mapping @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../baseline-browser-mapping/dist/cli.cjs" "$@" +else + exec node "$basedir/../baseline-browser-mapping/dist/cli.cjs" "$@" +fi diff --git a/gui/frontend/node_modules/.bin/baseline-browser-mapping.cmd b/gui/frontend/node_modules/.bin/baseline-browser-mapping.cmd new file mode 100644 index 0000000000000000000000000000000000000000..d4f491f5c0916977a06c3a14fce169dda2ba0a13 --- /dev/null +++ b/gui/frontend/node_modules/.bin/baseline-browser-mapping.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\baseline-browser-mapping\dist\cli.cjs" %* diff --git a/gui/frontend/node_modules/.bin/baseline-browser-mapping.ps1 b/gui/frontend/node_modules/.bin/baseline-browser-mapping.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..049fe744b2c5bf7a87e83f31aafa533853c89d53 --- /dev/null +++ b/gui/frontend/node_modules/.bin/baseline-browser-mapping.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../baseline-browser-mapping/dist/cli.cjs" $args + } else { + & "$basedir/node$exe" "$basedir/../baseline-browser-mapping/dist/cli.cjs" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../baseline-browser-mapping/dist/cli.cjs" $args + } else { + & "node$exe" "$basedir/../baseline-browser-mapping/dist/cli.cjs" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/gui/frontend/node_modules/.bin/browserslist b/gui/frontend/node_modules/.bin/browserslist new file mode 100644 index 0000000000000000000000000000000000000000..60e71ad87fe6c7b80a1b638e05374747165c7dc3 --- /dev/null +++ b/gui/frontend/node_modules/.bin/browserslist @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../browserslist/cli.js" "$@" +else + exec node "$basedir/../browserslist/cli.js" "$@" +fi diff --git a/gui/frontend/node_modules/.bin/browserslist.cmd b/gui/frontend/node_modules/.bin/browserslist.cmd new file mode 100644 index 0000000000000000000000000000000000000000..e2a0d3f91436d1b7b2576eee13e91755ea366e11 --- /dev/null +++ b/gui/frontend/node_modules/.bin/browserslist.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\browserslist\cli.js" %* diff --git a/gui/frontend/node_modules/.bin/browserslist.ps1 b/gui/frontend/node_modules/.bin/browserslist.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..01e10a08b5c584f589ed19acdbf59fd334a5d460 --- /dev/null +++ b/gui/frontend/node_modules/.bin/browserslist.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../browserslist/cli.js" $args + } else { + & "$basedir/node$exe" "$basedir/../browserslist/cli.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../browserslist/cli.js" $args + } else { + & "node$exe" "$basedir/../browserslist/cli.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/gui/frontend/node_modules/.bin/eslint b/gui/frontend/node_modules/.bin/eslint new file mode 100644 index 0000000000000000000000000000000000000000..d450ee1f995bec20b56254f00539d831a978dcbf --- /dev/null +++ b/gui/frontend/node_modules/.bin/eslint @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../eslint/bin/eslint.js" "$@" +else + exec node "$basedir/../eslint/bin/eslint.js" "$@" +fi diff --git a/gui/frontend/node_modules/.bin/eslint.cmd b/gui/frontend/node_modules/.bin/eslint.cmd new file mode 100644 index 0000000000000000000000000000000000000000..2f7264f20496b24325c3d3ab0eb6b1e0aaa56608 --- /dev/null +++ b/gui/frontend/node_modules/.bin/eslint.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\eslint\bin\eslint.js" %* diff --git a/gui/frontend/node_modules/.bin/eslint.ps1 b/gui/frontend/node_modules/.bin/eslint.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..155bec495cf420da5844cece2930002021a56ed4 --- /dev/null +++ b/gui/frontend/node_modules/.bin/eslint.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../eslint/bin/eslint.js" $args + } else { + & "$basedir/node$exe" "$basedir/../eslint/bin/eslint.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../eslint/bin/eslint.js" $args + } else { + & "node$exe" "$basedir/../eslint/bin/eslint.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/gui/frontend/node_modules/.bin/jsesc b/gui/frontend/node_modules/.bin/jsesc new file mode 100644 index 0000000000000000000000000000000000000000..879c413310dd22ff230e1d55ba5141cb80683a15 --- /dev/null +++ b/gui/frontend/node_modules/.bin/jsesc @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../jsesc/bin/jsesc" "$@" +else + exec node "$basedir/../jsesc/bin/jsesc" "$@" +fi diff --git a/gui/frontend/node_modules/.bin/jsesc.cmd b/gui/frontend/node_modules/.bin/jsesc.cmd new file mode 100644 index 0000000000000000000000000000000000000000..7ff98f0e086250dbddc7d61ef7d26333b6d2dfbc --- /dev/null +++ b/gui/frontend/node_modules/.bin/jsesc.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\jsesc\bin\jsesc" %* diff --git a/gui/frontend/node_modules/.bin/jsesc.ps1 b/gui/frontend/node_modules/.bin/jsesc.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..6007e022fc30a40c6dac91a6b5c65e4eb013e2ab --- /dev/null +++ b/gui/frontend/node_modules/.bin/jsesc.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../jsesc/bin/jsesc" $args + } else { + & "$basedir/node$exe" "$basedir/../jsesc/bin/jsesc" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../jsesc/bin/jsesc" $args + } else { + & "node$exe" "$basedir/../jsesc/bin/jsesc" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/gui/frontend/node_modules/.bin/json5 b/gui/frontend/node_modules/.bin/json5 new file mode 100644 index 0000000000000000000000000000000000000000..abf72a4ec0da531abc257068d73b4c12e8226483 --- /dev/null +++ b/gui/frontend/node_modules/.bin/json5 @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../json5/lib/cli.js" "$@" +else + exec node "$basedir/../json5/lib/cli.js" "$@" +fi diff --git a/gui/frontend/node_modules/.bin/json5.cmd b/gui/frontend/node_modules/.bin/json5.cmd new file mode 100644 index 0000000000000000000000000000000000000000..d9924813a4e46cc314b7081bc324ce9a09053efe --- /dev/null +++ b/gui/frontend/node_modules/.bin/json5.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\json5\lib\cli.js" %* diff --git a/gui/frontend/node_modules/.bin/json5.ps1 b/gui/frontend/node_modules/.bin/json5.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..8700ddbef200b4f0da529d73ef2646cf9515106a --- /dev/null +++ b/gui/frontend/node_modules/.bin/json5.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../json5/lib/cli.js" $args + } else { + & "$basedir/node$exe" "$basedir/../json5/lib/cli.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../json5/lib/cli.js" $args + } else { + & "node$exe" "$basedir/../json5/lib/cli.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/gui/frontend/node_modules/.bin/nanoid b/gui/frontend/node_modules/.bin/nanoid new file mode 100644 index 0000000000000000000000000000000000000000..46220bdb50a336a25eeeba47739cbb251b2e4483 --- /dev/null +++ b/gui/frontend/node_modules/.bin/nanoid @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../nanoid/bin/nanoid.cjs" "$@" +else + exec node "$basedir/../nanoid/bin/nanoid.cjs" "$@" +fi diff --git a/gui/frontend/node_modules/.bin/nanoid.cmd b/gui/frontend/node_modules/.bin/nanoid.cmd new file mode 100644 index 0000000000000000000000000000000000000000..601a2c88c5e2788b82bf5e5675075538e5c5c2b0 --- /dev/null +++ b/gui/frontend/node_modules/.bin/nanoid.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nanoid\bin\nanoid.cjs" %* diff --git a/gui/frontend/node_modules/.bin/nanoid.ps1 b/gui/frontend/node_modules/.bin/nanoid.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..d8a4d7ad2115d92dae280d26ae80bc9fd6e0566b --- /dev/null +++ b/gui/frontend/node_modules/.bin/nanoid.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } else { + & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } else { + & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/gui/frontend/node_modules/.bin/node-which b/gui/frontend/node_modules/.bin/node-which new file mode 100644 index 0000000000000000000000000000000000000000..b49b03f7dea0a5db135d49c70682cbc6d9b22d3e --- /dev/null +++ b/gui/frontend/node_modules/.bin/node-which @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../which/bin/node-which" "$@" +else + exec node "$basedir/../which/bin/node-which" "$@" +fi diff --git a/gui/frontend/node_modules/.bin/node-which.cmd b/gui/frontend/node_modules/.bin/node-which.cmd new file mode 100644 index 0000000000000000000000000000000000000000..7eeb31642248ae9ebfeac89fcdce7b85ce7ce406 --- /dev/null +++ b/gui/frontend/node_modules/.bin/node-which.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\which\bin\node-which" %* diff --git a/gui/frontend/node_modules/.bin/node-which.ps1 b/gui/frontend/node_modules/.bin/node-which.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..cfb09e844435ed79806cefb921aeda5eaad42d37 --- /dev/null +++ b/gui/frontend/node_modules/.bin/node-which.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../which/bin/node-which" $args + } else { + & "$basedir/node$exe" "$basedir/../which/bin/node-which" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../which/bin/node-which" $args + } else { + & "node$exe" "$basedir/../which/bin/node-which" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/gui/frontend/node_modules/.bin/parser b/gui/frontend/node_modules/.bin/parser new file mode 100644 index 0000000000000000000000000000000000000000..7696ad41d33c1276aa2a44916a9197e62aa196f3 --- /dev/null +++ b/gui/frontend/node_modules/.bin/parser @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../@babel/parser/bin/babel-parser.js" "$@" +else + exec node "$basedir/../@babel/parser/bin/babel-parser.js" "$@" +fi diff --git a/gui/frontend/node_modules/.bin/parser.cmd b/gui/frontend/node_modules/.bin/parser.cmd new file mode 100644 index 0000000000000000000000000000000000000000..a8a204057d59123a0ac7c4bee04d18cb057fa294 --- /dev/null +++ b/gui/frontend/node_modules/.bin/parser.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\@babel\parser\bin\babel-parser.js" %* diff --git a/gui/frontend/node_modules/.bin/parser.ps1 b/gui/frontend/node_modules/.bin/parser.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..8926517b48fb167e322579194b52daa2eb9b8418 --- /dev/null +++ b/gui/frontend/node_modules/.bin/parser.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args + } else { + & "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args + } else { + & "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/gui/frontend/node_modules/.bin/rolldown b/gui/frontend/node_modules/.bin/rolldown new file mode 100644 index 0000000000000000000000000000000000000000..e7853eec23029960dddc3bb41f17138804a89d13 --- /dev/null +++ b/gui/frontend/node_modules/.bin/rolldown @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../rolldown/bin/cli.mjs" "$@" +else + exec node "$basedir/../rolldown/bin/cli.mjs" "$@" +fi diff --git a/gui/frontend/node_modules/.bin/rolldown.cmd b/gui/frontend/node_modules/.bin/rolldown.cmd new file mode 100644 index 0000000000000000000000000000000000000000..c9da987f1753a70e720ac3e343be19f48038737f --- /dev/null +++ b/gui/frontend/node_modules/.bin/rolldown.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rolldown\bin\cli.mjs" %* diff --git a/gui/frontend/node_modules/.bin/rolldown.ps1 b/gui/frontend/node_modules/.bin/rolldown.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..145fb8eb9d48bd92dd66aba148a17fbe3a064d07 --- /dev/null +++ b/gui/frontend/node_modules/.bin/rolldown.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../rolldown/bin/cli.mjs" $args + } else { + & "$basedir/node$exe" "$basedir/../rolldown/bin/cli.mjs" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../rolldown/bin/cli.mjs" $args + } else { + & "node$exe" "$basedir/../rolldown/bin/cli.mjs" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/gui/frontend/node_modules/.bin/semver b/gui/frontend/node_modules/.bin/semver new file mode 100644 index 0000000000000000000000000000000000000000..97c53279f43c10400b9195b128164a5418d77659 --- /dev/null +++ b/gui/frontend/node_modules/.bin/semver @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../semver/bin/semver.js" "$@" +else + exec node "$basedir/../semver/bin/semver.js" "$@" +fi diff --git a/gui/frontend/node_modules/.bin/semver.cmd b/gui/frontend/node_modules/.bin/semver.cmd new file mode 100644 index 0000000000000000000000000000000000000000..7d4c104afe6e6da4149cb6a8a675b7944494ac72 --- /dev/null +++ b/gui/frontend/node_modules/.bin/semver.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\semver\bin\semver.js" %* diff --git a/gui/frontend/node_modules/.bin/semver.ps1 b/gui/frontend/node_modules/.bin/semver.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..314717ad4828ba2866c75d51292fcd0254701070 --- /dev/null +++ b/gui/frontend/node_modules/.bin/semver.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args + } else { + & "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../semver/bin/semver.js" $args + } else { + & "node$exe" "$basedir/../semver/bin/semver.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/gui/frontend/node_modules/.bin/update-browserslist-db b/gui/frontend/node_modules/.bin/update-browserslist-db new file mode 100644 index 0000000000000000000000000000000000000000..cced63c46fad7887ec732f9058a90af7b4587466 --- /dev/null +++ b/gui/frontend/node_modules/.bin/update-browserslist-db @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../update-browserslist-db/cli.js" "$@" +else + exec node "$basedir/../update-browserslist-db/cli.js" "$@" +fi diff --git a/gui/frontend/node_modules/.bin/update-browserslist-db.cmd b/gui/frontend/node_modules/.bin/update-browserslist-db.cmd new file mode 100644 index 0000000000000000000000000000000000000000..d5176c732d34911fe62218fd5c4ad50d40c0392e --- /dev/null +++ b/gui/frontend/node_modules/.bin/update-browserslist-db.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\update-browserslist-db\cli.js" %* diff --git a/gui/frontend/node_modules/.bin/update-browserslist-db.ps1 b/gui/frontend/node_modules/.bin/update-browserslist-db.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..7abdf26dacf5b35fcbaf3754bd3a07fe5e0c3a34 --- /dev/null +++ b/gui/frontend/node_modules/.bin/update-browserslist-db.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../update-browserslist-db/cli.js" $args + } else { + & "$basedir/node$exe" "$basedir/../update-browserslist-db/cli.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../update-browserslist-db/cli.js" $args + } else { + & "node$exe" "$basedir/../update-browserslist-db/cli.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/gui/frontend/node_modules/.bin/vite b/gui/frontend/node_modules/.bin/vite new file mode 100644 index 0000000000000000000000000000000000000000..014463f962f9db08da642cdcc33a6bbfc3ccb9a2 --- /dev/null +++ b/gui/frontend/node_modules/.bin/vite @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@" +else + exec node "$basedir/../vite/bin/vite.js" "$@" +fi diff --git a/gui/frontend/node_modules/.bin/vite.cmd b/gui/frontend/node_modules/.bin/vite.cmd new file mode 100644 index 0000000000000000000000000000000000000000..e824f3a6282e5cefaee0cca6dc8e4009699d71ba --- /dev/null +++ b/gui/frontend/node_modules/.bin/vite.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vite\bin\vite.js" %* diff --git a/gui/frontend/node_modules/.bin/vite.ps1 b/gui/frontend/node_modules/.bin/vite.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..a7759bcf2e3fcd381635df7c31198b2afe37bfac --- /dev/null +++ b/gui/frontend/node_modules/.bin/vite.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args + } else { + & "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../vite/bin/vite.js" $args + } else { + & "node$exe" "$basedir/../vite/bin/vite.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/gui/frontend/node_modules/.package-lock.json b/gui/frontend/node_modules/.package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..51e96fcd12d102572f6cd35b71a35aaee1a39476 --- /dev/null +++ b/gui/frontend/node_modules/.package-lock.json @@ -0,0 +1,1871 @@ +{ + "name": "frontend", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^3.0.5", + "debug": "^4.3.1", + "minimatch": "^10.2.4" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz", + "integrity": "sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/js": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", + "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "eslint": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/@eslint/object-schema": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz", + "integrity": "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.133.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.133.0.tgz", + "integrity": "sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.3.tgz", + "integrity": "sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", + "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.2.tgz", + "integrity": "sha512-DlSMqo4WhThw4vB8Mpn0Woe9J+Jfq1geJ61AKW0QEgLzGMNwtIMdxbDUzLxcun8W7NbJO0e2Jg/Nxm3cCSVzzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "^1.0.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", + "babel-plugin-react-compiler": "^1.0.0", + "vite": "^8.0.0" + }, + "peerDependenciesMeta": { + "@rolldown/plugin-babel": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + } + } + }, + "node_modules/acorn": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz", + "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.38", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.38.tgz", + "integrity": "sha512-31/02mVB4yuQU6adKk5SlY6m+mxDwUq5KZkyYgnLrrKl7TEm1+3PyDtDBz2kOv/wxZz41GHsvV1A/u6RmiyBvw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/browserslist": { + "version": "4.28.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.4.tgz", + "integrity": "sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.38", + "caniuse-lite": "^1.0.30001799", + "electron-to-chromium": "^1.5.376", + "node-releases": "^2.0.48", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001799", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz", + "integrity": "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.377", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.377.tgz", + "integrity": "sha512-cH1jZgJHoezfTnKfKwnScpHywTFVnJUNITDPREFdhNjiuD502+QFpG0Qk7G8jhsV/f+CEAFlIrzP1fT+IMb92g==", + "dev": true, + "license": "ISC" + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.5.0.tgz", + "integrity": "sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==", + "dev": true, + "license": "MIT", + "workspaces": [ + "packages/*" + ], + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.6.0", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.2", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "minimatch": "^10.2.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz", + "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.5.3.tgz", + "integrity": "sha512-5EMmLCV98Pi4o/f/3DP/v/tNqLHMIc9I8LKClNDWhZ9JTho89/kQcitCXQBMG7sAfVRK0Ie3T2EDOzp1YXYiVA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": "^9 || ^10" + } + }, + "node_modules/eslint-scope": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.7.0.tgz", + "integrity": "sha512-Czmyns5dUsq4seFBR/Kdydhmo8y9kC79hiSkPn0YcGtNnYWnrgt0vjrSjx9tspoDGWm2CMarffRuLjM4xUz8xg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.15", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", + "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.48", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.48.tgz", + "integrity": "sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", + "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.12", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.7.tgz", + "integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz", + "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.7" + } + }, + "node_modules/rolldown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.3.tgz", + "integrity": "sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.133.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.3", + "@rolldown/binding-darwin-arm64": "1.0.3", + "@rolldown/binding-darwin-x64": "1.0.3", + "@rolldown/binding-freebsd-x64": "1.0.3", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.3", + "@rolldown/binding-linux-arm64-gnu": "1.0.3", + "@rolldown/binding-linux-arm64-musl": "1.0.3", + "@rolldown/binding-linux-ppc64-gnu": "1.0.3", + "@rolldown/binding-linux-s390x-gnu": "1.0.3", + "@rolldown/binding-linux-x64-gnu": "1.0.3", + "@rolldown/binding-linux-x64-musl": "1.0.3", + "@rolldown/binding-openharmony-arm64": "1.0.3", + "@rolldown/binding-wasm32-wasi": "1.0.3", + "@rolldown/binding-win32-arm64-msvc": "1.0.3", + "@rolldown/binding-win32-x64-msvc": "1.0.3" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "8.0.16", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.16.tgz", + "integrity": "sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.15", + "rolldown": "1.0.3", + "tinyglobby": "^0.2.17" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.18", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + } + } +} diff --git a/gui/frontend/node_modules/.vite/deps/_metadata.json b/gui/frontend/node_modules/.vite/deps/_metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..2b3b6390d99d1efb550afa266f46f3ad8410604b --- /dev/null +++ b/gui/frontend/node_modules/.vite/deps/_metadata.json @@ -0,0 +1,44 @@ +{ + "hash": "8f66bab5", + "configHash": "f4da2809", + "lockfileHash": "607d9ace", + "browserHash": "b4e40f83", + "optimized": { + "react-dom": { + "src": "../../react-dom/index.js", + "file": "react-dom.js", + "fileHash": "a3f6cd19", + "needsInterop": true + }, + "react-dom/client": { + "src": "../../react-dom/client.js", + "file": "react-dom_client.js", + "fileHash": "a7f49f49", + "needsInterop": true + }, + "react": { + "src": "../../react/index.js", + "file": "react.js", + "fileHash": "9f5555ea", + "needsInterop": true + }, + "react/jsx-dev-runtime": { + "src": "../../react/jsx-dev-runtime.js", + "file": "react_jsx-dev-runtime.js", + "fileHash": "1817bde6", + "needsInterop": true + }, + "react/jsx-runtime": { + "src": "../../react/jsx-runtime.js", + "file": "react_jsx-runtime.js", + "fileHash": "ec931c4d", + "needsInterop": true + } + }, + "chunks": { + "react-DiA8Tu0S": { + "file": "react-DiA8Tu0S.js", + "isDynamicEntry": false + } + } +} \ No newline at end of file diff --git a/gui/frontend/node_modules/.vite/deps/package.json b/gui/frontend/node_modules/.vite/deps/package.json new file mode 100644 index 0000000000000000000000000000000000000000..3dbc1ca591c0557e35b6004aeba250e6a70b56e3 --- /dev/null +++ b/gui/frontend/node_modules/.vite/deps/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/gui/frontend/node_modules/.vite/deps/react-DiA8Tu0S.js b/gui/frontend/node_modules/.vite/deps/react-DiA8Tu0S.js new file mode 100644 index 0000000000000000000000000000000000000000..09e3e70bc49ef12d84d8dda1450f89a65a407c20 --- /dev/null +++ b/gui/frontend/node_modules/.vite/deps/react-DiA8Tu0S.js @@ -0,0 +1,770 @@ +//#region \0rolldown/runtime.js +var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports); +//#endregion +//#region node_modules/react/cjs/react.development.js +/** +* @license React +* react.development.js +* +* Copyright (c) Meta Platforms, Inc. and affiliates. +* +* This source code is licensed under the MIT license found in the +* LICENSE file in the root directory of this source tree. +*/ +var require_react_development = /* @__PURE__ */ __commonJSMin(((exports, module) => { + (function() { + function defineDeprecationWarning(methodName, info) { + Object.defineProperty(Component.prototype, methodName, { get: function() { + console.warn("%s(...) is deprecated in plain JavaScript React classes. %s", info[0], info[1]); + } }); + } + function getIteratorFn(maybeIterable) { + if (null === maybeIterable || "object" !== typeof maybeIterable) return null; + maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable["@@iterator"]; + return "function" === typeof maybeIterable ? maybeIterable : null; + } + function warnNoop(publicInstance, callerName) { + publicInstance = (publicInstance = publicInstance.constructor) && (publicInstance.displayName || publicInstance.name) || "ReactClass"; + var warningKey = publicInstance + "." + callerName; + didWarnStateUpdateForUnmountedComponent[warningKey] || (console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.", callerName, publicInstance), didWarnStateUpdateForUnmountedComponent[warningKey] = !0); + } + function Component(props, context, updater) { + this.props = props; + this.context = context; + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + } + function ComponentDummy() {} + function PureComponent(props, context, updater) { + this.props = props; + this.context = context; + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + } + function noop() {} + function testStringCoercion(value) { + return "" + value; + } + function checkKeyStringCoercion(value) { + try { + testStringCoercion(value); + var JSCompiler_inline_result = !1; + } catch (e) { + JSCompiler_inline_result = !0; + } + if (JSCompiler_inline_result) { + JSCompiler_inline_result = console; + var JSCompiler_temp_const = JSCompiler_inline_result.error; + var JSCompiler_inline_result$jscomp$0 = "function" === typeof Symbol && Symbol.toStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object"; + JSCompiler_temp_const.call(JSCompiler_inline_result, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", JSCompiler_inline_result$jscomp$0); + return testStringCoercion(value); + } + } + function getComponentNameFromType(type) { + if (null == type) return null; + if ("function" === typeof type) return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null; + if ("string" === typeof type) return type; + switch (type) { + case REACT_FRAGMENT_TYPE: return "Fragment"; + case REACT_PROFILER_TYPE: return "Profiler"; + case REACT_STRICT_MODE_TYPE: return "StrictMode"; + case REACT_SUSPENSE_TYPE: return "Suspense"; + case REACT_SUSPENSE_LIST_TYPE: return "SuspenseList"; + case REACT_ACTIVITY_TYPE: return "Activity"; + } + if ("object" === typeof type) switch ("number" === typeof type.tag && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), type.$$typeof) { + case REACT_PORTAL_TYPE: return "Portal"; + case REACT_CONTEXT_TYPE: return type.displayName || "Context"; + case REACT_CONSUMER_TYPE: return (type._context.displayName || "Context") + ".Consumer"; + case REACT_FORWARD_REF_TYPE: + var innerType = type.render; + type = type.displayName; + type || (type = innerType.displayName || innerType.name || "", type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef"); + return type; + case REACT_MEMO_TYPE: return innerType = type.displayName || null, null !== innerType ? innerType : getComponentNameFromType(type.type) || "Memo"; + case REACT_LAZY_TYPE: + innerType = type._payload; + type = type._init; + try { + return getComponentNameFromType(type(innerType)); + } catch (x) {} + } + return null; + } + function getTaskName(type) { + if (type === REACT_FRAGMENT_TYPE) return "<>"; + if ("object" === typeof type && null !== type && type.$$typeof === REACT_LAZY_TYPE) return "<...>"; + try { + var name = getComponentNameFromType(type); + return name ? "<" + name + ">" : "<...>"; + } catch (x) { + return "<...>"; + } + } + function getOwner() { + var dispatcher = ReactSharedInternals.A; + return null === dispatcher ? null : dispatcher.getOwner(); + } + function UnknownOwner() { + return Error("react-stack-top-frame"); + } + function hasValidKey(config) { + if (hasOwnProperty.call(config, "key")) { + var getter = Object.getOwnPropertyDescriptor(config, "key").get; + if (getter && getter.isReactWarning) return !1; + } + return void 0 !== config.key; + } + function defineKeyPropWarningGetter(props, displayName) { + function warnAboutAccessingKey() { + specialPropKeyWarningShown || (specialPropKeyWarningShown = !0, console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)", displayName)); + } + warnAboutAccessingKey.isReactWarning = !0; + Object.defineProperty(props, "key", { + get: warnAboutAccessingKey, + configurable: !0 + }); + } + function elementRefGetterWithDeprecationWarning() { + var componentName = getComponentNameFromType(this.type); + didWarnAboutElementRef[componentName] || (didWarnAboutElementRef[componentName] = !0, console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")); + componentName = this.props.ref; + return void 0 !== componentName ? componentName : null; + } + function ReactElement(type, key, props, owner, debugStack, debugTask) { + var refProp = props.ref; + type = { + $$typeof: REACT_ELEMENT_TYPE, + type, + key, + props, + _owner: owner + }; + null !== (void 0 !== refProp ? refProp : null) ? Object.defineProperty(type, "ref", { + enumerable: !1, + get: elementRefGetterWithDeprecationWarning + }) : Object.defineProperty(type, "ref", { + enumerable: !1, + value: null + }); + type._store = {}; + Object.defineProperty(type._store, "validated", { + configurable: !1, + enumerable: !1, + writable: !0, + value: 0 + }); + Object.defineProperty(type, "_debugInfo", { + configurable: !1, + enumerable: !1, + writable: !0, + value: null + }); + Object.defineProperty(type, "_debugStack", { + configurable: !1, + enumerable: !1, + writable: !0, + value: debugStack + }); + Object.defineProperty(type, "_debugTask", { + configurable: !1, + enumerable: !1, + writable: !0, + value: debugTask + }); + Object.freeze && (Object.freeze(type.props), Object.freeze(type)); + return type; + } + function cloneAndReplaceKey(oldElement, newKey) { + newKey = ReactElement(oldElement.type, newKey, oldElement.props, oldElement._owner, oldElement._debugStack, oldElement._debugTask); + oldElement._store && (newKey._store.validated = oldElement._store.validated); + return newKey; + } + function validateChildKeys(node) { + isValidElement(node) ? node._store && (node._store.validated = 1) : "object" === typeof node && null !== node && node.$$typeof === REACT_LAZY_TYPE && ("fulfilled" === node._payload.status ? isValidElement(node._payload.value) && node._payload.value._store && (node._payload.value._store.validated = 1) : node._store && (node._store.validated = 1)); + } + function isValidElement(object) { + return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE; + } + function escape(key) { + var escaperLookup = { + "=": "=0", + ":": "=2" + }; + return "$" + key.replace(/[=:]/g, function(match) { + return escaperLookup[match]; + }); + } + function getElementKey(element, index) { + return "object" === typeof element && null !== element && null != element.key ? (checkKeyStringCoercion(element.key), escape("" + element.key)) : index.toString(36); + } + function resolveThenable(thenable) { + switch (thenable.status) { + case "fulfilled": return thenable.value; + case "rejected": throw thenable.reason; + default: switch ("string" === typeof thenable.status ? thenable.then(noop, noop) : (thenable.status = "pending", thenable.then(function(fulfilledValue) { + "pending" === thenable.status && (thenable.status = "fulfilled", thenable.value = fulfilledValue); + }, function(error) { + "pending" === thenable.status && (thenable.status = "rejected", thenable.reason = error); + })), thenable.status) { + case "fulfilled": return thenable.value; + case "rejected": throw thenable.reason; + } + } + throw thenable; + } + function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) { + var type = typeof children; + if ("undefined" === type || "boolean" === type) children = null; + var invokeCallback = !1; + if (null === children) invokeCallback = !0; + else switch (type) { + case "bigint": + case "string": + case "number": + invokeCallback = !0; + break; + case "object": switch (children.$$typeof) { + case REACT_ELEMENT_TYPE: + case REACT_PORTAL_TYPE: + invokeCallback = !0; + break; + case REACT_LAZY_TYPE: return invokeCallback = children._init, mapIntoArray(invokeCallback(children._payload), array, escapedPrefix, nameSoFar, callback); + } + } + if (invokeCallback) { + invokeCallback = children; + callback = callback(invokeCallback); + var childKey = "" === nameSoFar ? "." + getElementKey(invokeCallback, 0) : nameSoFar; + isArrayImpl(callback) ? (escapedPrefix = "", null != childKey && (escapedPrefix = childKey.replace(userProvidedKeyEscapeRegex, "$&/") + "/"), mapIntoArray(callback, array, escapedPrefix, "", function(c) { + return c; + })) : null != callback && (isValidElement(callback) && (null != callback.key && (invokeCallback && invokeCallback.key === callback.key || checkKeyStringCoercion(callback.key)), escapedPrefix = cloneAndReplaceKey(callback, escapedPrefix + (null == callback.key || invokeCallback && invokeCallback.key === callback.key ? "" : ("" + callback.key).replace(userProvidedKeyEscapeRegex, "$&/") + "/") + childKey), "" !== nameSoFar && null != invokeCallback && isValidElement(invokeCallback) && null == invokeCallback.key && invokeCallback._store && !invokeCallback._store.validated && (escapedPrefix._store.validated = 2), callback = escapedPrefix), array.push(callback)); + return 1; + } + invokeCallback = 0; + childKey = "" === nameSoFar ? "." : nameSoFar + ":"; + if (isArrayImpl(children)) for (var i = 0; i < children.length; i++) nameSoFar = children[i], type = childKey + getElementKey(nameSoFar, i), invokeCallback += mapIntoArray(nameSoFar, array, escapedPrefix, type, callback); + else if (i = getIteratorFn(children), "function" === typeof i) for (i === children.entries && (didWarnAboutMaps || console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."), didWarnAboutMaps = !0), children = i.call(children), i = 0; !(nameSoFar = children.next()).done;) nameSoFar = nameSoFar.value, type = childKey + getElementKey(nameSoFar, i++), invokeCallback += mapIntoArray(nameSoFar, array, escapedPrefix, type, callback); + else if ("object" === type) { + if ("function" === typeof children.then) return mapIntoArray(resolveThenable(children), array, escapedPrefix, nameSoFar, callback); + array = String(children); + throw Error("Objects are not valid as a React child (found: " + ("[object Object]" === array ? "object with keys {" + Object.keys(children).join(", ") + "}" : array) + "). If you meant to render a collection of children, use an array instead."); + } + return invokeCallback; + } + function mapChildren(children, func, context) { + if (null == children) return children; + var result = [], count = 0; + mapIntoArray(children, result, "", "", function(child) { + return func.call(context, child, count++); + }); + return result; + } + function lazyInitializer(payload) { + if (-1 === payload._status) { + var ioInfo = payload._ioInfo; + null != ioInfo && (ioInfo.start = ioInfo.end = performance.now()); + ioInfo = payload._result; + var thenable = ioInfo(); + thenable.then(function(moduleObject) { + if (0 === payload._status || -1 === payload._status) { + payload._status = 1; + payload._result = moduleObject; + var _ioInfo = payload._ioInfo; + null != _ioInfo && (_ioInfo.end = performance.now()); + void 0 === thenable.status && (thenable.status = "fulfilled", thenable.value = moduleObject); + } + }, function(error) { + if (0 === payload._status || -1 === payload._status) { + payload._status = 2; + payload._result = error; + var _ioInfo2 = payload._ioInfo; + null != _ioInfo2 && (_ioInfo2.end = performance.now()); + void 0 === thenable.status && (thenable.status = "rejected", thenable.reason = error); + } + }); + ioInfo = payload._ioInfo; + if (null != ioInfo) { + ioInfo.value = thenable; + var displayName = thenable.displayName; + "string" === typeof displayName && (ioInfo.name = displayName); + } + -1 === payload._status && (payload._status = 0, payload._result = thenable); + } + if (1 === payload._status) return ioInfo = payload._result, void 0 === ioInfo && console.error("lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n const MyComponent = lazy(() => import('./MyComponent'))\n\nDid you accidentally put curly braces around the import?", ioInfo), "default" in ioInfo || console.error("lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n const MyComponent = lazy(() => import('./MyComponent'))", ioInfo), ioInfo.default; + throw payload._result; + } + function resolveDispatcher() { + var dispatcher = ReactSharedInternals.H; + null === dispatcher && console.error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem."); + return dispatcher; + } + function releaseAsyncTransition() { + ReactSharedInternals.asyncTransitions--; + } + function enqueueTask(task) { + if (null === enqueueTaskImpl) try { + var requireString = ("require" + Math.random()).slice(0, 7); + enqueueTaskImpl = (module && module[requireString]).call(module, "timers").setImmediate; + } catch (_err) { + enqueueTaskImpl = function(callback) { + !1 === didWarnAboutMessageChannel && (didWarnAboutMessageChannel = !0, "undefined" === typeof MessageChannel && console.error("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning.")); + var channel = new MessageChannel(); + channel.port1.onmessage = callback; + channel.port2.postMessage(void 0); + }; + } + return enqueueTaskImpl(task); + } + function aggregateErrors(errors) { + return 1 < errors.length && "function" === typeof AggregateError ? new AggregateError(errors) : errors[0]; + } + function popActScope(prevActQueue, prevActScopeDepth) { + prevActScopeDepth !== actScopeDepth - 1 && console.error("You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. "); + actScopeDepth = prevActScopeDepth; + } + function recursivelyFlushAsyncActWork(returnValue, resolve, reject) { + var queue = ReactSharedInternals.actQueue; + if (null !== queue) if (0 !== queue.length) try { + flushActQueue(queue); + enqueueTask(function() { + return recursivelyFlushAsyncActWork(returnValue, resolve, reject); + }); + return; + } catch (error) { + ReactSharedInternals.thrownErrors.push(error); + } + else ReactSharedInternals.actQueue = null; + 0 < ReactSharedInternals.thrownErrors.length ? (queue = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, reject(queue)) : resolve(returnValue); + } + function flushActQueue(queue) { + if (!isFlushing) { + isFlushing = !0; + var i = 0; + try { + for (; i < queue.length; i++) { + var callback = queue[i]; + do { + ReactSharedInternals.didUsePromise = !1; + var continuation = callback(!1); + if (null !== continuation) { + if (ReactSharedInternals.didUsePromise) { + queue[i] = callback; + queue.splice(0, i); + return; + } + callback = continuation; + } else break; + } while (1); + } + queue.length = 0; + } catch (error) { + queue.splice(0, i + 1), ReactSharedInternals.thrownErrors.push(error); + } finally { + isFlushing = !1; + } + } + } + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); + var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = Symbol.for("react.activity"), MAYBE_ITERATOR_SYMBOL = Symbol.iterator, didWarnStateUpdateForUnmountedComponent = {}, ReactNoopUpdateQueue = { + isMounted: function() { + return !1; + }, + enqueueForceUpdate: function(publicInstance) { + warnNoop(publicInstance, "forceUpdate"); + }, + enqueueReplaceState: function(publicInstance) { + warnNoop(publicInstance, "replaceState"); + }, + enqueueSetState: function(publicInstance) { + warnNoop(publicInstance, "setState"); + } + }, assign = Object.assign, emptyObject = {}; + Object.freeze(emptyObject); + Component.prototype.isReactComponent = {}; + Component.prototype.setState = function(partialState, callback) { + if ("object" !== typeof partialState && "function" !== typeof partialState && null != partialState) throw Error("takes an object of state variables to update or a function which returns an object of state variables."); + this.updater.enqueueSetState(this, partialState, callback, "setState"); + }; + Component.prototype.forceUpdate = function(callback) { + this.updater.enqueueForceUpdate(this, callback, "forceUpdate"); + }; + var deprecatedAPIs = { + isMounted: ["isMounted", "Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."], + replaceState: ["replaceState", "Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."] + }; + for (fnName in deprecatedAPIs) deprecatedAPIs.hasOwnProperty(fnName) && defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); + ComponentDummy.prototype = Component.prototype; + deprecatedAPIs = PureComponent.prototype = new ComponentDummy(); + deprecatedAPIs.constructor = PureComponent; + assign(deprecatedAPIs, Component.prototype); + deprecatedAPIs.isPureReactComponent = !0; + var isArrayImpl = Array.isArray, REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), ReactSharedInternals = { + H: null, + A: null, + T: null, + S: null, + actQueue: null, + asyncTransitions: 0, + isBatchingLegacy: !1, + didScheduleLegacyUpdate: !1, + didUsePromise: !1, + thrownErrors: [], + getCurrentStack: null, + recentlyCreatedOwnerStacks: 0 + }, hasOwnProperty = Object.prototype.hasOwnProperty, createTask = console.createTask ? console.createTask : function() { + return null; + }; + deprecatedAPIs = { react_stack_bottom_frame: function(callStackForError) { + return callStackForError(); + } }; + var specialPropKeyWarningShown, didWarnAboutOldJSXRuntime; + var didWarnAboutElementRef = {}; + var unknownOwnerDebugStack = deprecatedAPIs.react_stack_bottom_frame.bind(deprecatedAPIs, UnknownOwner)(); + var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner)); + var didWarnAboutMaps = !1, userProvidedKeyEscapeRegex = /\/+/g, reportGlobalError = "function" === typeof reportError ? reportError : function(error) { + if ("object" === typeof window && "function" === typeof window.ErrorEvent) { + var event = new window.ErrorEvent("error", { + bubbles: !0, + cancelable: !0, + message: "object" === typeof error && null !== error && "string" === typeof error.message ? String(error.message) : String(error), + error + }); + if (!window.dispatchEvent(event)) return; + } else if ("object" === typeof process && "function" === typeof process.emit) { + process.emit("uncaughtException", error); + return; + } + console.error(error); + }, didWarnAboutMessageChannel = !1, enqueueTaskImpl = null, actScopeDepth = 0, didWarnNoAwaitAct = !1, isFlushing = !1, queueSeveralMicrotasks = "function" === typeof queueMicrotask ? function(callback) { + queueMicrotask(function() { + return queueMicrotask(callback); + }); + } : enqueueTask; + deprecatedAPIs = Object.freeze({ + __proto__: null, + c: function(size) { + return resolveDispatcher().useMemoCache(size); + } + }); + var fnName = { + map: mapChildren, + forEach: function(children, forEachFunc, forEachContext) { + mapChildren(children, function() { + forEachFunc.apply(this, arguments); + }, forEachContext); + }, + count: function(children) { + var n = 0; + mapChildren(children, function() { + n++; + }); + return n; + }, + toArray: function(children) { + return mapChildren(children, function(child) { + return child; + }) || []; + }, + only: function(children) { + if (!isValidElement(children)) throw Error("React.Children.only expected to receive a single React element child."); + return children; + } + }; + exports.Activity = REACT_ACTIVITY_TYPE; + exports.Children = fnName; + exports.Component = Component; + exports.Fragment = REACT_FRAGMENT_TYPE; + exports.Profiler = REACT_PROFILER_TYPE; + exports.PureComponent = PureComponent; + exports.StrictMode = REACT_STRICT_MODE_TYPE; + exports.Suspense = REACT_SUSPENSE_TYPE; + exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = ReactSharedInternals; + exports.__COMPILER_RUNTIME = deprecatedAPIs; + exports.act = function(callback) { + var prevActQueue = ReactSharedInternals.actQueue, prevActScopeDepth = actScopeDepth; + actScopeDepth++; + var queue = ReactSharedInternals.actQueue = null !== prevActQueue ? prevActQueue : [], didAwaitActCall = !1; + try { + var result = callback(); + } catch (error) { + ReactSharedInternals.thrownErrors.push(error); + } + if (0 < ReactSharedInternals.thrownErrors.length) throw popActScope(prevActQueue, prevActScopeDepth), callback = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, callback; + if (null !== result && "object" === typeof result && "function" === typeof result.then) { + var thenable = result; + queueSeveralMicrotasks(function() { + didAwaitActCall || didWarnNoAwaitAct || (didWarnNoAwaitAct = !0, console.error("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);")); + }); + return { then: function(resolve, reject) { + didAwaitActCall = !0; + thenable.then(function(returnValue) { + popActScope(prevActQueue, prevActScopeDepth); + if (0 === prevActScopeDepth) { + try { + flushActQueue(queue), enqueueTask(function() { + return recursivelyFlushAsyncActWork(returnValue, resolve, reject); + }); + } catch (error$0) { + ReactSharedInternals.thrownErrors.push(error$0); + } + if (0 < ReactSharedInternals.thrownErrors.length) { + var _thrownError = aggregateErrors(ReactSharedInternals.thrownErrors); + ReactSharedInternals.thrownErrors.length = 0; + reject(_thrownError); + } + } else resolve(returnValue); + }, function(error) { + popActScope(prevActQueue, prevActScopeDepth); + 0 < ReactSharedInternals.thrownErrors.length ? (error = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, reject(error)) : reject(error); + }); + } }; + } + var returnValue$jscomp$0 = result; + popActScope(prevActQueue, prevActScopeDepth); + 0 === prevActScopeDepth && (flushActQueue(queue), 0 !== queue.length && queueSeveralMicrotasks(function() { + didAwaitActCall || didWarnNoAwaitAct || (didWarnNoAwaitAct = !0, console.error("A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\n\nawait act(() => ...)")); + }), ReactSharedInternals.actQueue = null); + if (0 < ReactSharedInternals.thrownErrors.length) throw callback = aggregateErrors(ReactSharedInternals.thrownErrors), ReactSharedInternals.thrownErrors.length = 0, callback; + return { then: function(resolve, reject) { + didAwaitActCall = !0; + 0 === prevActScopeDepth ? (ReactSharedInternals.actQueue = queue, enqueueTask(function() { + return recursivelyFlushAsyncActWork(returnValue$jscomp$0, resolve, reject); + })) : resolve(returnValue$jscomp$0); + } }; + }; + exports.cache = function(fn) { + return function() { + return fn.apply(null, arguments); + }; + }; + exports.cacheSignal = function() { + return null; + }; + exports.captureOwnerStack = function() { + var getCurrentStack = ReactSharedInternals.getCurrentStack; + return null === getCurrentStack ? null : getCurrentStack(); + }; + exports.cloneElement = function(element, config, children) { + if (null === element || void 0 === element) throw Error("The argument must be a React element, but you passed " + element + "."); + var props = assign({}, element.props), key = element.key, owner = element._owner; + if (null != config) { + var JSCompiler_inline_result; + a: { + if (hasOwnProperty.call(config, "ref") && (JSCompiler_inline_result = Object.getOwnPropertyDescriptor(config, "ref").get) && JSCompiler_inline_result.isReactWarning) { + JSCompiler_inline_result = !1; + break a; + } + JSCompiler_inline_result = void 0 !== config.ref; + } + JSCompiler_inline_result && (owner = getOwner()); + hasValidKey(config) && (checkKeyStringCoercion(config.key), key = "" + config.key); + for (propName in config) !hasOwnProperty.call(config, propName) || "key" === propName || "__self" === propName || "__source" === propName || "ref" === propName && void 0 === config.ref || (props[propName] = config[propName]); + } + var propName = arguments.length - 2; + if (1 === propName) props.children = children; + else if (1 < propName) { + JSCompiler_inline_result = Array(propName); + for (var i = 0; i < propName; i++) JSCompiler_inline_result[i] = arguments[i + 2]; + props.children = JSCompiler_inline_result; + } + props = ReactElement(element.type, key, props, owner, element._debugStack, element._debugTask); + for (key = 2; key < arguments.length; key++) validateChildKeys(arguments[key]); + return props; + }; + exports.createContext = function(defaultValue) { + defaultValue = { + $$typeof: REACT_CONTEXT_TYPE, + _currentValue: defaultValue, + _currentValue2: defaultValue, + _threadCount: 0, + Provider: null, + Consumer: null + }; + defaultValue.Provider = defaultValue; + defaultValue.Consumer = { + $$typeof: REACT_CONSUMER_TYPE, + _context: defaultValue + }; + defaultValue._currentRenderer = null; + defaultValue._currentRenderer2 = null; + return defaultValue; + }; + exports.createElement = function(type, config, children) { + for (var i = 2; i < arguments.length; i++) validateChildKeys(arguments[i]); + i = {}; + var key = null; + if (null != config) for (propName in didWarnAboutOldJSXRuntime || !("__self" in config) || "key" in config || (didWarnAboutOldJSXRuntime = !0, console.warn("Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform")), hasValidKey(config) && (checkKeyStringCoercion(config.key), key = "" + config.key), config) hasOwnProperty.call(config, propName) && "key" !== propName && "__self" !== propName && "__source" !== propName && (i[propName] = config[propName]); + var childrenLength = arguments.length - 2; + if (1 === childrenLength) i.children = children; + else if (1 < childrenLength) { + for (var childArray = Array(childrenLength), _i = 0; _i < childrenLength; _i++) childArray[_i] = arguments[_i + 2]; + Object.freeze && Object.freeze(childArray); + i.children = childArray; + } + if (type && type.defaultProps) for (propName in childrenLength = type.defaultProps, childrenLength) void 0 === i[propName] && (i[propName] = childrenLength[propName]); + key && defineKeyPropWarningGetter(i, "function" === typeof type ? type.displayName || type.name || "Unknown" : type); + var propName = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++; + return ReactElement(type, key, i, getOwner(), propName ? Error("react-stack-top-frame") : unknownOwnerDebugStack, propName ? createTask(getTaskName(type)) : unknownOwnerDebugTask); + }; + exports.createRef = function() { + var refObject = { current: null }; + Object.seal(refObject); + return refObject; + }; + exports.forwardRef = function(render) { + null != render && render.$$typeof === REACT_MEMO_TYPE ? console.error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).") : "function" !== typeof render ? console.error("forwardRef requires a render function but was given %s.", null === render ? "null" : typeof render) : 0 !== render.length && 2 !== render.length && console.error("forwardRef render functions accept exactly two parameters: props and ref. %s", 1 === render.length ? "Did you forget to use the ref parameter?" : "Any additional parameter will be undefined."); + null != render && null != render.defaultProps && console.error("forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?"); + var elementType = { + $$typeof: REACT_FORWARD_REF_TYPE, + render + }, ownName; + Object.defineProperty(elementType, "displayName", { + enumerable: !1, + configurable: !0, + get: function() { + return ownName; + }, + set: function(name) { + ownName = name; + render.name || render.displayName || (Object.defineProperty(render, "name", { value: name }), render.displayName = name); + } + }); + return elementType; + }; + exports.isValidElement = isValidElement; + exports.lazy = function(ctor) { + ctor = { + _status: -1, + _result: ctor + }; + var lazyType = { + $$typeof: REACT_LAZY_TYPE, + _payload: ctor, + _init: lazyInitializer + }, ioInfo = { + name: "lazy", + start: -1, + end: -1, + value: null, + owner: null, + debugStack: Error("react-stack-top-frame"), + debugTask: console.createTask ? console.createTask("lazy()") : null + }; + ctor._ioInfo = ioInfo; + lazyType._debugInfo = [{ awaited: ioInfo }]; + return lazyType; + }; + exports.memo = function(type, compare) { + type ?? console.error("memo: The first argument must be a component. Instead received: %s", null === type ? "null" : typeof type); + compare = { + $$typeof: REACT_MEMO_TYPE, + type, + compare: void 0 === compare ? null : compare + }; + var ownName; + Object.defineProperty(compare, "displayName", { + enumerable: !1, + configurable: !0, + get: function() { + return ownName; + }, + set: function(name) { + ownName = name; + type.name || type.displayName || (Object.defineProperty(type, "name", { value: name }), type.displayName = name); + } + }); + return compare; + }; + exports.startTransition = function(scope) { + var prevTransition = ReactSharedInternals.T, currentTransition = {}; + currentTransition._updatedFibers = /* @__PURE__ */ new Set(); + ReactSharedInternals.T = currentTransition; + try { + var returnValue = scope(), onStartTransitionFinish = ReactSharedInternals.S; + null !== onStartTransitionFinish && onStartTransitionFinish(currentTransition, returnValue); + "object" === typeof returnValue && null !== returnValue && "function" === typeof returnValue.then && (ReactSharedInternals.asyncTransitions++, returnValue.then(releaseAsyncTransition, releaseAsyncTransition), returnValue.then(noop, reportGlobalError)); + } catch (error) { + reportGlobalError(error); + } finally { + null === prevTransition && currentTransition._updatedFibers && (scope = currentTransition._updatedFibers.size, currentTransition._updatedFibers.clear(), 10 < scope && console.warn("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.")), null !== prevTransition && null !== currentTransition.types && (null !== prevTransition.types && prevTransition.types !== currentTransition.types && console.error("We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React."), prevTransition.types = currentTransition.types), ReactSharedInternals.T = prevTransition; + } + }; + exports.unstable_useCacheRefresh = function() { + return resolveDispatcher().useCacheRefresh(); + }; + exports.use = function(usable) { + return resolveDispatcher().use(usable); + }; + exports.useActionState = function(action, initialState, permalink) { + return resolveDispatcher().useActionState(action, initialState, permalink); + }; + exports.useCallback = function(callback, deps) { + return resolveDispatcher().useCallback(callback, deps); + }; + exports.useContext = function(Context) { + var dispatcher = resolveDispatcher(); + Context.$$typeof === REACT_CONSUMER_TYPE && console.error("Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?"); + return dispatcher.useContext(Context); + }; + exports.useDebugValue = function(value, formatterFn) { + return resolveDispatcher().useDebugValue(value, formatterFn); + }; + exports.useDeferredValue = function(value, initialValue) { + return resolveDispatcher().useDeferredValue(value, initialValue); + }; + exports.useEffect = function(create, deps) { + create ?? console.warn("React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?"); + return resolveDispatcher().useEffect(create, deps); + }; + exports.useEffectEvent = function(callback) { + return resolveDispatcher().useEffectEvent(callback); + }; + exports.useId = function() { + return resolveDispatcher().useId(); + }; + exports.useImperativeHandle = function(ref, create, deps) { + return resolveDispatcher().useImperativeHandle(ref, create, deps); + }; + exports.useInsertionEffect = function(create, deps) { + create ?? console.warn("React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?"); + return resolveDispatcher().useInsertionEffect(create, deps); + }; + exports.useLayoutEffect = function(create, deps) { + create ?? console.warn("React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?"); + return resolveDispatcher().useLayoutEffect(create, deps); + }; + exports.useMemo = function(create, deps) { + return resolveDispatcher().useMemo(create, deps); + }; + exports.useOptimistic = function(passthrough, reducer) { + return resolveDispatcher().useOptimistic(passthrough, reducer); + }; + exports.useReducer = function(reducer, initialArg, init) { + return resolveDispatcher().useReducer(reducer, initialArg, init); + }; + exports.useRef = function(initialValue) { + return resolveDispatcher().useRef(initialValue); + }; + exports.useState = function(initialState) { + return resolveDispatcher().useState(initialState); + }; + exports.useSyncExternalStore = function(subscribe, getSnapshot, getServerSnapshot) { + return resolveDispatcher().useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot); + }; + exports.useTransition = function() { + return resolveDispatcher().useTransition(); + }; + exports.version = "19.2.7"; + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); + })(); +})); +//#endregion +//#region node_modules/react/index.js +var require_react = /* @__PURE__ */ __commonJSMin(((exports, module) => { + module.exports = require_react_development(); +})); +//#endregion +export { __commonJSMin as n, require_react as t }; + +//# sourceMappingURL=react-DiA8Tu0S.js.map \ No newline at end of file diff --git a/gui/frontend/node_modules/.vite/deps/react-DiA8Tu0S.js.map b/gui/frontend/node_modules/.vite/deps/react-DiA8Tu0S.js.map new file mode 100644 index 0000000000000000000000000000000000000000..e83549ff05e9205f5b7ca58dd78b1c35cab7dba2 --- /dev/null +++ b/gui/frontend/node_modules/.vite/deps/react-DiA8Tu0S.js.map @@ -0,0 +1 @@ +{"version":3,"file":"react-DiA8Tu0S.js","names":[],"sources":["../../react/cjs/react.development.js","../../react/index.js"],"sourcesContent":["/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function defineDeprecationWarning(methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n console.warn(\n \"%s(...) is deprecated in plain JavaScript React classes. %s\",\n info[0],\n info[1]\n );\n }\n });\n }\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable)\n return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n function warnNoop(publicInstance, callerName) {\n publicInstance =\n ((publicInstance = publicInstance.constructor) &&\n (publicInstance.displayName || publicInstance.name)) ||\n \"ReactClass\";\n var warningKey = publicInstance + \".\" + callerName;\n didWarnStateUpdateForUnmountedComponent[warningKey] ||\n (console.error(\n \"Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.\",\n callerName,\n publicInstance\n ),\n (didWarnStateUpdateForUnmountedComponent[warningKey] = !0));\n }\n function Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function ComponentDummy() {}\n function PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function noop() {}\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function cloneAndReplaceKey(oldElement, newKey) {\n newKey = ReactElement(\n oldElement.type,\n newKey,\n oldElement.props,\n oldElement._owner,\n oldElement._debugStack,\n oldElement._debugTask\n );\n oldElement._store &&\n (newKey._store.validated = oldElement._store.validated);\n return newKey;\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n function escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n }\n function getElementKey(element, index) {\n return \"object\" === typeof element &&\n null !== element &&\n null != element.key\n ? (checkKeyStringCoercion(element.key), escape(\"\" + element.key))\n : index.toString(36);\n }\n function resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"),\n (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n }\n function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback) {\n invokeCallback = children;\n callback = callback(invokeCallback);\n var childKey =\n \"\" === nameSoFar ? \".\" + getElementKey(invokeCallback, 0) : nameSoFar;\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != childKey &&\n (escapedPrefix =\n childKey.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (null != callback.key &&\n ((invokeCallback && invokeCallback.key === callback.key) ||\n checkKeyStringCoercion(callback.key)),\n (escapedPrefix = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (invokeCallback && invokeCallback.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n childKey\n )),\n \"\" !== nameSoFar &&\n null != invokeCallback &&\n isValidElement(invokeCallback) &&\n null == invokeCallback.key &&\n invokeCallback._store &&\n !invokeCallback._store.validated &&\n (escapedPrefix._store.validated = 2),\n (callback = escapedPrefix)),\n array.push(callback));\n return 1;\n }\n invokeCallback = 0;\n childKey = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = childKey + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n i === children.entries &&\n (didWarnAboutMaps ||\n console.warn(\n \"Using Maps as children is not supported. Use an array of keyed ReactElements instead.\"\n ),\n (didWarnAboutMaps = !0)),\n children = i.call(children),\n i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = childKey + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n }\n function mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n }\n function lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ioInfo = payload._ioInfo;\n null != ioInfo && (ioInfo.start = ioInfo.end = performance.now());\n ioInfo = payload._result;\n var thenable = ioInfo();\n thenable.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status) {\n payload._status = 1;\n payload._result = moduleObject;\n var _ioInfo = payload._ioInfo;\n null != _ioInfo && (_ioInfo.end = performance.now());\n void 0 === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = moduleObject));\n }\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status) {\n payload._status = 2;\n payload._result = error;\n var _ioInfo2 = payload._ioInfo;\n null != _ioInfo2 && (_ioInfo2.end = performance.now());\n void 0 === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n }\n );\n ioInfo = payload._ioInfo;\n if (null != ioInfo) {\n ioInfo.value = thenable;\n var displayName = thenable.displayName;\n \"string\" === typeof displayName && (ioInfo.name = displayName);\n }\n -1 === payload._status &&\n ((payload._status = 0), (payload._result = thenable));\n }\n if (1 === payload._status)\n return (\n (ioInfo = payload._result),\n void 0 === ioInfo &&\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\\n\\nDid you accidentally put curly braces around the import?\",\n ioInfo\n ),\n \"default\" in ioInfo ||\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\",\n ioInfo\n ),\n ioInfo.default\n );\n throw payload._result;\n }\n function resolveDispatcher() {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher;\n }\n function releaseAsyncTransition() {\n ReactSharedInternals.asyncTransitions--;\n }\n function enqueueTask(task) {\n if (null === enqueueTaskImpl)\n try {\n var requireString = (\"require\" + Math.random()).slice(0, 7);\n enqueueTaskImpl = (module && module[requireString]).call(\n module,\n \"timers\"\n ).setImmediate;\n } catch (_err) {\n enqueueTaskImpl = function (callback) {\n !1 === didWarnAboutMessageChannel &&\n ((didWarnAboutMessageChannel = !0),\n \"undefined\" === typeof MessageChannel &&\n console.error(\n \"This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning.\"\n ));\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(void 0);\n };\n }\n return enqueueTaskImpl(task);\n }\n function aggregateErrors(errors) {\n return 1 < errors.length && \"function\" === typeof AggregateError\n ? new AggregateError(errors)\n : errors[0];\n }\n function popActScope(prevActQueue, prevActScopeDepth) {\n prevActScopeDepth !== actScopeDepth - 1 &&\n console.error(\n \"You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. \"\n );\n actScopeDepth = prevActScopeDepth;\n }\n function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n var queue = ReactSharedInternals.actQueue;\n if (null !== queue)\n if (0 !== queue.length)\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n });\n return;\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n else ReactSharedInternals.actQueue = null;\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((queue = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(queue))\n : resolve(returnValue);\n }\n function flushActQueue(queue) {\n if (!isFlushing) {\n isFlushing = !0;\n var i = 0;\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n do {\n ReactSharedInternals.didUsePromise = !1;\n var continuation = callback(!1);\n if (null !== continuation) {\n if (ReactSharedInternals.didUsePromise) {\n queue[i] = callback;\n queue.splice(0, i);\n return;\n }\n callback = continuation;\n } else break;\n } while (1);\n }\n queue.length = 0;\n } catch (error) {\n queue.splice(0, i + 1), ReactSharedInternals.thrownErrors.push(error);\n } finally {\n isFlushing = !1;\n }\n }\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator,\n didWarnStateUpdateForUnmountedComponent = {},\n ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, \"forceUpdate\");\n },\n enqueueReplaceState: function (publicInstance) {\n warnNoop(publicInstance, \"replaceState\");\n },\n enqueueSetState: function (publicInstance) {\n warnNoop(publicInstance, \"setState\");\n }\n },\n assign = Object.assign,\n emptyObject = {};\n Object.freeze(emptyObject);\n Component.prototype.isReactComponent = {};\n Component.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n };\n Component.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n };\n var deprecatedAPIs = {\n isMounted: [\n \"isMounted\",\n \"Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks.\"\n ],\n replaceState: [\n \"replaceState\",\n \"Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236).\"\n ]\n };\n for (fnName in deprecatedAPIs)\n deprecatedAPIs.hasOwnProperty(fnName) &&\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n ComponentDummy.prototype = Component.prototype;\n deprecatedAPIs = PureComponent.prototype = new ComponentDummy();\n deprecatedAPIs.constructor = PureComponent;\n assign(deprecatedAPIs, Component.prototype);\n deprecatedAPIs.isPureReactComponent = !0;\n var isArrayImpl = Array.isArray,\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals = {\n H: null,\n A: null,\n T: null,\n S: null,\n actQueue: null,\n asyncTransitions: 0,\n isBatchingLegacy: !1,\n didScheduleLegacyUpdate: !1,\n didUsePromise: !1,\n thrownErrors: [],\n getCurrentStack: null,\n recentlyCreatedOwnerStacks: 0\n },\n hasOwnProperty = Object.prototype.hasOwnProperty,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n deprecatedAPIs = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown, didWarnAboutOldJSXRuntime;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = deprecatedAPIs.react_stack_bottom_frame.bind(\n deprecatedAPIs,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutMaps = !1,\n userProvidedKeyEscapeRegex = /\\/+/g,\n reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n didWarnAboutMessageChannel = !1,\n enqueueTaskImpl = null,\n actScopeDepth = 0,\n didWarnNoAwaitAct = !1,\n isFlushing = !1,\n queueSeveralMicrotasks =\n \"function\" === typeof queueMicrotask\n ? function (callback) {\n queueMicrotask(function () {\n return queueMicrotask(callback);\n });\n }\n : enqueueTask;\n deprecatedAPIs = Object.freeze({\n __proto__: null,\n c: function (size) {\n return resolveDispatcher().useMemoCache(size);\n }\n });\n var fnName = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\n exports.Activity = REACT_ACTIVITY_TYPE;\n exports.Children = fnName;\n exports.Component = Component;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.PureComponent = PureComponent;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\n exports.__COMPILER_RUNTIME = deprecatedAPIs;\n exports.act = function (callback) {\n var prevActQueue = ReactSharedInternals.actQueue,\n prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n var queue = (ReactSharedInternals.actQueue =\n null !== prevActQueue ? prevActQueue : []),\n didAwaitActCall = !1;\n try {\n var result = callback();\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n (popActScope(prevActQueue, prevActScopeDepth),\n (callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n if (\n null !== result &&\n \"object\" === typeof result &&\n \"function\" === typeof result.then\n ) {\n var thenable = result;\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);\"\n ));\n });\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n thenable.then(\n function (returnValue) {\n popActScope(prevActQueue, prevActScopeDepth);\n if (0 === prevActScopeDepth) {\n try {\n flushActQueue(queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue,\n resolve,\n reject\n );\n });\n } catch (error$0) {\n ReactSharedInternals.thrownErrors.push(error$0);\n }\n if (0 < ReactSharedInternals.thrownErrors.length) {\n var _thrownError = aggregateErrors(\n ReactSharedInternals.thrownErrors\n );\n ReactSharedInternals.thrownErrors.length = 0;\n reject(_thrownError);\n }\n } else resolve(returnValue);\n },\n function (error) {\n popActScope(prevActQueue, prevActScopeDepth);\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((error = aggregateErrors(\n ReactSharedInternals.thrownErrors\n )),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(error))\n : reject(error);\n }\n );\n }\n };\n }\n var returnValue$jscomp$0 = result;\n popActScope(prevActQueue, prevActScopeDepth);\n 0 === prevActScopeDepth &&\n (flushActQueue(queue),\n 0 !== queue.length &&\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\\n\\nawait act(() => ...)\"\n ));\n }),\n (ReactSharedInternals.actQueue = null));\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n ((callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n 0 === prevActScopeDepth\n ? ((ReactSharedInternals.actQueue = queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue$jscomp$0,\n resolve,\n reject\n );\n }))\n : resolve(returnValue$jscomp$0);\n }\n };\n };\n exports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n };\n exports.cacheSignal = function () {\n return null;\n };\n exports.captureOwnerStack = function () {\n var getCurrentStack = ReactSharedInternals.getCurrentStack;\n return null === getCurrentStack ? null : getCurrentStack();\n };\n exports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" +\n element +\n \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = element._owner;\n if (null != config) {\n var JSCompiler_inline_result;\n a: {\n if (\n hasOwnProperty.call(config, \"ref\") &&\n (JSCompiler_inline_result = Object.getOwnPropertyDescriptor(\n config,\n \"ref\"\n ).get) &&\n JSCompiler_inline_result.isReactWarning\n ) {\n JSCompiler_inline_result = !1;\n break a;\n }\n JSCompiler_inline_result = void 0 !== config.ref;\n }\n JSCompiler_inline_result && (owner = getOwner());\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (key = \"\" + config.key));\n for (propName in config)\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n }\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n JSCompiler_inline_result = Array(propName);\n for (var i = 0; i < propName; i++)\n JSCompiler_inline_result[i] = arguments[i + 2];\n props.children = JSCompiler_inline_result;\n }\n props = ReactElement(\n element.type,\n key,\n props,\n owner,\n element._debugStack,\n element._debugTask\n );\n for (key = 2; key < arguments.length; key++)\n validateChildKeys(arguments[key]);\n return props;\n };\n exports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n defaultValue._currentRenderer = null;\n defaultValue._currentRenderer2 = null;\n return defaultValue;\n };\n exports.createElement = function (type, config, children) {\n for (var i = 2; i < arguments.length; i++)\n validateChildKeys(arguments[i]);\n i = {};\n var key = null;\n if (null != config)\n for (propName in (didWarnAboutOldJSXRuntime ||\n !(\"__self\" in config) ||\n \"key\" in config ||\n ((didWarnAboutOldJSXRuntime = !0),\n console.warn(\n \"Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform\"\n )),\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (key = \"\" + config.key)),\n config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (i[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) i.children = children;\n else if (1 < childrenLength) {\n for (\n var childArray = Array(childrenLength), _i = 0;\n _i < childrenLength;\n _i++\n )\n childArray[_i] = arguments[_i + 2];\n Object.freeze && Object.freeze(childArray);\n i.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === i[propName] && (i[propName] = childrenLength[propName]);\n key &&\n defineKeyPropWarningGetter(\n i,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n var propName = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return ReactElement(\n type,\n key,\n i,\n getOwner(),\n propName ? Error(\"react-stack-top-frame\") : unknownOwnerDebugStack,\n propName ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.createRef = function () {\n var refObject = { current: null };\n Object.seal(refObject);\n return refObject;\n };\n exports.forwardRef = function (render) {\n null != render && render.$$typeof === REACT_MEMO_TYPE\n ? console.error(\n \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).\"\n )\n : \"function\" !== typeof render\n ? console.error(\n \"forwardRef requires a render function but was given %s.\",\n null === render ? \"null\" : typeof render\n )\n : 0 !== render.length &&\n 2 !== render.length &&\n console.error(\n \"forwardRef render functions accept exactly two parameters: props and ref. %s\",\n 1 === render.length\n ? \"Did you forget to use the ref parameter?\"\n : \"Any additional parameter will be undefined.\"\n );\n null != render &&\n null != render.defaultProps &&\n console.error(\n \"forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?\"\n );\n var elementType = { $$typeof: REACT_FORWARD_REF_TYPE, render: render },\n ownName;\n Object.defineProperty(elementType, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n render.name ||\n render.displayName ||\n (Object.defineProperty(render, \"name\", { value: name }),\n (render.displayName = name));\n }\n });\n return elementType;\n };\n exports.isValidElement = isValidElement;\n exports.lazy = function (ctor) {\n ctor = { _status: -1, _result: ctor };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: ctor,\n _init: lazyInitializer\n },\n ioInfo = {\n name: \"lazy\",\n start: -1,\n end: -1,\n value: null,\n owner: null,\n debugStack: Error(\"react-stack-top-frame\"),\n debugTask: console.createTask ? console.createTask(\"lazy()\") : null\n };\n ctor._ioInfo = ioInfo;\n lazyType._debugInfo = [{ awaited: ioInfo }];\n return lazyType;\n };\n exports.memo = function (type, compare) {\n null == type &&\n console.error(\n \"memo: The first argument must be a component. Instead received: %s\",\n null === type ? \"null\" : typeof type\n );\n compare = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n var ownName;\n Object.defineProperty(compare, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n type.name ||\n type.displayName ||\n (Object.defineProperty(type, \"name\", { value: name }),\n (type.displayName = name));\n }\n });\n return compare;\n };\n exports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n currentTransition._updatedFibers = new Set();\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n (ReactSharedInternals.asyncTransitions++,\n returnValue.then(releaseAsyncTransition, releaseAsyncTransition),\n returnValue.then(noop, reportGlobalError));\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null === prevTransition &&\n currentTransition._updatedFibers &&\n ((scope = currentTransition._updatedFibers.size),\n currentTransition._updatedFibers.clear(),\n 10 < scope &&\n console.warn(\n \"Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.\"\n )),\n null !== prevTransition &&\n null !== currentTransition.types &&\n (null !== prevTransition.types &&\n prevTransition.types !== currentTransition.types &&\n console.error(\n \"We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React.\"\n ),\n (prevTransition.types = currentTransition.types)),\n (ReactSharedInternals.T = prevTransition);\n }\n };\n exports.unstable_useCacheRefresh = function () {\n return resolveDispatcher().useCacheRefresh();\n };\n exports.use = function (usable) {\n return resolveDispatcher().use(usable);\n };\n exports.useActionState = function (action, initialState, permalink) {\n return resolveDispatcher().useActionState(\n action,\n initialState,\n permalink\n );\n };\n exports.useCallback = function (callback, deps) {\n return resolveDispatcher().useCallback(callback, deps);\n };\n exports.useContext = function (Context) {\n var dispatcher = resolveDispatcher();\n Context.$$typeof === REACT_CONSUMER_TYPE &&\n console.error(\n \"Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?\"\n );\n return dispatcher.useContext(Context);\n };\n exports.useDebugValue = function (value, formatterFn) {\n return resolveDispatcher().useDebugValue(value, formatterFn);\n };\n exports.useDeferredValue = function (value, initialValue) {\n return resolveDispatcher().useDeferredValue(value, initialValue);\n };\n exports.useEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useEffect(create, deps);\n };\n exports.useEffectEvent = function (callback) {\n return resolveDispatcher().useEffectEvent(callback);\n };\n exports.useId = function () {\n return resolveDispatcher().useId();\n };\n exports.useImperativeHandle = function (ref, create, deps) {\n return resolveDispatcher().useImperativeHandle(ref, create, deps);\n };\n exports.useInsertionEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useInsertionEffect(create, deps);\n };\n exports.useLayoutEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useLayoutEffect(create, deps);\n };\n exports.useMemo = function (create, deps) {\n return resolveDispatcher().useMemo(create, deps);\n };\n exports.useOptimistic = function (passthrough, reducer) {\n return resolveDispatcher().useOptimistic(passthrough, reducer);\n };\n exports.useReducer = function (reducer, initialArg, init) {\n return resolveDispatcher().useReducer(reducer, initialArg, init);\n };\n exports.useRef = function (initialValue) {\n return resolveDispatcher().useRef(initialValue);\n };\n exports.useState = function (initialState) {\n return resolveDispatcher().useState(initialState);\n };\n exports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n ) {\n return resolveDispatcher().useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n };\n exports.useTransition = function () {\n return resolveDispatcher().useTransition();\n };\n exports.version = \"19.2.7\";\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/gui/frontend/node_modules/.vite/deps/react-dom.js b/gui/frontend/node_modules/.vite/deps/react-dom.js new file mode 100644 index 0000000000000000000000000000000000000000..be5761787fb942cd09f7cb139d924580b7489b2f --- /dev/null +++ b/gui/frontend/node_modules/.vite/deps/react-dom.js @@ -0,0 +1,185 @@ +import { n as __commonJSMin, t as require_react } from "./react-DiA8Tu0S.js"; +//#region node_modules/react-dom/cjs/react-dom.development.js +/** +* @license React +* react-dom.development.js +* +* Copyright (c) Meta Platforms, Inc. and affiliates. +* +* This source code is licensed under the MIT license found in the +* LICENSE file in the root directory of this source tree. +*/ +var require_react_dom_development = /* @__PURE__ */ __commonJSMin(((exports) => { + (function() { + function noop() {} + function testStringCoercion(value) { + return "" + value; + } + function createPortal$1(children, containerInfo, implementation) { + var key = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null; + try { + testStringCoercion(key); + var JSCompiler_inline_result = !1; + } catch (e) { + JSCompiler_inline_result = !0; + } + JSCompiler_inline_result && (console.error("The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", "function" === typeof Symbol && Symbol.toStringTag && key[Symbol.toStringTag] || key.constructor.name || "Object"), testStringCoercion(key)); + return { + $$typeof: REACT_PORTAL_TYPE, + key: null == key ? null : "" + key, + children, + containerInfo, + implementation + }; + } + function getCrossOriginStringAs(as, input) { + if ("font" === as) return ""; + if ("string" === typeof input) return "use-credentials" === input ? input : ""; + } + function getValueDescriptorExpectingObjectForWarning(thing) { + return null === thing ? "`null`" : void 0 === thing ? "`undefined`" : "" === thing ? "an empty string" : "something with type \"" + typeof thing + "\""; + } + function getValueDescriptorExpectingEnumForWarning(thing) { + return null === thing ? "`null`" : void 0 === thing ? "`undefined`" : "" === thing ? "an empty string" : "string" === typeof thing ? JSON.stringify(thing) : "number" === typeof thing ? "`" + thing + "`" : "something with type \"" + typeof thing + "\""; + } + function resolveDispatcher() { + var dispatcher = ReactSharedInternals.H; + null === dispatcher && console.error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem."); + return dispatcher; + } + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); + var React = require_react(), Internals = { + d: { + f: noop, + r: function() { + throw Error("Invalid form element. requestFormReset must be passed a form that was rendered by React."); + }, + D: noop, + C: noop, + L: noop, + m: noop, + X: noop, + S: noop, + M: noop + }, + p: 0, + findDOMNode: null + }, REACT_PORTAL_TYPE = Symbol.for("react.portal"), ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE; + "function" === typeof Map && null != Map.prototype && "function" === typeof Map.prototype.forEach && "function" === typeof Set && null != Set.prototype && "function" === typeof Set.prototype.clear && "function" === typeof Set.prototype.forEach || console.error("React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"); + exports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = Internals; + exports.createPortal = function(children, container) { + var key = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null; + if (!container || 1 !== container.nodeType && 9 !== container.nodeType && 11 !== container.nodeType) throw Error("Target container is not a DOM element."); + return createPortal$1(children, container, null, key); + }; + exports.flushSync = function(fn) { + var previousTransition = ReactSharedInternals.T, previousUpdatePriority = Internals.p; + try { + if (ReactSharedInternals.T = null, Internals.p = 2, fn) return fn(); + } finally { + ReactSharedInternals.T = previousTransition, Internals.p = previousUpdatePriority, Internals.d.f() && console.error("flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task."); + } + }; + exports.preconnect = function(href, options) { + "string" === typeof href && href ? null != options && "object" !== typeof options ? console.error("ReactDOM.preconnect(): Expected the `options` argument (second) to be an object but encountered %s instead. The only supported option at this time is `crossOrigin` which accepts a string.", getValueDescriptorExpectingEnumForWarning(options)) : null != options && "string" !== typeof options.crossOrigin && console.error("ReactDOM.preconnect(): Expected the `crossOrigin` option (second argument) to be a string but encountered %s instead. Try removing this option or passing a string value instead.", getValueDescriptorExpectingObjectForWarning(options.crossOrigin)) : console.error("ReactDOM.preconnect(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.", getValueDescriptorExpectingObjectForWarning(href)); + "string" === typeof href && (options ? (options = options.crossOrigin, options = "string" === typeof options ? "use-credentials" === options ? options : "" : void 0) : options = null, Internals.d.C(href, options)); + }; + exports.prefetchDNS = function(href) { + if ("string" !== typeof href || !href) console.error("ReactDOM.prefetchDNS(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.", getValueDescriptorExpectingObjectForWarning(href)); + else if (1 < arguments.length) { + var options = arguments[1]; + "object" === typeof options && options.hasOwnProperty("crossOrigin") ? console.error("ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. It looks like the you are attempting to set a crossOrigin property for this DNS lookup hint. Browsers do not perform DNS queries using CORS and setting this attribute on the resource hint has no effect. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.", getValueDescriptorExpectingEnumForWarning(options)) : console.error("ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.", getValueDescriptorExpectingEnumForWarning(options)); + } + "string" === typeof href && Internals.d.D(href); + }; + exports.preinit = function(href, options) { + "string" === typeof href && href ? null == options || "object" !== typeof options ? console.error("ReactDOM.preinit(): Expected the `options` argument (second) to be an object with an `as` property describing the type of resource to be preinitialized but encountered %s instead.", getValueDescriptorExpectingEnumForWarning(options)) : "style" !== options.as && "script" !== options.as && console.error("ReactDOM.preinit(): Expected the `as` property in the `options` argument (second) to contain a valid value describing the type of resource to be preinitialized but encountered %s instead. Valid values for `as` are \"style\" and \"script\".", getValueDescriptorExpectingEnumForWarning(options.as)) : console.error("ReactDOM.preinit(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.", getValueDescriptorExpectingObjectForWarning(href)); + if ("string" === typeof href && options && "string" === typeof options.as) { + var as = options.as, crossOrigin = getCrossOriginStringAs(as, options.crossOrigin), integrity = "string" === typeof options.integrity ? options.integrity : void 0, fetchPriority = "string" === typeof options.fetchPriority ? options.fetchPriority : void 0; + "style" === as ? Internals.d.S(href, "string" === typeof options.precedence ? options.precedence : void 0, { + crossOrigin, + integrity, + fetchPriority + }) : "script" === as && Internals.d.X(href, { + crossOrigin, + integrity, + fetchPriority, + nonce: "string" === typeof options.nonce ? options.nonce : void 0 + }); + } + }; + exports.preinitModule = function(href, options) { + var encountered = ""; + "string" === typeof href && href || (encountered += " The `href` argument encountered was " + getValueDescriptorExpectingObjectForWarning(href) + "."); + void 0 !== options && "object" !== typeof options ? encountered += " The `options` argument encountered was " + getValueDescriptorExpectingObjectForWarning(options) + "." : options && "as" in options && "script" !== options.as && (encountered += " The `as` option encountered was " + getValueDescriptorExpectingEnumForWarning(options.as) + "."); + if (encountered) console.error("ReactDOM.preinitModule(): Expected up to two arguments, a non-empty `href` string and, optionally, an `options` object with a valid `as` property.%s", encountered); + else switch (encountered = options && "string" === typeof options.as ? options.as : "script", encountered) { + case "script": break; + default: encountered = getValueDescriptorExpectingEnumForWarning(encountered), console.error("ReactDOM.preinitModule(): Currently the only supported \"as\" type for this function is \"script\" but received \"%s\" instead. This warning was generated for `href` \"%s\". In the future other module types will be supported, aligning with the import-attributes proposal. Learn more here: (https://github.com/tc39/proposal-import-attributes)", encountered, href); + } + if ("string" === typeof href) if ("object" === typeof options && null !== options) { + if (null == options.as || "script" === options.as) encountered = getCrossOriginStringAs(options.as, options.crossOrigin), Internals.d.M(href, { + crossOrigin: encountered, + integrity: "string" === typeof options.integrity ? options.integrity : void 0, + nonce: "string" === typeof options.nonce ? options.nonce : void 0 + }); + } else options ?? Internals.d.M(href); + }; + exports.preload = function(href, options) { + var encountered = ""; + "string" === typeof href && href || (encountered += " The `href` argument encountered was " + getValueDescriptorExpectingObjectForWarning(href) + "."); + null == options || "object" !== typeof options ? encountered += " The `options` argument encountered was " + getValueDescriptorExpectingObjectForWarning(options) + "." : "string" === typeof options.as && options.as || (encountered += " The `as` option encountered was " + getValueDescriptorExpectingObjectForWarning(options.as) + "."); + encountered && console.error("ReactDOM.preload(): Expected two arguments, a non-empty `href` string and an `options` object with an `as` property valid for a `` tag.%s", encountered); + if ("string" === typeof href && "object" === typeof options && null !== options && "string" === typeof options.as) { + encountered = options.as; + var crossOrigin = getCrossOriginStringAs(encountered, options.crossOrigin); + Internals.d.L(href, encountered, { + crossOrigin, + integrity: "string" === typeof options.integrity ? options.integrity : void 0, + nonce: "string" === typeof options.nonce ? options.nonce : void 0, + type: "string" === typeof options.type ? options.type : void 0, + fetchPriority: "string" === typeof options.fetchPriority ? options.fetchPriority : void 0, + referrerPolicy: "string" === typeof options.referrerPolicy ? options.referrerPolicy : void 0, + imageSrcSet: "string" === typeof options.imageSrcSet ? options.imageSrcSet : void 0, + imageSizes: "string" === typeof options.imageSizes ? options.imageSizes : void 0, + media: "string" === typeof options.media ? options.media : void 0 + }); + } + }; + exports.preloadModule = function(href, options) { + var encountered = ""; + "string" === typeof href && href || (encountered += " The `href` argument encountered was " + getValueDescriptorExpectingObjectForWarning(href) + "."); + void 0 !== options && "object" !== typeof options ? encountered += " The `options` argument encountered was " + getValueDescriptorExpectingObjectForWarning(options) + "." : options && "as" in options && "string" !== typeof options.as && (encountered += " The `as` option encountered was " + getValueDescriptorExpectingObjectForWarning(options.as) + "."); + encountered && console.error("ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `` tag.%s", encountered); + "string" === typeof href && (options ? (encountered = getCrossOriginStringAs(options.as, options.crossOrigin), Internals.d.m(href, { + as: "string" === typeof options.as && "script" !== options.as ? options.as : void 0, + crossOrigin: encountered, + integrity: "string" === typeof options.integrity ? options.integrity : void 0 + })) : Internals.d.m(href)); + }; + exports.requestFormReset = function(form) { + Internals.d.r(form); + }; + exports.unstable_batchedUpdates = function(fn, a) { + return fn(a); + }; + exports.useFormState = function(action, initialState, permalink) { + return resolveDispatcher().useFormState(action, initialState, permalink); + }; + exports.useFormStatus = function() { + return resolveDispatcher().useHostTransitionStatus(); + }; + exports.version = "19.2.7"; + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); + })(); +})); +//#endregion +//#region node_modules/react-dom/index.js +var require_react_dom = /* @__PURE__ */ __commonJSMin(((exports, module) => { + module.exports = require_react_dom_development(); +})); +//#endregion +export default require_react_dom(); +export { require_react_dom as t }; + +//# sourceMappingURL=react-dom.js.map \ No newline at end of file diff --git a/gui/frontend/node_modules/.vite/deps/react-dom.js.map b/gui/frontend/node_modules/.vite/deps/react-dom.js.map new file mode 100644 index 0000000000000000000000000000000000000000..9da74c1743f2ef57131cc0270d79d4565185b146 --- /dev/null +++ b/gui/frontend/node_modules/.vite/deps/react-dom.js.map @@ -0,0 +1 @@ +{"version":3,"file":"react-dom.js","names":[],"sources":["../../react-dom/cjs/react-dom.development.js","../../react-dom/index.js"],"sourcesContent":["/**\n * @license React\n * react-dom.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function noop() {}\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n try {\n testStringCoercion(key);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n JSCompiler_inline_result &&\n (console.error(\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n key[Symbol.toStringTag]) ||\n key.constructor.name ||\n \"Object\"\n ),\n testStringCoercion(key));\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n }\n function getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n }\n function getValueDescriptorExpectingObjectForWarning(thing) {\n return null === thing\n ? \"`null`\"\n : void 0 === thing\n ? \"`undefined`\"\n : \"\" === thing\n ? \"an empty string\"\n : 'something with type \"' + typeof thing + '\"';\n }\n function getValueDescriptorExpectingEnumForWarning(thing) {\n return null === thing\n ? \"`null`\"\n : void 0 === thing\n ? \"`undefined`\"\n : \"\" === thing\n ? \"an empty string\"\n : \"string\" === typeof thing\n ? JSON.stringify(thing)\n : \"number\" === typeof thing\n ? \"`\" + thing + \"`\"\n : 'something with type \"' + typeof thing + '\"';\n }\n function resolveDispatcher() {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher;\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(\n \"Invalid form element. requestFormReset must be passed a form that was rendered by React.\"\n );\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n (\"function\" === typeof Map &&\n null != Map.prototype &&\n \"function\" === typeof Map.prototype.forEach &&\n \"function\" === typeof Set &&\n null != Set.prototype &&\n \"function\" === typeof Set.prototype.clear &&\n \"function\" === typeof Set.prototype.forEach) ||\n console.error(\n \"React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\"\n );\n exports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\n exports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(\"Target container is not a DOM element.\");\n return createPortal$1(children, container, null, key);\n };\n exports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn))\n return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f() &&\n console.error(\n \"flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.\"\n );\n }\n };\n exports.preconnect = function (href, options) {\n \"string\" === typeof href && href\n ? null != options && \"object\" !== typeof options\n ? console.error(\n \"ReactDOM.preconnect(): Expected the `options` argument (second) to be an object but encountered %s instead. The only supported option at this time is `crossOrigin` which accepts a string.\",\n getValueDescriptorExpectingEnumForWarning(options)\n )\n : null != options &&\n \"string\" !== typeof options.crossOrigin &&\n console.error(\n \"ReactDOM.preconnect(): Expected the `crossOrigin` option (second argument) to be a string but encountered %s instead. Try removing this option or passing a string value instead.\",\n getValueDescriptorExpectingObjectForWarning(options.crossOrigin)\n )\n : console.error(\n \"ReactDOM.preconnect(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.\",\n getValueDescriptorExpectingObjectForWarning(href)\n );\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n };\n exports.prefetchDNS = function (href) {\n if (\"string\" !== typeof href || !href)\n console.error(\n \"ReactDOM.prefetchDNS(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.\",\n getValueDescriptorExpectingObjectForWarning(href)\n );\n else if (1 < arguments.length) {\n var options = arguments[1];\n \"object\" === typeof options && options.hasOwnProperty(\"crossOrigin\")\n ? console.error(\n \"ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. It looks like the you are attempting to set a crossOrigin property for this DNS lookup hint. Browsers do not perform DNS queries using CORS and setting this attribute on the resource hint has no effect. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.\",\n getValueDescriptorExpectingEnumForWarning(options)\n )\n : console.error(\n \"ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.\",\n getValueDescriptorExpectingEnumForWarning(options)\n );\n }\n \"string\" === typeof href && Internals.d.D(href);\n };\n exports.preinit = function (href, options) {\n \"string\" === typeof href && href\n ? null == options || \"object\" !== typeof options\n ? console.error(\n \"ReactDOM.preinit(): Expected the `options` argument (second) to be an object with an `as` property describing the type of resource to be preinitialized but encountered %s instead.\",\n getValueDescriptorExpectingEnumForWarning(options)\n )\n : \"style\" !== options.as &&\n \"script\" !== options.as &&\n console.error(\n 'ReactDOM.preinit(): Expected the `as` property in the `options` argument (second) to contain a valid value describing the type of resource to be preinitialized but encountered %s instead. Valid values for `as` are \"style\" and \"script\".',\n getValueDescriptorExpectingEnumForWarning(options.as)\n )\n : console.error(\n \"ReactDOM.preinit(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.\",\n getValueDescriptorExpectingObjectForWarning(href)\n );\n if (\n \"string\" === typeof href &&\n options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence\n ? options.precedence\n : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n };\n exports.preinitModule = function (href, options) {\n var encountered = \"\";\n (\"string\" === typeof href && href) ||\n (encountered +=\n \" The `href` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(href) +\n \".\");\n void 0 !== options && \"object\" !== typeof options\n ? (encountered +=\n \" The `options` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options) +\n \".\")\n : options &&\n \"as\" in options &&\n \"script\" !== options.as &&\n (encountered +=\n \" The `as` option encountered was \" +\n getValueDescriptorExpectingEnumForWarning(options.as) +\n \".\");\n if (encountered)\n console.error(\n \"ReactDOM.preinitModule(): Expected up to two arguments, a non-empty `href` string and, optionally, an `options` object with a valid `as` property.%s\",\n encountered\n );\n else\n switch (\n ((encountered =\n options && \"string\" === typeof options.as ? options.as : \"script\"),\n encountered)\n ) {\n case \"script\":\n break;\n default:\n (encountered =\n getValueDescriptorExpectingEnumForWarning(encountered)),\n console.error(\n 'ReactDOM.preinitModule(): Currently the only supported \"as\" type for this function is \"script\" but received \"%s\" instead. This warning was generated for `href` \"%s\". In the future other module types will be supported, aligning with the import-attributes proposal. Learn more here: (https://github.com/tc39/proposal-import-attributes)',\n encountered,\n href\n );\n }\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as)\n (encountered = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n )),\n Internals.d.M(href, {\n crossOrigin: encountered,\n integrity:\n \"string\" === typeof options.integrity\n ? options.integrity\n : void 0,\n nonce:\n \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n } else null == options && Internals.d.M(href);\n };\n exports.preload = function (href, options) {\n var encountered = \"\";\n (\"string\" === typeof href && href) ||\n (encountered +=\n \" The `href` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(href) +\n \".\");\n null == options || \"object\" !== typeof options\n ? (encountered +=\n \" The `options` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options) +\n \".\")\n : (\"string\" === typeof options.as && options.as) ||\n (encountered +=\n \" The `as` option encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options.as) +\n \".\");\n encountered &&\n console.error(\n 'ReactDOM.preload(): Expected two arguments, a non-empty `href` string and an `options` object with an `as` property valid for a `` tag.%s',\n encountered\n );\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n encountered = options.as;\n var crossOrigin = getCrossOriginStringAs(\n encountered,\n options.crossOrigin\n );\n Internals.d.L(href, encountered, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet\n ? options.imageSrcSet\n : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes\n ? options.imageSizes\n : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n };\n exports.preloadModule = function (href, options) {\n var encountered = \"\";\n (\"string\" === typeof href && href) ||\n (encountered +=\n \" The `href` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(href) +\n \".\");\n void 0 !== options && \"object\" !== typeof options\n ? (encountered +=\n \" The `options` argument encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options) +\n \".\")\n : options &&\n \"as\" in options &&\n \"string\" !== typeof options.as &&\n (encountered +=\n \" The `as` option encountered was \" +\n getValueDescriptorExpectingObjectForWarning(options.as) +\n \".\");\n encountered &&\n console.error(\n 'ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `` tag.%s',\n encountered\n );\n \"string\" === typeof href &&\n (options\n ? ((encountered = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n )),\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: encountered,\n integrity:\n \"string\" === typeof options.integrity\n ? options.integrity\n : void 0\n }))\n : Internals.d.m(href));\n };\n exports.requestFormReset = function (form) {\n Internals.d.r(form);\n };\n exports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n };\n exports.useFormState = function (action, initialState, permalink) {\n return resolveDispatcher().useFormState(action, initialState, permalink);\n };\n exports.useFormStatus = function () {\n return resolveDispatcher().useHostTransitionStatus();\n };\n exports.version = \"19.2.7\";\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/gui/frontend/node_modules/.vite/deps/react-dom_client.js b/gui/frontend/node_modules/.vite/deps/react-dom_client.js new file mode 100644 index 0000000000000000000000000000000000000000..106ab413bca9a36815bdb30c1588e78396c1729a --- /dev/null +++ b/gui/frontend/node_modules/.vite/deps/react-dom_client.js @@ -0,0 +1,14384 @@ +import { n as __commonJSMin, t as require_react } from "./react-DiA8Tu0S.js"; +import { t as require_react_dom } from "./react-dom.js"; +//#region node_modules/scheduler/cjs/scheduler.development.js +/** +* @license React +* scheduler.development.js +* +* Copyright (c) Meta Platforms, Inc. and affiliates. +* +* This source code is licensed under the MIT license found in the +* LICENSE file in the root directory of this source tree. +*/ +var require_scheduler_development = /* @__PURE__ */ __commonJSMin(((exports) => { + (function() { + function performWorkUntilDeadline() { + needsPaint = !1; + if (isMessageLoopRunning) { + var currentTime = exports.unstable_now(); + startTime = currentTime; + var hasMoreWork = !0; + try { + a: { + isHostCallbackScheduled = !1; + isHostTimeoutScheduled && (isHostTimeoutScheduled = !1, localClearTimeout(taskTimeoutID), taskTimeoutID = -1); + isPerformingWork = !0; + var previousPriorityLevel = currentPriorityLevel; + try { + b: { + advanceTimers(currentTime); + for (currentTask = peek(taskQueue); null !== currentTask && !(currentTask.expirationTime > currentTime && shouldYieldToHost());) { + var callback = currentTask.callback; + if ("function" === typeof callback) { + currentTask.callback = null; + currentPriorityLevel = currentTask.priorityLevel; + var continuationCallback = callback(currentTask.expirationTime <= currentTime); + currentTime = exports.unstable_now(); + if ("function" === typeof continuationCallback) { + currentTask.callback = continuationCallback; + advanceTimers(currentTime); + hasMoreWork = !0; + break b; + } + currentTask === peek(taskQueue) && pop(taskQueue); + advanceTimers(currentTime); + } else pop(taskQueue); + currentTask = peek(taskQueue); + } + if (null !== currentTask) hasMoreWork = !0; + else { + var firstTimer = peek(timerQueue); + null !== firstTimer && requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); + hasMoreWork = !1; + } + } + break a; + } finally { + currentTask = null, currentPriorityLevel = previousPriorityLevel, isPerformingWork = !1; + } + hasMoreWork = void 0; + } + } finally { + hasMoreWork ? schedulePerformWorkUntilDeadline() : isMessageLoopRunning = !1; + } + } + } + function push(heap, node) { + var index = heap.length; + heap.push(node); + a: for (; 0 < index;) { + var parentIndex = index - 1 >>> 1, parent = heap[parentIndex]; + if (0 < compare(parent, node)) heap[parentIndex] = node, heap[index] = parent, index = parentIndex; + else break a; + } + } + function peek(heap) { + return 0 === heap.length ? null : heap[0]; + } + function pop(heap) { + if (0 === heap.length) return null; + var first = heap[0], last = heap.pop(); + if (last !== first) { + heap[0] = last; + a: for (var index = 0, length = heap.length, halfLength = length >>> 1; index < halfLength;) { + var leftIndex = 2 * (index + 1) - 1, left = heap[leftIndex], rightIndex = leftIndex + 1, right = heap[rightIndex]; + if (0 > compare(left, last)) rightIndex < length && 0 > compare(right, left) ? (heap[index] = right, heap[rightIndex] = last, index = rightIndex) : (heap[index] = left, heap[leftIndex] = last, index = leftIndex); + else if (rightIndex < length && 0 > compare(right, last)) heap[index] = right, heap[rightIndex] = last, index = rightIndex; + else break a; + } + } + return first; + } + function compare(a, b) { + var diff = a.sortIndex - b.sortIndex; + return 0 !== diff ? diff : a.id - b.id; + } + function advanceTimers(currentTime) { + for (var timer = peek(timerQueue); null !== timer;) { + if (null === timer.callback) pop(timerQueue); + else if (timer.startTime <= currentTime) pop(timerQueue), timer.sortIndex = timer.expirationTime, push(taskQueue, timer); + else break; + timer = peek(timerQueue); + } + } + function handleTimeout(currentTime) { + isHostTimeoutScheduled = !1; + advanceTimers(currentTime); + if (!isHostCallbackScheduled) if (null !== peek(taskQueue)) isHostCallbackScheduled = !0, isMessageLoopRunning || (isMessageLoopRunning = !0, schedulePerformWorkUntilDeadline()); + else { + var firstTimer = peek(timerQueue); + null !== firstTimer && requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); + } + } + function shouldYieldToHost() { + return needsPaint ? !0 : exports.unstable_now() - startTime < frameInterval ? !1 : !0; + } + function requestHostTimeout(callback, ms) { + taskTimeoutID = localSetTimeout(function() { + callback(exports.unstable_now()); + }, ms); + } + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); + exports.unstable_now = void 0; + if ("object" === typeof performance && "function" === typeof performance.now) { + var localPerformance = performance; + exports.unstable_now = function() { + return localPerformance.now(); + }; + } else { + var localDate = Date, initialTime = localDate.now(); + exports.unstable_now = function() { + return localDate.now() - initialTime; + }; + } + var taskQueue = [], timerQueue = [], taskIdCounter = 1, currentTask = null, currentPriorityLevel = 3, isPerformingWork = !1, isHostCallbackScheduled = !1, isHostTimeoutScheduled = !1, needsPaint = !1, localSetTimeout = "function" === typeof setTimeout ? setTimeout : null, localClearTimeout = "function" === typeof clearTimeout ? clearTimeout : null, localSetImmediate = "undefined" !== typeof setImmediate ? setImmediate : null, isMessageLoopRunning = !1, taskTimeoutID = -1, frameInterval = 5, startTime = -1; + if ("function" === typeof localSetImmediate) var schedulePerformWorkUntilDeadline = function() { + localSetImmediate(performWorkUntilDeadline); + }; + else if ("undefined" !== typeof MessageChannel) { + var channel = new MessageChannel(), port = channel.port2; + channel.port1.onmessage = performWorkUntilDeadline; + schedulePerformWorkUntilDeadline = function() { + port.postMessage(null); + }; + } else schedulePerformWorkUntilDeadline = function() { + localSetTimeout(performWorkUntilDeadline, 0); + }; + exports.unstable_IdlePriority = 5; + exports.unstable_ImmediatePriority = 1; + exports.unstable_LowPriority = 4; + exports.unstable_NormalPriority = 3; + exports.unstable_Profiling = null; + exports.unstable_UserBlockingPriority = 2; + exports.unstable_cancelCallback = function(task) { + task.callback = null; + }; + exports.unstable_forceFrameRate = function(fps) { + 0 > fps || 125 < fps ? console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported") : frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5; + }; + exports.unstable_getCurrentPriorityLevel = function() { + return currentPriorityLevel; + }; + exports.unstable_next = function(eventHandler) { + switch (currentPriorityLevel) { + case 1: + case 2: + case 3: + var priorityLevel = 3; + break; + default: priorityLevel = currentPriorityLevel; + } + var previousPriorityLevel = currentPriorityLevel; + currentPriorityLevel = priorityLevel; + try { + return eventHandler(); + } finally { + currentPriorityLevel = previousPriorityLevel; + } + }; + exports.unstable_requestPaint = function() { + needsPaint = !0; + }; + exports.unstable_runWithPriority = function(priorityLevel, eventHandler) { + switch (priorityLevel) { + case 1: + case 2: + case 3: + case 4: + case 5: break; + default: priorityLevel = 3; + } + var previousPriorityLevel = currentPriorityLevel; + currentPriorityLevel = priorityLevel; + try { + return eventHandler(); + } finally { + currentPriorityLevel = previousPriorityLevel; + } + }; + exports.unstable_scheduleCallback = function(priorityLevel, callback, options) { + var currentTime = exports.unstable_now(); + "object" === typeof options && null !== options ? (options = options.delay, options = "number" === typeof options && 0 < options ? currentTime + options : currentTime) : options = currentTime; + switch (priorityLevel) { + case 1: + var timeout = -1; + break; + case 2: + timeout = 250; + break; + case 5: + timeout = 1073741823; + break; + case 4: + timeout = 1e4; + break; + default: timeout = 5e3; + } + timeout = options + timeout; + priorityLevel = { + id: taskIdCounter++, + callback, + priorityLevel, + startTime: options, + expirationTime: timeout, + sortIndex: -1 + }; + options > currentTime ? (priorityLevel.sortIndex = options, push(timerQueue, priorityLevel), null === peek(taskQueue) && priorityLevel === peek(timerQueue) && (isHostTimeoutScheduled ? (localClearTimeout(taskTimeoutID), taskTimeoutID = -1) : isHostTimeoutScheduled = !0, requestHostTimeout(handleTimeout, options - currentTime))) : (priorityLevel.sortIndex = timeout, push(taskQueue, priorityLevel), isHostCallbackScheduled || isPerformingWork || (isHostCallbackScheduled = !0, isMessageLoopRunning || (isMessageLoopRunning = !0, schedulePerformWorkUntilDeadline()))); + return priorityLevel; + }; + exports.unstable_shouldYield = shouldYieldToHost; + exports.unstable_wrapCallback = function(callback) { + var parentPriorityLevel = currentPriorityLevel; + return function() { + var previousPriorityLevel = currentPriorityLevel; + currentPriorityLevel = parentPriorityLevel; + try { + return callback.apply(this, arguments); + } finally { + currentPriorityLevel = previousPriorityLevel; + } + }; + }; + "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); + })(); +})); +//#endregion +//#region node_modules/scheduler/index.js +var require_scheduler = /* @__PURE__ */ __commonJSMin(((exports, module) => { + module.exports = require_scheduler_development(); +})); +//#endregion +//#region node_modules/react-dom/cjs/react-dom-client.development.js +/** +* @license React +* react-dom-client.development.js +* +* Copyright (c) Meta Platforms, Inc. and affiliates. +* +* This source code is licensed under the MIT license found in the +* LICENSE file in the root directory of this source tree. +*/ +var require_react_dom_client_development = /* @__PURE__ */ __commonJSMin(((exports) => { + (function() { + function findHook(fiber, id) { + for (fiber = fiber.memoizedState; null !== fiber && 0 < id;) fiber = fiber.next, id--; + return fiber; + } + function copyWithSetImpl(obj, path, index, value) { + if (index >= path.length) return value; + var key = path[index], updated = isArrayImpl(obj) ? obj.slice() : assign({}, obj); + updated[key] = copyWithSetImpl(obj[key], path, index + 1, value); + return updated; + } + function copyWithRename(obj, oldPath, newPath) { + if (oldPath.length !== newPath.length) console.warn("copyWithRename() expects paths of the same length"); + else { + for (var i = 0; i < newPath.length - 1; i++) if (oldPath[i] !== newPath[i]) { + console.warn("copyWithRename() expects paths to be the same except for the deepest key"); + return; + } + return copyWithRenameImpl(obj, oldPath, newPath, 0); + } + } + function copyWithRenameImpl(obj, oldPath, newPath, index) { + var oldKey = oldPath[index], updated = isArrayImpl(obj) ? obj.slice() : assign({}, obj); + index + 1 === oldPath.length ? (updated[newPath[index]] = updated[oldKey], isArrayImpl(updated) ? updated.splice(oldKey, 1) : delete updated[oldKey]) : updated[oldKey] = copyWithRenameImpl(obj[oldKey], oldPath, newPath, index + 1); + return updated; + } + function copyWithDeleteImpl(obj, path, index) { + var key = path[index], updated = isArrayImpl(obj) ? obj.slice() : assign({}, obj); + if (index + 1 === path.length) return isArrayImpl(updated) ? updated.splice(key, 1) : delete updated[key], updated; + updated[key] = copyWithDeleteImpl(obj[key], path, index + 1); + return updated; + } + function shouldSuspendImpl() { + return !1; + } + function shouldErrorImpl() { + return null; + } + function warnInvalidHookAccess() { + console.error("Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. You can only call Hooks at the top level of your React function. For more information, see https://react.dev/link/rules-of-hooks"); + } + function warnInvalidContextAccess() { + console.error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo()."); + } + function noop() {} + function warnForMissingKey() {} + function setToSortedString(set) { + var array = []; + set.forEach(function(value) { + array.push(value); + }); + return array.sort().join(", "); + } + function createFiber(tag, pendingProps, key, mode) { + return new FiberNode(tag, pendingProps, key, mode); + } + function scheduleRoot(root, element) { + root.context === emptyContextObject && (updateContainerImpl(root.current, 2, element, root, null, null), flushSyncWork$1()); + } + function scheduleRefresh(root, update) { + if (null !== resolveFamily) { + var staleFamilies = update.staleFamilies; + update = update.updatedFamilies; + flushPendingEffects(); + scheduleFibersWithFamiliesRecursively(root.current, update, staleFamilies); + flushSyncWork$1(); + } + } + function setRefreshHandler(handler) { + resolveFamily = handler; + } + function isValidContainer(node) { + return !(!node || 1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType); + } + function getNearestMountedFiber(fiber) { + var node = fiber, nearestMounted = fiber; + if (fiber.alternate) for (; node.return;) node = node.return; + else { + fiber = node; + do + node = fiber, 0 !== (node.flags & 4098) && (nearestMounted = node.return), fiber = node.return; + while (fiber); + } + return 3 === node.tag ? nearestMounted : null; + } + function getSuspenseInstanceFromFiber(fiber) { + if (13 === fiber.tag) { + var suspenseState = fiber.memoizedState; + null === suspenseState && (fiber = fiber.alternate, null !== fiber && (suspenseState = fiber.memoizedState)); + if (null !== suspenseState) return suspenseState.dehydrated; + } + return null; + } + function getActivityInstanceFromFiber(fiber) { + if (31 === fiber.tag) { + var activityState = fiber.memoizedState; + null === activityState && (fiber = fiber.alternate, null !== fiber && (activityState = fiber.memoizedState)); + if (null !== activityState) return activityState.dehydrated; + } + return null; + } + function assertIsMounted(fiber) { + if (getNearestMountedFiber(fiber) !== fiber) throw Error("Unable to find node on an unmounted component."); + } + function findCurrentFiberUsingSlowPath(fiber) { + var alternate = fiber.alternate; + if (!alternate) { + alternate = getNearestMountedFiber(fiber); + if (null === alternate) throw Error("Unable to find node on an unmounted component."); + return alternate !== fiber ? null : fiber; + } + for (var a = fiber, b = alternate;;) { + var parentA = a.return; + if (null === parentA) break; + var parentB = parentA.alternate; + if (null === parentB) { + b = parentA.return; + if (null !== b) { + a = b; + continue; + } + break; + } + if (parentA.child === parentB.child) { + for (parentB = parentA.child; parentB;) { + if (parentB === a) return assertIsMounted(parentA), fiber; + if (parentB === b) return assertIsMounted(parentA), alternate; + parentB = parentB.sibling; + } + throw Error("Unable to find node on an unmounted component."); + } + if (a.return !== b.return) a = parentA, b = parentB; + else { + for (var didFindChild = !1, _child = parentA.child; _child;) { + if (_child === a) { + didFindChild = !0; + a = parentA; + b = parentB; + break; + } + if (_child === b) { + didFindChild = !0; + b = parentA; + a = parentB; + break; + } + _child = _child.sibling; + } + if (!didFindChild) { + for (_child = parentB.child; _child;) { + if (_child === a) { + didFindChild = !0; + a = parentB; + b = parentA; + break; + } + if (_child === b) { + didFindChild = !0; + b = parentB; + a = parentA; + break; + } + _child = _child.sibling; + } + if (!didFindChild) throw Error("Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue."); + } + } + if (a.alternate !== b) throw Error("Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue."); + } + if (3 !== a.tag) throw Error("Unable to find node on an unmounted component."); + return a.stateNode.current === a ? fiber : alternate; + } + function findCurrentHostFiberImpl(node) { + var tag = node.tag; + if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node; + for (node = node.child; null !== node;) { + tag = findCurrentHostFiberImpl(node); + if (null !== tag) return tag; + node = node.sibling; + } + return null; + } + function getIteratorFn(maybeIterable) { + if (null === maybeIterable || "object" !== typeof maybeIterable) return null; + maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable["@@iterator"]; + return "function" === typeof maybeIterable ? maybeIterable : null; + } + function getComponentNameFromType(type) { + if (null == type) return null; + if ("function" === typeof type) return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null; + if ("string" === typeof type) return type; + switch (type) { + case REACT_FRAGMENT_TYPE: return "Fragment"; + case REACT_PROFILER_TYPE: return "Profiler"; + case REACT_STRICT_MODE_TYPE: return "StrictMode"; + case REACT_SUSPENSE_TYPE: return "Suspense"; + case REACT_SUSPENSE_LIST_TYPE: return "SuspenseList"; + case REACT_ACTIVITY_TYPE: return "Activity"; + } + if ("object" === typeof type) switch ("number" === typeof type.tag && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), type.$$typeof) { + case REACT_PORTAL_TYPE: return "Portal"; + case REACT_CONTEXT_TYPE: return type.displayName || "Context"; + case REACT_CONSUMER_TYPE: return (type._context.displayName || "Context") + ".Consumer"; + case REACT_FORWARD_REF_TYPE: + var innerType = type.render; + type = type.displayName; + type || (type = innerType.displayName || innerType.name || "", type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef"); + return type; + case REACT_MEMO_TYPE: return innerType = type.displayName || null, null !== innerType ? innerType : getComponentNameFromType(type.type) || "Memo"; + case REACT_LAZY_TYPE: + innerType = type._payload; + type = type._init; + try { + return getComponentNameFromType(type(innerType)); + } catch (x) {} + } + return null; + } + function getComponentNameFromOwner(owner) { + return "number" === typeof owner.tag ? getComponentNameFromFiber(owner) : "string" === typeof owner.name ? owner.name : null; + } + function getComponentNameFromFiber(fiber) { + var type = fiber.type; + switch (fiber.tag) { + case 31: return "Activity"; + case 24: return "Cache"; + case 9: return (type._context.displayName || "Context") + ".Consumer"; + case 10: return type.displayName || "Context"; + case 18: return "DehydratedFragment"; + case 11: return fiber = type.render, fiber = fiber.displayName || fiber.name || "", type.displayName || ("" !== fiber ? "ForwardRef(" + fiber + ")" : "ForwardRef"); + case 7: return "Fragment"; + case 26: + case 27: + case 5: return type; + case 4: return "Portal"; + case 3: return "Root"; + case 6: return "Text"; + case 16: return getComponentNameFromType(type); + case 8: return type === REACT_STRICT_MODE_TYPE ? "StrictMode" : "Mode"; + case 22: return "Offscreen"; + case 12: return "Profiler"; + case 21: return "Scope"; + case 13: return "Suspense"; + case 19: return "SuspenseList"; + case 25: return "TracingMarker"; + case 1: + case 0: + case 14: + case 15: + if ("function" === typeof type) return type.displayName || type.name || null; + if ("string" === typeof type) return type; + break; + case 29: + type = fiber._debugInfo; + if (null != type) { + for (var i = type.length - 1; 0 <= i; i--) if ("string" === typeof type[i].name) return type[i].name; + } + if (null !== fiber.return) return getComponentNameFromFiber(fiber.return); + } + return null; + } + function createCursor(defaultValue) { + return { current: defaultValue }; + } + function pop(cursor, fiber) { + 0 > index$jscomp$0 ? console.error("Unexpected pop.") : (fiber !== fiberStack[index$jscomp$0] && console.error("Unexpected Fiber popped."), cursor.current = valueStack[index$jscomp$0], valueStack[index$jscomp$0] = null, fiberStack[index$jscomp$0] = null, index$jscomp$0--); + } + function push(cursor, value, fiber) { + index$jscomp$0++; + valueStack[index$jscomp$0] = cursor.current; + fiberStack[index$jscomp$0] = fiber; + cursor.current = value; + } + function requiredContext(c) { + null === c && console.error("Expected host context to exist. This error is likely caused by a bug in React. Please file an issue."); + return c; + } + function pushHostContainer(fiber, nextRootInstance) { + push(rootInstanceStackCursor, nextRootInstance, fiber); + push(contextFiberStackCursor, fiber, fiber); + push(contextStackCursor, null, fiber); + var nextRootContext = nextRootInstance.nodeType; + switch (nextRootContext) { + case 9: + case 11: + nextRootContext = 9 === nextRootContext ? "#document" : "#fragment"; + nextRootInstance = (nextRootInstance = nextRootInstance.documentElement) ? (nextRootInstance = nextRootInstance.namespaceURI) ? getOwnHostContext(nextRootInstance) : HostContextNamespaceNone : HostContextNamespaceNone; + break; + default: if (nextRootContext = nextRootInstance.tagName, nextRootInstance = nextRootInstance.namespaceURI) nextRootInstance = getOwnHostContext(nextRootInstance), nextRootInstance = getChildHostContextProd(nextRootInstance, nextRootContext); + else switch (nextRootContext) { + case "svg": + nextRootInstance = HostContextNamespaceSvg; + break; + case "math": + nextRootInstance = HostContextNamespaceMath; + break; + default: nextRootInstance = HostContextNamespaceNone; + } + } + nextRootContext = nextRootContext.toLowerCase(); + nextRootContext = updatedAncestorInfoDev(null, nextRootContext); + nextRootContext = { + context: nextRootInstance, + ancestorInfo: nextRootContext + }; + pop(contextStackCursor, fiber); + push(contextStackCursor, nextRootContext, fiber); + } + function popHostContainer(fiber) { + pop(contextStackCursor, fiber); + pop(contextFiberStackCursor, fiber); + pop(rootInstanceStackCursor, fiber); + } + function getHostContext() { + return requiredContext(contextStackCursor.current); + } + function pushHostContext(fiber) { + null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber, fiber); + var context = requiredContext(contextStackCursor.current); + var type = fiber.type; + var nextContext = getChildHostContextProd(context.context, type); + type = updatedAncestorInfoDev(context.ancestorInfo, type); + nextContext = { + context: nextContext, + ancestorInfo: type + }; + context !== nextContext && (push(contextFiberStackCursor, fiber, fiber), push(contextStackCursor, nextContext, fiber)); + } + function popHostContext(fiber) { + contextFiberStackCursor.current === fiber && (pop(contextStackCursor, fiber), pop(contextFiberStackCursor, fiber)); + hostTransitionProviderCursor.current === fiber && (pop(hostTransitionProviderCursor, fiber), HostTransitionContext._currentValue = NotPendingTransition); + } + function disabledLog() {} + function disableLogs() { + if (0 === disabledDepth) { + prevLog = console.log; + prevInfo = console.info; + prevWarn = console.warn; + prevError = console.error; + prevGroup = console.group; + prevGroupCollapsed = console.groupCollapsed; + prevGroupEnd = console.groupEnd; + var props = { + configurable: !0, + enumerable: !0, + value: disabledLog, + writable: !0 + }; + Object.defineProperties(console, { + info: props, + log: props, + warn: props, + error: props, + group: props, + groupCollapsed: props, + groupEnd: props + }); + } + disabledDepth++; + } + function reenableLogs() { + disabledDepth--; + if (0 === disabledDepth) { + var props = { + configurable: !0, + enumerable: !0, + writable: !0 + }; + Object.defineProperties(console, { + log: assign({}, props, { value: prevLog }), + info: assign({}, props, { value: prevInfo }), + warn: assign({}, props, { value: prevWarn }), + error: assign({}, props, { value: prevError }), + group: assign({}, props, { value: prevGroup }), + groupCollapsed: assign({}, props, { value: prevGroupCollapsed }), + groupEnd: assign({}, props, { value: prevGroupEnd }) + }); + } + 0 > disabledDepth && console.error("disabledDepth fell below zero. This is a bug in React. Please file an issue."); + } + function formatOwnerStack(error) { + var prevPrepareStackTrace = Error.prepareStackTrace; + Error.prepareStackTrace = void 0; + error = error.stack; + Error.prepareStackTrace = prevPrepareStackTrace; + error.startsWith("Error: react-stack-top-frame\n") && (error = error.slice(29)); + prevPrepareStackTrace = error.indexOf("\n"); + -1 !== prevPrepareStackTrace && (error = error.slice(prevPrepareStackTrace + 1)); + prevPrepareStackTrace = error.indexOf("react_stack_bottom_frame"); + -1 !== prevPrepareStackTrace && (prevPrepareStackTrace = error.lastIndexOf("\n", prevPrepareStackTrace)); + if (-1 !== prevPrepareStackTrace) error = error.slice(0, prevPrepareStackTrace); + else return ""; + return error; + } + function describeBuiltInComponentFrame(name) { + if (void 0 === prefix) try { + throw Error(); + } catch (x) { + var match = x.stack.trim().match(/\n( *(at )?)/); + prefix = match && match[1] || ""; + suffix = -1 < x.stack.indexOf("\n at") ? " ()" : -1 < x.stack.indexOf("@") ? "@unknown:0:0" : ""; + } + return "\n" + prefix + name + suffix; + } + function describeNativeComponentFrame(fn, construct) { + if (!fn || reentry) return ""; + var frame = componentFrameCache.get(fn); + if (void 0 !== frame) return frame; + reentry = !0; + frame = Error.prepareStackTrace; + Error.prepareStackTrace = void 0; + var previousDispatcher = null; + previousDispatcher = ReactSharedInternals.H; + ReactSharedInternals.H = null; + disableLogs(); + try { + var RunInRootFrame = { DetermineComponentFrameRoot: function() { + try { + if (construct) { + var Fake = function() { + throw Error(); + }; + Object.defineProperty(Fake.prototype, "props", { set: function() { + throw Error(); + } }); + if ("object" === typeof Reflect && Reflect.construct) { + try { + Reflect.construct(Fake, []); + } catch (x) { + var control = x; + } + Reflect.construct(fn, [], Fake); + } else { + try { + Fake.call(); + } catch (x$0) { + control = x$0; + } + fn.call(Fake.prototype); + } + } else { + try { + throw Error(); + } catch (x$1) { + control = x$1; + } + (Fake = fn()) && "function" === typeof Fake.catch && Fake.catch(function() {}); + } + } catch (sample) { + if (sample && control && "string" === typeof sample.stack) return [sample.stack, control.stack]; + } + return [null, null]; + } }; + RunInRootFrame.DetermineComponentFrameRoot.displayName = "DetermineComponentFrameRoot"; + var namePropDescriptor = Object.getOwnPropertyDescriptor(RunInRootFrame.DetermineComponentFrameRoot, "name"); + namePropDescriptor && namePropDescriptor.configurable && Object.defineProperty(RunInRootFrame.DetermineComponentFrameRoot, "name", { value: "DetermineComponentFrameRoot" }); + var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(), sampleStack = _RunInRootFrame$Deter[0], controlStack = _RunInRootFrame$Deter[1]; + if (sampleStack && controlStack) { + var sampleLines = sampleStack.split("\n"), controlLines = controlStack.split("\n"); + for (_RunInRootFrame$Deter = namePropDescriptor = 0; namePropDescriptor < sampleLines.length && !sampleLines[namePropDescriptor].includes("DetermineComponentFrameRoot");) namePropDescriptor++; + for (; _RunInRootFrame$Deter < controlLines.length && !controlLines[_RunInRootFrame$Deter].includes("DetermineComponentFrameRoot");) _RunInRootFrame$Deter++; + if (namePropDescriptor === sampleLines.length || _RunInRootFrame$Deter === controlLines.length) for (namePropDescriptor = sampleLines.length - 1, _RunInRootFrame$Deter = controlLines.length - 1; 1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter && sampleLines[namePropDescriptor] !== controlLines[_RunInRootFrame$Deter];) _RunInRootFrame$Deter--; + for (; 1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter; namePropDescriptor--, _RunInRootFrame$Deter--) if (sampleLines[namePropDescriptor] !== controlLines[_RunInRootFrame$Deter]) { + if (1 !== namePropDescriptor || 1 !== _RunInRootFrame$Deter) do + if (namePropDescriptor--, _RunInRootFrame$Deter--, 0 > _RunInRootFrame$Deter || sampleLines[namePropDescriptor] !== controlLines[_RunInRootFrame$Deter]) { + var _frame = "\n" + sampleLines[namePropDescriptor].replace(" at new ", " at "); + fn.displayName && _frame.includes("") && (_frame = _frame.replace("", fn.displayName)); + "function" === typeof fn && componentFrameCache.set(fn, _frame); + return _frame; + } + while (1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter); + break; + } + } + } finally { + reentry = !1, ReactSharedInternals.H = previousDispatcher, reenableLogs(), Error.prepareStackTrace = frame; + } + sampleLines = (sampleLines = fn ? fn.displayName || fn.name : "") ? describeBuiltInComponentFrame(sampleLines) : ""; + "function" === typeof fn && componentFrameCache.set(fn, sampleLines); + return sampleLines; + } + function describeFiber(fiber, childFiber) { + switch (fiber.tag) { + case 26: + case 27: + case 5: return describeBuiltInComponentFrame(fiber.type); + case 16: return describeBuiltInComponentFrame("Lazy"); + case 13: return fiber.child !== childFiber && null !== childFiber ? describeBuiltInComponentFrame("Suspense Fallback") : describeBuiltInComponentFrame("Suspense"); + case 19: return describeBuiltInComponentFrame("SuspenseList"); + case 0: + case 15: return describeNativeComponentFrame(fiber.type, !1); + case 11: return describeNativeComponentFrame(fiber.type.render, !1); + case 1: return describeNativeComponentFrame(fiber.type, !0); + case 31: return describeBuiltInComponentFrame("Activity"); + default: return ""; + } + } + function getStackByFiberInDevAndProd(workInProgress) { + try { + var info = "", previous = null; + do { + info += describeFiber(workInProgress, previous); + var debugInfo = workInProgress._debugInfo; + if (debugInfo) for (var i = debugInfo.length - 1; 0 <= i; i--) { + var entry = debugInfo[i]; + if ("string" === typeof entry.name) { + var JSCompiler_temp_const = info; + a: { + var name = entry.name, env = entry.env, location = entry.debugLocation; + if (null != location) { + var childStack = formatOwnerStack(location), idx = childStack.lastIndexOf("\n"), lastLine = -1 === idx ? childStack : childStack.slice(idx + 1); + if (-1 !== lastLine.indexOf(name)) { + var JSCompiler_inline_result = "\n" + lastLine; + break a; + } + } + JSCompiler_inline_result = describeBuiltInComponentFrame(name + (env ? " [" + env + "]" : "")); + } + info = JSCompiler_temp_const + JSCompiler_inline_result; + } + } + previous = workInProgress; + workInProgress = workInProgress.return; + } while (workInProgress); + return info; + } catch (x) { + return "\nError generating stack: " + x.message + "\n" + x.stack; + } + } + function describeFunctionComponentFrameWithoutLineNumber(fn) { + return (fn = fn ? fn.displayName || fn.name : "") ? describeBuiltInComponentFrame(fn) : ""; + } + function getCurrentFiberOwnerNameInDevOrNull() { + if (null === current) return null; + var owner = current._debugOwner; + return null != owner ? getComponentNameFromOwner(owner) : null; + } + function getCurrentFiberStackInDev() { + if (null === current) return ""; + var workInProgress = current; + try { + var info = ""; + 6 === workInProgress.tag && (workInProgress = workInProgress.return); + switch (workInProgress.tag) { + case 26: + case 27: + case 5: + info += describeBuiltInComponentFrame(workInProgress.type); + break; + case 13: + info += describeBuiltInComponentFrame("Suspense"); + break; + case 19: + info += describeBuiltInComponentFrame("SuspenseList"); + break; + case 31: + info += describeBuiltInComponentFrame("Activity"); + break; + case 30: + case 0: + case 15: + case 1: + workInProgress._debugOwner || "" !== info || (info += describeFunctionComponentFrameWithoutLineNumber(workInProgress.type)); + break; + case 11: workInProgress._debugOwner || "" !== info || (info += describeFunctionComponentFrameWithoutLineNumber(workInProgress.type.render)); + } + for (; workInProgress;) if ("number" === typeof workInProgress.tag) { + var fiber = workInProgress; + workInProgress = fiber._debugOwner; + var debugStack = fiber._debugStack; + if (workInProgress && debugStack) { + var formattedStack = formatOwnerStack(debugStack); + "" !== formattedStack && (info += "\n" + formattedStack); + } + } else if (null != workInProgress.debugStack) { + var ownerStack = workInProgress.debugStack; + (workInProgress = workInProgress.owner) && ownerStack && (info += "\n" + formatOwnerStack(ownerStack)); + } else break; + var JSCompiler_inline_result = info; + } catch (x) { + JSCompiler_inline_result = "\nError generating stack: " + x.message + "\n" + x.stack; + } + return JSCompiler_inline_result; + } + function runWithFiberInDEV(fiber, callback, arg0, arg1, arg2, arg3, arg4) { + var previousFiber = current; + setCurrentFiber(fiber); + try { + return null !== fiber && fiber._debugTask ? fiber._debugTask.run(callback.bind(null, arg0, arg1, arg2, arg3, arg4)) : callback(arg0, arg1, arg2, arg3, arg4); + } finally { + setCurrentFiber(previousFiber); + } + throw Error("runWithFiberInDEV should never be called in production. This is a bug in React."); + } + function setCurrentFiber(fiber) { + ReactSharedInternals.getCurrentStack = null === fiber ? null : getCurrentFiberStackInDev; + isRendering = !1; + current = fiber; + } + function typeName(value) { + return "function" === typeof Symbol && Symbol.toStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object"; + } + function willCoercionThrow(value) { + try { + return testStringCoercion(value), !1; + } catch (e) { + return !0; + } + } + function testStringCoercion(value) { + return "" + value; + } + function checkAttributeStringCoercion(value, attributeName) { + if (willCoercionThrow(value)) return console.error("The provided `%s` attribute is an unsupported type %s. This value must be coerced to a string before using it here.", attributeName, typeName(value)), testStringCoercion(value); + } + function checkCSSPropertyStringCoercion(value, propName) { + if (willCoercionThrow(value)) return console.error("The provided `%s` CSS property is an unsupported type %s. This value must be coerced to a string before using it here.", propName, typeName(value)), testStringCoercion(value); + } + function checkFormFieldValueStringCoercion(value) { + if (willCoercionThrow(value)) return console.error("Form field values (value, checked, defaultValue, or defaultChecked props) must be strings, not %s. This value must be coerced to a string before using it here.", typeName(value)), testStringCoercion(value); + } + function injectInternals(internals) { + if ("undefined" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) return !1; + var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__; + if (hook.isDisabled) return !0; + if (!hook.supportsFiber) return console.error("The installed version of React DevTools is too old and will not work with the current version of React. Please update React DevTools. https://react.dev/link/react-devtools"), !0; + try { + rendererID = hook.inject(internals), injectedHook = hook; + } catch (err) { + console.error("React instrumentation encountered an error: %o.", err); + } + return hook.checkDCE ? !0 : !1; + } + function setIsStrictModeForDevtools(newIsStrictMode) { + "function" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode); + if (injectedHook && "function" === typeof injectedHook.setStrictMode) try { + injectedHook.setStrictMode(rendererID, newIsStrictMode); + } catch (err) { + hasLoggedError || (hasLoggedError = !0, console.error("React instrumentation encountered an error: %o", err)); + } + } + function clz32Fallback(x) { + x >>>= 0; + return 0 === x ? 32 : 31 - (log(x) / LN2 | 0) | 0; + } + function getHighestPriorityLanes(lanes) { + var pendingSyncLanes = lanes & 42; + if (0 !== pendingSyncLanes) return pendingSyncLanes; + switch (lanes & -lanes) { + case 1: return 1; + case 2: return 2; + case 4: return 4; + case 8: return 8; + case 16: return 16; + case 32: return 32; + case 64: return 64; + case 128: return 128; + case 256: + case 512: + case 1024: + case 2048: + case 4096: + case 8192: + case 16384: + case 32768: + case 65536: + case 131072: return lanes & 261888; + case 262144: + case 524288: + case 1048576: + case 2097152: return lanes & 3932160; + case 4194304: + case 8388608: + case 16777216: + case 33554432: return lanes & 62914560; + case 67108864: return 67108864; + case 134217728: return 134217728; + case 268435456: return 268435456; + case 536870912: return 536870912; + case 1073741824: return 0; + default: return console.error("Should have found matching lanes. This is a bug in React."), lanes; + } + } + function getNextLanes(root, wipLanes, rootHasPendingCommit) { + var pendingLanes = root.pendingLanes; + if (0 === pendingLanes) return 0; + var nextLanes = 0, suspendedLanes = root.suspendedLanes, pingedLanes = root.pingedLanes; + root = root.warmLanes; + var nonIdlePendingLanes = pendingLanes & 134217727; + 0 !== nonIdlePendingLanes ? (pendingLanes = nonIdlePendingLanes & ~suspendedLanes, 0 !== pendingLanes ? nextLanes = getHighestPriorityLanes(pendingLanes) : (pingedLanes &= nonIdlePendingLanes, 0 !== pingedLanes ? nextLanes = getHighestPriorityLanes(pingedLanes) : rootHasPendingCommit || (rootHasPendingCommit = nonIdlePendingLanes & ~root, 0 !== rootHasPendingCommit && (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))))) : (nonIdlePendingLanes = pendingLanes & ~suspendedLanes, 0 !== nonIdlePendingLanes ? nextLanes = getHighestPriorityLanes(nonIdlePendingLanes) : 0 !== pingedLanes ? nextLanes = getHighestPriorityLanes(pingedLanes) : rootHasPendingCommit || (rootHasPendingCommit = pendingLanes & ~root, 0 !== rootHasPendingCommit && (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))); + return 0 === nextLanes ? 0 : 0 !== wipLanes && wipLanes !== nextLanes && 0 === (wipLanes & suspendedLanes) && (suspendedLanes = nextLanes & -nextLanes, rootHasPendingCommit = wipLanes & -wipLanes, suspendedLanes >= rootHasPendingCommit || 32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)) ? wipLanes : nextLanes; + } + function checkIfRootIsPrerendering(root, renderLanes) { + return 0 === (root.pendingLanes & ~(root.suspendedLanes & ~root.pingedLanes) & renderLanes); + } + function computeExpirationTime(lane, currentTime) { + switch (lane) { + case 1: + case 2: + case 4: + case 8: + case 64: return currentTime + 250; + case 16: + case 32: + case 128: + case 256: + case 512: + case 1024: + case 2048: + case 4096: + case 8192: + case 16384: + case 32768: + case 65536: + case 131072: + case 262144: + case 524288: + case 1048576: + case 2097152: return currentTime + 5e3; + case 4194304: + case 8388608: + case 16777216: + case 33554432: return -1; + case 67108864: + case 134217728: + case 268435456: + case 536870912: + case 1073741824: return -1; + default: return console.error("Should have found matching lanes. This is a bug in React."), -1; + } + } + function claimNextRetryLane() { + var lane = nextRetryLane; + nextRetryLane <<= 1; + 0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304); + return lane; + } + function createLaneMap(initial) { + for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial); + return laneMap; + } + function markRootUpdated$1(root, updateLane) { + root.pendingLanes |= updateLane; + 268435456 !== updateLane && (root.suspendedLanes = 0, root.pingedLanes = 0, root.warmLanes = 0); + } + function markRootFinished(root, finishedLanes, remainingLanes, spawnedLane, updatedLanes, suspendedRetryLanes) { + var previouslyPendingLanes = root.pendingLanes; + root.pendingLanes = remainingLanes; + root.suspendedLanes = 0; + root.pingedLanes = 0; + root.warmLanes = 0; + root.expiredLanes &= remainingLanes; + root.entangledLanes &= remainingLanes; + root.errorRecoveryDisabledLanes &= remainingLanes; + root.shellSuspendCounter = 0; + var entanglements = root.entanglements, expirationTimes = root.expirationTimes, hiddenUpdates = root.hiddenUpdates; + for (remainingLanes = previouslyPendingLanes & ~remainingLanes; 0 < remainingLanes;) { + var index = 31 - clz32(remainingLanes), lane = 1 << index; + entanglements[index] = 0; + expirationTimes[index] = -1; + var hiddenUpdatesForLane = hiddenUpdates[index]; + if (null !== hiddenUpdatesForLane) for (hiddenUpdates[index] = null, index = 0; index < hiddenUpdatesForLane.length; index++) { + var update = hiddenUpdatesForLane[index]; + null !== update && (update.lane &= -536870913); + } + remainingLanes &= ~lane; + } + 0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0); + 0 !== suspendedRetryLanes && 0 === updatedLanes && 0 !== root.tag && (root.suspendedLanes |= suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes)); + } + function markSpawnedDeferredLane(root, spawnedLane, entangledLanes) { + root.pendingLanes |= spawnedLane; + root.suspendedLanes &= ~spawnedLane; + var spawnedLaneIndex = 31 - clz32(spawnedLane); + root.entangledLanes |= spawnedLane; + root.entanglements[spawnedLaneIndex] = root.entanglements[spawnedLaneIndex] | 1073741824 | entangledLanes & 261930; + } + function markRootEntangled(root, entangledLanes) { + var rootEntangledLanes = root.entangledLanes |= entangledLanes; + for (root = root.entanglements; rootEntangledLanes;) { + var index = 31 - clz32(rootEntangledLanes), lane = 1 << index; + lane & entangledLanes | root[index] & entangledLanes && (root[index] |= entangledLanes); + rootEntangledLanes &= ~lane; + } + } + function getBumpedLaneForHydration(root, renderLanes) { + var renderLane = renderLanes & -renderLanes; + renderLane = 0 !== (renderLane & 42) ? 1 : getBumpedLaneForHydrationByLane(renderLane); + return 0 !== (renderLane & (root.suspendedLanes | renderLanes)) ? 0 : renderLane; + } + function getBumpedLaneForHydrationByLane(lane) { + switch (lane) { + case 2: + lane = 1; + break; + case 8: + lane = 4; + break; + case 32: + lane = 16; + break; + case 256: + case 512: + case 1024: + case 2048: + case 4096: + case 8192: + case 16384: + case 32768: + case 65536: + case 131072: + case 262144: + case 524288: + case 1048576: + case 2097152: + case 4194304: + case 8388608: + case 16777216: + case 33554432: + lane = 128; + break; + case 268435456: + lane = 134217728; + break; + default: lane = 0; + } + return lane; + } + function addFiberToLanesMap(root, fiber, lanes) { + if (isDevToolsPresent) for (root = root.pendingUpdatersLaneMap; 0 < lanes;) { + var index = 31 - clz32(lanes), lane = 1 << index; + root[index].add(fiber); + lanes &= ~lane; + } + } + function movePendingFibersToMemoized(root, lanes) { + if (isDevToolsPresent) for (var pendingUpdatersLaneMap = root.pendingUpdatersLaneMap, memoizedUpdaters = root.memoizedUpdaters; 0 < lanes;) { + var index = 31 - clz32(lanes); + root = 1 << index; + index = pendingUpdatersLaneMap[index]; + 0 < index.size && (index.forEach(function(fiber) { + var alternate = fiber.alternate; + null !== alternate && memoizedUpdaters.has(alternate) || memoizedUpdaters.add(fiber); + }), index.clear()); + lanes &= ~root; + } + } + function lanesToEventPriority(lanes) { + lanes &= -lanes; + return 0 !== DiscreteEventPriority && DiscreteEventPriority < lanes ? 0 !== ContinuousEventPriority && ContinuousEventPriority < lanes ? 0 !== (lanes & 134217727) ? DefaultEventPriority : IdleEventPriority : ContinuousEventPriority : DiscreteEventPriority; + } + function resolveUpdatePriority() { + var updatePriority = ReactDOMSharedInternals.p; + if (0 !== updatePriority) return updatePriority; + updatePriority = window.event; + return void 0 === updatePriority ? DefaultEventPriority : getEventPriority(updatePriority.type); + } + function runWithPriority(priority, fn) { + var previousPriority = ReactDOMSharedInternals.p; + try { + return ReactDOMSharedInternals.p = priority, fn(); + } finally { + ReactDOMSharedInternals.p = previousPriority; + } + } + function detachDeletedInstance(node) { + delete node[internalInstanceKey]; + delete node[internalPropsKey]; + delete node[internalEventHandlersKey]; + delete node[internalEventHandlerListenersKey]; + delete node[internalEventHandlesSetKey]; + } + function getClosestInstanceFromNode(targetNode) { + var targetInst = targetNode[internalInstanceKey]; + if (targetInst) return targetInst; + for (var parentNode = targetNode.parentNode; parentNode;) { + if (targetInst = parentNode[internalContainerInstanceKey] || parentNode[internalInstanceKey]) { + parentNode = targetInst.alternate; + if (null !== targetInst.child || null !== parentNode && null !== parentNode.child) for (targetNode = getParentHydrationBoundary(targetNode); null !== targetNode;) { + if (parentNode = targetNode[internalInstanceKey]) return parentNode; + targetNode = getParentHydrationBoundary(targetNode); + } + return targetInst; + } + targetNode = parentNode; + parentNode = targetNode.parentNode; + } + return null; + } + function getInstanceFromNode(node) { + if (node = node[internalInstanceKey] || node[internalContainerInstanceKey]) { + var tag = node.tag; + if (5 === tag || 6 === tag || 13 === tag || 31 === tag || 26 === tag || 27 === tag || 3 === tag) return node; + } + return null; + } + function getNodeFromInstance(inst) { + var tag = inst.tag; + if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode; + throw Error("getNodeFromInstance: Invalid argument."); + } + function getResourcesFromRoot(root) { + var resources = root[internalRootNodeResourcesKey]; + resources || (resources = root[internalRootNodeResourcesKey] = { + hoistableStyles: /* @__PURE__ */ new Map(), + hoistableScripts: /* @__PURE__ */ new Map() + }); + return resources; + } + function markNodeAsHoistable(node) { + node[internalHoistableMarker] = !0; + } + function registerTwoPhaseEvent(registrationName, dependencies) { + registerDirectEvent(registrationName, dependencies); + registerDirectEvent(registrationName + "Capture", dependencies); + } + function registerDirectEvent(registrationName, dependencies) { + registrationNameDependencies[registrationName] && console.error("EventRegistry: More than one plugin attempted to publish the same registration name, `%s`.", registrationName); + registrationNameDependencies[registrationName] = dependencies; + var lowerCasedName = registrationName.toLowerCase(); + possibleRegistrationNames[lowerCasedName] = registrationName; + "onDoubleClick" === registrationName && (possibleRegistrationNames.ondblclick = registrationName); + for (registrationName = 0; registrationName < dependencies.length; registrationName++) allNativeEvents.add(dependencies[registrationName]); + } + function checkControlledValueProps(tagName, props) { + hasReadOnlyValue[props.type] || props.onChange || props.onInput || props.readOnly || props.disabled || null == props.value || ("select" === tagName ? console.error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set `onChange`.") : console.error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.")); + props.onChange || props.readOnly || props.disabled || null == props.checked || console.error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`."); + } + function isAttributeNameSafe(attributeName) { + if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) return !0; + if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1; + if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) return validatedAttributeNameCache[attributeName] = !0; + illegalAttributeNameCache[attributeName] = !0; + console.error("Invalid attribute name: `%s`", attributeName); + return !1; + } + function getValueForAttributeOnCustomComponent(node, name, expected) { + if (isAttributeNameSafe(name)) { + if (!node.hasAttribute(name)) { + switch (typeof expected) { + case "symbol": + case "object": return expected; + case "function": return expected; + case "boolean": if (!1 === expected) return expected; + } + return void 0 === expected ? void 0 : null; + } + node = node.getAttribute(name); + if ("" === node && !0 === expected) return !0; + checkAttributeStringCoercion(expected, name); + return node === "" + expected ? expected : node; + } + } + function setValueForAttribute(node, name, value) { + if (isAttributeNameSafe(name)) if (null === value) node.removeAttribute(name); + else { + switch (typeof value) { + case "undefined": + case "function": + case "symbol": + node.removeAttribute(name); + return; + case "boolean": + var prefix = name.toLowerCase().slice(0, 5); + if ("data-" !== prefix && "aria-" !== prefix) { + node.removeAttribute(name); + return; + } + } + checkAttributeStringCoercion(value, name); + node.setAttribute(name, "" + value); + } + } + function setValueForKnownAttribute(node, name, value) { + if (null === value) node.removeAttribute(name); + else { + switch (typeof value) { + case "undefined": + case "function": + case "symbol": + case "boolean": + node.removeAttribute(name); + return; + } + checkAttributeStringCoercion(value, name); + node.setAttribute(name, "" + value); + } + } + function setValueForNamespacedAttribute(node, namespace, name, value) { + if (null === value) node.removeAttribute(name); + else { + switch (typeof value) { + case "undefined": + case "function": + case "symbol": + case "boolean": + node.removeAttribute(name); + return; + } + checkAttributeStringCoercion(value, name); + node.setAttributeNS(namespace, name, "" + value); + } + } + function getToStringValue(value) { + switch (typeof value) { + case "bigint": + case "boolean": + case "number": + case "string": + case "undefined": return value; + case "object": return checkFormFieldValueStringCoercion(value), value; + default: return ""; + } + } + function isCheckable(elem) { + var type = elem.type; + return (elem = elem.nodeName) && "input" === elem.toLowerCase() && ("checkbox" === type || "radio" === type); + } + function trackValueOnNode(node, valueField, currentValue) { + var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField); + if (!node.hasOwnProperty(valueField) && "undefined" !== typeof descriptor && "function" === typeof descriptor.get && "function" === typeof descriptor.set) { + var get = descriptor.get, set = descriptor.set; + Object.defineProperty(node, valueField, { + configurable: !0, + get: function() { + return get.call(this); + }, + set: function(value) { + checkFormFieldValueStringCoercion(value); + currentValue = "" + value; + set.call(this, value); + } + }); + Object.defineProperty(node, valueField, { enumerable: descriptor.enumerable }); + return { + getValue: function() { + return currentValue; + }, + setValue: function(value) { + checkFormFieldValueStringCoercion(value); + currentValue = "" + value; + }, + stopTracking: function() { + node._valueTracker = null; + delete node[valueField]; + } + }; + } + } + function track(node) { + if (!node._valueTracker) { + var valueField = isCheckable(node) ? "checked" : "value"; + node._valueTracker = trackValueOnNode(node, valueField, "" + node[valueField]); + } + } + function updateValueIfChanged(node) { + if (!node) return !1; + var tracker = node._valueTracker; + if (!tracker) return !0; + var lastValue = tracker.getValue(); + var value = ""; + node && (value = isCheckable(node) ? node.checked ? "true" : "false" : node.value); + node = value; + return node !== lastValue ? (tracker.setValue(node), !0) : !1; + } + function getActiveElement(doc) { + doc = doc || ("undefined" !== typeof document ? document : void 0); + if ("undefined" === typeof doc) return null; + try { + return doc.activeElement || doc.body; + } catch (e) { + return doc.body; + } + } + function escapeSelectorAttributeValueInsideDoubleQuotes(value) { + return value.replace(escapeSelectorAttributeValueInsideDoubleQuotesRegex, function(ch) { + return "\\" + ch.charCodeAt(0).toString(16) + " "; + }); + } + function validateInputProps(element, props) { + void 0 === props.checked || void 0 === props.defaultChecked || didWarnCheckedDefaultChecked || (console.error("%s contains an input of type %s with both checked and defaultChecked props. Input elements must be either controlled or uncontrolled (specify either the checked prop, or the defaultChecked prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components", getCurrentFiberOwnerNameInDevOrNull() || "A component", props.type), didWarnCheckedDefaultChecked = !0); + void 0 === props.value || void 0 === props.defaultValue || didWarnValueDefaultValue$1 || (console.error("%s contains an input of type %s with both value and defaultValue props. Input elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components", getCurrentFiberOwnerNameInDevOrNull() || "A component", props.type), didWarnValueDefaultValue$1 = !0); + } + function updateInput(element, value, defaultValue, lastDefaultValue, checked, defaultChecked, type, name) { + element.name = ""; + null != type && "function" !== typeof type && "symbol" !== typeof type && "boolean" !== typeof type ? (checkAttributeStringCoercion(type, "type"), element.type = type) : element.removeAttribute("type"); + if (null != value) if ("number" === type) { + if (0 === value && "" === element.value || element.value != value) element.value = "" + getToStringValue(value); + } else element.value !== "" + getToStringValue(value) && (element.value = "" + getToStringValue(value)); + else "submit" !== type && "reset" !== type || element.removeAttribute("value"); + null != value ? setDefaultValue(element, type, getToStringValue(value)) : null != defaultValue ? setDefaultValue(element, type, getToStringValue(defaultValue)) : null != lastDefaultValue && element.removeAttribute("value"); + null == checked && null != defaultChecked && (element.defaultChecked = !!defaultChecked); + null != checked && (element.checked = checked && "function" !== typeof checked && "symbol" !== typeof checked); + null != name && "function" !== typeof name && "symbol" !== typeof name && "boolean" !== typeof name ? (checkAttributeStringCoercion(name, "name"), element.name = "" + getToStringValue(name)) : element.removeAttribute("name"); + } + function initInput(element, value, defaultValue, checked, defaultChecked, type, name, isHydrating) { + null != type && "function" !== typeof type && "symbol" !== typeof type && "boolean" !== typeof type && (checkAttributeStringCoercion(type, "type"), element.type = type); + if (null != value || null != defaultValue) { + if (!("submit" !== type && "reset" !== type || void 0 !== value && null !== value)) { + track(element); + return; + } + defaultValue = null != defaultValue ? "" + getToStringValue(defaultValue) : ""; + value = null != value ? "" + getToStringValue(value) : defaultValue; + isHydrating || value === element.value || (element.value = value); + element.defaultValue = value; + } + checked = null != checked ? checked : defaultChecked; + checked = "function" !== typeof checked && "symbol" !== typeof checked && !!checked; + element.checked = isHydrating ? element.checked : !!checked; + element.defaultChecked = !!checked; + null != name && "function" !== typeof name && "symbol" !== typeof name && "boolean" !== typeof name && (checkAttributeStringCoercion(name, "name"), element.name = name); + track(element); + } + function setDefaultValue(node, type, value) { + "number" === type && getActiveElement(node.ownerDocument) === node || node.defaultValue === "" + value || (node.defaultValue = "" + value); + } + function validateOptionProps(element, props) { + props.value ?? ("object" === typeof props.children && null !== props.children ? React.Children.forEach(props.children, function(child) { + null == child || "string" === typeof child || "number" === typeof child || "bigint" === typeof child || didWarnInvalidChild || (didWarnInvalidChild = !0, console.error("Cannot infer the option value of complex children. Pass a `value` prop or use a plain string as children to