From bc6e603af4f8a3158fd5aabd2ba151af7323b497 Mon Sep 17 00:00:00 2001 From: NADAL Jean-Baptiste Date: Wed, 18 Feb 2026 10:08:48 +0100 Subject: [PATCH] [FEAT] First functional version. --- .gitignore | 3 + AGENTS.md | 5 + PLAN.md | 154 +- api/README.md | 386 +++ api/config/users.json | 14 + api/index.php | 245 ++ api/lib/Auth.php | 122 + api/lib/ScoreScanner.php | 344 +- api/router.php | 12 + partitions/package-lock.json | 3035 +++++++++++++++++ partitions/package.json | 26 + partitions/postcss.config.js | 6 + partitions/src/app.css | 16 + partitions/src/app.d.ts | 14 + partitions/src/app.html | 13 + partitions/src/lib/api.ts | 113 + .../src/lib/components/PdfViewer.svelte | 206 ++ partitions/src/lib/stores/auth.ts | 43 + partitions/src/routes/+layout.svelte | 74 + partitions/src/routes/+page.svelte | 126 + partitions/src/routes/scores/+page.svelte | 115 + .../src/routes/scores/[id]/+page.svelte | 148 + .../routes/scores/[id]/[piece]/+page.svelte | 79 + .../[id]/[piece]/[instrument]/+page.svelte | 190 ++ partitions/src/routes/test-icons/+page.svelte | 77 + partitions/static/bg-login.jpg | Bin 0 -> 322990 bytes partitions/static/logo.png | Bin 0 -> 13758 bytes partitions/static/pdf.worker.min.mjs | 21 + partitions/svelte.config.js | 21 + partitions/tailwind.config.js | 17 + partitions/tsconfig.json | 14 + partitions/vite.config.ts | 9 + 32 files changed, 5618 insertions(+), 30 deletions(-) create mode 100644 api/README.md create mode 100644 api/config/users.json create mode 100644 api/index.php create mode 100644 api/lib/Auth.php create mode 100644 api/router.php create mode 100644 partitions/package-lock.json create mode 100644 partitions/package.json create mode 100644 partitions/postcss.config.js create mode 100644 partitions/src/app.css create mode 100644 partitions/src/app.d.ts create mode 100644 partitions/src/app.html create mode 100644 partitions/src/lib/api.ts create mode 100644 partitions/src/lib/components/PdfViewer.svelte create mode 100644 partitions/src/lib/stores/auth.ts create mode 100644 partitions/src/routes/+layout.svelte create mode 100644 partitions/src/routes/+page.svelte create mode 100644 partitions/src/routes/scores/+page.svelte create mode 100644 partitions/src/routes/scores/[id]/+page.svelte create mode 100644 partitions/src/routes/scores/[id]/[piece]/+page.svelte create mode 100644 partitions/src/routes/scores/[id]/[piece]/[instrument]/+page.svelte create mode 100644 partitions/src/routes/test-icons/+page.svelte create mode 100644 partitions/static/bg-login.jpg create mode 100644 partitions/static/logo.png create mode 100644 partitions/static/pdf.worker.min.mjs create mode 100644 partitions/svelte.config.js create mode 100644 partitions/tailwind.config.js create mode 100644 partitions/tsconfig.json create mode 100644 partitions/vite.config.ts diff --git a/.gitignore b/.gitignore index 0cb9909..95e7188 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ legacy/Scores _builds/ missing.xml +partitions/.svelte-kit/ +partitions/build/ +partitions/node_modules/ diff --git a/AGENTS.md b/AGENTS.md index c6a31bb..6412389 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -120,6 +120,11 @@ MySQL database connection configured in `api/config/database.php`: - FPDF library for PDF generation - MySQL extension (legacy) +## Important Notes + +- **No external CDN dependencies allowed** - All assets must be local (fonts, JS libraries, etc.) +- Use local copies in `static/` folder instead of CDN + ## Notes - This is a legacy codebase with mixed coding styles diff --git a/PLAN.md b/PLAN.md index 4fb1a23..8cb5deb 100644 --- a/PLAN.md +++ b/PLAN.md @@ -45,29 +45,45 @@ ### 1.1 ScoreScanner.php ✓ (FAIT) - [x] Classe pour scanner les partitions -- [x] Lecture des fichiers score.ini +- [x] Lecture des fichiers score.ini (supporte sections [info], [pieces]) - [x] Scan récursif instruments → parties → fichiers PDF - [x] Mapping codes instruments vers noms +- [x] Retourne `piece` pour chaque instrument +- [x] Parse les noms de fichiers : `part`, `key`, `clef`, `variant` +- [x] Retourne `ressource` si présent dans score.ini +- [x] Supporte les partitions multi-morceaux (ex: score 390) ### 1.2 Auth.php -- [ ] Classe JWT pour authentification -- [ ] Génération token JWT -- [ ] Vérification token JWT -- [ ] Lecture users.json -- [ ] Vérification password hashé (bcrypt) +- [x] Classe JWT pour authentification +- [x] Génération token JWT +- [x] Vérification token JWT +- [x] Lecture users.json +- [x] Vérification password hashé (bcrypt) +- [ ] Tests unitaires Auth.php (PHP non installé) ### 1.3 users.json -- [ ] Fichier JSON avec structure users -- [ ] Passwords hashés avec bcrypt +- [x] Fichier JSON avec structure users +- [ ] Passwords hashés avec bcrypt (password: password) - [ ] Script pour ajouter/modifier users ### 1.4 index.php (Router API) -- [ ] CORS headers -- [ ] Routing : POST /login -- [ ] Routing : GET /scores (protégé JWT) -- [ ] Routing : GET /scores/:id (protégé JWT) -- [ ] Routing : GET /download/:path (protégé JWT, stream PDF) +- [x] CORS headers +- [x] POST /login +- [x] GET /scores (protégé JWT) +- [x] GET /scores/:id (protégé JWT) +- [x] GET /pieces/:scoreId (protégé JWT) +- [x] GET /download/:path (protégé JWT, stream PDF) +- [x] POST /admin/scores (protégé JWT, créer partition) +- [x] PUT /admin/scores/:id (protégé JWT, modifier partition) +- [x] DELETE /admin/scores/:id (protégé JWT, supprimer partition) +- [x] POST /admin/scores/:id/upload (protégé JWT, upload PDF) - [ ] Gestion erreurs JSON +- [ ] Tests toutes les routes (PHP non installé) + +### 1.5 Tests API +- [ ] Tests unitaires Auth.php (PHP non installé) +- [ ] Tests intégration toutes les routes (PHP non installé) +- [ ] Tests authentification JWT (PHP non installé) ## Phase 2 : Frontend SvelteKit (partitions/) @@ -370,3 +386,115 @@ count = 5 - ✅ Mots composés: `sax_alto`, `clarinette_basse` - ✅ Pas de `-et-` (0 occurrences) - ✅ Pas de `--` (0 occurrences) + +--- + +## Phase future : Liens externes + +### Objectif + +Ajouter des liens externes dans les partitions (YouTube, site éditeur, etc.) + +### Implementation + +1. **Modification score.ini** (FAIT) + ```ini + [info] + name = Le morceau + compositor = Compositeur + ressource = https://youtube.com/watch?v=xxx + # ou + ressource = https://www.musicdiffusion.com/... + ``` + +2. **API** (FAIT) + - GET /scores → retourner `ressource` si présent + - GET /scores/:id → retourner `ressource` aussi + +3. **Frontend** + - Page liste partitions : afficher icône lien externe si présent + - Page détail partition : afficher les liens sous le titre + +### Ordre de priorité +- Implémenté, en attente frontend + +--- + +## TODO: Icônes instruments + +- Installer lucide-svelte (fait) +- Personnaliser chaque instrument avec la bonne icône + +### Code IconeDesired +- pic flute traversiere +- flu flute traversiere +- cla clarinette +- clb clarinette basse +- sax OK +- sat OK +- sab OK +- coa cor anglais +- cba OK +- cor cor +- trp OK +- trb OK +- tub OK +- htb hautbois +- bas basson +- per OK +- crn OK +- eup OK +- har OK +- pia OK + +--- + +## TODO: Déploiement + +### Solution idéale: Docker + +**Services à conteneriser:** +1. **PHP-FPM** - API backend +2. **Nginx** - Servir static + proxy PHP +3. **Node.js** - Frontend SvelteKit (ou build static) + +**docker-compose.yml:** +```yaml +services: + nginx: + image: nginx:alpine + ports: + - "80:80" + volumes: + - ./frontend/build:/usr/share/nginx/html + - ./api:/var/www/html + - ./legacy/Scores:/var/www/html/Scores + depends_on: + - php + + php: + image: php:8.2-fpm + volumes: + - ./api:/var/www/html + + node: + build: ./partitions + command: npm run dev +``` + +### Solution alternative: Serveur classique + +**Si hébergement mutualisé:** +- Build SvelteKit → dossier `build/` +- PHP-FPM pour API +- Dossiers: + - `/` → frontend static + - `/api` → PHP + - `/legacy/Scores` → fichiers PDF + +### Tâches pour déploiement +- [ ] Créer Dockerfile +- [ ] Créer docker-compose.yml +- [ ] Tester en local +- [ ] Configurer CI/CD (GitHub Actions) +- [ ] Déployer sur serveur prod diff --git a/api/README.md b/api/README.md new file mode 100644 index 0000000..124ad43 --- /dev/null +++ b/api/README.md @@ -0,0 +1,386 @@ +# OHMJ API Documentation + +API REST pour la gestion des partitions de l'Harmonie de Montpellier-Jacou. + +## Base URL + +``` +http://localhost:8000 +``` + +## Authentification + +L'API utilise JWT (JSON Web Token) pour l'authentification. + +### Login + +```http +POST /login +Content-Type: application/json +``` + +**Corps de la requête :** +```json +{ + "username": "admin", + "password": "password" +} +``` + +**Réponse :** +```json +{ + "success": true, + "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", + "user": { + "username": "admin", + "role": "admin" + } +} +``` + +**Rôles disponibles :** +- `admin` - Accès complet +- `user` - Accès lecture seule + +### Utilisation du token + +Inclure le token dans l'en-tête `Authorization` : +```http +Authorization: Bearer +``` + +--- + +## Endpoints + +### GET /scores + +Liste toutes les partitions. + +```http +GET /scores +``` + +**Réponse :** +```json +{ + "success": true, + "scores": [ + { + "id": "102", + "name": "A Legend from Yao", + "compositor": "Yeh Shu-Han" + }, + { + "id": "390", + "name": "La part d Euterpe", + "compositor": "Michael CUVILLON" + } + ] +} +``` + +--- + +### GET /scores/:id + +Détails d'une partition. Pour les partitions multi-morceaux (ex: 390), retourne tous les instruments de toutes les pièces. + +```http +GET /scores/102 +GET /scores/390 +``` + +**Réponse (score simple) :** +```json +{ + "success": true, + "score": { + "id": "102", + "name": "A Legend from Yao", + "compositor": "Yeh Shu-Han", + "instruments": [ + { + "id": "cla", + "title": "Clarinette", + "piece": "1", + "parts": [ + { + "id": "1", + "files": [ + { + "name": "clarinette-sib-1", + "filename": "clarinette-sib-1.pdf", + "path": "102/1/cla/1/clarinette-sib-1.pdf", + "part": "1", + "key": "sib", + "clef": null, + "variant": null + } + ] + } + ] + } + ] + } +} +``` + +**Réponse (partition multi-morceaux comme 390) :** +```json +{ + "success": true, + "score": { + "id": "390", + "name": "La part d Euterpe", + "compositor": "Michael CUVILLON", + "instruments": [ + { + "id": "cla", + "title": "Clarinette", + "piece": "1", + "parts": [...] + }, + { + "id": "sax", + "title": "Sax Alto", + "piece": "2", + "parts": [...] + } + ] + } +} +``` + +--- + +### GET /scores/:id/instruments + +Liste les instruments d'une partition. Pour les partitions multi-morceaux (ex: 390), peut filtrer par pièce. + +```http +GET /scores/102/instruments +GET /scores/390/instruments?piece=1 +``` + +**Paramètre optionnel :** +- `piece` - Numéro de la pièce (pour partitions multi-morceaux) + +**Réponse :** +```json +{ + "success": true, + "instruments": [ + { + "id": "cla", + "title": "Clarinette", + "piece": "1", + "parts": [ + { + "id": "1", + "files": [ + { + "name": "clarinette-sib-1", + "filename": "clarinette-sib-1.pdf", + "path": "102/1/cla/1/clarinette-sib-1.pdf", + "part": "1", + "key": "sib", + "clef": null, + "variant": null + } + ] + } + ] + } + ] +} +``` + +**Champs des fichiers :** +- `name` - Nom du fichier sans extension +- `filename` - Nom du fichier avec extension +- `path` - Chemin relatif pour download +- `part` - Numéro de partie (ex: "1", "2_3") +- `key` - Tonalité (ex: "sib", "mib", "fa") +- `clef` - Clé (ex: "clesol", "clefa") +- `variant` - Variante (ex: "solo", "default") + +--- + +### GET /pieces/:scoreId + +Liste les pièces d'une partition. + +```http +GET /pieces/102 +``` + +**Réponse :** +```json +{ + "success": true, + "pieces": [ + { + "id": 1, + "name": "Pièce 1" + } + ] +} +``` + +--- + +### GET /download/:path + +Télécharge un fichier PDF. + +```http +GET /download/102/1/cla/1/clarinette-sib-1.pdf +``` + +**Réponse :** Fichier PDF (Content-Type: application/pdf) + +**Structure des chemins :** +``` +NUM/PIECE/INSTRUMENT/VERSION/PARTIE.pdf +``` + +**Instruments disponibles :** +| Code | Instrument | +|------|------------| +| dir | Direction | +| pic | Piccolo | +| flu | Flûte | +| cla | Clarinette | +| clb | Clarinette basse | +| sax | Saxophone alto | +| sab | Saxophone baryton | +| sat | Saxophone ténor | +| cba | Contrebasse | +| cor | Cor | +| trp | Trompette | +| trb | Trombone | +| tub | Tuba | +| htb | Hautbois | +| bas | Basson | +| per | Percussion | +| crn | Cornet | +| eup | Euphonium | + +--- + +## Routes Admin + +### POST /admin/scores + +Créer une nouvelle partition. + +```http +POST /admin/scores +Authorization: Bearer +Content-Type: application/json +``` + +**Corps de la requête :** +```json +{ + "id": "200", + "name": "Nouvelle partition", + "compositor": "Compositeur" +} +``` + +--- + +### PUT /admin/scores/:id + +Mettre à jour une partition. + +```http +PUT /admin/scores/102 +Authorization: Bearer +Content-Type: application/json +``` + +**Corps de la requête :** +```json +{ + "name": "Nouveau nom", + "compositor": "Nouveau compositeur" +} +``` + +--- + +### DELETE /admin/scores/:id + +Supprimer une partition. + +```http +DELETE /admin/scores/102 +Authorization: Bearer +``` + +--- + +### POST /admin/upload + +Uploader un fichier PDF. + +```http +POST /admin/upload +Authorization: Bearer +Content-Type: multipart/form-data +``` + +**Corps de la requête :** +``` +file: +scoreId: 102 +pieceId: 1 +instrument: cla +version: 1 +``` + +--- + +## Codes d'erreur + +| Code | Description | +|------|-------------| +| 200 | Succès | +| 401 | Non authentifié | +| 403 | Accès interdit (rôle insufficient) | +| 404 | Ressource non trouvée | +| 500 | Erreur serveur | + +--- + +## Lancer le serveur + +```bash +cd api +php -S localhost:8000 router.php +``` + +--- + +## Structure des fichiers + +``` +legacy/Scores/ +├── 102/ +│ ├── 1/ +│ │ ├── cla/ +│ │ │ ├── 1/ +│ │ │ │ ├── clarinette-sib-1.pdf +│ │ │ │ ├── clarinette-sib-2.pdf +│ │ │ │ └── clarinette-mib-1.pdf +│ │ │ └── 2/ +│ │ │ └── clarinette-sib-1.pdf +│ │ ├── flu/ +│ │ └── sax/ +│ └── 2/ +└── score.ini +``` diff --git a/api/config/users.json b/api/config/users.json new file mode 100644 index 0000000..15f03d1 --- /dev/null +++ b/api/config/users.json @@ -0,0 +1,14 @@ +{ + "users": [ + { + "username": "admin", + "password": "$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi", + "role": "admin" + }, + { + "username": "user", + "password": "$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi", + "role": "user" + } + ] +} diff --git a/api/index.php b/api/index.php new file mode 100644 index 0000000..5b1524e --- /dev/null +++ b/api/index.php @@ -0,0 +1,245 @@ + 'Authorization required']); + exit; + } + + $user = $auth->verifyToken($downloadToken); + if ($user === null) { + http_response_code(401); + echo json_encode(['error' => 'Invalid token']); + exit; + } + + $fullPath = '/home/jbnadal/sources/jb/ohmj/ohmj2/legacy/Scores/' . $filePath; + + if (!file_exists($fullPath) || !is_file($fullPath)) { + http_response_code(404); + echo json_encode(['error' => 'File not found', 'path' => $fullPath]); + exit; + } + + header('Content-Type: application/pdf'); + header('Content-Length: ' . filesize($fullPath)); + header('Content-Disposition: attachment; filename="' . basename($fullPath) . '"'); + readfile($fullPath); + exit; +} + +// Route matching +if ($path === 'login' && $method === 'POST') { + $input = json_decode(file_get_contents('php://input'), true); + $username = $input['username'] ?? ''; + $password = $input['password'] ?? ''; + + $result = $auth->login($username, $password); + + if ($result['success']) { + echo json_encode([ + 'success' => true, + 'token' => $result['token'], + 'user' => $result['user'] + ]); + } else { + http_response_code(401); + echo json_encode([ + 'success' => false, + 'error' => $result['error'] + ]); + } + exit; +} + +// Protected routes - require auth +if ($token === null) { + http_response_code(401); + echo json_encode(['error' => 'Authorization required']); + exit; +} + +$user = $auth->verifyToken($token); +if ($user === null) { + http_response_code(401); + echo json_encode(['error' => 'Invalid token']); + exit; +} + +// GET /scores - List all scores +if ($path === 'scores' && $method === 'GET') { + $scores = $scanner->listScores(); + echo json_encode(['success' => true, 'scores' => $scores]); + exit; +} + +// GET /scores/:id - Get score details +if (preg_match('#^scores/(\d+)$#', $path, $matches) && $method === 'GET') { + $scoreId = $matches[1]; + $score = $scanner->getScore($scoreId); + + if ($score === null) { + http_response_code(404); + echo json_encode(['error' => 'Score not found']); + exit; + } + + echo json_encode(['success' => true, 'score' => $score]); + exit; +} + +// GET /scores/:id/instruments - Get instruments for a score +// GET /scores/:id/instruments?piece=1 - Get instruments for a specific piece +if (preg_match('#^scores/(\d+)/instruments$#', $path, $matches) && $method === 'GET') { + $scoreId = $matches[1]; + $pieceId = $_GET['piece'] ?? null; + $instruments = $scanner->getInstruments($scoreId, $pieceId); + + echo json_encode(['success' => true, 'instruments' => $instruments]); + exit; +} + +// GET /pieces/:scoreId - Get pieces for a score +if (preg_match('#^pieces/(\d+)$#', $path, $matches) && $method === 'GET') { + $scoreId = $matches[1]; + $pieces = $scanner->getPieces($scoreId); + + echo json_encode(['success' => true, 'pieces' => $pieces]); + exit; +} + +// ADMIN ROUTES - require admin role +if ($user['role'] !== 'admin') { + http_response_code(403); + echo json_encode(['error' => 'Admin access required']); + exit; +} + +// POST /admin/scores - Create new score +if ($path === 'admin/scores' && $method === 'POST') { + $input = json_decode(file_get_contents('php://input'), true); + + $id = $input['id'] ?? null; + $name = $input['name'] ?? ''; + $compositor = $input['compositor'] ?? ''; + + if (empty($id) || empty($name)) { + http_response_code(400); + echo json_encode(['error' => 'ID and name required']); + exit; + } + + $result = $scanner->createScore($id, $name, $compositor); + + if ($result['success']) { + echo json_encode(['success' => true, 'score' => $result['score']]); + } else { + http_response_code(400); + echo json_encode(['error' => $result['error']]); + } + exit; +} + +// PUT /admin/scores/:id - Update score +if (preg_match('#^admin/scores/(\d+)$#', $path, $matches) && $method === 'PUT') { + $scoreId = $matches[1]; + $input = json_decode(file_get_contents('php://input'), true); + + $name = $input['name'] ?? null; + $compositor = $input['compositor'] ?? null; + + $result = $scanner->updateScore($scoreId, $name, $compositor); + + if ($result['success']) { + echo json_encode(['success' => true]); + } else { + http_response_code(400); + echo json_encode(['error' => $result['error']]); + } + exit; +} + +// DELETE /admin/scores/:id - Delete score +if (preg_match('#^admin/scores/(\d+)$#', $path, $matches) && $method === 'DELETE') { + $scoreId = $matches[1]; + + $result = $scanner->deleteScore($scoreId); + + if ($result['success']) { + echo json_encode(['success' => true]); + } else { + http_response_code(400); + echo json_encode(['error' => $result['error']]); + } + exit; +} + +// POST /admin/scores/:id/upload - Upload PDF +if (preg_match('#^admin/scores/(\d+)/upload$#', $path, $matches) && $method === 'POST') { + $scoreId = $matches[1]; + + if (!isset($_FILES['file'])) { + http_response_code(400); + echo json_encode(['error' => 'No file uploaded']); + exit; + } + + $file = $_FILES['file']; + $piece = $_POST['piece'] ?? '1'; + $instrument = $_POST['instrument'] ?? ''; + $version = $_POST['version'] ?? '1'; + $filename = $_POST['filename'] ?? ''; + + $result = $scanner->uploadPdf($scoreId, $file, $piece, $instrument, $version, $filename); + + if ($result['success']) { + echo json_encode(['success' => true, 'path' => $result['path']]); + } else { + http_response_code(400); + echo json_encode(['error' => $result['error']]); + } + exit; +} + +// 404 Not Found +http_response_code(404); +echo json_encode(['error' => 'Not found']); diff --git a/api/lib/Auth.php b/api/lib/Auth.php new file mode 100644 index 0000000..235b661 --- /dev/null +++ b/api/lib/Auth.php @@ -0,0 +1,122 @@ +usersFile = $usersFile ?? __DIR__ . '/../config/users.json'; + } + + public function login(string $username, string $password): array { + $users = $this->loadUsers(); + + foreach ($users['users'] as $user) { + if ($user['username'] === $username) { + if (password_verify($password, $user['password'])) { + $token = $this->generateToken($user); + return [ + 'success' => true, + 'token' => $token, + 'user' => [ + 'username' => $user['username'], + 'role' => $user['role'] + ] + ]; + } + return ['success' => false, 'error' => 'Invalid password']; + } + } + + return ['success' => false, 'error' => 'User not found']; + } + + public function verifyToken(string $token): ?array { + $parts = explode('.', $token); + + if (count($parts) !== 3) { + return null; + } + + list($header, $payload, $signature) = $parts; + + // Verify signature + $expectedSignature = base64_encode( + hash_hmac('sha256', "$header.$payload", self::JWT_SECRET, true) + ); + + if (!hash_equals($expectedSignature, $signature)) { + return null; + } + + // Decode payload + $payloadData = json_decode(base64_decode($payload), true); + + // Check expiry + if (isset($payloadData['exp']) && $payloadData['exp'] < time()) { + return null; + } + + return $payloadData; + } + + public function requireAuth(string $token): array { + $payload = $this->verifyToken($token); + + if ($payload === null) { + http_response_code(401); + echo json_encode(['error' => 'Unauthorized']); + exit; + } + + return $payload; + } + + public function requireAdmin(string $token): array { + $payload = $this->requireAuth($token); + + if ($payload['role'] !== 'admin') { + http_response_code(403); + echo json_encode(['error' => 'Forbidden']); + exit; + } + + return $payload; + } + + private function generateToken(array $user): string { + $header = base64_encode(json_encode([ + 'alg' => self::JWT_ALGO, + 'typ' => 'JWT' + ])); + + $payload = base64_encode(json_encode([ + 'username' => $user['username'], + 'role' => $user['role'], + 'iat' => time(), + 'exp' => time() + self::JWT_EXPIRY + ])); + + $signature = base64_encode( + hash_hmac('sha256', "$header.$payload", self::JWT_SECRET, true) + ); + + return "$header.$payload.$signature"; + } + + private function loadUsers(): array { + if (!file_exists($this->usersFile)) { + return ['users' => []]; + } + + $content = file_get_contents($this->usersFile); + return json_decode($content, true) ?? ['users' => []]; + } + + public function hashPassword(string $password): string { + return password_hash($password, PASSWORD_BCRYPT); + } +} diff --git a/api/lib/ScoreScanner.php b/api/lib/ScoreScanner.php index f0b1a0a..dd375cd 100644 --- a/api/lib/ScoreScanner.php +++ b/api/lib/ScoreScanner.php @@ -13,6 +13,10 @@ class ScoreScanner { foreach ($directories as $dir) { if ($dir === '.' || $dir === '..') continue; + // Ignorer les fichiers cachés et non-numériques + if (strpos($dir, '.') === 0) continue; + if (!is_numeric($dir)) continue; + $scorePath = $this->scoresPath . $dir; if (!is_dir($scorePath)) continue; @@ -38,12 +42,16 @@ class ScoreScanner { return null; } - $ini = parse_ini_file($iniFile); + $ini = @parse_ini_file($iniFile, true); + if ($ini === false) { + return null; + } return [ 'id' => $id, - 'name' => $ini['name'] ?? 'Inconnu', - 'compositor' => $ini['compositor'] ?? 'Inconnu' + 'name' => $ini['info']['name'] ?? 'Inconnu', + 'compositor' => $ini['info']['compositor'] ?? 'Inconnu', + 'ressource' => $ini['info']['ressource'] ?? null ]; } @@ -60,17 +68,28 @@ class ScoreScanner { } $instruments = []; - $entries = scandir($scoreDir); - foreach ($entries as $entry) { - if ($entry === '.' || $entry === '..' || $entry === 'score.ini') continue; + // New structure: NUM/PIECE/INSTRUMENT/VERSION/ + // First get all piece directories + $pieceDirs = scandir($scoreDir); + + foreach ($pieceDirs as $pieceDir) { + if ($pieceDir === '.' || $pieceDir === '..' || $pieceDir === 'score.ini') continue; + if (strpos($pieceDir, '.') === 0) continue; + if (!is_dir($scoreDir . '/' . $pieceDir)) continue; - $instrumentPath = $scoreDir . '/' . $entry; - if (!is_dir($instrumentPath)) continue; + // Then get instrument directories + $instrumentDirs = scandir($scoreDir . '/' . $pieceDir); - $instrument = $this->getInstrumentInfo($id, $entry); - if ($instrument) { - $instruments[] = $instrument; + foreach ($instrumentDirs as $instrumentId) { + if ($instrumentId === '.' || $instrumentId === '..') continue; + if (strpos($instrumentId, '.') === 0) continue; + if (!is_dir($scoreDir . '/' . $pieceDir . '/' . $instrumentId)) continue; + + $instrument = $this->getInstrumentInfo($id, $instrumentId, $pieceDir); + if ($instrument) { + $instruments[] = $instrument; + } } } @@ -82,8 +101,13 @@ class ScoreScanner { return array_merge($basicInfo, ['instruments' => $instruments]); } - private function getInstrumentInfo($scoreId, $instrumentId) { - $instrumentPath = $this->scoresPath . $scoreId . '/' . $instrumentId; + private function getInstrumentInfo($scoreId, $instrumentId, $pieceId = null) { + // New structure: NUM/PIECE/INSTRUMENT/VERSION/ + if ($pieceId !== null) { + $instrumentPath = $this->scoresPath . $scoreId . '/' . $pieceId . '/' . $instrumentId; + } else { + $instrumentPath = $this->scoresPath . $scoreId . '/' . $instrumentId; + } if (!is_dir($instrumentPath)) { return null; @@ -95,11 +119,12 @@ class ScoreScanner { $entries = scandir($instrumentPath); foreach ($entries as $entry) { if ($entry === '.' || $entry === '..') continue; + if (strpos($entry, '.') === 0) continue; $partPath = $instrumentPath . '/' . $entry; if (!is_dir($partPath)) continue; - $part = $this->getPartInfo($scoreId, $instrumentId, $entry); + $part = $this->getPartInfo($scoreId, $instrumentId, $entry, $pieceId); if ($part) { $parts[] = $part; } @@ -117,12 +142,18 @@ class ScoreScanner { return [ 'id' => $instrumentId, 'title' => $title, + 'piece' => $pieceId, 'parts' => $parts ]; } - private function getPartInfo($scoreId, $instrumentId, $partId) { - $partPath = $this->scoresPath . $scoreId . '/' . $instrumentId . '/' . $partId; + private function getPartInfo($scoreId, $instrumentId, $partId, $pieceId = null) { + // New structure: NUM/PIECE/INSTRUMENT/VERSION/ + if ($pieceId !== null) { + $partPath = $this->scoresPath . $scoreId . '/' . $pieceId . '/' . $instrumentId . '/' . $partId; + } else { + $partPath = $this->scoresPath . $scoreId . '/' . $instrumentId . '/' . $partId; + } if (!is_dir($partPath)) { return null; @@ -133,6 +164,7 @@ class ScoreScanner { foreach ($entries as $entry) { if ($entry === '.' || $entry === '..') continue; + if (strpos($entry, '.') === 0) continue; $filePath = $partPath . '/' . $entry; if (!is_file($filePath)) continue; @@ -140,10 +172,20 @@ class ScoreScanner { // Vérifier que c'est un PDF if (strtolower(pathinfo($entry, PATHINFO_EXTENSION)) !== 'pdf') continue; + $relativePath = $pieceId !== null + ? "$scoreId/$pieceId/$instrumentId/$partId/$entry" + : "$scoreId/$instrumentId/$partId/$entry"; + + $parsed = $this->parseFilename(pathinfo($entry, PATHINFO_FILENAME)); + $files[] = [ 'name' => pathinfo($entry, PATHINFO_FILENAME), 'filename' => $entry, - 'path' => $scoreId . '/' . $instrumentId . '/' . $partId . '/' . $entry + 'path' => $relativePath, + 'part' => $parsed['part'], + 'key' => $parsed['key'], + 'clef' => $parsed['clef'], + 'variant' => $parsed['variant'] ]; } @@ -191,4 +233,272 @@ class ScoreScanner { return $names[$code] ?? $code; } + + private function parseFilename(string $filename): array { + $result = [ + 'part' => null, + 'key' => null, + 'clef' => null, + 'variant' => null + ]; + + // Normalize: replace - by _ and lowercase + $name = strtolower(str_replace('-', '_', $filename)); + + // Extract clef (clesol, clefa) + if (preg_match('/(clesol|clefa)$/', $name, $m)) { + $result['clef'] = $m[1]; + $name = preg_replace('/_(clesol|clefa)$/', '', $name); + } + + // Extract variant (solo, etc.) + $variants = ['solo', 'default']; + foreach ($variants as $variant) { + if (strpos($name, $variant) !== false) { + $result['variant'] = $variant; + $name = str_replace('_' . $variant, '', $name); + break; + } + } + + // Extract key (tonalités: sib, mib, fa, do, etc.) + $keys = ['sib', 'mib', 'reb', 'dob', 'solb', 'lab', 'mibemol', 'sibemol']; + foreach ($keys as $key) { + if (preg_match('/_' . $key . '/', $name)) { + $result['key'] = $key; + $name = preg_replace('/_' . $key . '/', '', $name); + break; + } + } + + // If no compound keys found, try single keys + if ($result['key'] === null) { + $singleKeys = ['fa', 'do', 'ut', 'sol', 're', 'mi', 'si']; + foreach ($singleKeys as $key) { + if (preg_match('/_' . $key . '(?:_|$)/', $name)) { + $result['key'] = $key; + $name = preg_replace('/_' . $key . '/', '', $name); + break; + } + } + } + + // Extract part number (1, 2, 1_et_2, etc.) - should be last + // Handle formats: 1, 2, 1_et_2 + if (preg_match('/_(\d+(?:_\w+)*)$/', $name, $m)) { + $result['part'] = $m[1]; + $name = preg_replace('/_\d+(?:_\w+)*$/', '', $name); + } + + return $result; + } + + // API Methods + + public function listScores(): array { + return $this->getAllScores(); + } + + public function getScore(string $id): ?array { + return $this->getScoreDetail($id); + } + + public function getPieces(string $scoreId): array { + $scoreDir = $this->scoresPath . $scoreId; + $iniFile = $scoreDir . '/score.ini'; + + if (!file_exists($iniFile)) { + return []; + } + + $ini = @parse_ini_file($iniFile, true); + if ($ini === false) { + return []; + } + + $pieces = []; + + // Check if [pieces] section exists + if (isset($ini['pieces'])) { + $piecesSection = $ini['pieces']; + $count = intval($piecesSection['count'] ?? 1); + + for ($i = 1; $i <= $count; $i++) { + $pieces[] = [ + 'id' => $i, + 'name' => $piecesSection[$i] ?? "Pièce $i" + ]; + } + } + + return $pieces; + } + + public function getInstruments(string $scoreId, ?string $pieceId = null): array { + $scoreDir = $this->scoresPath . $scoreId; + + if (!is_dir($scoreDir)) { + return []; + } + + $instruments = []; + + // New structure: NUM/PIECE/INSTRUMENT/VERSION/ + $pieceDirs = scandir($scoreDir); + + foreach ($pieceDirs as $pieceDir) { + if ($pieceDir === '.' || $pieceDir === '..' || $pieceDir === 'score.ini') continue; + if (strpos($pieceDir, '.') === 0) continue; + if (!is_dir($scoreDir . '/' . $pieceDir)) continue; + + // Filter by piece if specified + if ($pieceId !== null && $pieceDir !== $pieceId) continue; + + $instrumentDirs = scandir($scoreDir . '/' . $pieceDir); + + foreach ($instrumentDirs as $instrumentId) { + if ($instrumentId === '.' || $instrumentId === '..') continue; + if (strpos($instrumentId, '.') === 0) continue; + if (!is_dir($scoreDir . '/' . $pieceDir . '/' . $instrumentId)) continue; + + $instrument = $this->getInstrumentInfo($scoreId, $instrumentId, $pieceDir); + if ($instrument) { + $instruments[] = $instrument; + } + } + } + + // Sort by title + usort($instruments, function($a, $b) { + return strcmp($a['title'], $b['title']); + }); + + return $instruments; + } + + public function createScore(string $id, string $name, string $compositor): array { + $scoreDir = $this->scoresPath . $id; + + if (is_dir($scoreDir)) { + return ['success' => false, 'error' => 'Score already exists']; + } + + if (!mkdir($scoreDir, 0755, true)) { + return ['success' => false, 'error' => 'Failed to create directory']; + } + + $iniContent = "[info]\nname = $name\ncompositor = $compositor\n\n[pieces]\ncount = 1\n"; + + if (file_put_contents($scoreDir . '/score.ini', $iniContent) === false) { + return ['success' => false, 'error' => 'Failed to create score.ini']; + } + + return [ + 'success' => true, + 'score' => [ + 'id' => $id, + 'name' => $name, + 'compositor' => $compositor + ] + ]; + } + + public function updateScore(string $scoreId, ?string $name, ?string $compositor): array { + $scoreDir = $this->scoresPath . $scoreId; + $iniFile = $scoreDir . '/score.ini'; + + if (!file_exists($iniFile)) { + return ['success' => false, 'error' => 'Score not found']; + } + + $ini = @parse_ini_file($iniFile, true); + if ($ini === false) { + return ['success' => false, 'error' => 'Failed to parse score.ini']; + } + + // Update values + if ($name !== null) { + $ini['info']['name'] = $name; + } + if ($compositor !== null) { + $ini['info']['compositor'] = $compositor; + } + + // Rebuild ini content + $content = "[info]\n"; + $content .= "name = " . ($ini['info']['name'] ?? '') . "\n"; + $content .= "compositor = " . ($ini['info']['compositor'] ?? '') . "\n\n"; + $content .= "[pieces]\n"; + + if (isset($ini['pieces'])) { + foreach ($ini['pieces'] as $key => $value) { + $content .= "$key = $value\n"; + } + } + + if (file_put_contents($iniFile, $content) === false) { + return ['success' => false, 'error' => 'Failed to write score.ini']; + } + + return ['success' => true]; + } + + public function deleteScore(string $scoreId): array { + $scoreDir = $this->scoresPath . $scoreId; + + if (!is_dir($scoreDir)) { + return ['success' => false, 'error' => 'Score not found']; + } + + // Recursive delete + $this->deleteDirectory($scoreDir); + + return ['success' => true]; + } + + private function deleteDirectory(string $dir): void { + if (!is_dir($dir)) return; + + $items = scandir($dir); + foreach ($items as $item) { + if ($item === '.' || $item === '..') continue; + + $path = $dir . '/' . $item; + if (is_dir($path)) { + $this->deleteDirectory($path); + } else { + unlink($path); + } + } + + rmdir($dir); + } + + public function uploadPdf(string $scoreId, array $file, string $piece, string $instrument, string $version, string $filename): array { + $scoreDir = $this->scoresPath . $scoreId; + + if (!is_dir($scoreDir)) { + return ['success' => false, 'error' => 'Score not found']; + } + + // Create directory structure: scoreId/piece/instrument/version + $targetDir = $scoreDir . '/' . $piece . '/' . $instrument . '/' . $version; + + if (!mkdir($targetDir, 0755, true)) { + return ['success' => false, 'error' => 'Failed to create directory']; + } + + // Determine filename + if (empty($filename)) { + $filename = $file['name']; + } + + $targetPath = $targetDir . '/' . $filename; + + if (move_uploaded_file($file['tmp_name'], $targetPath)) { + return ['success' => true, 'path' => "$scoreId/$piece/$instrument/$version/$filename"]; + } + + return ['success' => false, 'error' => 'Failed to move uploaded file']; + } } diff --git a/api/router.php b/api/router.php new file mode 100644 index 0000000..ca1776a --- /dev/null +++ b/api/router.php @@ -0,0 +1,12 @@ +=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "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==", + "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==", + "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==", + "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==", + "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==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/canvas": { + "version": "0.1.93", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.93.tgz", + "integrity": "sha512-unVFo8CUlUeJCCxt50+j4yy91NF4x6n9zdGcvEsOFAWzowtZm3mgx8X2D7xjwV0cFSfxmpGPoe+JS77uzeFsxg==", + "license": "MIT", + "optional": true, + "workspaces": [ + "e2e/*" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/canvas-android-arm64": "0.1.93", + "@napi-rs/canvas-darwin-arm64": "0.1.93", + "@napi-rs/canvas-darwin-x64": "0.1.93", + "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.93", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.93", + "@napi-rs/canvas-linux-arm64-musl": "0.1.93", + "@napi-rs/canvas-linux-riscv64-gnu": "0.1.93", + "@napi-rs/canvas-linux-x64-gnu": "0.1.93", + "@napi-rs/canvas-linux-x64-musl": "0.1.93", + "@napi-rs/canvas-win32-arm64-msvc": "0.1.93", + "@napi-rs/canvas-win32-x64-msvc": "0.1.93" + } + }, + "node_modules/@napi-rs/canvas-android-arm64": { + "version": "0.1.93", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.93.tgz", + "integrity": "sha512-xRIoOPFvneR29Dtq5d9p2AJbijDCFeV4jQ+5Ms/xVAXJVb8R0Jlu+pPr/SkhrG+Mouaml4roPSXugTIeRl6CMA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-darwin-arm64": { + "version": "0.1.93", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.93.tgz", + "integrity": "sha512-daNDi76HN5grC6GXDmpxdfP+N2mQPd3sCfg62VyHwUuvbZh32P7R/IUjkzAxtYMtTza+Zvx9hfLJ3J7ENL6WMA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-darwin-x64": { + "version": "0.1.93", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.93.tgz", + "integrity": "sha512-1YfuNPIQLawsg/gSNdJRk4kQWUy9M/Gy8FGsOI79nhQEJ2PZdqpSPl5UNzf4elfuNXuVbEbmmjP68EQdUunDuQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { + "version": "0.1.93", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.93.tgz", + "integrity": "sha512-8kEkOQPZjuyHjupvXExuJZiuiVNecdABGq3DLI7aO1EvQFOOlWMm2d/8Q5qXdV73Tn+nu3m16+kPajsN1oJefQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-gnu": { + "version": "0.1.93", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.93.tgz", + "integrity": "sha512-qIKLKkBkYSyWSYAoDThoxf5y1gr4X0g7W8rDU7d2HDeAAcotdVHUwuKkMeNe6+5VNk7/95EIhbslQjSxiCu32g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-musl": { + "version": "0.1.93", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.93.tgz", + "integrity": "sha512-mAwQBGM3qArS9XEO21AK4E1uGvCuUCXjhIZk0dlVvs49MQ6wAAuCkYKNFpSKeSicKrLWwBMfgWX4qZoPh+M00A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { + "version": "0.1.93", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.93.tgz", + "integrity": "sha512-kaIH5MpPzOZfkM+QMsBxGdM9jlJT+N+fwz2IEaju/S+DL65E5TgPOx4QcD5dQ8vsMxlak6uDrudBc4ns5xzZCw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-gnu": { + "version": "0.1.93", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.93.tgz", + "integrity": "sha512-KtMZJqYWvOSeW5w3VSV2f5iGnwNdKJm4gwgVid4xNy1NFi+NJSyuglA1lX1u4wIPxizyxh8OW5c5Usf6oSOMNQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-musl": { + "version": "0.1.93", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.93.tgz", + "integrity": "sha512-qRZhOvlDBooRLX6V3/t9X9B+plZK+OrPLgfFixu0A1RO/3VHbubOknfnMnocSDAqk/L6cRyKI83VP2ciR9UO7w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-win32-arm64-msvc": { + "version": "0.1.93", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-arm64-msvc/-/canvas-win32-arm64-msvc-0.1.93.tgz", + "integrity": "sha512-um5XE44vF8bjkQEsH2iRSUP9fDeQGYbn/qjM/v4whXG83qsqapAXlOPOQqSARZB1SiNvPUAuXoRsJLlKFmAEFw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-win32-x64-msvc": { + "version": "0.1.93", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.93.tgz", + "integrity": "sha512-maHlizZgmKsAPJwjwBZMnsWfq3Ca9QutoteQwKe7YqsmbECoylrLCCOGCDOredstW4BRWqRTfCl6NJaVVeAQvQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", + "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", + "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", + "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", + "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", + "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", + "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", + "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", + "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", + "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", + "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", + "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", + "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", + "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", + "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", + "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", + "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", + "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", + "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", + "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", + "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", + "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", + "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", + "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", + "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", + "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sveltejs/acorn-typescript": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.9.tgz", + "integrity": "sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==", + "license": "MIT", + "peerDependencies": { + "acorn": "^8.9.0" + } + }, + "node_modules/@sveltejs/adapter-static": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.10.tgz", + "integrity": "sha512-7D9lYFWJmB7zxZyTE/qxjksvMqzMuYrrsyh1f4AlZqeZeACPRySjbC3aFiY55wb1tWUaKOQG9PVbm74JcN2Iew==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@sveltejs/kit": "^2.0.0" + } + }, + "node_modules/@sveltejs/kit": { + "version": "2.52.0", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.52.0.tgz", + "integrity": "sha512-zG+HmJuSF7eC0e7xt2htlOcEMAdEtlVdb7+gAr+ef08EhtwUsjLxcAwBgUCJY3/5p08OVOxVZti91WfXeuLvsg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@sveltejs/acorn-typescript": "^1.0.5", + "@types/cookie": "^0.6.0", + "acorn": "^8.14.1", + "cookie": "^0.6.0", + "devalue": "^5.6.2", + "esm-env": "^1.2.2", + "kleur": "^4.1.5", + "magic-string": "^0.30.5", + "mrmime": "^2.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^3.0.0", + "sirv": "^3.0.0" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=18.13" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "typescript": "^5.3.3", + "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-4.0.4.tgz", + "integrity": "sha512-0ba1RQ/PHen5FGpdSrW7Y3fAMQjrXantECALeOiOdBdzR5+5vPP6HVZRLmZaQL+W8m++o+haIAKq5qT+MiZ7VA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^3.0.0-next.0||^3.0.0", + "debug": "^4.3.7", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.12", + "vitefu": "^1.0.3" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22" + }, + "peerDependencies": { + "svelte": "^5.0.0-next.96 || ^5.0.0", + "vite": "^5.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-3.0.1.tgz", + "integrity": "sha512-2CKypmj1sM4GE7HjllT7UKmo4Q6L5xFRd7VMGEWhYnZ+wc6AUVU01IBd7yUi6WnFndEwWoMNOd6e8UjoN0nbvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.7" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^4.0.0-next.0||^4.0.0", + "svelte": "^5.0.0-next.96 || ^5.0.0", + "vite": "^5.0.0" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.4.24", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.24.tgz", + "integrity": "sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001766", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", + "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "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", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001770", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz", + "integrity": "sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==", + "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/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "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/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/devalue": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", + "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "dev": true, + "license": "ISC" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "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/esm-env": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", + "license": "MIT" + }, + "node_modules/esrap": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.3.tgz", + "integrity": "sha512-8fOS+GIGCQZl/ZIlhl59htOlms6U8NvX6ZYgYHpRU/b6tVSh3uHkOHZikl3D4cMbYM0JlpBe+p/BkZEi8J9XIQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.6" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "license": "MIT" + }, + "node_modules/lucide-svelte": { + "version": "0.574.0", + "resolved": "https://registry.npmjs.org/lucide-svelte/-/lucide-svelte-0.574.0.tgz", + "integrity": "sha512-KhMbh4uFO8jm60bYPWHV5GmNy1P5hs1M6BfDYUjw0CZ5tJoJ+lMzAdTBBb9L+Gj3xOlHIgjsLMVnjQK3qcWrEA==", + "license": "ISC", + "peerDependencies": { + "svelte": "^3 || ^4 || ^5.0.0-next.42" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "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/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "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/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/pdfjs-dist": { + "version": "4.10.38", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.10.38.tgz", + "integrity": "sha512-/Y3fcFrXEAsMjJXeL9J8+ZG9U01LbuWaYypvDW2ycW1jL269L3js3DVBjDJ0Up9Np1uqDXsDrRihHANhZOlwdQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=20" + }, + "optionalDependencies": { + "@napi-rs/canvas": "^0.1.65" + } + }, + "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": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "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", + "peer": true, + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", + "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.57.1", + "@rollup/rollup-android-arm64": "4.57.1", + "@rollup/rollup-darwin-arm64": "4.57.1", + "@rollup/rollup-darwin-x64": "4.57.1", + "@rollup/rollup-freebsd-arm64": "4.57.1", + "@rollup/rollup-freebsd-x64": "4.57.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", + "@rollup/rollup-linux-arm-musleabihf": "4.57.1", + "@rollup/rollup-linux-arm64-gnu": "4.57.1", + "@rollup/rollup-linux-arm64-musl": "4.57.1", + "@rollup/rollup-linux-loong64-gnu": "4.57.1", + "@rollup/rollup-linux-loong64-musl": "4.57.1", + "@rollup/rollup-linux-ppc64-gnu": "4.57.1", + "@rollup/rollup-linux-ppc64-musl": "4.57.1", + "@rollup/rollup-linux-riscv64-gnu": "4.57.1", + "@rollup/rollup-linux-riscv64-musl": "4.57.1", + "@rollup/rollup-linux-s390x-gnu": "4.57.1", + "@rollup/rollup-linux-x64-gnu": "4.57.1", + "@rollup/rollup-linux-x64-musl": "4.57.1", + "@rollup/rollup-openbsd-x64": "4.57.1", + "@rollup/rollup-openharmony-arm64": "4.57.1", + "@rollup/rollup-win32-arm64-msvc": "4.57.1", + "@rollup/rollup-win32-ia32-msvc": "4.57.1", + "@rollup/rollup-win32-x64-gnu": "4.57.1", + "@rollup/rollup-win32-x64-msvc": "4.57.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/set-cookie-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-3.0.1.tgz", + "integrity": "sha512-n7Z7dXZhJbwuAHhNzkTti6Aw9QDDjZtm3JTpTGATIdNzdQz5GuFs22w90BcvF4INfnrL5xrX3oGsuqO5Dx3A1Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/sirv": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "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/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "5.51.2", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.51.2.tgz", + "integrity": "sha512-AqApqNOxVS97V4Ko9UHTHeSuDJrwauJhZpLDs1gYD8Jk48ntCSWD7NxKje+fnGn5Ja1O3u2FzQZHPdifQjXe3w==", + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@sveltejs/acorn-typescript": "^1.0.5", + "@types/estree": "^1.0.5", + "@types/trusted-types": "^2.0.7", + "acorn": "^8.12.1", + "aria-query": "^5.3.1", + "axobject-query": "^4.1.0", + "clsx": "^2.1.1", + "devalue": "^5.6.2", + "esm-env": "^1.2.1", + "esrap": "^2.2.2", + "is-reference": "^3.0.3", + "locate-character": "^3.0.0", + "magic-string": "^0.30.11", + "zimmerframe": "^1.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", + "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/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/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "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/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", + "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", + "dev": true, + "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*", + "tests/projects/workspace/packages/*" + ], + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/zimmerframe": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", + "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==", + "license": "MIT" + } + } +} diff --git a/partitions/package.json b/partitions/package.json new file mode 100644 index 0000000..a05f928 --- /dev/null +++ b/partitions/package.json @@ -0,0 +1,26 @@ +{ + "name": "partitions", + "version": "0.0.1", + "type": "module", + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview" + }, + "devDependencies": { + "@sveltejs/adapter-static": "^3.0.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^4.0.0", + "autoprefixer": "^10.4.16", + "postcss": "^8.4.32", + "svelte": "^5.0.0", + "tailwindcss": "^3.4.0", + "typescript": "^5.0.0", + "vite": "^5.0.0" + }, + "dependencies": { + "axios": "^1.6.0", + "lucide-svelte": "^0.574.0", + "pdfjs-dist": "^4.0.379" + } +} diff --git a/partitions/postcss.config.js b/partitions/postcss.config.js new file mode 100644 index 0000000..0f77216 --- /dev/null +++ b/partitions/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +}; diff --git a/partitions/src/app.css b/partitions/src/app.css new file mode 100644 index 0000000..2a2c121 --- /dev/null +++ b/partitions/src/app.css @@ -0,0 +1,16 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --ohmj-primary: #1e3a5f; + --ohmj-secondary: #c9a227; + --ohmj-light: #f5f5f5; + --ohmj-dark: #0a1f33; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif; + background-color: var(--ohmj-light); + color: #333; +} diff --git a/partitions/src/app.d.ts b/partitions/src/app.d.ts new file mode 100644 index 0000000..b1a9966 --- /dev/null +++ b/partitions/src/app.d.ts @@ -0,0 +1,14 @@ +/// + +declare global { + namespace App { + interface Locals { + user?: { + username: string; + role: string; + }; + } + } +} + +export {}; diff --git a/partitions/src/app.html b/partitions/src/app.html new file mode 100644 index 0000000..95b5344 --- /dev/null +++ b/partitions/src/app.html @@ -0,0 +1,13 @@ + + + + + + + OHMJ - Partitions + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/partitions/src/lib/api.ts b/partitions/src/lib/api.ts new file mode 100644 index 0000000..83b663a --- /dev/null +++ b/partitions/src/lib/api.ts @@ -0,0 +1,113 @@ +import axios, { type AxiosError } from 'axios'; +import { auth } from '$lib/stores/auth'; +import { browser } from '$app/environment'; +import { get } from 'svelte/store'; + +const API_BASE_URL = browser ? 'http://localhost:8000' : 'http://localhost:8000'; + +const api = axios.create({ + baseURL: API_BASE_URL, + headers: { + 'Content-Type': 'application/json' + } +}); + +export { api }; + +api.interceptors.request.use((config) => { + const authState = get(auth); + if (authState.token) { + config.headers.Authorization = `Bearer ${authState.token}`; + } + return config; +}); + +api.interceptors.response.use( + (response) => response, + (error: AxiosError) => { + if (error.response?.status === 401) { + auth.logout(); + if (browser) { + window.location.href = '/'; + } + } + return Promise.reject(error); + } +); + +export interface Score { + id: string; + name: string; + compositor: string; + ressource?: string | null; + instruments?: Instrument[]; +} + +export interface Piece { + id: number; + name: string; +} + +export interface Instrument { + id: string; + title: string; + piece: string; + parts: Part[]; +} + +export interface Part { + id: string; + files: PdfFile[]; +} + +export interface PdfFile { + name: string; + filename: string; + path: string; + part: string | null; + key: string | null; + clef: string | null; + variant: string | null; +} + +export const apiService = { + async login(username: string, password: string): Promise<{ token: string; user: { username: string; role: string } }> { + const response = await api.post('/login', { username, password }); + return response.data; + }, + + async getScores(): Promise { + const response = await api.get('/scores'); + return response.data.scores; + }, + + async getScore(id: string): Promise { + const response = await api.get(`/scores/${id}`); + return response.data.score; + }, + + async getInstruments(scoreId: string): Promise { + const response = await api.get(`/scores/${scoreId}/instruments`); + return response.data.instruments; + }, + + async getPieces(scoreId: string): Promise { + const response = await api.get(`/pieces/${scoreId}`); + return response.data.pieces; + }, + + async downloadPdf(path: string): Promise { + const response = await api.get(`/download/${path}`, { + responseType: 'blob' + }); + return response.data; + }, + + getDownloadUrl(path: string): string { + let token = ''; + auth.subscribe((state) => { + token = state.token || ''; + })(); + return `${API_BASE_URL}/download/${path}?token=${token}`; + } +}; diff --git a/partitions/src/lib/components/PdfViewer.svelte b/partitions/src/lib/components/PdfViewer.svelte new file mode 100644 index 0000000..cb46b75 --- /dev/null +++ b/partitions/src/lib/components/PdfViewer.svelte @@ -0,0 +1,206 @@ + + +
+
+
+ {title} + {#if totalPages > 0} + | Page {currentPage} / {totalPages} + {/if} +
+
+ + {Math.round(scale * 100)}% + +
+
+ +
+ {#if loading} +
+
+

Chargement du PDF...

+
+ {:else if error} +
+

⚠️

+

{error}

+
+ {:else} + + {/if} +
+ +
+ + +
+ {#each Array(Math.min(5, totalPages)) as _, i} + {@const pageNum = Math.max(1, Math.min(currentPage - 2, totalPages - 4)) + i} + {#if pageNum <= totalPages} + + {/if} + {/each} +
+ + +
+
diff --git a/partitions/src/lib/stores/auth.ts b/partitions/src/lib/stores/auth.ts new file mode 100644 index 0000000..2cb3734 --- /dev/null +++ b/partitions/src/lib/stores/auth.ts @@ -0,0 +1,43 @@ +import { writable } from 'svelte/store'; +import { browser } from '$app/environment'; + +interface User { + username: string; + role: string; +} + +interface AuthState { + token: string | null; + user: User | null; +} + +function createAuthStore() { + const stored = browser ? localStorage.getItem('auth') : null; + const initial: AuthState = stored ? JSON.parse(stored) : { token: null, user: null }; + + const { subscribe, set, update } = writable(initial); + + return { + subscribe, + login: (token: string, user: User) => { + const state = { token, user }; + set(state); + if (browser) { + localStorage.setItem('auth', JSON.stringify(state)); + } + }, + logout: () => { + set({ token: null, user: null }); + if (browser) { + localStorage.removeItem('auth'); + } + }, + getToken: () => { + let token: string | null = null; + update((s) => (token = s.token)); + return token; + } + }; +} + +export const auth = createAuthStore(); diff --git a/partitions/src/routes/+layout.svelte b/partitions/src/routes/+layout.svelte new file mode 100644 index 0000000..eed4542 --- /dev/null +++ b/partitions/src/routes/+layout.svelte @@ -0,0 +1,74 @@ + + +
+ {#if isAuthenticated && currentPath !== '/'} +
+
+ + OHMJ + + + +
+
+ {/if} + +
+ +
+ + {#if isAuthenticated && currentPath !== '/'} +
+

© {new Date().getFullYear()} Harmonie de Montpellier-Jacou

+
+ {/if} +
diff --git a/partitions/src/routes/+page.svelte b/partitions/src/routes/+page.svelte new file mode 100644 index 0000000..1259f20 --- /dev/null +++ b/partitions/src/routes/+page.svelte @@ -0,0 +1,126 @@ + + + + Connexion - OHMJ + + +
+ +
+ Background +
+
+ +
+
+
+ OHMJ +

+ Harmonie de Montpellier-Jacou +

+

+ Connexion à l'espace partitions +

+
+ +
{ e.preventDefault(); handleLogin(); }} class="space-y-6"> + {#if error} +
+ {error} +
+ {/if} + +
+ + +
+ +
+ + +
+ + +
+ +

+ Accès réservé aux membres de l'OHMJ +

+
+
+
diff --git a/partitions/src/routes/scores/+page.svelte b/partitions/src/routes/scores/+page.svelte new file mode 100644 index 0000000..3590533 --- /dev/null +++ b/partitions/src/routes/scores/+page.svelte @@ -0,0 +1,115 @@ + + + + Mes Partitions - OHMJ + + +
+
+

Mes Partitions

+

{scores.length} partitions disponibles

+
+ + {#if loading} +
+
+
+ {:else if error} +
+ {error} +
+ {:else} +
+ + + + + + + + + + + {#each sortedScores as score} + + + + + + + {/each} + +
sortScores('id')} + > + № {sortBy === 'id' ? (sortOrder === 'asc' ? '↑' : '↓') : ''} + sortScores('name')} + > + Nom {sortBy === 'name' ? (sortOrder === 'asc' ? '↑' : '↓') : ''} + sortScores('compositor')} + > + Compositeur {sortBy === 'compositor' ? (sortOrder === 'asc' ? '↑' : '↓') : ''} + + Action +
+ {score.id} + + {score.name} + + {score.compositor || '-'} + + + Voir → + +
+
+ {/if} +
diff --git a/partitions/src/routes/scores/[id]/+page.svelte b/partitions/src/routes/scores/[id]/+page.svelte new file mode 100644 index 0000000..61f2385 --- /dev/null +++ b/partitions/src/routes/scores/[id]/+page.svelte @@ -0,0 +1,148 @@ + + + + {score?.name || 'Partition'} - OHMJ + + +
+ + ← Retour aux partitions + + + {#if loading} +
+
+
+ {:else if error} +
+ {error} +
+ {:else} +
+

{score?.name || ''}

+ {#if score?.compositor} +

{score.compositor}

+ {/if} + {#if score?.ressource} + + 🔗 Ressource externe + + {/if} +

№ {scoreId}

+
+ + {#if pieces.length > 1} +

Pièces

+
+ {#each pieces as piece} + + {/each} +
+ {/if} + + {#if pieces.length <= 1 || selectedPiece} +

Instruments disponibles

+ + {#if instruments.length === 0} +

Aucun instrument trouvé.

+ {:else} +
+ {#each instruments as instrument} + {@const code = instrument.id || instrument.code || ''} + {@const title = instrument.title || getInstrumentName(code)} + {@const fileCount = instrument.parts?.[0]?.files?.length || 0} + +
+
{getInstrumentIcon(code)}
+

{title}

+

{fileCount} fichier{fileCount !== 1 ? 's' : ''}

+
+
+ {/each} +
+ {/if} + {/if} + {/if} +
diff --git a/partitions/src/routes/scores/[id]/[piece]/+page.svelte b/partitions/src/routes/scores/[id]/[piece]/+page.svelte new file mode 100644 index 0000000..089ac1c --- /dev/null +++ b/partitions/src/routes/scores/[id]/[piece]/+page.svelte @@ -0,0 +1,79 @@ + + + + Pièce {pieceId} - {scoreId} - OHMJ + + +
+ + ← Retour aux pièces + + +

Instruments - Pièce {pieceId}

+ + {#if loading} +
+
+
+ {:else if error} +
+ {error} +
+ {:else} +
+ {#each instruments as instrument} + {@const fileCount = instrument.parts?.[0]?.files?.length || 0} + +
+
{getInstrumentIcon(instrument.id)}
+

{instrument.title}

+

{fileCount} fichier{fileCount !== 1 ? 's' : ''}

+
+
+ {/each} +
+ {/if} +
diff --git a/partitions/src/routes/scores/[id]/[piece]/[instrument]/+page.svelte b/partitions/src/routes/scores/[id]/[piece]/[instrument]/+page.svelte new file mode 100644 index 0000000..8c9a934 --- /dev/null +++ b/partitions/src/routes/scores/[id]/[piece]/[instrument]/+page.svelte @@ -0,0 +1,190 @@ + + + + {instrumentTitle || instrumentCode} - {scoreId} - OHMJ + + +
+
+ + ← Retour aux instruments + + +

+ {instrumentTitle || getInstrumentName(instrumentCode)} - Partition {scoreId} - Pièce {pieceId} +

+
+ + {#if loading} +
+
+
+ {:else if error} +
+
+ {error} +
+
+ {:else} +
+ + + + + {#if showSidebar} +
+

Parties disponibles

+ + {#each parts as part} +
+

Version {part.id}

+
    + {#each part.files as file} +
  • + + +
  • + {/each} +
+
+ {/each} + + {#if parts.length === 0} +

Aucune partie disponible.

+ {/if} +
+ {/if} + + +
+ {#if selectedFile} + {#key selectedFile} + + {/key} + {:else} +
+

Sélectionnez une partition pour la visionner

+
+ {/if} +
+
+ {/if} +
diff --git a/partitions/src/routes/test-icons/+page.svelte b/partitions/src/routes/test-icons/+page.svelte new file mode 100644 index 0000000..06d9003 --- /dev/null +++ b/partitions/src/routes/test-icons/+page.svelte @@ -0,0 +1,77 @@ + + + + Test icônes instruments - OHMJ + + +
+

Test icônes instruments

+ +
+ {#each instruments as inst} +
+
{inst.icon}
+

{inst.name}

+

{inst.code}

+
+ {/each} +
+
diff --git a/partitions/static/bg-login.jpg b/partitions/static/bg-login.jpg new file mode 100644 index 0000000000000000000000000000000000000000..33dcb606c0e023bf76af4a363bc091d8a7737559 GIT binary patch literal 322990 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%0DorhSx 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

VuqelBGx-Y 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°_k+O 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

}=c?ocQ~h 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 literal 0 HcmV?d00001 diff --git a/partitions/static/logo.png b/partitions/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..dd281a81689f9590461b09e4e3c87eb6159bafa0 GIT binary patch literal 13758 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 literal 0 HcmV?d00001 diff --git a/partitions/static/pdf.worker.min.mjs b/partitions/static/pdf.worker.min.mjs new file mode 100644 index 0000000..3ec0f16 --- /dev/null +++ b/partitions/static/pdf.worker.min.mjs @@ -0,0 +1,21 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2024 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * JavaScript code in this page + */var e={d:(t,i)=>{for(var a in i)e.o(i,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:i[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},__webpack_exports__ = globalThis.pdfjsWorker = {};e.d(__webpack_exports__,{WorkerMessageHandler:()=>WorkerMessageHandler});const t=!("object"!=typeof process||process+""!="[object process]"||process.versions.nw||process.versions.electron&&process.type&&"browser"!==process.type),i=[1,0,0,1,0,0],a=[.001,0,0,.001,0,0],s=1.35,r=.35,n=.25925925925925924,g=1,o=2,c=4,C=8,h=16,l=64,Q=128,E=256,u="pdfjs_internal_editor_",d=3,f=9,p=13,m=15,y={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},w=0,D=4,b=1,F=2,S=3,k=1,R=2,N=3,G=4,M=5,U=6,x=7,L=8,H=9,J=10,Y=11,v=12,K=13,T=14,q=15,O=16,W=17,j=20,X="Group",Z="R",V=1,z=2,_=4,$=16,AA=32,eA=128,tA=512,iA=1,aA=2,sA=4096,rA=8192,nA=32768,gA=65536,oA=131072,IA=1048576,cA=2097152,CA=8388608,hA=16777216,lA=1,BA=2,QA=3,EA=4,uA=5,dA={E:"Mouse Enter",X:"Mouse Exit",D:"Mouse Down",U:"Mouse Up",Fo:"Focus",Bl:"Blur",PO:"PageOpen",PC:"PageClose",PV:"PageVisible",PI:"PageInvisible",K:"Keystroke",F:"Format",V:"Validate",C:"Calculate"},fA={WC:"WillClose",WS:"WillSave",DS:"DidSave",WP:"WillPrint",DP:"DidPrint"},pA={O:"PageOpen",C:"PageClose"},mA=1,yA=5,wA=1,DA=2,bA=3,FA=4,SA=5,kA=6,RA=7,NA=8,GA=9,MA=10,UA=11,xA=12,LA=13,HA=14,JA=15,YA=16,vA=17,KA=18,TA=19,qA=20,OA=21,PA=22,WA=23,jA=24,XA=25,ZA=26,VA=27,zA=28,_A=29,$A=30,Ae=31,ee=32,te=33,ie=34,ae=35,se=36,re=37,ne=38,ge=39,oe=40,Ie=41,ce=42,Ce=43,he=44,le=45,Be=46,Qe=47,Ee=48,ue=49,de=50,fe=51,pe=52,me=53,ye=54,we=55,De=56,be=57,Fe=58,Se=59,ke=60,Re=61,Ne=62,Ge=63,Me=64,Ue=65,xe=66,Le=67,He=68,Je=69,Ye=70,ve=71,Ke=72,Te=73,qe=74,Oe=75,Pe=76,We=77,je=80,Xe=81,Ze=83,Ve=84,ze=85,_e=86,$e=87,At=88,et=89,tt=90,it=91,at=92,st=93,rt=1,nt=2;let gt=mA;function getVerbosityLevel(){return gt}function info(e){gt>=yA&&console.log(`Info: ${e}`)}function warn(e){gt>=mA&&console.log(`Warning: ${e}`)}function unreachable(e){throw new Error(e)}function assert(e,t){e||unreachable(t)}function createValidAbsoluteUrl(e,t=null,i=null){if(!e)return null;try{if(i&&"string"==typeof e){if(i.addDefaultProtocol&&e.startsWith("www.")){const t=e.match(/\./g);t?.length>=2&&(e=`http://${e}`)}if(i.tryConvertEncoding)try{e=stringToUTF8String(e)}catch{}}const a=t?new URL(e,t):new URL(e);if(function _isValidProtocol(e){switch(e?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(a))return a}catch{}return null}function shadow(e,t,i,a=!1){Object.defineProperty(e,t,{value:i,enumerable:!a,configurable:!0,writable:!1});return i}const ot=function BaseExceptionClosure(){function BaseException(e,t){this.message=e;this.name=t}BaseException.prototype=new Error;BaseException.constructor=BaseException;return BaseException}();class PasswordException extends ot{constructor(e,t){super(e,"PasswordException");this.code=t}}class UnknownErrorException extends ot{constructor(e,t){super(e,"UnknownErrorException");this.details=t}}class InvalidPDFException extends ot{constructor(e){super(e,"InvalidPDFException")}}class MissingPDFException extends ot{constructor(e){super(e,"MissingPDFException")}}class UnexpectedResponseException extends ot{constructor(e,t){super(e,"UnexpectedResponseException");this.status=t}}class FormatError extends ot{constructor(e){super(e,"FormatError")}}class AbortException extends ot{constructor(e){super(e,"AbortException")}}function bytesToString(e){"object"==typeof e&&void 0!==e?.length||unreachable("Invalid argument for bytesToString");const t=e.length,i=8192;if(t>24&255,e>>16&255,e>>8&255,255&e)}function objectSize(e){return Object.keys(e).length}class FeatureTest{static get isLittleEndian(){return shadow(this,"isLittleEndian",function isLittleEndian(){const e=new Uint8Array(4);e[0]=1;return 1===new Uint32Array(e.buffer,0,1)[0]}())}static get isEvalSupported(){return shadow(this,"isEvalSupported",function isEvalSupported(){try{new Function("");return!0}catch{return!1}}())}static get isOffscreenCanvasSupported(){return shadow(this,"isOffscreenCanvasSupported","undefined"!=typeof OffscreenCanvas)}static get isImageDecoderSupported(){return shadow(this,"isImageDecoderSupported","undefined"!=typeof ImageDecoder)}static get platform(){return"undefined"!=typeof navigator&&"string"==typeof navigator?.platform?shadow(this,"platform",{isMac:navigator.platform.includes("Mac"),isWindows:navigator.platform.includes("Win"),isFirefox:"string"==typeof navigator?.userAgent&&navigator.userAgent.includes("Firefox")}):shadow(this,"platform",{isMac:!1,isWindows:!1,isFirefox:!1})}static get isCSSRoundSupported(){return shadow(this,"isCSSRoundSupported",globalThis.CSS?.supports?.("width: round(1.5px, 1px)"))}}const It=Array.from(Array(256).keys(),(e=>e.toString(16).padStart(2,"0")));class Util{static makeHexColor(e,t,i){return`#${It[e]}${It[t]}${It[i]}`}static scaleMinMax(e,t){let i;if(e[0]){if(e[0]<0){i=t[0];t[0]=t[2];t[2]=i}t[0]*=e[0];t[2]*=e[0];if(e[3]<0){i=t[1];t[1]=t[3];t[3]=i}t[1]*=e[3];t[3]*=e[3]}else{i=t[0];t[0]=t[1];t[1]=i;i=t[2];t[2]=t[3];t[3]=i;if(e[1]<0){i=t[1];t[1]=t[3];t[3]=i}t[1]*=e[1];t[3]*=e[1];if(e[2]<0){i=t[0];t[0]=t[2];t[2]=i}t[0]*=e[2];t[2]*=e[2]}t[0]+=e[4];t[1]+=e[5];t[2]+=e[4];t[3]+=e[5]}static transform(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}static applyTransform(e,t){return[e[0]*t[0]+e[1]*t[2]+t[4],e[0]*t[1]+e[1]*t[3]+t[5]]}static applyInverseTransform(e,t){const i=t[0]*t[3]-t[1]*t[2];return[(e[0]*t[3]-e[1]*t[2]+t[2]*t[5]-t[4]*t[3])/i,(-e[0]*t[1]+e[1]*t[0]+t[4]*t[1]-t[5]*t[0])/i]}static getAxialAlignedBoundingBox(e,t){const i=this.applyTransform(e,t),a=this.applyTransform(e.slice(2,4),t),s=this.applyTransform([e[0],e[3]],t),r=this.applyTransform([e[2],e[1]],t);return[Math.min(i[0],a[0],s[0],r[0]),Math.min(i[1],a[1],s[1],r[1]),Math.max(i[0],a[0],s[0],r[0]),Math.max(i[1],a[1],s[1],r[1])]}static inverseTransform(e){const t=e[0]*e[3]-e[1]*e[2];return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[4]*e[3])/t,(e[4]*e[1]-e[5]*e[0])/t]}static singularValueDecompose2dScale(e){const t=[e[0],e[2],e[1],e[3]],i=e[0]*t[0]+e[1]*t[2],a=e[0]*t[1]+e[1]*t[3],s=e[2]*t[0]+e[3]*t[2],r=e[2]*t[1]+e[3]*t[3],n=(i+r)/2,g=Math.sqrt((i+r)**2-4*(i*r-s*a))/2,o=n+g||1,c=n-g||1;return[Math.sqrt(o),Math.sqrt(c)]}static normalizeRect(e){const t=e.slice(0);if(e[0]>e[2]){t[0]=e[2];t[2]=e[0]}if(e[1]>e[3]){t[1]=e[3];t[3]=e[1]}return t}static intersect(e,t){const i=Math.max(Math.min(e[0],e[2]),Math.min(t[0],t[2])),a=Math.min(Math.max(e[0],e[2]),Math.max(t[0],t[2]));if(i>a)return null;const s=Math.max(Math.min(e[1],e[3]),Math.min(t[1],t[3])),r=Math.min(Math.max(e[1],e[3]),Math.max(t[1],t[3]));return s>r?null:[i,s,a,r]}static#A(e,t,i,a,s,r,n,g,o,c){if(o<=0||o>=1)return;const C=1-o,h=o*o,l=h*o,Q=C*(C*(C*e+3*o*t)+3*h*i)+l*a,E=C*(C*(C*s+3*o*r)+3*h*n)+l*g;c[0]=Math.min(c[0],Q);c[1]=Math.min(c[1],E);c[2]=Math.max(c[2],Q);c[3]=Math.max(c[3],E)}static#e(e,t,i,a,s,r,n,g,o,c,C,h){if(Math.abs(o)<1e-12){Math.abs(c)>=1e-12&&this.#A(e,t,i,a,s,r,n,g,-C/c,h);return}const l=c**2-4*C*o;if(l<0)return;const Q=Math.sqrt(l),E=2*o;this.#A(e,t,i,a,s,r,n,g,(-c+Q)/E,h);this.#A(e,t,i,a,s,r,n,g,(-c-Q)/E,h)}static bezierBoundingBox(e,t,i,a,s,r,n,g,o){if(o){o[0]=Math.min(o[0],e,n);o[1]=Math.min(o[1],t,g);o[2]=Math.max(o[2],e,n);o[3]=Math.max(o[3],t,g)}else o=[Math.min(e,n),Math.min(t,g),Math.max(e,n),Math.max(t,g)];this.#e(e,i,s,n,t,a,r,g,3*(3*(i-s)-e+n),6*(e-2*i+s),3*(i-e),o);this.#e(e,i,s,n,t,a,r,g,3*(3*(a-r)-t+g),6*(t-2*a+r),3*(a-t),o);return o}}const ct=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,728,711,710,729,733,731,730,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8226,8224,8225,8230,8212,8211,402,8260,8249,8250,8722,8240,8222,8220,8221,8216,8217,8218,8482,64257,64258,321,338,352,376,381,305,322,339,353,382,0,8364];function stringToPDFString(e){if(e[0]>="ï"){let t;if("þ"===e[0]&&"ÿ"===e[1]){t="utf-16be";e.length%2==1&&(e=e.slice(0,-1))}else if("ÿ"===e[0]&&"þ"===e[1]){t="utf-16le";e.length%2==1&&(e=e.slice(0,-1))}else"ï"===e[0]&&"»"===e[1]&&"¿"===e[2]&&(t="utf-8");if(t)try{const i=new TextDecoder(t,{fatal:!0}),a=stringToBytes(e),s=i.decode(a);return s.includes("")?s.replaceAll(/\x1b[^\x1b]*(?:\x1b|$)/g,""):s}catch(e){warn(`stringToPDFString: "${e}".`)}}const t=[];for(let i=0,a=e.length;iIt[e])).join("")}"function"!=typeof Promise.try&&(Promise.try=function(e,...t){return new Promise((i=>{i(e(...t))}))});const lt=Symbol("CIRCULAR_REF"),Bt=Symbol("EOF");let Qt=Object.create(null),Et=Object.create(null),ut=Object.create(null);class Name{constructor(e){this.name=e}static get(e){return Et[e]||=new Name(e)}}class Cmd{constructor(e){this.cmd=e}static get(e){return Qt[e]||=new Cmd(e)}}const dt=function nonSerializableClosure(){return dt};class Dict{constructor(e=null){this._map=new Map;this.xref=e;this.objId=null;this.suppressEncryption=!1;this.__nonSerializable__=dt}assignXref(e){this.xref=e}get size(){return this._map.size}get(e,t,i){let a=this._map.get(e);if(void 0===a&&void 0!==t){a=this._map.get(t);void 0===a&&void 0!==i&&(a=this._map.get(i))}return a instanceof Ref&&this.xref?this.xref.fetch(a,this.suppressEncryption):a}async getAsync(e,t,i){let a=this._map.get(e);if(void 0===a&&void 0!==t){a=this._map.get(t);void 0===a&&void 0!==i&&(a=this._map.get(i))}return a instanceof Ref&&this.xref?this.xref.fetchAsync(a,this.suppressEncryption):a}getArray(e,t,i){let a=this._map.get(e);if(void 0===a&&void 0!==t){a=this._map.get(t);void 0===a&&void 0!==i&&(a=this._map.get(i))}a instanceof Ref&&this.xref&&(a=this.xref.fetch(a,this.suppressEncryption));if(Array.isArray(a)){a=a.slice();for(let e=0,t=a.length;e{unreachable("Should not call `set` on the empty dictionary.")};return shadow(this,"empty",e)}static merge({xref:e,dictArray:t,mergeSubDicts:i=!1}){const a=new Dict(e),s=new Map;for(const e of t)if(e instanceof Dict)for(const[t,a]of e._map){let e=s.get(t);if(void 0===e){e=[];s.set(t,e)}else if(!(i&&a instanceof Dict))continue;e.push(a)}for(const[t,i]of s){if(1===i.length||!(i[0]instanceof Dict)){a._map.set(t,i[0]);continue}const s=new Dict(e);for(const e of i)for(const[t,i]of e._map)s._map.has(t)||s._map.set(t,i);s.size>0&&a._map.set(t,s)}s.clear();return a.size>0?a:Dict.empty}clone(){const e=new Dict(this.xref);for(const t of this.getKeys())e.set(t,this.getRaw(t));return e}delete(e){delete this._map[e]}}class Ref{constructor(e,t){this.num=e;this.gen=t}toString(){return 0===this.gen?`${this.num}R`:`${this.num}R${this.gen}`}static fromString(e){const t=ut[e];if(t)return t;const i=/^(\d+)R(\d*)$/.exec(e);return i&&"0"!==i[1]?ut[e]=new Ref(parseInt(i[1]),i[2]?parseInt(i[2]):0):null}static get(e,t){const i=0===t?`${e}R`:`${e}R${t}`;return ut[i]||=new Ref(e,t)}}class RefSet{constructor(e=null){this._set=new Set(e?._set)}has(e){return this._set.has(e.toString())}put(e){this._set.add(e.toString())}remove(e){this._set.delete(e.toString())}[Symbol.iterator](){return this._set.values()}clear(){this._set.clear()}}class RefSetCache{constructor(){this._map=new Map}get size(){return this._map.size}get(e){return this._map.get(e.toString())}has(e){return this._map.has(e.toString())}put(e,t){this._map.set(e.toString(),t)}putAlias(e,t){this._map.set(e.toString(),this.get(t))}[Symbol.iterator](){return this._map.values()}clear(){this._map.clear()}*values(){yield*this._map.values()}*items(){for(const[e,t]of this._map)yield[Ref.fromString(e),t]}}function isName(e,t){return e instanceof Name&&(void 0===t||e.name===t)}function isCmd(e,t){return e instanceof Cmd&&(void 0===t||e.cmd===t)}function isDict(e,t){return e instanceof Dict&&(void 0===t||isName(e.get("Type"),t))}function isRefsEqual(e,t){return e.num===t.num&&e.gen===t.gen}class BaseStream{get length(){unreachable("Abstract getter `length` accessed")}get isEmpty(){unreachable("Abstract getter `isEmpty` accessed")}get isDataLoaded(){return shadow(this,"isDataLoaded",!0)}getByte(){unreachable("Abstract method `getByte` called")}getBytes(e){unreachable("Abstract method `getBytes` called")}async getImageData(e,t){return this.getBytes(e,t)}async asyncGetBytes(){unreachable("Abstract method `asyncGetBytes` called")}get isAsync(){return!1}get canAsyncDecodeImageFromBuffer(){return!1}async getTransferableImage(){return null}peekByte(){const e=this.getByte();-1!==e&&this.pos--;return e}peekBytes(e){const t=this.getBytes(e);this.pos-=t.length;return t}getUint16(){const e=this.getByte(),t=this.getByte();return-1===e||-1===t?-1:(e<<8)+t}getInt32(){return(this.getByte()<<24)+(this.getByte()<<16)+(this.getByte()<<8)+this.getByte()}getByteRange(e,t){unreachable("Abstract method `getByteRange` called")}getString(e){return bytesToString(this.getBytes(e))}skip(e){this.pos+=e||1}reset(){unreachable("Abstract method `reset` called")}moveStart(){unreachable("Abstract method `moveStart` called")}makeSubStream(e,t,i=null){unreachable("Abstract method `makeSubStream` called")}getBaseStreams(){return null}}const ft=/^[1-9]\.\d$/,pt=2**31-1;function getLookupTableFactory(e){let t;return function(){if(e){t=Object.create(null);e(t);e=null}return t}}class MissingDataException extends ot{constructor(e,t){super(`Missing data [${e}, ${t})`,"MissingDataException");this.begin=e;this.end=t}}class ParserEOFException extends ot{constructor(e){super(e,"ParserEOFException")}}class XRefEntryException extends ot{constructor(e){super(e,"XRefEntryException")}}class XRefParseException extends ot{constructor(e){super(e,"XRefParseException")}}function arrayBuffersToBytes(e){const t=e.length;if(0===t)return new Uint8Array(0);if(1===t)return new Uint8Array(e[0]);let i=0;for(let a=0;a0,"The number should be a positive integer.");const i="M".repeat(e/1e3|0)+mt[e%1e3/100|0]+mt[10+(e%100/10|0)]+mt[20+e%10];return t?i.toLowerCase():i}function log2(e){return e>0?Math.ceil(Math.log2(e)):0}function readInt8(e,t){return e[t]<<24>>24}function readUint16(e,t){return e[t]<<8|e[t+1]}function readUint32(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}function isWhiteSpace(e){return 32===e||9===e||13===e||10===e}function isNumberArray(e,t){return Array.isArray(e)?(null===t||e.length===t)&&e.every((e=>"number"==typeof e)):ArrayBuffer.isView(e)&&(0===e.length||"number"==typeof e[0])&&(null===t||e.length===t)}function lookupMatrix(e,t){return isNumberArray(e,6)?e:t}function lookupRect(e,t){return isNumberArray(e,4)?e:t}function lookupNormalRect(e,t){return isNumberArray(e,4)?Util.normalizeRect(e):t}function parseXFAPath(e){const t=/(.+)\[(\d+)\]$/;return e.split(".").map((e=>{const i=e.match(t);return i?{name:i[1],pos:parseInt(i[2],10)}:{name:e,pos:0}}))}function escapePDFName(e){const t=[];let i=0;for(let a=0,s=e.length;a126||35===s||40===s||41===s||60===s||62===s||91===s||93===s||123===s||125===s||47===s||37===s){i"\n"===e?"\\n":"\r"===e?"\\r":`\\${e}`))}function _collectJS(e,t,i,a){if(!e)return;let s=null;if(e instanceof Ref){if(a.has(e))return;s=e;a.put(s);e=t.fetch(e)}if(Array.isArray(e))for(const s of e)_collectJS(s,t,i,a);else if(e instanceof Dict){if(isName(e.get("S"),"JavaScript")){const t=e.get("JS");let a;t instanceof BaseStream?a=t.getString():"string"==typeof t&&(a=t);a&&=stringToPDFString(a).replaceAll("\0","");a&&i.push(a)}_collectJS(e.getRaw("Next"),t,i,a)}s&&a.remove(s)}function collectActions(e,t,i){const a=Object.create(null),s=getInheritableProperty({dict:t,key:"AA",stopWhenFound:!1});if(s)for(let t=s.length-1;t>=0;t--){const r=s[t];if(r instanceof Dict)for(const t of r.getKeys()){const s=i[t];if(!s)continue;const n=[];_collectJS(r.getRaw(t),e,n,new RefSet);n.length>0&&(a[s]=n)}}if(t.has("A")){const i=[];_collectJS(t.get("A"),e,i,new RefSet);i.length>0&&(a.Action=i)}return objectSize(a)>0?a:null}const yt={60:"<",62:">",38:"&",34:""",39:"'"};function*codePointIter(e){for(let t=0,i=e.length;t55295&&(i<57344||i>65533)&&t++;yield i}}function encodeToXmlString(e){const t=[];let i=0;for(let a=0,s=e.length;a55295&&(s<57344||s>65533)&&a++;i=a+1}}if(0===t.length)return e;i: ${e}.`);return!1}return!0}function validateCSSFont(e){const t=new Set(["100","200","300","400","500","600","700","800","900","1000","normal","bold","bolder","lighter"]),{fontFamily:i,fontWeight:a,italicAngle:s}=e;if(!validateFontName(i,!0))return!1;const r=a?a.toString():"";e.fontWeight=t.has(r)?r:"400";const n=parseFloat(s);e.italicAngle=isNaN(n)||n<-90||n>90?"14":s.toString();return!0}function recoverJsURL(e){const t=new RegExp("^\\s*("+["app.launchURL","window.open","xfa.host.gotoURL"].join("|").replaceAll(".","\\.")+")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))","i").exec(e);return t?.[2]?{url:t[2],newWindow:"app.launchURL"===t[1]&&"true"===t[3]}:null}function numberToString(e){if(Number.isInteger(e))return e.toString();const t=Math.round(100*e);return t%100==0?(t/100).toString():t%10==0?e.toFixed(1):e.toFixed(2)}function getNewAnnotationsMap(e){if(!e)return null;const t=new Map;for(const[i,a]of e){if(!i.startsWith(u))continue;let e=t.get(a.pageIndex);if(!e){e=[];t.set(a.pageIndex,e)}e.push(a)}return t.size>0?t:null}function stringToAsciiOrUTF16BE(e){return function isAscii(e){return/^[\x00-\x7F]*$/.test(e)}(e)?e:stringToUTF16String(e,!0)}function stringToUTF16HexString(e){const t=[];for(let i=0,a=e.length;i>8&255],It[255&a])}return t.join("")}function stringToUTF16String(e,t=!1){const i=[];t&&i.push("þÿ");for(let t=0,a=e.length;t>8&255),String.fromCharCode(255&a))}return i.join("")}function getRotationMatrix(e,t,i){switch(e){case 90:return[0,1,-1,0,t,0];case 180:return[-1,0,0,-1,t,i];case 270:return[0,-1,1,0,0,i];default:throw new Error("Invalid rotation")}}function getSizeInBytes(e){return Math.ceil(Math.ceil(Math.log2(1+e))/8)}class Stream extends BaseStream{constructor(e,t,i,a){super();this.bytes=e instanceof Uint8Array?e:new Uint8Array(e);this.start=t||0;this.pos=this.start;this.end=t+i||this.bytes.length;this.dict=a}get length(){return this.end-this.start}get isEmpty(){return 0===this.length}getByte(){return this.pos>=this.end?-1:this.bytes[this.pos++]}getBytes(e){const t=this.bytes,i=this.pos,a=this.end;if(!e)return t.subarray(i,a);let s=i+e;s>a&&(s=a);this.pos=s;return t.subarray(i,s)}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);return this.bytes.subarray(e,t)}reset(){this.pos=this.start}moveStart(){this.start=this.pos}makeSubStream(e,t,i=null){return new Stream(this.bytes.buffer,e,t,i)}}class StringStream extends Stream{constructor(e){super(stringToBytes(e))}}class NullStream extends Stream{constructor(){super(new Uint8Array(0))}}class ChunkedStream extends Stream{constructor(e,t,i){super(new Uint8Array(e),0,e,null);this.chunkSize=t;this._loadedChunks=new Set;this.numChunks=Math.ceil(e/t);this.manager=i;this.progressiveDataLength=0;this.lastSuccessfulEnsureByteChunk=-1}getMissingChunks(){const e=[];for(let t=0,i=this.numChunks;t=this.end?this.numChunks:Math.floor(t/this.chunkSize);for(let e=i;ethis.numChunks)&&t!==this.lastSuccessfulEnsureByteChunk){if(!this._loadedChunks.has(t))throw new MissingDataException(e,e+1);this.lastSuccessfulEnsureByteChunk=t}}ensureRange(e,t){if(e>=t)return;if(t<=this.progressiveDataLength)return;const i=Math.floor(e/this.chunkSize);if(i>this.numChunks)return;const a=Math.min(Math.floor((t-1)/this.chunkSize)+1,this.numChunks);for(let s=i;s=this.end)return-1;e>=this.progressiveDataLength&&this.ensureByte(e);return this.bytes[this.pos++]}getBytes(e){const t=this.bytes,i=this.pos,a=this.end;if(!e){a>this.progressiveDataLength&&this.ensureRange(i,a);return t.subarray(i,a)}let s=i+e;s>a&&(s=a);s>this.progressiveDataLength&&this.ensureRange(i,s);this.pos=s;return t.subarray(i,s)}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);t>this.progressiveDataLength&&this.ensureRange(e,t);return this.bytes.subarray(e,t)}makeSubStream(e,t,i=null){t?e+t>this.progressiveDataLength&&this.ensureRange(e,e+t):e>=this.progressiveDataLength&&this.ensureByte(e);function ChunkedStreamSubstream(){}ChunkedStreamSubstream.prototype=Object.create(this);ChunkedStreamSubstream.prototype.getMissingChunks=function(){const e=this.chunkSize,t=Math.floor(this.start/e),i=Math.floor((this.end-1)/e)+1,a=[];for(let e=t;e{const readChunk=({value:r,done:n})=>{try{if(n){const t=arrayBuffersToBytes(a);a=null;e(t);return}s+=r.byteLength;i.isStreamingSupported&&this.onProgress({loaded:s});a.push(r);i.read().then(readChunk,t)}catch(e){t(e)}};i.read().then(readChunk,t)})).then((t=>{this.aborted||this.onReceiveData({chunk:t,begin:e})}))}requestAllChunks(e=!1){if(!e){const e=this.stream.getMissingChunks();this._requestChunks(e)}return this._loadedStreamCapability.promise}_requestChunks(e){const t=this.currRequestId++,i=new Set;this._chunksNeededByRequest.set(t,i);for(const t of e)this.stream.hasChunk(t)||i.add(t);if(0===i.size)return Promise.resolve();const a=Promise.withResolvers();this._promisesByRequest.set(t,a);const s=[];for(const e of i){let i=this._requestsByChunk.get(e);if(!i){i=[];this._requestsByChunk.set(e,i);s.push(e)}i.push(t)}if(s.length>0){const e=this.groupChunks(s);for(const t of e){const e=t.beginChunk*this.chunkSize,i=Math.min(t.endChunk*this.chunkSize,this.length);this.sendRequest(e,i).catch(a.reject)}}return a.promise.catch((e=>{if(!this.aborted)throw e}))}getStream(){return this.stream}requestRange(e,t){t=Math.min(t,this.length);const i=this.getBeginChunk(e),a=this.getEndChunk(t),s=[];for(let e=i;e=0&&a+1!==r){t.push({beginChunk:i,endChunk:a+1});i=r}s+1===e.length&&t.push({beginChunk:i,endChunk:r+1});a=r}return t}onProgress(e){this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize+e.loaded,total:this.length})}onReceiveData(e){const t=e.chunk,i=void 0===e.begin,a=i?this.progressiveDataLength:e.begin,s=a+t.byteLength,r=Math.floor(a/this.chunkSize),n=s0||g.push(i)}}}if(!this.disableAutoFetch&&0===this._requestsByChunk.size){let e;if(1===this.stream.numChunksLoaded){const t=this.stream.numChunks-1;this.stream.hasChunk(t)||(e=t)}else e=this.stream.nextEmptyChunk(n);Number.isInteger(e)&&this._requestChunks([e])}for(const e of g){const t=this._promisesByRequest.get(e);this._promisesByRequest.delete(e);t.resolve()}this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize,total:this.length})}onError(e){this._loadedStreamCapability.reject(e)}getBeginChunk(e){return Math.floor(e/this.chunkSize)}getEndChunk(e){return Math.floor((e-1)/this.chunkSize)+1}abort(e){this.aborted=!0;this.pdfNetworkStream?.cancelAllRequests(e);for(const t of this._promisesByRequest.values())t.reject(e)}}class ColorSpace{constructor(e,t){this.name=e;this.numComps=t}getRgb(e,t){const i=new Uint8ClampedArray(3);this.getRgbItem(e,t,i,0);return i}getRgbItem(e,t,i,a){unreachable("Should not call ColorSpace.getRgbItem")}getRgbBuffer(e,t,i,a,s,r,n){unreachable("Should not call ColorSpace.getRgbBuffer")}getOutputLength(e,t){unreachable("Should not call ColorSpace.getOutputLength")}isPassthrough(e){return!1}isDefaultDecode(e,t){return ColorSpace.isDefaultDecode(e,this.numComps)}fillRgb(e,t,i,a,s,r,n,g,o){const c=t*i;let C=null;const h=1<h&&"DeviceGray"!==this.name&&"DeviceRGB"!==this.name){const t=n<=8?new Uint8Array(h):new Uint16Array(h);for(let e=0;e=.99554525?1:this.#B(0,1,1.055*e**(1/2.4)-.055)}#B(e,t,i){return Math.max(e,Math.min(t,i))}#Q(e){return e<0?-this.#Q(-e):e>8?((e+16)/116)**3:e*CalRGBCS.#I}#E(e,t,i){if(0===e[0]&&0===e[1]&&0===e[2]){i[0]=t[0];i[1]=t[1];i[2]=t[2];return}const a=this.#Q(0),s=(1-a)/(1-this.#Q(e[0])),r=1-s,n=(1-a)/(1-this.#Q(e[1])),g=1-n,o=(1-a)/(1-this.#Q(e[2])),c=1-o;i[0]=t[0]*s+r;i[1]=t[1]*n+g;i[2]=t[2]*o+c}#u(e,t,i){if(1===e[0]&&1===e[2]){i[0]=t[0];i[1]=t[1];i[2]=t[2];return}const a=i;this.#c(CalRGBCS.#i,t,a);const s=CalRGBCS.#n;this.#C(e,a,s);this.#c(CalRGBCS.#a,s,i)}#d(e,t,i){const a=i;this.#c(CalRGBCS.#i,t,a);const s=CalRGBCS.#n;this.#h(e,a,s);this.#c(CalRGBCS.#a,s,i)}#t(e,t,i,a,s){const r=this.#B(0,1,e[t]*s),n=this.#B(0,1,e[t+1]*s),g=this.#B(0,1,e[t+2]*s),o=1===r?1:r**this.GR,c=1===n?1:n**this.GG,C=1===g?1:g**this.GB,h=this.MXA*o+this.MXB*c+this.MXC*C,l=this.MYA*o+this.MYB*c+this.MYC*C,Q=this.MZA*o+this.MZB*c+this.MZC*C,E=CalRGBCS.#g;E[0]=h;E[1]=l;E[2]=Q;const u=CalRGBCS.#o;this.#u(this.whitePoint,E,u);const d=CalRGBCS.#g;this.#E(this.blackPoint,u,d);const f=CalRGBCS.#o;this.#d(CalRGBCS.#r,d,f);const p=CalRGBCS.#g;this.#c(CalRGBCS.#s,f,p);i[a]=255*this.#l(p[0]);i[a+1]=255*this.#l(p[1]);i[a+2]=255*this.#l(p[2])}getRgbItem(e,t,i,a){this.#t(e,t,i,a,1)}getRgbBuffer(e,t,i,a,s,r,n){const g=1/((1<this.amax||this.bmin>this.bmax){info("Invalid Range, falling back to defaults");this.amin=-100;this.amax=100;this.bmin=-100;this.bmax=100}}#f(e){return e>=6/29?e**3:108/841*(e-4/29)}#p(e,t,i,a){return i+e*(a-i)/t}#t(e,t,i,a,s){let r=e[t],n=e[t+1],g=e[t+2];if(!1!==i){r=this.#p(r,i,0,100);n=this.#p(n,i,this.amin,this.amax);g=this.#p(g,i,this.bmin,this.bmax)}n>this.amax?n=this.amax:nthis.bmax?g=this.bmax:g>>0}function hexToStr(e,t){return 1===t?String.fromCharCode(e[0],e[1]):3===t?String.fromCharCode(e[0],e[1],e[2],e[3]):String.fromCharCode(...e.subarray(0,t+1))}function addHex(e,t,i){let a=0;for(let s=i;s>=0;s--){a+=e[s]+t[s];e[s]=255&a;a>>=8}}function incHex(e,t){let i=1;for(let a=t;a>=0&&i>0;a--){i+=e[a];e[a]=255&i;i>>=8}}const wt=16;class BinaryCMapStream{constructor(e){this.buffer=e;this.pos=0;this.end=e.length;this.tmpBuf=new Uint8Array(19)}readByte(){return this.pos>=this.end?-1:this.buffer[this.pos++]}readNumber(){let e,t=0;do{const i=this.readByte();if(i<0)throw new FormatError("unexpected EOF in bcmap");e=!(128&i);t=t<<7|127&i}while(!e);return t}readSigned(){const e=this.readNumber();return 1&e?~(e>>>1):e>>>1}readHex(e,t){e.set(this.buffer.subarray(this.pos,this.pos+t+1));this.pos+=t+1}readHexNumber(e,t){let i;const a=this.tmpBuf;let s=0;do{const e=this.readByte();if(e<0)throw new FormatError("unexpected EOF in bcmap");i=!(128&e);a[s++]=127&e}while(!i);let r=t,n=0,g=0;for(;r>=0;){for(;g<8&&a.length>0;){n|=a[--s]<>=8;g-=8}}readHexSigned(e,t){this.readHexNumber(e,t);const i=1&e[t]?255:0;let a=0;for(let s=0;s<=t;s++){a=(1&a)<<8|e[s];e[s]=a>>1^i}}readString(){const e=this.readNumber(),t=new Array(e);for(let i=0;i=0;){const e=l>>5;if(7===e){switch(31&l){case 0:a.readString();break;case 1:r=a.readString()}continue}const i=!!(16&l),s=15&l;if(s+1>wt)throw new Error("BinaryCMapReader.process: Invalid dataSize.");const Q=1,E=a.readNumber();switch(e){case 0:a.readHex(n,s);a.readHexNumber(g,s);addHex(g,n,s);t.addCodespaceRange(s+1,hexToInt(n,s),hexToInt(g,s));for(let e=1;es&&(a=s)}else{for(;!this.eof;)this.readBlock(t);a=this.bufferLength}this.pos=a;return this.buffer.subarray(i,a)}async getImageData(e,t=null){if(!this.canAsyncDecodeImageFromBuffer)return this.getBytes(e,t);const i=await this.stream.asyncGetBytes();return this.decodeImage(i,t)}reset(){this.pos=0}makeSubStream(e,t,i=null){if(void 0===t)for(;!this.eof;)this.readBlock();else{const i=e+t;for(;this.bufferLength<=i&&!this.eof;)this.readBlock()}return new Stream(this.buffer,e,t,i)}getBaseStreams(){return this.str?this.str.getBaseStreams():null}}class StreamsSequenceStream extends DecodeStream{constructor(e,t=null){e=e.filter((e=>e instanceof BaseStream));let i=0;for(const t of e)i+=t instanceof DecodeStream?t._rawMinBufferLength:t.length;super(i);this.streams=e;this._onError=t}readBlock(){const e=this.streams;if(0===e.length){this.eof=!0;return}const t=e.shift();let i;try{i=t.getBytes()}catch(e){if(this._onError){this._onError(e,t.dict?.objId);return}throw e}const a=this.bufferLength,s=a+i.length;this.ensureBuffer(s).set(i,a);this.bufferLength=s}getBaseStreams(){const e=[];for(const t of this.streams){const i=t.getBaseStreams();i&&e.push(...i)}return e.length>0?e:null}}class Ascii85Stream extends DecodeStream{constructor(e,t){t&&(t*=.8);super(t);this.str=e;this.dict=e.dict;this.input=new Uint8Array(5)}readBlock(){const e=this.str;let t=e.getByte();for(;isWhiteSpace(t);)t=e.getByte();if(-1===t||126===t){this.eof=!0;return}const i=this.bufferLength;let a,s;if(122===t){a=this.ensureBuffer(i+4);for(s=0;s<4;++s)a[i+s]=0;this.bufferLength+=4}else{const r=this.input;r[0]=t;for(s=1;s<5;++s){t=e.getByte();for(;isWhiteSpace(t);)t=e.getByte();r[s]=t;if(-1===t||126===t)break}a=this.ensureBuffer(i+s-1);this.bufferLength+=s-1;if(s<5){for(;s<5;++s)r[s]=117;this.eof=!0}let n=0;for(s=0;s<5;++s)n=85*n+(r[s]-33);for(s=3;s>=0;--s){a[i+s]=255&n;n>>=8}}}}class AsciiHexStream extends DecodeStream{constructor(e,t){t&&(t*=.5);super(t);this.str=e;this.dict=e.dict;this.firstDigit=-1}readBlock(){const e=this.str.getBytes(8e3);if(!e.length){this.eof=!0;return}const t=e.length+1>>1,i=this.ensureBuffer(this.bufferLength+t);let a=this.bufferLength,s=this.firstDigit;for(const t of e){let e;if(t>=48&&t<=57)e=15&t;else{if(!(t>=65&&t<=70||t>=97&&t<=102)){if(62===t){this.eof=!0;break}continue}e=9+(15&t)}if(s<0)s=e;else{i[a++]=s<<4|e;s=-1}}if(s>=0&&this.eof){i[a++]=s<<4;s=-1}this.firstDigit=s;this.bufferLength=a}}const bt=-1,Ft=[[-1,-1],[-1,-1],[7,8],[7,7],[6,6],[6,6],[6,5],[6,5],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2]],St=[[-1,-1],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[12,1984],[12,2048],[12,2112],[12,2176],[12,2240],[12,2304],[11,1856],[11,1856],[11,1920],[11,1920],[12,2368],[12,2432],[12,2496],[12,2560]],kt=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[8,29],[8,29],[8,30],[8,30],[8,45],[8,45],[8,46],[8,46],[7,22],[7,22],[7,22],[7,22],[7,23],[7,23],[7,23],[7,23],[8,47],[8,47],[8,48],[8,48],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[7,20],[7,20],[7,20],[7,20],[8,33],[8,33],[8,34],[8,34],[8,35],[8,35],[8,36],[8,36],[8,37],[8,37],[8,38],[8,38],[7,19],[7,19],[7,19],[7,19],[8,31],[8,31],[8,32],[8,32],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[8,53],[8,53],[8,54],[8,54],[7,26],[7,26],[7,26],[7,26],[8,39],[8,39],[8,40],[8,40],[8,41],[8,41],[8,42],[8,42],[8,43],[8,43],[8,44],[8,44],[7,21],[7,21],[7,21],[7,21],[7,28],[7,28],[7,28],[7,28],[8,61],[8,61],[8,62],[8,62],[8,63],[8,63],[8,0],[8,0],[8,320],[8,320],[8,384],[8,384],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[7,27],[7,27],[7,27],[7,27],[8,59],[8,59],[8,60],[8,60],[9,1472],[9,1536],[9,1600],[9,1728],[7,18],[7,18],[7,18],[7,18],[7,24],[7,24],[7,24],[7,24],[8,49],[8,49],[8,50],[8,50],[8,51],[8,51],[8,52],[8,52],[7,25],[7,25],[7,25],[7,25],[8,55],[8,55],[8,56],[8,56],[8,57],[8,57],[8,58],[8,58],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[8,448],[8,448],[8,512],[8,512],[9,704],[9,768],[8,640],[8,640],[8,576],[8,576],[9,832],[9,896],[9,960],[9,1024],[9,1088],[9,1152],[9,1216],[9,1280],[9,1344],[9,1408],[7,256],[7,256],[7,256],[7,256],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7]],Rt=[[-1,-1],[-1,-1],[12,-2],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[11,1792],[11,1792],[12,1984],[12,1984],[12,2048],[12,2048],[12,2112],[12,2112],[12,2176],[12,2176],[12,2240],[12,2240],[12,2304],[12,2304],[11,1856],[11,1856],[11,1856],[11,1856],[11,1920],[11,1920],[11,1920],[11,1920],[12,2368],[12,2368],[12,2432],[12,2432],[12,2496],[12,2496],[12,2560],[12,2560],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[12,52],[12,52],[13,640],[13,704],[13,768],[13,832],[12,55],[12,55],[12,56],[12,56],[13,1280],[13,1344],[13,1408],[13,1472],[12,59],[12,59],[12,60],[12,60],[13,1536],[13,1600],[11,24],[11,24],[11,24],[11,24],[11,25],[11,25],[11,25],[11,25],[13,1664],[13,1728],[12,320],[12,320],[12,384],[12,384],[12,448],[12,448],[13,512],[13,576],[12,53],[12,53],[12,54],[12,54],[13,896],[13,960],[13,1024],[13,1088],[13,1152],[13,1216],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64]],Nt=[[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[11,23],[11,23],[12,50],[12,51],[12,44],[12,45],[12,46],[12,47],[12,57],[12,58],[12,61],[12,256],[10,16],[10,16],[10,16],[10,16],[10,17],[10,17],[10,17],[10,17],[12,48],[12,49],[12,62],[12,63],[12,30],[12,31],[12,32],[12,33],[12,40],[12,41],[11,22],[11,22],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[12,128],[12,192],[12,26],[12,27],[12,28],[12,29],[11,19],[11,19],[11,20],[11,20],[12,34],[12,35],[12,36],[12,37],[12,38],[12,39],[11,21],[11,21],[12,42],[12,43],[10,0],[10,0],[10,0],[10,0],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12]],Gt=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[6,9],[6,8],[5,7],[5,7],[4,6],[4,6],[4,6],[4,6],[4,5],[4,5],[4,5],[4,5],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2]];class CCITTFaxDecoder{constructor(e,t={}){if("function"!=typeof e?.next)throw new Error('CCITTFaxDecoder - invalid "source" parameter.');this.source=e;this.eof=!1;this.encoding=t.K||0;this.eoline=t.EndOfLine||!1;this.byteAlign=t.EncodedByteAlign||!1;this.columns=t.Columns||1728;this.rows=t.Rows||0;this.eoblock=t.EndOfBlock??!0;this.black=t.BlackIs1||!1;this.codingLine=new Uint32Array(this.columns+1);this.refLine=new Uint32Array(this.columns+2);this.codingLine[0]=this.columns;this.codingPos=0;this.row=0;this.nextLine2D=this.encoding<0;this.inputBits=0;this.inputBuf=0;this.outputBits=0;this.rowsDone=!1;let i;for(;0===(i=this._lookBits(12));)this._eatBits(1);1===i&&this._eatBits(12);if(this.encoding>0){this.nextLine2D=!this._lookBits(1);this._eatBits(1)}}readNextChar(){if(this.eof)return-1;const e=this.refLine,t=this.codingLine,i=this.columns;let a,s,r,n,g;if(0===this.outputBits){this.rowsDone&&(this.eof=!0);if(this.eof)return-1;this.err=!1;let r,g,o;if(this.nextLine2D){for(n=0;t[n]=64);do{g+=o=this._getWhiteCode()}while(o>=64)}else{do{r+=o=this._getWhiteCode()}while(o>=64);do{g+=o=this._getBlackCode()}while(o>=64)}this._addPixels(t[this.codingPos]+r,s);t[this.codingPos]0?--a:++a;for(;e[a]<=t[this.codingPos]&&e[a]0?--a:++a;for(;e[a]<=t[this.codingPos]&&e[a]0?--a:++a;for(;e[a]<=t[this.codingPos]&&e[a]=64);else do{r+=o=this._getWhiteCode()}while(o>=64);this._addPixels(t[this.codingPos]+r,s);s^=1}}let c=!1;this.byteAlign&&(this.inputBits&=-8);if(this.eoblock||this.row!==this.rows-1){r=this._lookBits(12);if(this.eoline)for(;r!==bt&&1!==r;){this._eatBits(1);r=this._lookBits(12)}else for(;0===r;){this._eatBits(1);r=this._lookBits(12)}if(1===r){this._eatBits(12);c=!0}else r===bt&&(this.eof=!0)}else this.rowsDone=!0;if(!this.eof&&this.encoding>0&&!this.rowsDone){this.nextLine2D=!this._lookBits(1);this._eatBits(1)}if(this.eoblock&&c&&this.byteAlign){r=this._lookBits(12);if(1===r){this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}if(this.encoding>=0)for(n=0;n<4;++n){r=this._lookBits(12);1!==r&&info("bad rtc code: "+r);this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}}this.eof=!0}}else if(this.err&&this.eoline){for(;;){r=this._lookBits(13);if(r===bt){this.eof=!0;return-1}if(r>>1==1)break;this._eatBits(1)}this._eatBits(12);if(this.encoding>0){this._eatBits(1);this.nextLine2D=!(1&r)}}this.outputBits=t[0]>0?t[this.codingPos=0]:t[this.codingPos=1];this.row++}if(this.outputBits>=8){g=1&this.codingPos?0:255;this.outputBits-=8;if(0===this.outputBits&&t[this.codingPos]r){g<<=r;1&this.codingPos||(g|=255>>8-r);this.outputBits-=r;r=0}else{g<<=this.outputBits;1&this.codingPos||(g|=255>>8-this.outputBits);r-=this.outputBits;this.outputBits=0;if(t[this.codingPos]0){g<<=r;r=0}}}while(r)}this.black&&(g^=255);return g}_addPixels(e,t){const i=this.codingLine;let a=this.codingPos;if(e>i[a]){if(e>this.columns){info("row is wrong length");this.err=!0;e=this.columns}1&a^t&&++a;i[a]=e}this.codingPos=a}_addPixelsNeg(e,t){const i=this.codingLine;let a=this.codingPos;if(e>i[a]){if(e>this.columns){info("row is wrong length");this.err=!0;e=this.columns}1&a^t&&++a;i[a]=e}else if(e0&&e=s){const t=i[e-s];if(t[0]===a){this._eatBits(a);return[!0,t[1],!0]}}}return[!1,0,!1]}_getTwoDimCode(){let e,t=0;if(this.eoblock){t=this._lookBits(7);e=Ft[t];if(e?.[0]>0){this._eatBits(e[0]);return e[1]}}else{const e=this._findTableCode(1,7,Ft);if(e[0]&&e[2])return e[1]}info("Bad two dim code");return bt}_getWhiteCode(){let e,t=0;if(this.eoblock){t=this._lookBits(12);if(t===bt)return 1;e=t>>5?kt[t>>3]:St[t];if(e[0]>0){this._eatBits(e[0]);return e[1]}}else{let e=this._findTableCode(1,9,kt);if(e[0])return e[1];e=this._findTableCode(11,12,St);if(e[0])return e[1]}info("bad white code");this._eatBits(1);return 1}_getBlackCode(){let e,t;if(this.eoblock){e=this._lookBits(13);if(e===bt)return 1;t=e>>7?!(e>>9)&&e>>7?Nt[(e>>1)-64]:Gt[e>>7]:Rt[e];if(t[0]>0){this._eatBits(t[0]);return t[1]}}else{let e=this._findTableCode(2,6,Gt);if(e[0])return e[1];e=this._findTableCode(7,12,Nt,64);if(e[0])return e[1];e=this._findTableCode(10,13,Rt);if(e[0])return e[1]}info("bad black code");this._eatBits(1);return 1}_lookBits(e){let t;for(;this.inputBits>16-e;this.inputBuf=this.inputBuf<<8|t;this.inputBits+=8}return this.inputBuf>>this.inputBits-e&65535>>16-e}_eatBits(e){(this.inputBits-=e)<0&&(this.inputBits=0)}}class CCITTFaxStream extends DecodeStream{constructor(e,t,i){super(t);this.str=e;this.dict=e.dict;i instanceof Dict||(i=Dict.empty);const a={next:()=>e.getByte()};this.ccittFaxDecoder=new CCITTFaxDecoder(a,{K:i.get("K"),EndOfLine:i.get("EndOfLine"),EncodedByteAlign:i.get("EncodedByteAlign"),Columns:i.get("Columns"),Rows:i.get("Rows"),EndOfBlock:i.get("EndOfBlock"),BlackIs1:i.get("BlackIs1")})}readBlock(){for(;!this.eof;){const e=this.ccittFaxDecoder.readNextChar();if(-1===e){this.eof=!0;return}this.ensureBuffer(this.bufferLength+1);this.buffer[this.bufferLength++]=e}}}const Mt=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ut=new Int32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),xt=new Int32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),Lt=[new Int32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59e4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],Ht=[new Int32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];class FlateStream extends DecodeStream{constructor(e,t){super(t);this.str=e;this.dict=e.dict;const i=e.getByte(),a=e.getByte();if(-1===i||-1===a)throw new FormatError(`Invalid header in flate stream: ${i}, ${a}`);if(8!=(15&i))throw new FormatError(`Unknown compression method in flate stream: ${i}, ${a}`);if(((i<<8)+a)%31!=0)throw new FormatError(`Bad FCHECK in flate stream: ${i}, ${a}`);if(32&a)throw new FormatError(`FDICT bit set in flate stream: ${i}, ${a}`);this.codeSize=0;this.codeBuf=0}async getImageData(e,t){const i=await this.asyncGetBytes();return i?.subarray(0,e)||this.getBytes(e)}async asyncGetBytes(){this.str.reset();const e=this.str.getBytes();try{const{readable:t,writable:i}=new DecompressionStream("deflate"),a=i.getWriter();await a.ready;a.write(e).then((async()=>{await a.ready;await a.close()})).catch((()=>{}));const s=[];let r=0;for await(const e of t){s.push(e);r+=e.byteLength}const n=new Uint8Array(r);let g=0;for(const e of s){n.set(e,g);g+=e.byteLength}return n}catch{this.str=new Stream(e,2,e.length,this.str.dict);this.reset();return null}}get isAsync(){return!0}getBits(e){const t=this.str;let i,a=this.codeSize,s=this.codeBuf;for(;a>e;this.codeSize=a-=e;return i}getCode(e){const t=this.str,i=e[0],a=e[1];let s,r=this.codeSize,n=this.codeBuf;for(;r>16,c=65535&g;if(o<1||r>o;this.codeSize=r-o;return c}generateHuffmanTable(e){const t=e.length;let i,a=0;for(i=0;ia&&(a=e[i]);const s=1<>=1}for(i=e;i>=1;if(0===t){let t;if(-1===(t=a.getByte())){this.#m("Bad block header in flate stream");return}let i=t;if(-1===(t=a.getByte())){this.#m("Bad block header in flate stream");return}i|=t<<8;if(-1===(t=a.getByte())){this.#m("Bad block header in flate stream");return}let s=t;if(-1===(t=a.getByte())){this.#m("Bad block header in flate stream");return}s|=t<<8;if(s!==(65535&~i)&&(0!==i||0!==s))throw new FormatError("Bad uncompressed block length in flate stream");this.codeBuf=0;this.codeSize=0;const r=this.bufferLength,n=r+i;e=this.ensureBuffer(n);this.bufferLength=n;if(0===i)-1===a.peekByte()&&(this.eof=!0);else{const t=a.getBytes(i);e.set(t,r);t.length0;)C[g++]=Q}s=this.generateHuffmanTable(C.subarray(0,e));r=this.generateHuffmanTable(C.subarray(e,c))}}e=this.buffer;let n=e?e.length:0,g=this.bufferLength;for(;;){let t=this.getCode(s);if(t<256){if(g+1>=n){e=this.ensureBuffer(g+1);n=e.length}e[g++]=t;continue}if(256===t){this.bufferLength=g;return}t-=257;t=Ut[t];let a=t>>16;a>0&&(a=this.getBits(a));i=(65535&t)+a;t=this.getCode(r);t=xt[t];a=t>>16;a>0&&(a=this.getBits(a));const o=(65535&t)+a;if(g+i>=n){e=this.ensureBuffer(g+i);n=e.length}for(let t=0;t>9&127;this.clow=this.clow<<7&65535;this.ct-=7;this.a=32768}byteIn(){const e=this.data;let t=this.bp;if(255===e[t])if(e[t+1]>143){this.clow+=65280;this.ct=8}else{t++;this.clow+=e[t]<<9;this.ct=7;this.bp=t}else{t++;this.clow+=t65535){this.chigh+=this.clow>>16;this.clow&=65535}}readBit(e,t){let i=e[t]>>1,a=1&e[t];const s=Jt[i],r=s.qe;let n,g=this.a-r;if(this.chigh>15&1;this.clow=this.clow<<1&65535;this.ct--}while(!(32768&g));this.a=g;e[t]=i<<1|a;return n}}class Jbig2Error extends ot{constructor(e){super(e,"Jbig2Error")}}class ContextCache{getContexts(e){return e in this?this[e]:this[e]=new Int8Array(65536)}}class DecodingContext{constructor(e,t,i){this.data=e;this.start=t;this.end=i}get decoder(){return shadow(this,"decoder",new ArithmeticDecoder(this.data,this.start,this.end))}get contextCache(){return shadow(this,"contextCache",new ContextCache)}}function decodeInteger(e,t,i){const a=e.getContexts(t);let s=1;function readBits(e){let t=0;for(let r=0;r>>0}const r=readBits(1),n=readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(32)+4436:readBits(12)+340:readBits(8)+84:readBits(6)+20:readBits(4)+4:readBits(2);let g;0===r?g=n:n>0&&(g=-n);return g>=-2147483648&&g<=pt?g:null}function decodeIAID(e,t,i){const a=e.getContexts("IAID");let s=1;for(let e=0;e=F&&x=S){K=K<<1&d;for(u=0;u=0&&H=0){J=G[L][H];J&&(K|=J<=e?c<<=1:c=c<<1|w[g][o]}for(Q=0;Q=m||o<0||o>=p?c<<=1:c=c<<1|a[g][o]}const E=D.readBit(b,c);t[n]=E}}return w}function decodeTextRegion(e,t,i,a,s,r,n,g,o,c,C,h,l,Q,E,u,d,f,p){if(e&&t)throw new Jbig2Error("refinement with Huffman is not supported");const m=[];let y,w;for(y=0;y1&&(s=e?p.readBits(f):decodeInteger(b,"IAIT",D));const r=n*F+s,S=e?Q.symbolIDTable.decode(p):decodeIAID(b,D,o),k=t&&(e?p.readBit():decodeInteger(b,"IARI",D));let R=g[S],N=R[0].length,G=R.length;if(k){const e=decodeInteger(b,"IARDW",D),t=decodeInteger(b,"IARDH",D);N+=e;G+=t;R=decodeRefinement(N,G,E,R,(e>>1)+decodeInteger(b,"IARDX",D),(t>>1)+decodeInteger(b,"IARDY",D),!1,u,d)}let M=0;c?1&h?M=G-1:a+=G-1:h>1?a+=N-1:M=N-1;const U=r-(1&h?0:G-1),x=a-(2&h?N-1:0);let L,H,J;if(c)for(L=0;L>5&7;const o=[31&n];let c=t+6;if(7===n){g=536870911&readUint32(e,c-1);c+=3;let t=g+7>>3;o[0]=e[c++];for(;--t>0;)o.push(e[c++])}else if(5===n||6===n)throw new Jbig2Error("invalid referred-to flags");i.retainBits=o;let C=4;i.number<=256?C=1:i.number<=65536&&(C=2);const h=[];let l,Q;for(l=0;l>>24&255;r[3]=t.height>>16&255;r[4]=t.height>>8&255;r[5]=255&t.height;for(l=c,Q=e.length;l>2&3;e.huffmanDWSelector=t>>4&3;e.bitmapSizeSelector=t>>6&1;e.aggregationInstancesSelector=t>>7&1;e.bitmapCodingContextUsed=!!(256&t);e.bitmapCodingContextRetained=!!(512&t);e.template=t>>10&3;e.refinementTemplate=t>>12&1;c+=2;if(!e.huffman){o=0===e.template?4:1;n=[];for(g=0;g>2&3;C.stripSize=1<>4&3;C.transposed=!!(64&h);C.combinationOperator=h>>7&3;C.defaultPixelValue=h>>9&1;C.dsOffset=h<<17>>27;C.refinementTemplate=h>>15&1;if(C.huffman){const e=readUint16(a,c);c+=2;C.huffmanFS=3&e;C.huffmanDS=e>>2&3;C.huffmanDT=e>>4&3;C.huffmanRefinementDW=e>>6&3;C.huffmanRefinementDH=e>>8&3;C.huffmanRefinementDX=e>>10&3;C.huffmanRefinementDY=e>>12&3;C.huffmanRefinementSizeSelector=!!(16384&e)}if(C.refinement&&!C.refinementTemplate){n=[];for(g=0;g<2;g++){n.push({x:readInt8(a,c),y:readInt8(a,c+1)});c+=2}C.refinementAt=n}C.numberOfSymbolInstances=readUint32(a,c);c+=4;r=[C,i.referredTo,a,c,s];break;case 16:const l={},Q=a[c++];l.mmr=!!(1&Q);l.template=Q>>1&3;l.patternWidth=a[c++];l.patternHeight=a[c++];l.maxPatternIndex=readUint32(a,c);c+=4;r=[l,i.number,a,c,s];break;case 22:case 23:const E={};E.info=readRegionSegmentInformation(a,c);c+=Ot;const u=a[c++];E.mmr=!!(1&u);E.template=u>>1&3;E.enableSkip=!!(8&u);E.combinationOperator=u>>4&7;E.defaultPixelValue=u>>7&1;E.gridWidth=readUint32(a,c);c+=4;E.gridHeight=readUint32(a,c);c+=4;E.gridOffsetX=4294967295&readUint32(a,c);c+=4;E.gridOffsetY=4294967295&readUint32(a,c);c+=4;E.gridVectorX=readUint16(a,c);c+=2;E.gridVectorY=readUint16(a,c);c+=2;r=[E,i.referredTo,a,c,s];break;case 38:case 39:const d={};d.info=readRegionSegmentInformation(a,c);c+=Ot;const f=a[c++];d.mmr=!!(1&f);d.template=f>>1&3;d.prediction=!!(8&f);if(!d.mmr){o=0===d.template?4:1;n=[];for(g=0;g>2&1;p.combinationOperator=m>>3&3;p.requiresBuffer=!!(32&m);p.combinationOperatorOverride=!!(64&m);r=[p];break;case 49:case 50:case 51:case 62:break;case 53:r=[i.number,a,c,s];break;default:throw new Jbig2Error(`segment type ${i.typeName}(${i.type}) is not implemented`)}const C="on"+i.typeName;C in t&&t[C].apply(t,r)}function processSegments(e,t){for(let i=0,a=e.length;i>3,i=new Uint8ClampedArray(t*e.height);e.defaultPixelValue&&i.fill(255);this.buffer=i}drawBitmap(e,t){const i=this.currentPageInfo,a=e.width,s=e.height,r=i.width+7>>3,n=i.combinationOperatorOverride?e.combinationOperator:i.combinationOperator,g=this.buffer,o=128>>(7&e.x);let c,C,h,l,Q=e.y*r+(e.x>>3);switch(n){case 0:for(c=0;c>=1;if(!h){h=128;l++}}Q+=r}break;case 2:for(c=0;c>=1;if(!h){h=128;l++}}Q+=r}break;default:throw new Jbig2Error(`operator ${n} is not supported`)}}onImmediateGenericRegion(e,t,i,a){const s=e.info,r=new DecodingContext(t,i,a),n=decodeBitmap(e.mmr,s.width,s.height,e.template,e.prediction,null,e.at,r);this.drawBitmap(s,n)}onImmediateLosslessGenericRegion(){this.onImmediateGenericRegion(...arguments)}onSymbolDictionary(e,t,i,a,s,r){let n,g;if(e.huffman){n=function getSymbolDictionaryHuffmanTables(e,t,i){let a,s,r,n,g=0;switch(e.huffmanDHSelector){case 0:case 1:a=getStandardTable(e.huffmanDHSelector+4);break;case 3:a=getCustomHuffmanTable(g,t,i);g++;break;default:throw new Jbig2Error("invalid Huffman DH selector")}switch(e.huffmanDWSelector){case 0:case 1:s=getStandardTable(e.huffmanDWSelector+2);break;case 3:s=getCustomHuffmanTable(g,t,i);g++;break;default:throw new Jbig2Error("invalid Huffman DW selector")}if(e.bitmapSizeSelector){r=getCustomHuffmanTable(g,t,i);g++}else r=getStandardTable(1);n=e.aggregationInstancesSelector?getCustomHuffmanTable(g,t,i):getStandardTable(1);return{tableDeltaHeight:a,tableDeltaWidth:s,tableBitmapSize:r,tableAggregateInstances:n}}(e,i,this.customTables);g=new Reader(a,s,r)}let o=this.symbols;o||(this.symbols=o={});const c=[];for(const e of i){const t=o[e];t&&c.push(...t)}const C=new DecodingContext(a,s,r);o[t]=function decodeSymbolDictionary(e,t,i,a,s,r,n,g,o,c,C,h){if(e&&t)throw new Jbig2Error("symbol refinement with Huffman is not supported");const l=[];let Q=0,E=log2(i.length+a);const u=C.decoder,d=C.contextCache;let f,p;if(e){f=getStandardTable(1);p=[];E=Math.max(E,1)}for(;l.length1)m=decodeTextRegion(e,t,a,Q,0,s,1,i.concat(l),E,0,0,1,0,r,o,c,C,0,h);else{const e=decodeIAID(d,u,E),t=decodeInteger(d,"IARDX",u),s=decodeInteger(d,"IARDY",u);m=decodeRefinement(a,Q,o,e=32){let i,a,n;switch(t){case 32:if(0===e)throw new Jbig2Error("no previous value in symbol ID table");a=s.readBits(2)+3;i=r[e-1].prefixLength;break;case 33:a=s.readBits(3)+3;i=0;break;case 34:a=s.readBits(7)+11;i=0;break;default:throw new Jbig2Error("invalid code length in symbol ID table")}for(n=0;n=0;d--){R=e?decodeMMRBitmap(k,o,c,!0):decodeBitmap(!1,o,c,i,!1,null,F,E);S[d]=R}for(N=0;N=0;f--){M^=S[f][N][G];U|=M<>8;H=h+N*l-G*Q>>8;if(L>=0&&L+w<=a&&H>=0&&H+D<=s)for(d=0;d=s)){Y=u[t];J=x[d];for(f=0;f=0&&e>1&7),o=1+(a>>4&7),c=[];let C,h,l=s;do{C=n.readBits(g);h=n.readBits(o);c.push(new HuffmanLine([l,C,h,0]));l+=1<>t&1;if(t<=0)this.children[i]=new HuffmanTreeNode(e);else{let a=this.children[i];a||(this.children[i]=a=new HuffmanTreeNode(null));a.buildTree(e,t-1)}}decodeNode(e){if(this.isLeaf){if(this.isOOB)return null;const t=e.readBits(this.rangeLength);return this.rangeLow+(this.isLowerRange?-t:t)}const t=this.children[e.readBit()];if(!t)throw new Jbig2Error("invalid Huffman data");return t.decodeNode(e)}}class HuffmanTable{constructor(e,t){t||this.assignPrefixCodes(e);this.rootNode=new HuffmanTreeNode(null);for(let t=0,i=e.length;t0&&this.rootNode.buildTree(i,i.prefixLength-1)}}decode(e){return this.rootNode.decodeNode(e)}assignPrefixCodes(e){const t=e.length;let i=0;for(let a=0;a=this.end)throw new Jbig2Error("end of data while reading bit");this.currentByte=this.data[this.position++];this.shift=7}const e=this.currentByte>>this.shift&1;this.shift--;return e}readBits(e){let t,i=0;for(t=e-1;t>=0;t--)i|=this.readBit()<=this.end?-1:this.data[this.position++]}}function getCustomHuffmanTable(e,t,i){let a=0;for(let s=0,r=t.length;s>i&1;i--}}if(a&&!g){const e=5;for(let t=0;t>2,c=new Uint32Array(e.buffer,t,o);if(FeatureTest.isLittleEndian){for(;n>>24|t<<8|4278190080;i[a+2]=t>>>16|s<<16|4278190080;i[a+3]=s>>>8|4278190080}for(let s=4*n,r=t+g;s>>8|255;i[a+2]=t<<16|s>>>16|255;i[a+3]=s<<8|255}for(let s=4*n,r=t+g;s>3,h=7&a,l=e.length;i=new Uint32Array(i.buffer);let Q=0;for(let a=0;a0&&!e[r-1];)r--;const n=[{children:[],index:0}];let g,o=n[0];for(i=0;i0;)o=n.pop();o.index++;n.push(o);for(;n.length<=i;){n.push(g={children:[],index:0});o.children[o.index]=g.children;o=g}s++}if(i+10){E--;return Q>>E&1}Q=e[t++];if(255===Q){const a=e[t++];if(a){if(220===a&&c){const a=readUint16(e,t+=2);t+=2;if(a>0&&a!==i.scanLines)throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data",a)}else if(217===a){if(c){const e=p*(8===i.precision?8:0);if(e>0&&Math.round(i.scanLines/e)>=5)throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect `scanLines` parameter",e)}throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data")}throw new JpegError(`unexpected marker ${(Q<<8|a).toString(16)}`)}}E=7;return Q>>>7}function decodeHuffman(e){let t=e;for(;;){t=t[readBit()];switch(typeof t){case"number":return t;case"object":continue}throw new JpegError("invalid huffman sequence")}}function receive(e){let t=0;for(;e>0;){t=t<<1|readBit();e--}return t}function receiveAndExtend(e){if(1===e)return 1===readBit()?1:-1;const t=receive(e);return t>=1<0){u--;return}let i=r;const a=n;for(;i<=a;){const a=decodeHuffman(e.huffmanTableAC),s=15&a,r=a>>4;if(0===s){if(r<15){u=receive(r)+(1<>4;if(0===s)if(c<15){u=receive(c)+(1<>4;if(0===a){if(r<15)break;s+=16;continue}s+=r;const n=Wt[s];e.blockData[t+n]=receiveAndExtend(a);s++}};let k,R=0;const N=1===m?a[0].blocksPerLine*a[0].blocksPerColumn:C*i.mcusPerColumn;let G,M;for(;R<=N;){const i=s?Math.min(N-R,s):N;if(i>0){for(w=0;w0?"unexpected":"excessive"} MCU data, current marker is: ${k.invalid}`);t=k.offset}if(!(k.marker>=65488&&k.marker<=65495))break;t+=2}return t-l}function quantizeAndInverse(e,t,i){const a=e.quantizationTable,s=e.blockData;let r,n,g,o,c,C,h,l,Q,E,u,d,f,p,m,y,w;if(!a)throw new JpegError("missing required Quantization Table.");for(let e=0;e<64;e+=8){Q=s[t+e];E=s[t+e+1];u=s[t+e+2];d=s[t+e+3];f=s[t+e+4];p=s[t+e+5];m=s[t+e+6];y=s[t+e+7];Q*=a[e];if(E|u|d|f|p|m|y){E*=a[e+1];u*=a[e+2];d*=a[e+3];f*=a[e+4];p*=a[e+5];m*=a[e+6];y*=a[e+7];r=$t*Q+128>>8;n=$t*f+128>>8;g=u;o=m;c=Ai*(E-y)+128>>8;l=Ai*(E+y)+128>>8;C=d<<4;h=p<<4;r=r+n+1>>1;n=r-n;w=g*_t+o*zt+128>>8;g=g*zt-o*_t+128>>8;o=w;c=c+h+1>>1;h=c-h;l=l+C+1>>1;C=l-C;r=r+o+1>>1;o=r-o;n=n+g+1>>1;g=n-g;w=c*Vt+l*Zt+2048>>12;c=c*Zt-l*Vt+2048>>12;l=w;w=C*Xt+h*jt+2048>>12;C=C*jt-h*Xt+2048>>12;h=w;i[e]=r+l;i[e+7]=r-l;i[e+1]=n+h;i[e+6]=n-h;i[e+2]=g+C;i[e+5]=g-C;i[e+3]=o+c;i[e+4]=o-c}else{w=$t*Q+512>>10;i[e]=w;i[e+1]=w;i[e+2]=w;i[e+3]=w;i[e+4]=w;i[e+5]=w;i[e+6]=w;i[e+7]=w}}for(let e=0;e<8;++e){Q=i[e];E=i[e+8];u=i[e+16];d=i[e+24];f=i[e+32];p=i[e+40];m=i[e+48];y=i[e+56];if(E|u|d|f|p|m|y){r=$t*Q+2048>>12;n=$t*f+2048>>12;g=u;o=m;c=Ai*(E-y)+2048>>12;l=Ai*(E+y)+2048>>12;C=d;h=p;r=4112+(r+n+1>>1);n=r-n;w=g*_t+o*zt+2048>>12;g=g*zt-o*_t+2048>>12;o=w;c=c+h+1>>1;h=c-h;l=l+C+1>>1;C=l-C;r=r+o+1>>1;o=r-o;n=n+g+1>>1;g=n-g;w=c*Vt+l*Zt+2048>>12;c=c*Zt-l*Vt+2048>>12;l=w;w=C*Xt+h*jt+2048>>12;C=C*jt-h*Xt+2048>>12;h=w;Q=r+l;y=r-l;E=n+h;m=n-h;u=g+C;p=g-C;d=o+c;f=o-c;Q<16?Q=0:Q>=4080?Q=255:Q>>=4;E<16?E=0:E>=4080?E=255:E>>=4;u<16?u=0:u>=4080?u=255:u>>=4;d<16?d=0:d>=4080?d=255:d>>=4;f<16?f=0:f>=4080?f=255:f>>=4;p<16?p=0:p>=4080?p=255:p>>=4;m<16?m=0:m>=4080?m=255:m>>=4;y<16?y=0:y>=4080?y=255:y>>=4;s[t+e]=Q;s[t+e+8]=E;s[t+e+16]=u;s[t+e+24]=d;s[t+e+32]=f;s[t+e+40]=p;s[t+e+48]=m;s[t+e+56]=y}else{w=$t*Q+8192>>14;w=w<-2040?0:w>=2024?255:w+2056>>4;s[t+e]=w;s[t+e+8]=w;s[t+e+16]=w;s[t+e+24]=w;s[t+e+32]=w;s[t+e+40]=w;s[t+e+48]=w;s[t+e+56]=w}}}function buildComponentData(e,t){const i=t.blocksPerLine,a=t.blocksPerColumn,s=new Int16Array(64);for(let e=0;e=a)return null;const r=readUint16(e,t);if(r>=65472&&r<=65534)return{invalid:null,marker:r,offset:t};let n=readUint16(e,s);for(;!(n>=65472&&n<=65534);){if(++s>=a)return null;n=readUint16(e,s)}return{invalid:r.toString(16),marker:n,offset:s}}function prepareComponents(e){const t=Math.ceil(e.samplesPerLine/8/e.maxH),i=Math.ceil(e.scanLines/8/e.maxV);for(const a of e.components){const s=Math.ceil(Math.ceil(e.samplesPerLine/8)*a.h/e.maxH),r=Math.ceil(Math.ceil(e.scanLines/8)*a.v/e.maxV),n=t*a.h,g=64*(i*a.v)*(n+1);a.blockData=new Int16Array(g);a.blocksPerLine=s;a.blocksPerColumn=r}e.mcusPerLine=t;e.mcusPerColumn=i}function readDataBlock(e,t){const i=readUint16(e,t);let a=(t+=2)+i-2;const s=findNextFileMarker(e,a,t);if(s?.invalid){warn("readDataBlock - incorrect length, current marker is: "+s.invalid);a=s.offset}const r=e.subarray(t,a);return{appData:r,newOffset:t+=r.length}}function skipData(e,t){const i=readUint16(e,t),a=(t+=2)+i-2,s=findNextFileMarker(e,a,t);return s?.invalid?s.offset:a}class JpegImage{constructor({decodeTransform:e=null,colorTransform:t=-1}={}){this._decodeTransform=e;this._colorTransform=t}static canUseImageDecoder(e,t=-1){let i=0,a=null,s=readUint16(e,i);i+=2;if(65496!==s)throw new JpegError("SOI not found");s=readUint16(e,i);i+=2;A:for(;65497!==s;){switch(s){case 65472:case 65473:case 65474:a=e[i+7];break A;case 65535:255!==e[i]&&i--}i=skipData(e,i);s=readUint16(e,i);i+=2}return 4!==a&&(3!==a||0!==t)}parse(e,{dnlScanLines:t=null}={}){let i,a,s=0,r=null,n=null,g=0;const o=[],c=[],C=[];let h=readUint16(e,s);s+=2;if(65496!==h)throw new JpegError("SOI not found");h=readUint16(e,s);s+=2;A:for(;65497!==h;){let l,Q,E;switch(h){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:const{appData:u,newOffset:d}=readDataBlock(e,s);s=d;65504===h&&74===u[0]&&70===u[1]&&73===u[2]&&70===u[3]&&0===u[4]&&(r={version:{major:u[5],minor:u[6]},densityUnits:u[7],xDensity:u[8]<<8|u[9],yDensity:u[10]<<8|u[11],thumbWidth:u[12],thumbHeight:u[13],thumbData:u.subarray(14,14+3*u[12]*u[13])});65518===h&&65===u[0]&&100===u[1]&&111===u[2]&&98===u[3]&&101===u[4]&&(n={version:u[5]<<8|u[6],flags0:u[7]<<8|u[8],flags1:u[9]<<8|u[10],transformCode:u[11]});break;case 65499:const f=readUint16(e,s);s+=2;const p=f+s-2;let m;for(;s>4){if(t>>4!=1)throw new JpegError("DQT - invalid table spec");for(Q=0;Q<64;Q++){m=Wt[Q];i[m]=readUint16(e,s);s+=2}}else for(Q=0;Q<64;Q++){m=Wt[Q];i[m]=e[s++]}o[15&t]=i}break;case 65472:case 65473:case 65474:if(i)throw new JpegError("Only single frame JPEGs supported");s+=2;i={};i.extended=65473===h;i.progressive=65474===h;i.precision=e[s++];const y=readUint16(e,s);s+=2;i.scanLines=t||y;i.samplesPerLine=readUint16(e,s);s+=2;i.components=[];i.componentIds={};const w=e[s++];let D=0,b=0;for(l=0;l>4,r=15&e[s+1];D>4?c:C)[15&t]=buildHuffmanTable(i,r)}break;case 65501:s+=2;a=readUint16(e,s);s+=2;break;case 65498:const S=1==++g&&!t;s+=2;const k=e[s++],R=[];for(l=0;l>4];r.huffmanTableAC=c[15&n];R.push(r)}const N=e[s++],G=e[s++],M=e[s++];try{s+=decodeScan(e,s,i,R,a,N,G,M>>4,15&M,S)}catch(t){if(t instanceof DNLMarkerError){warn(`${t.message} -- attempting to re-parse the JPEG image.`);return this.parse(e,{dnlScanLines:t.scanLines})}if(t instanceof EOIMarkerError){warn(`${t.message} -- ignoring the rest of the image data.`);break A}throw t}break;case 65500:s+=4;break;case 65535:255!==e[s]&&s--;break;default:const U=findNextFileMarker(e,s-2,s-3);if(U?.invalid){warn("JpegImage.parse - unexpected data, current marker is: "+U.invalid);s=U.offset;break}if(!U||s>=e.length-1){warn("JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).");break A}throw new JpegError("JpegImage.parse - unknown marker: "+h.toString(16))}h=readUint16(e,s);s+=2}if(!i)throw new JpegError("JpegImage.parse - no frame data found.");this.width=i.samplesPerLine;this.height=i.scanLines;this.jfif=r;this.adobe=n;this.components=[];for(const e of i.components){const t=o[e.quantizationId];t&&(e.quantizationTable=t);this.components.push({index:e.index,output:buildComponentData(0,e),scaleX:e.h/i.maxH,scaleY:e.v/i.maxV,blocksPerLine:e.blocksPerLine,blocksPerColumn:e.blocksPerColumn})}this.numComponents=this.components.length}_getLinearizedBlockData(e,t,i=!1){const a=this.width/e,s=this.height/t;let r,n,g,o,c,C,h,l,Q,E,u,d=0;const f=this.components.length,p=e*t*f,m=new Uint8ClampedArray(p),y=new Uint32Array(e),w=4294967288;let D;for(h=0;h>8)+b[Q+1];return m}get _isColorConversionNeeded(){return this.adobe?!!this.adobe.transformCode:3===this.numComponents?0!==this._colorTransform&&(82!==this.components[0].index||71!==this.components[1].index||66!==this.components[2].index):1===this._colorTransform}_convertYccToRgb(e){let t,i,a;for(let s=0,r=e.length;s4)throw new JpegError("Unsupported color mode");const r=this._getLinearizedBlockData(e,t,s);if(1===this.numComponents&&(i||a)){const e=r.length*(i?4:3),t=new Uint8ClampedArray(e);let a=0;if(i)!function grayToRGBA(e,t){if(FeatureTest.isLittleEndian)for(let i=0,a=e.length;i0&&(e=e.subarray(t));break}return e}decodeImage(e){if(this.eof)return this.buffer;e=this.#w(e||this.bytes);const t=new JpegImage(this.jpegOptions);t.parse(e);const i=t.getData({width:this.drawWidth,height:this.drawHeight,forceRGBA:this.forceRGBA,forceRGB:this.forceRGB,isSourcePDF:!0});this.buffer=i;this.bufferLength=i.length;this.eof=!0;return this.buffer}get canAsyncDecodeImageFromBuffer(){return this.stream.isAsync}async getTransferableImage(){if(!await JpegStream.canUseImageDecoder)return null;const e=this.jpegOptions;if(e.decodeTransform)return null;let t;try{const i=this.canAsyncDecodeImageFromBuffer&&await this.stream.asyncGetBytes()||this.bytes;if(!i)return null;const a=this.#w(i);if(!JpegImage.canUseImageDecoder(a,e.colorTransform))return null;t=new ImageDecoder({data:a,type:"image/jpeg",preferAnimation:!1});return(await t.decode()).image}catch(e){warn(`getTransferableImage - failed: "${e}".`);return null}finally{t?.close()}}}var ei,ti=(ei="undefined"!=typeof document?document.currentScript?.src:void 0,function(e={}){var t,i,a=e;new Promise(((e,a)=>{t=e;i=a}));a.decode=function(e,{numComponents:t=4,isIndexedColormap:i=!1,smaskInData:s=!1}){const r=e.length,n=a._malloc(r);a.HEAPU8.set(e,n);const g=a._jp2_decode(n,r,t>0?t:0,!!i,!!s);a._free(n);if(g){const{errorMessages:e}=a;if(e){delete a.errorMessages;return e}return"Unknown error"}const{imageData:o}=a;a.imageData=null;return o};var s=Object.assign({},a),r="./this.program",quit_=(e,t)=>{throw t},n="";"undefined"!=typeof document&&document.currentScript&&(n=document.currentScript.src);ei&&(n=ei);n=n.startsWith("blob:")?"":n.substr(0,n.replace(/[?#].*/,"").lastIndexOf("/")+1);var g=a.print||console.log.bind(console),o=a.printErr||console.error.bind(console);Object.assign(a,s);s=null;a.arguments&&a.arguments;a.thisProgram&&(r=a.thisProgram);var c,C=a.wasmBinary;function tryParseAsDataURI(e){if(isDataURI(e))return function intArrayFromBase64(e){for(var t=atob(e),i=new Uint8Array(t.length),a=0;ae.startsWith(b);function instantiateSync(e,t){var i,a=function getBinarySync(e){if(e==d&&C)return new Uint8Array(C);var t=tryParseAsDataURI(e);if(t)return t;throw'sync fetching of the wasm failed: you can preload it to Module["wasmBinary"] manually, or emcc.py will do that for you when generating HTML (but not JS)'}(e);i=new WebAssembly.Module(a);return[new WebAssembly.Instance(i,t),i]}class ExitStatus{name="ExitStatus";constructor(e){this.message=`Program terminated with exit(${e})`;this.status=e}}var F,callRuntimeCallbacks=e=>{for(;e.length>0;)e.shift()(a)},S=a.noExitRuntime||!0,k=0,R={},handleException=e=>{if(e instanceof ExitStatus||"unwind"==e)return h;quit_(0,e)},keepRuntimeAlive=()=>S||k>0,_proc_exit=e=>{h=e;if(!keepRuntimeAlive()){a.onExit?.(e);u=!0}quit_(0,new ExitStatus(e))},_exit=(e,t)=>{h=e;_proc_exit(e)},callUserCallback=e=>{if(!u)try{e();(()=>{if(!keepRuntimeAlive())try{_exit(h)}catch(e){handleException(e)}})()}catch(e){handleException(e)}},growMemory=e=>{var t=(e-c.buffer.byteLength+65535)/65536|0;try{c.grow(t);updateMemoryViews();return 1}catch(e){}},N={},getEnvStrings=()=>{if(!getEnvStrings.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:r||"./this.program"};for(var t in N)void 0===N[t]?delete e[t]:e[t]=N[t];var i=[];for(var t in e)i.push(`${t}=${e[t]}`);getEnvStrings.strings=i}return getEnvStrings.strings},G=[null,[],[]],M="undefined"!=typeof TextDecoder?new TextDecoder:void 0,UTF8ArrayToString=(e,t=0,i=NaN)=>{for(var a=t+i,s=t;e[s]&&!(s>=a);)++s;if(s-t>16&&e.buffer&&M)return M.decode(e.subarray(t,s));for(var r="";t>10,56320|1023&c)}}else r+=String.fromCharCode((31&n)<<6|g)}else r+=String.fromCharCode(n)}return r},printChar=(e,t)=>{var i=G[e];if(0===t||10===t){(1===e?g:o)(UTF8ArrayToString(i));i.length=0}else i.push(t)},UTF8ToString=(e,t)=>e?UTF8ArrayToString(Q,e,t):"",U={m:()=>function abort(e){a.onAbort?.(e);o(e="Aborted("+e+")");u=!0;e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);i(t);throw t}(""),c:(e,t,i)=>Q.copyWithin(e,t,t+i),l:()=>{S=!1;k=0},n:(e,t)=>{if(R[e]){clearTimeout(R[e].id);delete R[e]}if(!t)return 0;var i=setTimeout((()=>{delete R[e];callUserCallback((()=>L(e,performance.now())))}),t);R[e]={id:i,timeout_ms:t};return 0},g:function _copy_pixels_1(e,t){e>>=2;const i=a.imageData=new Uint8ClampedArray(t),s=a.HEAP32.subarray(e,e+t);i.set(s)},f:function _copy_pixels_3(e,t,i,s){e>>=2;t>>=2;i>>=2;const r=a.imageData=new Uint8ClampedArray(3*s),n=a.HEAP32.subarray(e,e+s),g=a.HEAP32.subarray(t,t+s),o=a.HEAP32.subarray(i,i+s);for(let e=0;e>=2;t>>=2;i>>=2;s>>=2;const n=a.imageData=new Uint8ClampedArray(4*r),g=a.HEAP32.subarray(e,e+r),o=a.HEAP32.subarray(t,t+r),c=a.HEAP32.subarray(i,i+r),C=a.HEAP32.subarray(s,s+r);for(let e=0;e{var t,i,a=Q.length,s=2147483648;if((e>>>=0)>s)return!1;for(var r=1;r<=4;r*=2){var n=a*(1+.2/r);n=Math.min(n,e+100663296);var g=Math.min(s,(t=Math.max(e,n),i=65536,Math.ceil(t/i)*i));if(growMemory(g))return!0}return!1},p:(e,t)=>{var i=0;getEnvStrings().forEach(((a,s)=>{var r=t+i;E[e+4*s>>2]=r;((e,t)=>{for(var i=0;i{var i=getEnvStrings();E[e>>2]=i.length;var a=0;i.forEach((e=>a+=e.length+1));E[t>>2]=a;return 0},r:e=>52,j:function _fd_seek(e,t,i,a,s){return 70},b:(e,t,i,a)=>{for(var s=0,r=0;r>2],g=E[t+4>>2];t+=8;for(var o=0;o>2]=s;return 0},s:function _gray_to_rgba(e,t){e>>=2;const i=a.imageData=new Uint8ClampedArray(4*t),s=a.HEAP32.subarray(e,e+t);for(let e=0;e>=2;t>>=2;const s=a.imageData=new Uint8ClampedArray(4*i),r=a.HEAP32.subarray(e,e+i),n=a.HEAP32.subarray(t,t+i);for(let e=0;e>=2;t>>=2;i>>=2;const r=a.imageData=new Uint8ClampedArray(4*s),n=a.HEAP32.subarray(e,e+s),g=a.HEAP32.subarray(t,t+s),o=a.HEAP32.subarray(i,i+s);for(let e=0;e0)){!function preRun(){if(a.preRun){"function"==typeof a.preRun&&(a.preRun=[a.preRun]);for(;a.preRun.length;)e=a.preRun.shift(),f.unshift(e)}var e;callRuntimeCallbacks(f)}();if(!(y>0))if(a.setStatus){a.setStatus("Running...");setTimeout((()=>{setTimeout((()=>a.setStatus("")),1);doRun()}),1)}else doRun()}function doRun(){if(!F){F=!0;a.calledRun=!0;if(!u){!function initRuntime(){callRuntimeCallbacks(p)}();t(a);a.onRuntimeInitialized?.();!function postRun(){if(a.postRun){"function"==typeof a.postRun&&(a.postRun=[a.postRun]);for(;a.postRun.length;)e=a.postRun.shift(),m.unshift(e)}var e;callRuntimeCallbacks(m)}()}}}}if(a.preInit){"function"==typeof a.preInit&&(a.preInit=[a.preInit]);for(;a.preInit.length>0;)a.preInit.pop()()}run();return a});const ii=ti;class JpxError extends ot{constructor(e){super(e,"JpxError")}}class JpxImage{static#D=null;static decode(e,t){t||={};this.#D||=ii({warn});const i=this.#D.decode(e,t);if("string"==typeof i)throw new JpxError(i);return i}static cleanup(){this.#D=null}static parseImageProperties(e){let t=e.getByte();for(;t>=0;){const i=t;t=e.getByte();if(65361===(i<<8|t)){e.skip(4);const t=e.getInt32()>>>0,i=e.getInt32()>>>0,a=e.getInt32()>>>0,s=e.getInt32()>>>0;e.skip(16);return{width:t-a,height:i-s,bitsPerComponent:8,componentsCount:e.getUint16()}}}throw new JpxError("No size marker found in JPX stream")}}class JpxStream extends DecodeStream{constructor(e,t,i){super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=i}get bytes(){return shadow(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(e){this.decodeImage(null,e)}decodeImage(e,t){if(this.eof)return this.buffer;e||=this.bytes;this.buffer=JpxImage.decode(e,t);this.bufferLength=this.buffer.length;this.eof=!0;return this.buffer}get canAsyncDecodeImageFromBuffer(){return this.stream.isAsync}}class LZWStream extends DecodeStream{constructor(e,t,i){super(t);this.str=e;this.dict=e.dict;this.cachedData=0;this.bitsCached=0;const a=4096,s={earlyChange:i,codeLength:9,nextCode:258,dictionaryValues:new Uint8Array(a),dictionaryLengths:new Uint16Array(a),dictionaryPrevCodes:new Uint16Array(a),currentSequence:new Uint8Array(a),currentSequenceLength:0};for(let e=0;e<256;++e){s.dictionaryValues[e]=e;s.dictionaryLengths[e]=1}this.lzwState=s}readBits(e){let t=this.bitsCached,i=this.cachedData;for(;t>>t&(1<0;if(e<256){l[0]=e;Q=1}else{if(!(e>=258)){if(256===e){C=9;n=258;Q=0;continue}this.eof=!0;delete this.lzwState;break}if(e=0;t--){l[t]=g[i];i=c[i]}}else l[Q++]=l[0]}if(s){c[n]=h;o[n]=o[h]+1;g[n]=l[0];n++;C=n+r&n+r-1?C:0|Math.min(Math.log(n+r)/.6931471805599453+1,12)}h=e;E+=Q;if(a15))throw new FormatError(`Unsupported predictor: ${a}`);this.readBlock=2===a?this.readBlockTiff:this.readBlockPng;this.str=e;this.dict=e.dict;const s=this.colors=i.get("Colors")||1,r=this.bits=i.get("BPC","BitsPerComponent")||8,n=this.columns=i.get("Columns")||1;this.pixBytes=s*r+7>>3;this.rowBytes=n*s*r+7>>3;return this}readBlockTiff(){const e=this.rowBytes,t=this.bufferLength,i=this.ensureBuffer(t+e),a=this.bits,s=this.colors,r=this.str.getBytes(e);this.eof=!r.length;if(this.eof)return;let n,g=0,o=0,c=0,C=0,h=t;if(1===a&&1===s)for(n=0;n>1;e^=e>>2;e^=e>>4;g=(1&e)<<7;i[h++]=e}else if(8===a){for(n=0;n>8&255;i[h++]=255&e}}else{const e=new Uint8Array(s+1),h=(1<>c-a)&h;c-=a;o=o<=8){i[Q++]=o>>C-8&255;C-=8}}C>0&&(i[Q++]=(o<<8-C)+(g&(1<<8-C)-1))}this.bufferLength+=e}readBlockPng(){const e=this.rowBytes,t=this.pixBytes,i=this.str.getByte(),a=this.str.getBytes(e);this.eof=!a.length;if(this.eof)return;const s=this.bufferLength,r=this.ensureBuffer(s+e);let n=r.subarray(s-e,s);0===n.length&&(n=new Uint8Array(e));let g,o,c,C=s;switch(i){case 0:for(g=0;g>1)+a[g];for(;g>1)+a[g]&255;C++}break;case 4:for(g=0;g0){const e=this.str.getBytes(a);t.set(e,i);i+=a}}else{a=257-a;const s=e[1];t=this.ensureBuffer(i+a+1);for(let e=0;e>")&&this.buf1!==Bt;){if(!(this.buf1 instanceof Name)){info("Malformed dictionary: key must be a name object");this.shift();continue}const t=this.buf1.name;this.shift();if(this.buf1===Bt)break;a.set(t,this.getObj(e))}if(this.buf1===Bt){if(this.recoveryMode)return a;throw new ParserEOFException("End of file inside dictionary.")}if(isCmd(this.buf2,"stream"))return this.allowStreams?this.makeStream(a,e):a;this.shift();return a;default:return t}if(Number.isInteger(t)){if(Number.isInteger(this.buf1)&&isCmd(this.buf2,"R")){const e=Ref.get(t,this.buf1);this.shift();this.shift();return e}return t}return"string"==typeof t&&e?e.decryptString(t):t}findDefaultInlineStreamEnd(e){const{knownCommands:t}=this.lexer,i=e.pos;let a,s,r=0;for(;-1!==(a=e.getByte());)if(0===r)r=69===a?1:0;else if(1===r)r=73===a?2:0;else if(32===a||10===a||13===a){s=e.pos;const i=e.peekBytes(15),n=i.length;if(0===n)break;for(let e=0;e127))){r=0;break}}if(2!==r)continue;if(!t){warn("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.");continue}const g=new Lexer(new Stream(i.slice()),t);g._hexStringWarn=()=>{};let o=0;for(;;){const e=g.getObj();if(e===Bt){r=0;break}if(e instanceof Cmd){const i=t[e.cmd];if(!i){r=0;break}if(i.variableArgs?o<=i.numArgs:o===i.numArgs)break;o=0}else o++}if(2===r)break}else r=0;if(-1===a){warn("findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker");if(s){warn('... trying to recover by using the last "EI" occurrence.');e.skip(-(e.pos-s))}}let n=4;e.skip(-n);a=e.peekByte();e.skip(n);isWhiteSpace(a)||n--;return e.pos-n-i}findDCTDecodeInlineStreamEnd(e){const t=e.pos;let i,a,s=!1;for(;-1!==(i=e.getByte());)if(255===i){switch(e.getByte()){case 0:break;case 255:e.skip(-1);break;case 217:s=!0;break;case 192:case 193:case 194:case 195:case 197:case 198:case 199:case 201:case 202:case 203:case 205:case 206:case 207:case 196:case 204:case 218:case 219:case 220:case 221:case 222:case 223:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239:case 254:a=e.getUint16();a>2?e.skip(a-2):e.skip(-2)}if(s)break}const r=e.pos-t;if(-1===i){warn("Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead.");e.skip(-r);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return r}findASCII85DecodeInlineStreamEnd(e){const t=e.pos;let i;for(;-1!==(i=e.getByte());)if(126===i){const t=e.pos;i=e.peekByte();for(;isWhiteSpace(i);){e.skip();i=e.peekByte()}if(62===i){e.skip();break}if(e.pos>t){const t=e.peekBytes(2);if(69===t[0]&&73===t[1])break}}const a=e.pos-t;if(-1===i){warn("Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-a);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return a}findASCIIHexDecodeInlineStreamEnd(e){const t=e.pos;let i;for(;-1!==(i=e.getByte())&&62!==i;);const a=e.pos-t;if(-1===i){warn("Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-a);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return a}inlineStreamSkipEI(e){let t,i=0;for(;-1!==(t=e.getByte());)if(0===i)i=69===t?1:0;else if(1===i)i=73===t?2:0;else if(2===i)break}makeInlineImage(e){const t=this.lexer,i=t.stream,a=Object.create(null);let s;for(;!isCmd(this.buf1,"ID")&&this.buf1!==Bt;){if(!(this.buf1 instanceof Name))throw new FormatError("Dictionary key must be a name object");const t=this.buf1.name;this.shift();if(this.buf1===Bt)break;a[t]=this.getObj(e)}-1!==t.beginInlineImagePos&&(s=i.pos-t.beginInlineImagePos);const r=this.xref.fetchIfRef(a.F||a.Filter);let n;if(r instanceof Name)n=r.name;else if(Array.isArray(r)){const e=this.xref.fetchIfRef(r[0]);e instanceof Name&&(n=e.name)}const g=i.pos;let o,c;switch(n){case"DCT":case"DCTDecode":o=this.findDCTDecodeInlineStreamEnd(i);break;case"A85":case"ASCII85Decode":o=this.findASCII85DecodeInlineStreamEnd(i);break;case"AHx":case"ASCIIHexDecode":o=this.findASCIIHexDecodeInlineStreamEnd(i);break;default:o=this.findDefaultInlineStreamEnd(i)}if(o<1e3&&s>0){const e=i.pos;i.pos=t.beginInlineImagePos;c=function getInlineImageCacheKey(e){const t=[],i=e.length;let a=0;for(;a=a){let a=!1;for(const e of s){const t=e.length;let s=0;for(;s=r){a=!0;break}if(s>=t){if(isWhiteSpace(n[o+g+s])){info(`Found "${bytesToString([...i,...e])}" when searching for endstream command.`);a=!0}break}}if(a){t.pos+=o;return t.pos-e}}o++}t.pos+=g}return-1}makeStream(e,t){const i=this.lexer;let a=i.stream;i.skipToNextLine();const s=a.pos-1;let r=e.get("Length");if(!Number.isInteger(r)){info(`Bad length "${r&&r.toString()}" in stream.`);r=0}a.pos=s+r;i.nextChar();if(this.tryShift()&&isCmd(this.buf2,"endstream"))this.shift();else{r=this.#b(s);if(r<0)throw new FormatError("Missing endstream command.");i.nextChar();this.shift();this.shift()}this.shift();a=a.makeSubStream(s,r,e);t&&(a=t.createStream(a,r));a=this.filter(a,e,r);a.dict=e;return a}filter(e,t,i){let a=t.get("F","Filter"),s=t.get("DP","DecodeParms");if(a instanceof Name){Array.isArray(s)&&warn("/DecodeParms should not be an Array, when /Filter is a Name.");return this.makeFilter(e,a.name,i,s)}let r=i;if(Array.isArray(a)){const t=a,i=s;for(let n=0,g=t.length;n=48&&e<=57?15&e:e>=65&&e<=70||e>=97&&e<=102?9+(15&e):-1}class Lexer{constructor(e,t=null){this.stream=e;this.nextChar();this.strBuf=[];this.knownCommands=t;this._hexStringNumWarn=0;this.beginInlineImagePos=-1}nextChar(){return this.currentChar=this.stream.getByte()}peekChar(){return this.stream.peekByte()}getNumber(){let e=this.currentChar,t=!1,i=0,a=1;if(45===e){a=-1;e=this.nextChar();45===e&&(e=this.nextChar())}else 43===e&&(e=this.nextChar());if(10===e||13===e)do{e=this.nextChar()}while(10===e||13===e);if(46===e){i=10;e=this.nextChar()}if(e<48||e>57){const t=`Invalid number: ${String.fromCharCode(e)} (charCode ${e})`;if(isWhiteSpace(e)||-1===e){info(`Lexer.getNumber - "${t}".`);return 0}throw new FormatError(t)}let s=e-48,r=0,n=1;for(;(e=this.nextChar())>=0;)if(e>=48&&e<=57){const a=e-48;if(t)r=10*r+a;else{0!==i&&(i*=10);s=10*s+a}}else if(46===e){if(0!==i)break;i=1}else if(45===e)warn("Badly formatted number: minus sign in the middle");else{if(69!==e&&101!==e)break;e=this.peekChar();if(43===e||45===e){n=45===e?-1:1;this.nextChar()}else if(e<48||e>57)break;t=!0}0!==i&&(s/=i);t&&(s*=10**(n*r));return a*s}getString(){let e=1,t=!1;const i=this.strBuf;i.length=0;let a=this.nextChar();for(;;){let s=!1;switch(0|a){case-1:warn("Unterminated string");t=!0;break;case 40:++e;i.push("(");break;case 41:if(0==--e){this.nextChar();t=!0}else i.push(")");break;case 92:a=this.nextChar();switch(a){case-1:warn("Unterminated string");t=!0;break;case 110:i.push("\n");break;case 114:i.push("\r");break;case 116:i.push("\t");break;case 98:i.push("\b");break;case 102:i.push("\f");break;case 92:case 40:case 41:i.push(String.fromCharCode(a));break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:let e=15&a;a=this.nextChar();s=!0;if(a>=48&&a<=55){e=(e<<3)+(15&a);a=this.nextChar();if(a>=48&&a<=55){s=!1;e=(e<<3)+(15&a)}}i.push(String.fromCharCode(e));break;case 13:10===this.peekChar()&&this.nextChar();break;case 10:break;default:i.push(String.fromCharCode(a))}break;default:i.push(String.fromCharCode(a))}if(t)break;s||(a=this.nextChar())}return i.join("")}getName(){let e,t;const i=this.strBuf;i.length=0;for(;(e=this.nextChar())>=0&&!ai[e];)if(35===e){e=this.nextChar();if(ai[e]){warn("Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number.");i.push("#");break}const a=toHexDigit(e);if(-1!==a){t=e;e=this.nextChar();const s=toHexDigit(e);if(-1===s){warn(`Lexer_getName: Illegal digit (${String.fromCharCode(e)}) in hexadecimal number.`);i.push("#",String.fromCharCode(t));if(ai[e])break;i.push(String.fromCharCode(e));continue}i.push(String.fromCharCode(a<<4|s))}else i.push("#",String.fromCharCode(e))}else i.push(String.fromCharCode(e));i.length>127&&warn(`Name token is longer than allowed by the spec: ${i.length}`);return Name.get(i.join(""))}_hexStringWarn(e){5!=this._hexStringNumWarn++?this._hexStringNumWarn>5||warn(`getHexString - ignoring invalid character: ${e}`):warn("getHexString - ignoring additional invalid characters.")}getHexString(){const e=this.strBuf;e.length=0;let t=this.currentChar,i=-1,a=-1;this._hexStringNumWarn=0;for(;;){if(t<0){warn("Unterminated hex string");break}if(62===t){this.nextChar();break}if(1!==ai[t]){a=toHexDigit(t);if(-1===a)this._hexStringWarn(t);else if(-1===i)i=a;else{e.push(String.fromCharCode(i<<4|a));i=-1}t=this.nextChar()}else t=this.nextChar()}-1!==i&&e.push(String.fromCharCode(i<<4));return e.join("")}getObj(){let e=!1,t=this.currentChar;for(;;){if(t<0)return Bt;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(1!==ai[t])break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return this.getNumber();case 40:return this.getString();case 47:return this.getName();case 91:this.nextChar();return Cmd.get("[");case 93:this.nextChar();return Cmd.get("]");case 60:t=this.nextChar();if(60===t){this.nextChar();return Cmd.get("<<")}return this.getHexString();case 62:t=this.nextChar();if(62===t){this.nextChar();return Cmd.get(">>")}return Cmd.get(">");case 123:this.nextChar();return Cmd.get("{");case 125:this.nextChar();return Cmd.get("}");case 41:this.nextChar();throw new FormatError(`Illegal character: ${t}`)}let i=String.fromCharCode(t);if(t<32||t>127){const e=this.peekChar();if(e>=32&&e<=127){this.nextChar();return Cmd.get(i)}}const a=this.knownCommands;let s=void 0!==a?.[i];for(;(t=this.nextChar())>=0&&!ai[t];){const e=i+String.fromCharCode(t);if(s&&void 0===a[e])break;if(128===i.length)throw new FormatError(`Command token too long: ${i.length}`);i=e;s=void 0!==a?.[i]}if("true"===i)return!0;if("false"===i)return!1;if("null"===i)return null;"BI"===i&&(this.beginInlineImagePos=this.stream.pos);return Cmd.get(i)}skipToNextLine(){let e=this.currentChar;for(;e>=0;){if(13===e){e=this.nextChar();10===e&&this.nextChar();break}if(10===e){this.nextChar();break}e=this.nextChar()}}}class Linearization{static create(e){function getInt(e,t,i=!1){const a=e.get(t);if(Number.isInteger(a)&&(i?a>=0:a>0))return a;throw new Error(`The "${t}" parameter in the linearization dictionary is invalid.`)}const t=new Parser({lexer:new Lexer(e),xref:null}),i=t.getObj(),a=t.getObj(),s=t.getObj(),r=t.getObj();let n,g;if(!(Number.isInteger(i)&&Number.isInteger(a)&&isCmd(s,"obj")&&r instanceof Dict&&"number"==typeof(n=r.get("Linearized"))&&n>0))return null;if((g=getInt(r,"L"))!==e.length)throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.');return{length:g,hints:function getHints(e){const t=e.get("H");let i;if(Array.isArray(t)&&(2===(i=t.length)||4===i)){for(let e=0;e0))throw new Error(`Hint (${e}) in the linearization dictionary is invalid.`)}return t}throw new Error("Hint array in the linearization dictionary is invalid.")}(r),objectNumberFirst:getInt(r,"O"),endFirst:getInt(r,"E"),numPages:getInt(r,"N"),mainXRefEntriesOffset:getInt(r,"T"),pageFirst:r.has("P")?getInt(r,"P",!0):0}}}const si=["Adobe-GB1-UCS2","Adobe-CNS1-UCS2","Adobe-Japan1-UCS2","Adobe-Korea1-UCS2","78-EUC-H","78-EUC-V","78-H","78-RKSJ-H","78-RKSJ-V","78-V","78ms-RKSJ-H","78ms-RKSJ-V","83pv-RKSJ-H","90ms-RKSJ-H","90ms-RKSJ-V","90msp-RKSJ-H","90msp-RKSJ-V","90pv-RKSJ-H","90pv-RKSJ-V","Add-H","Add-RKSJ-H","Add-RKSJ-V","Add-V","Adobe-CNS1-0","Adobe-CNS1-1","Adobe-CNS1-2","Adobe-CNS1-3","Adobe-CNS1-4","Adobe-CNS1-5","Adobe-CNS1-6","Adobe-GB1-0","Adobe-GB1-1","Adobe-GB1-2","Adobe-GB1-3","Adobe-GB1-4","Adobe-GB1-5","Adobe-Japan1-0","Adobe-Japan1-1","Adobe-Japan1-2","Adobe-Japan1-3","Adobe-Japan1-4","Adobe-Japan1-5","Adobe-Japan1-6","Adobe-Korea1-0","Adobe-Korea1-1","Adobe-Korea1-2","B5-H","B5-V","B5pc-H","B5pc-V","CNS-EUC-H","CNS-EUC-V","CNS1-H","CNS1-V","CNS2-H","CNS2-V","ETHK-B5-H","ETHK-B5-V","ETen-B5-H","ETen-B5-V","ETenms-B5-H","ETenms-B5-V","EUC-H","EUC-V","Ext-H","Ext-RKSJ-H","Ext-RKSJ-V","Ext-V","GB-EUC-H","GB-EUC-V","GB-H","GB-V","GBK-EUC-H","GBK-EUC-V","GBK2K-H","GBK2K-V","GBKp-EUC-H","GBKp-EUC-V","GBT-EUC-H","GBT-EUC-V","GBT-H","GBT-V","GBTpc-EUC-H","GBTpc-EUC-V","GBpc-EUC-H","GBpc-EUC-V","H","HKdla-B5-H","HKdla-B5-V","HKdlb-B5-H","HKdlb-B5-V","HKgccs-B5-H","HKgccs-B5-V","HKm314-B5-H","HKm314-B5-V","HKm471-B5-H","HKm471-B5-V","HKscs-B5-H","HKscs-B5-V","Hankaku","Hiragana","KSC-EUC-H","KSC-EUC-V","KSC-H","KSC-Johab-H","KSC-Johab-V","KSC-V","KSCms-UHC-H","KSCms-UHC-HW-H","KSCms-UHC-HW-V","KSCms-UHC-V","KSCpc-EUC-H","KSCpc-EUC-V","Katakana","NWP-H","NWP-V","RKSJ-H","RKSJ-V","Roman","UniCNS-UCS2-H","UniCNS-UCS2-V","UniCNS-UTF16-H","UniCNS-UTF16-V","UniCNS-UTF32-H","UniCNS-UTF32-V","UniCNS-UTF8-H","UniCNS-UTF8-V","UniGB-UCS2-H","UniGB-UCS2-V","UniGB-UTF16-H","UniGB-UTF16-V","UniGB-UTF32-H","UniGB-UTF32-V","UniGB-UTF8-H","UniGB-UTF8-V","UniJIS-UCS2-H","UniJIS-UCS2-HW-H","UniJIS-UCS2-HW-V","UniJIS-UCS2-V","UniJIS-UTF16-H","UniJIS-UTF16-V","UniJIS-UTF32-H","UniJIS-UTF32-V","UniJIS-UTF8-H","UniJIS-UTF8-V","UniJIS2004-UTF16-H","UniJIS2004-UTF16-V","UniJIS2004-UTF32-H","UniJIS2004-UTF32-V","UniJIS2004-UTF8-H","UniJIS2004-UTF8-V","UniJISPro-UCS2-HW-V","UniJISPro-UCS2-V","UniJISPro-UTF8-V","UniJISX0213-UTF32-H","UniJISX0213-UTF32-V","UniJISX02132004-UTF32-H","UniJISX02132004-UTF32-V","UniKS-UCS2-H","UniKS-UCS2-V","UniKS-UTF16-H","UniKS-UTF16-V","UniKS-UTF32-H","UniKS-UTF32-V","UniKS-UTF8-H","UniKS-UTF8-V","V","WP-Symbol"],ri=2**24-1;class CMap{constructor(e=!1){this.codespaceRanges=[[],[],[],[]];this.numCodespaceRanges=0;this._map=[];this.name="";this.vertical=!1;this.useCMap=null;this.builtInCMap=e}addCodespaceRange(e,t,i){this.codespaceRanges[e-1].push(t,i);this.numCodespaceRanges++}mapCidRange(e,t,i){if(t-e>ri)throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");for(;e<=t;)this._map[e++]=i++}mapBfRange(e,t,i){if(t-e>ri)throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");const a=i.length-1;for(;e<=t;){this._map[e++]=i;const t=i.charCodeAt(a)+1;t>255?i=i.substring(0,a-1)+String.fromCharCode(i.charCodeAt(a-1)+1)+"\0":i=i.substring(0,a)+String.fromCharCode(t)}}mapBfRangeToArray(e,t,i){if(t-e>ri)throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");const a=i.length;let s=0;for(;e<=t&&s>>0;const n=s[r];for(let e=0,t=n.length;e=t&&a<=s){i.charcode=a;i.length=r+1;return}}}i.charcode=0;i.length=1}getCharCodeLength(e){const t=this.codespaceRanges;for(let i=0,a=t.length;i=s&&e<=r)return i+1}}return 1}get length(){return this._map.length}get isIdentityCMap(){if("Identity-H"!==this.name&&"Identity-V"!==this.name)return!1;if(65536!==this._map.length)return!1;for(let e=0;e<65536;e++)if(this._map[e]!==e)return!1;return!0}}class IdentityCMap extends CMap{constructor(e,t){super();this.vertical=e;this.addCodespaceRange(t,0,65535)}mapCidRange(e,t,i){unreachable("should not call mapCidRange")}mapBfRange(e,t,i){unreachable("should not call mapBfRange")}mapBfRangeToArray(e,t,i){unreachable("should not call mapBfRangeToArray")}mapOne(e,t){unreachable("should not call mapCidOne")}lookup(e){return Number.isInteger(e)&&e<=65535?e:void 0}contains(e){return Number.isInteger(e)&&e<=65535}forEach(e){for(let t=0;t<=65535;t++)e(t,t)}charCodeOf(e){return Number.isInteger(e)&&e<=65535?e:-1}getMap(){const e=new Array(65536);for(let t=0;t<=65535;t++)e[t]=t;return e}get length(){return 65536}get isIdentityCMap(){unreachable("should not access .isIdentityCMap")}}function strToInt(e){let t=0;for(let i=0;i>>0}function expectString(e){if("string"!=typeof e)throw new FormatError("Malformed CMap: expected string.")}function expectInt(e){if(!Number.isInteger(e))throw new FormatError("Malformed CMap: expected int.")}function parseBfChar(e,t){for(;;){let i=t.getObj();if(i===Bt)break;if(isCmd(i,"endbfchar"))return;expectString(i);const a=strToInt(i);i=t.getObj();expectString(i);const s=i;e.mapOne(a,s)}}function parseBfRange(e,t){for(;;){let i=t.getObj();if(i===Bt)break;if(isCmd(i,"endbfrange"))return;expectString(i);const a=strToInt(i);i=t.getObj();expectString(i);const s=strToInt(i);i=t.getObj();if(Number.isInteger(i)||"string"==typeof i){const t=Number.isInteger(i)?String.fromCharCode(i):i;e.mapBfRange(a,s,t)}else{if(!isCmd(i,"["))break;{i=t.getObj();const r=[];for(;!isCmd(i,"]")&&i!==Bt;){r.push(i);i=t.getObj()}e.mapBfRangeToArray(a,s,r)}}}throw new FormatError("Invalid bf range.")}function parseCidChar(e,t){for(;;){let i=t.getObj();if(i===Bt)break;if(isCmd(i,"endcidchar"))return;expectString(i);const a=strToInt(i);i=t.getObj();expectInt(i);const s=i;e.mapOne(a,s)}}function parseCidRange(e,t){for(;;){let i=t.getObj();if(i===Bt)break;if(isCmd(i,"endcidrange"))return;expectString(i);const a=strToInt(i);i=t.getObj();expectString(i);const s=strToInt(i);i=t.getObj();expectInt(i);const r=i;e.mapCidRange(a,s,r)}}function parseCodespaceRange(e,t){for(;;){let i=t.getObj();if(i===Bt)break;if(isCmd(i,"endcodespacerange"))return;if("string"!=typeof i)break;const a=strToInt(i);i=t.getObj();if("string"!=typeof i)break;const s=strToInt(i);e.addCodespaceRange(i.length,a,s)}throw new FormatError("Invalid codespace range.")}function parseWMode(e,t){const i=t.getObj();Number.isInteger(i)&&(e.vertical=!!i)}function parseCMapName(e,t){const i=t.getObj();i instanceof Name&&(e.name=i.name)}async function parseCMap(e,t,i,a){let s,r;A:for(;;)try{const i=t.getObj();if(i===Bt)break;if(i instanceof Name){"WMode"===i.name?parseWMode(e,t):"CMapName"===i.name&&parseCMapName(e,t);s=i}else if(i instanceof Cmd)switch(i.cmd){case"endcmap":break A;case"usecmap":s instanceof Name&&(r=s.name);break;case"begincodespacerange":parseCodespaceRange(e,t);break;case"beginbfchar":parseBfChar(e,t);break;case"begincidchar":parseCidChar(e,t);break;case"beginbfrange":parseBfRange(e,t);break;case"begincidrange":parseCidRange(e,t)}}catch(e){if(e instanceof MissingDataException)throw e;warn("Invalid cMap data: "+e);continue}!a&&r&&(a=r);return a?extendCMap(e,i,a):e}async function extendCMap(e,t,i){e.useCMap=await createBuiltInCMap(i,t);if(0===e.numCodespaceRanges){const t=e.useCMap.codespaceRanges;for(let i=0;iextendCMap(s,t,e)));const r=new Lexer(new Stream(i));return parseCMap(s,r,t,null)}class CMapFactory{static async create({encoding:e,fetchBuiltInCMap:t,useCMap:i}){if(e instanceof Name)return createBuiltInCMap(e.name,t);if(e instanceof BaseStream){const a=await parseCMap(new CMap,new Lexer(e),t,i);return a.isIdentityCMap?createBuiltInCMap(a.name,t):a}throw new Error("Encoding required.")}}const ni=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],gi=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],oi=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"],Ii=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],ci=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","centoldstyle","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","","threequartersemdash","","questionsmall","","","","","Ethsmall","","","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","","","","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hypheninferior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","asuperior","centsuperior","","","","","Aacutesmall","Agravesmall","Acircumflexsmall","Adieresissmall","Atildesmall","Aringsmall","Ccedillasmall","Eacutesmall","Egravesmall","Ecircumflexsmall","Edieresissmall","Iacutesmall","Igravesmall","Icircumflexsmall","Idieresissmall","Ntildesmall","Oacutesmall","Ogravesmall","Ocircumflexsmall","Odieresissmall","Otildesmall","Uacutesmall","Ugravesmall","Ucircumflexsmall","Udieresissmall","","eightsuperior","fourinferior","threeinferior","sixinferior","eightinferior","seveninferior","Scaronsmall","","centinferior","twoinferior","","Dieresissmall","","Caronsmall","osuperior","fiveinferior","","commainferior","periodinferior","Yacutesmall","","dollarinferior","","","Thornsmall","","nineinferior","zeroinferior","Zcaronsmall","AEsmall","Oslashsmall","questiondownsmall","oneinferior","Lslashsmall","","","","","","","Cedillasmall","","","","","","OEsmall","figuredash","hyphensuperior","","","","","exclamdownsmall","","Ydieresissmall","","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","ninesuperior","zerosuperior","","esuperior","rsuperior","tsuperior","","","isuperior","ssuperior","dsuperior","","","","","","lsuperior","Ogoneksmall","Brevesmall","Macronsmall","bsuperior","nsuperior","msuperior","commasuperior","periodsuperior","Dotaccentsmall","Ringsmall","","","",""],Ci=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","space","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron"],hi=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls","","","",""],li=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","bullet","Euro","bullet","quotesinglbase","florin","quotedblbase","ellipsis","dagger","daggerdbl","circumflex","perthousand","Scaron","guilsinglleft","OE","bullet","Zcaron","bullet","bullet","quoteleft","quoteright","quotedblleft","quotedblright","bullet","endash","emdash","tilde","trademark","scaron","guilsinglright","oe","bullet","zcaron","Ydieresis","space","exclamdown","cent","sterling","currency","yen","brokenbar","section","dieresis","copyright","ordfeminine","guillemotleft","logicalnot","hyphen","registered","macron","degree","plusminus","twosuperior","threesuperior","acute","mu","paragraph","periodcentered","cedilla","onesuperior","ordmasculine","guillemotright","onequarter","onehalf","threequarters","questiondown","Agrave","Aacute","Acircumflex","Atilde","Adieresis","Aring","AE","Ccedilla","Egrave","Eacute","Ecircumflex","Edieresis","Igrave","Iacute","Icircumflex","Idieresis","Eth","Ntilde","Ograve","Oacute","Ocircumflex","Otilde","Odieresis","multiply","Oslash","Ugrave","Uacute","Ucircumflex","Udieresis","Yacute","Thorn","germandbls","agrave","aacute","acircumflex","atilde","adieresis","aring","ae","ccedilla","egrave","eacute","ecircumflex","edieresis","igrave","iacute","icircumflex","idieresis","eth","ntilde","ograve","oacute","ocircumflex","otilde","odieresis","divide","oslash","ugrave","uacute","ucircumflex","udieresis","yacute","thorn","ydieresis"],Bi=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","universal","numbersign","existential","percent","ampersand","suchthat","parenleft","parenright","asteriskmath","plus","comma","minus","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","congruent","Alpha","Beta","Chi","Delta","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","bracketleft","therefore","bracketright","perpendicular","underscore","radicalex","alpha","beta","chi","delta","epsilon","phi","gamma","eta","iota","phi1","kappa","lambda","mu","nu","omicron","pi","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","braceleft","bar","braceright","similar","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Euro","Upsilon1","minute","lessequal","fraction","infinity","florin","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","degree","plusminus","second","greaterequal","multiply","proportional","partialdiff","bullet","divide","notequal","equivalence","approxequal","ellipsis","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","element","notelement","angle","gradient","registerserif","copyrightserif","trademarkserif","product","radical","dotmath","logicalnot","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","lozenge","angleleft","registersans","copyrightsans","trademarksans","summation","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt",""],Qi=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","a1","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","","","","","","","","","","","","","","","","","","","","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191",""];function getEncoding(e){switch(e){case"WinAnsiEncoding":return li;case"StandardEncoding":return hi;case"MacRomanEncoding":return Ci;case"SymbolSetEncoding":return Bi;case"ZapfDingbatsEncoding":return Qi;case"ExpertEncoding":return Ii;case"MacExpertEncoding":return ci;default:return null}}const Ei=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],ui=391,di=[null,{id:"hstem",min:2,stackClearing:!0,stem:!0},null,{id:"vstem",min:2,stackClearing:!0,stem:!0},{id:"vmoveto",min:1,stackClearing:!0},{id:"rlineto",min:2,resetStack:!0},{id:"hlineto",min:1,resetStack:!0},{id:"vlineto",min:1,resetStack:!0},{id:"rrcurveto",min:6,resetStack:!0},null,{id:"callsubr",min:1,undefStack:!0},{id:"return",min:0,undefStack:!0},null,null,{id:"endchar",min:0,stackClearing:!0},null,null,null,{id:"hstemhm",min:2,stackClearing:!0,stem:!0},{id:"hintmask",min:0,stackClearing:!0},{id:"cntrmask",min:0,stackClearing:!0},{id:"rmoveto",min:2,stackClearing:!0},{id:"hmoveto",min:1,stackClearing:!0},{id:"vstemhm",min:2,stackClearing:!0,stem:!0},{id:"rcurveline",min:8,resetStack:!0},{id:"rlinecurve",min:8,resetStack:!0},{id:"vvcurveto",min:4,resetStack:!0},{id:"hhcurveto",min:4,resetStack:!0},null,{id:"callgsubr",min:1,undefStack:!0},{id:"vhcurveto",min:4,resetStack:!0},{id:"hvcurveto",min:4,resetStack:!0}],fi=[null,null,null,{id:"and",min:2,stackDelta:-1},{id:"or",min:2,stackDelta:-1},{id:"not",min:1,stackDelta:0},null,null,null,{id:"abs",min:1,stackDelta:0},{id:"add",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]+e[t-1]}},{id:"sub",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]-e[t-1]}},{id:"div",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]/e[t-1]}},null,{id:"neg",min:1,stackDelta:0,stackFn(e,t){e[t-1]=-e[t-1]}},{id:"eq",min:2,stackDelta:-1},null,null,{id:"drop",min:1,stackDelta:-1},null,{id:"put",min:2,stackDelta:-2},{id:"get",min:1,stackDelta:0},{id:"ifelse",min:4,stackDelta:-3},{id:"random",min:0,stackDelta:1},{id:"mul",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]*e[t-1]}},null,{id:"sqrt",min:1,stackDelta:0},{id:"dup",min:1,stackDelta:1},{id:"exch",min:2,stackDelta:0},{id:"index",min:2,stackDelta:0},{id:"roll",min:3,stackDelta:-2},null,null,null,{id:"hflex",min:7,resetStack:!0},{id:"flex",min:13,resetStack:!0},{id:"hflex1",min:9,resetStack:!0},{id:"flex1",min:11,resetStack:!0}];class CFFParser{constructor(e,t,i){this.bytes=e.getBytes();this.properties=t;this.seacAnalysisEnabled=!!i}parse(){const e=this.properties,t=new CFF;this.cff=t;const i=this.parseHeader(),a=this.parseIndex(i.endPos),s=this.parseIndex(a.endPos),r=this.parseIndex(s.endPos),n=this.parseIndex(r.endPos),g=this.parseDict(s.obj.get(0)),o=this.createDict(CFFTopDict,g,t.strings);t.header=i.obj;t.names=this.parseNameIndex(a.obj);t.strings=this.parseStringIndex(r.obj);t.topDict=o;t.globalSubrIndex=n.obj;this.parsePrivateDict(t.topDict);t.isCIDFont=o.hasName("ROS");const c=o.getByName("CharStrings"),C=this.parseIndex(c).obj,h=o.getByName("FontMatrix");h&&(e.fontMatrix=h);const l=o.getByName("FontBBox");if(l){e.ascent=Math.max(l[3],l[1]);e.descent=Math.min(l[1],l[3]);e.ascentScaled=!0}let Q,E;if(t.isCIDFont){const e=this.parseIndex(o.getByName("FDArray")).obj;for(let i=0,a=e.count;i=t)throw new FormatError("Invalid CFF header");if(0!==i){info("cff data is shifted");e=e.subarray(i);this.bytes=e}const a=e[0],s=e[1],r=e[2],n=e[3];return{obj:new CFFHeader(a,s,r,n),endPos:r}}parseDict(e){let t=0;function parseOperand(){let i=e[t++];if(30===i)return function parseFloatOperand(){let i="";const a=15,s=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],r=e.length;for(;t>4,g=15&r;if(n===a)break;i+=s[n];if(g===a)break;i+=s[g]}return parseFloat(i)}();if(28===i){i=e[t++];i=(i<<24|e[t++]<<16)>>16;return i}if(29===i){i=e[t++];i=i<<8|e[t++];i=i<<8|e[t++];i=i<<8|e[t++];return i}if(i>=32&&i<=246)return i-139;if(i>=247&&i<=250)return 256*(i-247)+e[t++]+108;if(i>=251&&i<=254)return-256*(i-251)-e[t++]-108;warn('CFFParser_parseDict: "'+i+'" is a reserved command.');return NaN}let i=[];const a=[];t=0;const s=e.length;for(;t10)return!1;let s=e.stackSize;const r=e.stack;let n=t.length;for(let g=0;g>16;g+=2;s++}else if(14===o){if(s>=4){s-=4;if(this.seacAnalysisEnabled){e.seac=r.slice(s,s+4);return!1}}c=di[o]}else if(o>=32&&o<=246){r[s]=o-139;s++}else if(o>=247&&o<=254){r[s]=o<251?(o-247<<8)+t[g]+108:-(o-251<<8)-t[g]-108;g++;s++}else if(255===o){r[s]=(t[g]<<24|t[g+1]<<16|t[g+2]<<8|t[g+3])/65536;g+=4;s++}else if(19===o||20===o){e.hints+=s>>1;if(0===e.hints){t.copyWithin(g-1,g,-1);g-=1;n-=1;continue}g+=e.hints+7>>3;s%=2;c=di[o]}else{if(10===o||29===o){const t=10===o?i:a;if(!t){c=di[o];warn("Missing subrsIndex for "+c.id);return!1}let n=32768;t.count<1240?n=107:t.count<33900&&(n=1131);const g=r[--s]+n;if(g<0||g>=t.count||isNaN(g)){c=di[o];warn("Out of bounds subrIndex for "+c.id);return!1}e.stackSize=s;e.callDepth++;if(!this.parseCharString(e,t.get(g),i,a))return!1;e.callDepth--;s=e.stackSize;continue}if(11===o){e.stackSize=s;return!0}if(0===o&&g===t.length){t[g-1]=14;c=di[14]}else{if(9===o){t.copyWithin(g-1,g,-1);g-=1;n-=1;continue}c=di[o]}}if(c){if(c.stem){e.hints+=s>>1;if(3===o||23===o)e.hasVStems=!0;else if(e.hasVStems&&(1===o||18===o)){warn("CFF stem hints are in wrong order");t[g-1]=1===o?3:23}}if("min"in c&&!e.undefStack&&s=2&&c.stem?s%=2:s>1&&warn("Found too many parameters for stack-clearing command");s>0&&(e.width=r[s-1])}if("stackDelta"in c){"stackFn"in c&&c.stackFn(r,s);s+=c.stackDelta}else if(c.stackClearing)s=0;else if(c.resetStack){s=0;e.undefStack=!1}else if(c.undefStack){s=0;e.undefStack=!0;e.firstStackClearing=!1}}}n=s.length){warn("Invalid fd index for glyph index.");h=!1}if(h){Q=s[e].privateDict;l=Q.subrsIndex}}else t&&(l=t);h&&(h=this.parseCharString(C,o,l,i));if(null!==C.width){const e=Q.getByName("nominalWidthX");g[c]=e+C.width}else{const e=Q.getByName("defaultWidthX");g[c]=e}null!==C.seac&&(n[c]=C.seac);h||e.set(c,new Uint8Array([14]))}return{charStrings:e,seacs:n,widths:g}}emptyPrivateDictionary(e){const t=this.createDict(CFFPrivateDict,[],e.strings);e.setByKey(18,[0,0]);e.privateDict=t}parsePrivateDict(e){if(!e.hasName("Private")){this.emptyPrivateDictionary(e);return}const t=e.getByName("Private");if(!Array.isArray(t)||2!==t.length){e.removeByName("Private");return}const i=t[0],a=t[1];if(0===i||a>=this.bytes.length){this.emptyPrivateDictionary(e);return}const s=a+i,r=this.bytes.subarray(a,s),n=this.parseDict(r),g=this.createDict(CFFPrivateDict,n,e.strings);e.privateDict=g;0===g.getByName("ExpansionFactor")&&g.setByName("ExpansionFactor",.06);if(!g.getByName("Subrs"))return;const o=g.getByName("Subrs"),c=a+o;if(0===o||c>=this.bytes.length){this.emptyPrivateDictionary(e);return}const C=this.parseIndex(c);g.subrsIndex=C.obj}parseCharsets(e,t,i,a){if(0===e)return new CFFCharset(!0,yi.ISO_ADOBE,ni);if(1===e)return new CFFCharset(!0,yi.EXPERT,gi);if(2===e)return new CFFCharset(!0,yi.EXPERT_SUBSET,oi);const s=this.bytes,r=e,n=s[e++],g=[a?0:".notdef"];let o,c,C;t-=1;switch(n){case 0:for(C=0;C=65535){warn("Not enough space in charstrings to duplicate first glyph.");return}const e=this.charStrings.get(0);this.charStrings.add(e);this.isCIDFont&&this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0])}hasGlyphId(e){if(e<0||e>=this.charStrings.count)return!1;return this.charStrings.get(e).length>0}}class CFFHeader{constructor(e,t,i,a){this.major=e;this.minor=t;this.hdrSize=i;this.offSize=a}}class CFFStrings{constructor(){this.strings=[]}get(e){return e>=0&&e<=390?Ei[e]:e-ui<=this.strings.length?this.strings[e-ui]:Ei[0]}getSID(e){let t=Ei.indexOf(e);if(-1!==t)return t;t=this.strings.indexOf(e);return-1!==t?t+ui:-1}add(e){this.strings.push(e)}get count(){return this.strings.length}}class CFFIndex{constructor(){this.objects=[];this.length=0}add(e){this.length+=e.length;this.objects.push(e)}set(e,t){this.length+=t.length-this.objects[e].length;this.objects[e]=t}get(e){return this.objects[e]}get count(){return this.objects.length}}class CFFDict{constructor(e,t){this.keyToNameMap=e.keyToNameMap;this.nameToKeyMap=e.nameToKeyMap;this.defaults=e.defaults;this.types=e.types;this.opcodes=e.opcodes;this.order=e.order;this.strings=t;this.values=Object.create(null)}setByKey(e,t){if(!(e in this.keyToNameMap))return!1;if(0===t.length)return!0;for(const i of t)if(isNaN(i)){warn(`Invalid CFFDict value: "${t}" for key "${e}".`);return!0}const i=this.types[e];"num"!==i&&"sid"!==i&&"offset"!==i||(t=t[0]);this.values[e]=t;return!0}setByName(e,t){if(!(e in this.nameToKeyMap))throw new FormatError(`Invalid dictionary name "${e}"`);this.values[this.nameToKeyMap[e]]=t}hasName(e){return this.nameToKeyMap[e]in this.values}getByName(e){if(!(e in this.nameToKeyMap))throw new FormatError(`Invalid dictionary name ${e}"`);const t=this.nameToKeyMap[e];return t in this.values?this.values[t]:this.defaults[t]}removeByName(e){delete this.values[this.nameToKeyMap[e]]}static createTables(e){const t={keyToNameMap:{},nameToKeyMap:{},defaults:{},types:{},opcodes:{},order:[]};for(const i of e){const e=Array.isArray(i[0])?(i[0][0]<<8)+i[0][1]:i[0];t.keyToNameMap[e]=i[1];t.nameToKeyMap[i[1]]=e;t.types[e]=i[2];t.defaults[e]=i[3];t.opcodes[e]=Array.isArray(i[0])?i[0]:[i[0]];t.order.push(e)}return t}}const pi=[[[12,30],"ROS",["sid","sid","num"],null],[[12,20],"SyntheticBase","num",null],[0,"version","sid",null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","num",0],[[12,2],"ItalicAngle","num",0],[[12,3],"UnderlinePosition","num",-100],[[12,4],"UnderlineThickness","num",50],[[12,5],"PaintType","num",0],[[12,6],"CharstringType","num",2],[[12,7],"FontMatrix",["num","num","num","num","num","num"],[.001,0,0,.001,0,0]],[13,"UniqueID","num",null],[5,"FontBBox",["num","num","num","num"],[0,0,0,0]],[[12,8],"StrokeWidth","num",0],[14,"XUID","array",null],[15,"charset","offset",0],[16,"Encoding","offset",0],[17,"CharStrings","offset",0],[18,"Private",["offset","offset"],null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","num",0],[[12,32],"CIDFontRevision","num",0],[[12,33],"CIDFontType","num",0],[[12,34],"CIDCount","num",8720],[[12,35],"UIDBase","num",null],[[12,37],"FDSelect","offset",null],[[12,36],"FDArray","offset",null],[[12,38],"FontName","sid",null]];class CFFTopDict extends CFFDict{static get tables(){return shadow(this,"tables",this.createTables(pi))}constructor(e){super(CFFTopDict.tables,e);this.privateDict=null}}const mi=[[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","num",.039625],[[12,10],"BlueShift","num",7],[[12,11],"BlueFuzz","num",1],[10,"StdHW","num",null],[11,"StdVW","num",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","num",0],[[12,17],"LanguageGroup","num",0],[[12,18],"ExpansionFactor","num",.06],[[12,19],"initialRandomSeed","num",0],[20,"defaultWidthX","num",0],[21,"nominalWidthX","num",0],[19,"Subrs","offset",null]];class CFFPrivateDict extends CFFDict{static get tables(){return shadow(this,"tables",this.createTables(mi))}constructor(e){super(CFFPrivateDict.tables,e);this.subrsIndex=null}}const yi={ISO_ADOBE:0,EXPERT:1,EXPERT_SUBSET:2};class CFFCharset{constructor(e,t,i,a){this.predefined=e;this.format=t;this.charset=i;this.raw=a}}class CFFEncoding{constructor(e,t,i,a){this.predefined=e;this.format=t;this.encoding=i;this.raw=a}}class CFFFDSelect{constructor(e,t){this.format=e;this.fdSelect=t}getFDIndex(e){return e<0||e>=this.fdSelect.length?-1:this.fdSelect[e]}}class CFFOffsetTracker{constructor(){this.offsets=Object.create(null)}isTracking(e){return e in this.offsets}track(e,t){if(e in this.offsets)throw new FormatError(`Already tracking location of ${e}`);this.offsets[e]=t}offset(e){for(const t in this.offsets)this.offsets[t]+=e}setEntryLocation(e,t,i){if(!(e in this.offsets))throw new FormatError(`Not tracking location of ${e}`);const a=i.data,s=this.offsets[e];for(let e=0,i=t.length;e>24&255;a[n]=c>>16&255;a[g]=c>>8&255;a[o]=255&c}}}class CFFCompiler{constructor(e){this.cff=e}compile(){const e=this.cff,t={data:[],length:0,add(e){try{this.data.push(...e)}catch{this.data=this.data.concat(e)}this.length=this.data.length}},i=this.compileHeader(e.header);t.add(i);const a=this.compileNameIndex(e.names);t.add(a);if(e.isCIDFont&&e.topDict.hasName("FontMatrix")){const t=e.topDict.getByName("FontMatrix");e.topDict.removeByName("FontMatrix");for(const i of e.fdArray){let e=t.slice(0);i.hasName("FontMatrix")&&(e=Util.transform(e,i.getByName("FontMatrix")));i.setByName("FontMatrix",e)}}const s=e.topDict.getByName("XUID");s?.length>16&&e.topDict.removeByName("XUID");e.topDict.setByName("charset",0);let r=this.compileTopDicts([e.topDict],t.length,e.isCIDFont);t.add(r.output);const n=r.trackers[0],g=this.compileStringIndex(e.strings.strings);t.add(g);const o=this.compileIndex(e.globalSubrIndex);t.add(o);if(e.encoding&&e.topDict.hasName("Encoding"))if(e.encoding.predefined)n.setEntryLocation("Encoding",[e.encoding.format],t);else{const i=this.compileEncoding(e.encoding);n.setEntryLocation("Encoding",[t.length],t);t.add(i)}const c=this.compileCharset(e.charset,e.charStrings.count,e.strings,e.isCIDFont);n.setEntryLocation("charset",[t.length],t);t.add(c);const C=this.compileCharStrings(e.charStrings);n.setEntryLocation("CharStrings",[t.length],t);t.add(C);if(e.isCIDFont){n.setEntryLocation("FDSelect",[t.length],t);const i=this.compileFDSelect(e.fdSelect);t.add(i);r=this.compileTopDicts(e.fdArray,t.length,!0);n.setEntryLocation("FDArray",[t.length],t);t.add(r.output);const a=r.trackers;this.compilePrivateDicts(e.fdArray,a,t)}this.compilePrivateDicts([e.topDict],[n],t);t.add([0]);return t.data}encodeNumber(e){return Number.isInteger(e)?this.encodeInteger(e):this.encodeFloat(e)}static get EncodeFloatRegExp(){return shadow(this,"EncodeFloatRegExp",/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/)}encodeFloat(e){let t=e.toString();const i=CFFCompiler.EncodeFloatRegExp.exec(t);if(i){const a=parseFloat("1e"+((i[2]?+i[2]:0)+i[1].length));t=(Math.round(e*a)/a).toString()}let a,s,r="";for(a=0,s=t.length;a=-107&&e<=107?[e+139]:e>=108&&e<=1131?[247+((e-=108)>>8),255&e]:e>=-1131&&e<=-108?[251+((e=-e-108)>>8),255&e]:e>=-32768&&e<=32767?[28,e>>8&255,255&e]:[29,e>>24&255,e>>16&255,e>>8&255,255&e];return t}compileHeader(e){return[e.major,e.minor,4,e.offSize]}compileNameIndex(e){const t=new CFFIndex;for(const i of e){const e=Math.min(i.length,127);let a=new Array(e);for(let t=0;t"~"||"["===e||"]"===e||"("===e||")"===e||"{"===e||"}"===e||"<"===e||">"===e||"/"===e||"%"===e)&&(e="_");a[t]=e}a=a.join("");""===a&&(a="Bad_Font_Name");t.add(stringToBytes(a))}return this.compileIndex(t)}compileTopDicts(e,t,i){const a=[];let s=new CFFIndex;for(const r of e){if(i){r.removeByName("CIDFontVersion");r.removeByName("CIDFontRevision");r.removeByName("CIDFontType");r.removeByName("CIDCount");r.removeByName("UIDBase")}const e=new CFFOffsetTracker,n=this.compileDict(r,e);a.push(e);s.add(n);e.offset(t)}s=this.compileIndex(s,a);return{trackers:a,output:s}}compilePrivateDicts(e,t,i){for(let a=0,s=e.length;a>8&255,255&r]);else{s=new Uint8Array(1+2*r);s[0]=0;let t=0;const a=e.charset.length;let n=!1;for(let r=1;r>8&255;s[r+1]=255&g}}return this.compileTypedArray(s)}compileEncoding(e){return this.compileTypedArray(e.raw)}compileFDSelect(e){const t=e.format;let i,a;switch(t){case 0:i=new Uint8Array(1+e.fdSelect.length);i[0]=t;for(a=0;a>8&255,255&s,r];for(a=1;a>8&255,255&a,t);r=t}}const g=(n.length-3)/3;n[1]=g>>8&255;n[2]=255&g;n.push(a>>8&255,255&a);i=new Uint8Array(n)}return this.compileTypedArray(i)}compileTypedArray(e){return Array.from(e)}compileIndex(e,t=[]){const i=e.objects,a=i.length;if(0===a)return[0,0];const s=[a>>8&255,255&a];let r,n,g=1;for(r=0;r>8&255,255&o):3===n?s.push(o>>16&255,o>>8&255,255&o):s.push(o>>>24&255,o>>16&255,o>>8&255,255&o);i[r]&&(o+=i[r].length)}for(r=0;r=5&&t<=7))return-1;a=e.substring(1)}if(a===a.toUpperCase()){i=parseInt(a,16);if(i>=0)return i}}return-1}const Fi=[[0,127],[128,255],[256,383],[384,591],[592,687,7424,7551,7552,7615],[688,767,42752,42783],[768,879,7616,7679],[880,1023],[11392,11519],[1024,1279,1280,1327,11744,11775,42560,42655],[1328,1423],[1424,1535],[42240,42559],[1536,1791,1872,1919],[1984,2047],[2304,2431],[2432,2559],[2560,2687],[2688,2815],[2816,2943],[2944,3071],[3072,3199],[3200,3327],[3328,3455],[3584,3711],[3712,3839],[4256,4351,11520,11567],[6912,7039],[4352,4607],[7680,7935,11360,11391,42784,43007],[7936,8191],[8192,8303,11776,11903],[8304,8351],[8352,8399],[8400,8447],[8448,8527],[8528,8591],[8592,8703,10224,10239,10496,10623,11008,11263],[8704,8959,10752,11007,10176,10223,10624,10751],[8960,9215],[9216,9279],[9280,9311],[9312,9471],[9472,9599],[9600,9631],[9632,9727],[9728,9983],[9984,10175],[12288,12351],[12352,12447],[12448,12543,12784,12799],[12544,12591,12704,12735],[12592,12687],[43072,43135],[12800,13055],[13056,13311],[44032,55215],[55296,57343],[67840,67871],[19968,40959,11904,12031,12032,12255,12272,12287,13312,19903,131072,173791,12688,12703],[57344,63743],[12736,12783,63744,64255,194560,195103],[64256,64335],[64336,65023],[65056,65071],[65040,65055],[65104,65135],[65136,65279],[65280,65519],[65520,65535],[3840,4095],[1792,1871],[1920,1983],[3456,3583],[4096,4255],[4608,4991,4992,5023,11648,11743],[5024,5119],[5120,5759],[5760,5791],[5792,5887],[6016,6143],[6144,6319],[10240,10495],[40960,42127],[5888,5919,5920,5951,5952,5983,5984,6015],[66304,66351],[66352,66383],[66560,66639],[118784,119039,119040,119295,119296,119375],[119808,120831],[1044480,1048573],[65024,65039,917760,917999],[917504,917631],[6400,6479],[6480,6527],[6528,6623],[6656,6687],[11264,11359],[11568,11647],[19904,19967],[43008,43055],[65536,65663,65664,65791,65792,65855],[65856,65935],[66432,66463],[66464,66527],[66640,66687],[66688,66735],[67584,67647],[68096,68191],[119552,119647],[73728,74751,74752,74879],[119648,119679],[7040,7103],[7168,7247],[7248,7295],[43136,43231],[43264,43311],[43312,43359],[43520,43615],[65936,65999],[66e3,66047],[66208,66271,66176,66207,67872,67903],[127024,127135,126976,127023]];function getUnicodeRangeFor(e,t=-1){if(-1!==t){const i=Fi[t];for(let a=0,s=i.length;a=i[a]&&e<=i[a+1])return t}for(let t=0,i=Fi.length;t=i[a]&&e<=i[a+1])return t}return-1}const Si=new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$","u"),ki=new Map;const Ri=!0,Ni=1,Gi=2,Mi=4,xi=32,Hi=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"];function recoverGlyphName(e,t){if(void 0!==t[e])return e;const i=getUnicodeForGlyph(e,t);if(-1!==i)for(const e in t)if(t[e]===i)return e;info("Unable to recover a standard glyph name for: "+e);return e}function type1FontGlyphMapping(e,t,i){const a=Object.create(null);let s,r,n;const g=!!(e.flags&Mi);if(e.isInternalFont){n=t;for(r=0;r=0?s:0}}else if(e.baseEncodingName){n=getEncoding(e.baseEncodingName);for(r=0;r=0?s:0}}else if(g)for(r in t)a[r]=t[r];else{n=hi;for(r=0;r=0?s:0}}const o=e.differences;let c;if(o)for(r in o){const e=o[r];s=i.indexOf(e);if(-1===s){c||(c=wi());const t=recoverGlyphName(e,c);t!==e&&(s=i.indexOf(t))}a[r]=s>=0?s:0}return a}function normalizeFontName(e){return e.replaceAll(/[,_]/g,"-").replaceAll(/\s/g,"")}const Ji=getLookupTableFactory((e=>{e[8211]=65074;e[8212]=65073;e[8229]=65072;e[8230]=65049;e[12289]=65041;e[12290]=65042;e[12296]=65087;e[12297]=65088;e[12298]=65085;e[12299]=65086;e[12300]=65089;e[12301]=65090;e[12302]=65091;e[12303]=65092;e[12304]=65083;e[12305]=65084;e[12308]=65081;e[12309]=65082;e[12310]=65047;e[12311]=65048;e[65103]=65076;e[65281]=65045;e[65288]=65077;e[65289]=65078;e[65292]=65040;e[65306]=65043;e[65307]=65044;e[65311]=65046;e[65339]=65095;e[65341]=65096;e[65343]=65075;e[65371]=65079;e[65373]=65080})),Yi=getLookupTableFactory((function(e){e["Times-Roman"]="Times-Roman";e.Helvetica="Helvetica";e.Courier="Courier";e.Symbol="Symbol";e["Times-Bold"]="Times-Bold";e["Helvetica-Bold"]="Helvetica-Bold";e["Courier-Bold"]="Courier-Bold";e.ZapfDingbats="ZapfDingbats";e["Times-Italic"]="Times-Italic";e["Helvetica-Oblique"]="Helvetica-Oblique";e["Courier-Oblique"]="Courier-Oblique";e["Times-BoldItalic"]="Times-BoldItalic";e["Helvetica-BoldOblique"]="Helvetica-BoldOblique";e["Courier-BoldOblique"]="Courier-BoldOblique";e.ArialNarrow="Helvetica";e["ArialNarrow-Bold"]="Helvetica-Bold";e["ArialNarrow-BoldItalic"]="Helvetica-BoldOblique";e["ArialNarrow-Italic"]="Helvetica-Oblique";e.ArialBlack="Helvetica";e["ArialBlack-Bold"]="Helvetica-Bold";e["ArialBlack-BoldItalic"]="Helvetica-BoldOblique";e["ArialBlack-Italic"]="Helvetica-Oblique";e["Arial-Black"]="Helvetica";e["Arial-Black-Bold"]="Helvetica-Bold";e["Arial-Black-BoldItalic"]="Helvetica-BoldOblique";e["Arial-Black-Italic"]="Helvetica-Oblique";e.Arial="Helvetica";e["Arial-Bold"]="Helvetica-Bold";e["Arial-BoldItalic"]="Helvetica-BoldOblique";e["Arial-Italic"]="Helvetica-Oblique";e.ArialMT="Helvetica";e["Arial-BoldItalicMT"]="Helvetica-BoldOblique";e["Arial-BoldMT"]="Helvetica-Bold";e["Arial-ItalicMT"]="Helvetica-Oblique";e["Arial-BoldItalicMT-BoldItalic"]="Helvetica-BoldOblique";e["Arial-BoldMT-Bold"]="Helvetica-Bold";e["Arial-ItalicMT-Italic"]="Helvetica-Oblique";e.ArialUnicodeMS="Helvetica";e["ArialUnicodeMS-Bold"]="Helvetica-Bold";e["ArialUnicodeMS-BoldItalic"]="Helvetica-BoldOblique";e["ArialUnicodeMS-Italic"]="Helvetica-Oblique";e["Courier-BoldItalic"]="Courier-BoldOblique";e["Courier-Italic"]="Courier-Oblique";e.CourierNew="Courier";e["CourierNew-Bold"]="Courier-Bold";e["CourierNew-BoldItalic"]="Courier-BoldOblique";e["CourierNew-Italic"]="Courier-Oblique";e["CourierNewPS-BoldItalicMT"]="Courier-BoldOblique";e["CourierNewPS-BoldMT"]="Courier-Bold";e["CourierNewPS-ItalicMT"]="Courier-Oblique";e.CourierNewPSMT="Courier";e["Helvetica-BoldItalic"]="Helvetica-BoldOblique";e["Helvetica-Italic"]="Helvetica-Oblique";e["HelveticaLTStd-Bold"]="Helvetica-Bold";e["Symbol-Bold"]="Symbol";e["Symbol-BoldItalic"]="Symbol";e["Symbol-Italic"]="Symbol";e.TimesNewRoman="Times-Roman";e["TimesNewRoman-Bold"]="Times-Bold";e["TimesNewRoman-BoldItalic"]="Times-BoldItalic";e["TimesNewRoman-Italic"]="Times-Italic";e.TimesNewRomanPS="Times-Roman";e["TimesNewRomanPS-Bold"]="Times-Bold";e["TimesNewRomanPS-BoldItalic"]="Times-BoldItalic";e["TimesNewRomanPS-BoldItalicMT"]="Times-BoldItalic";e["TimesNewRomanPS-BoldMT"]="Times-Bold";e["TimesNewRomanPS-Italic"]="Times-Italic";e["TimesNewRomanPS-ItalicMT"]="Times-Italic";e.TimesNewRomanPSMT="Times-Roman";e["TimesNewRomanPSMT-Bold"]="Times-Bold";e["TimesNewRomanPSMT-BoldItalic"]="Times-BoldItalic";e["TimesNewRomanPSMT-Italic"]="Times-Italic"})),vi=getLookupTableFactory((function(e){e.Courier="FoxitFixed.pfb";e["Courier-Bold"]="FoxitFixedBold.pfb";e["Courier-BoldOblique"]="FoxitFixedBoldItalic.pfb";e["Courier-Oblique"]="FoxitFixedItalic.pfb";e.Helvetica="LiberationSans-Regular.ttf";e["Helvetica-Bold"]="LiberationSans-Bold.ttf";e["Helvetica-BoldOblique"]="LiberationSans-BoldItalic.ttf";e["Helvetica-Oblique"]="LiberationSans-Italic.ttf";e["Times-Roman"]="FoxitSerif.pfb";e["Times-Bold"]="FoxitSerifBold.pfb";e["Times-BoldItalic"]="FoxitSerifBoldItalic.pfb";e["Times-Italic"]="FoxitSerifItalic.pfb";e.Symbol="FoxitSymbol.pfb";e.ZapfDingbats="FoxitDingbats.pfb";e["LiberationSans-Regular"]="LiberationSans-Regular.ttf";e["LiberationSans-Bold"]="LiberationSans-Bold.ttf";e["LiberationSans-Italic"]="LiberationSans-Italic.ttf";e["LiberationSans-BoldItalic"]="LiberationSans-BoldItalic.ttf"})),Ki=getLookupTableFactory((function(e){e.Calibri="Helvetica";e["Calibri-Bold"]="Helvetica-Bold";e["Calibri-BoldItalic"]="Helvetica-BoldOblique";e["Calibri-Italic"]="Helvetica-Oblique";e.CenturyGothic="Helvetica";e["CenturyGothic-Bold"]="Helvetica-Bold";e["CenturyGothic-BoldItalic"]="Helvetica-BoldOblique";e["CenturyGothic-Italic"]="Helvetica-Oblique";e.ComicSansMS="Comic Sans MS";e["ComicSansMS-Bold"]="Comic Sans MS-Bold";e["ComicSansMS-BoldItalic"]="Comic Sans MS-BoldItalic";e["ComicSansMS-Italic"]="Comic Sans MS-Italic";e.GillSansMT="Helvetica";e["GillSansMT-Bold"]="Helvetica-Bold";e["GillSansMT-BoldItalic"]="Helvetica-BoldOblique";e["GillSansMT-Italic"]="Helvetica-Oblique";e.Impact="Helvetica";e["ItcSymbol-Bold"]="Helvetica-Bold";e["ItcSymbol-BoldItalic"]="Helvetica-BoldOblique";e["ItcSymbol-Book"]="Helvetica";e["ItcSymbol-BookItalic"]="Helvetica-Oblique";e["ItcSymbol-Medium"]="Helvetica";e["ItcSymbol-MediumItalic"]="Helvetica-Oblique";e.LucidaConsole="Courier";e["LucidaConsole-Bold"]="Courier-Bold";e["LucidaConsole-BoldItalic"]="Courier-BoldOblique";e["LucidaConsole-Italic"]="Courier-Oblique";e["LucidaSans-Demi"]="Helvetica-Bold";e["MS-Gothic"]="MS Gothic";e["MS-Gothic-Bold"]="MS Gothic-Bold";e["MS-Gothic-BoldItalic"]="MS Gothic-BoldItalic";e["MS-Gothic-Italic"]="MS Gothic-Italic";e["MS-Mincho"]="MS Mincho";e["MS-Mincho-Bold"]="MS Mincho-Bold";e["MS-Mincho-BoldItalic"]="MS Mincho-BoldItalic";e["MS-Mincho-Italic"]="MS Mincho-Italic";e["MS-PGothic"]="MS PGothic";e["MS-PGothic-Bold"]="MS PGothic-Bold";e["MS-PGothic-BoldItalic"]="MS PGothic-BoldItalic";e["MS-PGothic-Italic"]="MS PGothic-Italic";e["MS-PMincho"]="MS PMincho";e["MS-PMincho-Bold"]="MS PMincho-Bold";e["MS-PMincho-BoldItalic"]="MS PMincho-BoldItalic";e["MS-PMincho-Italic"]="MS PMincho-Italic";e.NuptialScript="Times-Italic";e.SegoeUISymbol="Helvetica"})),Ti=getLookupTableFactory((function(e){e["Adobe Jenson"]=!0;e["Adobe Text"]=!0;e.Albertus=!0;e.Aldus=!0;e.Alexandria=!0;e.Algerian=!0;e["American Typewriter"]=!0;e.Antiqua=!0;e.Apex=!0;e.Arno=!0;e.Aster=!0;e.Aurora=!0;e.Baskerville=!0;e.Bell=!0;e.Bembo=!0;e["Bembo Schoolbook"]=!0;e.Benguiat=!0;e["Berkeley Old Style"]=!0;e["Bernhard Modern"]=!0;e["Berthold City"]=!0;e.Bodoni=!0;e["Bauer Bodoni"]=!0;e["Book Antiqua"]=!0;e.Bookman=!0;e["Bordeaux Roman"]=!0;e["Californian FB"]=!0;e.Calisto=!0;e.Calvert=!0;e.Capitals=!0;e.Cambria=!0;e.Cartier=!0;e.Caslon=!0;e.Catull=!0;e.Centaur=!0;e["Century Old Style"]=!0;e["Century Schoolbook"]=!0;e.Chaparral=!0;e["Charis SIL"]=!0;e.Cheltenham=!0;e["Cholla Slab"]=!0;e.Clarendon=!0;e.Clearface=!0;e.Cochin=!0;e.Colonna=!0;e["Computer Modern"]=!0;e["Concrete Roman"]=!0;e.Constantia=!0;e["Cooper Black"]=!0;e.Corona=!0;e.Ecotype=!0;e.Egyptienne=!0;e.Elephant=!0;e.Excelsior=!0;e.Fairfield=!0;e["FF Scala"]=!0;e.Folkard=!0;e.Footlight=!0;e.FreeSerif=!0;e["Friz Quadrata"]=!0;e.Garamond=!0;e.Gentium=!0;e.Georgia=!0;e.Gloucester=!0;e["Goudy Old Style"]=!0;e["Goudy Schoolbook"]=!0;e["Goudy Pro Font"]=!0;e.Granjon=!0;e["Guardian Egyptian"]=!0;e.Heather=!0;e.Hercules=!0;e["High Tower Text"]=!0;e.Hiroshige=!0;e["Hoefler Text"]=!0;e["Humana Serif"]=!0;e.Imprint=!0;e["Ionic No. 5"]=!0;e.Janson=!0;e.Joanna=!0;e.Korinna=!0;e.Lexicon=!0;e.LiberationSerif=!0;e["Liberation Serif"]=!0;e["Linux Libertine"]=!0;e.Literaturnaya=!0;e.Lucida=!0;e["Lucida Bright"]=!0;e.Melior=!0;e.Memphis=!0;e.Miller=!0;e.Minion=!0;e.Modern=!0;e["Mona Lisa"]=!0;e["Mrs Eaves"]=!0;e["MS Serif"]=!0;e["Museo Slab"]=!0;e["New York"]=!0;e["Nimbus Roman"]=!0;e["NPS Rawlinson Roadway"]=!0;e.NuptialScript=!0;e.Palatino=!0;e.Perpetua=!0;e.Plantin=!0;e["Plantin Schoolbook"]=!0;e.Playbill=!0;e["Poor Richard"]=!0;e["Rawlinson Roadway"]=!0;e.Renault=!0;e.Requiem=!0;e.Rockwell=!0;e.Roman=!0;e["Rotis Serif"]=!0;e.Sabon=!0;e.Scala=!0;e.Seagull=!0;e.Sistina=!0;e.Souvenir=!0;e.STIX=!0;e["Stone Informal"]=!0;e["Stone Serif"]=!0;e.Sylfaen=!0;e.Times=!0;e.Trajan=!0;e["Trinité"]=!0;e["Trump Mediaeval"]=!0;e.Utopia=!0;e["Vale Type"]=!0;e["Bitstream Vera"]=!0;e["Vera Serif"]=!0;e.Versailles=!0;e.Wanted=!0;e.Weiss=!0;e["Wide Latin"]=!0;e.Windsor=!0;e.XITS=!0})),qi=getLookupTableFactory((function(e){e.Dingbats=!0;e.Symbol=!0;e.ZapfDingbats=!0;e.Wingdings=!0;e["Wingdings-Bold"]=!0;e["Wingdings-Regular"]=!0})),Oi=getLookupTableFactory((function(e){e[2]=10;e[3]=32;e[4]=33;e[5]=34;e[6]=35;e[7]=36;e[8]=37;e[9]=38;e[10]=39;e[11]=40;e[12]=41;e[13]=42;e[14]=43;e[15]=44;e[16]=45;e[17]=46;e[18]=47;e[19]=48;e[20]=49;e[21]=50;e[22]=51;e[23]=52;e[24]=53;e[25]=54;e[26]=55;e[27]=56;e[28]=57;e[29]=58;e[30]=894;e[31]=60;e[32]=61;e[33]=62;e[34]=63;e[35]=64;e[36]=65;e[37]=66;e[38]=67;e[39]=68;e[40]=69;e[41]=70;e[42]=71;e[43]=72;e[44]=73;e[45]=74;e[46]=75;e[47]=76;e[48]=77;e[49]=78;e[50]=79;e[51]=80;e[52]=81;e[53]=82;e[54]=83;e[55]=84;e[56]=85;e[57]=86;e[58]=87;e[59]=88;e[60]=89;e[61]=90;e[62]=91;e[63]=92;e[64]=93;e[65]=94;e[66]=95;e[67]=96;e[68]=97;e[69]=98;e[70]=99;e[71]=100;e[72]=101;e[73]=102;e[74]=103;e[75]=104;e[76]=105;e[77]=106;e[78]=107;e[79]=108;e[80]=109;e[81]=110;e[82]=111;e[83]=112;e[84]=113;e[85]=114;e[86]=115;e[87]=116;e[88]=117;e[89]=118;e[90]=119;e[91]=120;e[92]=121;e[93]=122;e[94]=123;e[95]=124;e[96]=125;e[97]=126;e[98]=196;e[99]=197;e[100]=199;e[101]=201;e[102]=209;e[103]=214;e[104]=220;e[105]=225;e[106]=224;e[107]=226;e[108]=228;e[109]=227;e[110]=229;e[111]=231;e[112]=233;e[113]=232;e[114]=234;e[115]=235;e[116]=237;e[117]=236;e[118]=238;e[119]=239;e[120]=241;e[121]=243;e[122]=242;e[123]=244;e[124]=246;e[125]=245;e[126]=250;e[127]=249;e[128]=251;e[129]=252;e[130]=8224;e[131]=176;e[132]=162;e[133]=163;e[134]=167;e[135]=8226;e[136]=182;e[137]=223;e[138]=174;e[139]=169;e[140]=8482;e[141]=180;e[142]=168;e[143]=8800;e[144]=198;e[145]=216;e[146]=8734;e[147]=177;e[148]=8804;e[149]=8805;e[150]=165;e[151]=181;e[152]=8706;e[153]=8721;e[154]=8719;e[156]=8747;e[157]=170;e[158]=186;e[159]=8486;e[160]=230;e[161]=248;e[162]=191;e[163]=161;e[164]=172;e[165]=8730;e[166]=402;e[167]=8776;e[168]=8710;e[169]=171;e[170]=187;e[171]=8230;e[179]=8220;e[180]=8221;e[181]=8216;e[182]=8217;e[200]=193;e[203]=205;e[207]=211;e[210]=218;e[223]=711;e[224]=321;e[225]=322;e[226]=352;e[227]=353;e[228]=381;e[229]=382;e[233]=221;e[234]=253;e[252]=263;e[253]=268;e[254]=269;e[258]=258;e[260]=260;e[261]=261;e[265]=280;e[266]=281;e[267]=282;e[268]=283;e[269]=313;e[275]=323;e[276]=324;e[278]=328;e[283]=344;e[284]=345;e[285]=346;e[286]=347;e[292]=367;e[295]=377;e[296]=378;e[298]=380;e[305]=963;e[306]=964;e[307]=966;e[308]=8215;e[309]=8252;e[310]=8319;e[311]=8359;e[312]=8592;e[313]=8593;e[337]=9552;e[493]=1039;e[494]=1040;e[672]=1488;e[673]=1489;e[674]=1490;e[675]=1491;e[676]=1492;e[677]=1493;e[678]=1494;e[679]=1495;e[680]=1496;e[681]=1497;e[682]=1498;e[683]=1499;e[684]=1500;e[685]=1501;e[686]=1502;e[687]=1503;e[688]=1504;e[689]=1505;e[690]=1506;e[691]=1507;e[692]=1508;e[693]=1509;e[694]=1510;e[695]=1511;e[696]=1512;e[697]=1513;e[698]=1514;e[705]=1524;e[706]=8362;e[710]=64288;e[711]=64298;e[759]=1617;e[761]=1776;e[763]=1778;e[775]=1652;e[777]=1764;e[778]=1780;e[779]=1781;e[780]=1782;e[782]=771;e[783]=64726;e[786]=8363;e[788]=8532;e[790]=768;e[791]=769;e[792]=768;e[795]=803;e[797]=64336;e[798]=64337;e[799]=64342;e[800]=64343;e[801]=64344;e[802]=64345;e[803]=64362;e[804]=64363;e[805]=64364;e[2424]=7821;e[2425]=7822;e[2426]=7823;e[2427]=7824;e[2428]=7825;e[2429]=7826;e[2430]=7827;e[2433]=7682;e[2678]=8045;e[2679]=8046;e[2830]=1552;e[2838]=686;e[2840]=751;e[2842]=753;e[2843]=754;e[2844]=755;e[2846]=757;e[2856]=767;e[2857]=848;e[2858]=849;e[2862]=853;e[2863]=854;e[2864]=855;e[2865]=861;e[2866]=862;e[2906]=7460;e[2908]=7462;e[2909]=7463;e[2910]=7464;e[2912]=7466;e[2913]=7467;e[2914]=7468;e[2916]=7470;e[2917]=7471;e[2918]=7472;e[2920]=7474;e[2921]=7475;e[2922]=7476;e[2924]=7478;e[2925]=7479;e[2926]=7480;e[2928]=7482;e[2929]=7483;e[2930]=7484;e[2932]=7486;e[2933]=7487;e[2934]=7488;e[2936]=7490;e[2937]=7491;e[2938]=7492;e[2940]=7494;e[2941]=7495;e[2942]=7496;e[2944]=7498;e[2946]=7500;e[2948]=7502;e[2950]=7504;e[2951]=7505;e[2952]=7506;e[2954]=7508;e[2955]=7509;e[2956]=7510;e[2958]=7512;e[2959]=7513;e[2960]=7514;e[2962]=7516;e[2963]=7517;e[2964]=7518;e[2966]=7520;e[2967]=7521;e[2968]=7522;e[2970]=7524;e[2971]=7525;e[2972]=7526;e[2974]=7528;e[2975]=7529;e[2976]=7530;e[2978]=1537;e[2979]=1538;e[2980]=1539;e[2982]=1549;e[2983]=1551;e[2984]=1552;e[2986]=1554;e[2987]=1555;e[2988]=1556;e[2990]=1623;e[2991]=1624;e[2995]=1775;e[2999]=1791;e[3002]=64290;e[3003]=64291;e[3004]=64292;e[3006]=64294;e[3007]=64295;e[3008]=64296;e[3011]=1900;e[3014]=8223;e[3015]=8244;e[3017]=7532;e[3018]=7533;e[3019]=7534;e[3075]=7590;e[3076]=7591;e[3079]=7594;e[3080]=7595;e[3083]=7598;e[3084]=7599;e[3087]=7602;e[3088]=7603;e[3091]=7606;e[3092]=7607;e[3095]=7610;e[3096]=7611;e[3099]=7614;e[3100]=7615;e[3103]=7618;e[3104]=7619;e[3107]=8337;e[3108]=8338;e[3116]=1884;e[3119]=1885;e[3120]=1885;e[3123]=1886;e[3124]=1886;e[3127]=1887;e[3128]=1887;e[3131]=1888;e[3132]=1888;e[3135]=1889;e[3136]=1889;e[3139]=1890;e[3140]=1890;e[3143]=1891;e[3144]=1891;e[3147]=1892;e[3148]=1892;e[3153]=580;e[3154]=581;e[3157]=584;e[3158]=585;e[3161]=588;e[3162]=589;e[3165]=891;e[3166]=892;e[3169]=1274;e[3170]=1275;e[3173]=1278;e[3174]=1279;e[3181]=7622;e[3182]=7623;e[3282]=11799;e[3316]=578;e[3379]=42785;e[3393]=1159;e[3416]=8377})),Pi=getLookupTableFactory((function(e){e[227]=322;e[264]=261;e[291]=346})),Wi=getLookupTableFactory((function(e){e[1]=32;e[4]=65;e[5]=192;e[6]=193;e[9]=196;e[17]=66;e[18]=67;e[21]=268;e[24]=68;e[28]=69;e[29]=200;e[30]=201;e[32]=282;e[38]=70;e[39]=71;e[44]=72;e[47]=73;e[48]=204;e[49]=205;e[58]=74;e[60]=75;e[62]=76;e[68]=77;e[69]=78;e[75]=79;e[76]=210;e[80]=214;e[87]=80;e[89]=81;e[90]=82;e[92]=344;e[94]=83;e[97]=352;e[100]=84;e[104]=85;e[109]=220;e[115]=86;e[116]=87;e[121]=88;e[122]=89;e[124]=221;e[127]=90;e[129]=381;e[258]=97;e[259]=224;e[260]=225;e[263]=228;e[268]=261;e[271]=98;e[272]=99;e[273]=263;e[275]=269;e[282]=100;e[286]=101;e[287]=232;e[288]=233;e[290]=283;e[295]=281;e[296]=102;e[336]=103;e[346]=104;e[349]=105;e[350]=236;e[351]=237;e[361]=106;e[364]=107;e[367]=108;e[371]=322;e[373]=109;e[374]=110;e[381]=111;e[382]=242;e[383]=243;e[386]=246;e[393]=112;e[395]=113;e[396]=114;e[398]=345;e[400]=115;e[401]=347;e[403]=353;e[410]=116;e[437]=117;e[442]=252;e[448]=118;e[449]=119;e[454]=120;e[455]=121;e[457]=253;e[460]=122;e[462]=382;e[463]=380;e[853]=44;e[855]=58;e[856]=46;e[876]=47;e[878]=45;e[882]=45;e[894]=40;e[895]=41;e[896]=91;e[897]=93;e[923]=64;e[1004]=48;e[1005]=49;e[1006]=50;e[1007]=51;e[1008]=52;e[1009]=53;e[1010]=54;e[1011]=55;e[1012]=56;e[1013]=57;e[1081]=37;e[1085]=43;e[1086]=45}));function getStandardFontName(e){const t=normalizeFontName(e);return Yi()[t]}function isKnownFontName(e){const t=normalizeFontName(e);return!!(Yi()[t]||Ki()[t]||Ti()[t]||qi()[t])}class ToUnicodeMap{constructor(e=[]){this._map=e}get length(){return this._map.length}forEach(e){for(const t in this._map)e(t,this._map[t].codePointAt(0))}has(e){return void 0!==this._map[e]}get(e){return this._map[e]}charCodeOf(e){const t=this._map;if(t.length<=65536)return t.indexOf(e);for(const i in t)if(t[i]===e)return 0|i;return-1}amend(e){for(const t in e)this._map[t]=e[t]}}class IdentityToUnicodeMap{constructor(e,t){this.firstChar=e;this.lastChar=t}get length(){return this.lastChar+1-this.firstChar}forEach(e){for(let t=this.firstChar,i=this.lastChar;t<=i;t++)e(t,t)}has(e){return this.firstChar<=e&&e<=this.lastChar}get(e){if(this.firstChar<=e&&e<=this.lastChar)return String.fromCharCode(e)}charCodeOf(e){return Number.isInteger(e)&&e>=this.firstChar&&e<=this.lastChar?e:-1}amend(e){unreachable("Should not call amend()")}}class CFFFont{constructor(e,t){this.properties=t;const i=new CFFParser(e,t,Ri);this.cff=i.parse();this.cff.duplicateFirstGlyph();const a=new CFFCompiler(this.cff);this.seacs=this.cff.seacs;try{this.data=a.compile()}catch{warn("Failed to compile font "+t.loadedName);this.data=e}this._createBuiltInEncoding()}get numGlyphs(){return this.cff.charStrings.count}getCharset(){return this.cff.charset.charset}getGlyphMapping(){const e=this.cff,t=this.properties,{cidToGidMap:i,cMap:a}=t,s=e.charset.charset;let r,n;if(t.composite){let t,g;if(i?.length>0){t=Object.create(null);for(let e=0,a=i.length;e=0){const a=i[t];a&&(s[e]=a)}}s.length>0&&(this.properties.builtInEncoding=s)}}function getUint32(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}function getUint16(e,t){return e[t]<<8|e[t+1]}function getInt16(e,t){return(e[t]<<24|e[t+1]<<16)>>16}function getInt8(e,t){return e[t]<<24>>24}function getFloat214(e,t){return getInt16(e,t)/16384}function getSubroutineBias(e){const t=e.length;let i=32768;t<1240?i=107:t<33900&&(i=1131);return i}function parseCmap(e,t,i){const a=1===getUint16(e,t+2)?getUint32(e,t+8):getUint32(e,t+16),s=getUint16(e,t+a);let r,n,g;if(4===s){getUint16(e,t+a+2);const i=getUint16(e,t+a+6)>>1;n=t+a+14;r=[];for(g=0;g>1;i0;)C.push({flags:r})}for(i=0;i>1;p=!0;break;case 4:n+=s.pop();moveTo(r,n);p=!0;break;case 5:for(;s.length>0;){r+=s.shift();n+=s.shift();lineTo(r,n)}break;case 6:for(;s.length>0;){r+=s.shift();lineTo(r,n);if(0===s.length)break;n+=s.shift();lineTo(r,n)}break;case 7:for(;s.length>0;){n+=s.shift();lineTo(r,n);if(0===s.length)break;r+=s.shift();lineTo(r,n)}break;case 8:for(;s.length>0;){c=r+s.shift();h=n+s.shift();C=c+s.shift();l=h+s.shift();r=C+s.shift();n=l+s.shift();bezierCurveTo(c,h,C,l,r,n)}break;case 10:d=s.pop();f=null;if(i.isCFFCIDFont){const e=i.fdSelect.getFDIndex(a);if(e>=0&&eMath.abs(n-t)?r+=s.shift():n+=s.shift();bezierCurveTo(c,h,C,l,r,n);break;default:throw new FormatError(`unknown operator: 12 ${m}`)}break;case 14:if(s.length>=4){const e=s.pop(),a=s.pop();n=s.pop();r=s.pop();t.save();t.translate(r,n);let g=lookupCmap(i.cmap,String.fromCharCode(i.glyphNameMap[hi[e]]));compileCharString(i.glyphs[g.glyphId],t,i,g.glyphId);t.restore();g=lookupCmap(i.cmap,String.fromCharCode(i.glyphNameMap[hi[a]]));compileCharString(i.glyphs[g.glyphId],t,i,g.glyphId)}return;case 19:case 20:g+=s.length>>1;o+=g+7>>3;p=!0;break;case 21:n+=s.pop();r+=s.pop();moveTo(r,n);p=!0;break;case 22:r+=s.pop();moveTo(r,n);p=!0;break;case 24:for(;s.length>2;){c=r+s.shift();h=n+s.shift();C=c+s.shift();l=h+s.shift();r=C+s.shift();n=l+s.shift();bezierCurveTo(c,h,C,l,r,n)}r+=s.shift();n+=s.shift();lineTo(r,n);break;case 25:for(;s.length>6;){r+=s.shift();n+=s.shift();lineTo(r,n)}c=r+s.shift();h=n+s.shift();C=c+s.shift();l=h+s.shift();r=C+s.shift();n=l+s.shift();bezierCurveTo(c,h,C,l,r,n);break;case 26:s.length%2&&(r+=s.shift());for(;s.length>0;){c=r;h=n+s.shift();C=c+s.shift();l=h+s.shift();r=C;n=l+s.shift();bezierCurveTo(c,h,C,l,r,n)}break;case 27:s.length%2&&(n+=s.shift());for(;s.length>0;){c=r+s.shift();h=n;C=c+s.shift();l=h+s.shift();r=C+s.shift();n=l;bezierCurveTo(c,h,C,l,r,n)}break;case 28:s.push((e[o]<<24|e[o+1]<<16)>>16);o+=2;break;case 29:d=s.pop()+i.gsubrsBias;f=i.gsubrs[d];f&&parse(f);break;case 30:for(;s.length>0;){c=r;h=n+s.shift();C=c+s.shift();l=h+s.shift();r=C+s.shift();n=l+(1===s.length?s.shift():0);bezierCurveTo(c,h,C,l,r,n);if(0===s.length)break;c=r+s.shift();h=n;C=c+s.shift();l=h+s.shift();n=l+s.shift();r=C+(1===s.length?s.shift():0);bezierCurveTo(c,h,C,l,r,n)}break;case 31:for(;s.length>0;){c=r+s.shift();h=n;C=c+s.shift();l=h+s.shift();n=l+s.shift();r=C+(1===s.length?s.shift():0);bezierCurveTo(c,h,C,l,r,n);if(0===s.length)break;c=r;h=n+s.shift();C=c+s.shift();l=h+s.shift();r=C+s.shift();n=l+(1===s.length?s.shift():0);bezierCurveTo(c,h,C,l,r,n)}break;default:if(m<32)throw new FormatError(`unknown operator: ${m}`);if(m<247)s.push(m-139);else if(m<251)s.push(256*(m-247)+e[o++]+108);else if(m<255)s.push(256*-(m-251)-e[o++]-108);else{s.push((e[o]<<24|e[o+1]<<16|e[o+2]<<8|e[o+3])/65536);o+=4}}p&&(s.length=0)}}(e)}class Commands{cmds=[];transformStack=[];currentTransform=[1,0,0,1,0,0];add(e,t){if(t){const[i,a,s,r,n,g]=this.currentTransform;for(let e=0,o=t.length;e=0&&e2*getUint16(e,t)}const r=[];let n=s(t,0);for(let i=a;ie+(t.getSize()+3&-4)),0)}write(){const e=this.getSize(),t=new DataView(new ArrayBuffer(e)),i=e>131070,a=i?4:2,s=new DataView(new ArrayBuffer((this.glyphs.length+1)*a));i?s.setUint32(0,0):s.setUint16(0,0);let r=0,n=0;for(const e of this.glyphs){r+=e.write(r,t);r=r+3&-4;n+=a;i?s.setUint32(n,r):s.setUint16(n,r>>1)}return{isLocationLong:i,loca:new Uint8Array(s.buffer),glyf:new Uint8Array(t.buffer)}}scale(e){for(let t=0,i=this.glyphs.length;te+t.getSize()),0);return this.header.getSize()+e}write(e,t){if(!this.header)return 0;const i=e;e+=this.header.write(e,t);if(this.simple)e+=this.simple.write(e,t);else for(const i of this.composites)e+=i.write(e,t);return e-i}scale(e){if(!this.header)return;const t=(this.header.xMin+this.header.xMax)/2;this.header.scale(t,e);if(this.simple)this.simple.scale(t,e);else for(const i of this.composites)i.scale(t,e)}}class GlyphHeader{constructor({numberOfContours:e,xMin:t,yMin:i,xMax:a,yMax:s}){this.numberOfContours=e;this.xMin=t;this.yMin=i;this.xMax=a;this.yMax=s}static parse(e,t){return[10,new GlyphHeader({numberOfContours:t.getInt16(e),xMin:t.getInt16(e+2),yMin:t.getInt16(e+4),xMax:t.getInt16(e+6),yMax:t.getInt16(e+8)})]}getSize(){return 10}write(e,t){t.setInt16(e,this.numberOfContours);t.setInt16(e+2,this.xMin);t.setInt16(e+4,this.yMin);t.setInt16(e+6,this.xMax);t.setInt16(e+8,this.yMax);return 10}scale(e,t){this.xMin=Math.round(e+(this.xMin-e)*t);this.xMax=Math.round(e+(this.xMax-e)*t)}}class Contour{constructor({flags:e,xCoordinates:t,yCoordinates:i}){this.xCoordinates=t;this.yCoordinates=i;this.flags=e}}class SimpleGlyph{constructor({contours:e,instructions:t}){this.contours=e;this.instructions=t}static parse(e,t,i){const a=[];for(let s=0;s255?e+=2:g>0&&(e+=1);t=r;g=Math.abs(n-i);g>255?e+=2:g>0&&(e+=1);i=n}}return e}write(e,t){const i=e,a=[],s=[],r=[];let n=0,g=0;for(const i of this.contours){for(let e=0,t=i.xCoordinates.length;e=0?18:2;a.push(e)}else a.push(c)}n=o;const C=i.yCoordinates[e];c=C-g;if(0===c){t|=32;s.push(0)}else{const e=Math.abs(c);if(e<=255){t|=c>=0?36:4;s.push(e)}else s.push(c)}g=C;r.push(t)}t.setUint16(e,a.length-1);e+=2}t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}for(const i of r)t.setUint8(e++,i);for(let i=0,s=a.length;i=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(e+=2):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(e+=2);return e}write(e,t){const i=e;2&this.flags?this.argument1>=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(this.flags|=1):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(this.flags|=1);t.setUint16(e,this.flags);t.setUint16(e+2,this.glyphIndex);e+=4;if(1&this.flags){if(2&this.flags){t.setInt16(e,this.argument1);t.setInt16(e+2,this.argument2)}else{t.setUint16(e,this.argument1);t.setUint16(e+2,this.argument2)}e+=4}else{t.setUint8(e,this.argument1);t.setUint8(e+1,this.argument2);e+=2}if(256&this.flags){t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}}return e-i}scale(e,t){}}function writeInt16(e,t,i){e[t]=i>>8&255;e[t+1]=255&i}function writeInt32(e,t,i){e[t]=i>>24&255;e[t+1]=i>>16&255;e[t+2]=i>>8&255;e[t+3]=255&i}function writeData(e,t,i){if(i instanceof Uint8Array)e.set(i,t);else if("string"==typeof i)for(let a=0,s=i.length;ai;){i<<=1;a++}const s=i*t;return{range:s,entry:a,rangeShift:t*e-s}}toArray(){let e=this.sfnt;const t=this.tables,i=Object.keys(t);i.sort();const a=i.length;let s,r,n,g,o,c=12+16*a;const C=[c];for(s=0;s>>0;C.push(c)}const h=new Uint8Array(c);for(s=0;s>>0}writeInt32(h,c+4,e);writeInt32(h,c+8,C[s]);writeInt32(h,c+12,t[o].length);c+=16}return h}addTable(e,t){if(e in this.tables)throw new Error("Table "+e+" already exists");this.tables[e]=t}}const Zi=[4],Vi=[5],zi=[6],_i=[7],$i=[8],Aa=[12,35],ea=[14],ta=[21],ia=[22],aa=[30],sa=[31];class Type1CharString{constructor(){this.width=0;this.lsb=0;this.flexing=!1;this.output=[];this.stack=[]}convert(e,t,i){const a=e.length;let s,r,n,g=!1;for(let o=0;oa)return!0;const s=a-e;for(let e=s;e>8&255,255&t);else{t=65536*t|0;this.output.push(255,t>>24&255,t>>16&255,t>>8&255,255&t)}}this.output.push(...t);i?this.stack.splice(s,e):this.stack.length=0;return!1}}function isHexDigit(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function decrypt(e,t,i){if(i>=e.length)return new Uint8Array(0);let a,s,r=0|t;for(a=0;a>8;r=52845*(t+r)+22719&65535}return g}function isSpecial(e){return 47===e||91===e||93===e||123===e||125===e||40===e||41===e}class Type1Parser{constructor(e,t,i){if(t){const t=e.getBytes(),i=!((isHexDigit(t[0])||isWhiteSpace(t[0]))&&isHexDigit(t[1])&&isHexDigit(t[2])&&isHexDigit(t[3])&&isHexDigit(t[4])&&isHexDigit(t[5])&&isHexDigit(t[6])&&isHexDigit(t[7]));e=new Stream(i?decrypt(t,55665,4):function decryptAscii(e,t,i){let a=0|t;const s=e.length,r=new Uint8Array(s>>>1);let n,g;for(n=0,g=0;n>8;a=52845*(e+a)+22719&65535}}return r.slice(i,g)}(t,55665,4))}this.seacAnalysisEnabled=!!i;this.stream=e;this.nextChar()}readNumberArray(){this.getToken();const e=[];for(;;){const t=this.getToken();if(null===t||"]"===t||"}"===t)break;e.push(parseFloat(t||0))}return e}readNumber(){const e=this.getToken();return parseFloat(e||0)}readInt(){const e=this.getToken();return 0|parseInt(e||0,10)}readBoolean(){return"true"===this.getToken()?1:0}nextChar(){return this.currentChar=this.stream.getByte()}prevChar(){this.stream.skip(-2);return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(-1===t)return null;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!isWhiteSpace(t))break;t=this.nextChar()}if(isSpecial(t)){this.nextChar();return String.fromCharCode(t)}let i="";do{i+=String.fromCharCode(t);t=this.nextChar()}while(t>=0&&!isWhiteSpace(t)&&!isSpecial(t));return i}readCharStrings(e,t){return-1===t?e:decrypt(e,4330,t)}extractFontProgram(e){const t=this.stream,i=[],a=[],s=Object.create(null);s.lenIV=4;const r={subrs:[],charstrings:[],properties:{privateData:s}};let n,g,o,c;for(;null!==(n=this.getToken());)if("/"===n){n=this.getToken();switch(n){case"CharStrings":this.getToken();this.getToken();this.getToken();this.getToken();for(;;){n=this.getToken();if(null===n||"end"===n)break;if("/"!==n)continue;const e=this.getToken();g=this.readInt();this.getToken();o=g>0?t.getBytes(g):new Uint8Array(0);c=r.properties.privateData.lenIV;const i=this.readCharStrings(o,c);this.nextChar();n=this.getToken();"noaccess"===n?this.getToken():"/"===n&&this.prevChar();a.push({glyph:e,encoded:i})}break;case"Subrs":this.readInt();this.getToken();for(;"dup"===this.getToken();){const e=this.readInt();g=this.readInt();this.getToken();o=g>0?t.getBytes(g):new Uint8Array(0);c=r.properties.privateData.lenIV;const a=this.readCharStrings(o,c);this.nextChar();n=this.getToken();"noaccess"===n&&this.getToken();i[e]=a}break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":const e=this.readNumberArray();e.length>0&&e.length,0;break;case"StemSnapH":case"StemSnapV":r.properties.privateData[n]=this.readNumberArray();break;case"StdHW":case"StdVW":r.properties.privateData[n]=this.readNumberArray()[0];break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":r.properties.privateData[n]=this.readNumber();break;case"ExpansionFactor":r.properties.privateData[n]=this.readNumber()||.06;break;case"ForceBold":r.properties.privateData[n]=this.readBoolean()}}for(const{encoded:t,glyph:s}of a){const a=new Type1CharString,n=a.convert(t,i,this.seacAnalysisEnabled);let g=a.output;n&&(g=[14]);const o={glyphName:s,charstring:g,width:a.width,lsb:a.lsb,seac:a.seac};".notdef"===s?r.charstrings.unshift(o):r.charstrings.push(o);if(e.builtInEncoding){const t=e.builtInEncoding.indexOf(s);t>-1&&void 0===e.widths[t]&&t>=e.firstChar&&t<=e.lastChar&&(e.widths[t]=a.width)}}return r}extractFontHeader(e){let t;for(;null!==(t=this.getToken());)if("/"===t){t=this.getToken();switch(t){case"FontMatrix":const i=this.readNumberArray();e.fontMatrix=i;break;case"Encoding":const a=this.getToken();let s;if(/^\d+$/.test(a)){s=[];const e=0|parseInt(a,10);this.getToken();for(let i=0;i=s){n+=i;for(;n=0&&(a[e]=s)}}return type1FontGlyphMapping(e,a,i)}hasGlyphId(e){if(e<0||e>=this.numGlyphs)return!1;if(0===e)return!0;return this.charstrings[e-1].charstring.length>0}getSeacs(e){const t=[];for(let i=0,a=e.length;i0;e--)t[e]-=t[e-1];Q.setByName(e,t)}r.topDict.privateDict=Q;const u=new CFFIndex;for(C=0,h=a.length;C0&&e.toUnicode.amend(t)}class fonts_Glyph{constructor(e,t,i,a,s,r,n,g,o){this.originalCharCode=e;this.fontChar=t;this.unicode=i;this.accent=a;this.width=s;this.vmetric=r;this.operatorListId=n;this.isSpace=g;this.isInFont=o}get category(){return shadow(this,"category",function getCharUnicodeCategory(e){const t=ki.get(e);if(t)return t;const i=e.match(Si),a={isWhitespace:!!i?.[1],isZeroWidthDiacritic:!!i?.[2],isInvisibleFormatMark:!!i?.[3]};ki.set(e,a);return a}(this.unicode),!0)}}function int16(e,t){return(e<<8)+t}function writeSignedInt16(e,t,i){e[t+1]=i;e[t]=i>>>8}function signedInt16(e,t){const i=(e<<8)+t;return 32768&i?i-65536:i}function string16(e){return String.fromCharCode(e>>8&255,255&e)}function safeString16(e){e>32767?e=32767:e<-32768&&(e=-32768);return String.fromCharCode(e>>8&255,255&e)}function isTrueTypeCollectionFile(e){return"ttcf"===bytesToString(e.peekBytes(4))}function getFontFileType(e,{type:t,subtype:i,composite:a}){let s,r;if(function isTrueTypeFile(e){const t=e.peekBytes(4);return 65536===readUint32(t,0)||"true"===bytesToString(t)}(e)||isTrueTypeCollectionFile(e))s=a?"CIDFontType2":"TrueType";else if(function isOpenTypeFile(e){return"OTTO"===bytesToString(e.peekBytes(4))}(e))s=a?"CIDFontType2":"OpenType";else if(function isType1File(e){const t=e.peekBytes(2);return 37===t[0]&&33===t[1]||128===t[0]&&1===t[1]}(e))s=a?"CIDFontType0":"MMType1"===t?"MMType1":"Type1";else if(function isCFFFile(e){const t=e.peekBytes(4);return t[0]>=1&&t[3]>=1&&t[3]<=4}(e))if(a){s="CIDFontType0";r="CIDFontType0C"}else{s="MMType1"===t?"MMType1":"Type1";r="Type1C"}else{warn("getFontFileType: Unable to detect correct font file Type/Subtype.");s=t;r=i}return[s,r]}function applyStandardFontGlyphMap(e,t){for(const i in t)e[+i]=t[i]}function buildToFontChar(e,t,i){const a=[];let s;for(let i=0,r=e.length;iC){o++;if(o>=ra.length){warn("Ran out of space in font private use area.");break}c=ra[o][0];C=ra[o][1]}const E=c++;0===Q&&(Q=i);let u=a.get(l);"string"==typeof u&&(u=u.codePointAt(0));if(u&&!(h=u,ra[0][0]<=h&&h<=ra[0][1]||ra[1][0]<=h&&h<=ra[1][1])&&!g.has(Q)){r.set(u,Q);g.add(Q)}s[E]=Q;n[l]=E}var h;return{toFontChar:n,charCodeToGlyphId:s,toUnicodeExtraMap:r,nextAvailableFontCharCode:c}}function createCmapTable(e,t,i){const a=function getRanges(e,t,i){const a=[];for(const t in e)e[t]>=i||a.push({fontCharCode:0|t,glyphId:e[t]});if(t)for(const[e,s]of t)s>=i||a.push({fontCharCode:e,glyphId:s});0===a.length&&a.push({fontCharCode:0,glyphId:0});a.sort((function fontGetRangesSort(e,t){return e.fontCharCode-t.fontCharCode}));const s=[],r=a.length;for(let e=0;e65535?2:1;let r,n,g,o,c="\0\0"+string16(s)+"\0\0"+string32(4+8*s);for(r=a.length-1;r>=0&&!(a[r][0]<=65535);--r);const C=r+1;a[r][0]<65535&&65535===a[r][1]&&(a[r][1]=65534);const h=a[r][1]<65535?1:0,l=C+h,Q=OpenTypeFileBuilder.getSearchParams(l,2);let E,u,d,f,p="",m="",y="",w="",D="",b=0;for(r=0,n=C;r0){m+="ÿÿ";p+="ÿÿ";y+="\0";w+="\0\0"}const F="\0\0"+string16(2*l)+string16(Q.range)+string16(Q.entry)+string16(Q.rangeShift)+m+"\0\0"+p+y+w+D;let S="",k="";if(s>1){c+="\0\0\n"+string32(4+8*s+4+F.length);S="";for(r=0,n=a.length;re||!g)&&(g=e);o 123 are reserved for internal usage");n|=1<65535&&(o=65535)}else{g=0;o=255}const C=e.bbox||[0,0,0,0],h=i.unitsPerEm||(e.fontMatrix?1/Math.max(...e.fontMatrix.slice(0,4).map(Math.abs)):1e3),l=e.ascentScaled?1:h/na,Q=i.ascent||Math.round(l*(e.ascent||C[3]));let E=i.descent||Math.round(l*(e.descent||C[1]));E>0&&e.descent>0&&C[1]<0&&(E=-E);const u=i.yMax||Q,d=-i.yMin||-E;return"\0$ô\0\0\0Š»\0\0\0ŒŠ»\0\0ß\x001\0\0\0\0"+String.fromCharCode(e.fixedPitch?9:0)+"\0\0\0\0\0\0"+string32(a)+string32(s)+string32(r)+string32(n)+"*21*"+string16(e.italicAngle?1:0)+string16(g||e.firstChar)+string16(o||e.lastChar)+string16(Q)+string16(E)+"\0d"+string16(u)+string16(d)+"\0\0\0\0\0\0\0\0"+string16(e.xHeight)+string16(e.capHeight)+string16(0)+string16(g||e.firstChar)+"\0"}function createPostTable(e){return"\0\0\0"+string32(Math.floor(65536*e.italicAngle))+"\0\0\0\0"+string32(e.fixedPitch?1:0)+"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}function createPostscriptName(e){return e.replaceAll(/[^\x21-\x7E]|[[\](){}<>/%]/g,"").slice(0,63)}function createNameTable(e,t){t||(t=[[],[]]);const i=[t[0][0]||"Original licence",t[0][1]||e,t[0][2]||"Unknown",t[0][3]||"uniqueID",t[0][4]||e,t[0][5]||"Version 0.11",t[0][6]||createPostscriptName(e),t[0][7]||"Unknown",t[0][8]||"Unknown",t[0][9]||"Unknown"],a=[];let s,r,n,g,o;for(s=0,r=i.length;s0;if((n||g)&&"CIDFontType2"===i&&this.cidEncoding.startsWith("Identity-")){const i=e.cidToGidMap,a=[];applyStandardFontGlyphMap(a,Oi());/Arial-?Black/i.test(t)?applyStandardFontGlyphMap(a,Pi()):/Calibri/i.test(t)&&applyStandardFontGlyphMap(a,Wi());if(i){for(const e in a){const t=a[e];void 0!==i[t]&&(a[+e]=i[t])}i.length!==this.toUnicode.length&&e.hasIncludedToUnicodeMap&&this.toUnicode instanceof IdentityToUnicodeMap&&this.toUnicode.forEach((function(e,t){const s=a[e];void 0===i[s]&&(a[+e]=t)}))}this.toUnicode instanceof IdentityToUnicodeMap||this.toUnicode.forEach((function(e,t){a[+e]=t}));this.toFontChar=a;this.toUnicode=new ToUnicodeMap(a)}else if(/Symbol/i.test(a))this.toFontChar=buildToFontChar(Bi,wi(),this.differences);else if(/Dingbats/i.test(a))this.toFontChar=buildToFontChar(Qi,Di(),this.differences);else if(n||g){const e=buildToFontChar(this.defaultEncoding,wi(),this.differences);"CIDFontType2"!==i||this.cidEncoding.startsWith("Identity-")||this.toUnicode instanceof IdentityToUnicodeMap||this.toUnicode.forEach((function(t,i){e[+t]=i}));this.toFontChar=e}else{const e=wi(),i=[];this.toUnicode.forEach(((t,a)=>{if(!this.composite){const i=getUnicodeForGlyph(this.differences[t]||this.defaultEncoding[t],e);-1!==i&&(a=i)}i[+t]=a}));this.composite&&this.toUnicode instanceof IdentityToUnicodeMap&&/Tahoma|Verdana/i.test(t)&&applyStandardFontGlyphMap(i,Oi());this.toFontChar=i}amendFallbackToUnicode(e);this.loadedName=a.split("-",1)[0]}checkAndRepair(e,t,i){const a=["OS/2","cmap","head","hhea","hmtx","maxp","name","post","loca","glyf","fpgm","prep","cvt ","CFF "];function readTables(e,t){const i=Object.create(null);i["OS/2"]=null;i.cmap=null;i.head=null;i.hhea=null;i.hmtx=null;i.maxp=null;i.name=null;i.post=null;for(let s=0;s>>0,a=e.getInt32()>>>0,s=e.getInt32()>>>0,r=e.pos;e.pos=e.start||0;e.skip(a);const n=e.getBytes(s);e.pos=r;if("head"===t){n[8]=n[9]=n[10]=n[11]=0;n[17]|=32}return{tag:t,checksum:i,length:s,offset:a,data:n}}function readOpenTypeHeader(e){return{version:e.getString(4),numTables:e.getUint16(),searchRange:e.getUint16(),entrySelector:e.getUint16(),rangeShift:e.getUint16()}}function sanitizeGlyph(e,t,i,a,s,r){const n={length:0,sizeOfInstructions:0};if(t<0||t>=e.length||i>e.length||i-t<=12)return n;const g=e.subarray(t,i),o=signedInt16(g[2],g[3]),c=signedInt16(g[4],g[5]),C=signedInt16(g[6],g[7]),h=signedInt16(g[8],g[9]);if(o>C){writeSignedInt16(g,2,C);writeSignedInt16(g,6,o)}if(c>h){writeSignedInt16(g,4,h);writeSignedInt16(g,8,c)}const l=signedInt16(g[0],g[1]);if(l<0){if(l<-1)return n;a.set(g,s);n.length=g.length;return n}let Q,E=10,u=0;for(Q=0;Qg.length)return n;if(!r&&f>0){a.set(g.subarray(0,d),s);a.set([0,0],s+d);a.set(g.subarray(p,y),s+d+2);y-=f;g.length-y>3&&(y=y+3&-4);n.length=y;return n}if(g.length-y>3){y=y+3&-4;a.set(g.subarray(0,y),s);n.length=y;return n}a.set(g,s);n.length=g.length;return n}function readNameTable(e){const i=(t.start||0)+e.offset;t.pos=i;const a=[[],[]],s=[],r=e.length,n=i+r;if(0!==t.getUint16()||r<6)return[a,s];const g=t.getUint16(),o=t.getUint16();let c,C;for(c=0;cn)continue;t.pos=r;const g=e.name;if(e.encoding){let i="";for(let a=0,s=e.length;a0&&(c+=e-1)}}else{if(d||p){warn("TT: nested FDEFs not allowed");u=!0}d=!0;h=c;n=l.pop();t.functionsDefined[n]={data:o,i:c}}else if(!d&&!p){n=l.at(-1);if(isNaN(n))info("TT: CALL empty stack (or invalid entry).");else{t.functionsUsed[n]=!0;if(n in t.functionsStackDeltas){const e=l.length+t.functionsStackDeltas[n];if(e<0){warn("TT: CALL invalid functions stack delta.");t.hintsValid=!1;return}l.length=e}else if(n in t.functionsDefined&&!E.includes(n)){Q.push({data:o,i:c,stackTop:l.length-1});E.push(n);g=t.functionsDefined[n];if(!g){warn("TT: CALL non-existent function");t.hintsValid=!1;return}o=g.data;c=g.i}}}if(!d&&!p){let t=0;e<=142?t=s[e]:e>=192&&e<=223?t=-1:e>=224&&(t=-2);if(e>=113&&e<=117){a=l.pop();isNaN(a)||(t=2*-a)}for(;t<0&&l.length>0;){l.pop();t++}for(;t>0;){l.push(NaN);t--}}}t.tooComplexToFollowFunctions=u;const m=[o];c>o.length&&m.push(new Uint8Array(c-o.length));if(h>C){warn("TT: complementing a missing function tail");m.push(new Uint8Array([34,45]))}!function foldTTTable(e,t){if(t.length>1){let i,a,s=0;for(i=0,a=t.length;i>>0,r=[];for(let t=0;t>>0);const n={ttcTag:t,majorVersion:i,minorVersion:a,numFonts:s,offsetTable:r};switch(i){case 1:return n;case 2:n.dsigTag=e.getInt32()>>>0;n.dsigLength=e.getInt32()>>>0;n.dsigOffset=e.getInt32()>>>0;return n}throw new FormatError(`Invalid TrueType Collection majorVersion: ${i}.`)}(e),s=t.split("+");let r;for(let n=0;n0||!(i.cMap instanceof IdentityCMap));if("OTTO"===r.version&&!t||!n.head||!n.hhea||!n.maxp||!n.post){o=new Stream(n["CFF "].data);g=new CFFFont(o,i);adjustWidths(i);return this.convert(e,g,i)}delete n.glyf;delete n.loca;delete n.fpgm;delete n.prep;delete n["cvt "];this.isOpenType=!0}if(!n.maxp)throw new FormatError('Required "maxp" table is not found');t.pos=(t.start||0)+n.maxp.offset;let C=t.getInt32();const h=t.getUint16();if(65536!==C&&20480!==C){if(6===n.maxp.length)C=20480;else{if(!(n.maxp.length>=32))throw new FormatError('"maxp" table has a wrong version number');C=65536}!function writeUint32(e,t,i){e[t+3]=255&i;e[t+2]=i>>>8;e[t+1]=i>>>16;e[t]=i>>>24}(n.maxp.data,0,C)}if(i.scaleFactors?.length===h&&c){const{scaleFactors:e}=i,t=int16(n.head.data[50],n.head.data[51]),a=new GlyfTable({glyfTable:n.glyf.data,isGlyphLocationsLong:t,locaTable:n.loca.data,numGlyphs:h});a.scale(e);const{glyf:s,loca:r,isLocationLong:g}=a.write();n.glyf.data=s;n.loca.data=r;if(g!==!!t){n.head.data[50]=0;n.head.data[51]=g?1:0}const o=n.hmtx.data;for(let t=0;t>8&255;o[i+1]=255&a;writeSignedInt16(o,i+2,Math.round(e[t]*signedInt16(o[i+2],o[i+3])))}}let l=h+1,Q=!0;if(l>65535){Q=!1;l=h;warn("Not enough space in glyfs to duplicate first glyph.")}let E=0,u=0;if(C>=65536&&n.maxp.length>=32){t.pos+=8;if(t.getUint16()>2){n.maxp.data[14]=0;n.maxp.data[15]=2}t.pos+=4;E=t.getUint16();t.pos+=4;u=t.getUint16()}n.maxp.data[4]=l>>8;n.maxp.data[5]=255&l;const d=function sanitizeTTPrograms(e,t,i,a){const s={functionsDefined:[],functionsUsed:[],functionsStackDeltas:[],tooComplexToFollowFunctions:!1,hintsValid:!0};e&&sanitizeTTProgram(e,s);t&&sanitizeTTProgram(t,s);e&&function checkInvalidFunctions(e,t){if(!e.tooComplexToFollowFunctions)if(e.functionsDefined.length>t){warn("TT: more functions defined than expected");e.hintsValid=!1}else for(let i=0,a=e.functionsUsed.length;it){warn("TT: invalid function id: "+i);e.hintsValid=!1;return}if(e.functionsUsed[i]&&!e.functionsDefined[i]){warn("TT: undefined function: "+i);e.hintsValid=!1;return}}}(s,a);if(i&&1&i.length){const e=new Uint8Array(i.length+1);e.set(i.data);i.data=e}return s.hintsValid}(n.fpgm,n.prep,n["cvt "],E);if(!d){delete n.fpgm;delete n.prep;delete n["cvt "]}!function sanitizeMetrics(e,t,i,a,s,r){if(!t){i&&(i.data=null);return}e.pos=(e.start||0)+t.offset;e.pos+=4;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;const n=e.getUint16();e.pos+=8;e.pos+=2;let g=e.getUint16();if(0!==n){if(!(2&int16(a.data[44],a.data[45]))){t.data[22]=0;t.data[23]=0}}if(g>s){info(`The numOfMetrics (${g}) should not be greater than the numGlyphs (${s}).`);g=s;t.data[34]=(65280&g)>>8;t.data[35]=255&g}const o=s-g-(i.length-4*g>>1);if(o>0){const e=new Uint8Array(i.length+2*o);e.set(i.data);if(r){e[i.length]=i.data[2];e[i.length+1]=i.data[3]}i.data=e}}(t,n.hhea,n.hmtx,n.head,l,Q);if(!n.head)throw new FormatError('Required "head" table is not found');!function sanitizeHead(e,t,i){const a=e.data,s=function int32(e,t,i,a){return(e<<24)+(t<<16)+(i<<8)+a}(a[0],a[1],a[2],a[3]);if(s>>16!=1){info("Attempting to fix invalid version in head table: "+s);a[0]=0;a[1]=1;a[2]=0;a[3]=0}const r=int16(a[50],a[51]);if(r<0||r>1){info("Attempting to fix invalid indexToLocFormat in head table: "+r);const e=t+1;if(i===e<<1){a[50]=0;a[51]=0}else{if(i!==e<<2)throw new FormatError("Could not fix indexToLocFormat: "+r);a[50]=0;a[51]=1}}}(n.head,h,c?n.loca.length:0);let f=Object.create(null);if(c){const e=int16(n.head.data[50],n.head.data[51]),t=function sanitizeGlyphLocations(e,t,i,a,s,r,n){let g,o,c;if(a){g=4;o=function fontItemDecodeLong(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]};c=function fontItemEncodeLong(e,t,i){e[t]=i>>>24&255;e[t+1]=i>>16&255;e[t+2]=i>>8&255;e[t+3]=255&i}}else{g=2;o=function fontItemDecode(e,t){return e[t]<<9|e[t+1]<<1};c=function fontItemEncode(e,t,i){e[t]=i>>9&255;e[t+1]=i>>1&255}}const C=r?i+1:i,h=g*(1+C),l=new Uint8Array(h);l.set(e.data.subarray(0,h));e.data=l;const Q=t.data,E=Q.length,u=new Uint8Array(E);let d,f;const p=[];for(d=0,f=0;dE&&(e=E);p.push({index:d,offset:e,endOffset:0})}p.sort(((e,t)=>e.offset-t.offset));for(d=0;de.index-t.index));for(d=0;dn&&(n=e.sizeOfInstructions);w+=t;c(l,f,w)}if(0===w){const e=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);for(d=0,f=g;di+w)t.data=u.subarray(0,i+w);else{t.data=new Uint8Array(i+w);t.data.set(u.subarray(0,w))}t.data.set(u.subarray(0,i),w);c(e.data,l.length-g,w+i)}else t.data=u.subarray(0,w);return{missingGlyphs:y,maxSizeOfInstructions:n}}(n.loca,n.glyf,h,e,d,Q,u);f=t.missingGlyphs;if(C>=65536&&n.maxp.length>=32){n.maxp.data[26]=t.maxSizeOfInstructions>>8;n.maxp.data[27]=255&t.maxSizeOfInstructions}}if(!n.hhea)throw new FormatError('Required "hhea" table is not found');if(0===n.hhea.data[10]&&0===n.hhea.data[11]){n.hhea.data[10]=255;n.hhea.data[11]=255}const p={unitsPerEm:int16(n.head.data[18],n.head.data[19]),yMax:signedInt16(n.head.data[42],n.head.data[43]),yMin:signedInt16(n.head.data[38],n.head.data[39]),ascent:signedInt16(n.hhea.data[4],n.hhea.data[5]),descent:signedInt16(n.hhea.data[6],n.hhea.data[7]),lineGap:signedInt16(n.hhea.data[8],n.hhea.data[9])};this.ascent=p.ascent/p.unitsPerEm;this.descent=p.descent/p.unitsPerEm;this.lineGap=p.lineGap/p.unitsPerEm;if(this.cssFontInfo?.lineHeight){this.lineHeight=this.cssFontInfo.metrics.lineHeight;this.lineGap=this.cssFontInfo.metrics.lineGap}else this.lineHeight=this.ascent-this.descent+this.lineGap;n.post&&function readPostScriptTable(e,i,a){const s=(t.start||0)+e.offset;t.pos=s;const r=s+e.length,n=t.getInt32();t.skip(28);let g,o,c=!0;switch(n){case 65536:g=Hi;break;case 131072:const e=t.getUint16();if(e!==a){c=!1;break}const s=[];for(o=0;o=32768){c=!1;break}s.push(e)}if(!c)break;const C=[],h=[];for(;t.pos65535)throw new FormatError("Max size of CID is 65,535");let s=-1;t?s=a:void 0!==e[a]&&(s=e[a]);s>=0&&s>>0;let C=!1;if(g?.platformId!==s||g?.encodingId!==r){if(0!==s||0!==r&&1!==r&&3!==r)if(1===s&&0===r)C=!0;else if(3!==s||1!==r||!a&&g){if(i&&3===s&&0===r){C=!0;let i=!0;if(e>3;e.push(a);i=Math.max(a,i)}const a=[];for(let e=0;e<=i;e++)a.push({firstCode:t.getUint16(),entryCount:t.getUint16(),idDelta:signedInt16(t.getByte(),t.getByte()),idRangePos:t.pos+t.getUint16()});for(let i=0;i<256;i++)if(0===e[i]){t.pos=a[0].idRangePos+2*i;Q=t.getUint16();h.push({charCode:i,glyphId:Q})}else{const s=a[e[i]];for(l=0;l>1;t.skip(6);const i=[];let a;for(a=0;a>1)-(e-a);s.offsetIndex=n;g=Math.max(g,n+s.end-s.start+1)}else s.offsetIndex=-1}const o=[];for(l=0;l>>0;for(l=0;l>>0,i=t.getInt32()>>>0;let a=t.getInt32()>>>0;for(let t=e;t<=i;t++)h.push({charCode:t,glyphId:a++})}}}h.sort((function(e,t){return e.charCode-t.charCode}));for(let e=1;e=61440&&t<=61695&&(t&=255);m[t]=e.glyphId}else for(const e of r)m[e.charCode]=e.glyphId;if(i.glyphNames&&(g.length||this.differences.length))for(let e=0;e<256;++e){if(!o&&void 0!==m[e])continue;const t=this.differences[e]||g[e];if(!t)continue;const a=i.glyphNames.indexOf(t);a>0&&hasGlyph(a)&&(m[e]=a)}}0===m.length&&(m[0]=0);let y=l-1;Q||(y=0);if(!i.cssFontInfo){const e=adjustMapping(m,hasGlyph,y,this.toUnicode);this.toFontChar=e.toFontChar;n.cmap={tag:"cmap",data:createCmapTable(e.charCodeToGlyphId,e.toUnicodeExtraMap,l)};n["OS/2"]&&function validateOS2Table(e,t){t.pos=(t.start||0)+e.offset;const i=t.getUint16();t.skip(60);const a=t.getUint16();if(i<4&&768&a)return!1;if(t.getUint16()>t.getUint16())return!1;t.skip(6);if(0===t.getUint16())return!1;e.data[8]=e.data[9]=0;return!0}(n["OS/2"],t)||(n["OS/2"]={tag:"OS/2",data:createOS2Table(i,e.charCodeToGlyphId,p)})}if(!c)try{o=new Stream(n["CFF "].data);g=new CFFParser(o,i,Ri).parse();g.duplicateFirstGlyph();const e=new CFFCompiler(g);n["CFF "].data=e.compile()}catch{warn("Failed to compile font "+i.loadedName)}if(n.name){const[t,a]=readNameTable(n.name);n.name.data=createNameTable(e,t);this.psName=t[0][6]||null;i.composite||function adjustTrueTypeToUnicode(e,t,i){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(e.hasEncoding)return;if(e.toUnicode instanceof IdentityToUnicodeMap)return;if(!t)return;if(0===i.length)return;if(e.defaultEncoding===li)return;for(const e of i)if(!isWinNameRecord(e))return;const a=li,s=[],r=wi();for(const e in a){const t=a[e];if(""===t)continue;const i=r[t];void 0!==i&&(s[e]=String.fromCharCode(i))}s.length>0&&e.toUnicode.amend(s)}(i,this.isSymbolicFont,a)}else n.name={tag:"name",data:createNameTable(this.name)};const w=new OpenTypeFileBuilder(r.version);for(const e in n)w.addTable(e,n[e].data);return w.toArray()}convert(e,t,i){i.fixedPitch=!1;i.builtInEncoding&&function adjustType1ToUnicode(e,t){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(t===e.defaultEncoding)return;if(e.toUnicode instanceof IdentityToUnicodeMap)return;const i=[],a=wi();for(const s in t){if(e.hasEncoding&&(e.baseEncodingName||void 0!==e.differences[s]))continue;const r=getUnicodeForGlyph(t[s],a);-1!==r&&(i[s]=String.fromCharCode(r))}i.length>0&&e.toUnicode.amend(i)}(i,i.builtInEncoding);let s=1;t instanceof CFFFont&&(s=t.numGlyphs-1);const r=t.getGlyphMapping(i);let n=null,g=r,o=null;if(!i.cssFontInfo){n=adjustMapping(r,t.hasGlyphId.bind(t),s,this.toUnicode);this.toFontChar=n.toFontChar;g=n.charCodeToGlyphId;o=n.toUnicodeExtraMap}const c=t.numGlyphs;function getCharCodes(e,t){let i=null;for(const a in e)t===e[a]&&(i||=[]).push(0|a);return i}function createCharCode(e,t){for(const i in e)if(t===e[i])return 0|i;n.charCodeToGlyphId[n.nextAvailableFontCharCode]=t;return n.nextAvailableFontCharCode++}const C=t.seacs;if(n&&C?.length){const e=i.fontMatrix||a,s=t.getCharset(),g=Object.create(null);for(let t in C){t|=0;const i=C[t],a=hi[i[2]],o=hi[i[3]],c=s.indexOf(a),h=s.indexOf(o);if(c<0||h<0)continue;const l={x:i[0]*e[0]+i[1]*e[2]+e[4],y:i[0]*e[1]+i[1]*e[3]+e[5]},Q=getCharCodes(r,t);if(Q)for(const e of Q){const t=n.charCodeToGlyphId,i=createCharCode(t,c),a=createCharCode(t,h);g[e]={baseFontCharCode:i,accentFontCharCode:a,accentOffset:l}}}i.seacMap=g}const h=i.fontMatrix?1/Math.max(...i.fontMatrix.slice(0,4).map(Math.abs)):1e3,l=new OpenTypeFileBuilder("OTTO");l.addTable("CFF ",t.data);l.addTable("OS/2",createOS2Table(i,g));l.addTable("cmap",createCmapTable(g,o,c));l.addTable("head","\0\0\0\0\0\0\0\0\0\0_<õ\0\0"+safeString16(h)+"\0\0\0\0ž\v~'\0\0\0\0ž\v~'\0\0"+safeString16(i.descent)+"ÿ"+safeString16(i.ascent)+string16(i.italicAngle?2:0)+"\0\0\0\0\0\0\0");l.addTable("hhea","\0\0\0"+safeString16(i.ascent)+safeString16(i.descent)+"\0\0ÿÿ\0\0\0\0\0\0"+safeString16(i.capHeight)+safeString16(Math.tan(i.italicAngle)*i.xHeight)+"\0\0\0\0\0\0\0\0\0\0\0\0"+string16(c));l.addTable("hmtx",function fontFieldsHmtx(){const e=t.charstrings,i=t.cff?t.cff.widths:null;let a="\0\0\0\0";for(let t=1,s=c;t=65520&&e<=65535?0:e>=62976&&e<=63743?bi()[e]||e:173===e?45:e}(i)}this.isType3Font&&(s=i);let C=null;if(this.seacMap?.[e]){c=!0;const t=this.seacMap[e];i=t.baseFontCharCode;C={fontChar:String.fromCodePoint(t.accentFontCharCode),offset:t.accentOffset}}let h="";"number"==typeof i&&(i<=1114111?h=String.fromCodePoint(i):warn(`charToGlyph - invalid fontCharCode: ${i}`));if(this.missingFile&&this.vertical&&1===h.length){const e=Ji()[h.charCodeAt(0)];e&&(h=o=String.fromCharCode(e))}r=new fonts_Glyph(e,h,o,C,a,g,s,t,c);return this._glyphCache[e]=r}charsToGlyphs(e){let t=this._charsCache[e];if(t)return t;t=[];if(this.cMap){const i=Object.create(null),a=e.length;let s=0;for(;st.length%2==1,a=this.toUnicode instanceof IdentityToUnicodeMap?e=>this.toUnicode.charCodeOf(e):e=>this.toUnicode.charCodeOf(String.fromCodePoint(e));for(let s=0,r=e.length;s55295&&(r<57344||r>65533)&&s++;if(this.toUnicode){const e=a(r);if(-1!==e){if(hasCurrentBufErrors()){t.push(i.join(""));i.length=0}for(let t=(this.cMap?this.cMap.getCharCodeLength(e):1)-1;t>=0;t--)i.push(String.fromCharCode(e>>8*t&255));continue}}if(!hasCurrentBufErrors()){t.push(i.join(""));i.length=0}i.push(String.fromCodePoint(r))}t.push(i.join(""));return t}}class ErrorFont{constructor(e){this.error=e;this.loadedName="g_font_error";this.missingFile=!0}charsToGlyphs(){return[]}encodeString(e){return[e]}exportData(e=!1){return{error:this.error}}}const Ia=2,ca=3,Ca=4,ha=5,la=6,Ba=7;class Pattern{constructor(){unreachable("Cannot initialize Pattern.")}static parseShading(e,t,i,a,s){const r=e instanceof BaseStream?e.dict:e,n=r.get("ShadingType");try{switch(n){case Ia:case ca:return new RadialAxialShading(r,t,i,a,s);case Ca:case ha:case la:case Ba:return new MeshShading(e,t,i,a,s);default:throw new FormatError("Unsupported ShadingType: "+n)}}catch(e){if(e instanceof MissingDataException)throw e;warn(e);return new DummyShading}}}class BaseShading{static SMALL_NUMBER=1e-6;getIR(){unreachable("Abstract method `getIR` called.")}}class RadialAxialShading extends BaseShading{constructor(e,t,i,a,s){super();this.shadingType=e.get("ShadingType");let r=0;this.shadingType===Ia?r=4:this.shadingType===ca&&(r=6);this.coordsArr=e.getArray("Coords");if(!isNumberArray(this.coordsArr,r))throw new FormatError("RadialAxialShading: Invalid /Coords array.");const n=ColorSpace.parse({cs:e.getRaw("CS")||e.getRaw("ColorSpace"),xref:t,resources:i,pdfFunctionFactory:a,localColorSpaceCache:s});this.bbox=lookupNormalRect(e.getArray("BBox"),null);let g=0,o=1;const c=e.getArray("Domain");isNumberArray(c,2)&&([g,o]=c);let C=!1,h=!1;const l=e.getArray("Extend");(function isBooleanArray(e,t){return Array.isArray(e)&&(null===t||e.length===t)&&e.every((e=>"boolean"==typeof e))})(l,2)&&([C,h]=l);if(!(this.shadingType!==ca||C&&h)){const[e,t,i,a,s,r]=this.coordsArr,n=Math.hypot(e-a,t-s);i<=r+n&&r<=i+n&&warn("Unsupported radial gradient.")}this.extendStart=C;this.extendEnd=h;const Q=e.getRaw("Function"),E=a.createFromArray(Q),u=(o-g)/840,d=this.colorStops=[];if(g>=o||u<=0){info("Bad shading domain.");return}const f=new Float32Array(n.numComps),p=new Float32Array(1);let m,y=0;p[0]=g;E(p,0,f,0);let w=n.getRgb(f,0);const D=Util.makeHexColor(w[0],w[1],w[2]);d.push([0,D]);let b=1;p[0]=g+u;E(p,0,f,0);let F=n.getRgb(f,0),S=F[0]-w[0]+1,k=F[1]-w[1]+1,R=F[2]-w[2]+1,N=F[0]-w[0]-1,G=F[1]-w[1]-1,M=F[2]-w[2]-1;for(let e=2;e<840;e++){p[0]=g+e*u;E(p,0,f,0);m=n.getRgb(f,0);const t=e-y;S=Math.min(S,(m[0]-w[0]+1)/t);k=Math.min(k,(m[1]-w[1]+1)/t);R=Math.min(R,(m[2]-w[2]+1)/t);N=Math.max(N,(m[0]-w[0]-1)/t);G=Math.max(G,(m[1]-w[1]-1)/t);M=Math.max(M,(m[2]-w[2]-1)/t);if(!(N<=S&&G<=k&&M<=R)){const e=Util.makeHexColor(F[0],F[1],F[2]);d.push([b/840,e]);S=m[0]-F[0]+1;k=m[1]-F[1]+1;R=m[2]-F[2]+1;N=m[0]-F[0]-1;G=m[1]-F[1]-1;M=m[2]-F[2]-1;y=b;w=F}b=e;F=m}const U=Util.makeHexColor(F[0],F[1],F[2]);d.push([1,U]);let x="transparent";if(e.has("Background")){m=n.getRgb(e.get("Background"),0);x=Util.makeHexColor(m[0],m[1],m[2])}if(!C){d.unshift([0,x]);d[1][0]+=BaseShading.SMALL_NUMBER}if(!h){d.at(-1)[0]-=BaseShading.SMALL_NUMBER;d.push([1,x])}this.colorStops=d}getIR(){const{coordsArr:e,shadingType:t}=this;let i,a,s,r,n;if(t===Ia){a=[e[0],e[1]];s=[e[2],e[3]];r=null;n=null;i="axial"}else if(t===ca){a=[e[0],e[1]];s=[e[3],e[4]];r=e[2];n=e[5];i="radial"}else unreachable(`getPattern type unknown: ${t}`);return["RadialAxial",i,this.bbox,this.colorStops,a,s,r,n]}}class MeshStreamReader{constructor(e,t){this.stream=e;this.context=t;this.buffer=0;this.bufferLength=0;const i=t.numComps;this.tmpCompsBuf=new Float32Array(i);const a=t.colorSpace.numComps;this.tmpCsCompsBuf=t.colorFn?new Float32Array(a):this.tmpCompsBuf}get hasData(){if(this.stream.end)return this.stream.pos0)return!0;const e=this.stream.getByte();if(e<0)return!1;this.buffer=e;this.bufferLength=8;return!0}readBits(e){let t=this.buffer,i=this.bufferLength;if(32===e){if(0===i)return(this.stream.getByte()<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte())>>>0;t=t<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte();const e=this.stream.getByte();this.buffer=e&(1<>i)>>>0}if(8===e&&0===i)return this.stream.getByte();for(;i>i}align(){this.buffer=0;this.bufferLength=0}readFlag(){return this.readBits(this.context.bitsPerFlag)}readCoordinate(){const e=this.context.bitsPerCoordinate,t=this.readBits(e),i=this.readBits(e),a=this.context.decode,s=e<32?1/((1<r?r:e;t=t>n?n:t;i=ie*s[t])):i;let n,g=-2;const o=[];for(const[e,t]of a.map(((e,t)=>[e,t])).sort((([e],[t])=>e-t)))if(-1!==e)if(e===g+1){n.push(r[t]);g+=1}else{g=e;n=[r[t]];o.push(e,n)}return o}(e),i=new Dict(null);i.set("BaseFont",Name.get(e));i.set("Type",Name.get("Font"));i.set("Subtype",Name.get("CIDFontType2"));i.set("Encoding",Name.get("Identity-H"));i.set("CIDToGIDMap",Name.get("Identity"));i.set("W",t);i.set("FirstChar",t[0]);i.set("LastChar",t.at(-2)+t.at(-1).length-1);const a=new Dict(null);i.set("FontDescriptor",a);const s=new Dict(null);s.set("Ordering","Identity");s.set("Registry","Adobe");s.set("Supplement",0);i.set("CIDSystemInfo",s);return i}class PostScriptParser{constructor(e){this.lexer=e;this.operators=[];this.token=null;this.prev=null}nextToken(){this.prev=this.token;this.token=this.lexer.getToken()}accept(e){if(this.token.type===e){this.nextToken();return!0}return!1}expect(e){if(this.accept(e))return!0;throw new FormatError(`Unexpected symbol: found ${this.token.type} expected ${e}.`)}parse(){this.nextToken();this.expect(as.LBRACE);this.parseBlock();this.expect(as.RBRACE);return this.operators}parseBlock(){for(;;)if(this.accept(as.NUMBER))this.operators.push(this.prev.value);else if(this.accept(as.OPERATOR))this.operators.push(this.prev.value);else{if(!this.accept(as.LBRACE))return;this.parseCondition()}}parseCondition(){const e=this.operators.length;this.operators.push(null,null);this.parseBlock();this.expect(as.RBRACE);if(this.accept(as.IF)){this.operators[e]=this.operators.length;this.operators[e+1]="jz"}else{if(!this.accept(as.LBRACE))throw new FormatError("PS Function: error parsing conditional.");{const t=this.operators.length;this.operators.push(null,null);const i=this.operators.length;this.parseBlock();this.expect(as.RBRACE);this.expect(as.IFELSE);this.operators[t]=this.operators.length;this.operators[t+1]="j";this.operators[e]=i;this.operators[e+1]="jz"}}}}const as={LBRACE:0,RBRACE:1,NUMBER:2,OPERATOR:3,IF:4,IFELSE:5};class PostScriptToken{static get opCache(){return shadow(this,"opCache",Object.create(null))}constructor(e,t){this.type=e;this.value=t}static getOperator(e){return PostScriptToken.opCache[e]||=new PostScriptToken(as.OPERATOR,e)}static get LBRACE(){return shadow(this,"LBRACE",new PostScriptToken(as.LBRACE,"{"))}static get RBRACE(){return shadow(this,"RBRACE",new PostScriptToken(as.RBRACE,"}"))}static get IF(){return shadow(this,"IF",new PostScriptToken(as.IF,"IF"))}static get IFELSE(){return shadow(this,"IFELSE",new PostScriptToken(as.IFELSE,"IFELSE"))}}class PostScriptLexer{constructor(e){this.stream=e;this.nextChar();this.strBuf=[]}nextChar(){return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(t<0)return Bt;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!isWhiteSpace(t))break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return new PostScriptToken(as.NUMBER,this.getNumber());case 123:this.nextChar();return PostScriptToken.LBRACE;case 125:this.nextChar();return PostScriptToken.RBRACE}const i=this.strBuf;i.length=0;i[0]=String.fromCharCode(t);for(;(t=this.nextChar())>=0&&(t>=65&&t<=90||t>=97&&t<=122);)i.push(String.fromCharCode(t));const a=i.join("");switch(a.toLowerCase()){case"if":return PostScriptToken.IF;case"ifelse":return PostScriptToken.IFELSE;default:return PostScriptToken.getOperator(a)}}getNumber(){let e=this.currentChar;const t=this.strBuf;t.length=0;t[0]=String.fromCharCode(e);for(;(e=this.nextChar())>=0&&(e>=48&&e<=57||45===e||46===e);)t.push(String.fromCharCode(e));const i=parseFloat(t.join(""));if(isNaN(i))throw new FormatError(`Invalid floating point number: ${i}`);return i}}class BaseLocalCache{constructor(e){this._onlyRefs=!0===e?.onlyRefs;if(!this._onlyRefs){this._nameRefMap=new Map;this._imageMap=new Map}this._imageCache=new RefSetCache}getByName(e){this._onlyRefs&&unreachable("Should not call `getByName` method.");const t=this._nameRefMap.get(e);return t?this.getByRef(t):this._imageMap.get(e)||null}getByRef(e){return this._imageCache.get(e)||null}set(e,t,i){unreachable("Abstract method `set` called.")}}class LocalImageCache extends BaseLocalCache{set(e,t=null,i){if("string"!=typeof e)throw new Error('LocalImageCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,i)}else this._imageMap.has(e)||this._imageMap.set(e,i)}}class LocalColorSpaceCache extends BaseLocalCache{set(e=null,t=null,i){if("string"!=typeof e&&!t)throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.');if(t){if(this._imageCache.has(t))return;null!==e&&this._nameRefMap.set(e,t);this._imageCache.put(t,i)}else this._imageMap.has(e)||this._imageMap.set(e,i)}}class LocalFunctionCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,i){if(!t)throw new Error('LocalFunctionCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,i)}}class LocalGStateCache extends BaseLocalCache{set(e,t=null,i){if("string"!=typeof e)throw new Error('LocalGStateCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,i)}else this._imageMap.has(e)||this._imageMap.set(e,i)}}class LocalTilingPatternCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,i){if(!t)throw new Error('LocalTilingPatternCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,i)}}class RegionalImageCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,i){if(!t)throw new Error('RegionalImageCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,i)}}class GlobalImageCache{static NUM_PAGES_THRESHOLD=2;static MIN_IMAGES_TO_CACHE=10;static MAX_BYTE_SIZE=5e7;#F=new RefSet;constructor(){this._refCache=new RefSetCache;this._imageCache=new RefSetCache}get#S(){let e=0;for(const t of this._imageCache)e+=t.byteSize;return e}get#k(){return!(this._imageCache.size+e)):null}class PDFFunction{static getSampleArray(e,t,i,a){let s,r,n=1;for(s=0,r=e.length;s>o)*C;c&=(1<i?e=i:e0&&(l=r[h-1]);let Q=a[1];h>1,c=s.length>>1,C=new PostScriptEvaluator(g),h=Object.create(null);let l=8192;const Q=new Float32Array(c);return function constructPostScriptFn(e,t,i,a){let s,n,g="";const E=Q;for(s=0;se&&(n=e)}d[s]=n}if(l>0){l--;h[g]=d}i.set(d,a)}}}function isPDFFunction(e){let t;if(e instanceof Dict)t=e;else{if(!(e instanceof BaseStream))return!1;t=e.dict}return t.has("FunctionType")}class PostScriptStack{static MAX_STACK_SIZE=100;constructor(e){this.stack=e?Array.from(e):[]}push(e){if(this.stack.length>=PostScriptStack.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");this.stack.push(e)}pop(){if(this.stack.length<=0)throw new Error("PostScript function stack underflow.");return this.stack.pop()}copy(e){if(this.stack.length+e>=PostScriptStack.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");const t=this.stack;for(let i=t.length-e,a=e-1;a>=0;a--,i++)t.push(t[i])}index(e){this.push(this.stack[this.stack.length-e-1])}roll(e,t){const i=this.stack,a=i.length-e,s=i.length-1,r=a+(t-Math.floor(t/e)*e);for(let e=a,t=s;e0?t.push(n<>g);break;case"ceiling":n=t.pop();t.push(Math.ceil(n));break;case"copy":n=t.pop();t.copy(n);break;case"cos":n=t.pop();t.push(Math.cos(n%360/180*Math.PI));break;case"cvi":n=0|t.pop();t.push(n);break;case"cvr":break;case"div":g=t.pop();n=t.pop();t.push(n/g);break;case"dup":t.copy(1);break;case"eq":g=t.pop();n=t.pop();t.push(n===g);break;case"exch":t.roll(2,1);break;case"exp":g=t.pop();n=t.pop();t.push(n**g);break;case"false":t.push(!1);break;case"floor":n=t.pop();t.push(Math.floor(n));break;case"ge":g=t.pop();n=t.pop();t.push(n>=g);break;case"gt":g=t.pop();n=t.pop();t.push(n>g);break;case"idiv":g=t.pop();n=t.pop();t.push(n/g|0);break;case"index":n=t.pop();t.index(n);break;case"le":g=t.pop();n=t.pop();t.push(n<=g);break;case"ln":n=t.pop();t.push(Math.log(n));break;case"log":n=t.pop();t.push(Math.log10(n));break;case"lt":g=t.pop();n=t.pop();t.push(n=t?new AstLiteral(t):e.max<=t?e:new AstMin(e,t)}class PostScriptCompiler{compile(e,t,i){const a=[],s=[],r=t.length>>1,n=i.length>>1;let g,o,c,C,h,l,Q,E,u=0;for(let e=0;et.min){g.unshift("Math.max(",r,", ");g.push(")")}if(n4){a=!0;t=0}else{a=!1;t=1}const o=[];for(r=0;r=0&&"ET"===gs[e];--e)gs[e]="EN";for(let e=r+1;e0&&(t=gs[r-1]);let i=h;e+1E&&isOdd(E)&&(d=E)}for(E=u;E>=d;--E){let e=-1;for(r=0,n=o.length;r=0){reverseValues(ns,e,r);e=-1}}else e<0&&(e=r);e>=0&&reverseValues(ns,e,o.length)}for(r=0,n=ns.length;r"!==e||(ns[r]="")}return createBidiText(ns.join(""),a)}const os={style:"normal",weight:"normal"},Is={style:"normal",weight:"bold"},cs={style:"italic",weight:"normal"},Cs={style:"italic",weight:"bold"},hs=new Map([["Times-Roman",{local:["Times New Roman","Times-Roman","Times","Liberation Serif","Nimbus Roman","Nimbus Roman L","Tinos","Thorndale","TeX Gyre Termes","FreeSerif","Linux Libertine O","Libertinus Serif","DejaVu Serif","Bitstream Vera Serif","Ubuntu"],style:os,ultimate:"serif"}],["Times-Bold",{alias:"Times-Roman",style:Is,ultimate:"serif"}],["Times-Italic",{alias:"Times-Roman",style:cs,ultimate:"serif"}],["Times-BoldItalic",{alias:"Times-Roman",style:Cs,ultimate:"serif"}],["Helvetica",{local:["Helvetica","Helvetica Neue","Arial","Arial Nova","Liberation Sans","Arimo","Nimbus Sans","Nimbus Sans L","A030","TeX Gyre Heros","FreeSans","DejaVu Sans","Albany","Bitstream Vera Sans","Arial Unicode MS","Microsoft Sans Serif","Apple Symbols","Cantarell"],path:"LiberationSans-Regular.ttf",style:os,ultimate:"sans-serif"}],["Helvetica-Bold",{alias:"Helvetica",path:"LiberationSans-Bold.ttf",style:Is,ultimate:"sans-serif"}],["Helvetica-Oblique",{alias:"Helvetica",path:"LiberationSans-Italic.ttf",style:cs,ultimate:"sans-serif"}],["Helvetica-BoldOblique",{alias:"Helvetica",path:"LiberationSans-BoldItalic.ttf",style:Cs,ultimate:"sans-serif"}],["Courier",{local:["Courier","Courier New","Liberation Mono","Nimbus Mono","Nimbus Mono L","Cousine","Cumberland","TeX Gyre Cursor","FreeMono","Linux Libertine Mono O","Libertinus Mono"],style:os,ultimate:"monospace"}],["Courier-Bold",{alias:"Courier",style:Is,ultimate:"monospace"}],["Courier-Oblique",{alias:"Courier",style:cs,ultimate:"monospace"}],["Courier-BoldOblique",{alias:"Courier",style:Cs,ultimate:"monospace"}],["ArialBlack",{local:["Arial Black"],style:{style:"normal",weight:"900"},fallback:"Helvetica-Bold"}],["ArialBlack-Bold",{alias:"ArialBlack"}],["ArialBlack-Italic",{alias:"ArialBlack",style:{style:"italic",weight:"900"},fallback:"Helvetica-BoldOblique"}],["ArialBlack-BoldItalic",{alias:"ArialBlack-Italic"}],["ArialNarrow",{local:["Arial Narrow","Liberation Sans Narrow","Helvetica Condensed","Nimbus Sans Narrow","TeX Gyre Heros Cn"],style:os,fallback:"Helvetica"}],["ArialNarrow-Bold",{alias:"ArialNarrow",style:Is,fallback:"Helvetica-Bold"}],["ArialNarrow-Italic",{alias:"ArialNarrow",style:cs,fallback:"Helvetica-Oblique"}],["ArialNarrow-BoldItalic",{alias:"ArialNarrow",style:Cs,fallback:"Helvetica-BoldOblique"}],["Calibri",{local:["Calibri","Carlito"],style:os,fallback:"Helvetica"}],["Calibri-Bold",{alias:"Calibri",style:Is,fallback:"Helvetica-Bold"}],["Calibri-Italic",{alias:"Calibri",style:cs,fallback:"Helvetica-Oblique"}],["Calibri-BoldItalic",{alias:"Calibri",style:Cs,fallback:"Helvetica-BoldOblique"}],["Wingdings",{local:["Wingdings","URW Dingbats"],style:os}],["Wingdings-Regular",{alias:"Wingdings"}],["Wingdings-Bold",{alias:"Wingdings"}]]),ls=new Map([["Arial-Black","ArialBlack"]]);function getFamilyName(e){const t=new Set(["thin","extralight","ultralight","demilight","semilight","light","book","regular","normal","medium","demibold","semibold","bold","extrabold","ultrabold","black","heavy","extrablack","ultrablack","roman","italic","oblique","ultracondensed","extracondensed","condensed","semicondensed","normal","semiexpanded","expanded","extraexpanded","ultraexpanded","bolditalic"]);return e.split(/[- ,+]+/g).filter((e=>!t.has(e.toLowerCase()))).join(" ")}function generateFont({alias:e,local:t,path:i,fallback:a,style:s,ultimate:r},n,g,o=!0,c=!0,C=""){const h={style:null,ultimate:null};if(t){const e=C?` ${C}`:"";for(const i of t)n.push(`local(${i}${e})`)}if(e){const t=hs.get(e),r=C||function getStyleToAppend(e){switch(e){case Is:return"Bold";case cs:return"Italic";case Cs:return"Bold Italic";default:if("bold"===e?.weight)return"Bold";if("italic"===e?.style)return"Italic"}return""}(s);Object.assign(h,generateFont(t,n,g,o&&!a,c&&!i,r))}s&&(h.style=s);r&&(h.ultimate=r);if(o&&a){const e=hs.get(a),{ultimate:t}=generateFont(e,n,g,o,c&&!i,C);h.ultimate||=t}c&&i&&g&&n.push(`url(${g}${i})`);return h}function getFontSubstitution(e,t,i,a,s,r){if(a.startsWith("InvalidPDFjsFont_"))return null;"TrueType"!==r&&"Type1"!==r||!/^[A-Z]{6}\+/.test(a)||(a=a.slice(7));const n=a=normalizeFontName(a);let g=e.get(n);if(g)return g;let o=hs.get(a);if(!o)for(const[e,t]of ls)if(a.startsWith(e)){a=`${t}${a.substring(e.length)}`;o=hs.get(a);break}let c=!1;if(!o){o=hs.get(s);c=!0}const C=`${t.getDocId()}_s${t.createFontId()}`;if(!o){if(!validateFontName(a)){warn(`Cannot substitute the font because of its name: ${a}`);e.set(n,null);return null}const t=/bold/gi.test(a),i=/oblique|italic/gi.test(a),s=t&&i&&Cs||t&&Is||i&&cs||os;g={css:`"${getFamilyName(a)}",${C}`,guessFallback:!0,loadedName:C,baseFontName:a,src:`local(${a})`,style:s};e.set(n,g);return g}const h=[];c&&validateFontName(a)&&h.push(`local(${a})`);const{style:l,ultimate:Q}=generateFont(o,h,i),E=null===Q,u=E?"":`,${Q}`;g={css:`"${getFamilyName(a)}",${C}${u}`,guessFallback:E,loadedName:C,baseFontName:a,src:h.join(","),style:l};e.set(n,g);return g}class ImageResizer{static#R=2048;static#y=FeatureTest.isImageDecoderSupported;constructor(e,t){this._imgData=e;this._isMask=t}static get canUseImageDecoder(){return shadow(this,"canUseImageDecoder",this.#y?ImageDecoder.isTypeSupported("image/bmp"):Promise.resolve(!1))}static needsToBeResized(e,t){if(e<=this.#R&&t<=this.#R)return!1;const{MAX_DIM:i}=this;if(e>i||t>i)return!0;const a=e*t;if(this._hasMaxArea)return a>this.MAX_AREA;if(a(this.MAX_AREA=this.#R**2)}static get MAX_DIM(){return shadow(this,"MAX_DIM",this._guessMax(2048,65537,0,1))}static get MAX_AREA(){this._hasMaxArea=!0;return shadow(this,"MAX_AREA",this._guessMax(this.#R,this.MAX_DIM,128,0)**2)}static set MAX_AREA(e){if(e>=0){this._hasMaxArea=!0;shadow(this,"MAX_AREA",e)}}static setOptions({canvasMaxAreaInBytes:e=-1,isImageDecoderSupported:t=!1}){this._hasMaxArea||(this.MAX_AREA=e>>2);this.#y=t}static _areGoodDims(e,t){try{const i=new OffscreenCanvas(e,t),a=i.getContext("2d");a.fillRect(0,0,1,1);const s=a.getImageData(0,0,1,1).data[3];i.width=i.height=1;return 0!==s}catch{return!1}}static _guessMax(e,t,i,a){for(;e+i+1pt){const e=this.#N();if(e)return e}const a=this._encodeBMP();let s,r;if(await ImageResizer.canUseImageDecoder){s=new ImageDecoder({data:a,type:"image/bmp",preferAnimation:!1,transfer:[a.buffer]});r=s.decode().catch((e=>{warn(`BMP image decoding failed: ${e}`);return createImageBitmap(new Blob([this._encodeBMP().buffer],{type:"image/bmp"}))})).finally((()=>{s.close()}))}else r=createImageBitmap(new Blob([a.buffer],{type:"image/bmp"}));const{MAX_AREA:n,MAX_DIM:g}=ImageResizer,o=Math.max(t/g,i/g,Math.sqrt(t*i/n)),c=Math.max(o,2),C=Math.round(10*(o+1.25))/10/c,h=Math.floor(Math.log2(C)),l=new Array(h+2).fill(2);l[0]=c;l.splice(-1,1,C/(1<>n,o=a>>n;let c,C=a;try{c=new Uint8Array(r)}catch{let e=Math.floor(Math.log2(r+1));for(;;)try{c=new Uint8Array(2**e-1);break}catch{e-=1}C=Math.floor((2**e-1)/(4*i));const t=i*C*4;t>n;e>3,n=i+3&-4;if(i!==n){const e=new Uint8Array(n*t);let a=0;for(let r=0,g=t*i;r>>8;t[i++]=255&s}}}else{if(!ArrayBuffer.isView(e))throw new Error("Invalid data format, must be a string or TypedArray.");t=e.slice();i=t.byteLength}const a=i>>2,s=i-4*a,r=new Uint32Array(t.buffer,0,a);let n=0,g=0,o=this.h1,c=this.h2;const C=3432918353,h=461845907,l=11601,Q=13715;for(let e=0;e>>17;n=n*h&Qs|n*Q&Es;o^=n;o=o<<13|o>>>19;o=5*o+3864292196}else{g=r[e];g=g*C&Qs|g*l&Es;g=g<<15|g>>>17;g=g*h&Qs|g*Q&Es;c^=g;c=c<<13|c>>>19;c=5*c+3864292196}n=0;switch(s){case 3:n^=t[4*a+2]<<16;case 2:n^=t[4*a+1]<<8;case 1:n^=t[4*a];n=n*C&Qs|n*l&Es;n=n<<15|n>>>17;n=n*h&Qs|n*Q&Es;1&a?o^=n:c^=n}this.h1=o;this.h2=c}hexdigest(){let e=this.h1,t=this.h2;e^=t>>>1;e=3981806797*e&Qs|36045*e&Es;t=4283543511*t&Qs|(2950163797*(t<<16|e>>>16)&Qs)>>>16;e^=t>>>1;e=444984403*e&Qs|60499*e&Es;t=3301882366*t&Qs|(3120437893*(t<<16|e>>>16)&Qs)>>>16;e^=t>>>1;return(e>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")}}function addState(e,t,i,a,s){let r=e;for(let e=0,i=t.length-1;e1e3){c=Math.max(c,l);Q+=h+2;l=0;h=0}C.push({transform:t,x:l,y:Q,w:i.width,h:i.height});l+=i.width+2;h=Math.max(h,i.height)}const E=Math.max(c,l)+1,u=Q+h+1,d=new Uint8Array(E*u*4),f=E<<2;for(let e=0;e=0;){t[r-4]=t[r];t[r-3]=t[r+1];t[r-2]=t[r+2];t[r-1]=t[r+3];t[r+i]=t[r+i-4];t[r+i+1]=t[r+i-3];t[r+i+2]=t[r+i-2];t[r+i+3]=t[r+i-1];r-=f}}const p={width:E,height:u};if(e.isOffscreenCanvasSupported){const e=new OffscreenCanvas(E,u);e.getContext("2d").putImageData(new ImageData(new Uint8ClampedArray(d.buffer),E,u),0,0);p.bitmap=e.transferToImageBitmap();p.data=null}else{p.kind=S;p.data=d}i.splice(r,4*o,$e);a.splice(r,4*o,[p,C]);return r+1}));addState(us,[MA,xA,Ze,UA],null,(function iterateImageMaskGroup(e,t){const i=e.fnArray,a=(t-(e.iCurr-3))%4;switch(a){case 0:return i[t]===MA;case 1:return i[t]===xA;case 2:return i[t]===Ze;case 3:return i[t]===UA}throw new Error(`iterateImageMaskGroup - invalid pos: ${a}`)}),(function foundImageMaskGroup(e,t){const i=e.fnArray,a=e.argsArray,s=e.iCurr,r=s-3,n=s-2,g=s-1;let o=Math.floor((t-r)/4);if(o<10)return t-(t-r)%4;let c,C,h=!1;const l=a[g][0],Q=a[n][0],E=a[n][1],u=a[n][2],d=a[n][3];if(E===u){h=!0;c=n+4;let e=g+4;for(let t=1;t=4&&i[r-4]===i[n]&&i[r-3]===i[g]&&i[r-2]===i[o]&&i[r-1]===i[c]&&a[r-4][0]===C&&a[r-4][1]===h){l++;Q-=5}let E=Q+4;for(let e=1;e=i)break}a=(a||us)[e[t]];if(a&&!Array.isArray(a)){r.iCurr=t;t++;if(!a.checkFn||(0,a.checkFn)(r)){s=a;a=null}else a=null}else t++}this.state=a;this.match=s;this.lastProcessed=t}flush(){for(;this.match;){const e=this.queue.fnArray.length;this.lastProcessed=(0,this.match.processFn)(this.context,e);this.match=null;this.state=null;this._optimize()}}reset(){this.state=null;this.match=null;this.lastProcessed=0}}class OperatorList{static CHUNK_SIZE=1e3;static CHUNK_SIZE_ABOUT=this.CHUNK_SIZE-5;constructor(e=0,t){this._streamSink=t;this.fnArray=[];this.argsArray=[];this.optimizer=!t||e&E?new NullOptimizer(this):new QueueOptimizer(this);this.dependencies=new Set;this._totalLength=0;this.weight=0;this._resolved=t?null:Promise.resolve()}set isOffscreenCanvasSupported(e){this.optimizer.isOffscreenCanvasSupported=e}get length(){return this.argsArray.length}get ready(){return this._resolved||this._streamSink.ready}get totalLength(){return this._totalLength+this.length}addOp(e,t){this.optimizer.push(e,t);this.weight++;this._streamSink&&(this.weight>=OperatorList.CHUNK_SIZE||this.weight>=OperatorList.CHUNK_SIZE_ABOUT&&(e===UA||e===ee))&&this.flush()}addImageOps(e,t,i,a=!1){if(a){this.addOp(MA);this.addOp(GA,[[["SMask",!1]]])}void 0!==i&&this.addOp(Ye,["OC",i]);this.addOp(e,t);void 0!==i&&this.addOp(ve,[]);a&&this.addOp(UA)}addDependency(e){if(!this.dependencies.has(e)){this.dependencies.add(e);this.addOp(wA,[e])}}addDependencies(e){for(const t of e)this.addDependency(t)}addOpList(e){if(e instanceof OperatorList){for(const t of e.dependencies)this.dependencies.add(t);for(let t=0,i=e.length;ta&&(e=a);return e}function resizeImageMask(e,t,i,a,s,r){const n=s*r;let g;g=t<=8?new Uint8Array(n):t<=16?new Uint16Array(n):new Uint32Array(n);const o=i/s,c=a/r;let C,h,l,Q,E=0;const u=new Uint16Array(s),d=i;for(C=0;C0&&Number.isInteger(i.height)&&i.height>0&&(i.width!==l||i.height!==Q)){warn("PDFImage - using the Width/Height of the image data, rather than the image dictionary.");l=i.width;Q=i.height}if(l<1||Q<1)throw new FormatError(`Invalid image width: ${l} or height: ${Q}`);this.width=l;this.height=Q;this.interpolate=c.get("I","Interpolate");this.imageMask=c.get("IM","ImageMask")||!1;this.matte=c.get("Matte")||!1;let E=i.bitsPerComponent;if(!E){E=c.get("BPC","BitsPerComponent");if(!E){if(!this.imageMask)throw new FormatError(`Bits per component missing in image: ${this.imageMask}`);E=1}}this.bpc=E;if(!this.imageMask){let s=c.getRaw("CS")||c.getRaw("ColorSpace");const r=!!s;if(r)this.jpxDecoderOptions?.smaskInData&&(s=Name.get("DeviceRGBA"));else if(this.jpxDecoderOptions)s=Name.get("DeviceRGBA");else switch(i.numComps){case 1:s=Name.get("DeviceGray");break;case 3:s=Name.get("DeviceRGB");break;case 4:s=Name.get("DeviceCMYK");break;default:throw new Error(`Images with ${i.numComps} color components not supported.`)}this.colorSpace=ColorSpace.parse({cs:s,xref:e,resources:a?t:null,pdfFunctionFactory:g,localColorSpaceCache:o});this.numComps=this.colorSpace.numComps;if(this.jpxDecoderOptions){this.jpxDecoderOptions.numComponents=r?this.numComp:0;this.jpxDecoderOptions.isIndexedColormap="Indexed"===this.colorSpace.name}}this.decode=c.getArray("D","Decode");this.needsDecode=!1;if(this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode,E)||n&&!ColorSpace.isDefaultDecode(this.decode,1))){this.needsDecode=!0;const e=(1<>3)*i,g=e.byteLength;let o,c;if(!a||s&&!(n===g))if(s){o=new Uint8Array(n);o.set(e);o.fill(255,g)}else o=new Uint8Array(e);else o=e;if(s)for(c=0;c>7&1;n[l+1]=h>>6&1;n[l+2]=h>>5&1;n[l+3]=h>>4&1;n[l+4]=h>>3&1;n[l+5]=h>>2&1;n[l+6]=h>>1&1;n[l+7]=1&h;l+=8}if(l>=1}}}}else{let i=0;h=0;for(l=0,C=r;l>a;s<0?s=0:s>c&&(s=c);n[l]=s;h&=(1<n[a+1]){t=255;break}}g[C]=t}}}if(g)for(C=0,l=3,h=t*a;C>3,C=t&&ImageResizer.needsToBeResized(i,a);if(!this.smask&&!this.mask&&"DeviceRGBA"===this.colorSpace.name){s.kind=S;const e=s.data=await this.getImageBytes(g*n*4,{});return t?C?ImageResizer.createImage(s,!1):this.createBitmap(S,i,a,e):s}if(!e){let e;"DeviceGray"===this.colorSpace.name&&1===o?e=b:"DeviceRGB"!==this.colorSpace.name||8!==o||this.needsDecode||(e=F);if(e&&!this.smask&&!this.mask&&i===n&&a===g){const r=await this.#G(n,g);if(r)return r;const o=await this.getImageBytes(g*c,{});if(t)return C?ImageResizer.createImage({data:o,kind:e,width:i,height:a,interpolate:this.interpolate},this.needsDecode):this.createBitmap(e,n,g,o);s.kind=e;s.data=o;if(this.needsDecode){assert(e===b,"PDFImage.createImageData: The image must be grayscale.");const t=s.data;for(let e=0,i=t.length;e>3,n=await this.getImageBytes(a*r,{internal:!0}),g=this.getComponents(n);let o,c;if(1===s){c=i*a;if(this.needsDecode)for(o=0;o0&&t.args[0].count++}class TimeSlotManager{static TIME_SLOT_DURATION_MS=20;static CHECK_TIME_EVERY=100;constructor(){this.reset()}check(){if(++this.checkedh){const e="Image exceeded maximum allowed size and was removed.";if(this.options.ignoreErrors){warn(e);return}throw new Error(e)}let l;g.has("OC")&&(l=await this.parseMarkedContentProps(g.get("OC"),e));let Q,E;if(g.get("IM","ImageMask")||!1){const e=g.get("I","Interpolate"),i=c+7>>3,n=t.getBytes(i*C),h=g.getArray("D","Decode");if(this.parsingType3Font){Q=PDFImage.createRawMask({imgArray:n,width:c,height:C,imageIsFromDecodeStream:t instanceof DecodeStream,inverseDecode:h?.[0]>0,interpolate:e});Q.cached=!!s;E=[Q];a.addImageOps(Ze,E,l);if(s){const e={fn:Ze,args:E,optionalContent:l};r.set(s,o,e);o&&this._regionalImageCache.set(null,o,e)}return}Q=await PDFImage.createMask({imgArray:n,width:c,height:C,imageIsFromDecodeStream:t instanceof DecodeStream,inverseDecode:h?.[0]>0,interpolate:e,isOffscreenCanvasSupported:this.options.isOffscreenCanvasSupported});if(Q.isSingleOpaquePixel){a.addImageOps(tt,[],l);if(s){const e={fn:tt,args:[],optionalContent:l};r.set(s,o,e);o&&this._regionalImageCache.set(null,o,e)}return}const u=`mask_${this.idFactory.createObjId()}`;a.addDependency(u);Q.dataLen=Q.bitmap?Q.width*Q.height*4:Q.data.length;this._sendImgData(u,Q);E=[{data:u,width:Q.width,height:Q.height,interpolate:Q.interpolate,count:1}];a.addImageOps(Ze,E,l);if(s){const e={objId:u,fn:Ze,args:E,optionalContent:l};r.set(s,o,e);o&&this._regionalImageCache.set(null,o,e)}return}const u=g.has("SMask")||g.has("Mask");if(i&&c+C<200&&!u){try{const s=new PDFImage({xref:this.xref,res:e,image:t,isInline:i,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:n});Q=await s.createImageData(!0,!1);a.isOffscreenCanvasSupported=this.options.isOffscreenCanvasSupported;a.addImageOps(_e,[Q],l)}catch(e){const t=`Unable to decode inline image: "${e}".`;if(!this.options.ignoreErrors)throw new Error(t);warn(t)}return}let d=`img_${this.idFactory.createObjId()}`,f=!1;if(this.parsingType3Font)d=`${this.idFactory.getDocId()}_type3_${d}`;else if(s&&o){f=this.globalImageCache.shouldCache(o,this.pageIndex);if(f){assert(!i,"Cannot cache an inline image globally.");d=`${this.idFactory.getDocId()}_${d}`}}a.addDependency(d);E=[d,c,C];a.addImageOps(ze,E,l,u);if(f){if(this.globalImageCache.hasDecodeFailed(o)){this.globalImageCache.setData(o,{objId:d,fn:ze,args:E,optionalContent:l,hasMask:u,byteSize:0});this._sendImgData(d,null,f);return}if(c*C>25e4||u){const e=await this.handler.sendWithPromise("commonobj",[d,"CopyLocalImage",{imageRef:o}]);if(e){this.globalImageCache.setData(o,{objId:d,fn:ze,args:E,optionalContent:l,hasMask:u,byteSize:0});this.globalImageCache.addByteSize(o,e);return}}}PDFImage.buildImage({xref:this.xref,res:e,image:t,isInline:i,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:n}).then((async e=>{Q=await e.createImageData(!1,this.options.isOffscreenCanvasSupported);Q.dataLen=Q.bitmap?Q.width*Q.height*4:Q.data.length;Q.ref=o;f&&this.globalImageCache.addByteSize(o,Q.dataLen);return this._sendImgData(d,Q,f)})).catch((e=>{warn(`Unable to decode image "${d}": "${e}".`);o&&this.globalImageCache.addDecodeFailed(o);return this._sendImgData(d,null,f)}));if(s){const e={objId:d,fn:ze,args:E,optionalContent:l,hasMask:u};r.set(s,o,e);if(o){this._regionalImageCache.set(null,o,e);f&&this.globalImageCache.setData(o,{objId:d,fn:ze,args:E,optionalContent:l,hasMask:u,byteSize:0})}}}handleSMask(e,t,i,a,s,r){const n=e.get("G"),g={subtype:e.get("S").name,backdrop:e.get("BC")},o=e.get("TR");if(isPDFFunction(o)){const e=this._pdfFunctionFactory.create(o),t=new Uint8Array(256),i=new Float32Array(1);for(let a=0;a<256;a++){i[0]=a/255;e(i,0,i,0);t[a]=255*i[0]|0}g.transferMap=t}return this.buildFormXObject(t,n,g,i,a,s.state.clone(),r)}handleTransferFunction(e){let t;if(Array.isArray(e))t=e;else{if(!isPDFFunction(e))return null;t=[e]}const i=[];let a=0,s=0;for(const e of t){const t=this.xref.fetchIfRef(e);a++;if(isName(t,"Identity")){i.push(null);continue}if(!isPDFFunction(t))return null;const r=this._pdfFunctionFactory.create(t),n=new Uint8Array(256),g=new Float32Array(1);for(let e=0;e<256;e++){g[0]=e/255;r(g,0,g,0);n[e]=255*g[0]|0}i.push(n);s++}return 1!==a&&4!==a||0===s?null:i}handleTilingType(e,t,i,a,s,r,n,g){const o=new OperatorList,c=Dict.merge({xref:this.xref,dictArray:[s.get("Resources"),i]});return this.getOperatorList({stream:a,task:n,resources:c,operatorList:o}).then((function(){const i=o.getIR(),a=getTilingPatternIR(i,s,t);r.addDependencies(o.dependencies);r.addOp(e,a);s.objId&&g.set(null,s.objId,{operatorListIR:i,dict:s})})).catch((e=>{if(!(e instanceof AbortException)){if(!this.options.ignoreErrors)throw e;warn(`handleTilingType - ignoring pattern: "${e}".`)}}))}async handleSetFont(e,t,i,a,s,r,n=null,g=null){const o=t?.[0]instanceof Name?t[0].name:null;let c=await this.loadFont(o,i,e,n,g);if(c.font.isType3Font)try{await c.loadType3Data(this,e,s);a.addDependencies(c.type3Dependencies)}catch(e){c=new TranslatedFont({loadedName:"g_font_error",font:new ErrorFont(`Type3 font load error: ${e}`),dict:c.font,evaluatorOptions:this.options})}r.font=c.font;c.send(this.handler);return c.loadedName}handleText(e,t){const i=t.font,a=i.charsToGlyphs(e);if(i.data){(!!(t.textRenderingMode&D)||"Pattern"===t.fillColorSpace.name||i.disableFontFace||this.options.disableFontFace)&&PartialEvaluator.buildFontPaths(i,a,this.handler,this.options)}return a}ensureStateFont(e){if(e.font)return;const t=new FormatError("Missing setFont (Tf) operator before text rendering operator.");if(!this.options.ignoreErrors)throw t;warn(`ensureStateFont: "${t}".`)}async setGState({resources:e,gState:t,operatorList:i,cacheKey:a,task:s,stateManager:r,localGStateCache:n,localColorSpaceCache:g}){const o=t.objId;let c=!0;const C=[];let h=Promise.resolve();for(const a of t.getKeys()){const n=t.get(a);switch(a){case"Type":break;case"LW":case"LC":case"LJ":case"ML":case"D":case"RI":case"FL":case"CA":case"ca":C.push([a,n]);break;case"Font":c=!1;h=h.then((()=>this.handleSetFont(e,null,n[0],i,s,r.state).then((function(e){i.addDependency(e);C.push([a,[e,n[1]]])}))));break;case"BM":C.push([a,normalizeBlendMode(n)]);break;case"SMask":if(isName(n,"None")){C.push([a,!1]);break}if(n instanceof Dict){c=!1;h=h.then((()=>this.handleSMask(n,e,i,s,r,g)));C.push([a,!0])}else warn("Unsupported SMask type");break;case"TR":const t=this.handleTransferFunction(n);C.push([a,t]);break;case"OP":case"op":case"OPM":case"BG":case"BG2":case"UCR":case"UCR2":case"TR2":case"HT":case"SM":case"SA":case"AIS":case"TK":info("graphic state operator "+a);break;default:info("Unknown graphic state operator "+a)}}await h;C.length>0&&i.addOp(GA,[C]);c&&n.set(a,o,C)}loadFont(e,t,i,a=null,s=null){const errorFont=async()=>new TranslatedFont({loadedName:"g_font_error",font:new ErrorFont(`Font "${e}" is not available.`),dict:t,evaluatorOptions:this.options});let r;if(t)t instanceof Ref&&(r=t);else{const t=i.get("Font");t&&(r=t.getRaw(e))}if(r){if(this.type3FontRefs?.has(r))return errorFont();if(this.fontCache.has(r))return this.fontCache.get(r);try{t=this.xref.fetchIfRef(r)}catch(e){warn(`loadFont - lookup failed: "${e}".`)}}if(!(t instanceof Dict)){if(!this.options.ignoreErrors&&!this.parsingType3Font){warn(`Font "${e}" is not available.`);return errorFont()}warn(`Font "${e}" is not available -- attempting to fallback to a default font.`);t=a||PartialEvaluator.fallbackFontDict}if(t.cacheKey&&this.fontCache.has(t.cacheKey))return this.fontCache.get(t.cacheKey);const{promise:n,resolve:g}=Promise.withResolvers();let o;try{o=this.preEvaluateFont(t);o.cssFontInfo=s}catch(e){warn(`loadFont - preEvaluateFont failed: "${e}".`);return errorFont()}const{descriptor:c,hash:C}=o,h=r instanceof Ref;let l;if(C&&c instanceof Dict){const e=c.fontAliases||=Object.create(null);if(e[C]){const t=e[C].aliasRef;if(h&&t&&this.fontCache.has(t)){this.fontCache.putAlias(r,t);return this.fontCache.get(r)}}else e[C]={fontID:this.idFactory.createFontId()};h&&(e[C].aliasRef=r);l=e[C].fontID}else l=this.idFactory.createFontId();assert(l?.startsWith("f"),'The "fontID" must be (correctly) defined.');if(h)this.fontCache.put(r,n);else{t.cacheKey=`cacheKey_${l}`;this.fontCache.put(t.cacheKey,n)}t.loadedName=`${this.idFactory.getDocId()}_${l}`;this.translateFont(o).then((e=>{g(new TranslatedFont({loadedName:t.loadedName,font:e,dict:t,evaluatorOptions:this.options}))})).catch((e=>{warn(`loadFont - translateFont failed: "${e}".`);g(new TranslatedFont({loadedName:t.loadedName,font:new ErrorFont(e instanceof Error?e.message:e),dict:t,evaluatorOptions:this.options}))}));return n}buildPath(e,t,i,a=!1){const s=e.length-1;i||(i=[]);if(s<0||e.fnArray[s]!==it){if(a){warn(`Encountered path operator "${t}" inside of a text object.`);e.addOp(MA,null)}let s;switch(t){case TA:const e=i[0]+i[2],t=i[1]+i[3];s=[Math.min(i[0],e),Math.min(i[1],t),Math.max(i[0],e),Math.max(i[1],t)];break;case LA:case HA:s=[i[0],i[1],i[0],i[1]];break;default:s=[1/0,1/0,-1/0,-1/0]}e.addOp(it,[[t],i,s]);a&&e.addOp(UA,null)}else{const a=e.argsArray[s];a[0].push(t);a[1].push(...i);const r=a[2];switch(t){case TA:const e=i[0]+i[2],t=i[1]+i[3];r[0]=Math.min(r[0],i[0],e);r[1]=Math.min(r[1],i[1],t);r[2]=Math.max(r[2],i[0],e);r[3]=Math.max(r[3],i[1],t);break;case LA:case HA:r[0]=Math.min(r[0],i[0]);r[1]=Math.min(r[1],i[1]);r[2]=Math.max(r[2],i[0]);r[3]=Math.max(r[3],i[1])}}}parseColorSpace({cs:e,resources:t,localColorSpaceCache:i}){return ColorSpace.parseAsync({cs:e,xref:this.xref,resources:t,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:i}).catch((e=>{if(e instanceof AbortException)return null;if(this.options.ignoreErrors){warn(`parseColorSpace - ignoring ColorSpace: "${e}".`);return null}throw e}))}parseShading({shading:e,resources:t,localColorSpaceCache:i,localShadingPatternCache:a}){let s,r=a.get(e);if(r)return r;try{s=Pattern.parseShading(e,this.xref,t,this._pdfFunctionFactory,i).getIR()}catch(t){if(t instanceof AbortException)return null;if(this.options.ignoreErrors){warn(`parseShading - ignoring shading: "${t}".`);a.set(e,null);return null}throw t}r=`pattern_${this.idFactory.createObjId()}`;this.parsingType3Font&&(r=`${this.idFactory.getDocId()}_type3_${r}`);a.set(e,r);this.parsingType3Font?this.handler.send("commonobj",[r,"Pattern",s]):this.handler.send("obj",[r,this.pageIndex,"Pattern",s]);return r}handleColorN(e,t,i,a,s,r,n,g,o,c){const C=i.pop();if(C instanceof Name){const h=s.getRaw(C.name),l=h instanceof Ref&&o.getByRef(h);if(l)try{const s=a.base?a.base.getRgb(i,0):null,r=getTilingPatternIR(l.operatorListIR,l.dict,s);e.addOp(t,r);return}catch{}const Q=this.xref.fetchIfRef(h);if(Q){const s=Q instanceof BaseStream?Q.dict:Q,C=s.get("PatternType");if(C===fs){const g=a.base?a.base.getRgb(i,0):null;return this.handleTilingType(t,g,r,Q,s,e,n,o)}if(C===ps){const i=s.get("Shading"),a=this.parseShading({shading:i,resources:r,localColorSpaceCache:g,localShadingPatternCache:c});if(a){const i=lookupMatrix(s.getArray("Matrix"),null);e.addOp(t,["Shading",a,i])}return}throw new FormatError(`Unknown PatternType: ${C}`)}}throw new FormatError(`Unknown PatternName: ${C}`)}_parseVisibilityExpression(e,t,i){if(++t>10){warn("Visibility expression is too deeply nested");return}const a=e.length,s=this.xref.fetchIfRef(e[0]);if(!(a<2)&&s instanceof Name){switch(s.name){case"And":case"Or":case"Not":i.push(s.name);break;default:warn(`Invalid operator ${s.name} in visibility expression`);return}for(let s=1;s0)return{type:"OCMD",expression:t}}const t=i.get("OCGs");if(Array.isArray(t)||t instanceof Dict){const e=[];if(Array.isArray(t))for(const i of t)e.push(i.toString());else e.push(t.objId);return{type:a,ids:e,policy:i.get("P")instanceof Name?i.get("P").name:null,expression:null}}if(t instanceof Ref)return{type:a,id:t.toString()}}return null}getOperatorList({stream:e,task:t,resources:i,operatorList:a,initialState:s=null,fallbackFontDict:r=null}){i||=Dict.empty;s||=new EvalState;if(!a)throw new Error('getOperatorList: missing "operatorList" parameter');const n=this,g=this.xref;let o=!1;const c=new LocalImageCache,C=new LocalColorSpaceCache,h=new LocalGStateCache,l=new LocalTilingPatternCache,Q=new Map,E=i.get("XObject")||Dict.empty,u=i.get("Pattern")||Dict.empty,d=new StateManager(s),f=new EvaluatorPreprocessor(e,g,d),p=new TimeSlotManager;function closePendingRestoreOPS(e){for(let e=0,t=f.savedStatesDepth;e0&&a.addOp(GA,[t]);e=null;continue}}next(new Promise((function(e,s){if(!S)throw new FormatError("GState must be referred to by name.");const r=i.get("ExtGState");if(!(r instanceof Dict))throw new FormatError("ExtGState should be a dictionary.");const g=r.get(F);if(!(g instanceof Dict))throw new FormatError("GState should be a dictionary.");n.setGState({resources:i,gState:g,operatorList:a,cacheKey:F,task:t,stateManager:d,localGStateCache:h,localColorSpaceCache:C}).then(e,s)})).catch((function(e){if(!(e instanceof AbortException)){if(!n.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring ExtGState: "${e}".`)}})));return;case LA:case HA:case JA:case YA:case vA:case KA:case TA:n.buildPath(a,s,e,o);continue;case Le:case He:case Ke:case Te:continue;case Ye:if(!(e[0]instanceof Name)){warn(`Expected name for beginMarkedContentProps arg0=${e[0]}`);a.addOp(Ye,["OC",null]);continue}if("OC"===e[0].name){next(n.parseMarkedContentProps(e[1],i).then((e=>{a.addOp(Ye,["OC",e])})).catch((e=>{if(!(e instanceof AbortException)){if(!n.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring beginMarkedContentProps: "${e}".`);a.addOp(Ye,["OC",null])}})));return}e=[e[0].name,e[1]instanceof Dict?e[1].get("MCID"):null];break;default:if(null!==e){for(w=0,D=e.length;w{if(!(e instanceof AbortException)){if(!this.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring errors during "${t.name}" task: "${e}".`);closePendingRestoreOPS()}}))}getTextContent({stream:e,task:t,resources:s,stateManager:r=null,includeMarkedContent:n=!1,sink:g,seenStyles:o=new Set,viewBox:c,lang:C=null,markedContentData:h=null,disableNormalization:l=!1,keepWhiteSpace:Q=!1}){s||=Dict.empty;r||=new StateManager(new TextState);n&&(h||={level:0});const E={items:[],styles:Object.create(null),lang:C},u={initialized:!1,str:[],totalWidth:0,totalHeight:0,width:0,height:0,vertical:!1,prevTransform:null,textAdvanceScale:0,spaceInFlowMin:0,spaceInFlowMax:0,trackingSpaceMin:1/0,negativeSpaceMax:-1/0,notASpace:-1/0,transform:null,fontName:null,hasEOL:!1},d=[" "," "];let f=0;function saveLastChar(e){const t=(f+1)%2,i=" "!==d[f]&&" "===d[t];d[f]=e;f=t;return!Q&&i}function shouldAddWhitepsace(){return!Q&&" "!==d[f]&&" "===d[(f+1)%2]}function resetLastChars(){d[0]=d[1]=" ";f=0}const p=this,m=this.xref,y=[];let w=null;const D=new LocalImageCache,b=new LocalGStateCache,F=new EvaluatorPreprocessor(e,m,r);let S;function pushWhitespace({width:e=0,height:t=0,transform:i=u.prevTransform,fontName:a=u.fontName}){E.items.push({str:" ",dir:"ltr",width:e,height:t,transform:i,fontName:a,hasEOL:!1})}function getCurrentTextTransform(){const e=S.font,t=[S.fontSize*S.textHScale,0,0,S.fontSize,0,S.textRise];if(e.isType3Font&&(S.fontSize<=1||e.isCharBBox)&&!isArrayEqual(S.fontMatrix,a)){const i=e.bbox[3]-e.bbox[1];i>0&&(t[3]*=i*S.fontMatrix[3])}return Util.transform(S.ctm,Util.transform(S.textMatrix,t))}function ensureTextContentItem(){if(u.initialized)return u;const{font:e,loadedName:t}=S;if(!o.has(t)){o.add(t);E.styles[t]={fontFamily:e.fallbackName,ascent:e.ascent,descent:e.descent,vertical:e.vertical};if(p.options.fontExtraProperties&&e.systemFontInfo){const i=E.styles[t];i.fontSubstitution=e.systemFontInfo.css;i.fontSubstitutionLoadedName=e.systemFontInfo.loadedName}}u.fontName=t;const i=u.transform=getCurrentTextTransform();if(e.vertical){u.width=u.totalWidth=Math.hypot(i[0],i[1]);u.height=u.totalHeight=0;u.vertical=!0}else{u.width=u.totalWidth=0;u.height=u.totalHeight=Math.hypot(i[2],i[3]);u.vertical=!1}const a=Math.hypot(S.textLineMatrix[0],S.textLineMatrix[1]),s=Math.hypot(S.ctm[0],S.ctm[1]);u.textAdvanceScale=s*a;const{fontSize:r}=S;u.trackingSpaceMin=.102*r;u.notASpace=.03*r;u.negativeSpaceMax=-.2*r;u.spaceInFlowMin=.102*r;u.spaceInFlowMax=.6*r;u.hasEOL=!1;u.initialized=!0;return u}function updateAdvanceScale(){if(!u.initialized)return;const e=Math.hypot(S.textLineMatrix[0],S.textLineMatrix[1]),t=Math.hypot(S.ctm[0],S.ctm[1])*e;if(t!==u.textAdvanceScale){if(u.vertical){u.totalHeight+=u.height*u.textAdvanceScale;u.height=0}else{u.totalWidth+=u.width*u.textAdvanceScale;u.width=0}u.textAdvanceScale=t}}function runBidiTransform(e){let t=e.str.join("");l||(t=function normalizeUnicode(e){if(!Ct){Ct=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu;ht=new Map([["ſt","ſt"]])}return e.replaceAll(Ct,((e,t,i)=>t?t.normalize("NFKC"):ht.get(i)))}(t));const i=bidi(t,-1,e.vertical);return{str:i.str,dir:i.dir,width:Math.abs(e.totalWidth),height:Math.abs(e.totalHeight),transform:e.transform,fontName:e.fontName,hasEOL:e.hasEOL}}async function handleSetFont(e,i){const r=await p.loadFont(e,i,s);if(r.font.isType3Font)try{await r.loadType3Data(p,s,t)}catch{}S.loadedName=r.loadedName;S.font=r.font;S.fontMatrix=r.font.fontMatrix||a}function applyInverseRotation(e,t,i){const a=Math.hypot(i[0],i[1]);return[(i[0]*e+i[1]*t)/a,(i[2]*e+i[3]*t)/a]}function compareWithLastPosition(e){const t=getCurrentTextTransform();let i=t[4],a=t[5];if(S.font?.vertical){if(ic[2]||a+ec[3])return!1}else if(i+ec[2]||ac[3])return!1;if(!S.font||!u.prevTransform)return!0;let s=u.prevTransform[4],r=u.prevTransform[5];if(s===i&&r===a)return!0;let n=-1;t[0]&&0===t[1]&&0===t[2]?n=t[0]>0?0:180:t[1]&&0===t[0]&&0===t[3]&&(n=t[1]>0?90:270);switch(n){case 0:break;case 90:[i,a]=[a,i];[s,r]=[r,s];break;case 180:[i,a,s,r]=[-i,-a,-s,-r];break;case 270:[i,a]=[-a,-i];[s,r]=[-r,-s];break;default:[i,a]=applyInverseRotation(i,a,t);[s,r]=applyInverseRotation(s,r,u.prevTransform)}if(S.font.vertical){const e=(r-a)/u.textAdvanceScale,t=i-s,n=Math.sign(u.height);if(e.5*u.width){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}if(Math.abs(t)>u.width){appendEOL();return!0}e<=n*u.notASpace&&resetLastChars();if(e<=n*u.trackingSpaceMin)if(shouldAddWhitepsace()){resetLastChars();flushTextContentItem();pushWhitespace({height:Math.abs(e)})}else u.height+=e;else if(!addFakeSpaces(e,u.prevTransform,n))if(0===u.str.length){resetLastChars();pushWhitespace({height:Math.abs(e)})}else u.height+=e;Math.abs(t)>.25*u.width&&flushTextContentItem();return!0}const g=(i-s)/u.textAdvanceScale,o=a-r,C=Math.sign(u.width);if(g.5*u.height){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}if(Math.abs(o)>u.height){appendEOL();return!0}g<=C*u.notASpace&&resetLastChars();if(g<=C*u.trackingSpaceMin)if(shouldAddWhitepsace()){resetLastChars();flushTextContentItem();pushWhitespace({width:Math.abs(g)})}else u.width+=g;else if(!addFakeSpaces(g,u.prevTransform,C))if(0===u.str.length){resetLastChars();pushWhitespace({width:Math.abs(g)})}else u.width+=g;Math.abs(o)>.25*u.height&&flushTextContentItem();return!0}function buildTextContentItem({chars:e,extraSpacing:t}){const i=S.font;if(!e){const e=S.charSpacing+t;e&&(i.vertical?S.translateTextMatrix(0,-e):S.translateTextMatrix(e*S.textHScale,0));Q&&compareWithLastPosition(0);return}const a=i.charsToGlyphs(e),s=S.fontMatrix[0]*S.fontSize;for(let e=0,r=a.length;e0){const e=y.join("");y.length=0;buildTextContentItem({chars:e,extraSpacing:0})}break;case he:if(!r.state.font){p.ensureStateFont(r.state);continue}buildTextContentItem({chars:N[0],extraSpacing:0});break;case Be:if(!r.state.font){p.ensureStateFont(r.state);continue}S.carriageReturn();buildTextContentItem({chars:N[0],extraSpacing:0});break;case Qe:if(!r.state.font){p.ensureStateFont(r.state);continue}S.wordSpacing=N[0];S.charSpacing=N[1];S.carriageReturn();buildTextContentItem({chars:N[2],extraSpacing:0});break;case xe:flushTextContentItem();w??=s.get("XObject")||Dict.empty;R=N[0]instanceof Name;f=N[0].name;if(R&&D.getByName(f))break;next(new Promise((function(e,i){if(!R)throw new FormatError("XObject must be referred to by name.");let a=w.getRaw(f);if(a instanceof Ref){if(D.getByRef(a)){e();return}if(p.globalImageCache.getData(a,p.pageIndex)){e();return}a=m.fetch(a)}if(!(a instanceof BaseStream))throw new FormatError("XObject should be a stream");const E=a.dict.get("Subtype");if(!(E instanceof Name))throw new FormatError("XObject should have a Name subtype");if("Form"!==E.name){D.set(f,a.dict.objId,!0);e();return}const u=r.state.clone(),d=new StateManager(u),y=lookupMatrix(a.dict.getArray("Matrix"),null);y&&d.transform(y);enqueueChunk();const b={enqueueInvoked:!1,enqueue(e,t){this.enqueueInvoked=!0;g.enqueue(e,t)},get desiredSize(){return g.desiredSize},get ready(){return g.ready}};p.getTextContent({stream:a,task:t,resources:a.dict.get("Resources")||s,stateManager:d,includeMarkedContent:n,sink:b,seenStyles:o,viewBox:c,lang:C,markedContentData:h,disableNormalization:l,keepWhiteSpace:Q}).then((function(){b.enqueueInvoked||D.set(f,a.dict.objId,!0);e()}),i)})).catch((function(e){if(!(e instanceof AbortException)){if(!p.options.ignoreErrors)throw e;warn(`getTextContent - ignoring XObject: "${e}".`)}})));return;case GA:R=N[0]instanceof Name;f=N[0].name;if(R&&b.getByName(f))break;next(new Promise((function(e,t){if(!R)throw new FormatError("GState must be referred to by name.");const i=s.get("ExtGState");if(!(i instanceof Dict))throw new FormatError("ExtGState should be a dictionary.");const a=i.get(f);if(!(a instanceof Dict))throw new FormatError("GState should be a dictionary.");const r=a.get("Font");if(r){flushTextContentItem();S.fontName=null;S.fontSize=r[1];handleSetFont(null,r[0]).then(e,t)}else{b.set(f,a.objId,!0);e()}})).catch((function(e){if(!(e instanceof AbortException)){if(!p.options.ignoreErrors)throw e;warn(`getTextContent - ignoring ExtGState: "${e}".`)}})));return;case Je:flushTextContentItem();if(n){h.level++;E.items.push({type:"beginMarkedContent",tag:N[0]instanceof Name?N[0].name:null})}break;case Ye:flushTextContentItem();if(n){h.level++;let e=null;N[1]instanceof Dict&&(e=N[1].get("MCID"));E.items.push({type:"beginMarkedContentProps",id:Number.isInteger(e)?`${p.idFactory.getPageObjId()}_mc${e}`:null,tag:N[0]instanceof Name?N[0].name:null})}break;case ve:flushTextContentItem();if(n){if(0===h.level)break;h.level--;E.items.push({type:"endMarkedContent"})}break;case UA:!e||e.font===S.font&&e.fontSize===S.fontSize&&e.fontName===S.fontName||flushTextContentItem()}if(E.items.length>=g.desiredSize){d=!0;break}}if(d)next(ms);else{flushTextContentItem();enqueueChunk();e()}})).catch((e=>{if(!(e instanceof AbortException)){if(!this.options.ignoreErrors)throw e;warn(`getTextContent - ignoring errors during "${t.name}" task: "${e}".`);flushTextContentItem();enqueueChunk()}}))}async extractDataStructures(e,t){const i=this.xref;let a;const s=this.readToUnicode(t.toUnicode);if(t.composite){const i=e.get("CIDSystemInfo");i instanceof Dict&&(t.cidSystemInfo={registry:stringToPDFString(i.get("Registry")),ordering:stringToPDFString(i.get("Ordering")),supplement:i.get("Supplement")});try{const t=e.get("CIDToGIDMap");t instanceof BaseStream&&(a=t.getBytes())}catch(e){if(!this.options.ignoreErrors)throw e;warn(`extractDataStructures - ignoring CIDToGIDMap data: "${e}".`)}}const r=[];let n,g=null;if(e.has("Encoding")){n=e.get("Encoding");if(n instanceof Dict){g=n.get("BaseEncoding");g=g instanceof Name?g.name:null;if(n.has("Differences")){const e=n.get("Differences");let t=0;for(const a of e){const e=i.fetchIfRef(a);if("number"==typeof e)t=e;else{if(!(e instanceof Name))throw new FormatError(`Invalid entry in 'Differences' array: ${e}`);r[t++]=e.name}}}}else if(n instanceof Name)g=n.name;else{const e="Encoding is not a Name nor a Dict";if(!this.options.ignoreErrors)throw new FormatError(e);warn(e)}"MacRomanEncoding"!==g&&"MacExpertEncoding"!==g&&"WinAnsiEncoding"!==g&&(g=null)}const o=!t.file||t.isInternalFont,c=qi()[t.name];g&&o&&c&&(g=null);if(g)t.defaultEncoding=getEncoding(g);else{const e=!!(t.flags&Mi),i=!!(t.flags&xi);n=hi;"TrueType"!==t.type||i||(n=li);if(e||c){n=Ci;o&&(/Symbol/i.test(t.name)?n=Bi:/Dingbats/i.test(t.name)?n=Qi:/Wingdings/i.test(t.name)&&(n=li))}t.defaultEncoding=n}t.differences=r;t.baseEncodingName=g;t.hasEncoding=!!g||r.length>0;t.dict=e;t.toUnicode=await s;const C=await this.buildToUnicode(t);t.toUnicode=C;a&&(t.cidToGidMap=this.readCidToGidMap(a,C));return t}_simpleFontToUnicode(e,t=!1){assert(!e.composite,"Must be a simple font.");const i=[],a=e.defaultEncoding.slice(),s=e.baseEncodingName,r=e.differences;for(const e in r){const t=r[e];".notdef"!==t&&(a[e]=t)}const n=wi();for(const r in a){let g=a[r];if(""===g)continue;let o=n[g];if(void 0!==o){i[r]=String.fromCharCode(o);continue}let c=0;switch(g[0]){case"G":3===g.length&&(c=parseInt(g.substring(1),16));break;case"g":5===g.length&&(c=parseInt(g.substring(1),16));break;case"C":case"c":if(g.length>=3&&g.length<=4){const i=g.substring(1);if(t){c=parseInt(i,16);break}c=+i;if(Number.isNaN(c)&&Number.isInteger(parseInt(i,16)))return this._simpleFontToUnicode(e,!0)}break;case"u":o=getUnicodeForGlyph(g,n);-1!==o&&(c=o);break;default:switch(g){case"f_h":case"f_t":case"T_h":i[r]=g.replaceAll("_","");continue}}if(c>0&&c<=1114111&&Number.isInteger(c)){if(s&&c===+r){const e=getEncoding(s);if(e&&(g=e[r])){i[r]=String.fromCharCode(n[g]);continue}}i[r]=String.fromCodePoint(c)}}return i}async buildToUnicode(e){e.hasIncludedToUnicodeMap=e.toUnicode?.length>0;if(e.hasIncludedToUnicodeMap){!e.composite&&e.hasEncoding&&(e.fallbackToUnicode=this._simpleFontToUnicode(e));return e.toUnicode}if(!e.composite)return new ToUnicodeMap(this._simpleFontToUnicode(e));if(e.composite&&(e.cMap.builtInCMap&&!(e.cMap instanceof IdentityCMap)||"Adobe"===e.cidSystemInfo?.registry&&("GB1"===e.cidSystemInfo.ordering||"CNS1"===e.cidSystemInfo.ordering||"Japan1"===e.cidSystemInfo.ordering||"Korea1"===e.cidSystemInfo.ordering))){const{registry:t,ordering:i}=e.cidSystemInfo,a=Name.get(`${t}-${i}-UCS2`),s=await CMapFactory.create({encoding:a,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}),r=[],n=[];e.cMap.forEach((function(e,t){if(t>65535)throw new FormatError("Max size of CID is 65,535");const i=s.lookup(t);if(i){n.length=0;for(let e=0,t=i.length;e>1;(0!==s||t.has(r))&&(i[r]=s)}return i}extractWidths(e,t,i){const a=this.xref;let s=[],r=0;const n=[];let g;if(i.composite){const t=e.get("DW");r="number"==typeof t?Math.ceil(t):1e3;const o=e.get("W");if(Array.isArray(o))for(let e=0,t=o.length;e{const t=o.get(e),s=new OperatorList;return a.getOperatorList({stream:t,task:i,resources:c,operatorList:s}).then((()=>{s.fnArray[0]===ue&&this._removeType3ColorOperators(s,E);C[e]=s.getIR();for(const e of s.dependencies)n.add(e)})).catch((function(t){warn(`Type3 font resource "${e}" is not available.`);const i=new OperatorList;C[e]=i.getIR()}))}));this.type3Loaded=g.then((()=>{r.charProcOperatorList=C;if(this._bbox){r.isCharBBox=!0;r.bbox=this._bbox}}));return this.type3Loaded}_removeType3ColorOperators(e,t=NaN){const i=Util.normalizeRect(e.argsArray[0].slice(2)),a=i[2]-i[0],s=i[3]-i[1],r=Math.hypot(a,s);if(0===a||0===s){e.fnArray.splice(0,1);e.argsArray.splice(0,1)}else if(0===t||Math.round(r/t)>=10){this._bbox||(this._bbox=[1/0,1/0,-1/0,-1/0]);this._bbox[0]=Math.min(this._bbox[0],i[0]);this._bbox[1]=Math.min(this._bbox[1],i[1]);this._bbox[2]=Math.max(this._bbox[2],i[2]);this._bbox[3]=Math.max(this._bbox[3],i[3])}let n=0,g=e.length;for(;n=LA&&r<=zA;if(s.variableArgs)g>n&&info(`Command ${a}: expected [0, ${n}] args, but received ${g} args.`);else{if(g!==n){const e=this.nonProcessedArgs;for(;g>n;){e.push(t.shift());g--}for(;gEvaluatorPreprocessor.MAX_INVALID_PATH_OPS)throw new FormatError(`Invalid ${e}`);warn(`Skipping ${e}`);null!==t&&(t.length=0);continue}}this.preprocessCommand(r,t);e.fn=r;e.args=t;return!0}if(i===Bt)return!1;if(null!==i){null===t&&(t=[]);t.push(i);if(t.length>33)throw new FormatError("Too many arguments")}}}preprocessCommand(e,t){switch(0|e){case MA:this.stateManager.save();break;case UA:this.stateManager.restore();break;case xA:this.stateManager.transform(t)}}}class DefaultAppearanceEvaluator extends EvaluatorPreprocessor{constructor(e){super(new StringStream(e))}parse(){const e={fn:0,args:[]},t={fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3)};try{for(;;){e.args.length=0;if(!this.read(e))break;if(0!==this.savedStatesDepth)continue;const{fn:i,args:a}=e;switch(0|i){case re:const[e,i]=a;e instanceof Name&&(t.fontName=e.name);"number"==typeof i&&i>0&&(t.fontSize=i);break;case Se:ColorSpace.singletons.rgb.getRgbItem(a,0,t.fontColor,0);break;case be:ColorSpace.singletons.gray.getRgbItem(a,0,t.fontColor,0);break;case Re:ColorSpace.singletons.cmyk.getRgbItem(a,0,t.fontColor,0)}}}catch(e){warn(`parseDefaultAppearance - ignoring errors: "${e}".`)}return t}}function parseDefaultAppearance(e){return new DefaultAppearanceEvaluator(e).parse()}class AppearanceStreamEvaluator extends EvaluatorPreprocessor{constructor(e,t,i){super(e);this.stream=e;this.evaluatorOptions=t;this.xref=i;this.resources=e.dict?.get("Resources")}parse(){const e={fn:0,args:[]};let t={scaleFactor:1,fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3),fillColorSpace:ColorSpace.singletons.gray},i=!1;const a=[];try{for(;;){e.args.length=0;if(i||!this.read(e))break;const{fn:s,args:r}=e;switch(0|s){case MA:a.push({scaleFactor:t.scaleFactor,fontSize:t.fontSize,fontName:t.fontName,fontColor:t.fontColor.slice(),fillColorSpace:t.fillColorSpace});break;case UA:t=a.pop()||t;break;case ce:t.scaleFactor*=Math.hypot(r[0],r[1]);break;case re:const[e,s]=r;e instanceof Name&&(t.fontName=e.name);"number"==typeof s&&s>0&&(t.fontSize=s*t.scaleFactor);break;case fe:t.fillColorSpace=ColorSpace.parse({cs:r[0],xref:this.xref,resources:this.resources,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:this._localColorSpaceCache});break;case ye:t.fillColorSpace.getRgbItem(r,0,t.fontColor,0);break;case Se:ColorSpace.singletons.rgb.getRgbItem(r,0,t.fontColor,0);break;case be:ColorSpace.singletons.gray.getRgbItem(r,0,t.fontColor,0);break;case Re:ColorSpace.singletons.cmyk.getRgbItem(r,0,t.fontColor,0);break;case he:case le:case Be:case Qe:i=!0}}}catch(e){warn(`parseAppearanceStream - ignoring errors: "${e}".`)}this.stream.reset();delete t.scaleFactor;delete t.fillColorSpace;return t}get _localColorSpaceCache(){return shadow(this,"_localColorSpaceCache",new LocalColorSpaceCache)}get _pdfFunctionFactory(){return shadow(this,"_pdfFunctionFactory",new PDFFunctionFactory({xref:this.xref,isEvalSupported:this.evaluatorOptions.isEvalSupported}))}}function getPdfColor(e,t){if(e[0]===e[1]&&e[1]===e[2]){return`${numberToString(e[0]/255)} ${t?"g":"G"}`}return Array.from(e,(e=>numberToString(e/255))).join(" ")+" "+(t?"rg":"RG")}class FakeUnicodeFont{constructor(e,t){this.xref=e;this.widths=null;this.firstChar=1/0;this.lastChar=-1/0;this.fontFamily=t;const i=new OffscreenCanvas(1,1);this.ctxMeasure=i.getContext("2d",{willReadFrequently:!0});FakeUnicodeFont._fontNameId||(FakeUnicodeFont._fontNameId=1);this.fontName=Name.get(`InvalidPDFjsFont_${t}_${FakeUnicodeFont._fontNameId++}`)}get fontDescriptorRef(){if(!FakeUnicodeFont._fontDescriptorRef){const e=new Dict(this.xref);e.set("Type",Name.get("FontDescriptor"));e.set("FontName",this.fontName);e.set("FontFamily","MyriadPro Regular");e.set("FontBBox",[0,0,0,0]);e.set("FontStretch",Name.get("Normal"));e.set("FontWeight",400);e.set("ItalicAngle",0);FakeUnicodeFont._fontDescriptorRef=this.xref.getNewPersistentRef(e)}return FakeUnicodeFont._fontDescriptorRef}get descendantFontRef(){const e=new Dict(this.xref);e.set("BaseFont",this.fontName);e.set("Type",Name.get("Font"));e.set("Subtype",Name.get("CIDFontType0"));e.set("CIDToGIDMap",Name.get("Identity"));e.set("FirstChar",this.firstChar);e.set("LastChar",this.lastChar);e.set("FontDescriptor",this.fontDescriptorRef);e.set("DW",1e3);const t=[],i=[...this.widths.entries()].sort();let a=null,s=null;for(const[e,r]of i)if(a)if(e===a+s.length)s.push(r);else{t.push(a,s);a=e;s=[r]}else{a=e;s=[r]}a&&t.push(a,s);e.set("W",t);const r=new Dict(this.xref);r.set("Ordering","Identity");r.set("Registry","Adobe");r.set("Supplement",0);e.set("CIDSystemInfo",r);return this.xref.getNewPersistentRef(e)}get baseFontRef(){const e=new Dict(this.xref);e.set("BaseFont",this.fontName);e.set("Type",Name.get("Font"));e.set("Subtype",Name.get("Type0"));e.set("Encoding",Name.get("Identity-H"));e.set("DescendantFonts",[this.descendantFontRef]);e.set("ToUnicode",Name.get("Identity-H"));return this.xref.getNewPersistentRef(e)}get resources(){const e=new Dict(this.xref),t=new Dict(this.xref);t.set(this.fontName.name,this.baseFontRef);e.set("Font",t);return e}_createContext(){this.widths=new Map;this.ctxMeasure.font=`1000px ${this.fontFamily}`;return this.ctxMeasure}createFontResources(e){const t=this._createContext();for(const i of e.split(/\r\n?|\n/))for(const e of i.split("")){const i=e.charCodeAt(0);if(this.widths.has(i))continue;const a=t.measureText(e),s=Math.ceil(a.width);this.widths.set(i,s);this.firstChar=Math.min(i,this.firstChar);this.lastChar=Math.max(i,this.lastChar)}return this.resources}static getFirstPositionInfo(e,t,i){const[a,n,g,o]=e;let c=g-a,C=o-n;t%180!=0&&([c,C]=[C,c]);const h=s*i;return{coords:[0,C+r*i-h],bbox:[0,0,c,C],matrix:0!==t?getRotationMatrix(t,C,h):void 0}}createAppearance(e,t,i,a,n,g){const o=this._createContext(),c=[];let C=-1/0;for(const t of e.split(/\r\n?|\n/)){c.push(t);const e=o.measureText(t).width;C=Math.max(C,e);for(const e of codePointIter(t)){const t=String.fromCodePoint(e);let i=this.widths.get(e);if(void 0===i){const a=o.measureText(t);i=Math.ceil(a.width);this.widths.set(e,i);this.firstChar=Math.min(e,this.firstChar);this.lastChar=Math.max(e,this.lastChar)}}}C*=a/1e3;const[h,l,Q,E]=t;let u=Q-h,d=E-l;i%180!=0&&([u,d]=[d,u]);let f=1;C>u&&(f=u/C);let p=1;const m=s*a,y=r*a,w=m*c.length;w>d&&(p=d/w);const D=a*Math.min(f,p),b=["q",`0 0 ${numberToString(u)} ${numberToString(d)} re W n`,"BT",`1 0 0 1 0 ${numberToString(d+y)} Tm 0 Tc ${getPdfColor(n,!0)}`,`/${this.fontName.name} ${numberToString(D)} Tf`],{resources:F}=this;if(1!==(g="number"==typeof g&&g>=0&&g<=1?g:1)){b.push("/R0 gs");const e=new Dict(this.xref),t=new Dict(this.xref);t.set("ca",g);t.set("CA",g);t.set("Type",Name.get("ExtGState"));e.set("R0",t);F.set("ExtGState",e)}const S=numberToString(m);for(const e of c)b.push(`0 -${S} Td <${stringToUTF16HexString(e)}> Tj`);b.push("ET","Q");const k=b.join("\n"),R=new Dict(this.xref);R.set("Subtype",Name.get("Form"));R.set("Type",Name.get("XObject"));R.set("BBox",[0,0,u,d]);R.set("Length",k.length);R.set("Resources",F);if(i){const e=getRotationMatrix(i,u,d);R.set("Matrix",e)}const N=new StringStream(k);N.dict=R;return N}}class NameOrNumberTree{constructor(e,t,i){this.root=e;this.xref=t;this._type=i}getAll(){const e=new Map;if(!this.root)return e;const t=this.xref,i=new RefSet;i.put(this.root);const a=[this.root];for(;a.length>0;){const s=t.fetchIfRef(a.shift());if(!(s instanceof Dict))continue;if(s.has("Kids")){const e=s.get("Kids");if(!Array.isArray(e))continue;for(const t of e){if(i.has(t))throw new FormatError(`Duplicate entry in "${this._type}" tree.`);a.push(t);i.put(t)}continue}const r=s.get(this._type);if(Array.isArray(r))for(let i=0,a=r.length;i10){warn(`Search depth limit reached for "${this._type}" tree.`);return null}const s=i.get("Kids");if(!Array.isArray(s))return null;let r=0,n=s.length-1;for(;r<=n;){const a=r+n>>1,g=t.fetchIfRef(s[a]),o=g.get("Limits");if(et.fetchIfRef(o[1]))){i=g;break}r=a+1}}if(r>n)return null}const s=i.get(this._type);if(Array.isArray(s)){let i=0,a=s.length-2;for(;i<=a;){const r=i+a>>1,n=r+(1&r),g=t.fetchIfRef(s[n]);if(eg))return s[n+1];i=n+2}}}return null}get(e){return this.xref.fetchIfRef(this.getRaw(e))}}class NameTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Names")}}class NumberTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Nums")}}function clearGlobalCaches(){!function clearPatternCaches(){Qa=Object.create(null)}();!function clearPrimitiveCaches(){Qt=Object.create(null);Et=Object.create(null);ut=Object.create(null)}();!function clearUnicodeCaches(){ki.clear()}();JpxImage.cleanup()}function pickPlatformItem(e){return e instanceof Dict?e.has("UF")?e.get("UF"):e.has("F")?e.get("F"):e.has("Unix")?e.get("Unix"):e.has("Mac")?e.get("Mac"):e.has("DOS")?e.get("DOS"):null:null}class FileSpec{#U=!1;constructor(e,t,i=!1){if(e instanceof Dict){this.xref=t;this.root=e;e.has("FS")&&(this.fs=e.get("FS"));e.has("RF")&&warn("Related file specifications are not supported");i||(e.has("EF")?this.#U=!0:warn("Non-embedded file specifications are not supported"))}}get filename(){let e="";const t=pickPlatformItem(this.root);t&&"string"==typeof t&&(e=stringToPDFString(t).replaceAll("\\\\","\\").replaceAll("\\/","/").replaceAll("\\","/"));return shadow(this,"filename",e||"unnamed")}get content(){if(!this.#U)return null;this._contentRef||=pickPlatformItem(this.root?.get("EF"));let e=null;if(this._contentRef){const t=this.xref.fetchIfRef(this._contentRef);t instanceof BaseStream?e=t.getBytes():warn("Embedded file specification points to non-existing/invalid content")}else warn("Embedded file specification does not have any content");return e}get description(){let e="";const t=this.root?.get("Desc");t&&"string"==typeof t&&(e=stringToPDFString(t));return shadow(this,"description",e)}get serializable(){return{rawFilename:this.filename,filename:(e=this.filename,e.substring(e.lastIndexOf("/")+1)),content:this.content,description:this.description};var e}}const ys=0,ws=-2,Ds=-3,bs=-4,Fs=-5,Ss=-6,ks=-9;function isWhitespace(e,t){const i=e[t];return" "===i||"\n"===i||"\r"===i||"\t"===i}class XMLParserBase{_resolveEntities(e){return e.replaceAll(/&([^;]+);/g,((e,t)=>{if("#x"===t.substring(0,2))return String.fromCodePoint(parseInt(t.substring(2),16));if("#"===t.substring(0,1))return String.fromCodePoint(parseInt(t.substring(1),10));switch(t){case"lt":return"<";case"gt":return">";case"amp":return"&";case"quot":return'"';case"apos":return"'"}return this.onResolveEntity(t)}))}_parseContent(e,t){const i=[];let a=t;function skipWs(){for(;a"!==e[a]&&"/"!==e[a];)++a;const s=e.substring(t,a);skipWs();for(;a"!==e[a]&&"/"!==e[a]&&"?"!==e[a];){skipWs();let t="",s="";for(;a"!==e[i]&&"?"!==e[i]&&"/"!==e[i];)++i;const a=e.substring(t,i);!function skipWs(){for(;i"!==e[i+1]);)++i;return{name:a,value:e.substring(s,i),parsed:i-t}}parseXml(e){let t=0;for(;t",i);if(t<0){this.onError(ks);return}this.onEndElement(e.substring(i,t));i=t+1;break;case"?":++i;const a=this._parseProcessingInstruction(e,i);if("?>"!==e.substring(i+a.parsed,i+a.parsed+2)){this.onError(Ds);return}this.onPi(a.name,a.value);i+=a.parsed+2;break;case"!":if("--"===e.substring(i+1,i+3)){t=e.indexOf("--\x3e",i+3);if(t<0){this.onError(Fs);return}this.onComment(e.substring(i+3,t));i=t+3}else if("[CDATA["===e.substring(i+1,i+8)){t=e.indexOf("]]>",i+8);if(t<0){this.onError(ws);return}this.onCdata(e.substring(i+8,t));i=t+3}else{if("DOCTYPE"!==e.substring(i+1,i+8)){this.onError(Ss);return}{const a=e.indexOf("[",i+8);let s=!1;t=e.indexOf(">",i+8);if(t<0){this.onError(bs);return}if(a>0&&t>a){t=e.indexOf("]>",i+8);if(t<0){this.onError(bs);return}s=!0}const r=e.substring(i+8,t+(s?1:0));this.onDoctype(r);i=t+(s?2:1)}}break;default:const s=this._parseContent(e,i);if(null===s){this.onError(Ss);return}let r=!1;if("/>"===e.substring(i+s.parsed,i+s.parsed+2))r=!0;else if(">"!==e.substring(i+s.parsed,i+s.parsed+1)){this.onError(ks);return}this.onBeginElement(s.name,s.attributes,r);i+=s.parsed+(r?2:1)}}else{for(;i0}searchNode(e,t){if(t>=e.length)return this;const i=e[t];if(i.name.startsWith("#")&&t0){a.push([s,0]);s=s.childNodes[0]}else{if(0===a.length)return null;for(;0!==a.length;){const[e,t]=a.pop(),i=t+1;if(i");for(const t of this.childNodes)t.dump(e);e.push(``)}else this.nodeValue?e.push(`>${encodeToXmlString(this.nodeValue)}`):e.push("/>")}else e.push(encodeToXmlString(this.nodeValue))}}class SimpleXMLParser extends XMLParserBase{constructor({hasAttributes:e=!1,lowerCaseName:t=!1}){super();this._currentFragment=null;this._stack=null;this._errorCode=ys;this._hasAttributes=e;this._lowerCaseName=t}parseFromString(e){this._currentFragment=[];this._stack=[];this._errorCode=ys;this.parseXml(e);if(this._errorCode!==ys)return;const[t]=this._currentFragment;return t?{documentElement:t}:void 0}onText(e){if(function isWhitespaceString(e){for(let t=0,i=e.length;t\\376\\377([^<]+)/g,(function(e,t){const i=t.replaceAll(/\\([0-3])([0-7])([0-7])/g,(function(e,t,i,a){return String.fromCharCode(64*t+8*i+1*a)})).replaceAll(/&(amp|apos|gt|lt|quot);/g,(function(e,t){switch(t){case"amp":return"&";case"apos":return"'";case"gt":return">";case"lt":return"<";case"quot":return'"'}throw new Error(`_repair: ${t} isn't defined.`)})),a=[">"];for(let e=0,t=i.length;e=32&&t<127&&60!==t&&62!==t&&38!==t?a.push(String.fromCharCode(t)):a.push("&#x"+(65536+t).toString(16).substring(1)+";")}return a.join("")}))}_getSequence(e){const t=e.nodeName;return"rdf:bag"!==t&&"rdf:seq"!==t&&"rdf:alt"!==t?null:e.childNodes.filter((e=>"rdf:li"===e.nodeName))}_parseArray(e){if(!e.hasChildNodes())return;const[t]=e.childNodes,i=this._getSequence(t)||[];this._metadataMap.set(e.nodeName,i.map((e=>e.textContent.trim())))}_parse(e){let t=e.documentElement;if("rdf:rdf"!==t.nodeName){t=t.firstChild;for(;t&&"rdf:rdf"!==t.nodeName;)t=t.nextSibling}if(t&&"rdf:rdf"===t.nodeName&&t.hasChildNodes())for(const e of t.childNodes)if("rdf:description"===e.nodeName)for(const t of e.childNodes){const e=t.nodeName;switch(e){case"#text":continue;case"dc:creator":case"dc:subject":this._parseArray(t);continue}this._metadataMap.set(e,t.textContent.trim())}}get serializable(){return{parsedData:this._metadataMap,rawData:this._data}}}const Rs=1,Ns=2,Gs=3,Ms=4,Us=5;class StructTreeRoot{constructor(e,t){this.dict=e;this.ref=t instanceof Ref?t:null;this.roleMap=new Map;this.structParentIds=null}init(){this.readRoleMap()}#x(e,t,i){if(!(e instanceof Ref)||t<0)return;this.structParentIds||=new RefSetCache;let a=this.structParentIds.get(e);if(!a){a=[];this.structParentIds.put(e,a)}a.push([t,i])}addAnnotationIdToPage(e,t){this.#x(e,t,Ms)}readRoleMap(){const e=this.dict.get("RoleMap");if(e instanceof Dict)for(const[t,i]of e)i instanceof Name&&this.roleMap.set(t,i.name)}static async canCreateStructureTree({catalogRef:e,pdfManager:t,newAnnotationsByPage:i}){if(!(e instanceof Ref)){warn("Cannot save the struct tree: no catalog reference.");return!1}let a=0,s=!0;for(const[e,r]of i){const{ref:i}=await t.getPage(e);if(!(i instanceof Ref)){warn(`Cannot save the struct tree: page ${e} has no ref.`);s=!0;break}for(const e of r)if(e.accessibilityData?.type){e.parentTreeId=a++;s=!1}}if(s){for(const e of i.values())for(const t of e)delete t.parentTreeId;return!1}return!0}static async createStructureTree({newAnnotationsByPage:e,xref:t,catalogRef:i,pdfManager:a,changes:s}){const r=a.catalog.cloneDict(),n=new RefSetCache;n.put(i,r);const g=t.getNewTemporaryRef();r.set("StructTreeRoot",g);const o=new Dict(t);o.set("Type",Name.get("StructTreeRoot"));const c=t.getNewTemporaryRef();o.set("ParentTree",c);const C=[];o.set("K",C);n.put(g,o);const h=new Dict(t),l=[];h.set("Nums",l);const Q=await this.#L({newAnnotationsByPage:e,structTreeRootRef:g,structTreeRoot:null,kids:C,nums:l,xref:t,pdfManager:a,changes:s,cache:n});o.set("ParentTreeNextKey",Q);n.put(c,h);for(const[e,t]of n.items())s.put(e,{data:t})}async canUpdateStructTree({pdfManager:e,xref:t,newAnnotationsByPage:i}){if(!this.ref){warn("Cannot update the struct tree: no root reference.");return!1}let a=this.dict.get("ParentTreeNextKey");if(!Number.isInteger(a)||a<0){warn("Cannot update the struct tree: invalid next key.");return!1}const s=this.dict.get("ParentTree");if(!(s instanceof Dict)){warn("Cannot update the struct tree: ParentTree isn't a dict.");return!1}const r=s.get("Nums");if(!Array.isArray(r)){warn("Cannot update the struct tree: nums isn't an array.");return!1}const n=new NumberTree(s,t);for(const t of i.keys()){const{pageDict:i}=await e.getPage(t);if(!i.has("StructParents"))continue;const a=i.get("StructParents");if(!Number.isInteger(a)||!Array.isArray(n.get(a))){warn(`Cannot save the struct tree: page ${t} has a wrong id.`);return!1}}let g=!0;for(const[t,s]of i){const{pageDict:i}=await e.getPage(t);StructTreeRoot.#H({elements:s,xref:this.dict.xref,pageDict:i,numberTree:n});for(const e of s)if(e.accessibilityData?.type){e.accessibilityData.structParent>=0||(e.parentTreeId=a++);g=!1}}if(g){for(const e of i.values())for(const t of e){delete t.parentTreeId;delete t.structTreeParent}return!1}return!0}async updateStructureTree({newAnnotationsByPage:e,pdfManager:t,changes:i}){const a=this.dict.xref,s=this.dict.clone(),r=this.ref,n=new RefSetCache;n.put(r,s);let g,o=s.getRaw("ParentTree");if(o instanceof Ref)g=a.fetch(o);else{g=o;o=a.getNewTemporaryRef();s.set("ParentTree",o)}g=g.clone();n.put(o,g);let c=g.getRaw("Nums"),C=null;if(c instanceof Ref){C=c;c=a.fetch(C)}c=c.slice();C||g.set("Nums",c);const h=await StructTreeRoot.#L({newAnnotationsByPage:e,structTreeRootRef:r,structTreeRoot:this,kids:null,nums:c,xref:a,pdfManager:t,changes:i,cache:n});if(-1!==h){s.set("ParentTreeNextKey",h);C&&n.put(C,c);for(const[e,t]of n.items())i.put(e,{data:t})}}static async#L({newAnnotationsByPage:e,structTreeRootRef:t,structTreeRoot:i,kids:a,nums:s,xref:r,pdfManager:n,changes:g,cache:o}){const c=Name.get("OBJR");let C,h=-1;for(const[l,Q]of e){const e=await n.getPage(l),{ref:E}=e,u=E instanceof Ref;for(const{accessibilityData:n,ref:d,parentTreeId:f,structTreeParent:p}of Q){if(!n?.type)continue;const{structParent:Q}=n;if(i&&Number.isInteger(Q)&&Q>=0){let t=(C||=new Map).get(l);if(void 0===t){t=new StructTreePage(i,e.pageDict).collectObjects(E);C.set(l,t)}const a=t?.get(Q);if(a){const e=r.fetch(a).clone();StructTreeRoot.#J(e,n);g.put(a,{data:e});continue}}h=Math.max(h,f);const m=r.getNewTemporaryRef(),y=new Dict(r);StructTreeRoot.#J(y,n);await this.#Y({structTreeParent:p,tagDict:y,newTagRef:m,structTreeRootRef:t,fallbackKids:a,xref:r,cache:o});const w=new Dict(r);y.set("K",w);w.set("Type",c);u&&w.set("Pg",E);w.set("Obj",d);o.put(m,y);s.push(f,m)}}return h+1}static#J(e,{type:t,title:i,lang:a,alt:s,expanded:r,actualText:n}){e.set("S",Name.get(t));i&&e.set("T",stringToAsciiOrUTF16BE(i));a&&e.set("Lang",stringToAsciiOrUTF16BE(a));s&&e.set("Alt",stringToAsciiOrUTF16BE(s));r&&e.set("E",stringToAsciiOrUTF16BE(r));n&&e.set("ActualText",stringToAsciiOrUTF16BE(n))}static#H({elements:e,xref:t,pageDict:i,numberTree:a}){const s=new Map;for(const t of e)if(t.structTreeParentId){const e=parseInt(t.structTreeParentId.split("_mc")[1],10);let i=s.get(e);if(!i){i=[];s.set(e,i)}i.push(t)}const r=i.get("StructParents");if(!Number.isInteger(r))return;const n=a.get(r),updateElement=(e,i,a)=>{const r=s.get(e);if(r){const e=i.getRaw("P"),s=t.fetchIfRef(e);if(e instanceof Ref&&s instanceof Dict){const e={ref:a,dict:i};for(const t of r)t.structTreeParent=e}return!0}return!1};for(const e of n){if(!(e instanceof Ref))continue;const i=t.fetch(e),a=i.get("K");if(Number.isInteger(a))updateElement(a,i,e);else if(Array.isArray(a))for(let s of a){s=t.fetchIfRef(s);if(Number.isInteger(s)&&updateElement(s,i,e))break;if(!(s instanceof Dict))continue;if(!isName(s.get("Type"),"MCR"))break;const a=s.get("MCID");if(Number.isInteger(a)&&updateElement(a,i,e))break}}}static async#Y({structTreeParent:e,tagDict:t,newTagRef:i,structTreeRootRef:a,fallbackKids:s,xref:r,cache:n}){let g,o=null;if(e){({ref:o}=e);g=e.dict.getRaw("P")||a}else g=a;t.set("P",g);const c=r.fetchIfRef(g);if(!c){s.push(i);return}let C=n.get(g);if(!C){C=c.clone();n.put(g,C)}const h=C.getRaw("K");let l=h instanceof Ref?n.get(h):null;if(!l){l=r.fetchIfRef(h);l=Array.isArray(l)?l.slice():[h];const e=r.getNewTemporaryRef();C.set("K",e);n.put(e,l)}const Q=l.indexOf(o);l.splice(Q>=0?Q+1:l.length,0,i)}}class StructElementNode{constructor(e,t){this.tree=e;this.dict=t;this.kids=[];this.parseKids()}get role(){const e=this.dict.get("S"),t=e instanceof Name?e.name:"",{root:i}=this.tree;return i.roleMap.has(t)?i.roleMap.get(t):t}parseKids(){let e=null;const t=this.dict.getRaw("Pg");t instanceof Ref&&(e=t.toString());const i=this.dict.get("K");if(Array.isArray(i))for(const t of i){const i=this.parseKid(e,t);i&&this.kids.push(i)}else{const t=this.parseKid(e,i);t&&this.kids.push(t)}}parseKid(e,t){if(Number.isInteger(t))return this.tree.pageDict.objId!==e?null:new StructElement({type:Rs,mcid:t,pageObjId:e});let i=null;t instanceof Ref?i=this.dict.xref.fetch(t):t instanceof Dict&&(i=t);if(!i)return null;const a=i.getRaw("Pg");a instanceof Ref&&(e=a.toString());const s=i.get("Type")instanceof Name?i.get("Type").name:null;if("MCR"===s){if(this.tree.pageDict.objId!==e)return null;const t=i.getRaw("Stm");return new StructElement({type:Ns,refObjId:t instanceof Ref?t.toString():null,pageObjId:e,mcid:i.get("MCID")})}if("OBJR"===s){if(this.tree.pageDict.objId!==e)return null;const t=i.getRaw("Obj");return new StructElement({type:Gs,refObjId:t instanceof Ref?t.toString():null,pageObjId:e})}return new StructElement({type:Us,dict:i})}}class StructElement{constructor({type:e,dict:t=null,mcid:i=null,pageObjId:a=null,refObjId:s=null}){this.type=e;this.dict=t;this.mcid=i;this.pageObjId=a;this.refObjId=s;this.parentNode=null}}class StructTreePage{constructor(e,t){this.root=e;this.rootDict=e?e.dict:null;this.pageDict=t;this.nodes=[]}collectObjects(e){if(!(this.root&&this.rootDict&&e instanceof Ref))return null;const t=this.rootDict.get("ParentTree");if(!t)return null;const i=this.root.structParentIds?.get(e);if(!i)return null;const a=new Map,s=new NumberTree(t,this.rootDict.xref);for(const[e]of i){const t=s.getRaw(e);t instanceof Ref&&a.set(e,t)}return a}parse(e){if(!(this.root&&this.rootDict&&e instanceof Ref))return;const t=this.rootDict.get("ParentTree");if(!t)return;const i=this.pageDict.get("StructParents"),a=this.root.structParentIds?.get(e);if(!Number.isInteger(i)&&!a)return;const s=new Map,r=new NumberTree(t,this.rootDict.xref);if(Number.isInteger(i)){const e=r.get(i);if(Array.isArray(e))for(const t of e)t instanceof Ref&&this.addNode(this.rootDict.xref.fetch(t),s)}if(a)for(const[e,t]of a){const i=r.get(e);if(i){const e=this.addNode(this.rootDict.xref.fetchIfRef(i),s);1===e?.kids?.length&&e.kids[0].type===Gs&&(e.kids[0].type=t)}}}addNode(e,t,i=0){if(i>40){warn("StructTree MAX_DEPTH reached.");return null}if(!(e instanceof Dict))return null;if(t.has(e))return t.get(e);const a=new StructElementNode(this,e);t.set(e,a);const s=e.get("P");if(!s||isName(s.get("Type"),"StructTreeRoot")){this.addTopLevelNode(e,a)||t.delete(e);return a}const r=this.addNode(s,t,i+1);if(!r)return a;let n=!1;for(const t of r.kids)if(t.type===Us&&t.dict===e){t.parentNode=a;n=!0}n||t.delete(e);return a}addTopLevelNode(e,t){const i=this.rootDict.get("K");if(!i)return!1;if(i instanceof Dict){if(i.objId!==e.objId)return!1;this.nodes[0]=t;return!0}if(!Array.isArray(i))return!0;let a=!1;for(let s=0;s40){warn("StructTree too deep to be fully serialized.");return}const a=Object.create(null);a.role=e.role;a.children=[];t.children.push(a);let s=e.dict.get("Alt");"string"!=typeof s&&(s=e.dict.get("ActualText"));"string"==typeof s&&(a.alt=stringToPDFString(s));const r=e.dict.get("A");if(r instanceof Dict){const e=lookupNormalRect(r.getArray("BBox"),null);if(e)a.bbox=e;else{const e=r.get("Width"),t=r.get("Height");"number"==typeof e&&e>0&&"number"==typeof t&&t>0&&(a.bbox=[0,0,e,t])}}const n=e.dict.get("Lang");"string"==typeof n&&(a.lang=stringToPDFString(n));for(const t of e.kids){const e=t.type===Us?t.parentNode:null;e?nodeToSerializable(e,a,i+1):t.type===Rs||t.type===Ns?a.children.push({type:"content",id:`p${t.pageObjId}_mc${t.mcid}`}):t.type===Gs?a.children.push({type:"object",id:t.refObjId}):t.type===Ms&&a.children.push({type:"annotation",id:`pdfjs_internal_id_${t.refObjId}`})}}const e=Object.create(null);e.children=[];e.role="Root";for(const t of this.nodes)t&&nodeToSerializable(t,e);return e}}function isValidExplicitDest(e){if(!Array.isArray(e)||e.length<2)return!1;const[t,i,...a]=e;if(!(t instanceof Ref||Number.isInteger(t)))return!1;if(!(i instanceof Name))return!1;const s=a.length;let r=!0;switch(i.name){case"XYZ":if(s<2||s>3)return!1;break;case"Fit":case"FitB":return 0===s;case"FitH":case"FitBH":case"FitV":case"FitBV":if(s>1)return!1;break;case"FitR":if(4!==s)return!1;r=!1;break;default:return!1}for(const e of a)if(!("number"==typeof e||r&&null===e))return!1;return!0}function fetchDest(e){e instanceof Dict&&(e=e.get("D"));return isValidExplicitDest(e)?e:null}function fetchRemoteDest(e){let t=e.get("D");if(t){t instanceof Name&&(t=t.name);if("string"==typeof t)return stringToPDFString(t);if(isValidExplicitDest(t))return JSON.stringify(t)}return null}class Catalog{constructor(e,t){this.pdfManager=e;this.xref=t;this._catDict=t.getCatalogObj();if(!(this._catDict instanceof Dict))throw new FormatError("Catalog object is not a dictionary.");this.toplevelPagesDict;this._actualNumPages=null;this.fontCache=new RefSetCache;this.builtInCMapCache=new Map;this.standardFontDataCache=new Map;this.globalImageCache=new GlobalImageCache;this.pageKidsCountCache=new RefSetCache;this.pageIndexCache=new RefSetCache;this.pageDictCache=new RefSetCache;this.nonBlendModesSet=new RefSet;this.systemFontCache=new Map}cloneDict(){return this._catDict.clone()}get version(){const e=this._catDict.get("Version");if(e instanceof Name){if(ft.test(e.name))return shadow(this,"version",e.name);warn(`Invalid PDF catalog version: ${e.name}`)}return shadow(this,"version",null)}get lang(){const e=this._catDict.get("Lang");return shadow(this,"lang",e&&"string"==typeof e?stringToPDFString(e):null)}get needsRendering(){const e=this._catDict.get("NeedsRendering");return shadow(this,"needsRendering","boolean"==typeof e&&e)}get collection(){let e=null;try{const t=this._catDict.get("Collection");t instanceof Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof MissingDataException)throw e;info("Cannot fetch Collection entry; assuming no collection is present.")}return shadow(this,"collection",e)}get acroForm(){let e=null;try{const t=this._catDict.get("AcroForm");t instanceof Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof MissingDataException)throw e;info("Cannot fetch AcroForm entry; assuming no forms are present.")}return shadow(this,"acroForm",e)}get acroFormRef(){const e=this._catDict.getRaw("AcroForm");return shadow(this,"acroFormRef",e instanceof Ref?e:null)}get metadata(){const e=this._catDict.getRaw("Metadata");if(!(e instanceof Ref))return shadow(this,"metadata",null);let t=null;try{const i=this.xref.fetch(e,!this.xref.encrypt?.encryptMetadata);if(i instanceof BaseStream&&i.dict instanceof Dict){const e=i.dict.get("Type"),a=i.dict.get("Subtype");if(isName(e,"Metadata")&&isName(a,"XML")){const e=stringToUTF8String(i.getString());e&&(t=new MetadataParser(e).serializable)}}}catch(e){if(e instanceof MissingDataException)throw e;info(`Skipping invalid Metadata: "${e}".`)}return shadow(this,"metadata",t)}get markInfo(){let e=null;try{e=this._readMarkInfo()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read mark info.")}return shadow(this,"markInfo",e)}_readMarkInfo(){const e=this._catDict.get("MarkInfo");if(!(e instanceof Dict))return null;const t={Marked:!1,UserProperties:!1,Suspects:!1};for(const i in t){const a=e.get(i);"boolean"==typeof a&&(t[i]=a)}return t}get structTreeRoot(){let e=null;try{e=this._readStructTreeRoot()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable read to structTreeRoot info.")}return shadow(this,"structTreeRoot",e)}_readStructTreeRoot(){const e=this._catDict.getRaw("StructTreeRoot"),t=this.xref.fetchIfRef(e);if(!(t instanceof Dict))return null;const i=new StructTreeRoot(t,e);i.init();return i}get toplevelPagesDict(){const e=this._catDict.get("Pages");if(!(e instanceof Dict))throw new FormatError("Invalid top-level pages dictionary.");return shadow(this,"toplevelPagesDict",e)}get documentOutline(){let e=null;try{e=this._readDocumentOutline()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read document outline.")}return shadow(this,"documentOutline",e)}_readDocumentOutline(){let e=this._catDict.get("Outlines");if(!(e instanceof Dict))return null;e=e.getRaw("First");if(!(e instanceof Ref))return null;const t={items:[]},i=[{obj:e,parent:t}],a=new RefSet;a.put(e);const s=this.xref,r=new Uint8ClampedArray(3);for(;i.length>0;){const t=i.shift(),n=s.fetchIfRef(t.obj);if(null===n)continue;n.has("Title")||warn("Invalid outline item encountered.");const g={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:n,resultObj:g,docBaseUrl:this.baseUrl,docAttachments:this.attachments});const o=n.get("Title"),c=n.get("F")||0,C=n.getArray("C"),h=n.get("Count");let l=r;!isNumberArray(C,3)||0===C[0]&&0===C[1]&&0===C[2]||(l=ColorSpace.singletons.rgb.getRgb(C,0));const Q={action:g.action,attachment:g.attachment,dest:g.dest,url:g.url,unsafeUrl:g.unsafeUrl,newWindow:g.newWindow,setOCGState:g.setOCGState,title:"string"==typeof o?stringToPDFString(o):"",color:l,count:Number.isInteger(h)?h:void 0,bold:!!(2&c),italic:!!(1&c),items:[]};t.parent.items.push(Q);e=n.getRaw("First");if(e instanceof Ref&&!a.has(e)){i.push({obj:e,parent:Q});a.put(e)}e=n.getRaw("Next");if(e instanceof Ref&&!a.has(e)){i.push({obj:e,parent:t.parent});a.put(e)}}return t.items.length>0?t.items:null}get permissions(){let e=null;try{e=this._readPermissions()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read permissions.")}return shadow(this,"permissions",e)}_readPermissions(){const e=this.xref.trailer.get("Encrypt");if(!(e instanceof Dict))return null;let t=e.get("P");if("number"!=typeof t)return null;t+=2**32;const i=[];for(const e in y){const a=y[e];t&a&&i.push(a)}return i}get optionalContentConfig(){let e=null;try{const t=this._catDict.get("OCProperties");if(!t)return shadow(this,"optionalContentConfig",null);const i=t.get("D");if(!i)return shadow(this,"optionalContentConfig",null);const a=t.get("OCGs");if(!Array.isArray(a))return shadow(this,"optionalContentConfig",null);const s=new RefSetCache;for(const e of a)e instanceof Ref&&!s.has(e)&&s.put(e,this.#v(e));e=this.#K(i,s)}catch(e){if(e instanceof MissingDataException)throw e;warn(`Unable to read optional content config: ${e}`)}return shadow(this,"optionalContentConfig",e)}#v(e){const t=this.xref.fetch(e),i={id:e.toString(),name:null,intent:null,usage:{print:null,view:null},rbGroups:[]},a=t.get("Name");"string"==typeof a&&(i.name=stringToPDFString(a));let s=t.getArray("Intent");Array.isArray(s)||(s=[s]);s.every((e=>e instanceof Name))&&(i.intent=s.map((e=>e.name)));const r=t.get("Usage");if(!(r instanceof Dict))return i;const n=i.usage,g=r.get("Print");if(g instanceof Dict){const e=g.get("PrintState");if(e instanceof Name)switch(e.name){case"ON":case"OFF":n.print={printState:e.name}}}const o=r.get("View");if(o instanceof Dict){const e=o.get("ViewState");if(e instanceof Name)switch(e.name){case"ON":case"OFF":n.view={viewState:e.name}}}return i}#K(e,t){function parseOnOff(e){const i=[];if(Array.isArray(e))for(const a of e)a instanceof Ref&&t.has(a)&&i.push(a.toString());return i}function parseOrder(e,i=0){if(!Array.isArray(e))return null;const s=[];for(const r of e){if(r instanceof Ref&&t.has(r)){a.put(r);s.push(r.toString());continue}const e=parseNestedOrder(r,i);e&&s.push(e)}if(i>0)return s;const r=[];for(const[e]of t.items())a.has(e)||r.push(e.toString());r.length&&s.push({name:null,order:r});return s}function parseNestedOrder(e,t){if(++t>s){warn("parseNestedOrder - reached MAX_NESTED_LEVELS.");return null}const a=i.fetchIfRef(e);if(!Array.isArray(a))return null;const r=i.fetchIfRef(a[0]);if("string"!=typeof r)return null;const n=parseOrder(a.slice(1),t);return n?.length?{name:stringToPDFString(r),order:n}:null}const i=this.xref,a=new RefSet,s=10;!function parseRBGroups(e){if(Array.isArray(e))for(const a of e){const e=i.fetchIfRef(a);if(!Array.isArray(e)||!e.length)continue;const s=new Set;for(const i of e)if(i instanceof Ref&&t.has(i)&&!s.has(i.toString())){s.add(i.toString());t.get(i).rbGroups.push(s)}}}(e.get("RBGroups"));return{name:"string"==typeof e.get("Name")?stringToPDFString(e.get("Name")):null,creator:"string"==typeof e.get("Creator")?stringToPDFString(e.get("Creator")):null,baseState:e.get("BaseState")instanceof Name?e.get("BaseState").name:null,on:parseOnOff(e.get("ON")),off:parseOnOff(e.get("OFF")),order:parseOrder(e.get("Order")),groups:[...t]}}setActualNumPages(e=null){this._actualNumPages=e}get hasActualNumPages(){return null!==this._actualNumPages}get _pagesCount(){const e=this.toplevelPagesDict.get("Count");if(!Number.isInteger(e))throw new FormatError("Page count in top-level pages dictionary is not an integer.");return shadow(this,"_pagesCount",e)}get numPages(){return this.hasActualNumPages?this._actualNumPages:this._pagesCount}get destinations(){const e=this._readDests(),t=Object.create(null);if(e instanceof NameTree)for(const[i,a]of e.getAll()){const e=fetchDest(a);e&&(t[stringToPDFString(i)]=e)}else if(e instanceof Dict)for(const[i,a]of e){const e=fetchDest(a);e&&(t[i]=e)}return shadow(this,"destinations",t)}getDestination(e){const t=this._readDests();if(t instanceof NameTree){const i=fetchDest(t.get(e));if(i)return i;const a=this.destinations[e];if(a){warn(`Found "${e}" at an incorrect position in the NameTree.`);return a}}else if(t instanceof Dict){const i=fetchDest(t.get(e));if(i)return i}return null}_readDests(){const e=this._catDict.get("Names");return e?.has("Dests")?new NameTree(e.getRaw("Dests"),this.xref):this._catDict.has("Dests")?this._catDict.get("Dests"):void 0}get pageLabels(){let e=null;try{e=this._readPageLabels()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read page labels.")}return shadow(this,"pageLabels",e)}_readPageLabels(){const e=this._catDict.getRaw("PageLabels");if(!e)return null;const t=new Array(this.numPages);let i=null,a="";const s=new NumberTree(e,this.xref).getAll();let r="",n=1;for(let e=0,g=this.numPages;e=1))throw new FormatError("Invalid start in PageLabel dictionary.");n=e}else n=1}switch(i){case"D":r=n;break;case"R":case"r":r=toRomanNumerals(n,"r"===i);break;case"A":case"a":const e=26,t="a"===i?97:65,a=n-1;r=String.fromCharCode(t+a%e).repeat(Math.floor(a/e)+1);break;default:if(i)throw new FormatError(`Invalid style "${i}" in PageLabel dictionary.`);r=""}t[e]=a+r;n++}return t}get pageLayout(){const e=this._catDict.get("PageLayout");let t="";if(e instanceof Name)switch(e.name){case"SinglePage":case"OneColumn":case"TwoColumnLeft":case"TwoColumnRight":case"TwoPageLeft":case"TwoPageRight":t=e.name}return shadow(this,"pageLayout",t)}get pageMode(){const e=this._catDict.get("PageMode");let t="UseNone";if(e instanceof Name)switch(e.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"FullScreen":case"UseOC":case"UseAttachments":t=e.name}return shadow(this,"pageMode",t)}get viewerPreferences(){const e=this._catDict.get("ViewerPreferences");if(!(e instanceof Dict))return shadow(this,"viewerPreferences",null);let t=null;for(const i of e.getKeys()){const a=e.get(i);let s;switch(i){case"HideToolbar":case"HideMenubar":case"HideWindowUI":case"FitWindow":case"CenterWindow":case"DisplayDocTitle":case"PickTrayByPDFSize":"boolean"==typeof a&&(s=a);break;case"NonFullScreenPageMode":if(a instanceof Name)switch(a.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"UseOC":s=a.name;break;default:s="UseNone"}break;case"Direction":if(a instanceof Name)switch(a.name){case"L2R":case"R2L":s=a.name;break;default:s="L2R"}break;case"ViewArea":case"ViewClip":case"PrintArea":case"PrintClip":if(a instanceof Name)switch(a.name){case"MediaBox":case"CropBox":case"BleedBox":case"TrimBox":case"ArtBox":s=a.name;break;default:s="CropBox"}break;case"PrintScaling":if(a instanceof Name)switch(a.name){case"None":case"AppDefault":s=a.name;break;default:s="AppDefault"}break;case"Duplex":if(a instanceof Name)switch(a.name){case"Simplex":case"DuplexFlipShortEdge":case"DuplexFlipLongEdge":s=a.name;break;default:s="None"}break;case"PrintPageRange":if(Array.isArray(a)&&a.length%2==0){a.every(((e,t,i)=>Number.isInteger(e)&&e>0&&(0===t||e>=i[t-1])&&e<=this.numPages))&&(s=a)}break;case"NumCopies":Number.isInteger(a)&&a>0&&(s=a);break;default:warn(`Ignoring non-standard key in ViewerPreferences: ${i}.`);continue}if(void 0!==s){t||(t=Object.create(null));t[i]=s}else warn(`Bad value, for key "${i}", in ViewerPreferences: ${a}.`)}return shadow(this,"viewerPreferences",t)}get openAction(){const e=this._catDict.get("OpenAction"),t=Object.create(null);if(e instanceof Dict){const i=new Dict(this.xref);i.set("A",e);const a={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:i,resultObj:a});Array.isArray(a.dest)?t.dest=a.dest:a.action&&(t.action=a.action)}else Array.isArray(e)&&(t.dest=e);return shadow(this,"openAction",objectSize(t)>0?t:null)}get attachments(){const e=this._catDict.get("Names");let t=null;if(e instanceof Dict&&e.has("EmbeddedFiles")){const i=new NameTree(e.getRaw("EmbeddedFiles"),this.xref);for(const[e,a]of i.getAll()){const i=new FileSpec(a,this.xref);t||(t=Object.create(null));t[stringToPDFString(e)]=i.serializable}}return shadow(this,"attachments",t)}get xfaImages(){const e=this._catDict.get("Names");let t=null;if(e instanceof Dict&&e.has("XFAImages")){const i=new NameTree(e.getRaw("XFAImages"),this.xref);for(const[e,a]of i.getAll()){t||(t=new Dict(this.xref));t.set(stringToPDFString(e),a)}}return shadow(this,"xfaImages",t)}_collectJavaScript(){const e=this._catDict.get("Names");let t=null;function appendIfJavaScriptDict(e,i){if(!(i instanceof Dict))return;if(!isName(i.get("S"),"JavaScript"))return;let a=i.get("JS");if(a instanceof BaseStream)a=a.getString();else if("string"!=typeof a)return;a=stringToPDFString(a).replaceAll("\0","");a&&(t||=new Map).set(e,a)}if(e instanceof Dict&&e.has("JavaScript")){const t=new NameTree(e.getRaw("JavaScript"),this.xref);for(const[e,i]of t.getAll())appendIfJavaScriptDict(stringToPDFString(e),i)}const i=this._catDict.get("OpenAction");i&&appendIfJavaScriptDict("OpenAction",i);return t}get jsActions(){const e=this._collectJavaScript();let t=collectActions(this.xref,this._catDict,fA);if(e){t||=Object.create(null);for(const[i,a]of e)i in t?t[i].push(a):t[i]=[a]}return shadow(this,"jsActions",t)}async fontFallback(e,t){const i=await Promise.all(this.fontCache);for(const a of i)if(a.loadedName===e){a.fallback(t);return}}async cleanup(e=!1){clearGlobalCaches();this.globalImageCache.clear(e);this.pageKidsCountCache.clear();this.pageIndexCache.clear();this.pageDictCache.clear();this.nonBlendModesSet.clear();const t=await Promise.all(this.fontCache);for(const{dict:e}of t)delete e.cacheKey;this.fontCache.clear();this.builtInCMapCache.clear();this.standardFontDataCache.clear();this.systemFontCache.clear()}async getPageDict(e){const t=[this.toplevelPagesDict],i=new RefSet,a=this._catDict.getRaw("Pages");a instanceof Ref&&i.put(a);const s=this.xref,r=this.pageKidsCountCache,n=this.pageIndexCache,g=this.pageDictCache;let o=0;for(;t.length;){const a=t.pop();if(a instanceof Ref){const c=r.get(a);if(c>=0&&o+c<=e){o+=c;continue}if(i.has(a))throw new FormatError("Pages tree contains circular reference.");i.put(a);const C=await(g.get(a)||s.fetchAsync(a));if(C instanceof Dict){let t=C.getRaw("Type");t instanceof Ref&&(t=await s.fetchAsync(t));if(isName(t,"Page")||!C.has("Kids")){r.has(a)||r.put(a,1);n.has(a)||n.put(a,o);if(o===e)return[C,a];o++;continue}}t.push(C);continue}if(!(a instanceof Dict))throw new FormatError("Page dictionary kid reference points to wrong type of object.");const{objId:c}=a;let C=a.getRaw("Count");C instanceof Ref&&(C=await s.fetchAsync(C));if(Number.isInteger(C)&&C>=0){c&&!r.has(c)&&r.put(c,C);if(o+C<=e){o+=C;continue}}let h=a.getRaw("Kids");h instanceof Ref&&(h=await s.fetchAsync(h));if(!Array.isArray(h)){let t=a.getRaw("Type");t instanceof Ref&&(t=await s.fetchAsync(t));if(isName(t,"Page")||!a.has("Kids")){if(o===e)return[a,null];o++;continue}throw new FormatError("Page dictionary kids object is not an array.")}for(let e=h.length-1;e>=0;e--){const i=h[e];t.push(i);a===this.toplevelPagesDict&&i instanceof Ref&&!g.has(i)&&g.put(i,s.fetchAsync(i))}}throw new Error(`Page index ${e} not found.`)}async getAllPageDicts(e=!1){const{ignoreErrors:t}=this.pdfManager.evaluatorOptions,i=[{currentNode:this.toplevelPagesDict,posInKids:0}],a=new RefSet,s=this._catDict.getRaw("Pages");s instanceof Ref&&a.put(s);const r=new Map,n=this.xref,g=this.pageIndexCache;let o=0;function addPageDict(e,t){t&&!g.has(t)&&g.put(t,o);r.set(o++,[e,t])}function addPageError(i){if(i instanceof XRefEntryException&&!e)throw i;if(e&&t&&0===o){warn(`getAllPageDicts - Skipping invalid first page: "${i}".`);i=Dict.empty}r.set(o++,[i,null])}for(;i.length>0;){const e=i.at(-1),{currentNode:t,posInKids:s}=e;let r=t.getRaw("Kids");if(r instanceof Ref)try{r=await n.fetchAsync(r)}catch(e){addPageError(e);break}if(!Array.isArray(r)){addPageError(new FormatError("Page dictionary kids object is not an array."));break}if(s>=r.length){i.pop();continue}const g=r[s];let o;if(g instanceof Ref){if(a.has(g)){addPageError(new FormatError("Pages tree contains circular reference."));break}a.put(g);try{o=await n.fetchAsync(g)}catch(e){addPageError(e);break}}else o=g;if(!(o instanceof Dict)){addPageError(new FormatError("Page dictionary kid reference points to wrong type of object."));break}let c=o.getRaw("Type");if(c instanceof Ref)try{c=await n.fetchAsync(c)}catch(e){addPageError(e);break}isName(c,"Page")||!o.has("Kids")?addPageDict(o,g instanceof Ref?g:null):i.push({currentNode:o,posInKids:0});e.posInKids++}return r}getPageIndex(e){const t=this.pageIndexCache.get(e);if(void 0!==t)return Promise.resolve(t);const i=this.xref;let a=0;const next=t=>function pagesBeforeRef(t){let a,s=0;return i.fetchAsync(t).then((function(i){if(isRefsEqual(t,e)&&!isDict(i,"Page")&&!(i instanceof Dict&&!i.has("Type")&&i.has("Contents")))throw new FormatError("The reference does not point to a /Page dictionary.");if(!i)return null;if(!(i instanceof Dict))throw new FormatError("Node must be a dictionary.");a=i.getRaw("Parent");return i.getAsync("Parent")})).then((function(e){if(!e)return null;if(!(e instanceof Dict))throw new FormatError("Parent must be a dictionary.");return e.getAsync("Kids")})).then((function(e){if(!e)return null;const r=[];let n=!1;for(const a of e){if(!(a instanceof Ref))throw new FormatError("Kid must be a reference.");if(isRefsEqual(a,t)){n=!0;break}r.push(i.fetchAsync(a).then((function(e){if(!(e instanceof Dict))throw new FormatError("Kid node must be a dictionary.");e.has("Count")?s+=e.get("Count"):s++})))}if(!n)throw new FormatError("Kid reference not found in parent's kids.");return Promise.all(r).then((function(){return[s,a]}))}))}(t).then((t=>{if(!t){this.pageIndexCache.put(e,a);return a}const[i,s]=t;a+=i;return next(s)}));return next(e)}get baseUrl(){const e=this._catDict.get("URI");if(e instanceof Dict){const t=e.get("Base");if("string"==typeof t){const e=createValidAbsoluteUrl(t,null,{tryConvertEncoding:!0});if(e)return shadow(this,"baseUrl",e.href)}}return shadow(this,"baseUrl",this.pdfManager.docBaseUrl)}static parseDestDictionary({destDict:e,resultObj:t,docBaseUrl:i=null,docAttachments:a=null}){if(!(e instanceof Dict)){warn("parseDestDictionary: `destDict` must be a dictionary.");return}let s,r,n=e.get("A");if(!(n instanceof Dict))if(e.has("Dest"))n=e.get("Dest");else{n=e.get("AA");n instanceof Dict&&(n.has("D")?n=n.get("D"):n.has("U")&&(n=n.get("U")))}if(n instanceof Dict){const e=n.get("S");if(!(e instanceof Name)){warn("parseDestDictionary: Invalid type in Action dictionary.");return}const i=e.name;switch(i){case"ResetForm":const e=n.get("Flags"),g=!(1&("number"==typeof e?e:0)),o=[],c=[];for(const e of n.get("Fields")||[])e instanceof Ref?c.push(e.toString()):"string"==typeof e&&o.push(stringToPDFString(e));t.resetForm={fields:o,refs:c,include:g};break;case"URI":s=n.get("URI");s instanceof Name&&(s="/"+s.name);break;case"GoTo":r=n.get("D");break;case"Launch":case"GoToR":const C=n.get("F");if(C instanceof Dict){const e=new FileSpec(C,null,!0),{rawFilename:t}=e.serializable;s=t}else"string"==typeof C&&(s=C);const h=fetchRemoteDest(n);h&&"string"==typeof s&&(s=s.split("#",1)[0]+"#"+h);const l=n.get("NewWindow");"boolean"==typeof l&&(t.newWindow=l);break;case"GoToE":const Q=n.get("T");let E;if(a&&Q instanceof Dict){const e=Q.get("R"),t=Q.get("N");isName(e,"C")&&"string"==typeof t&&(E=a[stringToPDFString(t)])}if(E){t.attachment=E;const e=fetchRemoteDest(n);e&&(t.attachmentDest=e)}else warn('parseDestDictionary - unimplemented "GoToE" action.');break;case"Named":const u=n.get("N");u instanceof Name&&(t.action=u.name);break;case"SetOCGState":const d=n.get("State"),f=n.get("PreserveRB");if(!Array.isArray(d)||0===d.length)break;const p=[];for(const e of d)if(e instanceof Name)switch(e.name){case"ON":case"OFF":case"Toggle":p.push(e.name)}else e instanceof Ref&&p.push(e.toString());if(p.length!==d.length)break;t.setOCGState={state:p,preserveRB:"boolean"!=typeof f||f};break;case"JavaScript":const m=n.get("JS");let y;m instanceof BaseStream?y=m.getString():"string"==typeof m&&(y=m);const w=y&&recoverJsURL(stringToPDFString(y));if(w){s=w.url;t.newWindow=w.newWindow;break}default:if("JavaScript"===i||"SubmitForm"===i)break;warn(`parseDestDictionary - unsupported action: "${i}".`)}}else e.has("Dest")&&(r=e.get("Dest"));if("string"==typeof s){const e=createValidAbsoluteUrl(s,i,{addDefaultProtocol:!0,tryConvertEncoding:!0});e&&(t.url=e.href);t.unsafeUrl=s}if(r){r instanceof Name&&(r=r.name);"string"==typeof r?t.dest=stringToPDFString(r):isValidExplicitDest(r)&&(t.dest=r)}}}function addChildren(e,t){if(e instanceof Dict)e=e.getRawValues();else if(e instanceof BaseStream)e=e.dict.getRawValues();else if(!Array.isArray(e))return;for(const a of e)((i=a)instanceof Ref||i instanceof Dict||i instanceof BaseStream||Array.isArray(i))&&t.push(a);var i}class ObjectLoader{constructor(e,t,i){this.dict=e;this.keys=t;this.xref=i;this.refSet=null}async load(){if(this.xref.stream.isDataLoaded)return;const{keys:e,dict:t}=this;this.refSet=new RefSet;const i=[];for(const a of e){const e=t.getRaw(a);void 0!==e&&i.push(e)}return this._walk(i)}async _walk(e){const t=[],i=[];for(;e.length;){let a=e.pop();if(a instanceof Ref){if(this.refSet.has(a))continue;try{this.refSet.put(a);a=this.xref.fetch(a)}catch(e){if(!(e instanceof MissingDataException)){warn(`ObjectLoader._walk - requesting all data: "${e}".`);this.refSet=null;const{manager:t}=this.xref.stream;return t.requestAllChunks()}t.push(a);i.push({begin:e.begin,end:e.end})}}if(a instanceof BaseStream){const e=a.getBaseStreams();if(e){let s=!1;for(const t of e)if(!t.isDataLoaded){s=!0;i.push({begin:t.start,end:t.end})}s&&t.push(a)}}addChildren(a,e)}if(i.length){await this.xref.stream.manager.requestRanges(i);for(const e of t)e instanceof Ref&&this.refSet.remove(e);return this._walk(t)}this.refSet=null}}const xs=Symbol(),Ls=Symbol(),Hs=Symbol(),Js=Symbol(),Ys=Symbol(),vs=Symbol(),Ks=Symbol(),Ts=Symbol(),qs=Symbol(),Os=Symbol("content"),Ws=Symbol("data"),js=Symbol(),Xs=Symbol("extra"),Zs=Symbol(),Vs=Symbol(),zs=Symbol(),_s=Symbol(),$s=Symbol(),Ar=Symbol(),er=Symbol(),tr=Symbol(),ir=Symbol(),ar=Symbol(),sr=Symbol(),rr=Symbol(),nr=Symbol(),gr=Symbol(),or=Symbol(),Ir=Symbol(),cr=Symbol(),Cr=Symbol(),hr=Symbol(),lr=Symbol(),Qr=Symbol(),Er=Symbol(),ur=Symbol(),dr=Symbol(),fr=Symbol(),pr=Symbol(),mr=Symbol(),yr=Symbol(),wr=Symbol(),Dr=Symbol(),br=Symbol(),Fr=Symbol(),Sr=Symbol("namespaceId"),kr=Symbol("nodeName"),Rr=Symbol(),Nr=Symbol(),Gr=Symbol(),Mr=Symbol(),Ur=Symbol(),xr=Symbol(),Lr=Symbol(),Hr=Symbol(),Jr=Symbol("root"),Yr=Symbol(),vr=Symbol(),Kr=Symbol(),Tr=Symbol(),qr=Symbol(),Or=Symbol(),Pr=Symbol(),Wr=Symbol(),jr=Symbol(),Xr=Symbol(),Zr=Symbol(),Vr=Symbol("uid"),zr=Symbol(),_r={config:{id:0,check:e=>e.startsWith("http://www.xfa.org/schema/xci/")},connectionSet:{id:1,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-connection-set/")},datasets:{id:2,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-data/")},form:{id:3,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-form/")},localeSet:{id:4,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-locale-set/")},pdf:{id:5,check:e=>"http://ns.adobe.com/xdp/pdf/"===e},signature:{id:6,check:e=>"http://www.w3.org/2000/09/xmldsig#"===e},sourceSet:{id:7,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-source-set/")},stylesheet:{id:8,check:e=>"http://www.w3.org/1999/XSL/Transform"===e},template:{id:9,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-template/")},xdc:{id:10,check:e=>e.startsWith("http://www.xfa.org/schema/xdc/")},xdp:{id:11,check:e=>"http://ns.adobe.com/xdp/"===e},xfdf:{id:12,check:e=>"http://ns.adobe.com/xfdf/"===e},xhtml:{id:13,check:e=>"http://www.w3.org/1999/xhtml"===e},xmpmeta:{id:14,check:e=>"http://ns.adobe.com/xmpmeta/"===e}},$r={pt:e=>e,cm:e=>e/2.54*72,mm:e=>e/25.4*72,in:e=>72*e,px:e=>e},An=/([+-]?\d+\.?\d*)(.*)/;function stripQuotes(e){return e.startsWith("'")||e.startsWith('"')?e.slice(1,-1):e}function getInteger({data:e,defaultValue:t,validate:i}){if(!e)return t;e=e.trim();const a=parseInt(e,10);return!isNaN(a)&&i(a)?a:t}function getFloat({data:e,defaultValue:t,validate:i}){if(!e)return t;e=e.trim();const a=parseFloat(e);return!isNaN(a)&&i(a)?a:t}function getKeyword({data:e,defaultValue:t,validate:i}){return e&&i(e=e.trim())?e:t}function getStringOption(e,t){return getKeyword({data:e,defaultValue:t[0],validate:e=>t.includes(e)})}function getMeasurement(e,t="0"){t||="0";if(!e)return getMeasurement(t);const i=e.trim().match(An);if(!i)return getMeasurement(t);const[,a,s]=i,r=parseFloat(a);if(isNaN(r))return getMeasurement(t);if(0===r)return 0;const n=$r[s];return n?n(r):r}function getRatio(e){if(!e)return{num:1,den:1};const t=e.trim().split(/\s*:\s*/).map((e=>parseFloat(e))).filter((e=>!isNaN(e)));1===t.length&&t.push(1);if(0===t.length)return{num:1,den:1};const[i,a]=t;return{num:i,den:a}}function getRelevant(e){return e?e.trim().split(/\s+/).map((e=>({excluded:"-"===e[0],viewname:e.substring(1)}))):[]}class HTMLResult{static get FAILURE(){return shadow(this,"FAILURE",new HTMLResult(!1,null,null,null))}static get EMPTY(){return shadow(this,"EMPTY",new HTMLResult(!0,null,null,null))}constructor(e,t,i,a){this.success=e;this.html=t;this.bbox=i;this.breakNode=a}isBreak(){return!!this.breakNode}static breakNode(e){return new HTMLResult(!1,null,null,e)}static success(e,t=null){return new HTMLResult(!0,e,t,null)}}class FontFinder{constructor(e){this.fonts=new Map;this.cache=new Map;this.warned=new Set;this.defaultFont=null;this.add(e)}add(e,t=null){for(const t of e)this.addPdfFont(t);for(const e of this.fonts.values())e.regular||(e.regular=e.italic||e.bold||e.bolditalic);if(!t||0===t.size)return;const i=this.fonts.get("PdfJS-Fallback-PdfJS-XFA");for(const e of t)this.fonts.set(e,i)}addPdfFont(e){const t=e.cssFontInfo,i=t.fontFamily;let a=this.fonts.get(i);if(!a){a=Object.create(null);this.fonts.set(i,a);this.defaultFont||(this.defaultFont=a)}let s="";const r=parseFloat(t.fontWeight);0!==parseFloat(t.italicAngle)?s=r>=700?"bolditalic":"italic":r>=700&&(s="bold");if(!s){(e.name.includes("Bold")||e.psName?.includes("Bold"))&&(s="bold");(e.name.includes("Italic")||e.name.endsWith("It")||e.psName?.includes("Italic")||e.psName?.endsWith("It"))&&(s+="italic")}s||(s="regular");a[s]=e}getDefault(){return this.defaultFont}find(e,t=!0){let i=this.fonts.get(e)||this.cache.get(e);if(i)return i;const a=/,|-|_| |bolditalic|bold|italic|regular|it/gi;let s=e.replaceAll(a,"");i=this.fonts.get(s);if(i){this.cache.set(e,i);return i}s=s.toLowerCase();const r=[];for(const[e,t]of this.fonts.entries())e.replaceAll(a,"").toLowerCase().startsWith(s)&&r.push(t);if(0===r.length)for(const[,e]of this.fonts.entries())e.regular.name?.replaceAll(a,"").toLowerCase().startsWith(s)&&r.push(e);if(0===r.length){s=s.replaceAll(/psmt|mt/gi,"");for(const[e,t]of this.fonts.entries())e.replaceAll(a,"").toLowerCase().startsWith(s)&&r.push(t)}if(0===r.length)for(const e of this.fonts.values())e.regular.name?.replaceAll(a,"").toLowerCase().startsWith(s)&&r.push(e);if(r.length>=1){1!==r.length&&t&&warn(`XFA - Too many choices to guess the correct font: ${e}`);this.cache.set(e,r[0]);return r[0]}if(t&&!this.warned.has(e)){this.warned.add(e);warn(`XFA - Cannot find the font: ${e}`)}return null}}function selectFont(e,t){return"italic"===e.posture?"bold"===e.weight?t.bolditalic:t.italic:"bold"===e.weight?t.bold:t.regular}class FontInfo{constructor(e,t,i,a){this.lineHeight=i;this.paraMargin=t||{top:0,bottom:0,left:0,right:0};if(!e){[this.pdfFont,this.xfaFont]=this.defaultFont(a);return}this.xfaFont={typeface:e.typeface,posture:e.posture,weight:e.weight,size:e.size,letterSpacing:e.letterSpacing};const s=a.find(e.typeface);if(s){this.pdfFont=selectFont(e,s);this.pdfFont||([this.pdfFont,this.xfaFont]=this.defaultFont(a))}else[this.pdfFont,this.xfaFont]=this.defaultFont(a)}defaultFont(e){const t=e.find("Helvetica",!1)||e.find("Myriad Pro",!1)||e.find("Arial",!1)||e.getDefault();if(t?.regular){const e=t.regular;return[e,{typeface:e.cssFontInfo.fontFamily,posture:"normal",weight:"normal",size:10,letterSpacing:0}]}return[null,{typeface:"Courier",posture:"normal",weight:"normal",size:10,letterSpacing:0}]}}class FontSelector{constructor(e,t,i,a){this.fontFinder=a;this.stack=[new FontInfo(e,t,i,a)]}pushData(e,t,i){const a=this.stack.at(-1);for(const t of["typeface","posture","weight","size","letterSpacing"])e[t]||(e[t]=a.xfaFont[t]);for(const e of["top","bottom","left","right"])isNaN(t[e])&&(t[e]=a.paraMargin[e]);const s=new FontInfo(e,t,i||a.lineHeight,this.fontFinder);s.pdfFont||(s.pdfFont=a.pdfFont);this.stack.push(s)}popFont(){this.stack.pop()}topFont(){return this.stack.at(-1)}}class TextMeasure{constructor(e,t,i,a){this.glyphs=[];this.fontSelector=new FontSelector(e,t,i,a);this.extraHeight=0}pushData(e,t,i){this.fontSelector.pushData(e,t,i)}popFont(e){return this.fontSelector.popFont()}addPara(){const e=this.fontSelector.topFont();this.extraHeight+=e.paraMargin.top+e.paraMargin.bottom}addString(e){if(!e)return;const t=this.fontSelector.topFont(),i=t.xfaFont.size;if(t.pdfFont){const a=t.xfaFont.letterSpacing,s=t.pdfFont,r=s.lineHeight||1.2,n=t.lineHeight||Math.max(1.2,r)*i,g=r-(void 0===s.lineGap?.2:s.lineGap),o=Math.max(1,g)*i,c=i/1e3,C=s.defaultWidth||s.charsToGlyphs(" ")[0].width;for(const t of e.split(/[\u2029\n]/)){const e=s.encodeString(t).join(""),i=s.charsToGlyphs(e);for(const e of i){const t=e.width||C;this.glyphs.push([t*c+a,n,o,e.unicode,!1])}this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop()}else{for(const t of e.split(/[\u2029\n]/)){for(const e of t.split(""))this.glyphs.push([i,1.2*i,i,e,!1]);this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop()}}compute(e){let t=-1,i=0,a=0,s=0,r=0,n=0,g=!1,o=!0;for(let c=0,C=this.glyphs.length;ce){a=Math.max(a,r);r=0;s+=n;n=d;t=-1;i=0;g=!0;o=!1}else{n=Math.max(d,n);i=r;r+=C;t=c}else if(r+C>e){s+=n;n=d;if(-1!==t){c=t;a=Math.max(a,i);r=0;t=-1;i=0}else{a=Math.max(a,r);r=C}g=!0;o=!1}else{r+=C;n=Math.max(d,n)}}a=Math.max(a,r);s+=n+this.extraHeight;return{width:1.02*a,height:s,isBroken:g}}}const en=/^[^.[]+/,tn=/^[^\]]+/,an=0,sn=1,rn=2,nn=3,gn=4,on=new Map([["$data",(e,t)=>e.datasets?e.datasets.data:e],["$record",(e,t)=>(e.datasets?e.datasets.data:e)[rr]()[0]],["$template",(e,t)=>e.template],["$connectionSet",(e,t)=>e.connectionSet],["$form",(e,t)=>e.form],["$layout",(e,t)=>e.layout],["$host",(e,t)=>e.host],["$dataWindow",(e,t)=>e.dataWindow],["$event",(e,t)=>e.event],["!",(e,t)=>e.datasets],["$xfa",(e,t)=>e],["xfa",(e,t)=>e],["$",(e,t)=>t]]),In=new WeakMap;function parseExpression(e,t,i=!0){let a=e.match(en);if(!a)return null;let[s]=a;const r=[{name:s,cacheName:"."+s,index:0,js:null,formCalc:null,operator:an}];let n=s.length;for(;n0&&C.push(e)}if(0!==C.length||g||0!==o)e=isFinite(c)?C.filter((e=>ce[c])):C.flat();else{const i=t[Ir]();if(!(t=i))return null;o=-1;e=[t]}}return 0===e.length?null:e}function createDataNode(e,t,i){const a=parseExpression(i);if(!a)return null;if(a.some((e=>e.operator===sn)))return null;const s=on.get(a[0].name);let r=0;if(s){e=s(e,t);r=1}else e=t||e;for(let t=a.length;re[Pr]())).join("")}get[hn](){const e=Object.getPrototypeOf(this);if(!e._attributes){const t=e._attributes=new Set;for(const e of Object.getOwnPropertyNames(this)){if(null===this[e]||this[e]instanceof XFAObject||this[e]instanceof XFAObjectArray)break;t.add(e)}}return shadow(this,hn,e._attributes)}[pr](e){let t=this;for(;t;){if(t===e)return!0;t=t[Ir]()}return!1}[Ir](){return this[wn]}[or](){return this[Ir]()}[rr](e=null){return e?this[e]:this[ln]}[js](){const e=Object.create(null);this[Os]&&(e.$content=this[Os]);for(const t of Object.getOwnPropertyNames(this)){const i=this[t];null!==i&&(i instanceof XFAObject?e[t]=i[js]():i instanceof XFAObjectArray?i.isEmpty()||(e[t]=i.dump()):e[t]=i)}return e}[Zr](){return null}[jr](){return HTMLResult.EMPTY}*[nr](){for(const e of this[rr]())yield e}*[un](e,t){for(const i of this[nr]())if(!e||t===e.has(i[kr])){const e=this[$s](),t=i[jr](e);t.success||(this[Xs].failingNode=i);yield t}}[Vs](){return null}[Ls](e,t){this[Xs].children.push(e)}[$s](){}[Js]({filter:e=null,include:t=!0}){if(this[Xs].generator){const e=this[$s](),t=this[Xs].failingNode[jr](e);if(!t.success)return t;t.html&&this[Ls](t.html,t.bbox);delete this[Xs].failingNode}else this[Xs].generator=this[un](e,t);for(;;){const e=this[Xs].generator.next();if(e.done)break;const t=e.value;if(!t.success)return t;t.html&&this[Ls](t.html,t.bbox)}this[Xs].generator=null;return HTMLResult.EMPTY}[Tr](e){this[bn]=new Set(Object.keys(e))}[fn](e){const t=this[hn],i=this[bn];return[...e].filter((e=>t.has(e)&&!i.has(e)))}[Yr](e,t=new Set){for(const i of this[ln])i[Dn](e,t)}[Dn](e,t){const i=this[dn](e,t);i?this[cn](i,e,t):this[Yr](e,t)}[dn](e,t){const{use:i,usehref:a}=this;if(!i&&!a)return null;let s=null,r=null,n=null,g=i;if(a){g=a;a.startsWith("#som(")&&a.endsWith(")")?r=a.slice(5,-1):a.startsWith(".#som(")&&a.endsWith(")")?r=a.slice(6,-1):a.startsWith("#")?n=a.slice(1):a.startsWith(".#")&&(n=a.slice(2))}else i.startsWith("#")?n=i.slice(1):r=i;this.use=this.usehref="";if(n)s=e.get(n);else{s=searchNode(e.get(Jr),this,r,!0,!1);s&&(s=s[0])}if(!s){warn(`XFA - Invalid prototype reference: ${g}.`);return null}if(s[kr]!==this[kr]){warn(`XFA - Incompatible prototype: ${s[kr]} !== ${this[kr]}.`);return null}if(t.has(s)){warn("XFA - Cycle detected in prototypes use.");return null}t.add(s);const o=s[dn](e,t);o&&s[cn](o,e,t);s[Yr](e,t);t.delete(s);return s}[cn](e,t,i){if(i.has(e)){warn("XFA - Cycle detected in prototypes use.");return}!this[Os]&&e[Os]&&(this[Os]=e[Os]);new Set(i).add(e);for(const t of this[fn](e[bn])){this[t]=e[t];this[bn]&&this[bn].add(t)}for(const a of Object.getOwnPropertyNames(this)){if(this[hn].has(a))continue;const s=this[a],r=e[a];if(s instanceof XFAObjectArray){for(const e of s[ln])e[Dn](t,i);for(let a=s[ln].length,n=r[ln].length;aXFAObject[Bn](e))):"object"==typeof e&&null!==e?Object.assign({},e):e}[Ts](){const e=Object.create(Object.getPrototypeOf(this));for(const t of Object.getOwnPropertySymbols(this))try{e[t]=this[t]}catch{shadow(e,t,this[t])}e[Vr]=`${e[kr]}${Sn++}`;e[ln]=[];for(const t of Object.getOwnPropertyNames(this)){if(this[hn].has(t)){e[t]=XFAObject[Bn](this[t]);continue}const i=this[t];e[t]=i instanceof XFAObjectArray?new XFAObjectArray(i[mn]):null}for(const t of this[ln]){const i=t[kr],a=t[Ts]();e[ln].push(a);a[wn]=e;null===e[i]?e[i]=a:e[i][ln].push(a)}return e}[rr](e=null){return e?this[ln].filter((t=>t[kr]===e)):this[ln]}[Ar](e){return this[e]}[er](e,t,i=!0){return Array.from(this[tr](e,t,i))}*[tr](e,t,i=!0){if("parent"!==e){for(const i of this[ln]){i[kr]===e&&(yield i);i.name===e&&(yield i);(t||i[Dr]())&&(yield*i[tr](e,t,!1))}i&&this[hn].has(e)&&(yield new XFAAttribute(this,e,this[e]))}else yield this[wn]}}class XFAObjectArray{constructor(e=1/0){this[mn]=e;this[ln]=[]}get isXFAObject(){return!1}get isXFAObjectArray(){return!0}push(e){if(this[ln].length<=this[mn]){this[ln].push(e);return!0}warn(`XFA - node "${e[kr]}" accepts no more than ${this[mn]} children`);return!1}isEmpty(){return 0===this[ln].length}dump(){return 1===this[ln].length?this[ln][0][js]():this[ln].map((e=>e[js]()))}[Ts](){const e=new XFAObjectArray(this[mn]);e[ln]=this[ln].map((e=>e[Ts]()));return e}get children(){return this[ln]}clear(){this[ln].length=0}}class XFAAttribute{constructor(e,t,i){this[wn]=e;this[kr]=t;this[Os]=i;this[qs]=!1;this[Vr]="attribute"+Sn++}[Ir](){return this[wn]}[fr](){return!0}[ir](){return this[Os].trim()}[qr](e){e=e.value||"";this[Os]=e.toString()}[Pr](){return this[Os]}[pr](e){return this[wn]===e||this[wn][pr](e)}}class XmlObject extends XFAObject{constructor(e,t,i={}){super(e,t);this[Os]="";this[Qn]=null;if("#text"!==t){const e=new Map;this[Cn]=e;for(const[t,a]of Object.entries(i))e.set(t,new XFAAttribute(this,t,a));if(i.hasOwnProperty(Rr)){const e=i[Rr].xfa.dataNode;void 0!==e&&("dataGroup"===e?this[Qn]=!1:"dataValue"===e&&(this[Qn]=!0))}}this[qs]=!1}[Xr](e){const t=this[kr];if("#text"===t){e.push(encodeToXmlString(this[Os]));return}const i=utf8StringToString(t),a=this[Sr]===kn?"xfa:":"";e.push(`<${a}${i}`);for(const[t,i]of this[Cn].entries()){const a=utf8StringToString(t);e.push(` ${a}="${encodeToXmlString(i[Os])}"`)}null!==this[Qn]&&(this[Qn]?e.push(' xfa:dataNode="dataValue"'):e.push(' xfa:dataNode="dataGroup"'));if(this[Os]||0!==this[ln].length){e.push(">");if(this[Os])"string"==typeof this[Os]?e.push(encodeToXmlString(this[Os])):this[Os][Xr](e);else for(const t of this[ln])t[Xr](e);e.push(``)}else e.push("/>")}[Nr](e){if(this[Os]){const e=new XmlObject(this[Sr],"#text");this[Hs](e);e[Os]=this[Os];this[Os]=""}this[Hs](e);return!0}[Mr](e){this[Os]+=e}[Zs](){if(this[Os]&&this[ln].length>0){const e=new XmlObject(this[Sr],"#text");this[Hs](e);e[Os]=this[Os];delete this[Os]}}[jr](){return"#text"===this[kr]?HTMLResult.success({name:"#text",value:this[Os]}):HTMLResult.EMPTY}[rr](e=null){return e?this[ln].filter((t=>t[kr]===e)):this[ln]}[_s](){return this[Cn]}[Ar](e){const t=this[Cn].get(e);return void 0!==t?t:this[rr](e)}*[tr](e,t){const i=this[Cn].get(e);i&&(yield i);for(const i of this[ln]){i[kr]===e&&(yield i);t&&(yield*i[tr](e,t))}}*[zs](e,t){const i=this[Cn].get(e);!i||t&&i[qs]||(yield i);for(const i of this[ln])yield*i[zs](e,t)}*[sr](e,t,i){for(const a of this[ln]){a[kr]!==e||i&&a[qs]||(yield a);t&&(yield*a[sr](e,t,i))}}[fr](){return null===this[Qn]?0===this[ln].length||this[ln][0][Sr]===_r.xhtml.id:this[Qn]}[ir](){return null===this[Qn]?0===this[ln].length?this[Os].trim():this[ln][0][Sr]===_r.xhtml.id?this[ln][0][Pr]().trim():null:this[Os].trim()}[qr](e){e=e.value||"";this[Os]=e.toString()}[js](e=!1){const t=Object.create(null);e&&(t.$ns=this[Sr]);this[Os]&&(t.$content=this[Os]);t.$name=this[kr];t.children=[];for(const i of this[ln])t.children.push(i[js](e));t.attributes=Object.create(null);for(const[e,i]of this[Cn])t.attributes[e]=i[Os];return t}}class ContentObject extends XFAObject{constructor(e,t){super(e,t);this[Os]=""}[Mr](e){this[Os]+=e}[Zs](){}}class OptionObject extends ContentObject{constructor(e,t,i){super(e,t);this[yn]=i}[Zs](){this[Os]=getKeyword({data:this[Os],defaultValue:this[yn][0],validate:e=>this[yn].includes(e)})}[Ys](e){super[Ys](e);delete this[yn]}}class StringObject extends ContentObject{[Zs](){this[Os]=this[Os].trim()}}class IntegerObject extends ContentObject{constructor(e,t,i,a){super(e,t);this[En]=i;this[Fn]=a}[Zs](){this[Os]=getInteger({data:this[Os],defaultValue:this[En],validate:this[Fn]})}[Ys](e){super[Ys](e);delete this[En];delete this[Fn]}}class Option01 extends IntegerObject{constructor(e,t){super(e,t,0,(e=>1===e))}}class Option10 extends IntegerObject{constructor(e,t){super(e,t,1,(e=>0===e))}}function measureToString(e){return"string"==typeof e?"0px":Number.isInteger(e)?`${e}px`:`${e.toFixed(2)}px`}const Rn={anchorType(e,t){const i=e[or]();if(i&&(!i.layout||"position"===i.layout)){"transform"in t||(t.transform="");switch(e.anchorType){case"bottomCenter":t.transform+="translate(-50%, -100%)";break;case"bottomLeft":t.transform+="translate(0,-100%)";break;case"bottomRight":t.transform+="translate(-100%,-100%)";break;case"middleCenter":t.transform+="translate(-50%,-50%)";break;case"middleLeft":t.transform+="translate(0,-50%)";break;case"middleRight":t.transform+="translate(-100%,-50%)";break;case"topCenter":t.transform+="translate(-50%,0)";break;case"topRight":t.transform+="translate(-100%,0)"}}},dimensions(e,t){const i=e[or]();let a=e.w;const s=e.h;if(i.layout?.includes("row")){const t=i[Xs],s=e.colSpan;let r;if(-1===s){r=t.columnWidths.slice(t.currentColumn).reduce(((e,t)=>e+t),0);t.currentColumn=0}else{r=t.columnWidths.slice(t.currentColumn,t.currentColumn+s).reduce(((e,t)=>e+t),0);t.currentColumn=(t.currentColumn+e.colSpan)%t.columnWidths.length}isNaN(r)||(a=e.w=r)}t.width=""!==a?measureToString(a):"auto";t.height=""!==s?measureToString(s):"auto"},position(e,t){const i=e[or]();if(!i?.layout||"position"===i.layout){t.position="absolute";t.left=measureToString(e.x);t.top=measureToString(e.y)}},rotate(e,t){if(e.rotate){"transform"in t||(t.transform="");t.transform+=`rotate(-${e.rotate}deg)`;t.transformOrigin="top left"}},presence(e,t){switch(e.presence){case"invisible":t.visibility="hidden";break;case"hidden":case"inactive":t.display="none"}},hAlign(e,t){if("para"===e[kr])switch(e.hAlign){case"justifyAll":t.textAlign="justify-all";break;case"radix":t.textAlign="left";break;default:t.textAlign=e.hAlign}else switch(e.hAlign){case"left":t.alignSelf="start";break;case"center":t.alignSelf="center";break;case"right":t.alignSelf="end"}},margin(e,t){e.margin&&(t.margin=e.margin[Zr]().margin)}};function setMinMaxDimensions(e,t){if("position"===e[or]().layout){e.minW>0&&(t.minWidth=measureToString(e.minW));e.maxW>0&&(t.maxWidth=measureToString(e.maxW));e.minH>0&&(t.minHeight=measureToString(e.minH));e.maxH>0&&(t.maxHeight=measureToString(e.maxH))}}function layoutText(e,t,i,a,s,r){const n=new TextMeasure(t,i,a,s);"string"==typeof e?n.addString(e):e[Ur](n);return n.compute(r)}function layoutNode(e,t){let i=null,a=null,s=!1;if((!e.w||!e.h)&&e.value){let r=0,n=0;if(e.margin){r=e.margin.leftInset+e.margin.rightInset;n=e.margin.topInset+e.margin.bottomInset}let g=null,o=null;if(e.para){o=Object.create(null);g=""===e.para.lineHeight?null:e.para.lineHeight;o.top=""===e.para.spaceAbove?0:e.para.spaceAbove;o.bottom=""===e.para.spaceBelow?0:e.para.spaceBelow;o.left=""===e.para.marginLeft?0:e.para.marginLeft;o.right=""===e.para.marginRight?0:e.para.marginRight}let c=e.font;if(!c){const t=e[cr]();let i=e[Ir]();for(;i&&i!==t;){if(i.font){c=i.font;break}i=i[Ir]()}}const C=(e.w||t.width)-r,h=e[Cr].fontFinder;if(e.value.exData&&e.value.exData[Os]&&"text/html"===e.value.exData.contentType){const t=layoutText(e.value.exData[Os],c,o,g,h,C);a=t.width;i=t.height;s=t.isBroken}else{const t=e.value[Pr]();if(t){const e=layoutText(t,c,o,g,h,C);a=e.width;i=e.height;s=e.isBroken}}null===a||e.w||(a+=r);null===i||e.h||(i+=n)}return{w:a,h:i,isBroken:s}}function computeBbox(e,t,i){let a;if(""!==e.w&&""!==e.h)a=[e.x,e.y,e.w,e.h];else{if(!i)return null;let s=e.w;if(""===s){if(0===e.maxW){const t=e[or]();s="position"===t.layout&&""!==t.w?0:e.minW}else s=Math.min(e.maxW,i.width);t.attributes.style.width=measureToString(s)}let r=e.h;if(""===r){if(0===e.maxH){const t=e[or]();r="position"===t.layout&&""!==t.h?0:e.minH}else r=Math.min(e.maxH,i.height);t.attributes.style.height=measureToString(r)}a=[e.x,e.y,s,r]}return a}function fixDimensions(e){const t=e[or]();if(t.layout?.includes("row")){const i=t[Xs],a=e.colSpan;let s;s=-1===a?i.columnWidths.slice(i.currentColumn).reduce(((e,t)=>e+t),0):i.columnWidths.slice(i.currentColumn,i.currentColumn+a).reduce(((e,t)=>e+t),0);isNaN(s)||(e.w=s)}t.layout&&"position"!==t.layout&&(e.x=e.y=0);"table"===e.layout&&""===e.w&&Array.isArray(e.columnWidths)&&(e.w=e.columnWidths.reduce(((e,t)=>e+t),0))}function layoutClass(e){switch(e.layout){case"position":default:return"xfaPosition";case"lr-tb":return"xfaLrTb";case"rl-row":return"xfaRlRow";case"rl-tb":return"xfaRlTb";case"row":return"xfaRow";case"table":return"xfaTable";case"tb":return"xfaTb"}}function toStyle(e,...t){const i=Object.create(null);for(const a of t){const t=e[a];if(null!==t)if(Rn.hasOwnProperty(a))Rn[a](e,i);else if(t instanceof XFAObject){const e=t[Zr]();e?Object.assign(i,e):warn(`(DEBUG) - XFA - style for ${a} not implemented yet`)}}return i}function createWrapper(e,t){const{attributes:i}=t,{style:a}=i,s={name:"div",attributes:{class:["xfaWrapper"],style:Object.create(null)},children:[]};i.class.push("xfaWrapped");if(e.border){const{widths:i,insets:r}=e.border[Xs];let n,g,o=r[0],c=r[3];const C=r[0]+r[2],h=r[1]+r[3];switch(e.border.hand){case"even":o-=i[0]/2;c-=i[3]/2;n=`calc(100% + ${(i[1]+i[3])/2-h}px)`;g=`calc(100% + ${(i[0]+i[2])/2-C}px)`;break;case"left":o-=i[0];c-=i[3];n=`calc(100% + ${i[1]+i[3]-h}px)`;g=`calc(100% + ${i[0]+i[2]-C}px)`;break;case"right":n=h?`calc(100% - ${h}px)`:"100%";g=C?`calc(100% - ${C}px)`:"100%"}const l=["xfaBorder"];isPrintOnly(e.border)&&l.push("xfaPrintOnly");const Q={name:"div",attributes:{class:l,style:{top:`${o}px`,left:`${c}px`,width:n,height:g}},children:[]};for(const e of["border","borderWidth","borderColor","borderRadius","borderStyle"])if(void 0!==a[e]){Q.attributes.style[e]=a[e];delete a[e]}s.children.push(Q,t)}else s.children.push(t);for(const e of["background","backgroundClip","top","left","width","height","minWidth","minHeight","maxWidth","maxHeight","transform","transformOrigin","visibility"])if(void 0!==a[e]){s.attributes.style[e]=a[e];delete a[e]}s.attributes.style.position="absolute"===a.position?"absolute":"relative";delete a.position;if(a.alignSelf){s.attributes.style.alignSelf=a.alignSelf;delete a.alignSelf}return s}function fixTextIndent(e){const t=getMeasurement(e.textIndent,"0px");if(t>=0)return;const i="padding"+("left"===("right"===e.textAlign?"right":"left")?"Left":"Right"),a=getMeasurement(e[i],"0px");e[i]=a-t+"px"}function setAccess(e,t){switch(e.access){case"nonInteractive":t.push("xfaNonInteractive");break;case"readOnly":t.push("xfaReadOnly");break;case"protected":t.push("xfaDisabled")}}function isPrintOnly(e){return e.relevant.length>0&&!e.relevant[0].excluded&&"print"===e.relevant[0].viewname}function getCurrentPara(e){const t=e[cr]()[Xs].paraStack;return t.length?t.at(-1):null}function setPara(e,t,i){if(i.attributes.class?.includes("xfaRich")){if(t){""===e.h&&(t.height="auto");""===e.w&&(t.width="auto")}const a=getCurrentPara(e);if(a){const e=i.attributes.style;e.display="flex";e.flexDirection="column";switch(a.vAlign){case"top":e.justifyContent="start";break;case"bottom":e.justifyContent="end";break;case"middle":e.justifyContent="center"}const t=a[Zr]();for(const[i,a]of Object.entries(t))i in e||(e[i]=a)}}}function setFontFamily(e,t,i,a){if(!i){delete a.fontFamily;return}const s=stripQuotes(e.typeface);a.fontFamily=`"${s}"`;const r=i.find(s);if(r){const{fontFamily:i}=r.regular.cssFontInfo;i!==s&&(a.fontFamily=`"${i}"`);const n=getCurrentPara(t);if(n&&""!==n.lineHeight)return;if(a.lineHeight)return;const g=selectFont(e,r);g&&(a.lineHeight=Math.max(1.2,g.lineHeight))}}function fixURL(e){const t=createValidAbsoluteUrl(e,null,{addDefaultProtocol:!0,tryConvertEncoding:!0});return t?t.href:null}function createLine(e,t){return{name:"div",attributes:{class:["lr-tb"===e.layout?"xfaLr":"xfaRl"]},children:t}}function flushHTML(e){if(!e[Xs])return null;const t={name:"div",attributes:e[Xs].attributes,children:e[Xs].children};if(e[Xs].failingNode){const i=e[Xs].failingNode[Vs]();i&&(e.layout.endsWith("-tb")?t.children.push(createLine(e,[i])):t.children.push(i))}return 0===t.children.length?null:t}function addHTML(e,t,i){const a=e[Xs],s=a.availableSpace,[r,n,g,o]=i;switch(e.layout){case"position":a.width=Math.max(a.width,r+g);a.height=Math.max(a.height,n+o);a.children.push(t);break;case"lr-tb":case"rl-tb":if(!a.line||1===a.attempt){a.line=createLine(e,[]);a.children.push(a.line);a.numberInLine=0}a.numberInLine+=1;a.line.children.push(t);if(0===a.attempt){a.currentWidth+=g;a.height=Math.max(a.height,a.prevHeight+o)}else{a.currentWidth=g;a.prevHeight=a.height;a.height+=o;a.attempt=0}a.width=Math.max(a.width,a.currentWidth);break;case"rl-row":case"row":{a.children.push(t);a.width+=g;a.height=Math.max(a.height,o);const e=measureToString(a.height);for(const t of a.children)t.attributes.style.height=e;break}case"table":case"tb":a.width=Math.min(s.width,Math.max(a.width,g));a.height+=o;a.children.push(t)}}function getAvailableSpace(e){const t=e[Xs].availableSpace,i=e.margin?e.margin.topInset+e.margin.bottomInset:0,a=e.margin?e.margin.leftInset+e.margin.rightInset:0;switch(e.layout){case"lr-tb":case"rl-tb":return 0===e[Xs].attempt?{width:t.width-a-e[Xs].currentWidth,height:t.height-i-e[Xs].prevHeight}:{width:t.width-a,height:t.height-i-e[Xs].height};case"rl-row":case"row":return{width:e[Xs].columnWidths.slice(e[Xs].currentColumn).reduce(((e,t)=>e+t)),height:t.height-a};case"table":case"tb":return{width:t.width-a,height:t.height-i-e[Xs].height};default:return t}}function checkDimensions(e,t){if(null===e[cr]()[Xs].firstUnsplittable)return!0;if(0===e.w||0===e.h)return!0;const i=e[or](),a=i[Xs]?.attempt||0,[,s,r,n]=function getTransformedBBox(e){let t,i,a=""===e.w?NaN:e.w,s=""===e.h?NaN:e.h,[r,n]=[0,0];switch(e.anchorType||""){case"bottomCenter":[r,n]=[a/2,s];break;case"bottomLeft":[r,n]=[0,s];break;case"bottomRight":[r,n]=[a,s];break;case"middleCenter":[r,n]=[a/2,s/2];break;case"middleLeft":[r,n]=[0,s/2];break;case"middleRight":[r,n]=[a,s/2];break;case"topCenter":[r,n]=[a/2,0];break;case"topRight":[r,n]=[a,0]}switch(e.rotate||0){case 0:[t,i]=[-r,-n];break;case 90:[t,i]=[-n,r];[a,s]=[s,-a];break;case 180:[t,i]=[r,n];[a,s]=[-a,-s];break;case 270:[t,i]=[n,-r];[a,s]=[-s,a]}return[e.x+t+Math.min(0,a),e.y+i+Math.min(0,s),Math.abs(a),Math.abs(s)]}(e);switch(i.layout){case"lr-tb":case"rl-tb":return 0===a?e[cr]()[Xs].noLayoutFailure?""!==e.w?Math.round(r-t.width)<=2:t.width>2:!(""!==e.h&&Math.round(n-t.height)>2)&&(""!==e.w?Math.round(r-t.width)<=2||0===i[Xs].numberInLine&&t.height>2:t.width>2):!!e[cr]()[Xs].noLayoutFailure||!(""!==e.h&&Math.round(n-t.height)>2)&&((""===e.w||Math.round(r-t.width)<=2||!i[wr]())&&t.height>2);case"table":case"tb":return!!e[cr]()[Xs].noLayoutFailure||(""===e.h||e[yr]()?(""===e.w||Math.round(r-t.width)<=2||!i[wr]())&&t.height>2:Math.round(n-t.height)<=2);case"position":if(e[cr]()[Xs].noLayoutFailure)return!0;if(""===e.h||Math.round(n+s-t.height)<=2)return!0;return n+s>e[cr]()[Xs].currentContentArea.h;case"rl-row":case"row":return!!e[cr]()[Xs].noLayoutFailure||(""===e.h||Math.round(n-t.height)<=2);default:return!0}}const Nn=_r.template.id,Gn="http://www.w3.org/2000/svg",Mn=/^H(\d+)$/,Un=new Set(["image/gif","image/jpeg","image/jpg","image/pjpeg","image/png","image/apng","image/x-png","image/bmp","image/x-ms-bmp","image/tiff","image/tif","application/octet-stream"]),xn=[[[66,77],"image/bmp"],[[255,216,255],"image/jpeg"],[[73,73,42,0],"image/tiff"],[[77,77,0,42],"image/tiff"],[[71,73,70,56,57,97],"image/gif"],[[137,80,78,71,13,10,26,10],"image/png"]];function getBorderDims(e){if(!e||!e.border)return{w:0,h:0};const t=e.border[ar]();return t?{w:t.widths[0]+t.widths[2]+t.insets[0]+t.insets[2],h:t.widths[1]+t.widths[3]+t.insets[1]+t.insets[3]}:{w:0,h:0}}function hasMargin(e){return e.margin&&(e.margin.topInset||e.margin.rightInset||e.margin.bottomInset||e.margin.leftInset)}function _setValue(e,t){if(!e.value){const t=new Value({});e[Hs](t);e.value=t}e.value[qr](t)}function*getContainedChildren(e){for(const t of e[rr]())t instanceof SubformSet?yield*t[nr]():yield t}function isRequired(e){return"error"===e.validate?.nullTest}function setTabIndex(e){for(;e;){if(!e.traversal){e[Or]=e[Ir]()[Or];return}if(e[Or])return;let t=null;for(const i of e.traversal[rr]())if("next"===i.operation){t=i;break}if(!t||!t.ref){e[Or]=e[Ir]()[Or];return}const i=e[cr]();e[Or]=++i[Or];const a=i[vr](t.ref,e);if(!a)return;e=a[0]}}function applyAssist(e,t){const i=e.assist;if(i){const e=i[jr]();e&&(t.title=e);const a=i.role.match(Mn);if(a){const e="heading",i=a[1];t.role=e;t["aria-level"]=i}}if("table"===e.layout)t.role="table";else if("row"===e.layout)t.role="row";else{const i=e[Ir]();"row"===i.layout&&(t.role="TH"===i.assist?.role?"columnheader":"cell")}}function ariaLabel(e){if(!e.assist)return null;const t=e.assist;return t.speak&&""!==t.speak[Os]?t.speak[Os]:t.toolTip?t.toolTip[Os]:null}function valueToHtml(e){return HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:Object.create(null)},children:[{name:"span",attributes:{style:Object.create(null)},value:e}]})}function setFirstUnsplittable(e){const t=e[cr]();if(null===t[Xs].firstUnsplittable){t[Xs].firstUnsplittable=e;t[Xs].noLayoutFailure=!0}}function unsetFirstUnsplittable(e){const t=e[cr]();t[Xs].firstUnsplittable===e&&(t[Xs].noLayoutFailure=!1)}function handleBreak(e){if(e[Xs])return!1;e[Xs]=Object.create(null);if("auto"===e.targetType)return!1;const t=e[cr]();let i=null;if(e.target){i=t[vr](e.target,e[Ir]());if(!i)return!1;i=i[0]}const{currentPageArea:a,currentContentArea:s}=t[Xs];if("pageArea"===e.targetType){i instanceof PageArea||(i=null);if(e.startNew){e[Xs].target=i||a;return!0}if(i&&i!==a){e[Xs].target=i;return!0}return!1}i instanceof ContentArea||(i=null);const r=i&&i[Ir]();let n,g=r;if(e.startNew)if(i){const e=r.contentArea.children,t=e.indexOf(s),a=e.indexOf(i);-1!==t&&te;a[Xs].noLayoutFailure=!0;const n=t[jr](i);e[Ls](n.html,n.bbox);a[Xs].noLayoutFailure=s;t[or]=r}class AppearanceFilter extends StringObject{constructor(e){super(Nn,"appearanceFilter");this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Arc extends XFAObject{constructor(e){super(Nn,"arc",!0);this.circular=getInteger({data:e.circular,defaultValue:0,validate:e=>1===e});this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.startAngle=getFloat({data:e.startAngle,defaultValue:0,validate:e=>!0});this.sweepAngle=getFloat({data:e.sweepAngle,defaultValue:360,validate:e=>!0});this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null;this.fill=null}[jr](){const e=this.edge||new Edge({}),t=e[Zr](),i=Object.create(null);"visible"===this.fill?.presence?Object.assign(i,this.fill[Zr]()):i.fill="transparent";i.strokeWidth=measureToString("visible"===e.presence?e.thickness:0);i.stroke=t.color;let a;const s={xmlns:Gn,style:{width:"100%",height:"100%",overflow:"visible"}};if(360===this.sweepAngle)a={name:"ellipse",attributes:{xmlns:Gn,cx:"50%",cy:"50%",rx:"50%",ry:"50%",style:i}};else{const e=this.startAngle*Math.PI/180,t=this.sweepAngle*Math.PI/180,r=this.sweepAngle>180?1:0,[n,g,o,c]=[50*(1+Math.cos(e)),50*(1-Math.sin(e)),50*(1+Math.cos(e+t)),50*(1-Math.sin(e+t))];a={name:"path",attributes:{xmlns:Gn,d:`M ${n} ${g} A 50 50 0 ${r} 0 ${o} ${c}`,vectorEffect:"non-scaling-stroke",style:i}};Object.assign(s,{viewBox:"0 0 100 100",preserveAspectRatio:"none"})}const r={name:"svg",children:[a],attributes:s};if(hasMargin(this[Ir]()[Ir]()))return HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[r]});r.attributes.style.position="absolute";return HTMLResult.success(r)}}class Area extends XFAObject{constructor(e){super(Nn,"area",!0);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.id=e.id||"";this.name=e.name||"";this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.desc=null;this.extras=null;this.area=new XFAObjectArray;this.draw=new XFAObjectArray;this.exObject=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.field=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray}*[nr](){yield*getContainedChildren(this)}[Dr](){return!0}[dr](){return!0}[Ls](e,t){const[i,a,s,r]=t;this[Xs].width=Math.max(this[Xs].width,i+s);this[Xs].height=Math.max(this[Xs].height,a+r);this[Xs].children.push(e)}[$s](){return this[Xs].availableSpace}[jr](e){const t=toStyle(this,"position"),i={style:t,id:this[Vr],class:["xfaArea"]};isPrintOnly(this)&&i.class.push("xfaPrintOnly");this.name&&(i.xfaName=this.name);const a=[];this[Xs]={children:a,width:0,height:0,availableSpace:e};const s=this[Js]({filter:new Set(["area","draw","field","exclGroup","subform","subformSet"]),include:!0});if(!s.success){if(s.isBreak())return s;delete this[Xs];return HTMLResult.FAILURE}t.width=measureToString(this[Xs].width);t.height=measureToString(this[Xs].height);const r={name:"div",attributes:i,children:a},n=[this.x,this.y,this[Xs].width,this[Xs].height];delete this[Xs];return HTMLResult.success(r,n)}}class Assist extends XFAObject{constructor(e){super(Nn,"assist",!0);this.id=e.id||"";this.role=e.role||"";this.use=e.use||"";this.usehref=e.usehref||"";this.speak=null;this.toolTip=null}[jr](){return this.toolTip?.[Os]||null}}class Barcode extends XFAObject{constructor(e){super(Nn,"barcode",!0);this.charEncoding=getKeyword({data:e.charEncoding?e.charEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\d{2}/)});this.checksum=getStringOption(e.checksum,["none","1mod10","1mod10_1mod11","2mod10","auto"]);this.dataColumnCount=getInteger({data:e.dataColumnCount,defaultValue:-1,validate:e=>e>=0});this.dataLength=getInteger({data:e.dataLength,defaultValue:-1,validate:e=>e>=0});this.dataPrep=getStringOption(e.dataPrep,["none","flateCompress"]);this.dataRowCount=getInteger({data:e.dataRowCount,defaultValue:-1,validate:e=>e>=0});this.endChar=e.endChar||"";this.errorCorrectionLevel=getInteger({data:e.errorCorrectionLevel,defaultValue:-1,validate:e=>e>=0&&e<=8});this.id=e.id||"";this.moduleHeight=getMeasurement(e.moduleHeight,"5mm");this.moduleWidth=getMeasurement(e.moduleWidth,"0.25mm");this.printCheckDigit=getInteger({data:e.printCheckDigit,defaultValue:0,validate:e=>1===e});this.rowColumnRatio=getRatio(e.rowColumnRatio);this.startChar=e.startChar||"";this.textLocation=getStringOption(e.textLocation,["below","above","aboveEmbedded","belowEmbedded","none"]);this.truncate=getInteger({data:e.truncate,defaultValue:0,validate:e=>1===e});this.type=getStringOption(e.type?e.type.toLowerCase():"",["aztec","codabar","code2of5industrial","code2of5interleaved","code2of5matrix","code2of5standard","code3of9","code3of9extended","code11","code49","code93","code128","code128a","code128b","code128c","code128sscc","datamatrix","ean8","ean8add2","ean8add5","ean13","ean13add2","ean13add5","ean13pwcd","fim","logmars","maxicode","msi","pdf417","pdf417macro","plessey","postauscust2","postauscust3","postausreplypaid","postausstandard","postukrm4scc","postusdpbc","postusimb","postusstandard","postus5zip","qrcode","rfid","rss14","rss14expanded","rss14limited","rss14stacked","rss14stackedomni","rss14truncated","telepen","ucc128","ucc128random","ucc128sscc","upca","upcaadd2","upcaadd5","upcapwcd","upce","upceadd2","upceadd5","upcean2","upcean5","upsmaxicode"]);this.upsMode=getStringOption(e.upsMode,["usCarrier","internationalCarrier","secureSymbol","standardSymbol"]);this.use=e.use||"";this.usehref=e.usehref||"";this.wideNarrowRatio=getRatio(e.wideNarrowRatio);this.encrypt=null;this.extras=null}}class Bind extends XFAObject{constructor(e){super(Nn,"bind",!0);this.match=getStringOption(e.match,["once","dataRef","global","none"]);this.ref=e.ref||"";this.picture=null}}class BindItems extends XFAObject{constructor(e){super(Nn,"bindItems");this.connection=e.connection||"";this.labelRef=e.labelRef||"";this.ref=e.ref||"";this.valueRef=e.valueRef||""}}class Bookend extends XFAObject{constructor(e){super(Nn,"bookend");this.id=e.id||"";this.leader=e.leader||"";this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||""}}class BooleanElement extends Option01{constructor(e){super(Nn,"boolean");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[jr](e){return valueToHtml(1===this[Os]?"1":"0")}}class Border extends XFAObject{constructor(e){super(Nn,"border",!0);this.break=getStringOption(e.break,["close","open"]);this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new XFAObjectArray(4);this.edge=new XFAObjectArray(4);this.extras=null;this.fill=null;this.margin=null}[ar](){if(!this[Xs]){const e=this.edge.children.slice();if(e.length<4){const t=e.at(-1)||new Edge({});for(let i=e.length;i<4;i++)e.push(t)}const t=e.map((e=>e.thickness)),i=[0,0,0,0];if(this.margin){i[0]=this.margin.topInset;i[1]=this.margin.rightInset;i[2]=this.margin.bottomInset;i[3]=this.margin.leftInset}this[Xs]={widths:t,insets:i,edges:e}}return this[Xs]}[Zr](){const{edges:e}=this[ar](),t=e.map((e=>{const t=e[Zr]();t.color||="#000000";return t})),i=Object.create(null);this.margin&&Object.assign(i,this.margin[Zr]());"visible"===this.fill?.presence&&Object.assign(i,this.fill[Zr]());if(this.corner.children.some((e=>0!==e.radius))){const e=this.corner.children.map((e=>e[Zr]()));if(2===e.length||3===e.length){const t=e.at(-1);for(let i=e.length;i<4;i++)e.push(t)}i.borderRadius=e.map((e=>e.radius)).join(" ")}switch(this.presence){case"invisible":case"hidden":i.borderStyle="";break;case"inactive":i.borderStyle="none";break;default:i.borderStyle=t.map((e=>e.style)).join(" ")}i.borderWidth=t.map((e=>e.width)).join(" ");i.borderColor=t.map((e=>e.color)).join(" ");return i}}class Break extends XFAObject{constructor(e){super(Nn,"break",!0);this.after=getStringOption(e.after,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.afterTarget=e.afterTarget||"";this.before=getStringOption(e.before,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.beforeTarget=e.beforeTarget||"";this.bookendLeader=e.bookendLeader||"";this.bookendTrailer=e.bookendTrailer||"";this.id=e.id||"";this.overflowLeader=e.overflowLeader||"";this.overflowTarget=e.overflowTarget||"";this.overflowTrailer=e.overflowTrailer||"";this.startNew=getInteger({data:e.startNew,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class BreakAfter extends XFAObject{constructor(e){super(Nn,"breakAfter",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=getInteger({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=getStringOption(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}}class BreakBefore extends XFAObject{constructor(e){super(Nn,"breakBefore",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=getInteger({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=getStringOption(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}[jr](e){this[Xs]={};return HTMLResult.FAILURE}}class Button extends XFAObject{constructor(e){super(Nn,"button",!0);this.highlight=getStringOption(e.highlight,["inverted","none","outline","push"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[jr](e){const t=this[Ir]()[Ir](),i={name:"button",attributes:{id:this[Vr],class:["xfaButton"],style:{}},children:[]};for(const e of t.event.children){if("click"!==e.activity||!e.script)continue;const t=recoverJsURL(e.script[Os]);if(!t)continue;const a=fixURL(t.url);a&&i.children.push({name:"a",attributes:{id:"link"+this[Vr],href:a,newWindow:t.newWindow,class:["xfaLink"],style:{}},children:[]})}return HTMLResult.success(i)}}class Calculate extends XFAObject{constructor(e){super(Nn,"calculate",!0);this.id=e.id||"";this.override=getStringOption(e.override,["disabled","error","ignore","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.script=null}}class Caption extends XFAObject{constructor(e){super(Nn,"caption",!0);this.id=e.id||"";this.placement=getStringOption(e.placement,["left","bottom","inline","right","top"]);this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.reserve=Math.ceil(getMeasurement(e.reserve));this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.font=null;this.margin=null;this.para=null;this.value=null}[qr](e){_setValue(this,e)}[ar](e){if(!this[Xs]){let{width:t,height:i}=e;switch(this.placement){case"left":case"right":case"inline":t=this.reserve<=0?t:this.reserve;break;case"top":case"bottom":i=this.reserve<=0?i:this.reserve}this[Xs]=layoutNode(this,{width:t,height:i})}return this[Xs]}[jr](e){if(!this.value)return HTMLResult.EMPTY;this[Lr]();const t=this.value[jr](e).html;if(!t){this[xr]();return HTMLResult.EMPTY}const i=this.reserve;if(this.reserve<=0){const{w:t,h:i}=this[ar](e);switch(this.placement){case"left":case"right":case"inline":this.reserve=t;break;case"top":case"bottom":this.reserve=i}}const a=[];"string"==typeof t?a.push({name:"#text",value:t}):a.push(t);const s=toStyle(this,"font","margin","visibility");switch(this.placement){case"left":case"right":this.reserve>0&&(s.width=measureToString(this.reserve));break;case"top":case"bottom":this.reserve>0&&(s.height=measureToString(this.reserve))}setPara(this,null,t);this[xr]();this.reserve=i;return HTMLResult.success({name:"div",attributes:{style:s,class:["xfaCaption"]},children:a})}}class Certificate extends StringObject{constructor(e){super(Nn,"certificate");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Certificates extends XFAObject{constructor(e){super(Nn,"certificates",!0);this.credentialServerPolicy=getStringOption(e.credentialServerPolicy,["optional","required"]);this.id=e.id||"";this.url=e.url||"";this.urlPolicy=e.urlPolicy||"";this.use=e.use||"";this.usehref=e.usehref||"";this.encryption=null;this.issuers=null;this.keyUsage=null;this.oids=null;this.signing=null;this.subjectDNs=null}}class CheckButton extends XFAObject{constructor(e){super(Nn,"checkButton",!0);this.id=e.id||"";this.mark=getStringOption(e.mark,["default","check","circle","cross","diamond","square","star"]);this.shape=getStringOption(e.shape,["square","round"]);this.size=getMeasurement(e.size,"10pt");this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[jr](e){const t=toStyle("margin"),i=measureToString(this.size);t.width=t.height=i;let a,s,r;const n=this[Ir]()[Ir](),g=n.items.children.length&&n.items.children[0][jr]().html||[],o={on:(void 0!==g[0]?g[0]:"on").toString(),off:(void 0!==g[1]?g[1]:"off").toString()},c=(n.value?.[Pr]()||"off")===o.on||void 0,C=n[or](),h=n[Vr];let l;if(C instanceof ExclGroup){r=C[Vr];a="radio";s="xfaRadio";l=C[Ws]?.[Vr]||C[Vr]}else{a="checkbox";s="xfaCheckbox";l=n[Ws]?.[Vr]||n[Vr]}const Q={name:"input",attributes:{class:[s],style:t,fieldId:h,dataId:l,type:a,checked:c,xfaOn:o.on,xfaOff:o.off,"aria-label":ariaLabel(n),"aria-required":!1}};r&&(Q.attributes.name=r);if(isRequired(n)){Q.attributes["aria-required"]=!0;Q.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[Q]})}}class ChoiceList extends XFAObject{constructor(e){super(Nn,"choiceList",!0);this.commitOn=getStringOption(e.commitOn,["select","exit"]);this.id=e.id||"";this.open=getStringOption(e.open,["userControl","always","multiSelect","onEntry"]);this.textEntry=getInteger({data:e.textEntry,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[jr](e){const t=toStyle(this,"border","margin"),i=this[Ir]()[Ir](),a={fontSize:`calc(${i.font?.size||10}px * var(--scale-factor))`},s=[];if(i.items.children.length>0){const e=i.items;let t=0,r=0;if(2===e.children.length){t=e.children[0].save;r=1-t}const n=e.children[t][jr]().html,g=e.children[r][jr]().html;let o=!1;const c=i.value?.[Pr]()||"";for(let e=0,t=n.length;eMath.min(Math.max(0,parseInt(e.trim(),10)),255))).map((e=>isNaN(e)?0:e));if(r.length<3)return{r:i,g:a,b:s};[i,a,s]=r;return{r:i,g:a,b:s}}(e.value):"";this.extras=null}[hr](){return!1}[Zr](){return this.value?Util.makeHexColor(this.value.r,this.value.g,this.value.b):null}}class Comb extends XFAObject{constructor(e){super(Nn,"comb");this.id=e.id||"";this.numberOfCells=getInteger({data:e.numberOfCells,defaultValue:0,validate:e=>e>=0});this.use=e.use||"";this.usehref=e.usehref||""}}class Connect extends XFAObject{constructor(e){super(Nn,"connect",!0);this.connection=e.connection||"";this.id=e.id||"";this.ref=e.ref||"";this.usage=getStringOption(e.usage,["exportAndImport","exportOnly","importOnly"]);this.use=e.use||"";this.usehref=e.usehref||"";this.picture=null}}class ContentArea extends XFAObject{constructor(e){super(Nn,"contentArea",!0);this.h=getMeasurement(e.h);this.id=e.id||"";this.name=e.name||"";this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=getMeasurement(e.w);this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.desc=null;this.extras=null}[jr](e){const t={left:measureToString(this.x),top:measureToString(this.y),width:measureToString(this.w),height:measureToString(this.h)},i=["xfaContentarea"];isPrintOnly(this)&&i.push("xfaPrintOnly");return HTMLResult.success({name:"div",children:[],attributes:{style:t,class:i,id:this[Vr]}})}}class Corner extends XFAObject{constructor(e){super(Nn,"corner",!0);this.id=e.id||"";this.inverted=getInteger({data:e.inverted,defaultValue:0,validate:e=>1===e});this.join=getStringOption(e.join,["square","round"]);this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.radius=getMeasurement(e.radius);this.stroke=getStringOption(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=getMeasurement(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[Zr](){const e=toStyle(this,"visibility");e.radius=measureToString("square"===this.join?0:this.radius);return e}}class DateElement extends ContentObject{constructor(e){super(Nn,"date");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Zs](){const e=this[Os].trim();this[Os]=e?new Date(e):null}[jr](e){return valueToHtml(this[Os]?this[Os].toString():"")}}class DateTime extends ContentObject{constructor(e){super(Nn,"dateTime");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Zs](){const e=this[Os].trim();this[Os]=e?new Date(e):null}[jr](e){return valueToHtml(this[Os]?this[Os].toString():"")}}class DateTimeEdit extends XFAObject{constructor(e){super(Nn,"dateTimeEdit",!0);this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.picker=getStringOption(e.picker,["host","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[jr](e){const t=toStyle(this,"border","font","margin"),i=this[Ir]()[Ir](),a={name:"input",attributes:{type:"text",fieldId:i[Vr],dataId:i[Ws]?.[Vr]||i[Vr],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(i),"aria-required":!1}};if(isRequired(i)){a.attributes["aria-required"]=!0;a.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}class Decimal extends ContentObject{constructor(e){super(Nn,"decimal");this.fracDigits=getInteger({data:e.fracDigits,defaultValue:2,validate:e=>!0});this.id=e.id||"";this.leadDigits=getInteger({data:e.leadDigits,defaultValue:-1,validate:e=>!0});this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Zs](){const e=parseFloat(this[Os].trim());this[Os]=isNaN(e)?null:e}[jr](e){return valueToHtml(null!==this[Os]?this[Os].toString():"")}}class DefaultUi extends XFAObject{constructor(e){super(Nn,"defaultUi",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class Desc extends XFAObject{constructor(e){super(Nn,"desc",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}}class DigestMethod extends OptionObject{constructor(e){super(Nn,"digestMethod",["","SHA1","SHA256","SHA512","RIPEMD160"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class DigestMethods extends XFAObject{constructor(e){super(Nn,"digestMethods",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.digestMethod=new XFAObjectArray}}class Draw extends XFAObject{constructor(e){super(Nn,"draw",!0);this.anchorType=getStringOption(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.rotate=getInteger({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.border=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.value=null;this.setProperty=new XFAObjectArray}[qr](e){_setValue(this,e)}[jr](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence)return HTMLResult.EMPTY;fixDimensions(this);this[Lr]();const t=this.w,i=this.h,{w:a,h:s,isBroken:r}=layoutNode(this,e);if(a&&""===this.w){if(r&&this[or]()[wr]()){this[xr]();return HTMLResult.FAILURE}this.w=a}s&&""===this.h&&(this.h=s);setFirstUnsplittable(this);if(!checkDimensions(this,e)){this.w=t;this.h=i;this[xr]();return HTMLResult.FAILURE}unsetFirstUnsplittable(this);const n=toStyle(this,"font","hAlign","dimensions","position","presence","rotate","anchorType","border","margin");setMinMaxDimensions(this,n);if(n.margin){n.padding=n.margin;delete n.margin}const g=["xfaDraw"];this.font&&g.push("xfaFont");isPrintOnly(this)&&g.push("xfaPrintOnly");const o={style:n,id:this[Vr],class:g};this.name&&(o.xfaName=this.name);const c={name:"div",attributes:o,children:[]};applyAssist(this,o);const C=computeBbox(this,c,e),h=this.value?this.value[jr](e).html:null;if(null===h){this.w=t;this.h=i;this[xr]();return HTMLResult.success(createWrapper(this,c),C)}c.children.push(h);setPara(this,n,h);this.w=t;this.h=i;this[xr]();return HTMLResult.success(createWrapper(this,c),C)}}class Edge extends XFAObject{constructor(e){super(Nn,"edge",!0);this.cap=getStringOption(e.cap,["square","butt","round"]);this.id=e.id||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.stroke=getStringOption(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=getMeasurement(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[Zr](){const e=toStyle(this,"visibility");Object.assign(e,{linecap:this.cap,width:measureToString(this.thickness),color:this.color?this.color[Zr]():"#000000",style:""});if("visible"!==this.presence)e.style="none";else switch(this.stroke){case"solid":e.style="solid";break;case"dashDot":case"dashDotDot":case"dashed":e.style="dashed";break;case"dotted":e.style="dotted";break;case"embossed":e.style="ridge";break;case"etched":e.style="groove";break;case"lowered":e.style="inset";break;case"raised":e.style="outset"}return e}}class Encoding extends OptionObject{constructor(e){super(Nn,"encoding",["adbe.x509.rsa_sha1","adbe.pkcs7.detached","adbe.pkcs7.sha1"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Encodings extends XFAObject{constructor(e){super(Nn,"encodings",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encoding=new XFAObjectArray}}class Encrypt extends XFAObject{constructor(e){super(Nn,"encrypt",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=null}}class EncryptData extends XFAObject{constructor(e){super(Nn,"encryptData",!0);this.id=e.id||"";this.operation=getStringOption(e.operation,["encrypt","decrypt"]);this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Encryption extends XFAObject{constructor(e){super(Nn,"encryption",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new XFAObjectArray}}class EncryptionMethod extends OptionObject{constructor(e){super(Nn,"encryptionMethod",["","AES256-CBC","TRIPLEDES-CBC","AES128-CBC","AES192-CBC"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EncryptionMethods extends XFAObject{constructor(e){super(Nn,"encryptionMethods",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encryptionMethod=new XFAObjectArray}}class Event extends XFAObject{constructor(e){super(Nn,"event",!0);this.activity=getStringOption(e.activity,["click","change","docClose","docReady","enter","exit","full","indexChange","initialize","mouseDown","mouseEnter","mouseExit","mouseUp","postExecute","postOpen","postPrint","postSave","postSign","postSubmit","preExecute","preOpen","prePrint","preSave","preSign","preSubmit","ready","validationState"]);this.id=e.id||"";this.listen=getStringOption(e.listen,["refOnly","refAndDescendents"]);this.name=e.name||"";this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.encryptData=null;this.execute=null;this.script=null;this.signData=null;this.submit=null}}class ExData extends ContentObject{constructor(e){super(Nn,"exData");this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.maxLength=getInteger({data:e.maxLength,defaultValue:-1,validate:e=>e>=-1});this.name=e.name||"";this.rid=e.rid||"";this.transferEncoding=getStringOption(e.transferEncoding,["none","base64","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[ur](){return"text/html"===this.contentType}[Nr](e){if("text/html"===this.contentType&&e[Sr]===_r.xhtml.id){this[Os]=e;return!0}if("text/xml"===this.contentType){this[Os]=e;return!0}return!1}[jr](e){return"text/html"===this.contentType&&this[Os]?this[Os][jr](e):HTMLResult.EMPTY}}class ExObject extends XFAObject{constructor(e){super(Nn,"exObject",!0);this.archive=e.archive||"";this.classId=e.classId||"";this.codeBase=e.codeBase||"";this.codeType=e.codeType||"";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.exObject=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}}class ExclGroup extends XFAObject{constructor(e){super(Nn,"exclGroup",!0);this.access=getStringOption(e.access,["open","nonInteractive","protected","readOnly"]);this.accessKey=e.accessKey||"";this.anchorType=getStringOption(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=getStringOption(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.margin=null;this.para=null;this.traversal=null;this.validate=null;this.connect=new XFAObjectArray;this.event=new XFAObjectArray;this.field=new XFAObjectArray;this.setProperty=new XFAObjectArray}[dr](){return!0}[hr](){return!0}[qr](e){for(const t of this.field.children){if(!t.value){const e=new Value({});t[Hs](e);t.value=e}t.value[qr](e)}}[wr](){return this.layout.endsWith("-tb")&&0===this[Xs].attempt&&this[Xs].numberInLine>0||this[Ir]()[wr]()}[yr](){const e=this[or]();if(!e[yr]())return!1;if(void 0!==this[Xs]._isSplittable)return this[Xs]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[Xs]._isSplittable=!1;return!1}if(e.layout?.endsWith("-tb")&&0!==e[Xs].numberInLine)return!1;this[Xs]._isSplittable=!0;return!0}[Vs](){return flushHTML(this)}[Ls](e,t){addHTML(this,e,t)}[$s](){return getAvailableSpace(this)}[jr](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return HTMLResult.EMPTY;fixDimensions(this);const t=[],i={id:this[Vr],class:[]};setAccess(this,i.class);this[Xs]||(this[Xs]=Object.create(null));Object.assign(this[Xs],{children:t,attributes:i,attempt:0,line:null,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const a=this[yr]();a||setFirstUnsplittable(this);if(!checkDimensions(this,e))return HTMLResult.FAILURE;const s=new Set(["field"]);if(this.layout.includes("row")){const e=this[or]().columnWidths;if(Array.isArray(e)&&e.length>0){this[Xs].columnWidths=e;this[Xs].currentColumn=0}}const r=toStyle(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),n=["xfaExclgroup"],g=layoutClass(this);g&&n.push(g);isPrintOnly(this)&&n.push("xfaPrintOnly");i.style=r;i.class=n;this.name&&(i.xfaName=this.name);this[Lr]();const o="lr-tb"===this.layout||"rl-tb"===this.layout,c=o?2:1;for(;this[Xs].attempte>=1||-1===e});this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.rotate=getInteger({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.format=null;this.items=new XFAObjectArray(2);this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.validate=null;this.value=null;this.bindItems=new XFAObjectArray;this.connect=new XFAObjectArray;this.event=new XFAObjectArray;this.setProperty=new XFAObjectArray}[dr](){return!0}[qr](e){_setValue(this,e)}[jr](e){setTabIndex(this);if(!this.ui){this.ui=new Ui({});this.ui[Cr]=this[Cr];this[Hs](this.ui);let e;switch(this.items.children.length){case 0:e=new TextEdit({});this.ui.textEdit=e;break;case 1:e=new CheckButton({});this.ui.checkButton=e;break;case 2:e=new ChoiceList({});this.ui.choiceList=e}this.ui[Hs](e)}if(!this.ui||"hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return HTMLResult.EMPTY;this.caption&&delete this.caption[Xs];this[Lr]();const t=this.caption?this.caption[jr](e).html:null,i=this.w,a=this.h;let s=0,r=0;if(this.margin){s=this.margin.leftInset+this.margin.rightInset;r=this.margin.topInset+this.margin.bottomInset}let n=null;if(""===this.w||""===this.h){let t=null,i=null,a=0,g=0;if(this.ui.checkButton)a=g=this.ui.checkButton.size;else{const{w:t,h:i}=layoutNode(this,e);if(null!==t){a=t;g=i}else g=function fonts_getMetrics(e,t=!1){let i=null;if(e){const t=stripQuotes(e.typeface),a=e[Cr].fontFinder.find(t);i=selectFont(e,a)}if(!i)return{lineHeight:12,lineGap:2,lineNoGap:10};const a=e.size||10,s=i.lineHeight?Math.max(t?0:1.2,i.lineHeight):1.2,r=void 0===i.lineGap?.2:i.lineGap;return{lineHeight:s*a,lineGap:r*a,lineNoGap:Math.max(1,s-r)*a}}(this.font,!0).lineNoGap}n=getBorderDims(this.ui[ar]());a+=n.w;g+=n.h;if(this.caption){const{w:s,h:r,isBroken:n}=this.caption[ar](e);if(n&&this[or]()[wr]()){this[xr]();return HTMLResult.FAILURE}t=s;i=r;switch(this.caption.placement){case"left":case"right":case"inline":t+=a;break;case"top":case"bottom":i+=g}}else{t=a;i=g}if(t&&""===this.w){t+=s;this.w=Math.min(this.maxW<=0?1/0:this.maxW,this.minW+1e>=1&&e<=5});this.appearanceFilter=null;this.certificates=null;this.digestMethods=null;this.encodings=null;this.encryptionMethods=null;this.handler=null;this.lockDocument=null;this.mdp=null;this.reasons=null;this.timeStamp=null}}class Float extends ContentObject{constructor(e){super(Nn,"float");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Zs](){const e=parseFloat(this[Os].trim());this[Os]=isNaN(e)?null:e}[jr](e){return valueToHtml(null!==this[Os]?this[Os].toString():"")}}class template_Font extends XFAObject{constructor(e){super(Nn,"font",!0);this.baselineShift=getMeasurement(e.baselineShift);this.fontHorizontalScale=getFloat({data:e.fontHorizontalScale,defaultValue:100,validate:e=>e>=0});this.fontVerticalScale=getFloat({data:e.fontVerticalScale,defaultValue:100,validate:e=>e>=0});this.id=e.id||"";this.kerningMode=getStringOption(e.kerningMode,["none","pair"]);this.letterSpacing=getMeasurement(e.letterSpacing,"0");this.lineThrough=getInteger({data:e.lineThrough,defaultValue:0,validate:e=>1===e||2===e});this.lineThroughPeriod=getStringOption(e.lineThroughPeriod,["all","word"]);this.overline=getInteger({data:e.overline,defaultValue:0,validate:e=>1===e||2===e});this.overlinePeriod=getStringOption(e.overlinePeriod,["all","word"]);this.posture=getStringOption(e.posture,["normal","italic"]);this.size=getMeasurement(e.size,"10pt");this.typeface=e.typeface||"Courier";this.underline=getInteger({data:e.underline,defaultValue:0,validate:e=>1===e||2===e});this.underlinePeriod=getStringOption(e.underlinePeriod,["all","word"]);this.use=e.use||"";this.usehref=e.usehref||"";this.weight=getStringOption(e.weight,["normal","bold"]);this.extras=null;this.fill=null}[Ys](e){super[Ys](e);this[Cr].usedTypefaces.add(this.typeface)}[Zr](){const e=toStyle(this,"fill"),t=e.color;if(t)if("#000000"===t)delete e.color;else if(!t.startsWith("#")){e.background=t;e.backgroundClip="text";e.color="transparent"}this.baselineShift&&(e.verticalAlign=measureToString(this.baselineShift));e.fontKerning="none"===this.kerningMode?"none":"normal";e.letterSpacing=measureToString(this.letterSpacing);if(0!==this.lineThrough){e.textDecoration="line-through";2===this.lineThrough&&(e.textDecorationStyle="double")}if(0!==this.overline){e.textDecoration="overline";2===this.overline&&(e.textDecorationStyle="double")}e.fontStyle=this.posture;e.fontSize=measureToString(.99*this.size);setFontFamily(this,this,this[Cr].fontFinder,e);if(0!==this.underline){e.textDecoration="underline";2===this.underline&&(e.textDecorationStyle="double")}e.fontWeight=this.weight;return e}}class Format extends XFAObject{constructor(e){super(Nn,"format",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.picture=null}}class Handler extends StringObject{constructor(e){super(Nn,"handler");this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Hyphenation extends XFAObject{constructor(e){super(Nn,"hyphenation");this.excludeAllCaps=getInteger({data:e.excludeAllCaps,defaultValue:0,validate:e=>1===e});this.excludeInitialCap=getInteger({data:e.excludeInitialCap,defaultValue:0,validate:e=>1===e});this.hyphenate=getInteger({data:e.hyphenate,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.pushCharacterCount=getInteger({data:e.pushCharacterCount,defaultValue:3,validate:e=>e>=0});this.remainCharacterCount=getInteger({data:e.remainCharacterCount,defaultValue:3,validate:e=>e>=0});this.use=e.use||"";this.usehref=e.usehref||"";this.wordCharacterCount=getInteger({data:e.wordCharacterCount,defaultValue:7,validate:e=>e>=0})}}class Image extends StringObject{constructor(e){super(Nn,"image");this.aspect=getStringOption(e.aspect,["fit","actual","height","none","width"]);this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.name=e.name||"";this.transferEncoding=getStringOption(e.transferEncoding,["base64","none","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[jr](){if(this.contentType&&!Un.has(this.contentType.toLowerCase()))return HTMLResult.EMPTY;let e=this[Cr].images&&this[Cr].images.get(this.href);if(!e&&(this.href||!this[Os]))return HTMLResult.EMPTY;e||"base64"!==this.transferEncoding||(e=function fromBase64Util(e){return Uint8Array.fromBase64?Uint8Array.fromBase64(e):stringToBytes(atob(e))}(this[Os]));if(!e)return HTMLResult.EMPTY;if(!this.contentType){for(const[t,i]of xn)if(e.length>t.length&&t.every(((t,i)=>t===e[i]))){this.contentType=i;break}if(!this.contentType)return HTMLResult.EMPTY}const t=new Blob([e],{type:this.contentType});let i;switch(this.aspect){case"fit":case"actual":break;case"height":i={height:"100%",objectFit:"fill"};break;case"none":i={width:"100%",height:"100%",objectFit:"fill"};break;case"width":i={width:"100%",objectFit:"fill"}}const a=this[Ir]();return HTMLResult.success({name:"img",attributes:{class:["xfaImage"],style:i,src:URL.createObjectURL(t),alt:a?ariaLabel(a[Ir]()):null}})}}class ImageEdit extends XFAObject{constructor(e){super(Nn,"imageEdit",!0);this.data=getStringOption(e.data,["link","embed"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[jr](e){return"embed"===this.data?HTMLResult.success({name:"div",children:[],attributes:{}}):HTMLResult.EMPTY}}class Integer extends ContentObject{constructor(e){super(Nn,"integer");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Zs](){const e=parseInt(this[Os].trim(),10);this[Os]=isNaN(e)?null:e}[jr](e){return valueToHtml(null!==this[Os]?this[Os].toString():"")}}class Issuers extends XFAObject{constructor(e){super(Nn,"issuers",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new XFAObjectArray}}class Items extends XFAObject{constructor(e){super(Nn,"items",!0);this.id=e.id||"";this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.ref=e.ref||"";this.save=getInteger({data:e.save,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}[jr](){const e=[];for(const t of this[rr]())e.push(t[Pr]());return HTMLResult.success(e)}}class Keep extends XFAObject{constructor(e){super(Nn,"keep",!0);this.id=e.id||"";const t=["none","contentArea","pageArea"];this.intact=getStringOption(e.intact,t);this.next=getStringOption(e.next,t);this.previous=getStringOption(e.previous,t);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class KeyUsage extends XFAObject{constructor(e){super(Nn,"keyUsage");const t=["","yes","no"];this.crlSign=getStringOption(e.crlSign,t);this.dataEncipherment=getStringOption(e.dataEncipherment,t);this.decipherOnly=getStringOption(e.decipherOnly,t);this.digitalSignature=getStringOption(e.digitalSignature,t);this.encipherOnly=getStringOption(e.encipherOnly,t);this.id=e.id||"";this.keyAgreement=getStringOption(e.keyAgreement,t);this.keyCertSign=getStringOption(e.keyCertSign,t);this.keyEncipherment=getStringOption(e.keyEncipherment,t);this.nonRepudiation=getStringOption(e.nonRepudiation,t);this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Line extends XFAObject{constructor(e){super(Nn,"line",!0);this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.slope=getStringOption(e.slope,["\\","/"]);this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null}[jr](){const e=this[Ir]()[Ir](),t=this.edge||new Edge({}),i=t[Zr](),a=Object.create(null),s="visible"===t.presence?t.thickness:0;a.strokeWidth=measureToString(s);a.stroke=i.color;let r,n,g,o,c="100%",C="100%";if(e.w<=s){[r,n,g,o]=["50%",0,"50%","100%"];c=a.strokeWidth}else if(e.h<=s){[r,n,g,o]=[0,"50%","100%","50%"];C=a.strokeWidth}else"\\"===this.slope?[r,n,g,o]=[0,0,"100%","100%"]:[r,n,g,o]=[0,"100%","100%",0];const h={name:"svg",children:[{name:"line",attributes:{xmlns:Gn,x1:r,y1:n,x2:g,y2:o,style:a}}],attributes:{xmlns:Gn,width:c,height:C,style:{overflow:"visible"}}};if(hasMargin(e))return HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[h]});h.attributes.style.position="absolute";return HTMLResult.success(h)}}class Linear extends XFAObject{constructor(e){super(Nn,"linear",!0);this.id=e.id||"";this.type=getStringOption(e.type,["toRight","toBottom","toLeft","toTop"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[Zr](e){e=e?e[Zr]():"#FFFFFF";return`linear-gradient(${this.type.replace(/([RBLT])/," $1").toLowerCase()}, ${e}, ${this.color?this.color[Zr]():"#000000"})`}}class LockDocument extends ContentObject{constructor(e){super(Nn,"lockDocument");this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}[Zs](){this[Os]=getStringOption(this[Os],["auto","0","1"])}}class Manifest extends XFAObject{constructor(e){super(Nn,"manifest",!0);this.action=getStringOption(e.action,["include","all","exclude"]);this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.ref=new XFAObjectArray}}class Margin extends XFAObject{constructor(e){super(Nn,"margin",!0);this.bottomInset=getMeasurement(e.bottomInset,"0");this.id=e.id||"";this.leftInset=getMeasurement(e.leftInset,"0");this.rightInset=getMeasurement(e.rightInset,"0");this.topInset=getMeasurement(e.topInset,"0");this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[Zr](){return{margin:measureToString(this.topInset)+" "+measureToString(this.rightInset)+" "+measureToString(this.bottomInset)+" "+measureToString(this.leftInset)}}}class Mdp extends XFAObject{constructor(e){super(Nn,"mdp");this.id=e.id||"";this.permissions=getInteger({data:e.permissions,defaultValue:2,validate:e=>1===e||3===e});this.signatureType=getStringOption(e.signatureType,["filler","author"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Medium extends XFAObject{constructor(e){super(Nn,"medium");this.id=e.id||"";this.imagingBBox=function getBBox(e){const t=-1;if(!e)return{x:t,y:t,width:t,height:t};const i=e.trim().split(/\s*,\s*/).map((e=>getMeasurement(e,"-1")));if(i.length<4||i[2]<0||i[3]<0)return{x:t,y:t,width:t,height:t};const[a,s,r,n]=i;return{x:a,y:s,width:r,height:n}}(e.imagingBBox);this.long=getMeasurement(e.long);this.orientation=getStringOption(e.orientation,["portrait","landscape"]);this.short=getMeasurement(e.short);this.stock=e.stock||"";this.trayIn=getStringOption(e.trayIn,["auto","delegate","pageFront"]);this.trayOut=getStringOption(e.trayOut,["auto","delegate"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Message extends XFAObject{constructor(e){super(Nn,"message",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.text=new XFAObjectArray}}class NumericEdit extends XFAObject{constructor(e){super(Nn,"numericEdit",!0);this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[jr](e){const t=toStyle(this,"border","font","margin"),i=this[Ir]()[Ir](),a={name:"input",attributes:{type:"text",fieldId:i[Vr],dataId:i[Ws]?.[Vr]||i[Vr],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(i),"aria-required":!1}};if(isRequired(i)){a.attributes["aria-required"]=!0;a.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}class Occur extends XFAObject{constructor(e){super(Nn,"occur",!0);this.id=e.id||"";this.initial=""!==e.initial?getInteger({data:e.initial,defaultValue:"",validate:e=>!0}):"";this.max=""!==e.max?getInteger({data:e.max,defaultValue:1,validate:e=>!0}):"";this.min=""!==e.min?getInteger({data:e.min,defaultValue:1,validate:e=>!0}):"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[Ys](){const e=this[Ir](),t=this.min;""===this.min&&(this.min=e instanceof PageArea||e instanceof PageSet?0:1);""===this.max&&(this.max=""===t?e instanceof PageArea||e instanceof PageSet?-1:1:this.min);-1!==this.max&&this.max!0});this.name=e.name||"";this.numbered=getInteger({data:e.numbered,defaultValue:1,validate:e=>!0});this.oddOrEven=getStringOption(e.oddOrEven,["any","even","odd"]);this.pagePosition=getStringOption(e.pagePosition,["any","first","last","only","rest"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.desc=null;this.extras=null;this.medium=null;this.occur=null;this.area=new XFAObjectArray;this.contentArea=new XFAObjectArray;this.draw=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.field=new XFAObjectArray;this.subform=new XFAObjectArray}[br](){if(!this[Xs]){this[Xs]={numberOfUse:0};return!0}return!this.occur||-1===this.occur.max||this[Xs].numberOfUsee.oddOrEven===t&&e.pagePosition===i));if(a)return a;a=this.pageArea.children.find((e=>"any"===e.oddOrEven&&e.pagePosition===i));if(a)return a;a=this.pageArea.children.find((e=>"any"===e.oddOrEven&&"any"===e.pagePosition));return a||this.pageArea.children[0]}}class Para extends XFAObject{constructor(e){super(Nn,"para",!0);this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.lineHeight=e.lineHeight?getMeasurement(e.lineHeight,"0pt"):"";this.marginLeft=e.marginLeft?getMeasurement(e.marginLeft,"0pt"):"";this.marginRight=e.marginRight?getMeasurement(e.marginRight,"0pt"):"";this.orphans=getInteger({data:e.orphans,defaultValue:0,validate:e=>e>=0});this.preserve=e.preserve||"";this.radixOffset=e.radixOffset?getMeasurement(e.radixOffset,"0pt"):"";this.spaceAbove=e.spaceAbove?getMeasurement(e.spaceAbove,"0pt"):"";this.spaceBelow=e.spaceBelow?getMeasurement(e.spaceBelow,"0pt"):"";this.tabDefault=e.tabDefault?getMeasurement(this.tabDefault):"";this.tabStops=(e.tabStops||"").trim().split(/\s+/).map(((e,t)=>t%2==1?getMeasurement(e):e));this.textIndent=e.textIndent?getMeasurement(e.textIndent,"0pt"):"";this.use=e.use||"";this.usehref=e.usehref||"";this.vAlign=getStringOption(e.vAlign,["top","bottom","middle"]);this.widows=getInteger({data:e.widows,defaultValue:0,validate:e=>e>=0});this.hyphenation=null}[Zr](){const e=toStyle(this,"hAlign");""!==this.marginLeft&&(e.paddingLeft=measureToString(this.marginLeft));""!==this.marginRight&&(e.paddingRight=measureToString(this.marginRight));""!==this.spaceAbove&&(e.paddingTop=measureToString(this.spaceAbove));""!==this.spaceBelow&&(e.paddingBottom=measureToString(this.spaceBelow));if(""!==this.textIndent){e.textIndent=measureToString(this.textIndent);fixTextIndent(e)}this.lineHeight>0&&(e.lineHeight=measureToString(this.lineHeight));""!==this.tabDefault&&(e.tabSize=measureToString(this.tabDefault));this.tabStops.length;this.hyphenatation&&Object.assign(e,this.hyphenatation[Zr]());return e}}class PasswordEdit extends XFAObject{constructor(e){super(Nn,"passwordEdit",!0);this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.passwordChar=e.passwordChar||"*";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}}class template_Pattern extends XFAObject{constructor(e){super(Nn,"pattern",!0);this.id=e.id||"";this.type=getStringOption(e.type,["crossHatch","crossDiagonal","diagonalLeft","diagonalRight","horizontal","vertical"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[Zr](e){e=e?e[Zr]():"#FFFFFF";const t=this.color?this.color[Zr]():"#000000",i="repeating-linear-gradient",a=`${e},${e} 5px,${t} 5px,${t} 10px`;switch(this.type){case"crossHatch":return`${i}(to top,${a}) ${i}(to right,${a})`;case"crossDiagonal":return`${i}(45deg,${a}) ${i}(-45deg,${a})`;case"diagonalLeft":return`${i}(45deg,${a})`;case"diagonalRight":return`${i}(-45deg,${a})`;case"horizontal":return`${i}(to top,${a})`;case"vertical":return`${i}(to right,${a})`}return""}}class Picture extends StringObject{constructor(e){super(Nn,"picture");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Proto extends XFAObject{constructor(e){super(Nn,"proto",!0);this.appearanceFilter=new XFAObjectArray;this.arc=new XFAObjectArray;this.area=new XFAObjectArray;this.assist=new XFAObjectArray;this.barcode=new XFAObjectArray;this.bindItems=new XFAObjectArray;this.bookend=new XFAObjectArray;this.boolean=new XFAObjectArray;this.border=new XFAObjectArray;this.break=new XFAObjectArray;this.breakAfter=new XFAObjectArray;this.breakBefore=new XFAObjectArray;this.button=new XFAObjectArray;this.calculate=new XFAObjectArray;this.caption=new XFAObjectArray;this.certificate=new XFAObjectArray;this.certificates=new XFAObjectArray;this.checkButton=new XFAObjectArray;this.choiceList=new XFAObjectArray;this.color=new XFAObjectArray;this.comb=new XFAObjectArray;this.connect=new XFAObjectArray;this.contentArea=new XFAObjectArray;this.corner=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.dateTimeEdit=new XFAObjectArray;this.decimal=new XFAObjectArray;this.defaultUi=new XFAObjectArray;this.desc=new XFAObjectArray;this.digestMethod=new XFAObjectArray;this.digestMethods=new XFAObjectArray;this.draw=new XFAObjectArray;this.edge=new XFAObjectArray;this.encoding=new XFAObjectArray;this.encodings=new XFAObjectArray;this.encrypt=new XFAObjectArray;this.encryptData=new XFAObjectArray;this.encryption=new XFAObjectArray;this.encryptionMethod=new XFAObjectArray;this.encryptionMethods=new XFAObjectArray;this.event=new XFAObjectArray;this.exData=new XFAObjectArray;this.exObject=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.execute=new XFAObjectArray;this.extras=new XFAObjectArray;this.field=new XFAObjectArray;this.fill=new XFAObjectArray;this.filter=new XFAObjectArray;this.float=new XFAObjectArray;this.font=new XFAObjectArray;this.format=new XFAObjectArray;this.handler=new XFAObjectArray;this.hyphenation=new XFAObjectArray;this.image=new XFAObjectArray;this.imageEdit=new XFAObjectArray;this.integer=new XFAObjectArray;this.issuers=new XFAObjectArray;this.items=new XFAObjectArray;this.keep=new XFAObjectArray;this.keyUsage=new XFAObjectArray;this.line=new XFAObjectArray;this.linear=new XFAObjectArray;this.lockDocument=new XFAObjectArray;this.manifest=new XFAObjectArray;this.margin=new XFAObjectArray;this.mdp=new XFAObjectArray;this.medium=new XFAObjectArray;this.message=new XFAObjectArray;this.numericEdit=new XFAObjectArray;this.occur=new XFAObjectArray;this.oid=new XFAObjectArray;this.oids=new XFAObjectArray;this.overflow=new XFAObjectArray;this.pageArea=new XFAObjectArray;this.pageSet=new XFAObjectArray;this.para=new XFAObjectArray;this.passwordEdit=new XFAObjectArray;this.pattern=new XFAObjectArray;this.picture=new XFAObjectArray;this.radial=new XFAObjectArray;this.reason=new XFAObjectArray;this.reasons=new XFAObjectArray;this.rectangle=new XFAObjectArray;this.ref=new XFAObjectArray;this.script=new XFAObjectArray;this.setProperty=new XFAObjectArray;this.signData=new XFAObjectArray;this.signature=new XFAObjectArray;this.signing=new XFAObjectArray;this.solid=new XFAObjectArray;this.speak=new XFAObjectArray;this.stipple=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray;this.subjectDN=new XFAObjectArray;this.subjectDNs=new XFAObjectArray;this.submit=new XFAObjectArray;this.text=new XFAObjectArray;this.textEdit=new XFAObjectArray;this.time=new XFAObjectArray;this.timeStamp=new XFAObjectArray;this.toolTip=new XFAObjectArray;this.traversal=new XFAObjectArray;this.traverse=new XFAObjectArray;this.ui=new XFAObjectArray;this.validate=new XFAObjectArray;this.value=new XFAObjectArray;this.variables=new XFAObjectArray}}class Radial extends XFAObject{constructor(e){super(Nn,"radial",!0);this.id=e.id||"";this.type=getStringOption(e.type,["toEdge","toCenter"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[Zr](e){e=e?e[Zr]():"#FFFFFF";const t=this.color?this.color[Zr]():"#000000";return`radial-gradient(circle at center, ${"toEdge"===this.type?`${e},${t}`:`${t},${e}`})`}}class Reason extends StringObject{constructor(e){super(Nn,"reason");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Reasons extends XFAObject{constructor(e){super(Nn,"reasons",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.reason=new XFAObjectArray}}class Rectangle extends XFAObject{constructor(e){super(Nn,"rectangle",!0);this.hand=getStringOption(e.hand,["even","left","right"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new XFAObjectArray(4);this.edge=new XFAObjectArray(4);this.fill=null}[jr](){const e=this.edge.children.length?this.edge.children[0]:new Edge({}),t=e[Zr](),i=Object.create(null);"visible"===this.fill?.presence?Object.assign(i,this.fill[Zr]()):i.fill="transparent";i.strokeWidth=measureToString("visible"===e.presence?e.thickness:0);i.stroke=t.color;const a=(this.corner.children.length?this.corner.children[0]:new Corner({}))[Zr](),s={name:"svg",children:[{name:"rect",attributes:{xmlns:Gn,width:"100%",height:"100%",x:0,y:0,rx:a.radius,ry:a.radius,style:i}}],attributes:{xmlns:Gn,style:{overflow:"visible"},width:"100%",height:"100%"}};if(hasMargin(this[Ir]()[Ir]()))return HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[s]});s.attributes.style.position="absolute";return HTMLResult.success(s)}}class RefElement extends StringObject{constructor(e){super(Nn,"ref");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Script extends StringObject{constructor(e){super(Nn,"script");this.binding=e.binding||"";this.contentType=e.contentType||"";this.id=e.id||"";this.name=e.name||"";this.runAt=getStringOption(e.runAt,["client","both","server"]);this.use=e.use||"";this.usehref=e.usehref||""}}class SetProperty extends XFAObject{constructor(e){super(Nn,"setProperty");this.connection=e.connection||"";this.ref=e.ref||"";this.target=e.target||""}}class SignData extends XFAObject{constructor(e){super(Nn,"signData",!0);this.id=e.id||"";this.operation=getStringOption(e.operation,["sign","clear","verify"]);this.ref=e.ref||"";this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Signature extends XFAObject{constructor(e){super(Nn,"signature",!0);this.id=e.id||"";this.type=getStringOption(e.type,["PDF1.3","PDF1.6"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.filter=null;this.manifest=null;this.margin=null}}class Signing extends XFAObject{constructor(e){super(Nn,"signing",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new XFAObjectArray}}class Solid extends XFAObject{constructor(e){super(Nn,"solid",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[Zr](e){return e?e[Zr]():"#FFFFFF"}}class Speak extends StringObject{constructor(e){super(Nn,"speak");this.disable=getInteger({data:e.disable,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.priority=getStringOption(e.priority,["custom","caption","name","toolTip"]);this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Stipple extends XFAObject{constructor(e){super(Nn,"stipple",!0);this.id=e.id||"";this.rate=getInteger({data:e.rate,defaultValue:50,validate:e=>e>=0&&e<=100});this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[Zr](e){const t=this.rate/100;return Util.makeHexColor(Math.round(e.value.r*(1-t)+this.value.r*t),Math.round(e.value.g*(1-t)+this.value.g*t),Math.round(e.value.b*(1-t)+this.value.b*t))}}class Subform extends XFAObject{constructor(e){super(Nn,"subform",!0);this.access=getStringOption(e.access,["open","nonInteractive","protected","readOnly"]);this.allowMacro=getInteger({data:e.allowMacro,defaultValue:0,validate:e=>1===e});this.anchorType=getStringOption(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=getInteger({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.columnWidths=(e.columnWidths||"").trim().split(/\s+/).map((e=>"-1"===e?-1:getMeasurement(e)));this.h=e.h?getMeasurement(e.h):"";this.hAlign=getStringOption(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=getStringOption(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.locale=e.locale||"";this.maxH=getMeasurement(e.maxH,"0pt");this.maxW=getMeasurement(e.maxW,"0pt");this.mergeMode=getStringOption(e.mergeMode,["consumeData","matchTemplate"]);this.minH=getMeasurement(e.minH,"0pt");this.minW=getMeasurement(e.minW,"0pt");this.name=e.name||"";this.presence=getStringOption(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=getRelevant(e.relevant);this.restoreState=getStringOption(e.restoreState,["manual","auto"]);this.scope=getStringOption(e.scope,["name","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?getMeasurement(e.w):"";this.x=getMeasurement(e.x,"0pt");this.y=getMeasurement(e.y,"0pt");this.assist=null;this.bind=null;this.bookend=null;this.border=null;this.break=null;this.calculate=null;this.desc=null;this.extras=null;this.keep=null;this.margin=null;this.occur=null;this.overflow=null;this.pageSet=null;this.para=null;this.traversal=null;this.validate=null;this.variables=null;this.area=new XFAObjectArray;this.breakAfter=new XFAObjectArray;this.breakBefore=new XFAObjectArray;this.connect=new XFAObjectArray;this.draw=new XFAObjectArray;this.event=new XFAObjectArray;this.exObject=new XFAObjectArray;this.exclGroup=new XFAObjectArray;this.field=new XFAObjectArray;this.proto=new XFAObjectArray;this.setProperty=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray}[or](){const e=this[Ir]();return e instanceof SubformSet?e[or]():e}[dr](){return!0}[wr](){return this.layout.endsWith("-tb")&&0===this[Xs].attempt&&this[Xs].numberInLine>0||this[Ir]()[wr]()}*[nr](){yield*getContainedChildren(this)}[Vs](){return flushHTML(this)}[Ls](e,t){addHTML(this,e,t)}[$s](){return getAvailableSpace(this)}[yr](){const e=this[or]();if(!e[yr]())return!1;if(void 0!==this[Xs]._isSplittable)return this[Xs]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[Xs]._isSplittable=!1;return!1}if(this.keep&&"none"!==this.keep.intact){this[Xs]._isSplittable=!1;return!1}if(e.layout?.endsWith("-tb")&&0!==e[Xs].numberInLine)return!1;this[Xs]._isSplittable=!0;return!0}[jr](e){setTabIndex(this);if(this.break){if("auto"!==this.break.after||""!==this.break.afterTarget){const e=new BreakAfter({targetType:this.break.after,target:this.break.afterTarget,startNew:this.break.startNew.toString()});e[Cr]=this[Cr];this[Hs](e);this.breakAfter.push(e)}if("auto"!==this.break.before||""!==this.break.beforeTarget){const e=new BreakBefore({targetType:this.break.before,target:this.break.beforeTarget,startNew:this.break.startNew.toString()});e[Cr]=this[Cr];this[Hs](e);this.breakBefore.push(e)}if(""!==this.break.overflowTarget){const e=new Overflow({target:this.break.overflowTarget,leader:this.break.overflowLeader,trailer:this.break.overflowTrailer});e[Cr]=this[Cr];this[Hs](e);this.overflow.push(e)}this[Hr](this.break);this.break=null}if("hidden"===this.presence||"inactive"===this.presence)return HTMLResult.EMPTY;(this.breakBefore.children.length>1||this.breakAfter.children.length>1)&&warn("XFA - Several breakBefore or breakAfter in subforms: please file a bug.");if(this.breakBefore.children.length>=1){const e=this.breakBefore.children[0];if(handleBreak(e))return HTMLResult.breakNode(e)}if(this[Xs]?.afterBreakAfter)return HTMLResult.EMPTY;fixDimensions(this);const t=[],i={id:this[Vr],class:[]};setAccess(this,i.class);this[Xs]||(this[Xs]=Object.create(null));Object.assign(this[Xs],{children:t,line:null,attributes:i,attempt:0,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const a=this[cr](),s=a[Xs].noLayoutFailure,r=this[yr]();r||setFirstUnsplittable(this);if(!checkDimensions(this,e))return HTMLResult.FAILURE;const n=new Set(["area","draw","exclGroup","field","subform","subformSet"]);if(this.layout.includes("row")){const e=this[or]().columnWidths;if(Array.isArray(e)&&e.length>0){this[Xs].columnWidths=e;this[Xs].currentColumn=0}}const g=toStyle(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),o=["xfaSubform"],c=layoutClass(this);c&&o.push(c);i.style=g;i.class=o;this.name&&(i.xfaName=this.name);if(this.overflow){const t=this.overflow[ar]();if(t.addLeader){t.addLeader=!1;handleOverflow(this,t.leader,e)}}this[Lr]();const C="lr-tb"===this.layout||"rl-tb"===this.layout,h=C?2:1;for(;this[Xs].attempt=1){const e=this.breakAfter.children[0];if(handleBreak(e)){this[Xs].afterBreakAfter=p;return HTMLResult.breakNode(e)}}delete this[Xs];return p}}class SubformSet extends XFAObject{constructor(e){super(Nn,"subformSet",!0);this.id=e.id||"";this.name=e.name||"";this.relation=getStringOption(e.relation,["ordered","choice","unordered"]);this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.bookend=null;this.break=null;this.desc=null;this.extras=null;this.occur=null;this.overflow=null;this.breakAfter=new XFAObjectArray;this.breakBefore=new XFAObjectArray;this.subform=new XFAObjectArray;this.subformSet=new XFAObjectArray}*[nr](){yield*getContainedChildren(this)}[or](){let e=this[Ir]();for(;!(e instanceof Subform);)e=e[Ir]();return e}[dr](){return!0}}class SubjectDN extends ContentObject{constructor(e){super(Nn,"subjectDN");this.delimiter=e.delimiter||",";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Zs](){this[Os]=new Map(this[Os].split(this.delimiter).map((e=>{(e=e.split("=",2))[0]=e[0].trim();return e})))}}class SubjectDNs extends XFAObject{constructor(e){super(Nn,"subjectDNs",!0);this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.subjectDN=new XFAObjectArray}}class Submit extends XFAObject{constructor(e){super(Nn,"submit",!0);this.embedPDF=getInteger({data:e.embedPDF,defaultValue:0,validate:e=>1===e});this.format=getStringOption(e.format,["xdp","formdata","pdf","urlencoded","xfd","xml"]);this.id=e.id||"";this.target=e.target||"";this.textEncoding=getKeyword({data:e.textEncoding?e.textEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\d{2}/)});this.use=e.use||"";this.usehref=e.usehref||"";this.xdpContent=e.xdpContent||"";this.encrypt=null;this.encryptData=new XFAObjectArray;this.signData=new XFAObjectArray}}class Template extends XFAObject{constructor(e){super(Nn,"template",!0);this.baseProfile=getStringOption(e.baseProfile,["full","interactiveForms"]);this.extras=null;this.subform=new XFAObjectArray}[Zs](){0===this.subform.children.length&&warn("XFA - No subforms in template node.");this.subform.children.length>=2&&warn("XFA - Several subforms in template node: please file a bug.");this[Or]=5e3}[yr](){return!0}[vr](e,t){return e.startsWith("#")?[this[lr].get(e.slice(1))]:searchNode(this,t,e,!0,!0)}*[Wr](){if(!this.subform.children.length)return HTMLResult.success({name:"div",children:[]});this[Xs]={overflowNode:null,firstUnsplittable:null,currentContentArea:null,currentPageArea:null,noLayoutFailure:!1,pageNumber:1,pagePosition:"first",oddOrEven:"odd",blankOrNotBlank:"nonBlank",paraStack:[]};const e=this.subform.children[0];e.pageSet[vs]();const t=e.pageSet.pageArea.children,i={name:"div",children:[]};let a=null,s=null,r=null;if(e.breakBefore.children.length>=1){s=e.breakBefore.children[0];r=s.target}else if(e.subform.children.length>=1&&e.subform.children[0].breakBefore.children.length>=1){s=e.subform.children[0].breakBefore.children[0];r=s.target}else if(e.break?.beforeTarget){s=e.break;r=s.beforeTarget}else if(e.subform.children.length>=1&&e.subform.children[0].break?.beforeTarget){s=e.subform.children[0].break;r=s.beforeTarget}if(s){const e=this[vr](r,s[Ir]());if(e instanceof PageArea){a=e;s[Xs]={}}}a||(a=t[0]);a[Xs]={numberOfUse:1};const n=a[Ir]();n[Xs]={numberOfUse:1,pageIndex:n.pageArea.children.indexOf(a),pageSetIndex:0};let g,o=null,c=null,C=!0,h=0,l=0;for(;;){if(C)h=0;else{i.children.pop();if(3==++h){warn("XFA - Something goes wrong: please file a bug.");return i}}g=null;this[Xs].currentPageArea=a;const t=a[jr]().html;i.children.push(t);if(o){this[Xs].noLayoutFailure=!0;t.children.push(o[jr](a[Xs].space).html);o=null}if(c){this[Xs].noLayoutFailure=!0;t.children.push(c[jr](a[Xs].space).html);c=null}const s=a.contentArea.children,r=t.children.filter((e=>e.attributes.class.includes("xfaContentarea")));C=!1;this[Xs].firstUnsplittable=null;this[Xs].noLayoutFailure=!1;const flush=t=>{const i=e[Vs]();if(i){C||=i.children?.length>0;r[t].children.push(i)}};for(let t=l,a=s.length;t0;r[t].children.push(h.html)}else!C&&i.children.length>1&&i.children.pop();return i}if(h.isBreak()){const e=h.breakNode;flush(t);if("auto"===e.targetType)continue;if(e.leader){o=this[vr](e.leader,e[Ir]());o=o?o[0]:null}if(e.trailer){c=this[vr](e.trailer,e[Ir]());c=c?c[0]:null}if("pageArea"===e.targetType){g=e[Xs].target;t=1/0}else if(e[Xs].target){g=e[Xs].target;l=e[Xs].index+1;t=1/0}else t=e[Xs].index}else if(this[Xs].overflowNode){const e=this[Xs].overflowNode;this[Xs].overflowNode=null;const i=e[ar](),a=i.target;i.addLeader=null!==i.leader;i.addTrailer=null!==i.trailer;flush(t);const r=t;t=1/0;if(a instanceof PageArea)g=a;else if(a instanceof ContentArea){const e=s.indexOf(a);if(-1!==e)e>r?t=e-1:l=e;else{g=a[Ir]();l=g.contentArea.children.indexOf(a)}}}else flush(t)}this[Xs].pageNumber+=1;g&&(g[br]()?g[Xs].numberOfUse+=1:g=null);a=g||a[gr]();yield null}}}class Text extends ContentObject{constructor(e){super(Nn,"text");this.id=e.id||"";this.maxChars=getInteger({data:e.maxChars,defaultValue:0,validate:e=>e>=0});this.name=e.name||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}[xs](){return!0}[Nr](e){if(e[Sr]===_r.xhtml.id){this[Os]=e;return!0}warn(`XFA - Invalid content in Text: ${e[kr]}.`);return!1}[Mr](e){this[Os]instanceof XFAObject||super[Mr](e)}[Zs](){"string"==typeof this[Os]&&(this[Os]=this[Os].replaceAll("\r\n","\n"))}[ar](){return"string"==typeof this[Os]?this[Os].split(/[\u2029\u2028\n]/).reduce(((e,t)=>{t&&e.push(t);return e}),[]).join("\n"):this[Os][Pr]()}[jr](e){if("string"==typeof this[Os]){const e=valueToHtml(this[Os]).html;if(this[Os].includes("\u2029")){e.name="div";e.children=[];this[Os].split("\u2029").map((e=>e.split(/[\u2028\n]/).reduce(((e,t)=>{e.push({name:"span",value:t},{name:"br"});return e}),[]))).forEach((t=>{e.children.push({name:"p",children:t})}))}else if(/[\u2028\n]/.test(this[Os])){e.name="div";e.children=[];this[Os].split(/[\u2028\n]/).forEach((t=>{e.children.push({name:"span",value:t},{name:"br"})}))}return HTMLResult.success(e)}return this[Os][jr](e)}}class TextEdit extends XFAObject{constructor(e){super(Nn,"textEdit",!0);this.allowRichText=getInteger({data:e.allowRichText,defaultValue:0,validate:e=>1===e});this.hScrollPolicy=getStringOption(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.multiLine=getInteger({data:e.multiLine,defaultValue:"",validate:e=>0===e||1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.vScrollPolicy=getStringOption(e.vScrollPolicy,["auto","off","on"]);this.border=null;this.comb=null;this.extras=null;this.margin=null}[jr](e){const t=toStyle(this,"border","font","margin");let i;const a=this[Ir]()[Ir]();""===this.multiLine&&(this.multiLine=a instanceof Draw?1:0);i=1===this.multiLine?{name:"textarea",attributes:{dataId:a[Ws]?.[Vr]||a[Vr],fieldId:a[Vr],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a),"aria-required":!1}}:{name:"input",attributes:{type:"text",dataId:a[Ws]?.[Vr]||a[Vr],fieldId:a[Vr],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a),"aria-required":!1}};if(isRequired(a)){i.attributes["aria-required"]=!0;i.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[i]})}}class Time extends StringObject{constructor(e){super(Nn,"time");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Zs](){const e=this[Os].trim();this[Os]=e?new Date(e):null}[jr](e){return valueToHtml(this[Os]?this[Os].toString():"")}}class TimeStamp extends XFAObject{constructor(e){super(Nn,"timeStamp");this.id=e.id||"";this.server=e.server||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class ToolTip extends StringObject{constructor(e){super(Nn,"toolTip");this.id=e.id||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Traversal extends XFAObject{constructor(e){super(Nn,"traversal",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.traverse=new XFAObjectArray}}class Traverse extends XFAObject{constructor(e){super(Nn,"traverse",!0);this.id=e.id||"";this.operation=getStringOption(e.operation,["next","back","down","first","left","right","up"]);this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.script=null}get name(){return this.operation}[Dr](){return!1}}class Ui extends XFAObject{constructor(e){super(Nn,"ui",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.picture=null;this.barcode=null;this.button=null;this.checkButton=null;this.choiceList=null;this.dateTimeEdit=null;this.defaultUi=null;this.imageEdit=null;this.numericEdit=null;this.passwordEdit=null;this.signature=null;this.textEdit=null}[ar](){if(void 0===this[Xs]){for(const e of Object.getOwnPropertyNames(this)){if("extras"===e||"picture"===e)continue;const t=this[e];if(t instanceof XFAObject){this[Xs]=t;return t}}this[Xs]=null}return this[Xs]}[jr](e){const t=this[ar]();return t?t[jr](e):HTMLResult.EMPTY}}class Validate extends XFAObject{constructor(e){super(Nn,"validate",!0);this.formatTest=getStringOption(e.formatTest,["warning","disabled","error"]);this.id=e.id||"";this.nullTest=getStringOption(e.nullTest,["disabled","error","warning"]);this.scriptTest=getStringOption(e.scriptTest,["error","disabled","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.picture=null;this.script=null}}class Value extends XFAObject{constructor(e){super(Nn,"value",!0);this.id=e.id||"";this.override=getInteger({data:e.override,defaultValue:0,validate:e=>1===e});this.relevant=getRelevant(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.arc=null;this.boolean=null;this.date=null;this.dateTime=null;this.decimal=null;this.exData=null;this.float=null;this.image=null;this.integer=null;this.line=null;this.rectangle=null;this.text=null;this.time=null}[qr](e){const t=this[Ir]();if(t instanceof Field&&t.ui?.imageEdit){if(!this.image){this.image=new Image({});this[Hs](this.image)}this.image[Os]=e[Os];return}const i=e[kr];if(null===this[i]){for(const e of Object.getOwnPropertyNames(this)){const t=this[e];if(t instanceof XFAObject){this[e]=null;this[Hr](t)}}this[e[kr]]=e;this[Hs](e)}else this[i][Os]=e[Os]}[Pr](){if(this.exData)return"string"==typeof this.exData[Os]?this.exData[Os].trim():this.exData[Os][Pr]().trim();for(const e of Object.getOwnPropertyNames(this)){if("image"===e)continue;const t=this[e];if(t instanceof XFAObject)return(t[Os]||"").toString().trim()}return null}[jr](e){for(const t of Object.getOwnPropertyNames(this)){const i=this[t];if(i instanceof XFAObject)return i[jr](e)}return HTMLResult.EMPTY}}class Variables extends XFAObject{constructor(e){super(Nn,"variables",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new XFAObjectArray;this.date=new XFAObjectArray;this.dateTime=new XFAObjectArray;this.decimal=new XFAObjectArray;this.exData=new XFAObjectArray;this.float=new XFAObjectArray;this.image=new XFAObjectArray;this.integer=new XFAObjectArray;this.manifest=new XFAObjectArray;this.script=new XFAObjectArray;this.text=new XFAObjectArray;this.time=new XFAObjectArray}[Dr](){return!0}}class TemplateNamespace{static[zr](e,t){if(TemplateNamespace.hasOwnProperty(e)){const i=TemplateNamespace[e](t);i[Tr](t);return i}}static appearanceFilter(e){return new AppearanceFilter(e)}static arc(e){return new Arc(e)}static area(e){return new Area(e)}static assist(e){return new Assist(e)}static barcode(e){return new Barcode(e)}static bind(e){return new Bind(e)}static bindItems(e){return new BindItems(e)}static bookend(e){return new Bookend(e)}static boolean(e){return new BooleanElement(e)}static border(e){return new Border(e)}static break(e){return new Break(e)}static breakAfter(e){return new BreakAfter(e)}static breakBefore(e){return new BreakBefore(e)}static button(e){return new Button(e)}static calculate(e){return new Calculate(e)}static caption(e){return new Caption(e)}static certificate(e){return new Certificate(e)}static certificates(e){return new Certificates(e)}static checkButton(e){return new CheckButton(e)}static choiceList(e){return new ChoiceList(e)}static color(e){return new Color(e)}static comb(e){return new Comb(e)}static connect(e){return new Connect(e)}static contentArea(e){return new ContentArea(e)}static corner(e){return new Corner(e)}static date(e){return new DateElement(e)}static dateTime(e){return new DateTime(e)}static dateTimeEdit(e){return new DateTimeEdit(e)}static decimal(e){return new Decimal(e)}static defaultUi(e){return new DefaultUi(e)}static desc(e){return new Desc(e)}static digestMethod(e){return new DigestMethod(e)}static digestMethods(e){return new DigestMethods(e)}static draw(e){return new Draw(e)}static edge(e){return new Edge(e)}static encoding(e){return new Encoding(e)}static encodings(e){return new Encodings(e)}static encrypt(e){return new Encrypt(e)}static encryptData(e){return new EncryptData(e)}static encryption(e){return new Encryption(e)}static encryptionMethod(e){return new EncryptionMethod(e)}static encryptionMethods(e){return new EncryptionMethods(e)}static event(e){return new Event(e)}static exData(e){return new ExData(e)}static exObject(e){return new ExObject(e)}static exclGroup(e){return new ExclGroup(e)}static execute(e){return new Execute(e)}static extras(e){return new Extras(e)}static field(e){return new Field(e)}static fill(e){return new Fill(e)}static filter(e){return new Filter(e)}static float(e){return new Float(e)}static font(e){return new template_Font(e)}static format(e){return new Format(e)}static handler(e){return new Handler(e)}static hyphenation(e){return new Hyphenation(e)}static image(e){return new Image(e)}static imageEdit(e){return new ImageEdit(e)}static integer(e){return new Integer(e)}static issuers(e){return new Issuers(e)}static items(e){return new Items(e)}static keep(e){return new Keep(e)}static keyUsage(e){return new KeyUsage(e)}static line(e){return new Line(e)}static linear(e){return new Linear(e)}static lockDocument(e){return new LockDocument(e)}static manifest(e){return new Manifest(e)}static margin(e){return new Margin(e)}static mdp(e){return new Mdp(e)}static medium(e){return new Medium(e)}static message(e){return new Message(e)}static numericEdit(e){return new NumericEdit(e)}static occur(e){return new Occur(e)}static oid(e){return new Oid(e)}static oids(e){return new Oids(e)}static overflow(e){return new Overflow(e)}static pageArea(e){return new PageArea(e)}static pageSet(e){return new PageSet(e)}static para(e){return new Para(e)}static passwordEdit(e){return new PasswordEdit(e)}static pattern(e){return new template_Pattern(e)}static picture(e){return new Picture(e)}static proto(e){return new Proto(e)}static radial(e){return new Radial(e)}static reason(e){return new Reason(e)}static reasons(e){return new Reasons(e)}static rectangle(e){return new Rectangle(e)}static ref(e){return new RefElement(e)}static script(e){return new Script(e)}static setProperty(e){return new SetProperty(e)}static signData(e){return new SignData(e)}static signature(e){return new Signature(e)}static signing(e){return new Signing(e)}static solid(e){return new Solid(e)}static speak(e){return new Speak(e)}static stipple(e){return new Stipple(e)}static subform(e){return new Subform(e)}static subformSet(e){return new SubformSet(e)}static subjectDN(e){return new SubjectDN(e)}static subjectDNs(e){return new SubjectDNs(e)}static submit(e){return new Submit(e)}static template(e){return new Template(e)}static text(e){return new Text(e)}static textEdit(e){return new TextEdit(e)}static time(e){return new Time(e)}static timeStamp(e){return new TimeStamp(e)}static toolTip(e){return new ToolTip(e)}static traversal(e){return new Traversal(e)}static traverse(e){return new Traverse(e)}static ui(e){return new Ui(e)}static validate(e){return new Validate(e)}static value(e){return new Value(e)}static variables(e){return new Variables(e)}}const Ln=_r.datasets.id;function createText(e){const t=new Text({});t[Os]=e;return t}class Binder{constructor(e){this.root=e;this.datasets=e.datasets;this.data=e.datasets?.data||new XmlObject(_r.datasets.id,"data");this.emptyMerge=0===this.data[rr]().length;this.root.form=this.form=e.template[Ts]()}_isConsumeData(){return!this.emptyMerge&&this._mergeMode}_isMatchTemplate(){return!this._isConsumeData()}bind(){this._bindElement(this.form,this.data);return this.form}getData(){return this.data}_bindValue(e,t,i){e[Ws]=t;if(e[hr]())if(t[fr]()){const i=t[ir]();e[qr](createText(i))}else if(e instanceof Field&&"multiSelect"===e.ui?.choiceList?.open){const i=t[rr]().map((e=>e[Os].trim())).join("\n");e[qr](createText(i))}else this._isConsumeData()&&warn("XFA - Nodes haven't the same type.");else!t[fr]()||this._isMatchTemplate()?this._bindElement(e,t):warn("XFA - Nodes haven't the same type.")}_findDataByNameToConsume(e,t,i,a){if(!e)return null;let s,r;for(let a=0;a<3;a++){s=i[sr](e,!1,!0);for(;;){r=s.next().value;if(!r)break;if(t===r[fr]())return r}if(i[Sr]===_r.datasets.id&&"data"===i[kr])break;i=i[Ir]()}if(!a)return null;s=this.data[sr](e,!0,!1);r=s.next().value;if(r)return r;s=this.data[zs](e,!0);r=s.next().value;return r?.[fr]()?r:null}_setProperties(e,t){if(e.hasOwnProperty("setProperty"))for(const{ref:i,target:a,connection:s}of e.setProperty.children){if(s)continue;if(!i)continue;const r=searchNode(this.root,t,i,!1,!1);if(!r){warn(`XFA - Invalid reference: ${i}.`);continue}const[n]=r;if(!n[pr](this.data)){warn("XFA - Invalid node: must be a data node.");continue}const g=searchNode(this.root,e,a,!1,!1);if(!g){warn(`XFA - Invalid target: ${a}.`);continue}const[o]=g;if(!o[pr](e)){warn("XFA - Invalid target: must be a property or subproperty.");continue}const c=o[Ir]();if(o instanceof SetProperty||c instanceof SetProperty){warn("XFA - Invalid target: cannot be a setProperty or one of its properties.");continue}if(o instanceof BindItems||c instanceof BindItems){warn("XFA - Invalid target: cannot be a bindItems or one of its properties.");continue}const C=n[Pr](),h=o[kr];if(o instanceof XFAAttribute){const e=Object.create(null);e[h]=C;const t=Reflect.construct(Object.getPrototypeOf(c).constructor,[e]);c[h]=t[h]}else if(o.hasOwnProperty(Os)){o[Ws]=n;o[Os]=C;o[Zs]()}else warn("XFA - Invalid node to use in setProperty")}}_bindItems(e,t){if(!e.hasOwnProperty("items")||!e.hasOwnProperty("bindItems")||e.bindItems.isEmpty())return;for(const t of e.items.children)e[Hr](t);e.items.clear();const i=new Items({}),a=new Items({});e[Hs](i);e.items.push(i);e[Hs](a);e.items.push(a);for(const{ref:s,labelRef:r,valueRef:n,connection:g}of e.bindItems.children){if(g)continue;if(!s)continue;const e=searchNode(this.root,t,s,!1,!1);if(e)for(const t of e){if(!t[pr](this.datasets)){warn(`XFA - Invalid ref (${s}): must be a datasets child.`);continue}const e=searchNode(this.root,t,r,!0,!1);if(!e){warn(`XFA - Invalid label: ${r}.`);continue}const[g]=e;if(!g[pr](this.datasets)){warn("XFA - Invalid label: must be a datasets child.");continue}const o=searchNode(this.root,t,n,!0,!1);if(!o){warn(`XFA - Invalid value: ${n}.`);continue}const[c]=o;if(!c[pr](this.datasets)){warn("XFA - Invalid value: must be a datasets child.");continue}const C=createText(g[Pr]()),h=createText(c[Pr]());i[Hs](C);i.text.push(C);a[Hs](h);a.text.push(h)}else warn(`XFA - Invalid reference: ${s}.`)}}_bindOccurrences(e,t,i){let a;if(t.length>1){a=e[Ts]();a[Hr](a.occur);a.occur=null}this._bindValue(e,t[0],i);this._setProperties(e,t[0]);this._bindItems(e,t[0]);if(1===t.length)return;const s=e[Ir](),r=e[kr],n=s[Qr](e);for(let e=1,g=t.length;et.name===e.name)).length:i[a].children.length;const r=i[Qr](e)+1,n=t.initial-s;if(n){const t=e[Ts]();t[Hr](t.occur);t.occur=null;i[a].push(t);i[Er](r,t);for(let e=1;e0)this._bindOccurrences(a,[e[0]],null);else if(this.emptyMerge){const e=t[Sr]===Ln?-1:t[Sr],i=a[Ws]=new XmlObject(e,a.name||"root");t[Hs](i);this._bindElement(a,i)}continue}if(!a[dr]())continue;let e=!1,s=null,r=null,n=null;if(a.bind){switch(a.bind.match){case"none":this._setAndBind(a,t);continue;case"global":e=!0;break;case"dataRef":if(!a.bind.ref){warn(`XFA - ref is empty in node ${a[kr]}.`);this._setAndBind(a,t);continue}r=a.bind.ref}a.bind.picture&&(s=a.bind.picture[Os])}const[g,o]=this._getOccurInfo(a);if(r){n=searchNode(this.root,t,r,!0,!1);if(null===n){n=createDataNode(this.data,t,r);if(!n)continue;this._isConsumeData()&&(n[qs]=!0);this._setAndBind(a,n);continue}this._isConsumeData()&&(n=n.filter((e=>!e[qs])));n.length>o?n=n.slice(0,o):0===n.length&&(n=null);n&&this._isConsumeData()&&n.forEach((e=>{e[qs]=!0}))}else{if(!a.name){this._setAndBind(a,t);continue}if(this._isConsumeData()){const i=[];for(;i.length0?i:null}else{n=t[sr](a.name,!1,this.emptyMerge).next().value;if(!n){if(0===g){i.push(a);continue}const e=t[Sr]===Ln?-1:t[Sr];n=a[Ws]=new XmlObject(e,a.name);this.emptyMerge&&(n[qs]=!0);t[Hs](n);this._setAndBind(a,n);continue}this.emptyMerge&&(n[qs]=!0);n=[n]}}n?this._bindOccurrences(a,n,s):g>0?this._setAndBind(a,t):i.push(a)}i.forEach((e=>e[Ir]()[Hr](e)))}}class DataHandler{constructor(e,t){this.data=t;this.dataset=e.datasets||null}serialize(e){const t=[[-1,this.data[rr]()]];for(;t.length>0;){const i=t.at(-1),[a,s]=i;if(a+1===s.length){t.pop();continue}const r=s[++i[0]],n=e.get(r[Vr]);if(n)r[qr](n);else{const t=r[_s]();for(const i of t.values()){const t=e.get(i[Vr]);if(t){i[qr](t);break}}}const g=r[rr]();g.length>0&&t.push([-1,g])}const i=[''];if(this.dataset)for(const e of this.dataset[rr]())"data"!==e[kr]&&e[Xr](i);this.data[Xr](i);i.push("");return i.join("")}}const Hn=_r.config.id;class Acrobat extends XFAObject{constructor(e){super(Hn,"acrobat",!0);this.acrobat7=null;this.autoSave=null;this.common=null;this.validate=null;this.validateApprovalSignatures=null;this.submitUrl=new XFAObjectArray}}class Acrobat7 extends XFAObject{constructor(e){super(Hn,"acrobat7",!0);this.dynamicRender=null}}class ADBE_JSConsole extends OptionObject{constructor(e){super(Hn,"ADBE_JSConsole",["delegate","Enable","Disable"])}}class ADBE_JSDebugger extends OptionObject{constructor(e){super(Hn,"ADBE_JSDebugger",["delegate","Enable","Disable"])}}class AddSilentPrint extends Option01{constructor(e){super(Hn,"addSilentPrint")}}class AddViewerPreferences extends Option01{constructor(e){super(Hn,"addViewerPreferences")}}class AdjustData extends Option10{constructor(e){super(Hn,"adjustData")}}class AdobeExtensionLevel extends IntegerObject{constructor(e){super(Hn,"adobeExtensionLevel",0,(e=>e>=1&&e<=8))}}class Agent extends XFAObject{constructor(e){super(Hn,"agent",!0);this.name=e.name?e.name.trim():"";this.common=new XFAObjectArray}}class AlwaysEmbed extends ContentObject{constructor(e){super(Hn,"alwaysEmbed")}}class Amd extends StringObject{constructor(e){super(Hn,"amd")}}class config_Area extends XFAObject{constructor(e){super(Hn,"area");this.level=getInteger({data:e.level,defaultValue:0,validate:e=>e>=1&&e<=3});this.name=getStringOption(e.name,["","barcode","coreinit","deviceDriver","font","general","layout","merge","script","signature","sourceSet","templateCache"])}}class Attributes extends OptionObject{constructor(e){super(Hn,"attributes",["preserve","delegate","ignore"])}}class AutoSave extends OptionObject{constructor(e){super(Hn,"autoSave",["disabled","enabled"])}}class Base extends StringObject{constructor(e){super(Hn,"base")}}class BatchOutput extends XFAObject{constructor(e){super(Hn,"batchOutput");this.format=getStringOption(e.format,["none","concat","zip","zipCompress"])}}class BehaviorOverride extends ContentObject{constructor(e){super(Hn,"behaviorOverride")}[Zs](){this[Os]=new Map(this[Os].trim().split(/\s+/).filter((e=>e.includes(":"))).map((e=>e.split(":",2))))}}class Cache extends XFAObject{constructor(e){super(Hn,"cache",!0);this.templateCache=null}}class Change extends Option01{constructor(e){super(Hn,"change")}}class Common extends XFAObject{constructor(e){super(Hn,"common",!0);this.data=null;this.locale=null;this.localeSet=null;this.messaging=null;this.suppressBanner=null;this.template=null;this.validationMessaging=null;this.versionControl=null;this.log=new XFAObjectArray}}class Compress extends XFAObject{constructor(e){super(Hn,"compress");this.scope=getStringOption(e.scope,["imageOnly","document"])}}class CompressLogicalStructure extends Option01{constructor(e){super(Hn,"compressLogicalStructure")}}class CompressObjectStream extends Option10{constructor(e){super(Hn,"compressObjectStream")}}class Compression extends XFAObject{constructor(e){super(Hn,"compression",!0);this.compressLogicalStructure=null;this.compressObjectStream=null;this.level=null;this.type=null}}class Config extends XFAObject{constructor(e){super(Hn,"config",!0);this.acrobat=null;this.present=null;this.trace=null;this.agent=new XFAObjectArray}}class Conformance extends OptionObject{constructor(e){super(Hn,"conformance",["A","B"])}}class ContentCopy extends Option01{constructor(e){super(Hn,"contentCopy")}}class Copies extends IntegerObject{constructor(e){super(Hn,"copies",1,(e=>e>=1))}}class Creator extends StringObject{constructor(e){super(Hn,"creator")}}class CurrentPage extends IntegerObject{constructor(e){super(Hn,"currentPage",0,(e=>e>=0))}}class Data extends XFAObject{constructor(e){super(Hn,"data",!0);this.adjustData=null;this.attributes=null;this.incrementalLoad=null;this.outputXSL=null;this.range=null;this.record=null;this.startNode=null;this.uri=null;this.window=null;this.xsl=null;this.excludeNS=new XFAObjectArray;this.transform=new XFAObjectArray}}class Debug extends XFAObject{constructor(e){super(Hn,"debug",!0);this.uri=null}}class DefaultTypeface extends ContentObject{constructor(e){super(Hn,"defaultTypeface");this.writingScript=getStringOption(e.writingScript,["*","Arabic","Cyrillic","EastEuropeanRoman","Greek","Hebrew","Japanese","Korean","Roman","SimplifiedChinese","Thai","TraditionalChinese","Vietnamese"])}}class Destination extends OptionObject{constructor(e){super(Hn,"destination",["pdf","pcl","ps","webClient","zpl"])}}class DocumentAssembly extends Option01{constructor(e){super(Hn,"documentAssembly")}}class Driver extends XFAObject{constructor(e){super(Hn,"driver",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class DuplexOption extends OptionObject{constructor(e){super(Hn,"duplexOption",["simplex","duplexFlipLongEdge","duplexFlipShortEdge"])}}class DynamicRender extends OptionObject{constructor(e){super(Hn,"dynamicRender",["forbidden","required"])}}class Embed extends Option01{constructor(e){super(Hn,"embed")}}class config_Encrypt extends Option01{constructor(e){super(Hn,"encrypt")}}class config_Encryption extends XFAObject{constructor(e){super(Hn,"encryption",!0);this.encrypt=null;this.encryptionLevel=null;this.permissions=null}}class EncryptionLevel extends OptionObject{constructor(e){super(Hn,"encryptionLevel",["40bit","128bit"])}}class Enforce extends StringObject{constructor(e){super(Hn,"enforce")}}class Equate extends XFAObject{constructor(e){super(Hn,"equate");this.force=getInteger({data:e.force,defaultValue:1,validate:e=>0===e});this.from=e.from||"";this.to=e.to||""}}class EquateRange extends XFAObject{constructor(e){super(Hn,"equateRange");this.from=e.from||"";this.to=e.to||"";this._unicodeRange=e.unicodeRange||""}get unicodeRange(){const e=[],t=/U\+([0-9a-fA-F]+)/,i=this._unicodeRange;for(let a of i.split(",").map((e=>e.trim())).filter((e=>!!e))){a=a.split("-",2).map((e=>{const i=e.match(t);return i?parseInt(i[1],16):0}));1===a.length&&a.push(a[0]);e.push(a)}return shadow(this,"unicodeRange",e)}}class Exclude extends ContentObject{constructor(e){super(Hn,"exclude")}[Zs](){this[Os]=this[Os].trim().split(/\s+/).filter((e=>e&&["calculate","close","enter","exit","initialize","ready","validate"].includes(e)))}}class ExcludeNS extends StringObject{constructor(e){super(Hn,"excludeNS")}}class FlipLabel extends OptionObject{constructor(e){super(Hn,"flipLabel",["usePrinterSetting","on","off"])}}class config_FontInfo extends XFAObject{constructor(e){super(Hn,"fontInfo",!0);this.embed=null;this.map=null;this.subsetBelow=null;this.alwaysEmbed=new XFAObjectArray;this.defaultTypeface=new XFAObjectArray;this.neverEmbed=new XFAObjectArray}}class FormFieldFilling extends Option01{constructor(e){super(Hn,"formFieldFilling")}}class GroupParent extends StringObject{constructor(e){super(Hn,"groupParent")}}class IfEmpty extends OptionObject{constructor(e){super(Hn,"ifEmpty",["dataValue","dataGroup","ignore","remove"])}}class IncludeXDPContent extends StringObject{constructor(e){super(Hn,"includeXDPContent")}}class IncrementalLoad extends OptionObject{constructor(e){super(Hn,"incrementalLoad",["none","forwardOnly"])}}class IncrementalMerge extends Option01{constructor(e){super(Hn,"incrementalMerge")}}class Interactive extends Option01{constructor(e){super(Hn,"interactive")}}class Jog extends OptionObject{constructor(e){super(Hn,"jog",["usePrinterSetting","none","pageSet"])}}class LabelPrinter extends XFAObject{constructor(e){super(Hn,"labelPrinter",!0);this.name=getStringOption(e.name,["zpl","dpl","ipl","tcpl"]);this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class Layout extends OptionObject{constructor(e){super(Hn,"layout",["paginate","panel"])}}class Level extends IntegerObject{constructor(e){super(Hn,"level",0,(e=>e>0))}}class Linearized extends Option01{constructor(e){super(Hn,"linearized")}}class Locale extends StringObject{constructor(e){super(Hn,"locale")}}class LocaleSet extends StringObject{constructor(e){super(Hn,"localeSet")}}class Log extends XFAObject{constructor(e){super(Hn,"log",!0);this.mode=null;this.threshold=null;this.to=null;this.uri=null}}class MapElement extends XFAObject{constructor(e){super(Hn,"map",!0);this.equate=new XFAObjectArray;this.equateRange=new XFAObjectArray}}class MediumInfo extends XFAObject{constructor(e){super(Hn,"mediumInfo",!0);this.map=null}}class config_Message extends XFAObject{constructor(e){super(Hn,"message",!0);this.msgId=null;this.severity=null}}class Messaging extends XFAObject{constructor(e){super(Hn,"messaging",!0);this.message=new XFAObjectArray}}class Mode extends OptionObject{constructor(e){super(Hn,"mode",["append","overwrite"])}}class ModifyAnnots extends Option01{constructor(e){super(Hn,"modifyAnnots")}}class MsgId extends IntegerObject{constructor(e){super(Hn,"msgId",1,(e=>e>=1))}}class NameAttr extends StringObject{constructor(e){super(Hn,"nameAttr")}}class NeverEmbed extends ContentObject{constructor(e){super(Hn,"neverEmbed")}}class NumberOfCopies extends IntegerObject{constructor(e){super(Hn,"numberOfCopies",null,(e=>e>=2&&e<=5))}}class OpenAction extends XFAObject{constructor(e){super(Hn,"openAction",!0);this.destination=null}}class Output extends XFAObject{constructor(e){super(Hn,"output",!0);this.to=null;this.type=null;this.uri=null}}class OutputBin extends StringObject{constructor(e){super(Hn,"outputBin")}}class OutputXSL extends XFAObject{constructor(e){super(Hn,"outputXSL",!0);this.uri=null}}class Overprint extends OptionObject{constructor(e){super(Hn,"overprint",["none","both","draw","field"])}}class Packets extends StringObject{constructor(e){super(Hn,"packets")}[Zs](){"*"!==this[Os]&&(this[Os]=this[Os].trim().split(/\s+/).filter((e=>["config","datasets","template","xfdf","xslt"].includes(e))))}}class PageOffset extends XFAObject{constructor(e){super(Hn,"pageOffset");this.x=getInteger({data:e.x,defaultValue:"useXDCSetting",validate:e=>!0});this.y=getInteger({data:e.y,defaultValue:"useXDCSetting",validate:e=>!0})}}class PageRange extends StringObject{constructor(e){super(Hn,"pageRange")}[Zs](){const e=this[Os].trim().split(/\s+/).map((e=>parseInt(e,10))),t=[];for(let i=0,a=e.length;i!1))}}class Pcl extends XFAObject{constructor(e){super(Hn,"pcl",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.pageOffset=null;this.staple=null;this.xdc=null}}class Pdf extends XFAObject{constructor(e){super(Hn,"pdf",!0);this.name=e.name||"";this.adobeExtensionLevel=null;this.batchOutput=null;this.compression=null;this.creator=null;this.encryption=null;this.fontInfo=null;this.interactive=null;this.linearized=null;this.openAction=null;this.pdfa=null;this.producer=null;this.renderPolicy=null;this.scriptModel=null;this.silentPrint=null;this.submitFormat=null;this.tagged=null;this.version=null;this.viewerPreferences=null;this.xdc=null}}class Pdfa extends XFAObject{constructor(e){super(Hn,"pdfa",!0);this.amd=null;this.conformance=null;this.includeXDPContent=null;this.part=null}}class Permissions extends XFAObject{constructor(e){super(Hn,"permissions",!0);this.accessibleContent=null;this.change=null;this.contentCopy=null;this.documentAssembly=null;this.formFieldFilling=null;this.modifyAnnots=null;this.plaintextMetadata=null;this.print=null;this.printHighQuality=null}}class PickTrayByPDFSize extends Option01{constructor(e){super(Hn,"pickTrayByPDFSize")}}class config_Picture extends StringObject{constructor(e){super(Hn,"picture")}}class PlaintextMetadata extends Option01{constructor(e){super(Hn,"plaintextMetadata")}}class Presence extends OptionObject{constructor(e){super(Hn,"presence",["preserve","dissolve","dissolveStructure","ignore","remove"])}}class Present extends XFAObject{constructor(e){super(Hn,"present",!0);this.behaviorOverride=null;this.cache=null;this.common=null;this.copies=null;this.destination=null;this.incrementalMerge=null;this.layout=null;this.output=null;this.overprint=null;this.pagination=null;this.paginationOverride=null;this.script=null;this.validate=null;this.xdp=null;this.driver=new XFAObjectArray;this.labelPrinter=new XFAObjectArray;this.pcl=new XFAObjectArray;this.pdf=new XFAObjectArray;this.ps=new XFAObjectArray;this.submitUrl=new XFAObjectArray;this.webClient=new XFAObjectArray;this.zpl=new XFAObjectArray}}class Print extends Option01{constructor(e){super(Hn,"print")}}class PrintHighQuality extends Option01{constructor(e){super(Hn,"printHighQuality")}}class PrintScaling extends OptionObject{constructor(e){super(Hn,"printScaling",["appdefault","noScaling"])}}class PrinterName extends StringObject{constructor(e){super(Hn,"printerName")}}class Producer extends StringObject{constructor(e){super(Hn,"producer")}}class Ps extends XFAObject{constructor(e){super(Hn,"ps",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.staple=null;this.xdc=null}}class Range extends ContentObject{constructor(e){super(Hn,"range")}[Zs](){this[Os]=this[Os].trim().split(/\s*,\s*/,2).map((e=>e.split("-").map((e=>parseInt(e.trim(),10))))).filter((e=>e.every((e=>!isNaN(e))))).map((e=>{1===e.length&&e.push(e[0]);return e}))}}class Record extends ContentObject{constructor(e){super(Hn,"record")}[Zs](){this[Os]=this[Os].trim();const e=parseInt(this[Os],10);!isNaN(e)&&e>=0&&(this[Os]=e)}}class Relevant extends ContentObject{constructor(e){super(Hn,"relevant")}[Zs](){this[Os]=this[Os].trim().split(/\s+/)}}class Rename extends ContentObject{constructor(e){super(Hn,"rename")}[Zs](){this[Os]=this[Os].trim();(this[Os].toLowerCase().startsWith("xml")||new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*","u").test(this[Os]))&&warn("XFA - Rename: invalid XFA name")}}class RenderPolicy extends OptionObject{constructor(e){super(Hn,"renderPolicy",["server","client"])}}class RunScripts extends OptionObject{constructor(e){super(Hn,"runScripts",["both","client","none","server"])}}class config_Script extends XFAObject{constructor(e){super(Hn,"script",!0);this.currentPage=null;this.exclude=null;this.runScripts=null}}class ScriptModel extends OptionObject{constructor(e){super(Hn,"scriptModel",["XFA","none"])}}class Severity extends OptionObject{constructor(e){super(Hn,"severity",["ignore","error","information","trace","warning"])}}class SilentPrint extends XFAObject{constructor(e){super(Hn,"silentPrint",!0);this.addSilentPrint=null;this.printerName=null}}class Staple extends XFAObject{constructor(e){super(Hn,"staple");this.mode=getStringOption(e.mode,["usePrinterSetting","on","off"])}}class StartNode extends StringObject{constructor(e){super(Hn,"startNode")}}class StartPage extends IntegerObject{constructor(e){super(Hn,"startPage",0,(e=>!0))}}class SubmitFormat extends OptionObject{constructor(e){super(Hn,"submitFormat",["html","delegate","fdf","xml","pdf"])}}class SubmitUrl extends StringObject{constructor(e){super(Hn,"submitUrl")}}class SubsetBelow extends IntegerObject{constructor(e){super(Hn,"subsetBelow",100,(e=>e>=0&&e<=100))}}class SuppressBanner extends Option01{constructor(e){super(Hn,"suppressBanner")}}class Tagged extends Option01{constructor(e){super(Hn,"tagged")}}class config_Template extends XFAObject{constructor(e){super(Hn,"template",!0);this.base=null;this.relevant=null;this.startPage=null;this.uri=null;this.xsl=null}}class Threshold extends OptionObject{constructor(e){super(Hn,"threshold",["trace","error","information","warning"])}}class To extends OptionObject{constructor(e){super(Hn,"to",["null","memory","stderr","stdout","system","uri"])}}class TemplateCache extends XFAObject{constructor(e){super(Hn,"templateCache");this.maxEntries=getInteger({data:e.maxEntries,defaultValue:5,validate:e=>e>=0})}}class Trace extends XFAObject{constructor(e){super(Hn,"trace",!0);this.area=new XFAObjectArray}}class Transform extends XFAObject{constructor(e){super(Hn,"transform",!0);this.groupParent=null;this.ifEmpty=null;this.nameAttr=null;this.picture=null;this.presence=null;this.rename=null;this.whitespace=null}}class Type extends OptionObject{constructor(e){super(Hn,"type",["none","ascii85","asciiHex","ccittfax","flate","lzw","runLength","native","xdp","mergedXDP"])}}class Uri extends StringObject{constructor(e){super(Hn,"uri")}}class config_Validate extends OptionObject{constructor(e){super(Hn,"validate",["preSubmit","prePrint","preExecute","preSave"])}}class ValidateApprovalSignatures extends ContentObject{constructor(e){super(Hn,"validateApprovalSignatures")}[Zs](){this[Os]=this[Os].trim().split(/\s+/).filter((e=>["docReady","postSign"].includes(e)))}}class ValidationMessaging extends OptionObject{constructor(e){super(Hn,"validationMessaging",["allMessagesIndividually","allMessagesTogether","firstMessageOnly","noMessages"])}}class Version extends OptionObject{constructor(e){super(Hn,"version",["1.7","1.6","1.5","1.4","1.3","1.2"])}}class VersionControl extends XFAObject{constructor(e){super(Hn,"VersionControl");this.outputBelow=getStringOption(e.outputBelow,["warn","error","update"]);this.sourceAbove=getStringOption(e.sourceAbove,["warn","error"]);this.sourceBelow=getStringOption(e.sourceBelow,["update","maintain"])}}class ViewerPreferences extends XFAObject{constructor(e){super(Hn,"viewerPreferences",!0);this.ADBE_JSConsole=null;this.ADBE_JSDebugger=null;this.addViewerPreferences=null;this.duplexOption=null;this.enforce=null;this.numberOfCopies=null;this.pageRange=null;this.pickTrayByPDFSize=null;this.printScaling=null}}class WebClient extends XFAObject{constructor(e){super(Hn,"webClient",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class Whitespace extends OptionObject{constructor(e){super(Hn,"whitespace",["preserve","ltrim","normalize","rtrim","trim"])}}class Window extends ContentObject{constructor(e){super(Hn,"window")}[Zs](){const e=this[Os].trim().split(/\s*,\s*/,2).map((e=>parseInt(e,10)));if(e.some((e=>isNaN(e))))this[Os]=[0,0];else{1===e.length&&e.push(e[0]);this[Os]=e}}}class Xdc extends XFAObject{constructor(e){super(Hn,"xdc",!0);this.uri=new XFAObjectArray;this.xsl=new XFAObjectArray}}class Xdp extends XFAObject{constructor(e){super(Hn,"xdp",!0);this.packets=null}}class Xsl extends XFAObject{constructor(e){super(Hn,"xsl",!0);this.debug=null;this.uri=null}}class Zpl extends XFAObject{constructor(e){super(Hn,"zpl",!0);this.name=e.name?e.name.trim():"";this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class ConfigNamespace{static[zr](e,t){if(ConfigNamespace.hasOwnProperty(e))return ConfigNamespace[e](t)}static acrobat(e){return new Acrobat(e)}static acrobat7(e){return new Acrobat7(e)}static ADBE_JSConsole(e){return new ADBE_JSConsole(e)}static ADBE_JSDebugger(e){return new ADBE_JSDebugger(e)}static addSilentPrint(e){return new AddSilentPrint(e)}static addViewerPreferences(e){return new AddViewerPreferences(e)}static adjustData(e){return new AdjustData(e)}static adobeExtensionLevel(e){return new AdobeExtensionLevel(e)}static agent(e){return new Agent(e)}static alwaysEmbed(e){return new AlwaysEmbed(e)}static amd(e){return new Amd(e)}static area(e){return new config_Area(e)}static attributes(e){return new Attributes(e)}static autoSave(e){return new AutoSave(e)}static base(e){return new Base(e)}static batchOutput(e){return new BatchOutput(e)}static behaviorOverride(e){return new BehaviorOverride(e)}static cache(e){return new Cache(e)}static change(e){return new Change(e)}static common(e){return new Common(e)}static compress(e){return new Compress(e)}static compressLogicalStructure(e){return new CompressLogicalStructure(e)}static compressObjectStream(e){return new CompressObjectStream(e)}static compression(e){return new Compression(e)}static config(e){return new Config(e)}static conformance(e){return new Conformance(e)}static contentCopy(e){return new ContentCopy(e)}static copies(e){return new Copies(e)}static creator(e){return new Creator(e)}static currentPage(e){return new CurrentPage(e)}static data(e){return new Data(e)}static debug(e){return new Debug(e)}static defaultTypeface(e){return new DefaultTypeface(e)}static destination(e){return new Destination(e)}static documentAssembly(e){return new DocumentAssembly(e)}static driver(e){return new Driver(e)}static duplexOption(e){return new DuplexOption(e)}static dynamicRender(e){return new DynamicRender(e)}static embed(e){return new Embed(e)}static encrypt(e){return new config_Encrypt(e)}static encryption(e){return new config_Encryption(e)}static encryptionLevel(e){return new EncryptionLevel(e)}static enforce(e){return new Enforce(e)}static equate(e){return new Equate(e)}static equateRange(e){return new EquateRange(e)}static exclude(e){return new Exclude(e)}static excludeNS(e){return new ExcludeNS(e)}static flipLabel(e){return new FlipLabel(e)}static fontInfo(e){return new config_FontInfo(e)}static formFieldFilling(e){return new FormFieldFilling(e)}static groupParent(e){return new GroupParent(e)}static ifEmpty(e){return new IfEmpty(e)}static includeXDPContent(e){return new IncludeXDPContent(e)}static incrementalLoad(e){return new IncrementalLoad(e)}static incrementalMerge(e){return new IncrementalMerge(e)}static interactive(e){return new Interactive(e)}static jog(e){return new Jog(e)}static labelPrinter(e){return new LabelPrinter(e)}static layout(e){return new Layout(e)}static level(e){return new Level(e)}static linearized(e){return new Linearized(e)}static locale(e){return new Locale(e)}static localeSet(e){return new LocaleSet(e)}static log(e){return new Log(e)}static map(e){return new MapElement(e)}static mediumInfo(e){return new MediumInfo(e)}static message(e){return new config_Message(e)}static messaging(e){return new Messaging(e)}static mode(e){return new Mode(e)}static modifyAnnots(e){return new ModifyAnnots(e)}static msgId(e){return new MsgId(e)}static nameAttr(e){return new NameAttr(e)}static neverEmbed(e){return new NeverEmbed(e)}static numberOfCopies(e){return new NumberOfCopies(e)}static openAction(e){return new OpenAction(e)}static output(e){return new Output(e)}static outputBin(e){return new OutputBin(e)}static outputXSL(e){return new OutputXSL(e)}static overprint(e){return new Overprint(e)}static packets(e){return new Packets(e)}static pageOffset(e){return new PageOffset(e)}static pageRange(e){return new PageRange(e)}static pagination(e){return new Pagination(e)}static paginationOverride(e){return new PaginationOverride(e)}static part(e){return new Part(e)}static pcl(e){return new Pcl(e)}static pdf(e){return new Pdf(e)}static pdfa(e){return new Pdfa(e)}static permissions(e){return new Permissions(e)}static pickTrayByPDFSize(e){return new PickTrayByPDFSize(e)}static picture(e){return new config_Picture(e)}static plaintextMetadata(e){return new PlaintextMetadata(e)}static presence(e){return new Presence(e)}static present(e){return new Present(e)}static print(e){return new Print(e)}static printHighQuality(e){return new PrintHighQuality(e)}static printScaling(e){return new PrintScaling(e)}static printerName(e){return new PrinterName(e)}static producer(e){return new Producer(e)}static ps(e){return new Ps(e)}static range(e){return new Range(e)}static record(e){return new Record(e)}static relevant(e){return new Relevant(e)}static rename(e){return new Rename(e)}static renderPolicy(e){return new RenderPolicy(e)}static runScripts(e){return new RunScripts(e)}static script(e){return new config_Script(e)}static scriptModel(e){return new ScriptModel(e)}static severity(e){return new Severity(e)}static silentPrint(e){return new SilentPrint(e)}static staple(e){return new Staple(e)}static startNode(e){return new StartNode(e)}static startPage(e){return new StartPage(e)}static submitFormat(e){return new SubmitFormat(e)}static submitUrl(e){return new SubmitUrl(e)}static subsetBelow(e){return new SubsetBelow(e)}static suppressBanner(e){return new SuppressBanner(e)}static tagged(e){return new Tagged(e)}static template(e){return new config_Template(e)}static templateCache(e){return new TemplateCache(e)}static threshold(e){return new Threshold(e)}static to(e){return new To(e)}static trace(e){return new Trace(e)}static transform(e){return new Transform(e)}static type(e){return new Type(e)}static uri(e){return new Uri(e)}static validate(e){return new config_Validate(e)}static validateApprovalSignatures(e){return new ValidateApprovalSignatures(e)}static validationMessaging(e){return new ValidationMessaging(e)}static version(e){return new Version(e)}static versionControl(e){return new VersionControl(e)}static viewerPreferences(e){return new ViewerPreferences(e)}static webClient(e){return new WebClient(e)}static whitespace(e){return new Whitespace(e)}static window(e){return new Window(e)}static xdc(e){return new Xdc(e)}static xdp(e){return new Xdp(e)}static xsl(e){return new Xsl(e)}static zpl(e){return new Zpl(e)}}const Jn=_r.connectionSet.id;class ConnectionSet extends XFAObject{constructor(e){super(Jn,"connectionSet",!0);this.wsdlConnection=new XFAObjectArray;this.xmlConnection=new XFAObjectArray;this.xsdConnection=new XFAObjectArray}}class EffectiveInputPolicy extends XFAObject{constructor(e){super(Jn,"effectiveInputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EffectiveOutputPolicy extends XFAObject{constructor(e){super(Jn,"effectiveOutputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Operation extends StringObject{constructor(e){super(Jn,"operation");this.id=e.id||"";this.input=e.input||"";this.name=e.name||"";this.output=e.output||"";this.use=e.use||"";this.usehref=e.usehref||""}}class RootElement extends StringObject{constructor(e){super(Jn,"rootElement");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAction extends StringObject{constructor(e){super(Jn,"soapAction");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAddress extends StringObject{constructor(e){super(Jn,"soapAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class connection_set_Uri extends StringObject{constructor(e){super(Jn,"uri");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlAddress extends StringObject{constructor(e){super(Jn,"wsdlAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlConnection extends XFAObject{constructor(e){super(Jn,"wsdlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.effectiveInputPolicy=null;this.effectiveOutputPolicy=null;this.operation=null;this.soapAction=null;this.soapAddress=null;this.wsdlAddress=null}}class XmlConnection extends XFAObject{constructor(e){super(Jn,"xmlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.uri=null}}class XsdConnection extends XFAObject{constructor(e){super(Jn,"xsdConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.rootElement=null;this.uri=null}}class ConnectionSetNamespace{static[zr](e,t){if(ConnectionSetNamespace.hasOwnProperty(e))return ConnectionSetNamespace[e](t)}static connectionSet(e){return new ConnectionSet(e)}static effectiveInputPolicy(e){return new EffectiveInputPolicy(e)}static effectiveOutputPolicy(e){return new EffectiveOutputPolicy(e)}static operation(e){return new Operation(e)}static rootElement(e){return new RootElement(e)}static soapAction(e){return new SoapAction(e)}static soapAddress(e){return new SoapAddress(e)}static uri(e){return new connection_set_Uri(e)}static wsdlAddress(e){return new WsdlAddress(e)}static wsdlConnection(e){return new WsdlConnection(e)}static xmlConnection(e){return new XmlConnection(e)}static xsdConnection(e){return new XsdConnection(e)}}const Yn=_r.datasets.id;class datasets_Data extends XmlObject{constructor(e){super(Yn,"data",e)}[mr](){return!0}}class Datasets extends XFAObject{constructor(e){super(Yn,"datasets",!0);this.data=null;this.Signature=null}[Nr](e){const t=e[kr];("data"===t&&e[Sr]===Yn||"Signature"===t&&e[Sr]===_r.signature.id)&&(this[t]=e);this[Hs](e)}}class DatasetsNamespace{static[zr](e,t){if(DatasetsNamespace.hasOwnProperty(e))return DatasetsNamespace[e](t)}static datasets(e){return new Datasets(e)}static data(e){return new datasets_Data(e)}}const vn=_r.localeSet.id;class CalendarSymbols extends XFAObject{constructor(e){super(vn,"calendarSymbols",!0);this.name="gregorian";this.dayNames=new XFAObjectArray(2);this.eraNames=null;this.meridiemNames=null;this.monthNames=new XFAObjectArray(2)}}class CurrencySymbol extends StringObject{constructor(e){super(vn,"currencySymbol");this.name=getStringOption(e.name,["symbol","isoname","decimal"])}}class CurrencySymbols extends XFAObject{constructor(e){super(vn,"currencySymbols",!0);this.currencySymbol=new XFAObjectArray(3)}}class DatePattern extends StringObject{constructor(e){super(vn,"datePattern");this.name=getStringOption(e.name,["full","long","med","short"])}}class DatePatterns extends XFAObject{constructor(e){super(vn,"datePatterns",!0);this.datePattern=new XFAObjectArray(4)}}class DateTimeSymbols extends ContentObject{constructor(e){super(vn,"dateTimeSymbols")}}class Day extends StringObject{constructor(e){super(vn,"day")}}class DayNames extends XFAObject{constructor(e){super(vn,"dayNames",!0);this.abbr=getInteger({data:e.abbr,defaultValue:0,validate:e=>1===e});this.day=new XFAObjectArray(7)}}class Era extends StringObject{constructor(e){super(vn,"era")}}class EraNames extends XFAObject{constructor(e){super(vn,"eraNames",!0);this.era=new XFAObjectArray(2)}}class locale_set_Locale extends XFAObject{constructor(e){super(vn,"locale",!0);this.desc=e.desc||"";this.name="isoname";this.calendarSymbols=null;this.currencySymbols=null;this.datePatterns=null;this.dateTimeSymbols=null;this.numberPatterns=null;this.numberSymbols=null;this.timePatterns=null;this.typeFaces=null}}class locale_set_LocaleSet extends XFAObject{constructor(e){super(vn,"localeSet",!0);this.locale=new XFAObjectArray}}class Meridiem extends StringObject{constructor(e){super(vn,"meridiem")}}class MeridiemNames extends XFAObject{constructor(e){super(vn,"meridiemNames",!0);this.meridiem=new XFAObjectArray(2)}}class Month extends StringObject{constructor(e){super(vn,"month")}}class MonthNames extends XFAObject{constructor(e){super(vn,"monthNames",!0);this.abbr=getInteger({data:e.abbr,defaultValue:0,validate:e=>1===e});this.month=new XFAObjectArray(12)}}class NumberPattern extends StringObject{constructor(e){super(vn,"numberPattern");this.name=getStringOption(e.name,["full","long","med","short"])}}class NumberPatterns extends XFAObject{constructor(e){super(vn,"numberPatterns",!0);this.numberPattern=new XFAObjectArray(4)}}class NumberSymbol extends StringObject{constructor(e){super(vn,"numberSymbol");this.name=getStringOption(e.name,["decimal","grouping","percent","minus","zero"])}}class NumberSymbols extends XFAObject{constructor(e){super(vn,"numberSymbols",!0);this.numberSymbol=new XFAObjectArray(5)}}class TimePattern extends StringObject{constructor(e){super(vn,"timePattern");this.name=getStringOption(e.name,["full","long","med","short"])}}class TimePatterns extends XFAObject{constructor(e){super(vn,"timePatterns",!0);this.timePattern=new XFAObjectArray(4)}}class TypeFace extends XFAObject{constructor(e){super(vn,"typeFace",!0);this.name=""|e.name}}class TypeFaces extends XFAObject{constructor(e){super(vn,"typeFaces",!0);this.typeFace=new XFAObjectArray}}class LocaleSetNamespace{static[zr](e,t){if(LocaleSetNamespace.hasOwnProperty(e))return LocaleSetNamespace[e](t)}static calendarSymbols(e){return new CalendarSymbols(e)}static currencySymbol(e){return new CurrencySymbol(e)}static currencySymbols(e){return new CurrencySymbols(e)}static datePattern(e){return new DatePattern(e)}static datePatterns(e){return new DatePatterns(e)}static dateTimeSymbols(e){return new DateTimeSymbols(e)}static day(e){return new Day(e)}static dayNames(e){return new DayNames(e)}static era(e){return new Era(e)}static eraNames(e){return new EraNames(e)}static locale(e){return new locale_set_Locale(e)}static localeSet(e){return new locale_set_LocaleSet(e)}static meridiem(e){return new Meridiem(e)}static meridiemNames(e){return new MeridiemNames(e)}static month(e){return new Month(e)}static monthNames(e){return new MonthNames(e)}static numberPattern(e){return new NumberPattern(e)}static numberPatterns(e){return new NumberPatterns(e)}static numberSymbol(e){return new NumberSymbol(e)}static numberSymbols(e){return new NumberSymbols(e)}static timePattern(e){return new TimePattern(e)}static timePatterns(e){return new TimePatterns(e)}static typeFace(e){return new TypeFace(e)}static typeFaces(e){return new TypeFaces(e)}}const Kn=_r.signature.id;class signature_Signature extends XFAObject{constructor(e){super(Kn,"signature",!0)}}class SignatureNamespace{static[zr](e,t){if(SignatureNamespace.hasOwnProperty(e))return SignatureNamespace[e](t)}static signature(e){return new signature_Signature(e)}}const Tn=_r.stylesheet.id;class Stylesheet extends XFAObject{constructor(e){super(Tn,"stylesheet",!0)}}class StylesheetNamespace{static[zr](e,t){if(StylesheetNamespace.hasOwnProperty(e))return StylesheetNamespace[e](t)}static stylesheet(e){return new Stylesheet(e)}}const qn=_r.xdp.id;class xdp_Xdp extends XFAObject{constructor(e){super(qn,"xdp",!0);this.uuid=e.uuid||"";this.timeStamp=e.timeStamp||"";this.config=null;this.connectionSet=null;this.datasets=null;this.localeSet=null;this.stylesheet=new XFAObjectArray;this.template=null}[Gr](e){const t=_r[e[kr]];return t&&e[Sr]===t.id}}class XdpNamespace{static[zr](e,t){if(XdpNamespace.hasOwnProperty(e))return XdpNamespace[e](t)}static xdp(e){return new xdp_Xdp(e)}}const On=_r.xhtml.id,Pn=Symbol(),Wn=new Set(["color","font","font-family","font-size","font-stretch","font-style","font-weight","margin","margin-bottom","margin-left","margin-right","margin-top","letter-spacing","line-height","orphans","page-break-after","page-break-before","page-break-inside","tab-interval","tab-stop","text-align","text-decoration","text-indent","vertical-align","widows","kerning-mode","xfa-font-horizontal-scale","xfa-font-vertical-scale","xfa-spacerun","xfa-tab-stops"]),jn=new Map([["page-break-after","breakAfter"],["page-break-before","breakBefore"],["page-break-inside","breakInside"],["kerning-mode",e=>"none"===e?"none":"normal"],["xfa-font-horizontal-scale",e=>`scaleX(${Math.max(0,Math.min(parseInt(e)/100)).toFixed(2)})`],["xfa-font-vertical-scale",e=>`scaleY(${Math.max(0,Math.min(parseInt(e)/100)).toFixed(2)})`],["xfa-spacerun",""],["xfa-tab-stops",""],["font-size",(e,t)=>measureToString(.99*(e=t.fontSize=Math.abs(getMeasurement(e))))],["letter-spacing",e=>measureToString(getMeasurement(e))],["line-height",e=>measureToString(getMeasurement(e))],["margin",e=>measureToString(getMeasurement(e))],["margin-bottom",e=>measureToString(getMeasurement(e))],["margin-left",e=>measureToString(getMeasurement(e))],["margin-right",e=>measureToString(getMeasurement(e))],["margin-top",e=>measureToString(getMeasurement(e))],["text-indent",e=>measureToString(getMeasurement(e))],["font-family",e=>e],["vertical-align",e=>measureToString(getMeasurement(e))]]),Xn=/\s+/g,Zn=/[\r\n]+/g,Vn=/\r\n?/g;function mapStyle(e,t,i){const a=Object.create(null);if(!e)return a;const s=Object.create(null);for(const[t,i]of e.split(";").map((e=>e.split(":",2)))){const e=jn.get(t);if(""===e)continue;let r=i;e&&(r="string"==typeof e?e:e(i,s));t.endsWith("scale")?a.transform=a.transform?`${a[t]} ${r}`:r:a[t.replaceAll(/-([a-zA-Z])/g,((e,t)=>t.toUpperCase()))]=r}a.fontFamily&&setFontFamily({typeface:a.fontFamily,weight:a.fontWeight||"normal",posture:a.fontStyle||"normal",size:s.fontSize||0},t,t[Cr].fontFinder,a);if(i&&a.verticalAlign&&"0px"!==a.verticalAlign&&a.fontSize){const e=.583,t=.333,i=getMeasurement(a.fontSize);a.fontSize=measureToString(i*e);a.verticalAlign=measureToString(Math.sign(getMeasurement(a.verticalAlign))*i*t)}i&&a.fontSize&&(a.fontSize=`calc(${a.fontSize} * var(--scale-factor))`);fixTextIndent(a);return a}const zn=new Set(["body","html"]);class XhtmlObject extends XmlObject{constructor(e,t){super(On,t);this[Pn]=!1;this.style=e.style||""}[Ys](e){super[Ys](e);this.style=function checkStyle(e){return e.style?e.style.trim().split(/\s*;\s*/).filter((e=>!!e)).map((e=>e.split(/\s*:\s*/,2))).filter((([t,i])=>{"font-family"===t&&e[Cr].usedTypefaces.add(i);return Wn.has(t)})).map((e=>e.join(":"))).join(";"):""}(this)}[xs](){return!zn.has(this[kr])}[Mr](e,t=!1){if(t)this[Pn]=!0;else{e=e.replaceAll(Zn,"");this.style.includes("xfa-spacerun:yes")||(e=e.replaceAll(Xn," "))}e&&(this[Os]+=e)}[Ur](e,t=!0){const i=Object.create(null),a={top:NaN,bottom:NaN,left:NaN,right:NaN};let s=null;for(const[e,t]of this.style.split(";").map((e=>e.split(":",2))))switch(e){case"font-family":i.typeface=stripQuotes(t);break;case"font-size":i.size=getMeasurement(t);break;case"font-weight":i.weight=t;break;case"font-style":i.posture=t;break;case"letter-spacing":i.letterSpacing=getMeasurement(t);break;case"margin":const e=t.split(/ \t/).map((e=>getMeasurement(e)));switch(e.length){case 1:a.top=a.bottom=a.left=a.right=e[0];break;case 2:a.top=a.bottom=e[0];a.left=a.right=e[1];break;case 3:a.top=e[0];a.bottom=e[2];a.left=a.right=e[1];break;case 4:a.top=e[0];a.left=e[1];a.bottom=e[2];a.right=e[3]}break;case"margin-top":a.top=getMeasurement(t);break;case"margin-bottom":a.bottom=getMeasurement(t);break;case"margin-left":a.left=getMeasurement(t);break;case"margin-right":a.right=getMeasurement(t);break;case"line-height":s=getMeasurement(t)}e.pushData(i,a,s);if(this[Os])e.addString(this[Os]);else for(const t of this[rr]())"#text"!==t[kr]?t[Ur](e):e.addString(t[Os]);t&&e.popFont()}[jr](e){const t=[];this[Xs]={children:t};this[Js]({});if(0===t.length&&!this[Os])return HTMLResult.EMPTY;let i;i=this[Pn]?this[Os]?this[Os].replaceAll(Vn,"\n"):void 0:this[Os]||void 0;return HTMLResult.success({name:this[kr],attributes:{href:this.href,style:mapStyle(this.style,this,this[Pn])},children:t,value:i})}}class A extends XhtmlObject{constructor(e){super(e,"a");this.href=fixURL(e.href)||""}}class B extends XhtmlObject{constructor(e){super(e,"b")}[Ur](e){e.pushFont({weight:"bold"});super[Ur](e);e.popFont()}}class Body extends XhtmlObject{constructor(e){super(e,"body")}[jr](e){const t=super[jr](e),{html:i}=t;if(!i)return HTMLResult.EMPTY;i.name="div";i.attributes.class=["xfaRich"];return t}}class Br extends XhtmlObject{constructor(e){super(e,"br")}[Pr](){return"\n"}[Ur](e){e.addString("\n")}[jr](e){return HTMLResult.success({name:"br"})}}class Html extends XhtmlObject{constructor(e){super(e,"html")}[jr](e){const t=[];this[Xs]={children:t};this[Js]({});if(0===t.length)return HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},value:this[Os]||""});if(1===t.length){const e=t[0];if(e.attributes?.class.includes("xfaRich"))return HTMLResult.success(e)}return HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},children:t})}}class I extends XhtmlObject{constructor(e){super(e,"i")}[Ur](e){e.pushFont({posture:"italic"});super[Ur](e);e.popFont()}}class Li extends XhtmlObject{constructor(e){super(e,"li")}}class Ol extends XhtmlObject{constructor(e){super(e,"ol")}}class P extends XhtmlObject{constructor(e){super(e,"p")}[Ur](e){super[Ur](e,!1);e.addString("\n");e.addPara();e.popFont()}[Pr](){return this[Ir]()[rr]().at(-1)===this?super[Pr]():super[Pr]()+"\n"}}class Span extends XhtmlObject{constructor(e){super(e,"span")}}class Sub extends XhtmlObject{constructor(e){super(e,"sub")}}class Sup extends XhtmlObject{constructor(e){super(e,"sup")}}class Ul extends XhtmlObject{constructor(e){super(e,"ul")}}class XhtmlNamespace{static[zr](e,t){if(XhtmlNamespace.hasOwnProperty(e))return XhtmlNamespace[e](t)}static a(e){return new A(e)}static b(e){return new B(e)}static body(e){return new Body(e)}static br(e){return new Br(e)}static html(e){return new Html(e)}static i(e){return new I(e)}static li(e){return new Li(e)}static ol(e){return new Ol(e)}static p(e){return new P(e)}static span(e){return new Span(e)}static sub(e){return new Sub(e)}static sup(e){return new Sup(e)}static ul(e){return new Ul(e)}}const _n={config:ConfigNamespace,connection:ConnectionSetNamespace,datasets:DatasetsNamespace,localeSet:LocaleSetNamespace,signature:SignatureNamespace,stylesheet:StylesheetNamespace,template:TemplateNamespace,xdp:XdpNamespace,xhtml:XhtmlNamespace};class UnknownNamespace{constructor(e){this.namespaceId=e}[zr](e,t){return new XmlObject(this.namespaceId,e,t)}}class Root extends XFAObject{constructor(e){super(-1,"root",Object.create(null));this.element=null;this[lr]=e}[Nr](e){this.element=e;return!0}[Zs](){super[Zs]();if(this.element.template instanceof Template){this[lr].set(Jr,this.element);this.element.template[Yr](this[lr]);this.element.template[lr]=this[lr]}}}class Empty extends XFAObject{constructor(){super(-1,"",Object.create(null))}[Nr](e){return!1}}class Builder{constructor(e=null){this._namespaceStack=[];this._nsAgnosticLevel=0;this._namespacePrefixes=new Map;this._namespaces=new Map;this._nextNsId=Math.max(...Object.values(_r).map((({id:e})=>e)));this._currentNamespace=e||new UnknownNamespace(++this._nextNsId)}buildRoot(e){return new Root(e)}build({nsPrefix:e,name:t,attributes:i,namespace:a,prefixes:s}){const r=null!==a;if(r){this._namespaceStack.push(this._currentNamespace);this._currentNamespace=this._searchNamespace(a)}s&&this._addNamespacePrefix(s);if(i.hasOwnProperty(Rr)){const e=_n.datasets,t=i[Rr];let a=null;for(const[i,s]of Object.entries(t)){if(this._getNamespaceToUse(i)===e){a={xfa:s};break}}a?i[Rr]=a:delete i[Rr]}const n=this._getNamespaceToUse(e),g=n?.[zr](t,i)||new Empty;g[mr]()&&this._nsAgnosticLevel++;(r||s||g[mr]())&&(g[Ks]={hasNamespace:r,prefixes:s,nsAgnostic:g[mr]()});return g}isNsAgnostic(){return this._nsAgnosticLevel>0}_searchNamespace(e){let t=this._namespaces.get(e);if(t)return t;for(const[i,{check:a}]of Object.entries(_r))if(a(e)){t=_n[i];if(t){this._namespaces.set(e,t);return t}break}t=new UnknownNamespace(++this._nextNsId);this._namespaces.set(e,t);return t}_addNamespacePrefix(e){for(const{prefix:t,value:i}of e){const e=this._searchNamespace(i);let a=this._namespacePrefixes.get(t);if(!a){a=[];this._namespacePrefixes.set(t,a)}a.push(e)}}_getNamespaceToUse(e){if(!e)return this._currentNamespace;const t=this._namespacePrefixes.get(e);if(t?.length>0)return t.at(-1);warn(`Unknown namespace prefix: ${e}.`);return null}clean(e){const{hasNamespace:t,prefixes:i,nsAgnostic:a}=e;t&&(this._currentNamespace=this._namespaceStack.pop());i&&i.forEach((({prefix:e})=>{this._namespacePrefixes.get(e).pop()}));a&&this._nsAgnosticLevel--}}class XFAParser extends XMLParserBase{constructor(e=null,t=!1){super();this._builder=new Builder(e);this._stack=[];this._globalData={usedTypefaces:new Set};this._ids=new Map;this._current=this._builder.buildRoot(this._ids);this._errorCode=ys;this._whiteRegex=/^\s+$/;this._nbsps=/\xa0+/g;this._richText=t}parse(e){this.parseXml(e);if(this._errorCode===ys){this._current[Zs]();return this._current.element}}onText(e){e=e.replace(this._nbsps,(e=>e.slice(1)+" "));this._richText||this._current[xs]()?this._current[Mr](e,this._richText):this._whiteRegex.test(e)||this._current[Mr](e.trim())}onCdata(e){this._current[Mr](e)}_mkAttributes(e,t){let i=null,a=null;const s=Object.create({});for(const{name:r,value:n}of e)if("xmlns"===r)i?warn(`XFA - multiple namespace definition in <${t}>`):i=n;else if(r.startsWith("xmlns:")){const e=r.substring(6);a||(a=[]);a.push({prefix:e,value:n})}else{const e=r.indexOf(":");if(-1===e)s[r]=n;else{let t=s[Rr];t||(t=s[Rr]=Object.create(null));const[i,a]=[r.slice(0,e),r.slice(e+1)];(t[i]||=Object.create(null))[a]=n}}return[i,a,s]}_getNameAndPrefix(e,t){const i=e.indexOf(":");return-1===i?[e,null]:[e.substring(i+1),t?"":e.substring(0,i)]}onBeginElement(e,t,i){const[a,s,r]=this._mkAttributes(t,e),[n,g]=this._getNameAndPrefix(e,this._builder.isNsAgnostic()),o=this._builder.build({nsPrefix:g,name:n,attributes:r,namespace:a,prefixes:s});o[Cr]=this._globalData;if(i){o[Zs]();this._current[Nr](o)&&o[Kr](this._ids);o[Ys](this._builder)}else{this._stack.push(this._current);this._current=o}}onEndElement(e){const t=this._current;if(t[ur]()&&"string"==typeof t[Os]){const e=new XFAParser;e._globalData=this._globalData;const i=e.parse(t[Os]);t[Os]=null;t[Nr](i)}t[Zs]();this._current=this._stack.pop();this._current[Nr](t)&&t[Kr](this._ids);t[Ys](this._builder)}onError(e){this._errorCode=e}}class XFAFactory{constructor(e){try{this.root=(new XFAParser).parse(XFAFactory._createDocument(e));const t=new Binder(this.root);this.form=t.bind();this.dataHandler=new DataHandler(this.root,t.getData());this.form[Cr].template=this.form}catch(e){warn(`XFA - an error occurred during parsing and binding: ${e}`)}}isValid(){return this.root&&this.form}_createPagesHelper(){const e=this.form[Wr]();return new Promise(((t,i)=>{const nextIteration=()=>{try{const i=e.next();i.done?t(i.value):setTimeout(nextIteration,0)}catch(e){i(e)}};setTimeout(nextIteration,0)}))}async _createPages(){try{this.pages=await this._createPagesHelper();this.dims=this.pages.children.map((e=>{const{width:t,height:i}=e.attributes.style;return[0,0,parseInt(t),parseInt(i)]}))}catch(e){warn(`XFA - an error occurred during layout: ${e}`)}}getBoundingBox(e){return this.dims[e]}async getNumPages(){this.pages||await this._createPages();return this.dims.length}setImages(e){this.form[Cr].images=e}setFonts(e){this.form[Cr].fontFinder=new FontFinder(e);const t=[];for(let e of this.form[Cr].usedTypefaces){e=stripQuotes(e);this.form[Cr].fontFinder.find(e)||t.push(e)}return t.length>0?t:null}appendFonts(e,t){this.form[Cr].fontFinder.add(e,t)}async getPages(){this.pages||await this._createPages();const e=this.pages;this.pages=null;return e}serializeData(e){return this.dataHandler.serialize(e)}static _createDocument(e){return e["/xdp:xdp"]?Object.values(e).join(""):e["xdp:xdp"]}static getRichTextAsHtml(e){if(!e||"string"!=typeof e)return null;try{let t=new XFAParser(XhtmlNamespace,!0).parse(e);if(!["body","xhtml"].includes(t[kr])){const e=XhtmlNamespace.body({});e[Hs](t);t=e}const i=t[jr]();if(!i.success)return null;const{html:a}=i,{attributes:s}=a;if(s){s.class&&(s.class=s.class.filter((e=>!e.startsWith("xfa"))));s.dir="auto"}return{html:a,str:t[Pr]()}}catch(e){warn(`XFA - an error occurred during parsing of rich text: ${e}`)}return null}}class AnnotationFactory{static createGlobals(e){return Promise.all([e.ensureCatalog("acroForm"),e.ensureDoc("xfaDatasets"),e.ensureCatalog("structTreeRoot"),e.ensureCatalog("baseUrl"),e.ensureCatalog("attachments")]).then((([t,i,a,s,r])=>({pdfManager:e,acroForm:t instanceof Dict?t:Dict.empty,xfaDatasets:i,structTreeRoot:a,baseUrl:s,attachments:r})),(e=>{warn(`createGlobals: "${e}".`);return null}))}static async create(e,t,i,a,s,r,n){const g=s?await this._getPageIndex(e,t,i.pdfManager):null;return i.pdfManager.ensure(this,"_create",[e,t,i,a,s,r,g,n])}static _create(e,t,i,a,s=!1,r=null,n=null,g=null){const o=e.fetchIfRef(t);if(!(o instanceof Dict))return;const{acroForm:c,pdfManager:C}=i,h=t instanceof Ref?t.toString():`annot_${a.createObjId()}`;let l=o.get("Subtype");l=l instanceof Name?l.name:null;const Q={xref:e,ref:t,dict:o,subtype:l,id:h,annotationGlobals:i,collectFields:s,orphanFields:r,needAppearances:!s&&!0===c.get("NeedAppearances"),pageIndex:n,evaluatorOptions:C.evaluatorOptions,pageRef:g};switch(l){case"Link":return new LinkAnnotation(Q);case"Text":return new TextAnnotation(Q);case"Widget":let e=getInheritableProperty({dict:o,key:"FT"});e=e instanceof Name?e.name:null;switch(e){case"Tx":return new TextWidgetAnnotation(Q);case"Btn":return new ButtonWidgetAnnotation(Q);case"Ch":return new ChoiceWidgetAnnotation(Q);case"Sig":return new SignatureWidgetAnnotation(Q)}warn(`Unimplemented widget field type "${e}", falling back to base field type.`);return new WidgetAnnotation(Q);case"Popup":return new PopupAnnotation(Q);case"FreeText":return new FreeTextAnnotation(Q);case"Line":return new LineAnnotation(Q);case"Square":return new SquareAnnotation(Q);case"Circle":return new CircleAnnotation(Q);case"PolyLine":return new PolylineAnnotation(Q);case"Polygon":return new PolygonAnnotation(Q);case"Caret":return new CaretAnnotation(Q);case"Ink":return new InkAnnotation(Q);case"Highlight":return new HighlightAnnotation(Q);case"Underline":return new UnderlineAnnotation(Q);case"Squiggly":return new SquigglyAnnotation(Q);case"StrikeOut":return new StrikeOutAnnotation(Q);case"Stamp":return new StampAnnotation(Q);case"FileAttachment":return new FileAttachmentAnnotation(Q);default:s||warn(l?`Unimplemented annotation type "${l}", falling back to base annotation.`:"Annotation is missing the required /Subtype.");return new Annotation(Q)}}static async _getPageIndex(e,t,i){try{const a=await e.fetchIfRefAsync(t);if(!(a instanceof Dict))return-1;const s=a.getRaw("P");if(s instanceof Ref)try{return await i.ensureCatalog("getPageIndex",[s])}catch(e){info(`_getPageIndex -- not a valid page reference: "${e}".`)}if(a.has("Kids"))return-1;const r=await i.ensureDoc("numPages");for(let e=0;ee/255))}function getQuadPoints(e,t){const i=e.getArray("QuadPoints");if(!isNumberArray(i,null)||0===i.length||i.length%8>0)return null;const a=new Float32Array(i.length);for(let e=0,s=i.length;et[2]||Et[3]))return null;a.set([l,u,Q,u,l,E,Q,E],e)}return a}function getTransformMatrix(e,t,i){const[a,s,r,n]=Util.getAxialAlignedBoundingBox(t,i);if(a===r||s===n)return[1,0,0,1,e[0],e[1]];const g=(e[2]-e[0])/(r-a),o=(e[3]-e[1])/(n-s);return[g,0,0,o,e[0]-a*g,e[1]-s*o]}class Annotation{constructor(e){const{dict:t,xref:i,annotationGlobals:a,ref:s,orphanFields:r}=e,n=r?.get(s);n&&t.set("Parent",n);this.setTitle(t.get("T"));this.setContents(t.get("Contents"));this.setModificationDate(t.get("M"));this.setFlags(t.get("F"));this.setRectangle(t.getArray("Rect"));this.setColor(t.getArray("C"));this.setBorderStyle(t);this.setAppearance(t);this.setOptionalContent(t);const g=t.get("MK");this.setBorderAndBackgroundColors(g);this.setRotation(g,t);this.ref=e.ref instanceof Ref?e.ref:null;this._streams=[];this.appearance&&this._streams.push(this.appearance);const o=!!(this.flags&eA),c=!!(this.flags&tA);this.data={annotationFlags:this.flags,borderStyle:this.borderStyle,color:this.color,backgroundColor:this.backgroundColor,borderColor:this.borderColor,rotation:this.rotation,contentsObj:this._contents,hasAppearance:!!this.appearance,id:e.id,modificationDate:this.modificationDate,rect:this.rectangle,subtype:e.subtype,hasOwnCanvas:!1,noRotate:!!(this.flags&$),noHTML:o&&c,isEditable:!1,structParent:-1};if(a.structTreeRoot){let i=t.get("StructParent");this.data.structParent=i=Number.isInteger(i)&&i>=0?i:-1;a.structTreeRoot.addAnnotationIdToPage(e.pageRef,i)}if(e.collectFields){const a=t.get("Kids");if(Array.isArray(a)){const e=[];for(const t of a)t instanceof Ref&&e.push(t.toString());0!==e.length&&(this.data.kidIds=e)}this.data.actions=collectActions(i,t,dA);this.data.fieldName=this._constructFieldName(t);this.data.pageIndex=e.pageIndex}const C=t.get("IT");C instanceof Name&&(this.data.it=C.name);this._isOffscreenCanvasSupported=e.evaluatorOptions.isOffscreenCanvasSupported;this._fallbackFontDict=null;this._needAppearances=!1}_hasFlag(e,t){return!!(e&t)}_buildFlags(e,t){let{flags:i}=this;if(void 0===e){if(void 0===t)return;return t?i&~_:i&~z|_}if(e){i|=_;return t?i&~AA|z:i&~z|AA}i&=~(z|AA);return t?i&~_:i|_}_isViewable(e){return!this._hasFlag(e,V)&&!this._hasFlag(e,AA)}_isPrintable(e){return this._hasFlag(e,_)&&!this._hasFlag(e,z)&&!this._hasFlag(e,V)}mustBeViewed(e,t){const i=e?.get(this.data.id)?.noView;return void 0!==i?!i:this.viewable&&!this._hasFlag(this.flags,z)}mustBePrinted(e){const t=e?.get(this.data.id)?.noPrint;return void 0!==t?!t:this.printable}mustBeViewedWhenEditing(e,t=null){return e?!this.data.isEditable:!t?.has(this.data.id)}get viewable(){return null!==this.data.quadPoints&&(0===this.flags||this._isViewable(this.flags))}get printable(){return null!==this.data.quadPoints&&(0!==this.flags&&this._isPrintable(this.flags))}_parseStringHelper(e){const t="string"==typeof e?stringToPDFString(e):"";return{str:t,dir:t&&"rtl"===bidi(t).dir?"rtl":"ltr"}}setDefaultAppearance(e){const{dict:t,annotationGlobals:i}=e,a=getInheritableProperty({dict:t,key:"DA"})||i.acroForm.get("DA");this._defaultAppearance="string"==typeof a?a:"";this.data.defaultAppearanceData=parseDefaultAppearance(this._defaultAppearance)}setTitle(e){this._title=this._parseStringHelper(e)}setContents(e){this._contents=this._parseStringHelper(e)}setModificationDate(e){this.modificationDate="string"==typeof e?e:null}setFlags(e){this.flags=Number.isInteger(e)&&e>0?e:0;this.flags&V&&"Annotation"!==this.constructor.name&&(this.flags^=V)}hasFlag(e){return this._hasFlag(this.flags,e)}setRectangle(e){this.rectangle=lookupNormalRect(e,[0,0,0,0])}setColor(e){this.color=getRgbColor(e)}setLineEndings(e){this.lineEndings=["None","None"];if(Array.isArray(e)&&2===e.length)for(let t=0;t<2;t++){const i=e[t];if(i instanceof Name)switch(i.name){case"None":continue;case"Square":case"Circle":case"Diamond":case"OpenArrow":case"ClosedArrow":case"Butt":case"ROpenArrow":case"RClosedArrow":case"Slash":this.lineEndings[t]=i.name;continue}warn(`Ignoring invalid lineEnding: ${i}`)}}setRotation(e,t){this.rotation=0;let i=e instanceof Dict?e.get("R")||0:t.get("Rotate")||0;if(Number.isInteger(i)&&0!==i){i%=360;i<0&&(i+=360);i%90==0&&(this.rotation=i)}}setBorderAndBackgroundColors(e){if(e instanceof Dict){this.borderColor=getRgbColor(e.getArray("BC"),null);this.backgroundColor=getRgbColor(e.getArray("BG"),null)}else this.borderColor=this.backgroundColor=null}setBorderStyle(e){this.borderStyle=new AnnotationBorderStyle;if(e instanceof Dict)if(e.has("BS")){const t=e.get("BS");if(t instanceof Dict){const e=t.get("Type");if(!e||isName(e,"Border")){this.borderStyle.setWidth(t.get("W"),this.rectangle);this.borderStyle.setStyle(t.get("S"));this.borderStyle.setDashArray(t.getArray("D"))}}}else if(e.has("Border")){const t=e.getArray("Border");if(Array.isArray(t)&&t.length>=3){this.borderStyle.setHorizontalCornerRadius(t[0]);this.borderStyle.setVerticalCornerRadius(t[1]);this.borderStyle.setWidth(t[2],this.rectangle);4===t.length&&this.borderStyle.setDashArray(t[3],!0)}}else this.borderStyle.setWidth(0)}setAppearance(e){this.appearance=null;const t=e.get("AP");if(!(t instanceof Dict))return;const i=t.get("N");if(i instanceof BaseStream){this.appearance=i;return}if(!(i instanceof Dict))return;const a=e.get("AS");if(!(a instanceof Name&&i.has(a.name)))return;const s=i.get(a.name);s instanceof BaseStream&&(this.appearance=s)}setOptionalContent(e){this.oc=null;const t=e.get("OC");t instanceof Name?warn("setOptionalContent: Support for /Name-entry is not implemented."):t instanceof Dict&&(this.oc=t)}loadResources(e,t){return t.dict.getAsync("Resources").then((t=>{if(!t)return;return new ObjectLoader(t,e,t.xref).load().then((function(){return t}))}))}async getOperatorList(e,t,a,s){const{hasOwnCanvas:r,id:n,rect:g}=this.data;let c=this.appearance;const C=!!(r&&a&o);if(C&&(g[0]===g[2]||g[1]===g[3])){this.data.hasOwnCanvas=!1;return{opList:new OperatorList,separateForm:!1,separateCanvas:!1}}if(!c){if(!C)return{opList:new OperatorList,separateForm:!1,separateCanvas:!1};c=new StringStream("");c.dict=new Dict}const h=c.dict,l=await this.loadResources(["ExtGState","ColorSpace","Pattern","Shading","XObject","Font"],c),Q=lookupRect(h.getArray("BBox"),[0,0,1,1]),E=lookupMatrix(h.getArray("Matrix"),i),u=getTransformMatrix(g,Q,E),d=new OperatorList;let f;this.oc&&(f=await e.parseMarkedContentProps(this.oc,null));void 0!==f&&d.addOp(Ye,["OC",f]);d.addOp(je,[n,g,u,E,C]);await e.getOperatorList({stream:c,task:t,resources:l,operatorList:d,fallbackFontDict:this._fallbackFontDict});d.addOp(Xe,[]);void 0!==f&&d.addOp(ve,[]);this.reset();return{opList:d,separateForm:!1,separateCanvas:C}}async save(e,t,i,a){return null}get hasTextContent(){return!1}async extractTextContent(e,t,i){if(!this.appearance)return;const a=await this.loadResources(["ExtGState","Font","Properties","XObject"],this.appearance),s=[],r=[];let n=null;const g={desiredSize:Math.Infinity,ready:!0,enqueue(e,t){for(const t of e.items)if(void 0!==t.str){n||=t.transform.slice(-2);r.push(t.str);if(t.hasEOL){s.push(r.join("").trimEnd());r.length=0}}}};await e.getTextContent({stream:this.appearance,task:t,resources:a,includeMarkedContent:!0,keepWhiteSpace:!0,sink:g,viewBox:i});this.reset();r.length&&s.push(r.join("").trimEnd());if(s.length>1||s[0]){const e=this.appearance.dict,t=lookupRect(e.getArray("BBox"),null),i=lookupMatrix(e.getArray("Matrix"),null);this.data.textPosition=this._transformPoint(n,t,i);this.data.textContent=s}}_transformPoint(e,t,i){const{rect:a}=this.data;t||=[0,0,1,1];i||=[1,0,0,1,0,0];const s=getTransformMatrix(a,t,i);s[4]-=a[0];s[5]-=a[1];e=Util.applyTransform(e,s);return Util.applyTransform(e,i)}getFieldObject(){return this.data.kidIds?{id:this.data.id,actions:this.data.actions,name:this.data.fieldName,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,type:"",kidIds:this.data.kidIds,page:this.data.pageIndex,rotation:this.rotation}:null}reset(){for(const e of this._streams)e.reset()}_constructFieldName(e){if(!e.has("T")&&!e.has("Parent")){warn("Unknown field name, falling back to empty field name.");return""}if(!e.has("Parent"))return stringToPDFString(e.get("T"));const t=[];e.has("T")&&t.unshift(stringToPDFString(e.get("T")));let i=e;const a=new RefSet;e.objId&&a.put(e.objId);for(;i.has("Parent");){i=i.get("Parent");if(!(i instanceof Dict)||i.objId&&a.has(i.objId))break;i.objId&&a.put(i.objId);i.has("T")&&t.unshift(stringToPDFString(i.get("T")))}return t.join(".")}}class AnnotationBorderStyle{constructor(){this.width=1;this.rawWidth=1;this.style=lA;this.dashArray=[3];this.horizontalCornerRadius=0;this.verticalCornerRadius=0}setWidth(e,t=[0,0,0,0]){if(e instanceof Name)this.width=0;else if("number"==typeof e){if(e>0){this.rawWidth=e;const i=(t[2]-t[0])/2,a=(t[3]-t[1])/2;if(i>0&&a>0&&(e>i||e>a)){warn(`AnnotationBorderStyle.setWidth - ignoring width: ${e}`);e=1}}this.width=e}}setStyle(e){if(e instanceof Name)switch(e.name){case"S":this.style=lA;break;case"D":this.style=BA;break;case"B":this.style=QA;break;case"I":this.style=EA;break;case"U":this.style=uA}}setDashArray(e,t=!1){if(Array.isArray(e)){let i=!0,a=!0;for(const t of e){if(!(+t>=0)){i=!1;break}t>0&&(a=!1)}if(0===e.length||i&&!a){this.dashArray=e;t&&this.setStyle(Name.get("D"))}else this.width=0}else e&&(this.width=0)}setHorizontalCornerRadius(e){Number.isInteger(e)&&(this.horizontalCornerRadius=e)}setVerticalCornerRadius(e){Number.isInteger(e)&&(this.verticalCornerRadius=e)}}class MarkupAnnotation extends Annotation{constructor(e){super(e);const{dict:t}=e;if(t.has("IRT")){const e=t.getRaw("IRT");this.data.inReplyTo=e instanceof Ref?e.toString():null;const i=t.get("RT");this.data.replyType=i instanceof Name?i.name:Z}let i=null;if(this.data.replyType===X){const e=t.get("IRT");this.setTitle(e.get("T"));this.data.titleObj=this._title;this.setContents(e.get("Contents"));this.data.contentsObj=this._contents;if(e.has("CreationDate")){this.setCreationDate(e.get("CreationDate"));this.data.creationDate=this.creationDate}else this.data.creationDate=null;if(e.has("M")){this.setModificationDate(e.get("M"));this.data.modificationDate=this.modificationDate}else this.data.modificationDate=null;i=e.getRaw("Popup");if(e.has("C")){this.setColor(e.getArray("C"));this.data.color=this.color}else this.data.color=null}else{this.data.titleObj=this._title;this.setCreationDate(t.get("CreationDate"));this.data.creationDate=this.creationDate;i=t.getRaw("Popup");t.has("C")||(this.data.color=null)}this.data.popupRef=i instanceof Ref?i.toString():null;t.has("RC")&&(this.data.richText=XFAFactory.getRichTextAsHtml(t.get("RC")))}setCreationDate(e){this.creationDate="string"==typeof e?e:null}_setDefaultAppearance({xref:e,extra:t,strokeColor:i,fillColor:a,blendMode:s,strokeAlpha:r,fillAlpha:n,pointsCallback:g}){let o=Number.MAX_VALUE,c=Number.MAX_VALUE,C=Number.MIN_VALUE,h=Number.MIN_VALUE;const l=["q"];t&&l.push(t);i&&l.push(`${i[0]} ${i[1]} ${i[2]} RG`);a&&l.push(`${a[0]} ${a[1]} ${a[2]} rg`);const Q=this.data.quadPoints||Float32Array.from([this.rectangle[0],this.rectangle[3],this.rectangle[2],this.rectangle[3],this.rectangle[0],this.rectangle[1],this.rectangle[2],this.rectangle[1]]);for(let e=0,t=Q.length;e"string"==typeof e)).map((e=>stringToPDFString(e))):e instanceof Name?stringToPDFString(e.name):"string"==typeof e?stringToPDFString(e):null}hasFieldFlag(e){return!!(this.data.fieldFlags&e)}_isViewable(e){return!0}mustBeViewed(e,t){return t?this.viewable:super.mustBeViewed(e,t)&&!this._hasFlag(this.flags,AA)}getRotationMatrix(e){let t=e?.get(this.data.id)?.rotation;void 0===t&&(t=this.rotation);if(0===t)return i;return getRotationMatrix(t,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1])}getBorderAndBackgroundAppearances(e){let t=e?.get(this.data.id)?.rotation;void 0===t&&(t=this.rotation);if(!this.backgroundColor&&!this.borderColor)return"";const i=this.data.rect[2]-this.data.rect[0],a=this.data.rect[3]-this.data.rect[1],s=0===t||180===t?`0 0 ${i} ${a} re`:`0 0 ${a} ${i} re`;let r="";this.backgroundColor&&(r=`${getPdfColor(this.backgroundColor,!0)} ${s} f `);if(this.borderColor){r+=`${this.borderStyle.width||1} w ${getPdfColor(this.borderColor,!1)} ${s} S `}return r}async getOperatorList(e,t,i,a){if(i&h&&!(this instanceof SignatureWidgetAnnotation)&&!this.data.noHTML&&!this.data.hasOwnCanvas)return{opList:new OperatorList,separateForm:!0,separateCanvas:!1};if(!this._hasText)return super.getOperatorList(e,t,i,a);const s=await this._getAppearance(e,t,i,a);if(this.appearance&&null===s)return super.getOperatorList(e,t,i,a);const r=new OperatorList;if(!this._defaultAppearance||null===s)return{opList:r,separateForm:!1,separateCanvas:!1};const n=!!(this.data.hasOwnCanvas&&i&o),g=[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]],c=getTransformMatrix(this.data.rect,g,[1,0,0,1,0,0]);let C;this.oc&&(C=await e.parseMarkedContentProps(this.oc,null));void 0!==C&&r.addOp(Ye,["OC",C]);r.addOp(je,[this.data.id,this.data.rect,c,this.getRotationMatrix(a),n]);const l=new StringStream(s);await e.getOperatorList({stream:l,task:t,resources:this._fieldResources.mergedResources,operatorList:r});r.addOp(Xe,[]);void 0!==C&&r.addOp(ve,[]);return{opList:r,separateForm:!1,separateCanvas:n}}_getMKDict(e){const t=new Dict(null);e&&t.set("R",e);this.borderColor&&t.set("BC",getPdfColorArray(this.borderColor));this.backgroundColor&&t.set("BG",getPdfColorArray(this.backgroundColor));return t.size>0?t:null}amendSavedDict(e,t){}setValue(e,t,i,a){const{dict:s,ref:r}=function getParentToUpdate(e,t,i){const a=new RefSet,s=e,r={dict:null,ref:null};for(;e instanceof Dict&&!a.has(t);){a.put(t);if(e.has("T"))break;if(!((t=e.getRaw("Parent"))instanceof Ref))return r;e=i.fetch(t)}if(e instanceof Dict&&e!==s){r.dict=e;r.ref=t}return r}(e,this.ref,i);if(s){if(!a.has(r)){const e=s.clone();e.set("V",t);a.put(r,{data:e});return e}}else e.set("V",t);return null}async save(e,t,a,s){const r=a?.get(this.data.id),n=this._buildFlags(r?.noView,r?.noPrint);let g=r?.value,o=r?.rotation;if(g===this.data.fieldValue||void 0===g){if(!this._hasValueFromXFA&&void 0===o&&void 0===n)return;g||=this.data.fieldValue}if(void 0===o&&!this._hasValueFromXFA&&Array.isArray(g)&&Array.isArray(this.data.fieldValue)&&isArrayEqual(g,this.data.fieldValue)&&void 0===n)return;void 0===o&&(o=this.rotation);let c=null;if(!this._needAppearances){c=await this._getAppearance(e,t,C,a);if(null===c&&void 0===n)return}let h=!1;if(c?.needAppearances){h=!0;c=null}const{xref:l}=e,Q=l.fetchIfRef(this.ref);if(!(Q instanceof Dict))return;const E=new Dict(l);for(const e of Q.getKeys())"AP"!==e&&E.set(e,Q.getRaw(e));if(void 0!==n){E.set("F",n);if(null===c&&!h){const e=Q.getRaw("AP");e&&E.set("AP",e)}}const u={path:this.data.fieldName,value:g},d=this.setValue(E,Array.isArray(g)?g.map(stringToAsciiOrUTF16BE):stringToAsciiOrUTF16BE(g),l,s);this.amendSavedDict(a,d||E);const f=this._getMKDict(o);f&&E.set("MK",f);s.put(this.ref,{data:E,xfa:u,needAppearances:h});if(null!==c){const e=l.getNewTemporaryRef(),t=new Dict(l);E.set("AP",t);t.set("N",e);const r=this._getSaveFieldResources(l),n=new StringStream(c),g=n.dict=new Dict(l);g.set("Subtype",Name.get("Form"));g.set("Resources",r);g.set("BBox",[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]]);const o=this.getRotationMatrix(a);o!==i&&g.set("Matrix",o);s.put(e,{data:n,xfa:null,needAppearances:!1})}E.set("M",`D:${getModificationDate()}`)}async _getAppearance(e,t,i,a){if(this.hasFieldFlag(rA))return null;const s=a?.get(this.data.id);let r,g;if(s){r=s.formattedValue||s.value;g=s.rotation}if(void 0===g&&void 0===r&&!this._needAppearances&&(!this._hasValueFromXFA||this.appearance))return null;const o=this.getBorderAndBackgroundAppearances(a);if(void 0===r){r=this.data.fieldValue;if(!r)return`/Tx BMC q ${o}Q EMC`}Array.isArray(r)&&1===r.length&&(r=r[0]);assert("string"==typeof r,"Expected `value` to be a string.");r=r.trimEnd();if(this.data.combo){const e=this.data.options.find((({exportValue:e})=>r===e));r=e?.displayValue||r}if(""===r)return`/Tx BMC q ${o}Q EMC`;void 0===g&&(g=this.rotation);let c,h=-1;if(this.data.multiLine){c=r.split(/\r\n?|\n/).map((e=>e.normalize("NFC")));h=c.length}else c=[r.replace(/\r\n?|\n/,"").normalize("NFC")];let l=this.data.rect[3]-this.data.rect[1],Q=this.data.rect[2]-this.data.rect[0];90!==g&&270!==g||([Q,l]=[l,Q]);this._defaultAppearance||(this.data.defaultAppearanceData=parseDefaultAppearance(this._defaultAppearance="/Helvetica 0 Tf 0 g"));let E,u,d,f=await WidgetAnnotation._getFontData(e,t,this.data.defaultAppearanceData,this._fieldResources.mergedResources);const p=[];let m=!1;for(const e of c){const t=f.encodeString(e);t.length>1&&(m=!0);p.push(t.join(""))}if(m&&i&C)return{needAppearances:!0};if(m&&this._isOffscreenCanvasSupported){const i=this.data.comb?"monospace":"sans-serif",a=new FakeUnicodeFont(e.xref,i),s=a.createFontResources(c.join("")),n=s.getRaw("Font");if(this._fieldResources.mergedResources.has("Font")){const e=this._fieldResources.mergedResources.get("Font");for(const t of n.getKeys())e.set(t,n.getRaw(t))}else this._fieldResources.mergedResources.set("Font",n);const g=a.fontName.name;f=await WidgetAnnotation._getFontData(e,t,{fontName:g,fontSize:0},s);for(let e=0,t=p.length;e2)return`/Tx BMC q ${o}BT `+E+` 1 0 0 1 ${numberToString(2)} ${numberToString(b)} Tm (${escapeString(p[0])}) Tj ET Q EMC`;return`/Tx BMC q ${o}BT `+E+` 1 0 0 1 0 0 Tm ${this._renderText(p[0],f,u,Q,D,{shift:0},2,b)} ET Q EMC`}static async _getFontData(e,t,i,a){const s=new OperatorList,r={font:null,clone(){return this}},{fontName:n,fontSize:g}=i;await e.handleSetFont(a,[n&&Name.get(n),g],null,s,t,r,null);return r.font}_getTextWidth(e,t){return t.charsToGlyphs(e).reduce(((e,t)=>e+t.width),0)/1e3}_computeFontSize(e,t,i,a,r){let{fontSize:n}=this.data.defaultAppearanceData,g=(n||12)*s,o=Math.round(e/g);if(!n){const roundWithTwoDigits=e=>Math.floor(100*e)/100;if(-1===r){const r=this._getTextWidth(i,a);n=roundWithTwoDigits(Math.min(e/s,t/r));o=1}else{const c=i.split(/\r\n?|\n/),C=[];for(const e of c){const t=a.encodeString(e).join(""),i=a.charsToGlyphs(t),s=a.getCharPositions(t);C.push({line:t,glyphs:i,positions:s})}const isTooBig=i=>{let s=0;for(const r of C){s+=this._splitLine(null,a,i,t,r).length*i;if(s>e)return!0}return!1};o=Math.max(o,r);for(;;){g=e/o;n=roundWithTwoDigits(g/s);if(!isTooBig(n))break;o++}}const{fontName:c,fontColor:C}=this.data.defaultAppearanceData;this._defaultAppearance=function createDefaultAppearance({fontSize:e,fontName:t,fontColor:i}){return`/${escapePDFName(t)} ${e} Tf ${getPdfColor(i,!0)}`}({fontSize:n,fontName:c,fontColor:C})}return[this._defaultAppearance,n,e/o]}_renderText(e,t,i,a,s,r,n,g){let o;if(1===s){o=(a-this._getTextWidth(e,t)*i)/2}else if(2===s){o=a-this._getTextWidth(e,t)*i-n}else o=n;const c=numberToString(o-r.shift);r.shift=o;return`${c} ${g=numberToString(g)} Td (${escapeString(e)}) Tj`}_getSaveFieldResources(e){const{localResources:t,appearanceResources:i,acroFormResources:a}=this._fieldResources,s=this.data.defaultAppearanceData?.fontName;if(!s)return t||Dict.empty;for(const e of[t,i])if(e instanceof Dict){const t=e.get("Font");if(t instanceof Dict&&t.has(s))return e}if(a instanceof Dict){const i=a.get("Font");if(i instanceof Dict&&i.has(s)){const a=new Dict(e);a.set(s,i.getRaw(s));const r=new Dict(e);r.set("Font",a);return Dict.merge({xref:e,dictArray:[r,t],mergeSubDicts:!0})}}return t||Dict.empty}getFieldObject(){return null}}class TextWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);const{dict:t}=e;if(t.has("PMD")){this.flags|=z;this.data.hidden=!0;warn("Barcodes are not supported")}this.data.hasOwnCanvas=this.data.readOnly&&!this.data.noHTML;this._hasText=!0;"string"!=typeof this.data.fieldValue&&(this.data.fieldValue="");let i=getInheritableProperty({dict:t,key:"Q"});(!Number.isInteger(i)||i<0||i>2)&&(i=null);this.data.textAlignment=i;let a=getInheritableProperty({dict:t,key:"MaxLen"});(!Number.isInteger(a)||a<0)&&(a=0);this.data.maxLen=a;this.data.multiLine=this.hasFieldFlag(sA);this.data.comb=this.hasFieldFlag(hA)&&!this.hasFieldFlag(sA)&&!this.hasFieldFlag(rA)&&!this.hasFieldFlag(IA)&&0!==this.data.maxLen;this.data.doNotScroll=this.hasFieldFlag(CA)}get hasTextContent(){return!!this.appearance&&!this._needAppearances}_getCombAppearance(e,t,i,a,s,r,n,g,o,c,C){const h=s/this.data.maxLen,l=this.getBorderAndBackgroundAppearances(C),Q=[],E=t.getCharPositions(i);for(const[e,t]of E)Q.push(`(${escapeString(i.substring(e,t))}) Tj`);const u=Q.join(` ${numberToString(h)} 0 Td `);return`/Tx BMC q ${l}BT `+e+` 1 0 0 1 ${numberToString(n)} ${numberToString(g+o)} Tm ${u} ET Q EMC`}_getMultilineAppearance(e,t,i,a,s,r,n,g,o,c,C,h){const l=[],Q=s-2*g,E={shift:0};for(let e=0,r=t.length;ea){o.push(e.substring(l,i));l=i;Q=u;c=-1;h=-1}else{Q+=u;c=i;C=s;h=t}else if(Q+u>a)if(-1!==c){o.push(e.substring(l,C));l=C;t=h+1;c=-1;Q=0}else{o.push(e.substring(l,i));l=i;Q=u}else Q+=u}lt?`\\${t}`:"\\s+"));new RegExp(`^\\s*${r}\\s*$`).test(this.data.fieldValue)&&(this.data.textContent=this.data.fieldValue.split("\n"))}getFieldObject(){return{id:this.data.id,value:this.data.fieldValue,defaultValue:this.data.defaultFieldValue||"",multiline:this.data.multiLine,password:this.hasFieldFlag(rA),charLimit:this.data.maxLen,comb:this.data.comb,editable:!this.data.readOnly,hidden:this.data.hidden,name:this.data.fieldName,rect:this.data.rect,actions:this.data.actions,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:"text"}}}class ButtonWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);this.checkedAppearance=null;this.uncheckedAppearance=null;this.data.checkBox=!this.hasFieldFlag(nA)&&!this.hasFieldFlag(gA);this.data.radioButton=this.hasFieldFlag(nA)&&!this.hasFieldFlag(gA);this.data.pushButton=this.hasFieldFlag(gA);this.data.isTooltipOnly=!1;if(this.data.checkBox)this._processCheckBox(e);else if(this.data.radioButton)this._processRadioButton(e);else if(this.data.pushButton){this.data.hasOwnCanvas=!0;this.data.noHTML=!1;this._processPushButton(e)}else warn("Invalid field flags for button widget annotation")}async getOperatorList(e,t,a,s){if(this.data.pushButton)return super.getOperatorList(e,t,a,!1,s);let r=null,n=null;if(s){const e=s.get(this.data.id);r=e?e.value:null;n=e?e.rotation:null}if(null===r&&this.appearance)return super.getOperatorList(e,t,a,s);null==r&&(r=this.data.checkBox?this.data.fieldValue===this.data.exportValue:this.data.fieldValue===this.data.buttonValue);const g=r?this.checkedAppearance:this.uncheckedAppearance;if(g){const r=this.appearance,o=lookupMatrix(g.dict.getArray("Matrix"),i);n&&g.dict.set("Matrix",this.getRotationMatrix(s));this.appearance=g;const c=super.getOperatorList(e,t,a,s);this.appearance=r;g.dict.set("Matrix",o);return c}return{opList:new OperatorList,separateForm:!1,separateCanvas:!1}}async save(e,t,i,a){this.data.checkBox?this._saveCheckbox(e,t,i,a):this.data.radioButton&&this._saveRadioButton(e,t,i,a)}async _saveCheckbox(e,t,i,a){if(!i)return;const s=i.get(this.data.id),r=this._buildFlags(s?.noView,s?.noPrint);let n=s?.rotation,g=s?.value;if(void 0===n&&void 0===r){if(void 0===g)return;if(this.data.fieldValue===this.data.exportValue===g)return}let o=e.xref.fetchIfRef(this.ref);if(!(o instanceof Dict))return;o=o.clone();void 0===n&&(n=this.rotation);void 0===g&&(g=this.data.fieldValue===this.data.exportValue);const c={path:this.data.fieldName,value:g?this.data.exportValue:""},C=Name.get(g?this.data.exportValue:"Off");this.setValue(o,C,e.xref,a);o.set("AS",C);o.set("M",`D:${getModificationDate()}`);void 0!==r&&o.set("F",r);const h=this._getMKDict(n);h&&o.set("MK",h);a.put(this.ref,{data:o,xfa:c,needAppearances:!1})}async _saveRadioButton(e,t,i,a){if(!i)return;const s=i.get(this.data.id),r=this._buildFlags(s?.noView,s?.noPrint);let n=s?.rotation,g=s?.value;if(void 0===n&&void 0===r){if(void 0===g)return;if(this.data.fieldValue===this.data.buttonValue===g)return}let o=e.xref.fetchIfRef(this.ref);if(!(o instanceof Dict))return;o=o.clone();void 0===g&&(g=this.data.fieldValue===this.data.buttonValue);void 0===n&&(n=this.rotation);const c={path:this.data.fieldName,value:g?this.data.buttonValue:""},C=Name.get(g?this.data.buttonValue:"Off");g&&this.setValue(o,C,e.xref,a);o.set("AS",C);o.set("M",`D:${getModificationDate()}`);void 0!==r&&o.set("F",r);const h=this._getMKDict(n);h&&o.set("MK",h);a.put(this.ref,{data:o,xfa:c,needAppearances:!1})}_getDefaultCheckedAppearance(e,t){const i=this.data.rect[2]-this.data.rect[0],a=this.data.rect[3]-this.data.rect[1],s=[0,0,i,a],r=.8*Math.min(i,a);let n,g;if("check"===t){n={width:.755*r,height:.705*r};g="3"}else if("disc"===t){n={width:.791*r,height:.705*r};g="l"}else unreachable(`_getDefaultCheckedAppearance - unsupported type: ${t}`);const o=`q BT /PdfJsZaDb ${r} Tf 0 g ${numberToString((i-n.width)/2)} ${numberToString((a-n.height)/2)} Td (${g}) Tj ET Q`,c=new Dict(e.xref);c.set("FormType",1);c.set("Subtype",Name.get("Form"));c.set("Type",Name.get("XObject"));c.set("BBox",s);c.set("Matrix",[1,0,0,1,0,0]);c.set("Length",o.length);const C=new Dict(e.xref),h=new Dict(e.xref);h.set("PdfJsZaDb",this.fallbackFontDict);C.set("Font",h);c.set("Resources",C);this.checkedAppearance=new StringStream(o);this.checkedAppearance.dict=c;this._streams.push(this.checkedAppearance)}_processCheckBox(e){const t=e.dict.get("AP");if(!(t instanceof Dict))return;const i=t.get("N");if(!(i instanceof Dict))return;const a=this._decodeFormValue(e.dict.get("AS"));"string"==typeof a&&(this.data.fieldValue=a);const s=null!==this.data.fieldValue&&"Off"!==this.data.fieldValue?this.data.fieldValue:"Yes",r=i.getKeys();if(0===r.length)r.push("Off",s);else if(1===r.length)"Off"===r[0]?r.push(s):r.unshift("Off");else if(r.includes(s)){r.length=0;r.push("Off",s)}else{const e=r.find((e=>"Off"!==e));r.length=0;r.push("Off",e)}r.includes(this.data.fieldValue)||(this.data.fieldValue="Off");this.data.exportValue=r[1];const n=i.get(this.data.exportValue);this.checkedAppearance=n instanceof BaseStream?n:null;const g=i.get("Off");this.uncheckedAppearance=g instanceof BaseStream?g:null;this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"check");this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance);this._fallbackFontDict=this.fallbackFontDict;null===this.data.defaultFieldValue&&(this.data.defaultFieldValue="Off")}_processRadioButton(e){this.data.buttonValue=null;const t=e.dict.get("Parent");if(t instanceof Dict){this.parent=e.dict.getRaw("Parent");const i=t.get("V");i instanceof Name&&(this.data.fieldValue=this._decodeFormValue(i))}const i=e.dict.get("AP");if(!(i instanceof Dict))return;const a=i.get("N");if(!(a instanceof Dict))return;for(const e of a.getKeys())if("Off"!==e){this.data.buttonValue=this._decodeFormValue(e);break}const s=a.get(this.data.buttonValue);this.checkedAppearance=s instanceof BaseStream?s:null;const r=a.get("Off");this.uncheckedAppearance=r instanceof BaseStream?r:null;this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"disc");this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance);this._fallbackFontDict=this.fallbackFontDict;null===this.data.defaultFieldValue&&(this.data.defaultFieldValue="Off")}_processPushButton(e){const{dict:t,annotationGlobals:i}=e;if(t.has("A")||t.has("AA")||this.data.alternativeText){this.data.isTooltipOnly=!t.has("A")&&!t.has("AA");Catalog.parseDestDictionary({destDict:t,resultObj:this.data,docBaseUrl:i.baseUrl,docAttachments:i.attachments})}else warn("Push buttons without action dictionaries are not supported")}getFieldObject(){let e,t="button";if(this.data.checkBox){t="checkbox";e=this.data.exportValue}else if(this.data.radioButton){t="radiobutton";e=this.data.buttonValue}return{id:this.data.id,value:this.data.fieldValue||"Off",defaultValue:this.data.defaultFieldValue,exportValues:e,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,hidden:this.data.hidden,actions:this.data.actions,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:t}}get fallbackFontDict(){const e=new Dict;e.set("BaseFont",Name.get("ZapfDingbats"));e.set("Type",Name.get("FallbackType"));e.set("Subtype",Name.get("FallbackType"));e.set("Encoding",Name.get("ZapfDingbatsEncoding"));return shadow(this,"fallbackFontDict",e)}}class ChoiceWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);const{dict:t,xref:i}=e;this.indices=t.getArray("I");this.hasIndices=Array.isArray(this.indices)&&this.indices.length>0;this.data.options=[];const a=getInheritableProperty({dict:t,key:"Opt"});if(Array.isArray(a))for(let e=0,t=a.length;e=0&&t0&&(this.data.options=this.data.fieldValue.map((e=>({exportValue:e,displayValue:e}))));this.data.combo=this.hasFieldFlag(oA);this.data.multiSelect=this.hasFieldFlag(cA);this._hasText=!0}getFieldObject(){const e=this.data.combo?"combobox":"listbox",t=this.data.fieldValue.length>0?this.data.fieldValue[0]:null;return{id:this.data.id,value:t,defaultValue:this.data.defaultFieldValue,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,numItems:this.data.fieldValue.length,multipleSelection:this.data.multiSelect,hidden:this.data.hidden,actions:this.data.actions,items:this.data.options,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:e}}amendSavedDict(e,t){if(!this.hasIndices)return;let i=e?.get(this.data.id)?.value;Array.isArray(i)||(i=[i]);const a=[],{options:s}=this.data;for(let e=0,t=0,r=s.length;ei){i=a;t=e}}[Q,E]=this._computeFontSize(e,c-4,t,l,-1)}const u=E*s,d=(u-E)/2,f=Math.floor(o/u);let p=0;if(h.length>0){const e=Math.min(...h),t=Math.max(...h);p=Math.max(0,t-f+1);p>e&&(p=e)}const m=Math.min(p+f+1,C),y=["/Tx BMC q",`1 1 ${c} ${o} re W n`];if(h.length){y.push("0.600006 0.756866 0.854904 rg");for(const e of h)p<=e&&ee.trimEnd()));const{coords:e,bbox:t,matrix:i}=FakeUnicodeFont.getFirstPositionInfo(this.rectangle,this.rotation,a);this.data.textPosition=this._transformPoint(e,t,i)}if(this._isOffscreenCanvasSupported){const s=e.dict.get("CA"),r=new FakeUnicodeFont(i,"sans-serif");this.appearance=r.createAppearance(this._contents.str,this.rectangle,this.rotation,a,t,s);this._streams.push(this.appearance)}else warn("FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly.")}}get hasTextContent(){return this._hasAppearance}static createNewDict(e,t,{apRef:i,ap:a}){const{color:s,fontSize:r,oldAnnotation:n,rect:g,rotation:o,user:c,value:C}=e,h=n||new Dict(t);h.set("Type",Name.get("Annot"));h.set("Subtype",Name.get("FreeText"));if(n){h.set("M",`D:${getModificationDate()}`);h.delete("RC")}else h.set("CreationDate",`D:${getModificationDate()}`);h.set("Rect",g);const l=`/Helv ${r} Tf ${getPdfColor(s,!0)}`;h.set("DA",l);h.set("Contents",stringToAsciiOrUTF16BE(C));h.set("F",4);h.set("Border",[0,0,0]);h.set("Rotate",o);c&&h.set("T",stringToAsciiOrUTF16BE(c));if(i||a){const e=new Dict(t);h.set("AP",e);i?e.set("N",i):e.set("N",a)}return h}static async createNewAppearanceStream(e,t,i){const{baseFontRef:a,evaluator:r,task:n}=i,{color:g,fontSize:o,rect:c,rotation:C,value:h}=e,l=new Dict(t),Q=new Dict(t);if(a)Q.set("Helv",a);else{const e=new Dict(t);e.set("BaseFont",Name.get("Helvetica"));e.set("Type",Name.get("Font"));e.set("Subtype",Name.get("Type1"));e.set("Encoding",Name.get("WinAnsiEncoding"));Q.set("Helv",e)}l.set("Font",Q);const E=await WidgetAnnotation._getFontData(r,n,{fontName:"Helv",fontSize:o},l),[u,d,f,p]=c;let m=f-u,y=p-d;C%180!=0&&([m,y]=[y,m]);const w=h.split("\n"),D=o/1e3;let b=-1/0;const F=[];for(let e of w){const t=E.encodeString(e);if(t.length>1)return null;e=t.join("");F.push(e);let i=0;const a=E.charsToGlyphs(e);for(const e of a)i+=e.width*D;b=Math.max(b,i)}let S=1;b>m&&(S=m/b);let k=1;const R=s*o,N=1*o,G=R*w.length;G>y&&(k=y/G);const M=o*Math.min(S,k);let U,x,L;switch(C){case 0:L=[1,0,0,1];x=[c[0],c[1],m,y];U=[c[0],c[3]-N];break;case 90:L=[0,1,-1,0];x=[c[1],-c[2],m,y];U=[c[1],-c[0]-N];break;case 180:L=[-1,0,0,-1];x=[-c[2],-c[3],m,y];U=[-c[2],-c[1]-N];break;case 270:L=[0,-1,1,0];x=[-c[3],c[0],m,y];U=[-c[3],c[2]-N]}const H=["q",`${L.join(" ")} 0 0 cm`,`${x.join(" ")} re W n`,"BT",`${getPdfColor(g,!0)}`,`0 Tc /Helv ${numberToString(M)} Tf`];H.push(`${U.join(" ")} Td (${escapeString(F[0])}) Tj`);const J=numberToString(R);for(let e=1,t=F.length;e{e.push(`${a[0]} ${a[1]} m`,`${a[2]} ${a[3]} l`,"S");return[t[0]-o,t[2]+o,t[7]-o,t[3]+o]}})}}}class SquareAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:i}=e;this.data.annotationType=M;this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1;if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],a=t.get("CA"),s=getRgbColor(t.getArray("IC"),null),r=s?getPdfColorArray(s):null,n=r?a:null;if(0===this.borderStyle.width&&!r)return;this._setDefaultAppearance({xref:i,extra:`${this.borderStyle.width} w`,strokeColor:e,fillColor:r,strokeAlpha:a,fillAlpha:n,pointsCallback:(e,t)=>{const i=t[4]+this.borderStyle.width/2,a=t[5]+this.borderStyle.width/2,s=t[6]-t[4]-this.borderStyle.width,n=t[3]-t[7]-this.borderStyle.width;e.push(`${i} ${a} ${s} ${n} re`);r?e.push("B"):e.push("S");return[t[0],t[2],t[7],t[3]]}})}}}class CircleAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:i}=e;this.data.annotationType=U;if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],a=t.get("CA"),s=getRgbColor(t.getArray("IC"),null),r=s?getPdfColorArray(s):null,n=r?a:null;if(0===this.borderStyle.width&&!r)return;const g=4/3*Math.tan(Math.PI/8);this._setDefaultAppearance({xref:i,extra:`${this.borderStyle.width} w`,strokeColor:e,fillColor:r,strokeAlpha:a,fillAlpha:n,pointsCallback:(e,t)=>{const i=t[0]+this.borderStyle.width/2,a=t[1]-this.borderStyle.width/2,s=t[6]-this.borderStyle.width/2,n=t[7]+this.borderStyle.width/2,o=i+(s-i)/2,c=a+(n-a)/2,C=(s-i)/2*g,h=(n-a)/2*g;e.push(`${o} ${n} m`,`${o+C} ${n} ${s} ${c+h} ${s} ${c} c`,`${s} ${c-h} ${o+C} ${a} ${o} ${a} c`,`${o-C} ${a} ${i} ${c-h} ${i} ${c} c`,`${i} ${c+h} ${o-C} ${n} ${o} ${n} c`,"h");r?e.push("B"):e.push("S");return[t[0],t[2],t[7],t[3]]}})}}}class PolylineAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:i}=e;this.data.annotationType=L;this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1;this.data.vertices=null;if(!(this instanceof PolygonAnnotation)){this.setLineEndings(t.getArray("LE"));this.data.lineEndings=this.lineEndings}const a=t.getArray("Vertices");if(!isNumberArray(a,null))return;const s=this.data.vertices=Float32Array.from(a);if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],a=t.get("CA"),r=this.borderStyle.width||1,n=2*r,g=[1/0,1/0,-1/0,-1/0];for(let e=0,t=s.length;e{for(let t=0,i=s.length;t{for(const t of this.data.inkLists){for(let i=0,a=t.length;ie/255)));Q.set("CA",n);const u=new Dict(t);Q.set("AP",u);i?u.set("N",i):u.set("N",a);return Q}static async createNewAppearanceStream(e,t,i){if(e.outlines)return this.createNewAppearanceStreamForHighlight(e,t,i);const{color:a,rect:s,paths:r,thickness:n,opacity:g}=e,o=[`${n} w 1 J 1 j`,`${getPdfColor(a,!1)}`];1!==g&&o.push("/R0 gs");for(const e of r.lines){o.push(`${numberToString(e[4])} ${numberToString(e[5])} m`);for(let t=6,i=e.length;t{e.push(`${t[0]} ${t[1]} m`,`${t[2]} ${t[3]} l`,`${t[6]} ${t[7]} l`,`${t[4]} ${t[5]} l`,"f");return[t[0],t[2],t[7],t[3]]}})}}else this.data.popupRef=null}static createNewDict(e,t,{apRef:i,ap:a}){const{color:s,oldAnnotation:r,opacity:n,rect:g,rotation:o,user:c,quadPoints:C}=e,h=r||new Dict(t);h.set("Type",Name.get("Annot"));h.set("Subtype",Name.get("Highlight"));h.set(r?"M":"CreationDate",`D:${getModificationDate()}`);h.set("CreationDate",`D:${getModificationDate()}`);h.set("Rect",g);h.set("F",4);h.set("Border",[0,0,0]);h.set("Rotate",o);h.set("QuadPoints",C);h.set("C",Array.from(s,(e=>e/255)));h.set("CA",n);c&&h.set("T",stringToAsciiOrUTF16BE(c));if(i||a){const e=new Dict(t);h.set("AP",e);e.set("N",i||a)}return h}static async createNewAppearanceStream(e,t,i){const{color:a,rect:s,outlines:r,opacity:n}=e,g=[`${getPdfColor(a,!0)}`,"/R0 gs"],o=[];for(const e of r){o.length=0;o.push(`${numberToString(e[0])} ${numberToString(e[1])} m`);for(let t=2,i=e.length;t{e.push(`${t[4]} ${t[5]+1.3} m`,`${t[6]} ${t[7]+1.3} l`,"S");return[t[0],t[2],t[7],t[3]]}})}}else this.data.popupRef=null}}class SquigglyAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:i}=e;this.data.annotationType=Y;if(this.data.quadPoints=getQuadPoints(t,null)){if(!this.appearance){const e=this.color?getPdfColorArray(this.color):[0,0,0],a=t.get("CA");this._setDefaultAppearance({xref:i,extra:"[] 0 d 1 w",strokeColor:e,strokeAlpha:a,pointsCallback:(e,t)=>{const i=(t[1]-t[5])/6;let a=i,s=t[4];const r=t[5],n=t[6];e.push(`${s} ${r+a} m`);do{s+=2;a=0===a?i:0;e.push(`${s} ${r+a} l`)}while(s{e.push((t[0]+t[4])/2+" "+(t[1]+t[5])/2+" m",(t[2]+t[6])/2+" "+(t[3]+t[7])/2+" l","S");return[t[0],t[2],t[7],t[3]]}})}}else this.data.popupRef=null}}class StampAnnotation extends MarkupAnnotation{#T;constructor(e){super(e);this.data.annotationType=K;this.#T=this.data.hasOwnCanvas=this.data.noRotate;this.data.isEditable=!this.data.noHTML;this.data.noHTML=!1}mustBeViewedWhenEditing(e,t=null){if(e){if(!this.data.isEditable)return!1;this.#T=this.data.hasOwnCanvas;this.data.hasOwnCanvas=!0;return!0}this.data.hasOwnCanvas=this.#T;return!t?.has(this.data.id)}static async createImage(e,t){const{width:i,height:a}=e,s=new OffscreenCanvas(i,a),r=s.getContext("2d",{alpha:!0});r.drawImage(e,0,0);const n=r.getImageData(0,0,i,a).data,g=new Uint32Array(n.buffer),o=g.some(FeatureTest.isLittleEndian?e=>e>>>24!=255:e=>!!(255&~e));if(o){r.fillStyle="white";r.fillRect(0,0,i,a);r.drawImage(e,0,0)}const c=s.convertToBlob({type:"image/jpeg",quality:1}).then((e=>e.arrayBuffer())),C=Name.get("XObject"),h=Name.get("Image"),l=new Dict(t);l.set("Type",C);l.set("Subtype",h);l.set("BitsPerComponent",8);l.set("ColorSpace",Name.get("DeviceRGB"));l.set("Filter",Name.get("DCTDecode"));l.set("BBox",[0,0,i,a]);l.set("Width",i);l.set("Height",a);let Q=null;if(o){const e=new Uint8Array(g.length);if(FeatureTest.isLittleEndian)for(let t=0,i=g.length;t>>24;else for(let t=0,i=g.length;t=0&&r<=1?r:null}}class DecryptStream extends DecodeStream{constructor(e,t,i){super(t);this.str=e;this.dict=e.dict;this.decrypt=i;this.nextChunk=null;this.initialized=!1}readBlock(){let e;if(this.initialized)e=this.nextChunk;else{e=this.str.getBytes(512);this.initialized=!0}if(!e?.length){this.eof=!0;return}this.nextChunk=this.str.getBytes(512);const t=this.nextChunk?.length>0;e=(0,this.decrypt)(e,!t);const i=this.bufferLength,a=i+e.length;this.ensureBuffer(a).set(e,i);this.bufferLength=a}}class ARCFourCipher{constructor(e){this.a=0;this.b=0;const t=new Uint8Array(256),i=e.length;for(let e=0;e<256;++e)t[e]=e;for(let a=0,s=0;a<256;++a){const r=t[a];s=s+r+e[a%i]&255;t[a]=t[s];t[s]=r}this.s=t}encryptBlock(e){let t=this.a,i=this.b;const a=this.s,s=e.length,r=new Uint8Array(s);for(let n=0;n>5&255;C[h++]=s>>13&255;C[h++]=s>>21&255;C[h++]=s>>>29&255;C[h++]=0;C[h++]=0;C[h++]=0;const E=new Int32Array(16);for(h=0;h>>32-g)|0;s=r}r=r+s|0;n=n+c|0;g=g+Q|0;o=o+u|0}return new Uint8Array([255&r,r>>8&255,r>>16&255,r>>>24&255,255&n,n>>8&255,n>>16&255,n>>>24&255,255&g,g>>8&255,g>>16&255,g>>>24&255,255&o,o>>8&255,o>>16&255,o>>>24&255])}}();class Word64{constructor(e,t){this.high=0|e;this.low=0|t}and(e){this.high&=e.high;this.low&=e.low}xor(e){this.high^=e.high;this.low^=e.low}or(e){this.high|=e.high;this.low|=e.low}shiftRight(e){if(e>=32){this.low=this.high>>>e-32|0;this.high=0}else{this.low=this.low>>>e|this.high<<32-e;this.high=this.high>>>e|0}}shiftLeft(e){if(e>=32){this.high=this.low<>>32-e;this.low<<=e}}rotateRight(e){let t,i;if(32&e){i=this.low;t=this.high}else{t=this.low;i=this.high}e&=31;this.low=t>>>e|i<<32-e;this.high=i>>>e|t<<32-e}not(){this.high=~this.high;this.low=~this.low}add(e){const t=(this.low>>>0)+(e.low>>>0);let i=(this.high>>>0)+(e.high>>>0);t>4294967295&&(i+=1);this.low=0|t;this.high=0|i}copyTo(e,t){e[t]=this.high>>>24&255;e[t+1]=this.high>>16&255;e[t+2]=this.high>>8&255;e[t+3]=255&this.high;e[t+4]=this.low>>>24&255;e[t+5]=this.low>>16&255;e[t+6]=this.low>>8&255;e[t+7]=255&this.low}assign(e){this.high=e.high;this.low=e.low}}const Ag=function calculateSHA256Closure(){function rotr(e,t){return e>>>t|e<<32-t}function ch(e,t,i){return e&t^~e&i}function maj(e,t,i){return e&t^e&i^t&i}function sigma(e){return rotr(e,2)^rotr(e,13)^rotr(e,22)}function sigmaPrime(e){return rotr(e,6)^rotr(e,11)^rotr(e,25)}function littleSigma(e){return rotr(e,7)^rotr(e,18)^e>>>3}const e=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];return function hash(t,i,a){let s=1779033703,r=3144134277,n=1013904242,g=2773480762,o=1359893119,c=2600822924,C=528734635,h=1541459225;const l=64*Math.ceil((a+9)/64),Q=new Uint8Array(l);let E,u;for(E=0;E>>29&255;Q[E++]=a>>21&255;Q[E++]=a>>13&255;Q[E++]=a>>5&255;Q[E++]=a<<3&255;const f=new Uint32Array(64);for(E=0;E>>10)+f[u-7]+littleSigma(f[u-15])+f[u-16]|0;let t,i,a=s,l=r,d=n,m=g,y=o,w=c,D=C,b=h;for(u=0;u<64;++u){t=b+sigmaPrime(y)+ch(y,w,D)+e[u]+f[u];i=sigma(a)+maj(a,l,d);b=D;D=w;w=y;y=m+t|0;m=d;d=l;l=a;a=t+i|0}s=s+a|0;r=r+l|0;n=n+d|0;g=g+m|0;o=o+y|0;c=c+w|0;C=C+D|0;h=h+b|0}var p;return new Uint8Array([s>>24&255,s>>16&255,s>>8&255,255&s,r>>24&255,r>>16&255,r>>8&255,255&r,n>>24&255,n>>16&255,n>>8&255,255&n,g>>24&255,g>>16&255,g>>8&255,255&g,o>>24&255,o>>16&255,o>>8&255,255&o,c>>24&255,c>>16&255,c>>8&255,255&c,C>>24&255,C>>16&255,C>>8&255,255&C,h>>24&255,h>>16&255,h>>8&255,255&h])}}(),eg=function calculateSHA512Closure(){function ch(e,t,i,a,s){e.assign(t);e.and(i);s.assign(t);s.not();s.and(a);e.xor(s)}function maj(e,t,i,a,s){e.assign(t);e.and(i);s.assign(t);s.and(a);e.xor(s);s.assign(i);s.and(a);e.xor(s)}function sigma(e,t,i){e.assign(t);e.rotateRight(28);i.assign(t);i.rotateRight(34);e.xor(i);i.assign(t);i.rotateRight(39);e.xor(i)}function sigmaPrime(e,t,i){e.assign(t);e.rotateRight(14);i.assign(t);i.rotateRight(18);e.xor(i);i.assign(t);i.rotateRight(41);e.xor(i)}function littleSigma(e,t,i){e.assign(t);e.rotateRight(1);i.assign(t);i.rotateRight(8);e.xor(i);i.assign(t);i.shiftRight(7);e.xor(i)}function littleSigmaPrime(e,t,i){e.assign(t);e.rotateRight(19);i.assign(t);i.rotateRight(61);e.xor(i);i.assign(t);i.shiftRight(6);e.xor(i)}const e=[new Word64(1116352408,3609767458),new Word64(1899447441,602891725),new Word64(3049323471,3964484399),new Word64(3921009573,2173295548),new Word64(961987163,4081628472),new Word64(1508970993,3053834265),new Word64(2453635748,2937671579),new Word64(2870763221,3664609560),new Word64(3624381080,2734883394),new Word64(310598401,1164996542),new Word64(607225278,1323610764),new Word64(1426881987,3590304994),new Word64(1925078388,4068182383),new Word64(2162078206,991336113),new Word64(2614888103,633803317),new Word64(3248222580,3479774868),new Word64(3835390401,2666613458),new Word64(4022224774,944711139),new Word64(264347078,2341262773),new Word64(604807628,2007800933),new Word64(770255983,1495990901),new Word64(1249150122,1856431235),new Word64(1555081692,3175218132),new Word64(1996064986,2198950837),new Word64(2554220882,3999719339),new Word64(2821834349,766784016),new Word64(2952996808,2566594879),new Word64(3210313671,3203337956),new Word64(3336571891,1034457026),new Word64(3584528711,2466948901),new Word64(113926993,3758326383),new Word64(338241895,168717936),new Word64(666307205,1188179964),new Word64(773529912,1546045734),new Word64(1294757372,1522805485),new Word64(1396182291,2643833823),new Word64(1695183700,2343527390),new Word64(1986661051,1014477480),new Word64(2177026350,1206759142),new Word64(2456956037,344077627),new Word64(2730485921,1290863460),new Word64(2820302411,3158454273),new Word64(3259730800,3505952657),new Word64(3345764771,106217008),new Word64(3516065817,3606008344),new Word64(3600352804,1432725776),new Word64(4094571909,1467031594),new Word64(275423344,851169720),new Word64(430227734,3100823752),new Word64(506948616,1363258195),new Word64(659060556,3750685593),new Word64(883997877,3785050280),new Word64(958139571,3318307427),new Word64(1322822218,3812723403),new Word64(1537002063,2003034995),new Word64(1747873779,3602036899),new Word64(1955562222,1575990012),new Word64(2024104815,1125592928),new Word64(2227730452,2716904306),new Word64(2361852424,442776044),new Word64(2428436474,593698344),new Word64(2756734187,3733110249),new Word64(3204031479,2999351573),new Word64(3329325298,3815920427),new Word64(3391569614,3928383900),new Word64(3515267271,566280711),new Word64(3940187606,3454069534),new Word64(4118630271,4000239992),new Word64(116418474,1914138554),new Word64(174292421,2731055270),new Word64(289380356,3203993006),new Word64(460393269,320620315),new Word64(685471733,587496836),new Word64(852142971,1086792851),new Word64(1017036298,365543100),new Word64(1126000580,2618297676),new Word64(1288033470,3409855158),new Word64(1501505948,4234509866),new Word64(1607167915,987167468),new Word64(1816402316,1246189591)];return function hash(t,i,a,s=!1){let r,n,g,o,c,C,h,l;if(s){r=new Word64(3418070365,3238371032);n=new Word64(1654270250,914150663);g=new Word64(2438529370,812702999);o=new Word64(355462360,4144912697);c=new Word64(1731405415,4290775857);C=new Word64(2394180231,1750603025);h=new Word64(3675008525,1694076839);l=new Word64(1203062813,3204075428)}else{r=new Word64(1779033703,4089235720);n=new Word64(3144134277,2227873595);g=new Word64(1013904242,4271175723);o=new Word64(2773480762,1595750129);c=new Word64(1359893119,2917565137);C=new Word64(2600822924,725511199);h=new Word64(528734635,4215389547);l=new Word64(1541459225,327033209)}const Q=128*Math.ceil((a+17)/128),E=new Uint8Array(Q);let u,d;for(u=0;u>>29&255;E[u++]=a>>21&255;E[u++]=a>>13&255;E[u++]=a>>5&255;E[u++]=a<<3&255;const p=new Array(80);for(u=0;u<80;u++)p[u]=new Word64(0,0);let m=new Word64(0,0),y=new Word64(0,0),w=new Word64(0,0),D=new Word64(0,0),b=new Word64(0,0),F=new Word64(0,0),S=new Word64(0,0),k=new Word64(0,0);const R=new Word64(0,0),N=new Word64(0,0),G=new Word64(0,0),M=new Word64(0,0);let U,x;for(u=0;u=1;--e){i=r[13];r[13]=r[9];r[9]=r[5];r[5]=r[1];r[1]=i;i=r[14];a=r[10];r[14]=r[6];r[10]=r[2];r[6]=i;r[2]=a;i=r[15];a=r[11];s=r[7];r[15]=r[3];r[11]=i;r[7]=a;r[3]=s;for(let e=0;e<16;++e)r[e]=this._inv_s[r[e]];for(let i=0,a=16*e;i<16;++i,++a)r[i]^=t[a];for(let e=0;e<16;e+=4){const t=this._mix[r[e]],a=this._mix[r[e+1]],s=this._mix[r[e+2]],n=this._mix[r[e+3]];i=t^a>>>8^a<<24^s>>>16^s<<16^n>>>24^n<<8;r[e]=i>>>24&255;r[e+1]=i>>16&255;r[e+2]=i>>8&255;r[e+3]=255&i}}i=r[13];r[13]=r[9];r[9]=r[5];r[5]=r[1];r[1]=i;i=r[14];a=r[10];r[14]=r[6];r[10]=r[2];r[6]=i;r[2]=a;i=r[15];a=r[11];s=r[7];r[15]=r[3];r[11]=i;r[7]=a;r[3]=s;for(let e=0;e<16;++e){r[e]=this._inv_s[r[e]];r[e]^=t[e]}return r}_encrypt(e,t){const i=this._s;let a,s,r;const n=new Uint8Array(16);n.set(e);for(let e=0;e<16;++e)n[e]^=t[e];for(let e=1;e=a;--i)if(e[i]!==t){t=0;break}g-=t;r[r.length-1]=e.subarray(0,16-t)}}const o=new Uint8Array(g);for(let e=0,t=0,i=r.length;e=256&&(g=255&(27^g))}for(let t=0;t<4;++t){i[e]=a^=i[e-32];e++;i[e]=s^=i[e-32];e++;i[e]=r^=i[e-32];e++;i[e]=n^=i[e-32];e++}}return i}}class PDF17{checkOwnerPassword(e,t,i,a){const s=new Uint8Array(e.length+56);s.set(e,0);s.set(t,e.length);s.set(i,e.length+t.length);return isArrayEqual(Ag(s,0,s.length),a)}checkUserPassword(e,t,i){const a=new Uint8Array(e.length+8);a.set(e,0);a.set(t,e.length);return isArrayEqual(Ag(a,0,a.length),i)}getOwnerKey(e,t,i,a){const s=new Uint8Array(e.length+56);s.set(e,0);s.set(t,e.length);s.set(i,e.length+t.length);const r=Ag(s,0,s.length);return new AES256Cipher(r).decryptBlock(a,!1,new Uint8Array(16))}getUserKey(e,t,i){const a=new Uint8Array(e.length+8);a.set(e,0);a.set(t,e.length);const s=Ag(a,0,a.length);return new AES256Cipher(s).decryptBlock(i,!1,new Uint8Array(16))}}class PDF20{_hash(e,t,i){let a=Ag(t,0,t.length).subarray(0,32),s=[0],r=0;for(;r<64||s.at(-1)>r-32;){const t=e.length+a.length+i.length,c=new Uint8Array(t);let C=0;c.set(e,C);C+=e.length;c.set(a,C);C+=a.length;c.set(i,C);const h=new Uint8Array(64*t);for(let e=0,i=0;e<64;e++,i+=t)h.set(c,i);s=new AES128Cipher(a.subarray(0,16)).encrypt(h,a.subarray(16,32));const l=s.slice(0,16).reduce(((e,t)=>e+t),0)%3;0===l?a=Ag(s,0,s.length):1===l?a=(n=s,g=0,o=s.length,eg(n,g,o,!0)):2===l&&(a=eg(s,0,s.length));r++}var n,g,o;return a.subarray(0,32)}checkOwnerPassword(e,t,i,a){const s=new Uint8Array(e.length+56);s.set(e,0);s.set(t,e.length);s.set(i,e.length+t.length);return isArrayEqual(this._hash(e,s,i),a)}checkUserPassword(e,t,i){const a=new Uint8Array(e.length+8);a.set(e,0);a.set(t,e.length);return isArrayEqual(this._hash(e,a,[]),i)}getOwnerKey(e,t,i,a){const s=new Uint8Array(e.length+56);s.set(e,0);s.set(t,e.length);s.set(i,e.length+t.length);const r=this._hash(e,s,i);return new AES256Cipher(r).decryptBlock(a,!1,new Uint8Array(16))}getUserKey(e,t,i){const a=new Uint8Array(e.length+8);a.set(e,0);a.set(t,e.length);const s=this._hash(e,a,[]);return new AES256Cipher(s).decryptBlock(i,!1,new Uint8Array(16))}}class CipherTransform{constructor(e,t){this.StringCipherConstructor=e;this.StreamCipherConstructor=t}createStream(e,t){const i=new this.StreamCipherConstructor;return new DecryptStream(e,t,(function cipherTransformDecryptStream(e,t){return i.decryptBlock(e,t)}))}decryptString(e){const t=new this.StringCipherConstructor;let i=stringToBytes(e);i=t.decryptBlock(i,!0);return bytesToString(i)}encryptString(e){const t=new this.StringCipherConstructor;if(t instanceof AESBaseCipher){const i=16-e.length%16;e+=String.fromCharCode(i).repeat(i);const a=new Uint8Array(16);if("undefined"!=typeof crypto)crypto.getRandomValues(a);else for(let e=0;e<16;e++)a[e]=Math.floor(256*Math.random());let s=stringToBytes(e);s=t.encrypt(s,a);const r=new Uint8Array(16+s.length);r.set(a);r.set(s,16);return bytesToString(r)}let i=stringToBytes(e);i=t.encrypt(i);return bytesToString(i)}}class CipherTransformFactory{static#q=new Uint8Array([40,191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122]);#O(e,t,i,a,s,r,n,g,o,c,C,h){if(t){const e=Math.min(127,t.length);t=t.subarray(0,e)}else t=[];const l=6===e?new PDF20:new PDF17;return l.checkUserPassword(t,g,n)?l.getUserKey(t,o,C):t.length&&l.checkOwnerPassword(t,a,r,i)?l.getOwnerKey(t,s,r,c):null}#P(e,t,i,a,s,r,n,g){const o=40+i.length+e.length,c=new Uint8Array(o);let C,h,l=0;if(t){h=Math.min(32,t.length);for(;l>8&255;c[l++]=s>>16&255;c[l++]=s>>>24&255;for(C=0,h=e.length;C=4&&!g){c[l++]=255;c[l++]=255;c[l++]=255;c[l++]=255}let Q=$n(c,0,l);const E=n>>3;if(r>=3)for(C=0;C<50;++C)Q=$n(Q,0,E);const u=Q.subarray(0,E);let d,f;if(r>=3){for(l=0;l<32;++l)c[l]=CipherTransformFactory.#q[l];for(C=0,h=e.length;C>3;if(i>=3)for(g=0;g<50;++g)o=$n(o,0,o.length);let C,h;if(i>=3){h=t;const e=new Uint8Array(c);for(g=19;g>=0;g--){for(let t=0;t>8&255;s[n++]=e>>16&255;s[n++]=255&t;s[n++]=t>>8&255;if(a){s[n++]=115;s[n++]=65;s[n++]=108;s[n++]=84}return $n(s,0,n).subarray(0,Math.min(i.length+5,16))}#X(e,t,i,a,s){if(!(t instanceof Name))throw new FormatError("Invalid crypt filter name.");const r=this,n=e.get(t.name),g=n?.get("CFM");if(!g||"None"===g.name)return function(){return new NullCipher};if("V2"===g.name)return function(){return new ARCFourCipher(r.#j(i,a,s,!1))};if("AESV2"===g.name)return function(){return new AES128Cipher(r.#j(i,a,s,!0))};if("AESV3"===g.name)return function(){return new AES256Cipher(s)};throw new FormatError("Unknown crypto method")}constructor(e,t,i){const a=e.get("Filter");if(!isName(a,"Standard"))throw new FormatError("unknown encryption method");this.filterName=a.name;this.dict=e;const s=e.get("V");if(!Number.isInteger(s)||1!==s&&2!==s&&4!==s&&5!==s)throw new FormatError("unsupported encryption algorithm");this.algorithm=s;let r=e.get("Length");if(!r)if(s<=3)r=40;else{const t=e.get("CF"),i=e.get("StmF");if(t instanceof Dict&&i instanceof Name){t.suppressEncryption=!0;const e=t.get(i.name);r=e?.get("Length")||128;r<40&&(r<<=3)}}if(!Number.isInteger(r)||r<40||r%8!=0)throw new FormatError("invalid key length");const n=stringToBytes(e.get("O")),g=stringToBytes(e.get("U")),o=n.subarray(0,32),c=g.subarray(0,32),C=e.get("P"),h=e.get("R"),l=(4===s||5===s)&&!1!==e.get("EncryptMetadata");this.encryptMetadata=l;const Q=stringToBytes(t);let E,u;if(i){if(6===h)try{i=utf8StringToString(i)}catch{warn("CipherTransformFactory: Unable to convert UTF8 encoded password.")}E=stringToBytes(i)}if(5!==s)u=this.#P(Q,E,o,c,C,h,r,l);else{const t=n.subarray(32,40),i=n.subarray(40,48),a=g.subarray(0,48),s=g.subarray(32,40),r=g.subarray(40,48),C=stringToBytes(e.get("OE")),l=stringToBytes(e.get("UE")),Q=stringToBytes(e.get("Perms"));u=this.#O(h,E,o,t,i,a,c,s,r,C,l,Q)}if(!u&&!i)throw new PasswordException("No password given",rt);if(!u&&i){const e=this.#W(E,o,h,r);u=this.#P(Q,e,o,c,C,h,r,l)}if(!u)throw new PasswordException("Incorrect Password",nt);this.encryptionKey=u;if(s>=4){const t=e.get("CF");t instanceof Dict&&(t.suppressEncryption=!0);this.cf=t;this.stmf=e.get("StmF")||Name.get("Identity");this.strf=e.get("StrF")||Name.get("Identity");this.eff=e.get("EFF")||this.stmf}}createCipherTransform(e,t){if(4===this.algorithm||5===this.algorithm)return new CipherTransform(this.#X(this.cf,this.strf,e,t,this.encryptionKey),this.#X(this.cf,this.stmf,e,t,this.encryptionKey));const i=this.#j(e,t,this.encryptionKey,!1),cipherConstructor=function(){return new ARCFourCipher(i)};return new CipherTransform(cipherConstructor,cipherConstructor)}}function decodeString(e){try{return stringToUTF8String(e)}catch(t){warn(`UTF-8 decoding failed: "${t}".`);return e}}class DatasetXMLParser extends SimpleXMLParser{constructor(e){super(e);this.node=null}onEndElement(e){const t=super.onEndElement(e);if(t&&"xfa:datasets"===e){this.node=t;throw new Error("Aborting DatasetXMLParser.")}}}class DatasetReader{constructor(e){if(e.datasets)this.node=new SimpleXMLParser({hasAttributes:!0}).parseFromString(e.datasets).documentElement;else{const t=new DatasetXMLParser({hasAttributes:!0});try{t.parseFromString(e["xdp:xdp"])}catch{}this.node=t.node}}getValue(e){if(!this.node||!e)return"";const t=this.node.searchNode(parseXFAPath(e),0);if(!t)return"";const i=t.firstChild;return"value"===i?.nodeName?t.children.map((e=>decodeString(e.textContent))):decodeString(t.textContent)}}class XRef{#Z=null;constructor(e,t){this.stream=e;this.pdfManager=t;this.entries=[];this._xrefStms=new Set;this._cacheMap=new Map;this._pendingRefs=new RefSet;this._newPersistentRefNum=null;this._newTemporaryRefNum=null;this._persistentRefsCache=null}getNewPersistentRef(e){null===this._newPersistentRefNum&&(this._newPersistentRefNum=this.entries.length||1);const t=this._newPersistentRefNum++;this._cacheMap.set(t,e);return Ref.get(t,0)}getNewTemporaryRef(){if(null===this._newTemporaryRefNum){this._newTemporaryRefNum=this.entries.length||1;if(this._newPersistentRefNum){this._persistentRefsCache=new Map;for(let e=this._newTemporaryRefNum;e0;){const[n,g]=r;if(!Number.isInteger(n)||!Number.isInteger(g))throw new FormatError(`Invalid XRef range fields: ${n}, ${g}`);if(!Number.isInteger(i)||!Number.isInteger(a)||!Number.isInteger(s))throw new FormatError(`Invalid XRef entry fields length: ${n}, ${g}`);for(let r=t.entryNum;r=e.length);){i+=String.fromCharCode(a);a=e[t]}return i}function skipUntil(e,t,i){const a=i.length,s=e.length;let r=0;for(;t=a)break;t++;r++}return r}const e=/\b(endobj|\d+\s+\d+\s+obj|xref|trailer\s*<<)\b/g,t=/\b(startxref|\d+\s+\d+\s+obj)\b/g,i=/^(\d+)\s+(\d+)\s+obj\b/,a=new Uint8Array([116,114,97,105,108,101,114]),s=new Uint8Array([115,116,97,114,116,120,114,101,102]),r=new Uint8Array([47,88,82,101,102]);this.entries.length=0;this._cacheMap.clear();const n=this.stream;n.pos=0;const g=n.getBytes(),o=bytesToString(g),c=g.length;let C=n.start;const h=[],l=[];for(;C=c)break;Q=g[C]}while(10!==Q&&13!==Q);continue}const E=readToken(g,C);let u;if(E.startsWith("xref")&&(4===E.length||/\s/.test(E[4]))){C+=skipUntil(g,C,a);h.push(C);C+=skipUntil(g,C,s)}else if(u=i.exec(E)){const t=0|u[1],i=0|u[2],a=C+E.length;let s,h=!1;if(this.entries[t]){if(this.entries[t].gen===i)try{new Parser({lexer:new Lexer(n.makeSubStream(a))}).getObj();h=!0}catch(e){e instanceof ParserEOFException?warn(`indexObjects -- checking object (${E}): "${e}".`):h=!0}}else h=!0;h&&(this.entries[t]={offset:C-n.start,gen:i,uncompressed:!0});e.lastIndex=a;const Q=e.exec(o);if(Q){s=e.lastIndex+1-C;if("endobj"!==Q[1]){warn(`indexObjects: Found "${Q[1]}" inside of another "obj", caused by missing "endobj" -- trying to recover.`);s-=Q[1].length+1}}else s=c-C;const d=g.subarray(C,C+s),f=skipUntil(d,0,r);if(f0?Math.max(...this._xrefStms):null)}getEntry(e){const t=this.entries[e];return t&&!t.free&&t.offset?t:null}fetchIfRef(e,t=!1){return e instanceof Ref?this.fetch(e,t):e}fetch(e,t=!1){if(!(e instanceof Ref))throw new Error("ref object is not a reference");const i=e.num,a=this._cacheMap.get(i);if(void 0!==a){a instanceof Dict&&!a.objId&&(a.objId=e.toString());return a}let s=this.getEntry(i);if(null===s){this._cacheMap.set(i,s);return s}if(this._pendingRefs.has(e)){this._pendingRefs.remove(e);warn(`Ignoring circular reference: ${e}.`);return lt}this._pendingRefs.put(e);try{s=s.uncompressed?this.fetchUncompressed(e,s,t):this.fetchCompressed(e,s,t);this._pendingRefs.remove(e)}catch(t){this._pendingRefs.remove(e);throw t}s instanceof Dict?s.objId=e.toString():s instanceof BaseStream&&(s.dict.objId=e.toString());return s}fetchUncompressed(e,t,i=!1){const a=e.gen;let s=e.num;if(t.gen!==a){const r=`Inconsistent generation in XRef: ${e}`;if(this._generationFallback&&t.gen0&&t[3]-t[1]>0)return t;warn(`Empty, or invalid, /${e} entry.`)}return null}get mediaBox(){return shadow(this,"mediaBox",this._getBoundingBox("MediaBox")||tg)}get cropBox(){return shadow(this,"cropBox",this._getBoundingBox("CropBox")||this.mediaBox)}get userUnit(){const e=this.pageDict.get("UserUnit");return shadow(this,"userUnit","number"==typeof e&&e>0?e:1)}get view(){const{cropBox:e,mediaBox:t}=this;if(e!==t&&!isArrayEqual(e,t)){const i=Util.intersect(e,t);if(i&&i[2]-i[0]>0&&i[3]-i[1]>0)return shadow(this,"view",i);warn("Empty /CropBox and /MediaBox intersection.")}return shadow(this,"view",t)}get rotate(){let e=this._getInheritableProperty("Rotate")||0;e%90!=0?e=0:e>=360?e%=360:e<0&&(e=(e%360+360)%360);return shadow(this,"rotate",e)}_onSubStreamError(e,t){if(!this.evaluatorOptions.ignoreErrors)throw e;warn(`getContentStream - ignoring sub-stream (${t}): "${e}".`)}getContentStream(){return this.pdfManager.ensure(this,"content").then((e=>e instanceof BaseStream?e:Array.isArray(e)?new StreamsSequenceStream(e,this._onSubStreamError.bind(this)):new NullStream))}get xfaData(){return shadow(this,"xfaData",this.xfaFactory?{bbox:this.xfaFactory.getBoundingBox(this.pageIndex)}:null)}async#V(e,t,i){const a=[];for(const s of e)if(s.id){const e=Ref.fromString(s.id);if(!e){warn(`A non-linked annotation cannot be modified: ${s.id}`);continue}if(s.deleted){t.put(e,e);if(s.popupRef){const e=Ref.fromString(s.popupRef);e&&t.put(e,e)}continue}i?.put(e);s.ref=e;a.push(this.xref.fetchAsync(e).then((e=>{e instanceof Dict&&(s.oldAnnotation=e.clone())}),(()=>{warn(`Cannot fetch \`oldAnnotation\` for: ${e}.`)})));delete s.id}await Promise.all(a)}async saveNewAnnotations(e,t,i,a,s){if(this.xfaFactory)throw new Error("XFA: Cannot save new annotations.");const r=new PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}),n=new RefSetCache,g=new RefSet;await this.#V(i,n,g);const o=this.pageDict,c=this.annotations.filter((e=>!(e instanceof Ref&&n.has(e)))),C=await AnnotationFactory.saveNewAnnotations(r,t,i,a,s);for(const{ref:e}of C.annotations)e instanceof Ref&&!g.has(e)&&c.push(e);const h=o.clone();h.set("Annots",c);s.put(this.ref,{data:h});for(const e of n)s.put(e,{data:null})}save(e,t,i,a){const s=new PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions});return this._parsedAnnotations.then((function(e){const r=[];for(const n of e)r.push(n.save(s,t,i,a).catch((function(e){warn(`save - ignoring annotation data during "${t.name}" task: "${e}".`);return null})));return Promise.all(r)}))}loadResources(e){this.resourcesPromise||=this.pdfManager.ensure(this,"resources");return this.resourcesPromise.then((()=>new ObjectLoader(this.resources,e,this.xref).load()))}getOperatorList({handler:e,sink:t,task:i,intent:a,cacheKey:s,annotationStorage:r=null,modifiedIds:n=null}){const C=this.getContentStream(),E=this.loadResources(["ColorSpace","ExtGState","Font","Pattern","Properties","Shading","XObject"]),d=new PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}),f=this.xfaFactory?null:getNewAnnotationsMap(r),p=f?.get(this.pageIndex);let m=Promise.resolve(null),y=null;if(p){const e=this.pdfManager.ensureDoc("annotationGlobals");let t;const a=new Set;for(const{bitmapId:e,bitmap:t}of p)!e||t||a.has(e)||a.add(e);const{isOffscreenCanvasSupported:s}=this.evaluatorOptions;if(a.size>0){const e=p.slice();for(const[t,i]of r)t.startsWith(u)&&i.bitmap&&a.has(i.bitmapId)&&e.push(i);t=AnnotationFactory.generateImages(e,this.xref,s)}else t=AnnotationFactory.generateImages(p,this.xref,s);y=new RefSet;m=Promise.all([e,this.#V(p,y,null)]).then((([e])=>e?AnnotationFactory.printNewAnnotations(e,d,i,p,t):null))}const w=Promise.all([C,E]).then((([r])=>{const n=new OperatorList(a,t);e.send("StartRenderPage",{transparency:d.hasBlendModes(this.resources,this.nonBlendModesSet),pageIndex:this.pageIndex,cacheKey:s});return d.getOperatorList({stream:r,task:i,resources:this.resources,operatorList:n}).then((function(){return n}))}));return Promise.all([w,this._parsedAnnotations,m]).then((function([e,t,s]){if(s){t=t.filter((e=>!(e.ref&&y.has(e.ref))));for(let e=0,i=s.length;ee.ref&&isRefsEqual(e.ref,a.refToReplace)));if(r>=0){t.splice(r,1,a);s.splice(e--,1);i--}}}t=t.concat(s)}if(0===t.length||a&l){e.flush(!0);return{length:e.totalLength}}const C=!!(a&h),E=!!(a&Q),u=!!(a&g),f=!!(a&o),p=!!(a&c),m=[];for(const e of t)(u||f&&e.mustBeViewed(r,C)&&e.mustBeViewedWhenEditing(E,n)||p&&e.mustBePrinted(r))&&m.push(e.getOperatorList(d,i,a,r).catch((function(e){warn(`getOperatorList - ignoring annotation data during "${i.name}" task: "${e}".`);return{opList:null,separateForm:!1,separateCanvas:!1}})));return Promise.all(m).then((function(t){let i=!1,a=!1;for(const{opList:s,separateForm:r,separateCanvas:n}of t){e.addOpList(s);i||=r;a||=n}e.flush(!0,{form:i,canvas:a});return{length:e.totalLength}}))}))}async extractTextContent({handler:e,task:t,includeMarkedContent:i,disableNormalization:a,sink:s}){const r=this.getContentStream(),n=this.loadResources(["ExtGState","Font","Properties","XObject"]),g=this.pdfManager.ensureCatalog("lang"),[o,,c]=await Promise.all([r,n,g]);return new PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}).getTextContent({stream:o,task:t,resources:this.resources,includeMarkedContent:i,disableNormalization:a,sink:s,viewBox:this.view,lang:c})}async getStructTree(){const e=await this.pdfManager.ensureCatalog("structTreeRoot");if(!e)return null;await this._parsedAnnotations;const t=await this.pdfManager.ensure(this,"_parseStructTree",[e]);return this.pdfManager.ensure(t,"serializable")}_parseStructTree(e){const t=new StructTreePage(e,this.pageDict);t.parse(this.ref);return t}async getAnnotationsData(e,t,i){const a=await this._parsedAnnotations;if(0===a.length)return a;const s=[],r=[];let n;const C=!!(i&g),h=!!(i&o),l=!!(i&c);for(const i of a){const a=C||h&&i.viewable;(a||l&&i.printable)&&s.push(i.data);if(i.hasTextContent&&a){n||=new PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions});r.push(i.extractTextContent(n,t,[-1/0,-1/0,1/0,1/0]).catch((function(e){warn(`getAnnotationsData - ignoring textContent during "${t.name}" task: "${e}".`)})))}}await Promise.all(r);return s}get annotations(){const e=this._getInheritableProperty("Annots");return shadow(this,"annotations",Array.isArray(e)?e:[])}get _parsedAnnotations(){return shadow(this,"_parsedAnnotations",this.pdfManager.ensure(this,"annotations").then((async e=>{if(0===e.length)return e;const[t,i]=await Promise.all([this.pdfManager.ensureDoc("annotationGlobals"),this.pdfManager.ensureDoc("fieldObjects")]);if(!t)return[];const a=i?.orphanFields,s=[];for(const i of e)s.push(AnnotationFactory.create(this.xref,i,t,this._localIdFactory,!1,a,this.ref).catch((function(e){warn(`_parsedAnnotations: "${e}".`);return null})));const r=[];let n,g;for(const e of await Promise.all(s))e&&(e instanceof WidgetAnnotation?(g||=[]).push(e):e instanceof PopupAnnotation?(n||=[]).push(e):r.push(e));g&&r.push(...g);n&&r.push(...n);return r})))}get jsActions(){return shadow(this,"jsActions",collectActions(this.xref,this.pageDict,pA))}}const ig=new Uint8Array([37,80,68,70,45]),ag=new Uint8Array([115,116,97,114,116,120,114,101,102]),sg=new Uint8Array([101,110,100,111,98,106]);function find(e,t,i=1024,a=!1){const s=t.length,r=e.peekBytes(i),n=r.length-s;if(n<=0)return!1;if(a){const i=s-1;let a=r.length-1;for(;a>=i;){let n=0;for(;n=s){e.pos+=a-i;return!0}a--}}else{let i=0;for(;i<=n;){let a=0;for(;a=s){e.pos+=i;return!0}i++}}return!1}class PDFDocument{constructor(e,t){if(t.length<=0)throw new InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes.");this.pdfManager=e;this.stream=t;this.xref=new XRef(t,e);this._pagePromises=new Map;this._version=null;const i={font:0};this._globalIdFactory=class{static getDocId(){return`g_${e.docId}`}static createFontId(){return"f"+ ++i.font}static createObjId(){unreachable("Abstract method `createObjId` called.")}static getPageObjId(){unreachable("Abstract method `getPageObjId` called.")}}}parse(e){this.xref.parse(e);this.catalog=new Catalog(this.pdfManager,this.xref)}get linearization(){let e=null;try{e=Linearization.create(this.stream)}catch(e){if(e instanceof MissingDataException)throw e;info(e)}return shadow(this,"linearization",e)}get startXRef(){const e=this.stream;let t=0;if(this.linearization){e.reset();if(find(e,sg)){e.skip(6);let i=e.peekByte();for(;isWhiteSpace(i);){e.pos++;i=e.peekByte()}t=e.pos-e.start}}else{const i=1024,a=ag.length;let s=!1,r=e.end;for(;!s&&r>0;){r-=i-a;r<0&&(r=0);e.pos=r;s=find(e,ag,i,!0)}if(s){e.skip(9);let i;do{i=e.getByte()}while(isWhiteSpace(i));let a="";for(;i>=32&&i<=57;){a+=String.fromCharCode(i);i=e.getByte()}t=parseInt(a,10);isNaN(t)&&(t=0)}}return shadow(this,"startXRef",t)}checkHeader(){const e=this.stream;e.reset();if(!find(e,ig))return;e.moveStart();e.skip(ig.length);let t,i="";for(;(t=e.getByte())>32&&i.length<7;)i+=String.fromCharCode(t);ft.test(i)?this._version=i:warn(`Invalid PDF header version: ${i}`)}parseStartXRef(){this.xref.setStartXRef(this.startXRef)}get numPages(){let e=0;e=this.catalog.hasActualNumPages?this.catalog.numPages:this.xfaFactory?this.xfaFactory.getNumPages():this.linearization?this.linearization.numPages:this.catalog.numPages;return shadow(this,"numPages",e)}_hasOnlyDocumentSignatures(e,t=0){return!!Array.isArray(e)&&e.every((e=>{if(!((e=this.xref.fetchIfRef(e))instanceof Dict))return!1;if(e.has("Kids")){if(++t>10){warn("_hasOnlyDocumentSignatures: maximum recursion depth reached");return!1}return this._hasOnlyDocumentSignatures(e.get("Kids"),t)}const i=isName(e.get("FT"),"Sig"),a=e.get("Rect"),s=Array.isArray(a)&&a.every((e=>0===e));return i&&s}))}get _xfaStreams(){const e=this.catalog.acroForm;if(!e)return null;const t=e.get("XFA"),i={"xdp:xdp":"",template:"",datasets:"",config:"",connectionSet:"",localeSet:"",stylesheet:"","/xdp:xdp":""};if(t instanceof BaseStream&&!t.isEmpty){i["xdp:xdp"]=t;return i}if(!Array.isArray(t)||0===t.length)return null;for(let e=0,a=t.length;e0;e.hasFields=a;const s=t.get("XFA");e.hasXfa=Array.isArray(s)&&s.length>0||s instanceof BaseStream&&!s.isEmpty;const r=!!(1&t.get("SigFlags")),n=r&&this._hasOnlyDocumentSignatures(i);e.hasAcroForm=a&&!n;e.hasSignatures=r}catch(e){if(e instanceof MissingDataException)throw e;warn(`Cannot fetch form information: "${e}".`)}return shadow(this,"formInfo",e)}get documentInfo(){const e={PDFFormatVersion:this.version,Language:this.catalog.lang,EncryptFilterName:this.xref.encrypt?this.xref.encrypt.filterName:null,IsLinearized:!!this.linearization,IsAcroFormPresent:this.formInfo.hasAcroForm,IsXFAPresent:this.formInfo.hasXfa,IsCollectionPresent:!!this.catalog.collection,IsSignaturesPresent:this.formInfo.hasSignatures};let t;try{t=this.xref.trailer.get("Info")}catch(e){if(e instanceof MissingDataException)throw e;info("The document information dictionary is invalid.")}if(!(t instanceof Dict))return shadow(this,"documentInfo",e);for(const i of t.getKeys()){const a=t.get(i);switch(i){case"Title":case"Author":case"Subject":case"Keywords":case"Creator":case"Producer":case"CreationDate":case"ModDate":if("string"==typeof a){e[i]=stringToPDFString(a);continue}break;case"Trapped":if(a instanceof Name){e[i]=a;continue}break;default:let t;switch(typeof a){case"string":t=stringToPDFString(a);break;case"number":case"boolean":t=a;break;default:a instanceof Name&&(t=a)}if(void 0===t){warn(`Bad value, for custom key "${i}", in Info: ${a}.`);continue}e.Custom||(e.Custom=Object.create(null));e.Custom[i]=t;continue}warn(`Bad value, for key "${i}", in Info: ${a}.`)}return shadow(this,"documentInfo",e)}get fingerprints(){const e="\0".repeat(16);function validate(t){return"string"==typeof t&&16===t.length&&t!==e}const t=this.xref.trailer.get("ID");let i,a;if(Array.isArray(t)&&validate(t[0])){i=stringToBytes(t[0]);t[1]!==t[0]&&validate(t[1])&&(a=stringToBytes(t[1]))}else i=$n(this.stream.getByteRange(0,1024),0,1024);return shadow(this,"fingerprints",[toHexUtil(i),a?toHexUtil(a):null])}async _getLinearizationPage(e){const{catalog:t,linearization:i,xref:a}=this,s=Ref.get(i.objectNumberFirst,0);try{const e=await a.fetchAsync(s);if(e instanceof Dict){let i=e.getRaw("Type");i instanceof Ref&&(i=await a.fetchAsync(i));if(isName(i,"Page")||!e.has("Type")&&!e.has("Kids")&&e.has("Contents")){t.pageKidsCountCache.has(s)||t.pageKidsCountCache.put(s,1);t.pageIndexCache.has(s)||t.pageIndexCache.put(s,0);return[e,s]}}throw new FormatError("The Linearization dictionary doesn't point to a valid Page dictionary.")}catch(i){warn(`_getLinearizationPage: "${i.message}".`);return t.getPageDict(e)}}getPage(e){const t=this._pagePromises.get(e);if(t)return t;const{catalog:i,linearization:a,xfaFactory:s}=this;let r;r=s?Promise.resolve([Dict.empty,null]):a?.pageFirst===e?this._getLinearizationPage(e):i.getPageDict(e);r=r.then((([t,a])=>new Page({pdfManager:this.pdfManager,xref:this.xref,pageIndex:e,pageDict:t,ref:a,globalIdFactory:this._globalIdFactory,fontCache:i.fontCache,builtInCMapCache:i.builtInCMapCache,standardFontDataCache:i.standardFontDataCache,globalImageCache:i.globalImageCache,systemFontCache:i.systemFontCache,nonBlendModesSet:i.nonBlendModesSet,xfaFactory:s})));this._pagePromises.set(e,r);return r}async checkFirstPage(e=!1){if(!e)try{await this.getPage(0)}catch(e){if(e instanceof XRefEntryException){this._pagePromises.delete(0);await this.cleanup();throw new XRefParseException}}}async checkLastPage(e=!1){const{catalog:t,pdfManager:i}=this;t.setActualNumPages();let a;try{await Promise.all([i.ensureDoc("xfaFactory"),i.ensureDoc("linearization"),i.ensureCatalog("numPages")]);if(this.xfaFactory)return;a=this.linearization?this.linearization.numPages:t.numPages;if(!Number.isInteger(a))throw new FormatError("Page count is not an integer.");if(a<=1)return;await this.getPage(a-1)}catch(s){this._pagePromises.delete(a-1);await this.cleanup();if(s instanceof XRefEntryException&&!e)throw new XRefParseException;warn(`checkLastPage - invalid /Pages tree /Count: ${a}.`);let r;try{r=await t.getAllPageDicts(e)}catch(i){if(i instanceof XRefEntryException&&!e)throw new XRefParseException;t.setActualNumPages(1);return}for(const[e,[a,s]]of r){let r;if(a instanceof Error){r=Promise.reject(a);r.catch((()=>{}))}else r=Promise.resolve(new Page({pdfManager:i,xref:this.xref,pageIndex:e,pageDict:a,ref:s,globalIdFactory:this._globalIdFactory,fontCache:t.fontCache,builtInCMapCache:t.builtInCMapCache,standardFontDataCache:t.standardFontDataCache,globalImageCache:t.globalImageCache,systemFontCache:t.systemFontCache,nonBlendModesSet:t.nonBlendModesSet,xfaFactory:null}));this._pagePromises.set(e,r)}t.setActualNumPages(r.size)}}fontFallback(e,t){return this.catalog.fontFallback(e,t)}async cleanup(e=!1){return this.catalog?this.catalog.cleanup(e):clearGlobalCaches()}async#z(e,t,i,a,s,r,n){const{xref:g}=this;if(!(i instanceof Ref)||r.has(i))return;r.put(i);const o=await g.fetchAsync(i);if(!(o instanceof Dict))return;if(o.has("T")){const t=stringToPDFString(await o.getAsync("T"));e=""===e?t:`${e}.${t}`}else{let i=o;for(;;){i=i.getRaw("Parent")||t;if(i instanceof Ref){if(r.has(i))break;i=await g.fetchAsync(i)}if(!(i instanceof Dict))break;if(i.has("T")){const t=stringToPDFString(await i.getAsync("T"));e=""===e?t:`${e}.${t}`;break}}}t&&!o.has("Parent")&&isName(o.get("Subtype"),"Widget")&&n.put(i,t);a.has(e)||a.set(e,[]);a.get(e).push(AnnotationFactory.create(g,i,s,null,!0,n,null).then((e=>e?.getFieldObject())).catch((function(e){warn(`#collectFieldObjects: "${e}".`);return null})));if(!o.has("Kids"))return;const c=await o.getAsync("Kids");if(Array.isArray(c))for(const t of c)await this.#z(e,i,t,a,s,r,n)}get fieldObjects(){return shadow(this,"fieldObjects",this.pdfManager.ensureDoc("formInfo").then((async e=>{if(!e.hasFields)return null;const[t,i]=await Promise.all([this.pdfManager.ensureDoc("annotationGlobals"),this.pdfManager.ensureCatalog("acroForm")]);if(!t)return null;const a=new RefSet,s=Object.create(null),r=new Map,n=new RefSetCache;for(const e of await i.getAsync("Fields"))await this.#z("",null,e,r,t,a,n);const g=[];for(const[e,t]of r)g.push(Promise.all(t).then((t=>{(t=t.filter((e=>!!e))).length>0&&(s[e]=t)})));await Promise.all(g);return{allFields:s,orphanFields:n}})))}get hasJSActions(){return shadow(this,"hasJSActions",this.pdfManager.ensureDoc("_parseHasJSActions"))}async _parseHasJSActions(){const[e,t]=await Promise.all([this.pdfManager.ensureCatalog("jsActions"),this.pdfManager.ensureDoc("fieldObjects")]);return!!e||!!t&&Object.values(t.allFields).some((e=>e.some((e=>null!==e.actions))))}get calculationOrderIds(){const e=this.catalog.acroForm?.get("CO");if(!Array.isArray(e)||0===e.length)return shadow(this,"calculationOrderIds",null);const t=[];for(const i of e)i instanceof Ref&&t.push(i.toString());return shadow(this,"calculationOrderIds",t.length?t:null)}get annotationGlobals(){return shadow(this,"annotationGlobals",AnnotationFactory.createGlobals(this.pdfManager))}}class BasePdfManager{constructor(e){this._docBaseUrl=function parseDocBaseUrl(e){if(e){const t=createValidAbsoluteUrl(e);if(t)return t.href;warn(`Invalid absolute docBaseUrl: "${e}".`)}return null}(e.docBaseUrl);this._docId=e.docId;this._password=e.password;this.enableXfa=e.enableXfa;e.evaluatorOptions.isOffscreenCanvasSupported&&=FeatureTest.isOffscreenCanvasSupported;e.evaluatorOptions.isImageDecoderSupported&&=FeatureTest.isImageDecoderSupported;this.evaluatorOptions=Object.freeze(e.evaluatorOptions)}get docId(){return this._docId}get password(){return this._password}get docBaseUrl(){return this._docBaseUrl}get catalog(){return this.pdfDocument.catalog}ensureDoc(e,t){return this.ensure(this.pdfDocument,e,t)}ensureXRef(e,t){return this.ensure(this.pdfDocument.xref,e,t)}ensureCatalog(e,t){return this.ensure(this.pdfDocument.catalog,e,t)}getPage(e){return this.pdfDocument.getPage(e)}fontFallback(e,t){return this.pdfDocument.fontFallback(e,t)}loadXfaFonts(e,t){return this.pdfDocument.loadXfaFonts(e,t)}loadXfaImages(){return this.pdfDocument.loadXfaImages()}serializeXfaData(e){return this.pdfDocument.serializeXfaData(e)}cleanup(e=!1){return this.pdfDocument.cleanup(e)}async ensure(e,t,i){unreachable("Abstract method `ensure` called")}requestRange(e,t){unreachable("Abstract method `requestRange` called")}requestLoadedStream(e=!1){unreachable("Abstract method `requestLoadedStream` called")}sendProgressiveData(e){unreachable("Abstract method `sendProgressiveData` called")}updatePassword(e){this._password=e}terminate(e){unreachable("Abstract method `terminate` called")}}class LocalPdfManager extends BasePdfManager{constructor(e){super(e);const t=new Stream(e.source);this.pdfDocument=new PDFDocument(this,t);this._loadedStreamPromise=Promise.resolve(t)}async ensure(e,t,i){const a=e[t];return"function"==typeof a?a.apply(e,i):a}requestRange(e,t){return Promise.resolve()}requestLoadedStream(e=!1){return this._loadedStreamPromise}terminate(e){}}class NetworkPdfManager extends BasePdfManager{constructor(e){super(e);this.streamManager=new ChunkedStreamManager(e.source,{msgHandler:e.handler,length:e.length,disableAutoFetch:e.disableAutoFetch,rangeChunkSize:e.rangeChunkSize});this.pdfDocument=new PDFDocument(this,this.streamManager.getStream())}async ensure(e,t,i){try{const a=e[t];return"function"==typeof a?a.apply(e,i):a}catch(a){if(!(a instanceof MissingDataException))throw a;await this.requestRange(a.begin,a.end);return this.ensure(e,t,i)}}requestRange(e,t){return this.streamManager.requestRange(e,t)}requestLoadedStream(e=!1){return this.streamManager.requestAllChunks(e)}sendProgressiveData(e){this.streamManager.onReceiveData({chunk:e})}terminate(e){this.streamManager.abort(e)}}const rg=1,ng=2,gg=1,og=2,Ig=3,cg=4,Cg=5,hg=6,lg=7,Bg=8;function onFn(){}function wrapReason(e){if(e instanceof AbortException||e instanceof InvalidPDFException||e instanceof MissingPDFException||e instanceof PasswordException||e instanceof UnexpectedResponseException||e instanceof UnknownErrorException)return e;e instanceof Error||"object"==typeof e&&null!==e||unreachable('wrapReason: Expected "reason" to be a (possibly cloned) Error.');switch(e.name){case"AbortException":return new AbortException(e.message);case"InvalidPDFException":return new InvalidPDFException(e.message);case"MissingPDFException":return new MissingPDFException(e.message);case"PasswordException":return new PasswordException(e.message,e.code);case"UnexpectedResponseException":return new UnexpectedResponseException(e.message,e.status);case"UnknownErrorException":return new UnknownErrorException(e.message,e.details)}return new UnknownErrorException(e.message,e.toString())}class MessageHandler{#_=new AbortController;constructor(e,t,i){this.sourceName=e;this.targetName=t;this.comObj=i;this.callbackId=1;this.streamId=1;this.streamSinks=Object.create(null);this.streamControllers=Object.create(null);this.callbackCapabilities=Object.create(null);this.actionHandler=Object.create(null);i.addEventListener("message",this.#$.bind(this),{signal:this.#_.signal})}#$({data:e}){if(e.targetName!==this.sourceName)return;if(e.stream){this.#AA(e);return}if(e.callback){const t=e.callbackId,i=this.callbackCapabilities[t];if(!i)throw new Error(`Cannot resolve callback ${t}`);delete this.callbackCapabilities[t];if(e.callback===rg)i.resolve(e.data);else{if(e.callback!==ng)throw new Error("Unexpected callback case");i.reject(wrapReason(e.reason))}return}const t=this.actionHandler[e.action];if(!t)throw new Error(`Unknown action from worker: ${e.action}`);if(e.callbackId){const i=this.sourceName,a=e.sourceName,s=this.comObj;Promise.try(t,e.data).then((function(t){s.postMessage({sourceName:i,targetName:a,callback:rg,callbackId:e.callbackId,data:t})}),(function(t){s.postMessage({sourceName:i,targetName:a,callback:ng,callbackId:e.callbackId,reason:wrapReason(t)})}))}else e.streamId?this.#eA(e):t(e.data)}on(e,t){const i=this.actionHandler;if(i[e])throw new Error(`There is already an actionName called "${e}"`);i[e]=t}send(e,t,i){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},i)}sendWithPromise(e,t,i){const a=this.callbackId++,s=Promise.withResolvers();this.callbackCapabilities[a]=s;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:a,data:t},i)}catch(e){s.reject(e)}return s.promise}sendWithStream(e,t,i,a){const s=this.streamId++,r=this.sourceName,n=this.targetName,g=this.comObj;return new ReadableStream({start:i=>{const o=Promise.withResolvers();this.streamControllers[s]={controller:i,startCall:o,pullCall:null,cancelCall:null,isClosed:!1};g.postMessage({sourceName:r,targetName:n,action:e,streamId:s,data:t,desiredSize:i.desiredSize},a);return o.promise},pull:e=>{const t=Promise.withResolvers();this.streamControllers[s].pullCall=t;g.postMessage({sourceName:r,targetName:n,stream:hg,streamId:s,desiredSize:e.desiredSize});return t.promise},cancel:e=>{assert(e instanceof Error,"cancel must have a valid reason");const t=Promise.withResolvers();this.streamControllers[s].cancelCall=t;this.streamControllers[s].isClosed=!0;g.postMessage({sourceName:r,targetName:n,stream:gg,streamId:s,reason:wrapReason(e)});return t.promise}},i)}#eA(e){const t=e.streamId,i=this.sourceName,a=e.sourceName,s=this.comObj,r=this,n=this.actionHandler[e.action],g={enqueue(e,r=1,n){if(this.isCancelled)return;const g=this.desiredSize;this.desiredSize-=r;if(g>0&&this.desiredSize<=0){this.sinkCapability=Promise.withResolvers();this.ready=this.sinkCapability.promise}s.postMessage({sourceName:i,targetName:a,stream:cg,streamId:t,chunk:e},n)},close(){if(!this.isCancelled){this.isCancelled=!0;s.postMessage({sourceName:i,targetName:a,stream:Ig,streamId:t});delete r.streamSinks[t]}},error(e){assert(e instanceof Error,"error must have a valid reason");if(!this.isCancelled){this.isCancelled=!0;s.postMessage({sourceName:i,targetName:a,stream:Cg,streamId:t,reason:wrapReason(e)})}},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};g.sinkCapability.resolve();g.ready=g.sinkCapability.promise;this.streamSinks[t]=g;Promise.try(n,e.data,g).then((function(){s.postMessage({sourceName:i,targetName:a,stream:Bg,streamId:t,success:!0})}),(function(e){s.postMessage({sourceName:i,targetName:a,stream:Bg,streamId:t,reason:wrapReason(e)})}))}#AA(e){const t=e.streamId,i=this.sourceName,a=e.sourceName,s=this.comObj,r=this.streamControllers[t],n=this.streamSinks[t];switch(e.stream){case Bg:e.success?r.startCall.resolve():r.startCall.reject(wrapReason(e.reason));break;case lg:e.success?r.pullCall.resolve():r.pullCall.reject(wrapReason(e.reason));break;case hg:if(!n){s.postMessage({sourceName:i,targetName:a,stream:lg,streamId:t,success:!0});break}n.desiredSize<=0&&e.desiredSize>0&&n.sinkCapability.resolve();n.desiredSize=e.desiredSize;Promise.try(n.onPull||onFn).then((function(){s.postMessage({sourceName:i,targetName:a,stream:lg,streamId:t,success:!0})}),(function(e){s.postMessage({sourceName:i,targetName:a,stream:lg,streamId:t,reason:wrapReason(e)})}));break;case cg:assert(r,"enqueue should have stream controller");if(r.isClosed)break;r.controller.enqueue(e.chunk);break;case Ig:assert(r,"close should have stream controller");if(r.isClosed)break;r.isClosed=!0;r.controller.close();this.#tA(r,t);break;case Cg:assert(r,"error should have stream controller");r.controller.error(wrapReason(e.reason));this.#tA(r,t);break;case og:e.success?r.cancelCall.resolve():r.cancelCall.reject(wrapReason(e.reason));this.#tA(r,t);break;case gg:if(!n)break;const g=wrapReason(e.reason);Promise.try(n.onCancel||onFn,g).then((function(){s.postMessage({sourceName:i,targetName:a,stream:og,streamId:t,success:!0})}),(function(e){s.postMessage({sourceName:i,targetName:a,stream:og,streamId:t,reason:wrapReason(e)})}));n.sinkCapability.reject(g);n.isCancelled=!0;delete this.streamSinks[t];break;default:throw new Error("Unexpected stream case")}}async#tA(e,t){await Promise.allSettled([e.startCall?.promise,e.pullCall?.promise,e.cancelCall?.promise]);delete this.streamControllers[t]}destroy(){this.#_?.abort();this.#_=null}}async function writeObject(e,t,i,{encrypt:a=null}){const s=a?.createCipherTransform(e.num,e.gen);i.push(`${e.num} ${e.gen} obj\n`);t instanceof Dict?await writeDict(t,i,s):t instanceof BaseStream?await writeStream(t,i,s):(Array.isArray(t)||ArrayBuffer.isView(t))&&await writeArray(t,i,s);i.push("\nendobj\n")}async function writeDict(e,t,i){t.push("<<");for(const a of e.getKeys()){t.push(` /${escapePDFName(a)} `);await writeValue(e.getRaw(a),t,i)}t.push(">>")}async function writeStream(e,t,i){let a=e.getBytes();const{dict:s}=e,[r,n]=await Promise.all([s.getAsync("Filter"),s.getAsync("DecodeParms")]),g=isName(Array.isArray(r)?await s.xref.fetchIfRefAsync(r[0]):r,"FlateDecode");if(a.length>=256||g)try{const e=new CompressionStream("deflate"),t=e.writable.getWriter();await t.ready;t.write(a).then((async()=>{await t.ready;await t.close()})).catch((()=>{}));const i=await new Response(e.readable).arrayBuffer();a=new Uint8Array(i);let o,c;if(r){if(!g){o=Array.isArray(r)?[Name.get("FlateDecode"),...r]:[Name.get("FlateDecode"),r];n&&(c=Array.isArray(n)?[null,...n]:[null,n])}}else o=Name.get("FlateDecode");o&&s.set("Filter",o);c&&s.set("DecodeParms",c)}catch(e){info(`writeStream - cannot compress data: "${e}".`)}let o=bytesToString(a);i&&(o=i.encryptString(o));s.set("Length",o.length);await writeDict(s,t,i);t.push(" stream\n",o,"\nendstream")}async function writeArray(e,t,i){t.push("[");let a=!0;for(const s of e){a?a=!1:t.push(" ");await writeValue(s,t,i)}t.push("]")}async function writeValue(e,t,i){if(e instanceof Name)t.push(`/${escapePDFName(e.name)}`);else if(e instanceof Ref)t.push(`${e.num} ${e.gen} R`);else if(Array.isArray(e)||ArrayBuffer.isView(e))await writeArray(e,t,i);else if("string"==typeof e){i&&(e=i.encryptString(e));t.push(`(${escapeString(e)})`)}else"number"==typeof e?t.push(numberToString(e)):"boolean"==typeof e?t.push(e.toString()):e instanceof Dict?await writeDict(e,t,i):e instanceof BaseStream?await writeStream(e,t,i):null===e?t.push("null"):warn(`Unhandled value in writer: ${typeof e}, please file a bug.`)}function writeInt(e,t,i,a){for(let s=t+i-1;s>i-1;s--){a[s]=255&e;e>>=8}return i+t}function writeString(e,t,i){for(let a=0,s=e.length;a1&&(r=i.documentElement.searchNode([s.at(-1)],0));r?r.childNodes=Array.isArray(a)?a.map((e=>new SimpleDOMNode("value",e))):[new SimpleDOMNode("#text",a)]:warn(`Node not found for path: ${t}`)}const a=[];i.documentElement.dump(a);return a.join("")}(a.fetchIfRef(t).getString(),i)}const s=new StringStream(e);s.dict=new Dict(a);s.dict.set("Type",Name.get("EmbeddedFile"));i.put(t,{data:s})}function getIndexes(e){const t=[];for(const{ref:i}of e)i.num===t.at(-2)+t.at(-1)?t[t.length-1]+=1:t.push(i.num,1);return t}function computeIDs(e,t,i){if(Array.isArray(t.fileIds)&&t.fileIds.length>0){const a=function computeMD5(e,t){const i=Math.floor(Date.now()/1e3),a=t.filename||"",s=[i.toString(),a,e.toString()];let r=s.reduce(((e,t)=>e+t.length),0);for(const e of Object.values(t.info)){s.push(e);r+=e.length}const n=new Uint8Array(r);let g=0;for(const e of s){writeString(e,g,n);g+=e.length}return bytesToString($n(n))}(e,t);i.set("ID",[t.fileIds[0],a])}}async function incrementalUpdate({originalData:e,xrefInfo:t,changes:i,xref:a=null,hasXfa:s=!1,xfaDatasetsRef:r=null,hasXfaDatasetsEntry:n=!1,needAppearances:g,acroFormRef:o=null,acroForm:c=null,xfaData:C=null,useXrefStream:h=!1}){await async function updateAcroform({xref:e,acroForm:t,acroFormRef:i,hasXfa:a,hasXfaDatasetsEntry:s,xfaDatasetsRef:r,needAppearances:n,changes:g}){!a||s||r||warn("XFA - Cannot save it");if(!n&&(!a||!r||s))return;const o=t.clone();if(a&&!s){const e=t.get("XFA").slice();e.splice(2,0,"datasets");e.splice(3,0,r);o.set("XFA",e)}n&&o.set("NeedAppearances",!0);g.put(i,{data:o})}({xref:a,acroForm:c,acroFormRef:o,hasXfa:s,hasXfaDatasetsEntry:n,xfaDatasetsRef:r,needAppearances:g,changes:i});s&&updateXFA({xfaData:C,xfaDatasetsRef:r,changes:i,xref:a});const l=function getTrailerDict(e,t,i){const a=new Dict(null);a.set("Prev",e.startXRef);const s=e.newRef;if(i){t.put(s,{data:""});a.set("Size",s.num+1);a.set("Type",Name.get("XRef"))}else a.set("Size",s.num);null!==e.rootRef&&a.set("Root",e.rootRef);null!==e.infoRef&&a.set("Info",e.infoRef);null!==e.encryptRef&&a.set("Encrypt",e.encryptRef);return a}(t,i,h),Q=[],E=await async function writeChanges(e,t,i=[]){const a=[];for(const[s,{data:r}]of e.items())if(null!==r&&"string"!=typeof r){await writeObject(s,r,i,t);a.push({ref:s,data:i.join("")});i.length=0}else a.push({ref:s,data:r});return a.sort(((e,t)=>e.ref.num-t.ref.num))}(i,a,Q);let u=e.length;const d=e.at(-1);if(10!==d&&13!==d){Q.push("\n");u+=1}for(const{data:e}of E)null!==e&&Q.push(e);await(h?async function getXRefStreamTable(e,t,i,a,s){const r=[];let n=0,g=0;for(const{ref:e,data:a}of i){let i;n=Math.max(n,t);if(null!==a){i=Math.min(e.gen,65535);r.push([1,t,i]);t+=a.length}else{i=Math.min(e.gen+1,65535);r.push([0,0,i])}g=Math.max(g,i)}a.set("Index",getIndexes(i));const o=[1,getSizeInBytes(n),getSizeInBytes(g)];a.set("W",o);computeIDs(t,e,a);const c=o.reduce(((e,t)=>e+t),0),C=new Uint8Array(c*r.length),h=new Stream(C);h.dict=a;let l=0;for(const[e,t,i]of r){l=writeInt(e,o[0],l,C);l=writeInt(t,o[1],l,C);l=writeInt(i,o[2],l,C)}await writeObject(e.newRef,h,s,{});s.push("startxref\n",t.toString(),"\n%%EOF\n")}(t,u,E,l,Q):async function getXRefTable(e,t,i,a,s){s.push("xref\n");const r=getIndexes(i);let n=0;for(const{ref:e,data:a}of i){if(e.num===r[n]){s.push(`${r[n]} ${r[n+1]}\n`);n+=2}if(null!==a){s.push(`${t.toString().padStart(10,"0")} ${Math.min(e.gen,65535).toString().padStart(5,"0")} n\r\n`);t+=a.length}else s.push(`0000000000 ${Math.min(e.gen+1,65535).toString().padStart(5,"0")} f\r\n`)}computeIDs(t,e,a);s.push("trailer\n");await writeDict(a,s);s.push("\nstartxref\n",t.toString(),"\n%%EOF\n")}(t,u,E,l,Q));const f=Q.reduce(((e,t)=>e+t.length),e.length),p=new Uint8Array(f);p.set(e);let m=e.length;for(const e of Q){writeString(e,m,p);m+=e.length}return p}class PDFWorkerStream{constructor(e){this._msgHandler=e;this._contentLength=null;this._fullRequestReader=null;this._rangeRequestReaders=[]}getFullReader(){assert(!this._fullRequestReader,"PDFWorkerStream.getFullReader can only be called once.");this._fullRequestReader=new PDFWorkerStreamReader(this._msgHandler);return this._fullRequestReader}getRangeReader(e,t){const i=new PDFWorkerStreamRangeReader(e,t,this._msgHandler);this._rangeRequestReaders.push(i);return i}cancelAllRequests(e){this._fullRequestReader?.cancel(e);for(const t of this._rangeRequestReaders.slice(0))t.cancel(e)}}class PDFWorkerStreamReader{constructor(e){this._msgHandler=e;this.onProgress=null;this._contentLength=null;this._isRangeSupported=!1;this._isStreamingSupported=!1;const t=this._msgHandler.sendWithStream("GetReader");this._reader=t.getReader();this._headersReady=this._msgHandler.sendWithPromise("ReaderHeadersReady").then((e=>{this._isStreamingSupported=e.isStreamingSupported;this._isRangeSupported=e.isRangeSupported;this._contentLength=e.contentLength}))}get headersReady(){return this._headersReady}get contentLength(){return this._contentLength}get isStreamingSupported(){return this._isStreamingSupported}get isRangeSupported(){return this._isRangeSupported}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class PDFWorkerStreamRangeReader{constructor(e,t,i){this._msgHandler=i;this.onProgress=null;const a=this._msgHandler.sendWithStream("GetRangeReader",{begin:e,end:t});this._reader=a.getReader()}get isStreamingSupported(){return!1}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class WorkerTask{constructor(e){this.name=e;this.terminated=!1;this._capability=Promise.withResolvers()}get finished(){return this._capability.promise}finish(){this._capability.resolve()}terminate(){this.terminated=!0}ensureNotTerminated(){if(this.terminated)throw new Error("Worker task was terminated")}}class WorkerMessageHandler{static{"undefined"==typeof window&&!t&&"undefined"!=typeof self&&"function"==typeof self.postMessage&&"onmessage"in self&&this.initializeFromPort(self)}static setup(e,t){let i=!1;e.on("test",(t=>{if(!i){i=!0;e.send("test",t instanceof Uint8Array)}}));e.on("configure",(e=>{!function setVerbosityLevel(e){Number.isInteger(e)&&(gt=e)}(e.verbosity)}));e.on("GetDocRequest",(e=>this.createDocumentHandler(e,t)))}static createDocumentHandler(e,t){let i,a=!1,s=null;const r=new Set,n=getVerbosityLevel(),{docId:g,apiVersion:o}=e,c="4.10.38";if(o!==c)throw new Error(`The API version "${o}" does not match the Worker version "${c}".`);const C=[];for(const e in[])C.push(e);if(C.length)throw new Error("The `Array.prototype` contains unexpected enumerable properties: "+C.join(", ")+"; thus breaking e.g. `for...in` iteration of `Array`s.");const h=g+"_worker";let l=new MessageHandler(h,g,t);function ensureNotTerminated(){if(a)throw new Error("Worker was terminated")}function startWorkerTask(e){r.add(e)}function finishWorkerTask(e){e.finish();r.delete(e)}async function loadDocument(e){await i.ensureDoc("checkHeader");await i.ensureDoc("parseStartXRef");await i.ensureDoc("parse",[e]);await i.ensureDoc("checkFirstPage",[e]);await i.ensureDoc("checkLastPage",[e]);const t=await i.ensureDoc("isPureXfa");if(t){const e=new WorkerTask("loadXfaFonts");startWorkerTask(e);await Promise.all([i.loadXfaFonts(l,e).catch((e=>{})).then((()=>finishWorkerTask(e))),i.loadXfaImages()])}const[a,s]=await Promise.all([i.ensureDoc("numPages"),i.ensureDoc("fingerprints")]);return{numPages:a,fingerprints:s,htmlForXfa:t?await i.ensureDoc("htmlForXfa"):null}}function setupDoc(e){function onSuccess(e){ensureNotTerminated();l.send("GetDoc",{pdfInfo:e})}function onFailure(e){ensureNotTerminated();if(e instanceof PasswordException){const t=new WorkerTask(`PasswordException: response ${e.code}`);startWorkerTask(t);l.sendWithPromise("PasswordRequest",e).then((function({password:e}){finishWorkerTask(t);i.updatePassword(e);pdfManagerReady()})).catch((function(){finishWorkerTask(t);l.send("DocException",e)}))}else l.send("DocException",wrapReason(e))}function pdfManagerReady(){ensureNotTerminated();loadDocument(!1).then(onSuccess,(function(e){ensureNotTerminated();e instanceof XRefParseException?i.requestLoadedStream().then((function(){ensureNotTerminated();loadDocument(!0).then(onSuccess,onFailure)})):onFailure(e)}))}ensureNotTerminated();(async function getPdfManager({data:e,password:t,disableAutoFetch:i,rangeChunkSize:a,length:r,docBaseUrl:n,enableXfa:o,evaluatorOptions:c}){const C={source:null,disableAutoFetch:i,docBaseUrl:n,docId:g,enableXfa:o,evaluatorOptions:c,handler:l,length:r,password:t,rangeChunkSize:a};if(e){C.source=e;return new LocalPdfManager(C)}const h=new PDFWorkerStream(l),Q=h.getFullReader(),E=Promise.withResolvers();let u,d=[],f=0;Q.headersReady.then((function(){if(Q.isRangeSupported){C.source=h;C.length=Q.contentLength;C.disableAutoFetch||=Q.isStreamingSupported;u=new NetworkPdfManager(C);for(const e of d)u.sendProgressiveData(e);d=[];E.resolve(u);s=null}})).catch((function(e){E.reject(e);s=null}));new Promise((function(e,t){const readChunk=function({value:e,done:i}){try{ensureNotTerminated();if(i){if(!u){const e=arrayBuffersToBytes(d);d=[];r&&e.length!==r&&warn("reported HTTP length is different from actual");C.source=e;u=new LocalPdfManager(C);E.resolve(u)}s=null;return}f+=e.byteLength;Q.isStreamingSupported||l.send("DocProgress",{loaded:f,total:Math.max(f,Q.contentLength||0)});u?u.sendProgressiveData(e):d.push(e);Q.read().then(readChunk,t)}catch(e){t(e)}};Q.read().then(readChunk,t)})).catch((function(e){E.reject(e);s=null}));s=e=>{h.cancelAllRequests(e)};return E.promise})(e).then((function(e){if(a){e.terminate(new AbortException("Worker was terminated."));throw new Error("Worker was terminated")}i=e;i.requestLoadedStream(!0).then((e=>{l.send("DataLoaded",{length:e.bytes.byteLength})}))})).then(pdfManagerReady,onFailure)}l.on("GetPage",(function(e){return i.getPage(e.pageIndex).then((function(e){return Promise.all([i.ensure(e,"rotate"),i.ensure(e,"ref"),i.ensure(e,"userUnit"),i.ensure(e,"view")]).then((function([e,t,i,a]){return{rotate:e,ref:t,refStr:t?.toString()??null,userUnit:i,view:a}}))}))}));l.on("GetPageIndex",(function(e){const t=Ref.get(e.num,e.gen);return i.ensureCatalog("getPageIndex",[t])}));l.on("GetDestinations",(function(e){return i.ensureCatalog("destinations")}));l.on("GetDestination",(function(e){return i.ensureCatalog("getDestination",[e.id])}));l.on("GetPageLabels",(function(e){return i.ensureCatalog("pageLabels")}));l.on("GetPageLayout",(function(e){return i.ensureCatalog("pageLayout")}));l.on("GetPageMode",(function(e){return i.ensureCatalog("pageMode")}));l.on("GetViewerPreferences",(function(e){return i.ensureCatalog("viewerPreferences")}));l.on("GetOpenAction",(function(e){return i.ensureCatalog("openAction")}));l.on("GetAttachments",(function(e){return i.ensureCatalog("attachments")}));l.on("GetDocJSActions",(function(e){return i.ensureCatalog("jsActions")}));l.on("GetPageJSActions",(function({pageIndex:e}){return i.getPage(e).then((function(e){return i.ensure(e,"jsActions")}))}));l.on("GetOutline",(function(e){return i.ensureCatalog("documentOutline")}));l.on("GetOptionalContentConfig",(function(e){return i.ensureCatalog("optionalContentConfig")}));l.on("GetPermissions",(function(e){return i.ensureCatalog("permissions")}));l.on("GetMetadata",(function(e){return Promise.all([i.ensureDoc("documentInfo"),i.ensureCatalog("metadata")])}));l.on("GetMarkInfo",(function(e){return i.ensureCatalog("markInfo")}));l.on("GetData",(function(e){return i.requestLoadedStream().then((function(e){return e.bytes}))}));l.on("GetAnnotations",(function({pageIndex:e,intent:t}){return i.getPage(e).then((function(i){const a=new WorkerTask(`GetAnnotations: page ${e}`);startWorkerTask(a);return i.getAnnotationsData(l,a,t).then((e=>{finishWorkerTask(a);return e}),(e=>{finishWorkerTask(a);throw e}))}))}));l.on("GetFieldObjects",(function(e){return i.ensureDoc("fieldObjects").then((e=>e?.allFields||null))}));l.on("HasJSActions",(function(e){return i.ensureDoc("hasJSActions")}));l.on("GetCalculationOrderIds",(function(e){return i.ensureDoc("calculationOrderIds")}));l.on("SaveDocument",(async function({isPureXfa:e,numPages:t,annotationStorage:a,filename:s}){const r=[i.requestLoadedStream(),i.ensureCatalog("acroForm"),i.ensureCatalog("acroFormRef"),i.ensureDoc("startXRef"),i.ensureDoc("xref"),i.ensureDoc("linearization"),i.ensureCatalog("structTreeRoot")],n=new RefSetCache,g=[],o=e?null:getNewAnnotationsMap(a),[c,C,h,Q,E,u,d]=await Promise.all(r),f=E.trailer.getRaw("Root")||null;let p;if(o){d?await d.canUpdateStructTree({pdfManager:i,xref:E,newAnnotationsByPage:o})&&(p=d):await StructTreeRoot.canCreateStructureTree({catalogRef:f,pdfManager:i,newAnnotationsByPage:o})&&(p=null);const e=AnnotationFactory.generateImages(a.values(),E,i.evaluatorOptions.isOffscreenCanvasSupported),t=void 0===p?g:[];for(const[a,s]of o)t.push(i.getPage(a).then((t=>{const i=new WorkerTask(`Save (editor): page ${a}`);startWorkerTask(i);return t.saveNewAnnotations(l,i,s,e,n).finally((function(){finishWorkerTask(i)}))})));null===p?g.push(Promise.all(t).then((async()=>{await StructTreeRoot.createStructureTree({newAnnotationsByPage:o,xref:E,catalogRef:f,pdfManager:i,changes:n})}))):p&&g.push(Promise.all(t).then((async()=>{await p.updateStructureTree({newAnnotationsByPage:o,pdfManager:i,changes:n})})))}if(e)g.push(i.serializeXfaData(a));else for(let e=0;ee.needAppearances)),D=C instanceof Dict&&C.get("XFA")||null;let b=null,F=!1;if(Array.isArray(D)){for(let e=0,t=D.length;e{E.resetNewTemporaryRef()}))}));l.on("GetOperatorList",(function(e,t){const a=e.pageIndex;i.getPage(a).then((function(i){const s=new WorkerTask(`GetOperatorList: page ${a}`);startWorkerTask(s);const r=n>=yA?Date.now():0;i.getOperatorList({handler:l,sink:t,task:s,intent:e.intent,cacheKey:e.cacheKey,annotationStorage:e.annotationStorage,modifiedIds:e.modifiedIds}).then((function(e){finishWorkerTask(s);r&&info(`page=${a+1} - getOperatorList: time=${Date.now()-r}ms, len=${e.length}`);t.close()}),(function(e){finishWorkerTask(s);s.terminated||t.error(e)}))}))}));l.on("GetTextContent",(function(e,t){const{pageIndex:a,includeMarkedContent:s,disableNormalization:r}=e;i.getPage(a).then((function(e){const i=new WorkerTask("GetTextContent: page "+a);startWorkerTask(i);const g=n>=yA?Date.now():0;e.extractTextContent({handler:l,task:i,sink:t,includeMarkedContent:s,disableNormalization:r}).then((function(){finishWorkerTask(i);g&&info(`page=${a+1} - getTextContent: time=`+(Date.now()-g)+"ms");t.close()}),(function(e){finishWorkerTask(i);i.terminated||t.error(e)}))}))}));l.on("GetStructTree",(function(e){return i.getPage(e.pageIndex).then((function(e){return i.ensure(e,"getStructTree")}))}));l.on("FontFallback",(function(e){return i.fontFallback(e.id,l)}));l.on("Cleanup",(function(e){return i.cleanup(!0)}));l.on("Terminate",(function(e){a=!0;const t=[];if(i){i.terminate(new AbortException("Worker was terminated."));const e=i.cleanup();t.push(e);i=null}else clearGlobalCaches();s?.(new AbortException("Worker was terminated."));for(const e of r){t.push(e.finished);e.terminate()}return Promise.all(t).then((function(){l.destroy();l=null}))}));l.on("Ready",(function(t){setupDoc(e);e=null}));return h}static initializeFromPort(e){const t=new MessageHandler("worker","main",e);this.setup(t,e);t.send("ready",null)}}var Qg=__webpack_exports__.WorkerMessageHandler;export{Qg as WorkerMessageHandler}; \ No newline at end of file diff --git a/partitions/svelte.config.js b/partitions/svelte.config.js new file mode 100644 index 0000000..75bccab --- /dev/null +++ b/partitions/svelte.config.js @@ -0,0 +1,21 @@ +import adapter from '@sveltejs/adapter-static'; +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + preprocess: vitePreprocess(), + kit: { + adapter: adapter({ + pages: 'build', + assets: 'build', + fallback: 'index.html', + precompress: false, + strict: true + }), + alias: { + $lib: './src/lib' + } + } +}; + +export default config; diff --git a/partitions/tailwind.config.js b/partitions/tailwind.config.js new file mode 100644 index 0000000..ad191de --- /dev/null +++ b/partitions/tailwind.config.js @@ -0,0 +1,17 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./src/**/*.{html,js,svelte,ts}'], + theme: { + extend: { + colors: { + ohmj: { + primary: '#1e3a5f', + secondary: '#c9a227', + light: '#f5f5f5', + dark: '#0a1f33' + } + } + } + }, + plugins: [] +}; diff --git a/partitions/tsconfig.json b/partitions/tsconfig.json new file mode 100644 index 0000000..a8f10c8 --- /dev/null +++ b/partitions/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + } +} diff --git a/partitions/vite.config.ts b/partitions/vite.config.ts new file mode 100644 index 0000000..18f2561 --- /dev/null +++ b/partitions/vite.config.ts @@ -0,0 +1,9 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [sveltekit()], + server: { + port: 5173 + } +});