From b801832b4c04528abab3ebb7857b95e9b830d27c Mon Sep 17 00:00:00 2001 From: Hyckael Date: Wed, 22 Oct 2025 14:07:47 +0200 Subject: [PATCH 01/68] add package-lock to gitignore --- frontend/web/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/web/.gitignore b/frontend/web/.gitignore index 5ef6a52..f640009 100644 --- a/frontend/web/.gitignore +++ b/frontend/web/.gitignore @@ -39,3 +39,5 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts + +package-lock.json \ No newline at end of file From 726e6f3e93a4c02aa6c0147379b3ddc8b09398cf Mon Sep 17 00:00:00 2001 From: Hyckael Date: Wed, 22 Oct 2025 16:01:54 +0200 Subject: [PATCH 02/68] page-not-found done --- frontend/web/package-lock.json | 186 +++++++--- frontend/web/package.json | 3 + frontend/web/src/app/globals.css | 126 ++++++- frontend/web/src/app/not-found.tsx | 11 + .../web/src/component/ui/page-not-found.tsx | 222 +++++++++++ .../web/src/components/page-not-found.tsx | 349 ++++++++++++++++++ frontend/web/src/lib/utils.ts | 8 +- 7 files changed, 829 insertions(+), 76 deletions(-) create mode 100644 frontend/web/src/app/not-found.tsx create mode 100644 frontend/web/src/component/ui/page-not-found.tsx create mode 100644 frontend/web/src/components/page-not-found.tsx diff --git a/frontend/web/package-lock.json b/frontend/web/package-lock.json index 5df3bdd..e26accf 100644 --- a/frontend/web/package-lock.json +++ b/frontend/web/package-lock.json @@ -13,6 +13,7 @@ "@react-three/drei": "^10.7.6", "@react-three/fiber": "^9.4.0", "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", "framer-motion": "^12.23.24", "lottie-react": "^2.4.1", "lucide-react": "^0.546.0", @@ -20,6 +21,7 @@ "react": "19.1.0", "react-dom": "19.1.0", "react-hook-form": "^7.65.0", + "tailwind-merge": "^3.3.1", "three": "^0.180.0" }, "devDependencies": { @@ -31,6 +33,7 @@ "eslint": "^9", "eslint-config-next": "15.5.5", "tailwindcss": "^4", + "tw-animate-css": "^1.4.0", "typescript": "^5" } }, @@ -60,39 +63,6 @@ "resolved": "https://registry.npmjs.org/@dimforge/rapier3d-compat/-/rapier3d-compat-0.12.0.tgz", "integrity": "sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==" }, - "node_modules/@emnapi/core": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.5.0.tgz", - "integrity": "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", - "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", @@ -397,19 +367,6 @@ "three": ">= 0.159.0" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, "node_modules/@next/env": { "version": "15.5.5", "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.5.tgz", @@ -766,17 +723,6 @@ "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.3.tgz", "integrity": "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==" }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@types/draco3d": { "version": "1.4.10", "resolved": "https://registry.npmjs.org/@types/draco3d/-/draco3d-1.4.10.tgz", @@ -1682,7 +1628,6 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", - "license": "Apache-2.0", "dependencies": { "clsx": "^2.1.1" }, @@ -1700,7 +1645,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", "engines": { "node": ">=6" } @@ -3818,7 +3762,6 @@ "version": "0.546.0", "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.546.0.tgz", "integrity": "sha512-Z94u6fKT43lKeYHiVyvyR8fT7pwCzDu7RyMPpTvh054+xahSgj4HFQ+NmflvzdXsoAjYGdCguGaFKYuvq0ThCQ==", - "license": "ISC", "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } @@ -5145,6 +5088,15 @@ "react": ">=17.0" } }, + "node_modules/tailwind-merge": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.1.tgz", + "integrity": "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, "node_modules/tailwindcss": { "version": "4.1.14", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.14.tgz", @@ -5372,6 +5324,15 @@ } } }, + "node_modules/tw-animate-css": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.4.0.tgz", + "integrity": "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/Wombosvideo" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -5738,6 +5699,111 @@ "optional": true } } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.5.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.5.tgz", + "integrity": "sha512-lYExGHuFIHeOxf40mRLWoA84iY2sLELB23BV5FIDHhdJkN1LpRTPc1MDOawgTo5ifbM5dvAwnGuHyNm60G1+jw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.5.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.5.tgz", + "integrity": "sha512-cacs/WQqa96IhqUm+7CY+z/0j9sW6X80KE07v3IAJuv+z0UNvJtKSlT/T1w1SpaQRa9l0wCYYZlRZUhUOvEVmg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.5.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.5.tgz", + "integrity": "sha512-tLd90SvkRFik6LSfuYjcJEmwqcNEnVYVOyKTacSazya/SLlSwy/VYKsDE4GIzOBd+h3gW+FXqShc2XBavccHCg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.5.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.5.tgz", + "integrity": "sha512-ekV76G2R/l3nkvylkfy9jBSYHeB4QcJ7LdDseT6INnn1p51bmDS1eGoSoq+RxfQ7B1wt+Qa0pIl5aqcx0GLpbw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.5.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.5.tgz", + "integrity": "sha512-tI+sBu+3FmWtqlqD4xKJcj3KJtqbniLombKTE7/UWyyoHmOyAo3aZ7QcEHIOgInXOG1nt0rwh0KGmNbvSB0Djg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.5.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.5.tgz", + "integrity": "sha512-kDRh+epN/ulroNJLr+toDjN+/JClY5L+OAWjOrrKCI0qcKvTw9GBx7CU/rdA2bgi4WpZN3l0rf/3+b8rduEwrQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.5.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.5.tgz", + "integrity": "sha512-GDgdNPFFqiKjTrmfw01sMMRWhVN5wOCmFzPloxa7ksDfX6TZt62tAK986f0ZYqWpvDFqeBCLAzmgTURvtQBdgw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } } } } diff --git a/frontend/web/package.json b/frontend/web/package.json index b437dfa..9f1e91a 100644 --- a/frontend/web/package.json +++ b/frontend/web/package.json @@ -14,6 +14,7 @@ "@react-three/drei": "^10.7.6", "@react-three/fiber": "^9.4.0", "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", "framer-motion": "^12.23.24", "lottie-react": "^2.4.1", "lucide-react": "^0.546.0", @@ -21,6 +22,7 @@ "react": "19.1.0", "react-dom": "19.1.0", "react-hook-form": "^7.65.0", + "tailwind-merge": "^3.3.1", "three": "^0.180.0" }, "devDependencies": { @@ -32,6 +34,7 @@ "eslint": "^9", "eslint-config-next": "15.5.5", "tailwindcss": "^4", + "tw-animate-css": "^1.4.0", "typescript": "^5" } } diff --git a/frontend/web/src/app/globals.css b/frontend/web/src/app/globals.css index 62615c1..2869929 100644 --- a/frontend/web/src/app/globals.css +++ b/frontend/web/src/app/globals.css @@ -1,9 +1,7 @@ @import "tailwindcss"; +@import "tw-animate-css"; -:root { - --background: #ffffff; - --foreground: #171717; -} +@custom-variant dark (&:is(.dark *)); @theme inline { --color-background: var(--background); @@ -11,17 +9,119 @@ --font-sans: var(--font-geist-sans); --font-mono: var(--font-geist-mono); --font-mono: var(--font-kufam-mono); -} - -@media (prefers-color-scheme: dark) { - :root { - --background: #0a0a0a; - --foreground: #ededed; - } + --color-sidebar-ring: var(--sidebar-ring); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar: var(--sidebar); + --color-chart-5: var(--chart-5); + --color-chart-4: var(--chart-4); + --color-chart-3: var(--chart-3); + --color-chart-2: var(--chart-2); + --color-chart-1: var(--chart-1); + --color-ring: var(--ring); + --color-input: var(--input); + --color-border: var(--border); + --color-destructive: var(--destructive); + --color-accent-foreground: var(--accent-foreground); + --color-accent: var(--accent); + --color-muted-foreground: var(--muted-foreground); + --color-muted: var(--muted); + --color-secondary-foreground: var(--secondary-foreground); + --color-secondary: var(--secondary); + --color-primary-foreground: var(--primary-foreground); + --color-primary: var(--primary); + --color-popover-foreground: var(--popover-foreground); + --color-popover: var(--popover); + --color-card-foreground: var(--card-foreground); + --color-card: var(--card); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); } body { - background: var(--background); - color: var(--foreground); font-family: Kufam, Arial, Helvetica, sans-serif; } + +:root { + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.205 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.205 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.922 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.556 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.556 0 0); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/frontend/web/src/app/not-found.tsx b/frontend/web/src/app/not-found.tsx new file mode 100644 index 0000000..56a2a23 --- /dev/null +++ b/frontend/web/src/app/not-found.tsx @@ -0,0 +1,11 @@ +'use client'; + +import NotFoundPage from "@/component/ui/page-not-found"; + +export default function NotFound() { + return ( +
+ +
+ ); +} diff --git a/frontend/web/src/component/ui/page-not-found.tsx b/frontend/web/src/component/ui/page-not-found.tsx new file mode 100644 index 0000000..f232599 --- /dev/null +++ b/frontend/web/src/component/ui/page-not-found.tsx @@ -0,0 +1,222 @@ +// import { useNavigate } from "react-router-dom"; +import { useEffect, useRef, useState } from "react"; +import { useRouter } from "next/navigation"; + +// Combined component for 404 page +export default function NotFoundPage() { + return ( +
+ + +
+ ); +} + +// 1. Message Display Component +function MessageDisplay() { + const router = useRouter(); + // const navigate = useNavigate(); + const [isVisible, setIsVisible] = useState(false); + + useEffect(() => { + const timer = setTimeout(() => { + setIsVisible(true); + }, 1200); + + return () => clearTimeout(timer); + }, []); + + return ( +
+
+
+ Page Not Found +
+
+ 404 +
+
+ The page you are looking for might have been removed, had its name changed, or is temporarily unavailable. +
+
+ + +
+
+
+ ); +} + +// 2. Circle Animation Component +interface Circulo { + x: number; + y: number; + size: number; +} + +function CircleAnimation() { + const canvasRef = useRef(null); +// const requestIdRef = useRef(); + const requestIdRef = useRef(null); + const timerRef = useRef(0); + const circulosRef = useRef([]); + + // Initialize circles array + const initArr = () => { + const canvas = canvasRef.current; + if (!canvas) return; + + circulosRef.current = []; + + for (let index = 0; index < 300; index++) { + const randomX = Math.floor( + Math.random() * ((canvas.width * 3) - (canvas.width * 1.2) + 1) + ) + (canvas.width * 1.2); + + const randomY = Math.floor( + Math.random() * ((canvas.height) - (canvas.height * (-0.2) + 1)) + ) + (canvas.height * (-0.2)); + + const size = canvas.width / 1000; + + circulosRef.current.push({ x: randomX, y: randomY, size }); + } + }; + + // Drawing function + const draw = () => { + const canvas = canvasRef.current; + if (!canvas) return; + + const context = canvas.getContext('2d'); + if (!context) return; + + timerRef.current++; + context.setTransform(1, 0, 0, 1, 0, 0); + + const distanceX = canvas.width / 80; + const growthRate = canvas.width / 1000; + + context.fillStyle = 'white'; + context.clearRect(0, 0, canvas.width, canvas.height); + + circulosRef.current.forEach((circulo) => { + context.beginPath(); + + if (timerRef.current < 65) { + circulo.x = circulo.x - distanceX; + circulo.size = circulo.size + growthRate; + } + + if (timerRef.current > 65 && timerRef.current < 500) { + circulo.x = circulo.x - (distanceX * 0.02); + circulo.size = circulo.size + (growthRate * 0.2); + } + + context.arc(circulo.x, circulo.y, circulo.size, 0, 360); + context.fill(); + }); + + if (timerRef.current > 500) { + if (requestIdRef.current) { + cancelAnimationFrame(requestIdRef.current); + } + return; + } + + requestIdRef.current = requestAnimationFrame(draw); + }; + + // Initialize canvas and start animation + useEffect(() => { + const canvas = canvasRef.current; + if (!canvas) return; + + // Set canvas dimensions + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + + // Initialize and start animation + timerRef.current = 0; + initArr(); + draw(); + + // Handle window resize + const handleResize = () => { + if (!canvas) return; + + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + + timerRef.current = 0; + if (requestIdRef.current) { + cancelAnimationFrame(requestIdRef.current); + } + + const context = canvas.getContext('2d'); + if (context) { + context.reset(); + } + + initArr(); + draw(); + }; + + window.addEventListener('resize', handleResize); + + // Clean up + return () => { + window.removeEventListener('resize', handleResize); + if (requestIdRef.current) { + cancelAnimationFrame(requestIdRef.current); + } + }; + }, []); + + return ; +} + diff --git a/frontend/web/src/components/page-not-found.tsx b/frontend/web/src/components/page-not-found.tsx new file mode 100644 index 0000000..c4fbc79 --- /dev/null +++ b/frontend/web/src/components/page-not-found.tsx @@ -0,0 +1,349 @@ +import { useEffect, useRef, useState } from "react"; + +// Combined component for 404 page +export default function NotFoundPage() { + return ( +
+ + + +
+ ); +} + +// 1. Message Display Component +function MessageDisplay() { + // const navigate = useNavigate(); + const [isVisible, setIsVisible] = useState(false); + + useEffect(() => { + const timer = setTimeout(() => { + setIsVisible(true); + }, 1200); + + return () => clearTimeout(timer); + }, []); + + return ( +
+
+
+ Page Not Found +
+
+ 404 +
+
+ The page you are looking for might have been removed, had its name changed, or is temporarily unavailable. +
+
+ + +
+
+
+ ); +} + +// 2. Characters Animation Component +type StickFigure = { + top?: string; + bottom?: string; + src: string; + transform?: string; + speedX: number; + speedRotation?: number; +}; + +function CharactersAnimation() { + const charactersRef = useRef(null); + + useEffect(() => { + // Define stick figures with their properties + const stickFigures: StickFigure[] = [ + { + top: '0%', + src: 'https://raw.githubusercontent.com/RicardoYare/imagenes/9ef29f5bbe075b1d1230a996d87bca313b9b6a63/sticks/stick0.svg', + transform: 'rotateZ(-90deg)', + speedX: 1500, + }, + { + top: '10%', + src: 'https://raw.githubusercontent.com/RicardoYare/imagenes/9ef29f5bbe075b1d1230a996d87bca313b9b6a63/sticks/stick1.svg', + speedX: 3000, + speedRotation: 2000, + }, + { + top: '20%', + src: 'https://raw.githubusercontent.com/RicardoYare/imagenes/9ef29f5bbe075b1d1230a996d87bca313b9b6a63/sticks/stick2.svg', + speedX: 5000, + speedRotation: 1000, + }, + { + top: '25%', + src: 'https://raw.githubusercontent.com/RicardoYare/imagenes/9ef29f5bbe075b1d1230a996d87bca313b9b6a63/sticks/stick0.svg', + speedX: 2500, + speedRotation: 1500, + }, + { + top: '35%', + src: 'https://raw.githubusercontent.com/RicardoYare/imagenes/9ef29f5bbe075b1d1230a996d87bca313b9b6a63/sticks/stick0.svg', + speedX: 2000, + speedRotation: 300, + }, + { + bottom: '5%', + src: 'https://raw.githubusercontent.com/RicardoYare/imagenes/9ef29f5bbe075b1d1230a996d87bca313b9b6a63/sticks/stick3.svg', + speedX: 0, // No horizontal movement + }, + ]; + + // Clear existing content + if (charactersRef.current) { + charactersRef.current.innerHTML = ''; + } + + // Create and animate each stick figure + stickFigures.forEach((figure, index) => { + const stick = document.createElement('img'); + stick.classList.add('characters'); + stick.style.position = 'absolute'; + stick.style.width = '18%'; + stick.style.height = '18%'; + + // Set position + if (figure.top) stick.style.top = figure.top; + if (figure.bottom) stick.style.bottom = figure.bottom; + + // Set image source + stick.src = figure.src; + + // Set initial transform if specified + if (figure.transform) stick.style.transform = figure.transform; + + // Append to the container + charactersRef.current?.appendChild(stick); + + // Skip animation for the last figure (index 5) + if (index === 5) return; + + // Horizontal movement animation + stick.animate( + [{ left: '100%' }, { left: '-20%' }], + { duration: figure.speedX, easing: 'linear', fill: 'forwards' } + ); + + // Skip rotation for the first figure (index 0) + if (index === 0) return; + + // Rotation animation + if (figure.speedRotation) { + stick.animate( + [{ transform: 'rotate(0deg)' }, { transform: 'rotate(-360deg)' }], + { duration: figure.speedRotation, iterations: Infinity, easing: 'linear' } + ); + } + }); + + // Cleanup function + return () => { + if (charactersRef.current) { + charactersRef.current.innerHTML = ''; + } + }; + }, []); + + // Handle window resize + useEffect(() => { + const handleResize = () => { + if (charactersRef.current) { + charactersRef.current.innerHTML = ''; + + // Re-create animations after resize + charactersRef.current.dispatchEvent(new Event('contentchanged')); + } + }; + + window.addEventListener('resize', handleResize); + return () => window.removeEventListener('resize', handleResize); + }, []); + + return ( +
+ ); +} + +// 3. Circle Animation Component +interface Circulo { + x: number; + y: number; + size: number; +} + +function CircleAnimation() { + const canvasRef = useRef(null); + const requestIdRef = useRef(); + const timerRef = useRef(0); + const circulosRef = useRef([]); + + // Initialize circles array + const initArr = () => { + const canvas = canvasRef.current; + if (!canvas) return; + + circulosRef.current = []; + + for (let index = 0; index < 300; index++) { + const randomX = Math.floor( + Math.random() * ((canvas.width * 3) - (canvas.width * 1.2) + 1) + ) + (canvas.width * 1.2); + + const randomY = Math.floor( + Math.random() * ((canvas.height) - (canvas.height * (-0.2) + 1)) + ) + (canvas.height * (-0.2)); + + const size = canvas.width / 1000; + + circulosRef.current.push({ x: randomX, y: randomY, size }); + } + }; + + // Drawing function + const draw = () => { + const canvas = canvasRef.current; + if (!canvas) return; + + const context = canvas.getContext('2d'); + if (!context) return; + + timerRef.current++; + context.setTransform(1, 0, 0, 1, 0, 0); + + const distanceX = canvas.width / 80; + const growthRate = canvas.width / 1000; + + context.fillStyle = 'white'; + context.clearRect(0, 0, canvas.width, canvas.height); + + circulosRef.current.forEach((circulo) => { + context.beginPath(); + + if (timerRef.current < 65) { + circulo.x = circulo.x - distanceX; + circulo.size = circulo.size + growthRate; + } + + if (timerRef.current > 65 && timerRef.current < 500) { + circulo.x = circulo.x - (distanceX * 0.02); + circulo.size = circulo.size + (growthRate * 0.2); + } + + context.arc(circulo.x, circulo.y, circulo.size, 0, 360); + context.fill(); + }); + + if (timerRef.current > 500) { + if (requestIdRef.current) { + cancelAnimationFrame(requestIdRef.current); + } + return; + } + + requestIdRef.current = requestAnimationFrame(draw); + }; + + // Initialize canvas and start animation + useEffect(() => { + const canvas = canvasRef.current; + if (!canvas) return; + + // Set canvas dimensions + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + + // Initialize and start animation + timerRef.current = 0; + initArr(); + draw(); + + // Handle window resize + const handleResize = () => { + if (!canvas) return; + + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + + timerRef.current = 0; + if (requestIdRef.current) { + cancelAnimationFrame(requestIdRef.current); + } + + const context = canvas.getContext('2d'); + if (context) { + context.reset(); + } + + initArr(); + draw(); + }; + + window.addEventListener('resize', handleResize); + + // Clean up + return () => { + window.removeEventListener('resize', handleResize); + if (requestIdRef.current) { + cancelAnimationFrame(requestIdRef.current); + } + }; + }, []); + + return ; +} \ No newline at end of file diff --git a/frontend/web/src/lib/utils.ts b/frontend/web/src/lib/utils.ts index 1824d80..bd0c391 100644 --- a/frontend/web/src/lib/utils.ts +++ b/frontend/web/src/lib/utils.ts @@ -1,4 +1,6 @@ -// src/lib/utils.ts -export function cn(...classes: Array) { - return classes.filter(Boolean).join(" "); +import { clsx, type ClassValue } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) } From cb536a36efb76462f457d52d7f4c2054ed86eb5a Mon Sep 17 00:00:00 2001 From: Jojo-225 Date: Wed, 22 Oct 2025 17:04:24 +0200 Subject: [PATCH 03/68] =?UTF-8?q?=20Int=C3=A9gration=20de=20l'interface=20?= =?UTF-8?q?du=20Quizz?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/web/package-lock.json | 105 +++++++ frontend/web/src/app/dashboard/quiz/page.tsx | 11 + .../src/app/dashboard/upload-success/page.tsx | 7 +- .../web/src/component/ui/option-button.tsx | 19 +- frontend/web/src/component/ui/quiz.tsx | 294 ++++++++++++++++++ 5 files changed, 433 insertions(+), 3 deletions(-) create mode 100644 frontend/web/src/app/dashboard/quiz/page.tsx create mode 100644 frontend/web/src/component/ui/quiz.tsx diff --git a/frontend/web/package-lock.json b/frontend/web/package-lock.json index 5df3bdd..bec9aa3 100644 --- a/frontend/web/package-lock.json +++ b/frontend/web/package-lock.json @@ -5738,6 +5738,111 @@ "optional": true } } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.5.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.5.tgz", + "integrity": "sha512-lYExGHuFIHeOxf40mRLWoA84iY2sLELB23BV5FIDHhdJkN1LpRTPc1MDOawgTo5ifbM5dvAwnGuHyNm60G1+jw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.5.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.5.tgz", + "integrity": "sha512-cacs/WQqa96IhqUm+7CY+z/0j9sW6X80KE07v3IAJuv+z0UNvJtKSlT/T1w1SpaQRa9l0wCYYZlRZUhUOvEVmg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.5.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.5.tgz", + "integrity": "sha512-tLd90SvkRFik6LSfuYjcJEmwqcNEnVYVOyKTacSazya/SLlSwy/VYKsDE4GIzOBd+h3gW+FXqShc2XBavccHCg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.5.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.5.tgz", + "integrity": "sha512-ekV76G2R/l3nkvylkfy9jBSYHeB4QcJ7LdDseT6INnn1p51bmDS1eGoSoq+RxfQ7B1wt+Qa0pIl5aqcx0GLpbw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.5.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.5.tgz", + "integrity": "sha512-tI+sBu+3FmWtqlqD4xKJcj3KJtqbniLombKTE7/UWyyoHmOyAo3aZ7QcEHIOgInXOG1nt0rwh0KGmNbvSB0Djg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.5.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.5.tgz", + "integrity": "sha512-kDRh+epN/ulroNJLr+toDjN+/JClY5L+OAWjOrrKCI0qcKvTw9GBx7CU/rdA2bgi4WpZN3l0rf/3+b8rduEwrQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.5.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.5.tgz", + "integrity": "sha512-GDgdNPFFqiKjTrmfw01sMMRWhVN5wOCmFzPloxa7ksDfX6TZt62tAK986f0ZYqWpvDFqeBCLAzmgTURvtQBdgw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } } } } diff --git a/frontend/web/src/app/dashboard/quiz/page.tsx b/frontend/web/src/app/dashboard/quiz/page.tsx new file mode 100644 index 0000000..4e44899 --- /dev/null +++ b/frontend/web/src/app/dashboard/quiz/page.tsx @@ -0,0 +1,11 @@ +import { Component } from "@/component/ui/quiz"; +import { main } from "framer-motion/client"; + +export default function DemoOne() { + return ( + < main className="flex-1 p-8 bg-gray-50"> + + +) + +} diff --git a/frontend/web/src/app/dashboard/upload-success/page.tsx b/frontend/web/src/app/dashboard/upload-success/page.tsx index 39e353e..77417d6 100644 --- a/frontend/web/src/app/dashboard/upload-success/page.tsx +++ b/frontend/web/src/app/dashboard/upload-success/page.tsx @@ -1,5 +1,5 @@ 'use client'; - +import Link from 'next/link'; import { useState } from 'react'; import { FileText, Pencil, MessageCircle, ClipboardList } from 'lucide-react'; import OptionButton from "../../../component/ui/option-button"; @@ -92,9 +92,12 @@ export default function UploadSuccess() {
+ - + + +
diff --git a/frontend/web/src/component/ui/option-button.tsx b/frontend/web/src/component/ui/option-button.tsx index 9945a87..0c55956 100644 --- a/frontend/web/src/component/ui/option-button.tsx +++ b/frontend/web/src/component/ui/option-button.tsx @@ -3,10 +3,26 @@ import Image from "next/image"; interface OptionButtonProps { icon: string; label: string; + href?: string; onClick?: () => void; } -export default function OptionButton({ icon, label, onClick }: OptionButtonProps) { +export default function OptionButton({ icon, label, onClick,href}: OptionButtonProps) { + if (href) { + return ( + + { } + + ) + } return ( + ); } \ No newline at end of file diff --git a/frontend/web/src/component/ui/quiz.tsx b/frontend/web/src/component/ui/quiz.tsx new file mode 100644 index 0000000..5f8cce2 --- /dev/null +++ b/frontend/web/src/component/ui/quiz.tsx @@ -0,0 +1,294 @@ +"use client" + +import { useEffect, useRef, useState } from "react" + +/* ---------- Icons (simples) ---------- */ +const ChevronLeft = ({ className }: { className?: string }) => ( + + + +) +const ChevronRight = ({ className }: { className?: string }) => ( + + + +) +const Gift = ({ className }: { className?: string }) => ( + + + +) +const Trophy = ({ className }: { className?: string }) => ( + + + +) + +/* ---------- Types ---------- */ +interface Question { + id: number + question: string + options: string[] + correctAnswer: number +} + +/* ---------- Mock (remplace par fetch API plus tard) ---------- */ +const localQuiz: Question[] = [ + { id: 1, question: "Which planet is known as the 'Red Planet'?", options: ["Venus", "Mars", "Jupiter", "Saturn"], correctAnswer: 1 }, + { id: 2, question: "What is the largest mammal in the world?", options: ["African Elephant", "Blue Whale", "Giraffe", "Polar Bear"], correctAnswer: 1 }, + { id: 3, question: "Which element has the chemical symbol 'Au'?", options: ["Silver", "Aluminum", "Gold", "Argon"], correctAnswer: 2 }, + { id: 4, question: "How many bones are there in an adult human body?", options: ["186", "206", "226", "246"], correctAnswer: 1 }, + { id: 5, question: "What is the speed of light in a vacuum?", options: ["299,792,458 m/s", "300,000,000 m/s", "186,000 miles/s", "All of the above"], correctAnswer: 0 }, + // Ajoute autant de questions que tu veux pour tester >5 + { id: 6, question: "The tallest mountain on Earth is?", options: ["K2", "Everest", "Kilimanjaro", "Denali"], correctAnswer: 1 }, + { id: 7, question: "H2O is the chemical formula for?", options: ["Hydrogen", "Oxygen", "Water", "Salt"], correctAnswer: 2 }, +] + +interface QuizService { loadQuiz(): Promise } +const mockQuizService: QuizService = { + async loadQuiz() { + await new Promise((r) => setTimeout(r, 300)) + return localQuiz + }, +} +// // Quand l’API sera prête : +// const apiQuizService: QuizService = { async loadQuiz() { +// const res = await fetch("/api/quiz", { cache: "no-store" }) +// if (!res.ok) throw new Error("Failed to load quiz") +// return (await res.json()) as Question[] +// }} + +/* ---------- UI Component ---------- */ +export function Component() { + const [questions, setQuestions] = useState(null) + const [error, setError] = useState(null) + + const [currentQuestion, setCurrentQuestion] = useState(0) + const [selectedAnswer, setSelectedAnswer] = useState(null) + const [answers, setAnswers] = useState<(number | null)[]>([]) + const [quizCompleted, setQuizCompleted] = useState(false) + + // ref pour auto-centre l’indicateur courant + const tabsRef = useRef(null) + + useEffect(() => { + let alive = true + mockQuizService.loadQuiz() + .then(qs => { + if (!alive) return + setQuestions(qs) + setAnswers(Array(qs.length).fill(null)) + }) + .catch(e => setError(e instanceof Error ? e.message : "Unknown error")) + return () => { alive = false } + }, []) + + // centre l’item courant s’il y a overflow + useEffect(() => { + const el = tabsRef.current + if (!el) return + const active = el.querySelector(`[data-idx="${currentQuestion}"]`) + if (active) { + const offset = active.offsetLeft - (el.clientWidth - active.clientWidth) / 2 + el.scrollTo({ left: offset, behavior: "smooth" }) + } + }, [currentQuestion, questions]) + + if (error) { + return ( +
+
+ Failed to load quiz: {error} +
+
+ ) + } + if (!questions) { + return ( +
+
+
+ Loading quiz… +
+
+ ) + } + + const total = questions.length + const answeredCount = answers.filter(a => a !== null).length + + const handleAnswerSelect = (answerIndex: number) => { + setSelectedAnswer(answerIndex) + const copy = [...answers] + copy[currentQuestion] = answerIndex + setAnswers(copy) + } + + const handleNext = () => { + if (currentQuestion < total - 1) { + const next = currentQuestion + 1 + setCurrentQuestion(next) + setSelectedAnswer(answers[next]) + } else { + setQuizCompleted(true) + } + } + + const handlePrevious = () => { + if (currentQuestion === 0) return + const prev = currentQuestion - 1 + setCurrentQuestion(prev) + setSelectedAnswer(answers[prev]) + } + + const calculateScore = (): number => + answers.reduce((acc, ans, i) => (ans !== null && ans === questions[i].correctAnswer ? acc + 1 : acc), 0) + + /* ---------- Results ---------- */ + if (quizCompleted) { + const finalScore = calculateScore() + return ( +
+
+
+
+

Quiz complete

+

+ Score: {finalScore}/{total} ( + {Math.round((finalScore / total) * 100)}%) +

+
+ + {/* Grille responsive des questions (quel que soit le nombre) */} +
+ {questions.map((q, i) => { + const ok = answers[i] === q.correctAnswer + return ( +
+ Q{i + 1} +
+ ) + })} +
+ +
+ +
+
+
+ ) + } + + /* ---------- Quiz Screen (adapté à n questions) ---------- */ + return ( +
+
+
+ {/* Header */} +
+
Question {currentQuestion + 1} of {total}
+
+ Answered: {answeredCount}/{total} +
+
+ + {/* Indicateurs scrollables pour n questions */} +
+ {questions.map((_, i) => { + const isCurrent = i === currentQuestion + const isAnswered = answers[i] !== null + return ( +
+ +
{i + 1}
+
+ ) + })} +
+ + {/* Barre de progression dynamique */} +
+
+
+ + {/* Question */} +

+ {questions[currentQuestion].question} +

+
+ + {/* Options (sélection bleue uniquement) */} +
+
+ {questions[currentQuestion].options.map((option, index) => { + const isSelected = index === selectedAnswer + const cls = [ + "w-full p-4 text-left rounded-lg border-2 transition relative focus:outline-none font-medium", + isSelected + ? "bg-sky-50 border-sky-600 text-slate-900" + : "bg-white text-slate-700 border-slate-200 hover:border-sky-300 hover:bg-sky-50/40", + ].join(" ") + return ( + + ) + })} +
+ + {/* Navigation */} +
+ + +
+ {selectedAnswer !== null ? "Answer selected" : "Select an answer"} +
+ + +
+
+
+
+ ) +} From 210aa90d05940deb024b776a89a6c01ae2ce9bd7 Mon Sep 17 00:00:00 2001 From: marlenegohi Date: Thu, 23 Oct 2025 01:00:54 +0200 Subject: [PATCH 04/68] Stop tracking package-lock.json (added to .gitignore) --- frontend/web/package-lock.json | 5743 ----------------- .../web/src/component/ui/button-upload.tsx | 0 .../web/src/component/ui/file-uploader.tsx | 0 3 files changed, 5743 deletions(-) delete mode 100644 frontend/web/package-lock.json create mode 100644 frontend/web/src/component/ui/button-upload.tsx create mode 100644 frontend/web/src/component/ui/file-uploader.tsx diff --git a/frontend/web/package-lock.json b/frontend/web/package-lock.json deleted file mode 100644 index 5df3bdd..0000000 --- a/frontend/web/package-lock.json +++ /dev/null @@ -1,5743 +0,0 @@ -{ - "name": "web", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "web", - "version": "0.1.0", - "dependencies": { - "@radix-ui/react-label": "^2.1.7", - "@radix-ui/react-slot": "^1.2.3", - "@react-three/drei": "^10.7.6", - "@react-three/fiber": "^9.4.0", - "class-variance-authority": "^0.7.1", - "framer-motion": "^12.23.24", - "lottie-react": "^2.4.1", - "lucide-react": "^0.546.0", - "next": "15.5.5", - "react": "19.1.0", - "react-dom": "19.1.0", - "react-hook-form": "^7.65.0", - "three": "^0.180.0" - }, - "devDependencies": { - "@eslint/eslintrc": "^3", - "@tailwindcss/postcss": "^4", - "@types/node": "^20", - "@types/react": "^19", - "@types/react-dom": "^19", - "eslint": "^9", - "eslint-config-next": "15.5.5", - "tailwindcss": "^4", - "typescript": "^5" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@dimforge/rapier3d-compat": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@dimforge/rapier3d-compat/-/rapier3d-compat-0.12.0.tgz", - "integrity": "sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==" - }, - "node_modules/@emnapi/core": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.5.0.tgz", - "integrity": "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", - "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz", - "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.16.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", - "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "9.37.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", - "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", - "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.16.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@img/colour": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", - "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.4.tgz", - "integrity": "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@mediapipe/tasks-vision": { - "version": "0.10.17", - "resolved": "https://registry.npmjs.org/@mediapipe/tasks-vision/-/tasks-vision-0.10.17.tgz", - "integrity": "sha512-CZWV/q6TTe8ta61cZXjfnnHsfWIdFhms03M9T7Cnd5y2mdpylJM0rF1qRq+wsQVRMLz1OYPVEBU9ph2Bx8cxrg==" - }, - "node_modules/@monogrid/gainmap-js": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@monogrid/gainmap-js/-/gainmap-js-3.1.0.tgz", - "integrity": "sha512-Obb0/gEd/HReTlg8ttaYk+0m62gQJmCblMOjHSMHRrBP2zdfKMHLCRbh/6ex9fSUJMKdjjIEiohwkbGD3wj2Nw==", - "dependencies": { - "promise-worker-transferable": "^1.0.4" - }, - "peerDependencies": { - "three": ">= 0.159.0" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, - "node_modules/@next/env": { - "version": "15.5.5", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.5.tgz", - "integrity": "sha512-2Zhvss36s/yL+YSxD5ZL5dz5pI6ki1OLxYlh6O77VJ68sBnlUrl5YqhBgCy7FkdMsp9RBeGFwpuDCdpJOqdKeQ==", - "license": "MIT" - }, - "node_modules/@next/eslint-plugin-next": { - "version": "15.5.5", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.5.5.tgz", - "integrity": "sha512-FMzm412l9oFB8zdRD+K6HQ1VzlS+sNNsdg0MfvTg0i8lfCyTgP/RFxiu/pGJqZ/IQnzn9xSiLkjOVI7Iv4nbdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-glob": "3.3.1" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.5.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.5.tgz", - "integrity": "sha512-5kE3oRJxc7M8RmcTANP8RGoJkaYlwIiDD92gSwCjJY0+j8w8Sl1lvxgQ3bxfHY2KkHFai9tpy/Qx1saWV8eaJQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "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/@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.4.0" - } - }, - "node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", - "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-label": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz", - "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-primitive": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", - "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-slot": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-slot": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", - "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@react-three/drei": { - "version": "10.7.6", - "resolved": "https://registry.npmjs.org/@react-three/drei/-/drei-10.7.6.tgz", - "integrity": "sha512-ZSFwRlRaa4zjtB7yHO6Q9xQGuyDCzE7whXBhum92JslcMRC3aouivp0rAzszcVymIoJx6PXmibyP+xr+zKdwLg==", - "dependencies": { - "@babel/runtime": "^7.26.0", - "@mediapipe/tasks-vision": "0.10.17", - "@monogrid/gainmap-js": "^3.0.6", - "@use-gesture/react": "^10.3.1", - "camera-controls": "^3.1.0", - "cross-env": "^7.0.3", - "detect-gpu": "^5.0.56", - "glsl-noise": "^0.0.0", - "hls.js": "^1.5.17", - "maath": "^0.10.8", - "meshline": "^3.3.1", - "stats-gl": "^2.2.8", - "stats.js": "^0.17.0", - "suspend-react": "^0.1.3", - "three-mesh-bvh": "^0.8.3", - "three-stdlib": "^2.35.6", - "troika-three-text": "^0.52.4", - "tunnel-rat": "^0.1.2", - "use-sync-external-store": "^1.4.0", - "utility-types": "^3.11.0", - "zustand": "^5.0.1" - }, - "peerDependencies": { - "@react-three/fiber": "^9.0.0", - "react": "^19", - "react-dom": "^19", - "three": ">=0.159" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - } - } - }, - "node_modules/@react-three/fiber": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-9.4.0.tgz", - "integrity": "sha512-k4iu1R6e5D54918V4sqmISUkI5OgTw3v7/sDRKEC632Wd5g2WBtUS5gyG63X0GJO/HZUj1tsjSXfyzwrUHZl1g==", - "dependencies": { - "@babel/runtime": "^7.17.8", - "@types/react-reconciler": "^0.32.0", - "@types/webxr": "*", - "base64-js": "^1.5.1", - "buffer": "^6.0.3", - "its-fine": "^2.0.0", - "react-reconciler": "^0.31.0", - "react-use-measure": "^2.1.7", - "scheduler": "^0.25.0", - "suspend-react": "^0.1.3", - "use-sync-external-store": "^1.4.0", - "zustand": "^5.0.3" - }, - "peerDependencies": { - "expo": ">=43.0", - "expo-asset": ">=8.4", - "expo-file-system": ">=11.0", - "expo-gl": ">=11.0", - "react": "^19.0.0", - "react-dom": "^19.0.0", - "react-native": ">=0.78", - "three": ">=0.156" - }, - "peerDependenciesMeta": { - "expo": { - "optional": true - }, - "expo-asset": { - "optional": true - }, - "expo-file-system": { - "optional": true - }, - "expo-gl": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } - } - }, - "node_modules/@react-three/fiber/node_modules/scheduler": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", - "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==" - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.14.0.tgz", - "integrity": "sha512-WJFej426qe4RWOm9MMtP4V3CV4AucXolQty+GRgAWLgQXmpCuwzs7hEpxxhSc/znXUSxum9d/P/32MW0FlAAlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@tailwindcss/node": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.14.tgz", - "integrity": "sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/remapping": "^2.3.4", - "enhanced-resolve": "^5.18.3", - "jiti": "^2.6.0", - "lightningcss": "1.30.1", - "magic-string": "^0.30.19", - "source-map-js": "^1.2.1", - "tailwindcss": "4.1.14" - } - }, - "node_modules/@tailwindcss/oxide": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.14.tgz", - "integrity": "sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "detect-libc": "^2.0.4", - "tar": "^7.5.1" - }, - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.14", - "@tailwindcss/oxide-darwin-arm64": "4.1.14", - "@tailwindcss/oxide-darwin-x64": "4.1.14", - "@tailwindcss/oxide-freebsd-x64": "4.1.14", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.14", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.14", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.14", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.14", - "@tailwindcss/oxide-linux-x64-musl": "4.1.14", - "@tailwindcss/oxide-wasm32-wasi": "4.1.14", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.14", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.14" - } - }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.14.tgz", - "integrity": "sha512-ttblVGHgf68kEE4om1n/n44I0yGPkCPbLsqzjvybhpwa6mKKtgFfAzy6btc3HRmuW7nHe0OOrSeNP9sQmmH9XA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/postcss": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.14.tgz", - "integrity": "sha512-BdMjIxy7HUNThK87C7BC8I1rE8BVUsfNQSI5siQ4JK3iIa3w0XyVvVL9SXLWO//CtYTcp1v7zci0fYwJOjB+Zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.1.14", - "@tailwindcss/oxide": "4.1.14", - "postcss": "^8.4.41", - "tailwindcss": "4.1.14" - } - }, - "node_modules/@tweenjs/tween.js": { - "version": "23.1.3", - "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.3.tgz", - "integrity": "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==" - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/draco3d": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/@types/draco3d/-/draco3d-1.4.10.tgz", - "integrity": "sha512-AX22jp8Y7wwaBgAixaSvkoG4M/+PlAcm3Qs4OW8yT9DM4xUpWKeFhLueTAyZF39pviAdcDdeJoACapiAceqNcw==" - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "20.19.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.21.tgz", - "integrity": "sha512-CsGG2P3I5y48RPMfprQGfy4JPRZ6csfC3ltBZSRItG3ngggmNY/qs2uZKp4p9VbrpqNNSMzUZNFZKzgOGnd/VA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/offscreencanvas": { - "version": "2019.7.3", - "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz", - "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==" - }, - "node_modules/@types/react": { - "version": "19.2.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz", - "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==", - "license": "MIT", - "dependencies": { - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "19.2.2", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.2.tgz", - "integrity": "sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==", - "devOptional": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^19.2.0" - } - }, - "node_modules/@types/react-reconciler": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.32.2.tgz", - "integrity": "sha512-gjcm6O0aUknhYaogEl8t5pecPfiOTD8VQkbjOhgbZas/E6qGY+veW9iuJU/7p4Y1E0EuQ0mArga7VEOUWSlVRA==", - "peerDependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/stats.js": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.4.tgz", - "integrity": "sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==" - }, - "node_modules/@types/three": { - "version": "0.180.0", - "resolved": "https://registry.npmjs.org/@types/three/-/three-0.180.0.tgz", - "integrity": "sha512-ykFtgCqNnY0IPvDro7h+9ZeLY+qjgUWv+qEvUt84grhenO60Hqd4hScHE7VTB9nOQ/3QM8lkbNE+4vKjEpUxKg==", - "dependencies": { - "@dimforge/rapier3d-compat": "~0.12.0", - "@tweenjs/tween.js": "~23.1.3", - "@types/stats.js": "*", - "@types/webxr": "*", - "@webgpu/types": "*", - "fflate": "~0.8.2", - "meshoptimizer": "~0.22.0" - } - }, - "node_modules/@types/webxr": { - "version": "0.5.24", - "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.24.tgz", - "integrity": "sha512-h8fgEd/DpoS9CBrjEQXR+dIDraopAEfu4wYVNY2tEPwk60stPWhvZMf4Foo5FakuQ7HFZoa8WceaWFervK2Ovg==" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.1.tgz", - "integrity": "sha512-rUsLh8PXmBjdiPY+Emjz9NX2yHvhS11v0SR6xNJkm5GM1MO9ea/1GoDKlHHZGrOJclL/cZ2i/vRUYVtjRhrHVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.46.1", - "@typescript-eslint/type-utils": "8.46.1", - "@typescript-eslint/utils": "8.46.1", - "@typescript-eslint/visitor-keys": "8.46.1", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.46.1", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.1.tgz", - "integrity": "sha512-6JSSaBZmsKvEkbRUkf7Zj7dru/8ZCrJxAqArcLaVMee5907JdtEbKGsZ7zNiIm/UAkpGUkaSMZEXShnN2D1HZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.46.1", - "@typescript-eslint/types": "8.46.1", - "@typescript-eslint/typescript-estree": "8.46.1", - "@typescript-eslint/visitor-keys": "8.46.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.1.tgz", - "integrity": "sha512-FOIaFVMHzRskXr5J4Jp8lFVV0gz5ngv3RHmn+E4HYxSJ3DgDzU7fVI1/M7Ijh1zf6S7HIoaIOtln1H5y8V+9Zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.46.1", - "@typescript-eslint/types": "^8.46.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.1.tgz", - "integrity": "sha512-weL9Gg3/5F0pVQKiF8eOXFZp8emqWzZsOJuWRUNtHT+UNV2xSJegmpCNQHy37aEQIbToTq7RHKhWvOsmbM680A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.46.1", - "@typescript-eslint/visitor-keys": "8.46.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.1.tgz", - "integrity": "sha512-X88+J/CwFvlJB+mK09VFqx5FE4H5cXD+H/Bdza2aEWkSb8hnWIQorNcscRl4IEo1Cz9VI/+/r/jnGWkbWPx54g==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.1.tgz", - "integrity": "sha512-+BlmiHIiqufBxkVnOtFwjah/vrkF4MtKKvpXrKSPLCkCtAp8H01/VV43sfqA98Od7nJpDcFnkwgyfQbOG0AMvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.46.1", - "@typescript-eslint/typescript-estree": "8.46.1", - "@typescript-eslint/utils": "8.46.1", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.1.tgz", - "integrity": "sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.1.tgz", - "integrity": "sha512-uIifjT4s8cQKFQ8ZBXXyoUODtRoAd7F7+G8MKmtzj17+1UbdzFl52AzRyZRyKqPHhgzvXunnSckVu36flGy8cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.46.1", - "@typescript-eslint/tsconfig-utils": "8.46.1", - "@typescript-eslint/types": "8.46.1", - "@typescript-eslint/visitor-keys": "8.46.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/typescript-estree/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/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.1.tgz", - "integrity": "sha512-vkYUy6LdZS7q1v/Gxb2Zs7zziuXN0wxqsetJdeZdRe/f5dwJFglmuvZBfTUivCtjH725C1jWCDfpadadD95EDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.46.1", - "@typescript-eslint/types": "8.46.1", - "@typescript-eslint/typescript-estree": "8.46.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.1.tgz", - "integrity": "sha512-ptkmIf2iDkNUjdeu2bQqhFPV1m6qTnFFjg7PPDjxKWaMaP0Z6I9l30Jr3g5QqbZGdw8YdYvLp+XnqnWWZOg/NA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.46.1", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@use-gesture/core": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.1.tgz", - "integrity": "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==" - }, - "node_modules/@use-gesture/react": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.3.1.tgz", - "integrity": "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==", - "dependencies": { - "@use-gesture/core": "10.3.1" - }, - "peerDependencies": { - "react": ">= 16.8.0" - } - }, - "node_modules/@webgpu/types": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.66.tgz", - "integrity": "sha512-YA2hLrwLpDsRueNDXIMqN9NTzD6bCDkuXbOSe0heS+f8YE8usA6Gbv1prj81pzVHrbaAma7zObnIC+I6/sXJgA==" - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "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==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axe-core": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.0.tgz", - "integrity": "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==", - "dev": true, - "license": "MPL-2.0", - "engines": { - "node": ">=4" - } - }, - "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==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bidi-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", - "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", - "dependencies": { - "require-from-string": "^2.0.2" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camera-controls": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/camera-controls/-/camera-controls-3.1.0.tgz", - "integrity": "sha512-w5oULNpijgTRH0ARFJJ0R5ct1nUM3R3WP7/b8A6j9uTGpRfnsypc/RBMPQV8JQDPayUe37p/TZZY1PcUr4czOQ==", - "engines": { - "node": ">=20.11.0", - "npm": ">=10.8.2" - }, - "peerDependencies": { - "three": ">=0.126.1" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001751", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", - "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", - "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/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/class-variance-authority": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", - "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", - "license": "Apache-2.0", - "dependencies": { - "clsx": "^2.1.1" - }, - "funding": { - "url": "https://polar.sh/cva" - } - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" - }, - "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/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/detect-gpu": { - "version": "5.0.70", - "resolved": "https://registry.npmjs.org/detect-gpu/-/detect-gpu-5.0.70.tgz", - "integrity": "sha512-bqerEP1Ese6nt3rFkwPnGbsUF9a4q+gMmpTVVOEzoCyeCc+y7/RvJnQZJx1JwhgQI5Ntg0Kgat8Uu7XpBqnz1w==", - "dependencies": { - "webgl-constants": "^1.1.1" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "devOptional": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/draco3d": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.5.7.tgz", - "integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==" - }, - "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==", - "dev": true, - "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/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/enhanced-resolve": { - "version": "5.18.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", - "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" - }, - "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==", - "dev": true, - "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==", - "dev": true, - "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/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.37.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.37.0.tgz", - "integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.4.0", - "@eslint/core": "^0.16.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.37.0", - "@eslint/plugin-kit": "^0.4.0", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-next": { - "version": "15.5.5", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.5.5.tgz", - "integrity": "sha512-f8lRSSelp6cqrYjxEMjJ5En3WV913gTu/w9goYShnIujwDSQlKt4x9MwSDiduE9R5mmFETK44+qlQDxeSA0rUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@next/eslint-plugin-next": "15.5.5", - "@rushstack/eslint-patch": "^1.10.3", - "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jsx-a11y": "^6.10.0", - "eslint-plugin-react": "^7.37.0", - "eslint-plugin-react-hooks": "^5.0.0" - }, - "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", - "typescript": ">=3.3.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", - "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.4.0", - "get-tsconfig": "^4.10.0", - "is-bun-module": "^2.0.0", - "stable-hash": "^0.0.5", - "tinyglobby": "^0.2.13", - "unrs-resolver": "^1.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-resolver-typescript" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" - }, - "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", - "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "aria-query": "^5.3.2", - "array-includes": "^3.1.8", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "^4.10.0", - "axobject-query": "^4.1.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "hasown": "^2.0.2", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "safe-regex-test": "^1.0.3", - "string.prototype.includes": "^2.0.1" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", - "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "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.4" - }, - "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/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fflate": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", - "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==" - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/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/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/framer-motion": { - "version": "12.23.24", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.23.24.tgz", - "integrity": "sha512-HMi5HRoRCTou+3fb3h9oTLyJGBxHfW+HnNE25tAXOvVx/IvwMHK0cx7IR4a2ZU6sh3IX1Z+4ts32PcYBOqka8w==", - "dependencies": { - "motion-dom": "^12.23.23", - "motion-utils": "^12.23.6", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "@emotion/is-prop-valid": "*", - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@emotion/is-prop-valid": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, - "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==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.12.0.tgz", - "integrity": "sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glsl-noise": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/glsl-noise/-/glsl-noise-0.0.0.tgz", - "integrity": "sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==" - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hls.js": { - "version": "1.6.13", - "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.6.13.tgz", - "integrity": "sha512-hNEzjZNHf5bFrUNvdS4/1RjIanuJ6szpWNfTaX5I6WfGynWXGT7K/YQLYtemSvFExzeMdgdE4SsyVLJbd5PcZA==" - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bun-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", - "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.7.1" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.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-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/its-fine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/its-fine/-/its-fine-2.0.0.tgz", - "integrity": "sha512-KLViCmWx94zOvpLwSlsx6yOCeMhZYaxrJV87Po5k/FoZzcPSahvK5qJ7fYhS61sZi5ikmh2S3Hz55A2l3U69ng==", - "dependencies": { - "@types/react-reconciler": "^0.28.9" - }, - "peerDependencies": { - "react": "^19.0.0" - } - }, - "node_modules/its-fine/node_modules/@types/react-reconciler": { - "version": "0.28.9", - "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.9.tgz", - "integrity": "sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg==", - "peerDependencies": { - "@types/react": "*" - } - }, - "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/language-subtag-registry": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", - "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/language-tags": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", - "dev": true, - "license": "MIT", - "dependencies": { - "language-subtag-registry": "^0.3.20" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/lightningcss": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", - "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.30.1", - "lightningcss-darwin-x64": "1.30.1", - "lightningcss-freebsd-x64": "1.30.1", - "lightningcss-linux-arm-gnueabihf": "1.30.1", - "lightningcss-linux-arm64-gnu": "1.30.1", - "lightningcss-linux-arm64-musl": "1.30.1", - "lightningcss-linux-x64-gnu": "1.30.1", - "lightningcss-linux-x64-musl": "1.30.1", - "lightningcss-win32-arm64-msvc": "1.30.1", - "lightningcss-win32-x64-msvc": "1.30.1" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", - "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lottie-react": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lottie-react/-/lottie-react-2.4.1.tgz", - "integrity": "sha512-LQrH7jlkigIIv++wIyrOYFLHSKQpEY4zehPicL9bQsrt1rnoKRYCYgpCUe5maqylNtacy58/sQDZTkwMcTRxZw==", - "dependencies": { - "lottie-web": "^5.10.2" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/lottie-web": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.13.0.tgz", - "integrity": "sha512-+gfBXl6sxXMPe8tKQm7qzLnUy5DUPJPKIyRHwtpCpyUEYjHYRJC/5gjUvdkuO2c3JllrPtHXH5UJJK8LRYl5yQ==" - }, - "node_modules/lucide-react": { - "version": "0.546.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.546.0.tgz", - "integrity": "sha512-Z94u6fKT43lKeYHiVyvyR8fT7pwCzDu7RyMPpTvh054+xahSgj4HFQ+NmflvzdXsoAjYGdCguGaFKYuvq0ThCQ==", - "license": "ISC", - "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/maath": { - "version": "0.10.8", - "resolved": "https://registry.npmjs.org/maath/-/maath-0.10.8.tgz", - "integrity": "sha512-tRvbDF0Pgqz+9XUa4jjfgAQ8/aPKmQdWXilFu2tMy4GWj4NOsx99HlULO4IeREfbO3a0sA145DZYyvXPkybm0g==", - "peerDependencies": { - "@types/three": ">=0.134.0", - "three": ">=0.134.0" - } - }, - "node_modules/magic-string": { - "version": "0.30.19", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", - "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", - "dev": true, - "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==", - "dev": true, - "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/meshline": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/meshline/-/meshline-3.3.1.tgz", - "integrity": "sha512-/TQj+JdZkeSUOl5Mk2J7eLcYTLiQm2IDzmlSvYm7ov15anEcDJ92GHqqazxTSreeNgfnYu24kiEvvv0WlbCdFQ==", - "peerDependencies": { - "three": ">=0.137" - } - }, - "node_modules/meshoptimizer": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.22.0.tgz", - "integrity": "sha512-IebiK79sqIy+E4EgOr+CAw+Ke8hAspXKzBd0JdgEmPHiAwmvEj2S4h1rfvo+o/BnfEYd/jAOg5IeeIjzlzSnDg==" - }, - "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/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minizlib": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/motion-dom": { - "version": "12.23.23", - "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.23.23.tgz", - "integrity": "sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==", - "dependencies": { - "motion-utils": "^12.23.6" - } - }, - "node_modules/motion-utils": { - "version": "12.23.6", - "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.23.6.tgz", - "integrity": "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "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/napi-postinstall": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", - "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/next": { - "version": "15.5.5", - "resolved": "https://registry.npmjs.org/next/-/next-15.5.5.tgz", - "integrity": "sha512-OQVdBPtpBfq7HxFN0kOVb7rXXOSIkt5lTzDJDGRBcOyVvNRIWFauMqi1gIHd1pszq1542vMOGY0HP4CaiALfkA==", - "license": "MIT", - "dependencies": { - "@next/env": "15.5.5", - "@swc/helpers": "0.5.15", - "caniuse-lite": "^1.0.30001579", - "postcss": "8.4.31", - "styled-jsx": "5.1.6" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "15.5.5", - "@next/swc-darwin-x64": "15.5.5", - "@next/swc-linux-arm64-gnu": "15.5.5", - "@next/swc-linux-arm64-musl": "15.5.5", - "@next/swc-linux-x64-gnu": "15.5.5", - "@next/swc-linux-x64-musl": "15.5.5", - "@next/swc-win32-arm64-msvc": "15.5.5", - "@next/swc-win32-x64-msvc": "15.5.5", - "sharp": "^0.34.3" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.51.1", - "babel-plugin-react-compiler": "*", - "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@playwright/test": { - "optional": true - }, - "babel-plugin-react-compiler": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "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-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "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/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "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", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/potpack": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz", - "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==" - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/promise-worker-transferable": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/promise-worker-transferable/-/promise-worker-transferable-1.0.4.tgz", - "integrity": "sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==", - "dependencies": { - "is-promise": "^2.1.0", - "lie": "^3.0.2" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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/react": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", - "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", - "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", - "license": "MIT", - "dependencies": { - "scheduler": "^0.26.0" - }, - "peerDependencies": { - "react": "^19.1.0" - } - }, - "node_modules/react-hook-form": { - "version": "7.65.0", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.65.0.tgz", - "integrity": "sha512-xtOzDz063WcXvGWaHgLNrNzlsdFgtUWcb32E6WFaGTd7kPZG3EeDusjdZfUsPwKCKVXy1ZlntifaHZ4l8pAsmw==", - "license": "MIT", - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/react-hook-form" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17 || ^18 || ^19" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/react-reconciler": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.31.0.tgz", - "integrity": "sha512-7Ob7Z+URmesIsIVRjnLoDGwBEG/tVitidU0nMsqX/eeJaLY89RISO/10ERe0MqmzuKUUB1rmY+h1itMbUHg9BQ==", - "dependencies": { - "scheduler": "^0.25.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "react": "^19.0.0" - } - }, - "node_modules/react-reconciler/node_modules/scheduler": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", - "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==" - }, - "node_modules/react-use-measure": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.7.tgz", - "integrity": "sha512-KrvcAo13I/60HpwGO5jpW7E9DfusKyLPLvuHlUyP5zqnmAPhNc6qTRjUQrdTADl0lpPpDVU2/Gg51UlOGHXbdg==", - "peerDependencies": { - "react": ">=16.13", - "react-dom": ">=16.13" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - } - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "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/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "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/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/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "devOptional": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/sharp": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.4.tgz", - "integrity": "sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==", - "hasInstallScript": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@img/colour": "^1.0.0", - "detect-libc": "^2.1.0", - "semver": "^7.7.2" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.4", - "@img/sharp-darwin-x64": "0.34.4", - "@img/sharp-libvips-darwin-arm64": "1.2.3", - "@img/sharp-libvips-darwin-x64": "1.2.3", - "@img/sharp-libvips-linux-arm": "1.2.3", - "@img/sharp-libvips-linux-arm64": "1.2.3", - "@img/sharp-libvips-linux-ppc64": "1.2.3", - "@img/sharp-libvips-linux-s390x": "1.2.3", - "@img/sharp-libvips-linux-x64": "1.2.3", - "@img/sharp-libvips-linuxmusl-arm64": "1.2.3", - "@img/sharp-libvips-linuxmusl-x64": "1.2.3", - "@img/sharp-linux-arm": "0.34.4", - "@img/sharp-linux-arm64": "0.34.4", - "@img/sharp-linux-ppc64": "0.34.4", - "@img/sharp-linux-s390x": "0.34.4", - "@img/sharp-linux-x64": "0.34.4", - "@img/sharp-linuxmusl-arm64": "0.34.4", - "@img/sharp-linuxmusl-x64": "0.34.4", - "@img/sharp-wasm32": "0.34.4", - "@img/sharp-win32-arm64": "0.34.4", - "@img/sharp-win32-ia32": "0.34.4", - "@img/sharp-win32-x64": "0.34.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stable-hash": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", - "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", - "dev": true, - "license": "MIT" - }, - "node_modules/stats-gl": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/stats-gl/-/stats-gl-2.4.2.tgz", - "integrity": "sha512-g5O9B0hm9CvnM36+v7SFl39T7hmAlv541tU81ME8YeSb3i1CIP5/QdDeSB3A0la0bKNHpxpwxOVRo2wFTYEosQ==", - "dependencies": { - "@types/three": "*", - "three": "^0.170.0" - }, - "peerDependencies": { - "@types/three": "*", - "three": "*" - } - }, - "node_modules/stats-gl/node_modules/three": { - "version": "0.170.0", - "resolved": "https://registry.npmjs.org/three/-/three-0.170.0.tgz", - "integrity": "sha512-FQK+LEpYc0fBD+J8g6oSEyyNzjp+Q7Ks1C568WWaoMRLW+TkNNWmenWeGgJjV105Gd+p/2ql1ZcjYvNiPZBhuQ==" - }, - "node_modules/stats.js": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", - "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==" - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.includes": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", - "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/styled-jsx": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", - "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", - "license": "MIT", - "dependencies": { - "client-only": "0.0.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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/suspend-react": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz", - "integrity": "sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==", - "peerDependencies": { - "react": ">=17.0" - } - }, - "node_modules/tailwindcss": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.14.tgz", - "integrity": "sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tapable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/tar": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz", - "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==", - "dev": true, - "license": "ISC", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/three": { - "version": "0.180.0", - "resolved": "https://registry.npmjs.org/three/-/three-0.180.0.tgz", - "integrity": "sha512-o+qycAMZrh+TsE01GqWUxUIKR1AL0S8pq7zDkYOQw8GqfX8b8VoCKYUoHbhiX5j+7hr8XsuHDVU6+gkQJQKg9w==" - }, - "node_modules/three-mesh-bvh": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/three-mesh-bvh/-/three-mesh-bvh-0.8.3.tgz", - "integrity": "sha512-4G5lBaF+g2auKX3P0yqx+MJC6oVt6sB5k+CchS6Ob0qvH0YIhuUk1eYr7ktsIpY+albCqE80/FVQGV190PmiAg==", - "peerDependencies": { - "three": ">= 0.159.0" - } - }, - "node_modules/three-stdlib": { - "version": "2.36.0", - "resolved": "https://registry.npmjs.org/three-stdlib/-/three-stdlib-2.36.0.tgz", - "integrity": "sha512-kv0Byb++AXztEGsULgMAs8U2jgUdz6HPpAB/wDJnLiLlaWQX2APHhiTJIN7rqW+Of0eRgcp7jn05U1BsCP3xBA==", - "dependencies": { - "@types/draco3d": "^1.4.0", - "@types/offscreencanvas": "^2019.6.4", - "@types/webxr": "^0.5.2", - "draco3d": "^1.4.1", - "fflate": "^0.6.9", - "potpack": "^1.0.1" - }, - "peerDependencies": { - "three": ">=0.128.0" - } - }, - "node_modules/three-stdlib/node_modules/fflate": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz", - "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==" - }, - "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", - "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/troika-three-text": { - "version": "0.52.4", - "resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.52.4.tgz", - "integrity": "sha512-V50EwcYGruV5rUZ9F4aNsrytGdKcXKALjEtQXIOBfhVoZU9VAqZNIoGQ3TMiooVqFAbR1w15T+f+8gkzoFzawg==", - "dependencies": { - "bidi-js": "^1.0.2", - "troika-three-utils": "^0.52.4", - "troika-worker-utils": "^0.52.0", - "webgl-sdf-generator": "1.1.1" - }, - "peerDependencies": { - "three": ">=0.125.0" - } - }, - "node_modules/troika-three-utils": { - "version": "0.52.4", - "resolved": "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.52.4.tgz", - "integrity": "sha512-NORAStSVa/BDiG52Mfudk4j1FG4jC4ILutB3foPnfGbOeIs9+G5vZLa0pnmnaftZUGm4UwSoqEpWdqvC7zms3A==", - "peerDependencies": { - "three": ">=0.125.0" - } - }, - "node_modules/troika-worker-utils": { - "version": "0.52.0", - "resolved": "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.52.0.tgz", - "integrity": "sha512-W1CpvTHykaPH5brv5VHLfQo9D1OYuo0cSBEUQFFT/nBUzM8iD6Lq2/tgG/f1OelbAS1WtaTPQzE5uM49egnngw==" - }, - "node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/tunnel-rat": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/tunnel-rat/-/tunnel-rat-0.1.2.tgz", - "integrity": "sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ==", - "dependencies": { - "zustand": "^4.3.2" - } - }, - "node_modules/tunnel-rat/node_modules/zustand": { - "version": "4.5.7", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", - "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", - "dependencies": { - "use-sync-external-store": "^1.2.2" - }, - "engines": { - "node": ">=12.7.0" - }, - "peerDependencies": { - "@types/react": ">=16.8", - "immer": ">=9.0.6", - "react": ">=16.8" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "immer": { - "optional": true - }, - "react": { - "optional": true - } - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.3.0" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/use-sync-external-store": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", - "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/utility-types": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", - "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/webgl-constants": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/webgl-constants/-/webgl-constants-1.1.1.tgz", - "integrity": "sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg==" - }, - "node_modules/webgl-sdf-generator": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/webgl-sdf-generator/-/webgl-sdf-generator-1.1.1.tgz", - "integrity": "sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==" - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zustand": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.8.tgz", - "integrity": "sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==", - "engines": { - "node": ">=12.20.0" - }, - "peerDependencies": { - "@types/react": ">=18.0.0", - "immer": ">=9.0.6", - "react": ">=18.0.0", - "use-sync-external-store": ">=1.2.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "immer": { - "optional": true - }, - "react": { - "optional": true - }, - "use-sync-external-store": { - "optional": true - } - } - } - } -} diff --git a/frontend/web/src/component/ui/button-upload.tsx b/frontend/web/src/component/ui/button-upload.tsx new file mode 100644 index 0000000..e69de29 diff --git a/frontend/web/src/component/ui/file-uploader.tsx b/frontend/web/src/component/ui/file-uploader.tsx new file mode 100644 index 0000000..e69de29 From a496bd2cb565a4ac19f7631f839e8e94a5e95d8b Mon Sep 17 00:00:00 2001 From: marlenegohi Date: Thu, 23 Oct 2025 01:05:47 +0200 Subject: [PATCH 05/68] Upload page v1 --- frontend/web/.idea/.gitignore | 8 + .../inspectionProfiles/Project_Default.xml | 6 + frontend/web/.idea/misc.xml | 6 + frontend/web/.idea/modules.xml | 8 + frontend/web/.idea/vcs.xml | 6 + frontend/web/.idea/web.iml | 9 + .../web/src/app/dashboard/upload/page.tsx | 253 ++++--- .../web/src/component/ui/button-upload.tsx | 0 frontend/web/src/component/ui/button.tsx | 67 +- .../web/src/component/ui/file-uploader.tsx | 619 ++++++++++++++++++ frontend/web/src/lib/utils.ts | 5 + 11 files changed, 871 insertions(+), 116 deletions(-) create mode 100644 frontend/web/.idea/.gitignore create mode 100644 frontend/web/.idea/inspectionProfiles/Project_Default.xml create mode 100644 frontend/web/.idea/misc.xml create mode 100644 frontend/web/.idea/modules.xml create mode 100644 frontend/web/.idea/vcs.xml create mode 100644 frontend/web/.idea/web.iml delete mode 100644 frontend/web/src/component/ui/button-upload.tsx diff --git a/frontend/web/.idea/.gitignore b/frontend/web/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/frontend/web/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/frontend/web/.idea/inspectionProfiles/Project_Default.xml b/frontend/web/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..03d9549 --- /dev/null +++ b/frontend/web/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/frontend/web/.idea/misc.xml b/frontend/web/.idea/misc.xml new file mode 100644 index 0000000..6f29fee --- /dev/null +++ b/frontend/web/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/frontend/web/.idea/modules.xml b/frontend/web/.idea/modules.xml new file mode 100644 index 0000000..f589ca3 --- /dev/null +++ b/frontend/web/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/frontend/web/.idea/vcs.xml b/frontend/web/.idea/vcs.xml new file mode 100644 index 0000000..b2bdec2 --- /dev/null +++ b/frontend/web/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/frontend/web/.idea/web.iml b/frontend/web/.idea/web.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/frontend/web/.idea/web.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/frontend/web/src/app/dashboard/upload/page.tsx b/frontend/web/src/app/dashboard/upload/page.tsx index 2507543..6b4775f 100644 --- a/frontend/web/src/app/dashboard/upload/page.tsx +++ b/frontend/web/src/app/dashboard/upload/page.tsx @@ -1,106 +1,189 @@ 'use client'; -import { Upload, FileText, File } from 'lucide-react'; -import { Button } from '@/component/ui/button'; -import { useRouter } from 'next/navigation'; - -export default function UploadPage() { - const router = useRouter(); - - const recentFiles = [ - { name: 'cours_base_de_donnees.pdf', size: '18 Mo', type: 'pdf', icon: 'pdf' }, - { name: 'cours_base_de_donnees.docx', size: '18 Mo', type: 'docx', icon: 'docx' }, - { name: 'cours_base_de_donnees.txt', size: '18 Mo', type: 'txt', icon: 'txt' }, - { name: 'cours_base_de_donnees.pdf', size: '18 Mo', type: 'pdf', icon: 'pdf' }, - { name: 'cours_base_de_donnees.pdf', size: '18 Mo', type: 'pdf', icon: 'pdf' }, - { name: 'cours_modelisation_ensemble.txt', size: '18 Mo', type: 'txt', icon: 'txt' } - ]; +import { useState } from "react"; +import { Card } from "@/component/ui/card"; +import { Facebook, Twitter, Linkedin, GraduationCap } from "lucide-react"; +import React from "react"; +import FileUpload, { DropZone, FileError, FileList, FileInfo, FileProgress } from "@/component/ui/file-uploader"; - const getFileIcon = (type: string) => { - const iconClass = "w-5 h-5"; - switch(type) { - case 'pdf': - return ; - case 'docx': - return ; - case 'txt': - return ; - default: - return ; - } +export default function UploadFiles() { + const [uploadFiles, setUploadFiles] = useState([]); + + const onFileSelectChange = (files: FileInfo[]) => { + setUploadFiles(files); }; - const getFileColor = (type: string) => { - switch(type) { - case 'pdf': - return 'bg-red-100'; - case 'docx': - return 'bg-blue-100'; - case 'txt': - return 'bg-gray-100'; - default: - return 'bg-gray-100'; - } + const onRemove = (fileId: string) => { + setUploadFiles(uploadFiles.filter(file => file.id !== fileId)); + }; + + const getFileIcon = (type: string) => { + if (type === "pdf") return "text-red-500"; + else if (type === "docx" || type === "doc") return "text-blue-500"; + else return "text-gray-500"; }; return ( -
- - {/* Main content */} -
-
- {/* Left side - Upload area */} -
-
-
- {/* Upload icon */} -
-
- -
+
+ {/* Main Content */} +
+ + {/* Upload Area */} +
+
+

+ Dépose ton pdf +

+

+ Révise plus vite. +

+
+ + {/* File Upload */} + +
+ + + + setUploadFiles([])} + onRemove={onRemove} + canResume={true} + /> +
+
+ +
+ + {/* Action Cards */} +
+

+ CE QUE VOUS POUVEZ FAIRE ? +

+
+ +
+ {/* Resume Card */} + +

RESUME

+

+ Générer un résumé du texte complet ou même comprendre les concepts clés +

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- {/* Upload button */} - + {/* Quizz Card */} + +

QUIZZ

+

+ Générer un quiz qui vous permettra de tester vos connaissances +

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- {/* Accepted formats */} -

- Fichier accepté : .pdf, .txt, .docs, .docx -

+ {/* Chat Card */} + +

CHAT

+

+ Poser des questions pour mieux comprendre des concepts +

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + {/* Footer */} +
+
+
+
+ +
+

StudyAI

+

Démarrez avec une autre

+

vision des révisions.

+
+
+ +
- {/* Right side - Recent files */} -
-

Fichier récemment uploadé :

- -
- {recentFiles.map((file, index) => ( -
-
- {/* File icon */} -
- {getFileIcon(file.type)} -
- - {/* File name */} - {file.name} -
- - {/* File size */} - {file.size} -
- ))} +
+

+ © 2025 StudyAI. Tous droits réservés +

+
-
+
); } diff --git a/frontend/web/src/component/ui/button-upload.tsx b/frontend/web/src/component/ui/button-upload.tsx deleted file mode 100644 index e69de29..0000000 diff --git a/frontend/web/src/component/ui/button.tsx b/frontend/web/src/component/ui/button.tsx index e3f2d82..39165d8 100644 --- a/frontend/web/src/component/ui/button.tsx +++ b/frontend/web/src/component/ui/button.tsx @@ -4,55 +4,60 @@ import { cva, type VariantProps } from "class-variance-authority"; import { cn } from "@/lib/utils"; +// ==================== +// Button Variants (fusion des deux) +// ==================== const buttonVariants = cva( - "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", { variants: { variant: { - default: "bg-primary text-primary-foreground hover:bg-primary/90", + default: "bg-primary text-primary-foreground hover:bg-primary/90 shadow-sm shadow-black/5", destructive: - "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 shadow-sm shadow-black/5", outline: - "border bg-background text-foreground hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50", - secondary: - "bg-secondary text-secondary-foreground hover:bg-secondary/80", - ghost: - "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50", + "border border-input bg-background hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 shadow-sm shadow-black/5", + secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 shadow-sm shadow-black/5", + ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50", link: "text-primary underline-offset-4 hover:underline", }, size: { - default: "h-9 px-4 py-2 has-[>svg]:px-3", - sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5", - lg: "h-10 rounded-md px-6 has-[>svg]:px-4", - icon: "size-9 rounded-md", + default: "h-10 px-4 py-2 has-[>svg]:px-3", + sm: "h-9 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5 text-xs", + lg: "h-11 rounded-md px-8 has-[>svg]:px-4", + icon: "h-10 w-10 rounded-md size-9", }, }, defaultVariants: { variant: "default", size: "default", }, - }, + } ); -function Button({ - className, - variant, - size, - asChild = false, - ...props - }: React.ComponentProps<"button"> & - VariantProps & { +// ==================== +// Button Component (fusion) +// ==================== +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { asChild?: boolean; -}) { - const Comp = asChild ? Slot : "button"; - - return ( - - ); } +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button"; + return ( + + ); + } +); + +Button.displayName = "Button"; + export { Button, buttonVariants }; diff --git a/frontend/web/src/component/ui/file-uploader.tsx b/frontend/web/src/component/ui/file-uploader.tsx index e69de29..e020627 100644 --- a/frontend/web/src/component/ui/file-uploader.tsx +++ b/frontend/web/src/component/ui/file-uploader.tsx @@ -0,0 +1,619 @@ +import { useState, useRef, createContext, useContext, useEffect } from 'react' +import { cn, generateUniqueId } from '@/lib/utils' +import { Button } from '@/component/ui/button' +import { AnimatePresence, motion } from 'framer-motion' +import { Trash, X, CircleAlert, Play, Pause, Upload, FileText, Image } from 'lucide-react' + +export interface FileInfo { + id: string + name: string + size: number + type: string + file: File + progress: number + status: FileStatus + error?: string +} + +export enum FileStatus { + Uploading, + Paused, + Completed, + Error, + Cancelled, + Pending +} + +interface FileUploadContextType { + files: FileInfo[] + error: string | null + setError: (error: string | null) => void + maxCount?: number + maxSize?: number + accept?: string + multiple?: boolean + validateFiles: (files: File[]) => { valid: boolean; errorMessage?: string } + onFileSelect?: (files: File[]) => void + onFileSelectChange?: (files: FileInfo[]) => void + onUpload?: () => void + onPause?: (fileId: string) => void + onResume?: (fileId: string) => void + onRemove?: (fileId: string) => void + disabled?: boolean +} + +const FileUploadContext = createContext(undefined) + +export const useFileUpload = () => { + const context = useContext(FileUploadContext) + if (!context) { + throw new Error('useFileUpload must be used within a FileUploadProvider') + } + return context +} + +export interface FileErrorProps { + message?: string + onClose?: () => void + className?: string + autoHideDuration?: number +} + +export const FileError: React.FC = ({ + message, + onClose, + className, + }) => { + const { error } = useFileUpload() + const [isVisible, setIsVisible] = useState(true) + const displayMessage = message || error + + if (!displayMessage) return null + + const handleClose = () => { + setIsVisible(false) + onClose?.() + } + + return ( + + {isVisible && displayMessage && ( + +
+ +

{displayMessage}

+
+ +
+ )} +
+ ) +} + +export const formatFileSize = (bytes: number): string => { + if (bytes < 1024) return bytes + ' B' + else if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(2) + ' KB' + else if (bytes < 1024 * 1024 * 1024) return (bytes / (1024 * 1024)).toFixed(2) + ' MB' + else return (bytes / (1024 * 1024 * 1024)).toFixed(2) + ' GB' +} + +export const FileTypeIcon: React.FC<{ type: string }> = ({ type }) => { + if (type.includes('image')) { + return + } else { + return + } +} + +export interface FileProgressProps { + progress?: number + status?: FileInfo['status'] + fileId?: string + className?: string +} + +export const FileProgress: React.FC = ({ + progress, + status, + fileId, + className + }) => { + const { files } = useFileUpload() + + let fileStatus = status + let fileProgress = progress + + if (fileId) { + const file = files.find(f => f.id === fileId) + if (file) { + fileStatus = file.status + fileProgress = file.progress + } + } + + if (!fileStatus || !fileProgress || fileStatus === FileStatus.Completed) return null + + return ( +
+
+
+ ) +} + +export interface FileItemProps { + file?: FileInfo + fileId?: string + onPause?: (fileId: string) => void + onResume?: (fileId: string) => void + onRemove?: (fileId: string) => void + className?: string + canResume?: boolean + canRemove?: boolean + showProgress?: boolean +} + +export const FileItem: React.FC = ({ + file: propFile, + fileId, + onPause = () => {}, + onResume = () => {}, + onRemove = () => {}, + className, + canResume = false, + canRemove = true, + showProgress = false, + }) => { + const { files } = useFileUpload() + + let file = propFile + if (!file && fileId) { + file = files.find(f => f.id === fileId) + } + + if (!file) return null + + return ( +
+
+ +
+ +
+
+

+ {file.name} +

+

+ {formatFileSize(file.size)} + {file.status === FileStatus.Error && ( + {file.error || 'File to upload'} + )} +

+
+ + {showProgress && } +
+ + {canResume && ( +
+ {file.status === FileStatus.Uploading && ( + + )} + {file.status === FileStatus.Paused && ( + + )} +
+ )} + {canRemove && ( + + )} +
+ ) +} + +export interface FileListProps { + files?: FileInfo[] + onPause?: (fileId: string) => void + onResume?: (fileId: string) => void + onRemove?: (fileId: string) => void + onClear?: () => void + showUploadButton?: boolean + onUpload?: () => void + className?: string + canResume?: boolean + canRemove?: boolean +} + +export const FileList: React.FC = ({ + files: propFiles, + onPause, + onResume, + onRemove, + onClear = () => {}, + showUploadButton = false, + className, + canResume, + canRemove, + }) => { + const { + files: contextFiles, + onUpload = () => {}, + } = useFileUpload() + + const files = propFiles || contextFiles + + if (files.length === 0) return null + + const handlePause = (fileId: string) => { + const file = files.find(f => f.id === fileId) + if (file) { + file.status = FileStatus.Paused + onPause?.(fileId) + } + } + + const handleResume = (fileId: string) => { + const file = files.find(f => f.id === fileId) + if (file) { + file.status = FileStatus.Uploading + onResume?.(fileId) + } + } + + return ( +
+
+

File List

+
+ {showUploadButton && files.some(file => file.status === FileStatus.Pending) && onUpload && ( + + )} + +
+
+ +
+ {files.map(file => ( + + ))} +
+
+ ) +} + +export interface DropZoneProps { + onFileSelect?: (files: File[]) => void + prompt?: string + maxSize?: number + maxCount?: number + multiple?: boolean + accept?: string + className?: string + onError?: (message: string) => void +} + +export const DropZone: React.FC = ({ + onFileSelect: propOnFileSelect, + prompt = "Clique ou dépose ton fichier ici", + maxSize: propMaxSize, + multiple: propMultiple, + accept: propAccept, + className, + onError: propOnError, + }) => { + const { + disabled, + files: contextFiles, + maxSize: contextMaxSize, + multiple: contextMultiple, + accept: contextAccept, + setError: contextSetError, + onFileSelect: contextOnFileSelect, + onFileSelectChange: contextOnFileSelectChange, + validateFiles: contextValidateFiles, + } = useFileUpload(); + + const maxSize = propMaxSize || contextMaxSize; + const multiple = propMultiple !== undefined ? propMultiple : contextMultiple; + const accept = propAccept || contextAccept; + const onFileSelect = propOnFileSelect || contextOnFileSelect; + const onError = propOnError || contextSetError; + + const [isDragging, setIsDragging] = useState(false); + const fileInputRef = useRef(null); + + useEffect(() => { + if (fileInputRef.current && contextFiles.length === 0) { + fileInputRef.current.value = ""; + } + }, [contextFiles]); + + const handleDrop = (e: React.DragEvent) => { + e.preventDefault(); + e.stopPropagation(); + setIsDragging(false); + + if (e.dataTransfer.files && e.dataTransfer.files.length > 0) { + const droppedFiles = Array.from(e.dataTransfer.files); + const validation = contextValidateFiles(droppedFiles); + + if (!validation.valid) { + if (onError && validation.errorMessage) { + onError(validation.errorMessage); + } + return; + } + + onFileSelect?.(droppedFiles); + contextOnFileSelectChange?.( + droppedFiles.map((file) => ({ + id: generateUniqueId(btoa(encodeURIComponent(file.name))), + name: file.name, + size: file.size, + type: file.type, + progress: 0, + file, + status: FileStatus.Pending, + })) + ); + } + }; + + const handleFileInputChange = (e: React.ChangeEvent) => { + if (e.target.files && e.target.files.length > 0) { + const selectedFiles = Array.from(e.target.files); + const validation = contextValidateFiles(selectedFiles); + + if (!validation.valid) { + if (onError && validation.errorMessage) { + onError(validation.errorMessage); + } + return; + } + + onFileSelect?.(selectedFiles); + contextOnFileSelectChange?.( + selectedFiles.map((file) => ({ + id: generateUniqueId(btoa(encodeURIComponent(file.name))), + name: file.name, + size: file.size, + type: file.type, + progress: 0, + file, + status: FileStatus.Pending, + })) + ); + } + }; + + return ( +
fileInputRef.current?.click()} + onDragEnter={(e) => { + e.preventDefault(); + e.stopPropagation(); + setIsDragging(true); + }} + onDragLeave={(e) => { + e.preventDefault(); + e.stopPropagation(); + setIsDragging(false); + }} + onDragOver={(e) => { + e.preventDefault(); + e.stopPropagation(); + }} + onDrop={handleDrop} + > + {/* Icône centrale */} +
+ +

{prompt}

+ {maxSize && ( +

+ Taille max : {maxSize} MB +

+ )} +
+ + +
+ ); +}; + + +export interface FileUploadProviderProps { + children: React.ReactNode + files?: FileInfo[] + showUploadButton?: boolean + multiple?: boolean + accept?: string + maxCount?: number + maxSize?: number + onFileSelect?: (files: File[]) => void + onFileSelectChange?: (files: FileInfo[]) => void + onUpload?: () => void + onPause?: (fileId: string) => void + onResume?: (fileId: string) => void + onRemove?: (fileId: string) => void + disabled?: boolean +} + +export const FileUploadProvider: React.FC = ({ + children, + files = [], + multiple = false, + accept, + maxCount = 1, + maxSize = 1, + onFileSelect, + onFileSelectChange, + onUpload, + onPause, + onResume, + onRemove, + disabled = false + }) => { + const [error, setError] = useState(null) + + const validateFiles = (files: File[]): { valid: boolean; errorMessage?: string } => { + if (maxCount && files.length > maxCount) { + return { + valid: false, + errorMessage: `can upload maxinum ${maxCount} files` + } + } + + if (maxSize) { + const oversizedFiles = files.filter(file => file.size > maxSize * 1024 * 1024) + if (oversizedFiles.length > 0) { + const fileNames = oversizedFiles.map(f => f.name).join(', ') + return { + valid: false, + errorMessage: `file size exceed limit (${maxSize}MB): ${fileNames}` + } + } + } + + if (accept) { + const acceptedTypes = accept.split(',').map(type => type.trim()) + const invalidFiles = files.filter(file => { + const fileExt = '.' + file.name.split('.').pop()?.toLowerCase() + // check MIME type + return !acceptedTypes.some(type => + type === fileExt || + type === file.type || + (type.includes('/*') && file.type.startsWith(type.replace('/*', '/'))) + ) + }) + + if (invalidFiles.length > 0) { + const fileNames = invalidFiles.map(f => f.name).join(', ') + return { + valid: false, + errorMessage: `file type can't support: ${fileNames}` + } + } + } + + return { valid: true } + } + + return ( + + {children} + + ) +} + +export interface FileUploadProps extends FileUploadProviderProps { + className?: string +} + +const FileUpload: React.FC = ({ + className, + children, + disabled, + ...providerProps + }) => { + return ( + +
+ {children} +
+
+ ) +} + +export default FileUpload; \ No newline at end of file diff --git a/frontend/web/src/lib/utils.ts b/frontend/web/src/lib/utils.ts index 1824d80..6ebc38d 100644 --- a/frontend/web/src/lib/utils.ts +++ b/frontend/web/src/lib/utils.ts @@ -2,3 +2,8 @@ export function cn(...classes: Array) { return classes.filter(Boolean).join(" "); } +export function generateUniqueId(prefix = ''): string { + return prefix + crypto.randomUUID(); +} + + From d1dccb5014967fd33e38e446228cf9e499242c07 Mon Sep 17 00:00:00 2001 From: Hyckael Date: Thu, 23 Oct 2025 13:04:46 +0200 Subject: [PATCH 06/68] feat: create and integrate reusable PasswordInput component across forms --- .../web/src/app/authentication/login/page.tsx | 18 ++----- .../src/app/authentication/register/page.tsx | 37 +++----------- .../reset-password/NewPassword/page.tsx | 34 ++----------- .../web/src/component/ui/password-input.tsx | 50 +++++++++++++++++++ 4 files changed, 67 insertions(+), 72 deletions(-) create mode 100644 frontend/web/src/component/ui/password-input.tsx diff --git a/frontend/web/src/app/authentication/login/page.tsx b/frontend/web/src/app/authentication/login/page.tsx index 2c9d5b6..9572979 100644 --- a/frontend/web/src/app/authentication/login/page.tsx +++ b/frontend/web/src/app/authentication/login/page.tsx @@ -4,11 +4,12 @@ import { useRouter } from 'next/navigation'; import { Button } from '@/component/ui/button'; import { Input } from '@/component/ui/input'; import { Label } from '@/component/ui/label'; -import { Mail, Eye } from 'lucide-react'; +import { Mail } from 'lucide-react'; +import PasswordInput from "@/component/ui/password-input"; export default function LoginPage() { const router = useRouter(); - + const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); router.push('/dashboard/upload'); @@ -41,18 +42,7 @@ export default function LoginPage() { {/* Password */}
- -
- - -
+
{/* Forgot password */} diff --git a/frontend/web/src/app/authentication/register/page.tsx b/frontend/web/src/app/authentication/register/page.tsx index 4aad0b7..60369d9 100644 --- a/frontend/web/src/app/authentication/register/page.tsx +++ b/frontend/web/src/app/authentication/register/page.tsx @@ -4,8 +4,8 @@ import { useRouter } from 'next/navigation'; import { Button } from '@/component/ui/button'; import { Input } from '@/component/ui/input'; import { Label } from '@/component/ui/label'; -import { Mail, Eye, User } from 'lucide-react'; - +import { Mail, User } from 'lucide-react'; +import PasswordInput from "@/component/ui/password-input"; export default function LoginPage() { const router = useRouter(); @@ -19,11 +19,11 @@ export default function LoginPage() {

INSCRIPTION

- Bienvenue sur studyAI, veuillez remplir vos informations : -

+ Bienvenue sur studyAI, veuillez remplir vos informations : +

- {/* Nom&Prenoms */} + {/* Nom&Prenoms */}
); -} \ No newline at end of file +} +export default withAuth(UploadFiles); \ No newline at end of file diff --git a/frontend/web/src/lib/api/http.ts b/frontend/web/src/lib/api/http.ts index a14f2f7..ab0e2c6 100644 --- a/frontend/web/src/lib/api/http.ts +++ b/frontend/web/src/lib/api/http.ts @@ -63,6 +63,12 @@ if (res.status === 401) { } if (res.status === 204) return undefined as unknown as T; + if (res.status === 401) { + setToken(null); + if (typeof window !== "undefined") { + window.location.href = "/login"; // <<< ajoute ceci + } + } // res.json() -> permet de lire la reponse sous forme de données utilisables const isJson = res.headers.get("content-type")?.includes("application/json"); diff --git a/frontend/web/src/lib/api/user.ts b/frontend/web/src/lib/api/user.ts new file mode 100644 index 0000000..90e65a3 --- /dev/null +++ b/frontend/web/src/lib/api/user.ts @@ -0,0 +1,10 @@ +// src/lib/api/user.ts + +//utilise auth: true pour ajouter le header Authorization automatiquement +import { http } from "../api/http"; + +export type Me = { id: string; email: string; fullName: string }; + +export async function getMe() { + return http("/api/users/me", { method: "GET", auth: true }); +} diff --git a/frontend/web/src/lib/api/withAuth.client.tsx b/frontend/web/src/lib/api/withAuth.client.tsx new file mode 100644 index 0000000..e9bfd23 --- /dev/null +++ b/frontend/web/src/lib/api/withAuth.client.tsx @@ -0,0 +1,44 @@ +"use client"; +// ⬆️ Indique à Next.js que ce fichier est exécuté côté client (obligatoire car on utilise useEffect / useRouter) + +import { useEffect } from "react"; +import { useRouter } from "next/navigation"; +import { getToken } from "@/lib/api/http"; // récupère le token depuis le localStorage + +// On importe seulement les TYPES de React (pas le runtime) +import type * as React from "react"; + +/** + * HOC (Higher-Order Component) qui "enveloppe" une page ou un composant + * pour le rendre accessible uniquement si l'utilisateur a un token. + * + * @param Comp - Le composant (page) à protéger + */ +export function withAuth

(Comp: React.ComponentType

) { + // On retourne un nouveau composant "Guard" qui ajoute la logique d'auth + return function Guard(props: P) { + const router = useRouter(); + + useEffect(() => { + // 1) On vérifie s'il y a un token (stocké dans le localStorage) + const token = getToken(); + + // 2) S'il n'y a PAS de token → on redirige vers la page de login + if (!token) { + // On garde la page demandée pour y revenir après le login + // window.location.pathname = "/resume" par ex. + const next = + typeof window !== "undefined" ? window.location.pathname : "/"; + + // Redirection côté client + // 💡 Si ta page de login est à /authentication/login, + // remplace "/login" ci-dessous par "/authentication/login" + router.replace(`/authentication/login`); + } + }, [router]); // dépendance sur router (bonne pratique) + + // 3) Si on a un token, on rend simplement le composant protégé + // On transmet toutes les props telles quelles (...props) + return ; + }; +} From 47d4972210d7a6ed6add8759c810aa00c304e033 Mon Sep 17 00:00:00 2001 From: Jojo-225 Date: Mon, 10 Nov 2025 16:26:13 +0100 Subject: [PATCH 40/68] Personnalisation de la navBar --- frontend/web/src/app/dashboard/layout.tsx | 32 +++++-------------- .../src/app/dashboard/upload-success/page.tsx | 5 +-- frontend/web/src/lib/api/auth.ts | 2 ++ frontend/web/src/lib/api/withAuth.client.tsx | 3 +- frontend/web/src/lib/session.ts | 2 ++ 5 files changed, 16 insertions(+), 28 deletions(-) diff --git a/frontend/web/src/app/dashboard/layout.tsx b/frontend/web/src/app/dashboard/layout.tsx index 4a40d54..12d4d96 100644 --- a/frontend/web/src/app/dashboard/layout.tsx +++ b/frontend/web/src/app/dashboard/layout.tsx @@ -4,7 +4,7 @@ import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { withAuth } from '@/lib/api/withAuth.client'; import { getToken,setToken } from '@/lib/api/http'; -import { getMe,type Me } from '@/lib/api/user'; +import { getUser } from '@/lib/session'; import { useEffect,useState } from 'react'; @@ -12,29 +12,13 @@ import { useEffect,useState } from 'react'; const router = useRouter(); // état local pour l’utilisateur - const [me, setMe] = useState(null); - const [loadingMe, setLoadingMe] = useState(true); - - useEffect(() => { - const token = getToken(); - if (!token) { - setLoadingMe(false); // ✅ éviter le "Chargement..." infini quand pas de token - return; - } - (async () => { - try { - const u = await getMe(); - const user = (u as any)?.user ?? u; // au cas où le back renvoie { user: {...} } - if (user?.fullName) setMe(user); - } catch { - // http.ts gère déjà 401 -> redirection - } finally { - setLoadingMe(false); // ✅ on éteint le loader quoi qu’il arrive - } - })(); - }, []); - + const [name, setName] = useState(getUser()?.fullName ?? null); + useEffect(() => { + const t = getToken(); + if (!t) return; + // tu peux appeler http("/api/users/me", { method:"GET", auth:true }) si tu veux + }, []); const onLogout = () => { setToken(null); // supprime le token router.replace("/authentication/login"); // renvoie vers login @@ -55,7 +39,7 @@ import { useEffect,useState } from 'react'; {/* Liens principaux */}

- {loadingMe ? "Chargement..." : me ? `Bonjour, ${me.fullName}` : ""} + {name ? `Bonjour, ${name}` : "Bonjour"} Accueil Inviter vos amis diff --git a/frontend/web/src/app/dashboard/upload-success/page.tsx b/frontend/web/src/app/dashboard/upload-success/page.tsx index bc22c58..f39d3f4 100644 --- a/frontend/web/src/app/dashboard/upload-success/page.tsx +++ b/frontend/web/src/app/dashboard/upload-success/page.tsx @@ -5,10 +5,10 @@ import { FileText } from 'lucide-react'; import OptionButton from "../../../component/ui/option-button"; import { useSearchParams } from 'next/navigation'; import { createSubject } from "@/lib/api/subject"; - +import { withAuth } from '@/lib/api/withAuth.client'; type PdfMeta = { chars: number; ms?: number; pages?: number }; -export default function UploadSuccess() { +function UploadSuccess() { const [uploadedFile, setUploadedFile] = useState(null); const [isDragging, setIsDragging] = useState(false); @@ -230,3 +230,4 @@ export default function UploadSuccess() {
); } +export default withAuth(UploadSuccess); \ No newline at end of file diff --git a/frontend/web/src/lib/api/auth.ts b/frontend/web/src/lib/api/auth.ts index 636468a..5950c1e 100644 --- a/frontend/web/src/lib/api/auth.ts +++ b/frontend/web/src/lib/api/auth.ts @@ -1,5 +1,6 @@ // src/lib/api/auth.ts import { http, setToken } from "./http"; +import { saveUser } from "../session"; // ---------- Types ---------- export interface LoginRequest { @@ -43,6 +44,7 @@ export async function login(payload: LoginRequest) { // on sauvegarde le token pour les requêtes protégées if (res.token) { setToken(res.token); + saveUser({ id: res.id, email: res.email, fullName: res.fullName }); } return res; diff --git a/frontend/web/src/lib/api/withAuth.client.tsx b/frontend/web/src/lib/api/withAuth.client.tsx index e9bfd23..ef3aad5 100644 --- a/frontend/web/src/lib/api/withAuth.client.tsx +++ b/frontend/web/src/lib/api/withAuth.client.tsx @@ -31,8 +31,7 @@ export function withAuth

(Comp: React.ComponentType

) { typeof window !== "undefined" ? window.location.pathname : "/"; // Redirection côté client - // 💡 Si ta page de login est à /authentication/login, - // remplace "/login" ci-dessous par "/authentication/login" + router.replace(`/authentication/login`); } }, [router]); // dépendance sur router (bonne pratique) diff --git a/frontend/web/src/lib/session.ts b/frontend/web/src/lib/session.ts index d34efaa..08d5db0 100644 --- a/frontend/web/src/lib/session.ts +++ b/frontend/web/src/lib/session.ts @@ -10,6 +10,8 @@ export type CurrentUser = { export function saveUser(user: CurrentUser) { if (typeof window === "undefined") return; localStorage.setItem(USER_KEY, JSON.stringify(user)); + if (user) localStorage.setItem(USER_KEY, JSON.stringify(user)); + else localStorage.removeItem(USER_KEY); } export function getUser(): CurrentUser | null { From 9123eba56f165b2c00f48032d8261bd489c1c936 Mon Sep 17 00:00:00 2001 From: fsossa Date: Mon, 10 Nov 2025 16:42:15 +0100 Subject: [PATCH 41/68] Feat: Fix generating of summary with gemini ai using studiAiservice.ask function --- .../pdl/studyai_backend/controller/ResumeController.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ResumeController.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ResumeController.java index 4196f00..c5e853e 100644 --- a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ResumeController.java +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ResumeController.java @@ -18,6 +18,7 @@ import com.pdl.studyai_backend.model.Subject; import com.pdl.studyai_backend.service.ResumeService; import com.pdl.studyai_backend.service.SubjectService; +import com.pdl.studyai_backend.service.StudioAiService; import io.jsonwebtoken.Claims; import jakarta.servlet.http.HttpServletRequest; @@ -29,10 +30,13 @@ public class ResumeController { private final ResumeService resumeService; private final SubjectService subjectService; + private final StudioAiService studioAiService; + private final String promptHeader = "Génère un résumé concis en français du texte suivant :\n\n"; - public ResumeController(ResumeService service, SubjectService subjectService) { + public ResumeController(ResumeService service, SubjectService subjectService, StudioAiService studioAiService) { this.resumeService = service; this.subjectService = subjectService; + this.studioAiService = studioAiService; } @PostMapping("/create") @@ -46,7 +50,8 @@ public ResponseEntity createResume(HttpServletRequest request, @RequestBody R if (subject == null) { return ResponseEntity.status(404).body("Sujet non trouvé"); } - Resume r = new Resume(reqResume.getSubjectId(), subject.getExtractText()); + String generatedSummary = this.studioAiService.ask(this.promptHeader + subject.getExtractText()); + Resume r = new Resume(reqResume.getSubjectId(), generatedSummary); Resume resume = this.resumeService.create(r); return ResponseEntity.ok(Map.of("message", "Résumé créé avec succès !", "resume", resume)); From 94ca3db4b297070892279a2cff8404d277bf9022 Mon Sep 17 00:00:00 2001 From: Hyckael Date: Mon, 10 Nov 2025 16:45:01 +0100 Subject: [PATCH 42/68] fix:Quiz not done --- backend/.vscode/settings.json | 3 ++ .../controller/QuizController.java | 5 ++ .../com/pdl/studyai_backend/model/Quiz.java | 10 ++++ .../repository/QuizRepository.java | 13 +++++ .../studyai_backend/service/QuizService.java | 51 +++++++++++++++++++ 5 files changed, 82 insertions(+) create mode 100644 backend/.vscode/settings.json create mode 100644 backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/QuizController.java create mode 100644 backend/studyai_backend/src/main/java/com/pdl/studyai_backend/repository/QuizRepository.java create mode 100644 backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/QuizService.java diff --git a/backend/.vscode/settings.json b/backend/.vscode/settings.json new file mode 100644 index 0000000..8f2b711 --- /dev/null +++ b/backend/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.compile.nullAnalysis.mode": "disabled" +} \ No newline at end of file diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/QuizController.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/QuizController.java new file mode 100644 index 0000000..7a42b66 --- /dev/null +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/QuizController.java @@ -0,0 +1,5 @@ +package com.pdl.studyai_backend.controller; + +public class QuizController { + +} diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Quiz.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Quiz.java index 34dbad6..a930d2b 100644 --- a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Quiz.java +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Quiz.java @@ -1,5 +1,6 @@ package com.pdl.studyai_backend.model; +import java.time.Instant; import java.util.List; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @@ -11,6 +12,7 @@ public class Quiz { private String subjectId; private List questions; private List answers; + private Instant createdAt = Instant.now(); public Quiz() {} @@ -60,4 +62,12 @@ public void removeQuestion(String question) { this.answers.remove(index); } } + + public Instant getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Instant createdAt) { + this.createdAt = createdAt; + } } diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/repository/QuizRepository.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/repository/QuizRepository.java new file mode 100644 index 0000000..a7a648f --- /dev/null +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/repository/QuizRepository.java @@ -0,0 +1,13 @@ +package com.pdl.studyai_backend.repository; + +import java.util.List; + +import org.springframework.data.mongodb.repository.MongoRepository; + +import com.pdl.studyai_backend.model.Quiz; + +public interface QuizRepository extends MongoRepository{ + List findBySubjectId(String subjectId); + // rechercher la liste des questions du quiz + // List findByQuestionId(String questionId); +} diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/QuizService.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/QuizService.java new file mode 100644 index 0000000..4d44a12 --- /dev/null +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/QuizService.java @@ -0,0 +1,51 @@ +package com.pdl.studyai_backend.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.pdl.studyai_backend.repository.QuizRepository; +import com.pdl.studyai_backend.model.Quiz; + +@Service +public class QuizService { + @Autowired + private QuizRepository quizRepository; + public Quiz create(Quiz quiz) { + return quizRepository.save(quiz); + } + public Quiz findById(String id) { + return quizRepository.findById(id).orElse(null); + } + public List findAll() { + return quizRepository.findAll(); + } + public List getQuizBySubjectId(String subjectId) { + return quizRepository.findBySubjectId(subjectId); + } + public Quiz updateQuiz(String id, Quiz quiz) { + Quiz existingQuiz = quizRepository.findById(id).orElse(null); + if (existingQuiz != null) { + existingQuiz.setSubjectId(quiz.getSubjectId()); + existingQuiz.setQuestions(quiz.getQuestions()); + return quizRepository.save(existingQuiz); + } + return null; + } + public void deleteQuiz(String id) { + quizRepository.deleteById(id); + } + public List getLastQuizBySubjectId(String subjectId, int n) { + List quizzes = quizRepository.findBySubjectId(subjectId); + quizzes.sort((q1, q2) -> q2.getCreatedAt().compareTo(q1.getCreatedAt())); + return quizzes.stream().limit(n).toList(); + } + + public Quiz getActiveQuizBySubjectId(String subjectId) { + List quizzes = quizRepository.findBySubjectId(subjectId); + return quizzes.stream() + .max((q1, q2) -> q1.getCreatedAt().compareTo(q2.getCreatedAt())) + .orElse(null); + } +} From 0fe86441222e5808a0f2af5eb01f13834efc023b Mon Sep 17 00:00:00 2001 From: marlenegohi Date: Mon, 10 Nov 2025 17:14:12 +0100 Subject: [PATCH 43/68] Subject update --- frontend/web/src/lib/api/subject.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/web/src/lib/api/subject.ts b/frontend/web/src/lib/api/subject.ts index 6ddd4e4..5e134e6 100644 --- a/frontend/web/src/lib/api/subject.ts +++ b/frontend/web/src/lib/api/subject.ts @@ -14,7 +14,7 @@ export async function createSubject(data: SubjectData) { console.log("Token used for request:", token); // Make the API request with Authorization header - const response = await fetch("http://192.168.43.88:8085/api/subjects/create", { + const response = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/subjects/create`, { method: "POST", headers: { "Content-Type": "application/json", @@ -28,4 +28,5 @@ export async function createSubject(data: SubjectData) { } return await response.json(); + } From d98f5e4fbdf92b5aebe268bbbb869be51340f10e Mon Sep 17 00:00:00 2001 From: Jojo-225 Date: Mon, 10 Nov 2025 17:33:50 +0100 Subject: [PATCH 44/68] =?UTF-8?q?=20Int=C3=A9gration=20des=20CI/CD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/web/.github/workflows/ci.yml | 60 ++++++++++++++++++++++----- 1 file changed, 49 insertions(+), 11 deletions(-) diff --git a/frontend/web/.github/workflows/ci.yml b/frontend/web/.github/workflows/ci.yml index abab7ae..1139635 100644 --- a/frontend/web/.github/workflows/ci.yml +++ b/frontend/web/.github/workflows/ci.yml @@ -1,31 +1,69 @@ # CI/CD pour voir si tout est ok dans notre projet # Ce script s'exécute automatiquement lorsqu'on fait push sur les différentes branches ou un pull_request sur les différentes branches énumérées - name: CI/CD for Next.js on: push: branches: ["dev", "frontend", "dev-reset"] pull_request: - branches: [ "master", "dev", "dev-reset" ] + branches: ["master", "dev", "dev-reset"] jobs: - build: + code-quality: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Run code formatting with Prettier + run: npx prettier --write . + + - name: Run ESLint with auto-fix + run: npx eslint . --fix + + - name: Verify linting (strict mode) + run: npx eslint . --max-warnings=0 + + - name: Verify formatting + run: npx prettier --check . + + build-and-test: runs-on: ubuntu-latest + needs: code-quality steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'npm' - name: Install dependencies - run: npm install - # Pas de test dans notre cas, donc cette ligne ne sera pas utilisée + run: npm ci + - name: Run tests run: npm run test --if-present - # Test si on a pas de problème de syntaxe dans notre code - - name: Test if lint is ok - run: npm run lint - - # Ce run permet de tester si - name: Build project run: npm run build + + - name: Upload build artifacts + uses: actions/upload-artifact@v3 + if: success() + with: + name: build-output + path: | + .next/ + public/ + package.json From bd6f0b6082a002e08d31cacd1b36ea2f2a4d9fb1 Mon Sep 17 00:00:00 2001 From: Jojo-225 Date: Mon, 10 Nov 2025 21:00:22 +0100 Subject: [PATCH 45/68] test: trigger CI for frontend/web --- frontend/web/.github/workflows/ci.yml | 80 +++++++++++++++++---------- 1 file changed, 51 insertions(+), 29 deletions(-) diff --git a/frontend/web/.github/workflows/ci.yml b/frontend/web/.github/workflows/ci.yml index 1139635..1beb04b 100644 --- a/frontend/web/.github/workflows/ci.yml +++ b/frontend/web/.github/workflows/ci.yml @@ -1,69 +1,91 @@ # CI/CD pour voir si tout est ok dans notre projet # Ce script s'exécute automatiquement lorsqu'on fait push sur les différentes branches ou un pull_request sur les différentes branches énumérées -name: CI/CD for Next.js +name: Frontend CI (Next.js in /frontend/web) on: push: - branches: ["dev", "frontend", "dev-reset"] + branches: [main, master, dev, frontend, dev-reset] + paths: + - 'frontend/web/**' + - '.github/workflows/frontend-ci.yml' pull_request: - branches: ["master", "dev", "dev-reset"] + branches: [main, master, dev, dev-reset] + paths: + - 'frontend/web/**' + workflow_dispatch: {} # bouton "Run workflow" + +permissions: + contents: read + +concurrency: + group: web-ci-${{ github.ref }} + cancel-in-progress: true + +# Toutes les commandes s'exécutent dans /frontend/web +defaults: + run: + working-directory: frontend/web jobs: code-quality: runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - - name: Setup Node.js - uses: actions/setup-node@v4 + - uses: actions/setup-node@v4 with: - node-version: '18' + node-version: '20' cache: 'npm' + cache-dependency-path: 'frontend/web/package-lock.json' - name: Install dependencies run: npm ci - - name: Run code formatting with Prettier - run: npx prettier --write . - - - name: Run ESLint with auto-fix - run: npx eslint . --fix + - name: Prettier (check only) + run: npx prettier --check . - - name: Verify linting (strict mode) + - name: ESLint (no warnings) run: npx eslint . --max-warnings=0 - - name: Verify formatting - run: npx prettier --check . - build-and-test: runs-on: ubuntu-latest needs: code-quality steps: - - name: Checkout code - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - - name: Setup Node.js - uses: actions/setup-node@v4 + - uses: actions/setup-node@v4 with: - node-version: '18' + node-version: '20' cache: 'npm' + cache-dependency-path: 'frontend/web/package-lock.json' + + - name: Restore Next.js cache + uses: actions/cache@v4 + with: + path: .next/cache + key: ${{ runner.os }}-next-${{ hashFiles('frontend/web/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-next- - name: Install dependencies run: npm ci - name: Run tests - run: npm run test --if-present + run: npm test --if-present - - name: Build project + - name: Build + env: + NODE_ENV: production + # Définis-la dans Settings → Secrets and variables → Actions → Variables + NEXT_PUBLIC_API_URL: ${{ vars.NEXT_PUBLIC_API_URL }} run: npm run build - name: Upload build artifacts - uses: actions/upload-artifact@v3 - if: success() + uses: actions/upload-artifact@v4 with: - name: build-output + name: web-build path: | - .next/ - public/ + .next + public package.json + next.config.* From ddc7815f02a0e7a968937985554f5e4352861218 Mon Sep 17 00:00:00 2001 From: marlenegohi Date: Tue, 11 Nov 2025 12:43:05 +0100 Subject: [PATCH 46/68] Resume API integration in progress --- .../web/src/app/dashboard/upload-success/page.tsx | 14 +++++++++++--- frontend/web/src/lib/api/subject.ts | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/frontend/web/src/app/dashboard/upload-success/page.tsx b/frontend/web/src/app/dashboard/upload-success/page.tsx index f39d3f4..fc1394b 100644 --- a/frontend/web/src/app/dashboard/upload-success/page.tsx +++ b/frontend/web/src/app/dashboard/upload-success/page.tsx @@ -51,15 +51,24 @@ function UploadSuccess() { if (!hasBeenCreated) { (async () => { try { - const res = await createSubject({ userId: userId, title: name || "Document sans titre", extractText: text, }); + console.log("Sujet créé :", res); + + const subjectId = res?.subject?.id; + if (subjectId) { + localStorage.setItem("lastSubjectId", subjectId); + sessionStorage.setItem(`subjectId:${key}`, subjectId); + console.log("Subject ID sauvegardé :", subjectId); + } else { + console.warn("Aucun ID trouvé dans la réponse :", res); + } + sessionStorage.setItem(`subjectCreated:${key}`, "true"); - sessionStorage.setItem(`subjectId:${key}`, res.id || ""); // si ton API renvoie un id } catch (err: unknown) { if (err instanceof Error) { console.error("Erreur lors de la création du subject :", err.message); @@ -67,7 +76,6 @@ function UploadSuccess() { console.error("Erreur lors de la création du subject :", String(err)); } } - })(); } } diff --git a/frontend/web/src/lib/api/subject.ts b/frontend/web/src/lib/api/subject.ts index 5e134e6..1aaadd0 100644 --- a/frontend/web/src/lib/api/subject.ts +++ b/frontend/web/src/lib/api/subject.ts @@ -22,6 +22,7 @@ export async function createSubject(data: SubjectData) { }, body: JSON.stringify(data), }); + console.log("ceci est reponse",response) if (!response.ok) { throw new Error(`API Error: ${response.status}`); From fb2261235c5d36c26aefec8128806fb87146e83b Mon Sep 17 00:00:00 2001 From: marlenegohi Date: Tue, 11 Nov 2025 14:08:10 +0100 Subject: [PATCH 47/68] Resume API integration finish --- .../web/src/app/dashboard/resume/page.tsx | 66 +++++++++++------ .../src/app/dashboard/upload-success/page.tsx | 4 +- .../src/component/ui/resume-pdf-viewer.tsx | 71 ++++++------------- frontend/web/src/lib/api/subject.ts | 3 +- frontend/web/src/lib/api/summary.ts | 41 +++++++---- 5 files changed, 100 insertions(+), 85 deletions(-) diff --git a/frontend/web/src/app/dashboard/resume/page.tsx b/frontend/web/src/app/dashboard/resume/page.tsx index d8407a0..5ef285f 100644 --- a/frontend/web/src/app/dashboard/resume/page.tsx +++ b/frontend/web/src/app/dashboard/resume/page.tsx @@ -1,27 +1,53 @@ 'use client'; import { withAuth } from "@/lib/api/withAuth.client"; -import { ResumePDFViewer } from "../../../component/ui/resume-pdf-viewer"; +import { ResumePDFViewer } from "@/component/ui/resume-pdf-viewer"; import { ArrowLeft } from "lucide-react"; +import { useState, useEffect } from "react"; +import { summarizeExtractText } from "@/lib/api/summary"; +import { useRouter } from "next/navigation"; function App() { + const [summary, setSummary] = useState(null); + const [loading, setLoading] = useState(true); + const router = useRouter(); - return ( -

- {/* Back arrow and title */} -
- -

- Votre Résumé -

-
- - {/* PDF viewer section */} -
- -
-
- ); + useEffect(() => { + const fetchSummary = async () => { + setLoading(true); + const res = await summarizeExtractText(); + if (res?.resume?.texteResume) setSummary(res.resume.texteResume); + else setSummary("Aucun résumé disponible."); + setLoading(false); + }; + + fetchSummary(); + }, []); + + return ( +
+ {/* Back arrow and title */} +
+ +

+ Votre Résumé +

+
+ + {/* PDF viewer section */} +
+ {loading ? ( +

Chargement du résumé…

+ ) : ( + + )} +
+
+ ); } -export default withAuth(App); \ No newline at end of file + +export default withAuth(App); diff --git a/frontend/web/src/app/dashboard/upload-success/page.tsx b/frontend/web/src/app/dashboard/upload-success/page.tsx index fc1394b..dc52509 100644 --- a/frontend/web/src/app/dashboard/upload-success/page.tsx +++ b/frontend/web/src/app/dashboard/upload-success/page.tsx @@ -61,14 +61,12 @@ function UploadSuccess() { const subjectId = res?.subject?.id; if (subjectId) { - localStorage.setItem("lastSubjectId", subjectId); - sessionStorage.setItem(`subjectId:${key}`, subjectId); + localStorage.setItem("SubjectId", subjectId); console.log("Subject ID sauvegardé :", subjectId); } else { console.warn("Aucun ID trouvé dans la réponse :", res); } - sessionStorage.setItem(`subjectCreated:${key}`, "true"); } catch (err: unknown) { if (err instanceof Error) { console.error("Erreur lors de la création du subject :", err.message); diff --git a/frontend/web/src/component/ui/resume-pdf-viewer.tsx b/frontend/web/src/component/ui/resume-pdf-viewer.tsx index a9d85ea..abcbd8a 100644 --- a/frontend/web/src/component/ui/resume-pdf-viewer.tsx +++ b/frontend/web/src/component/ui/resume-pdf-viewer.tsx @@ -1,54 +1,27 @@ import { Card } from "./card"; -export function ResumePDFViewer() { +interface ResumePDFViewerProps { + summary: string; +} + +export function ResumePDFViewer({ summary }: ResumePDFViewerProps) { return ( -
- -
-

Adobe Acrobat PDF Files

- -
-

- Adobe® Portable Document Format (PDF) is a universal file format that preserves all - of the fonts, formatting, colours and graphics of any source document, regardless of - the application and platform used to create it. -

- -

- Adobe PDF is an ideal format for electronic document distribution as it overcomes the - problems commonly encountered with electronic file sharing. -

- -
    -
  • - Anyone, anywhere can open a PDF file. All you need is the free Adobe Acrobat - Reader. Recipients of other file formats sometimes can't open files because they - don't have the applications used to create the documents. -
  • - -
  • - PDF files always print correctly on any printing device. -
  • - -
  • - PDF files always display exactly as created, regardless of fonts, software, and - operating systems. Fonts, and graphics are not lost due to platform, software, and - version incompatibilities. -
  • - -
  • - The free Acrobat Reader is easy to download and can be freely distributed by - anyone. -
  • - -
  • - Compact PDF files are smaller than their source files and download a - page at a time for fast display on the Web. -
  • -
+
+ +
+

Résumé du document

+ +
+ {summary ? ( +

{summary}

+ ) : ( +

+ Aucun résumé disponible pour le moment. +

+ )} +
-
- -
+ +
); -} \ No newline at end of file +} diff --git a/frontend/web/src/lib/api/subject.ts b/frontend/web/src/lib/api/subject.ts index 1aaadd0..4a0474a 100644 --- a/frontend/web/src/lib/api/subject.ts +++ b/frontend/web/src/lib/api/subject.ts @@ -6,6 +6,7 @@ export interface SubjectData { export async function createSubject(data: SubjectData) { // Get the auth token from localStorage + const base = process.env.NEXT_PUBLIC_API_BASE_URL!; const token = localStorage.getItem('auth_token'); if (!token) { throw new Error("No auth token found. Please log in first."); @@ -14,7 +15,7 @@ export async function createSubject(data: SubjectData) { console.log("Token used for request:", token); // Make the API request with Authorization header - const response = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/subjects/create`, { + const response = await fetch(`${base}/api/subjects/create`, { method: "POST", headers: { "Content-Type": "application/json", diff --git a/frontend/web/src/lib/api/summary.ts b/frontend/web/src/lib/api/summary.ts index 8d76e5b..3e27cb9 100644 --- a/frontend/web/src/lib/api/summary.ts +++ b/frontend/web/src/lib/api/summary.ts @@ -1,14 +1,31 @@ -export async function summarizeText(text: string, title?: string) { - const base = process.env.NEXT_PUBLIC_API_BASE!; - const res = await fetch(`${base}/api/summary`, { - method: "POST", - credentials: "include", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ text, title, language: "fr" }), - }); - if (!res.ok) { - const data = await res.json().catch(() => null); - throw new Error(data?.error || "Échec du résumé"); +export async function summarizeExtractText() { + const subjectId = localStorage.getItem("lastSubjectId"); + if (!subjectId) { + console.error("Aucun Subject ID trouvé !"); + return; + } + + const base = process.env.NEXT_PUBLIC_API_BASE_URL!; + try { + const response = await fetch(`${base}/api/resume/create`, { + method: "POST", + headers: { + "Content-Type": "application/json", + "Authorization": `Bearer ${localStorage.getItem("auth_token")}`, + }, + body: JSON.stringify({ subjectId }), + }); + + if (!response.ok) { + throw new Error(`API Error: ${response.status}`); + } + + const summary = await response.json(); + console.log("Résumé :", summary); + return summary; + + } catch (err: unknown) { + if (err instanceof Error) console.error("Erreur résumé :", err.message); + else console.error("Erreur résumé :", String(err)); } - return res.json() as Promise<{ summary: string }>; } From 064ddd378da876455ff732c4f632e61faaaf6ac3 Mon Sep 17 00:00:00 2001 From: fsossa Date: Tue, 11 Nov 2025 14:38:39 +0100 Subject: [PATCH 48/68] change create resume route --- .../com/pdl/studyai_backend/controller/SubjectController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/SubjectController.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/SubjectController.java index a19cc8f..21ae21a 100644 --- a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/SubjectController.java +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/SubjectController.java @@ -96,12 +96,12 @@ public ResponseEntity searchSubjects(@RequestParam String query) { return ResponseEntity.ok(subjectService.searchSubjects(query)); } - @GetMapping("/resume/{subjectId}") + @GetMapping("/{subjectId}/resume") public ResponseEntity getResumesBySubjectId(@PathVariable String subjectId) { try { Resume resume = this.resumeService.getActiveResumeBySubjectId(subjectId); if (resume != null) { - return ResponseEntity.ok(resume); + return ResponseEntity.ok(Map.of("message", "Résumé actif trouvé", "resume", resume)); } else { return ResponseEntity.notFound().build(); } From a226ab9ccc02b0944badbc88d9998c67f633b2d0 Mon Sep 17 00:00:00 2001 From: Hyckael Date: Tue, 11 Nov 2025 16:46:42 +0100 Subject: [PATCH 49/68] Quiz Features not finished --- .../controller/QuizController.java | 133 +++++++++++++++++- .../controller/SubjectController.java | 37 ++++- .../pdl/studyai_backend/dto/QuizRequest.java | 12 ++ .../pdl/studyai_backend/model/Question.java | 32 +++++ .../com/pdl/studyai_backend/model/Quiz.java | 47 +++---- .../pdl/studyai_backend/model/Reponse.java | 45 ++++++ .../studyai_backend/service/QuizService.java | 2 +- 7 files changed, 275 insertions(+), 33 deletions(-) create mode 100644 backend/studyai_backend/src/main/java/com/pdl/studyai_backend/dto/QuizRequest.java create mode 100644 backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Question.java create mode 100644 backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Reponse.java diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/QuizController.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/QuizController.java index 7a42b66..885e433 100644 --- a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/QuizController.java +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/QuizController.java @@ -1,5 +1,136 @@ package com.pdl.studyai_backend.controller; +import java.util.Map; +import java.util.List; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.pdl.studyai_backend.dto.QuizRequest; +import com.pdl.studyai_backend.model.Question; +import com.pdl.studyai_backend.model.Quiz; +import com.pdl.studyai_backend.model.Subject; +import com.pdl.studyai_backend.service.QuizService; +import com.pdl.studyai_backend.service.StudioAiService; +import com.pdl.studyai_backend.service.SubjectService; + +import jakarta.servlet.http.HttpServletRequest; +import io.jsonwebtoken.Claims; + +@RestController +@CrossOrigin(origins="http://localhost:3000") public class QuizController { -} + private final QuizService quizService; + private final SubjectService subjectService; + private final StudioAiService studioAiService; + private final String promptHeader = "Génère un quiz au format JSON avec des questions, le nombre de reponse correcte sera aléatoire\n\n"; + //constructor + public QuizController(QuizService quizService, SubjectService subjectService, StudioAiService studioAiService) { + this.quizService = quizService; + this.subjectService = subjectService; + this.studioAiService = studioAiService; + } + + @PostMapping("quiz/create") + public ResponseEntity createQuiz(HttpServletRequest request, @RequestBody QuizRequest reqQuiz) { + try { + Claims claims = (Claims) request.getAttribute("claims"); + if (claims == null) { + return ResponseEntity.status(401).body("Token manquant ou invalide"); + } + Subject subject = this.subjectService.getSubjectById(reqQuiz.getSubjectId()).orElse(null); + if (subject == null) { + return ResponseEntity.status(404).body("Sujet non trouvé"); + } + String generatedQuiz = this.studioAiService.ask(this.promptHeader + subject.getExtractText()); + ObjectMapper mapper = new ObjectMapper(); + List questions = mapper.readValue(generatedQuiz, new TypeReference>() {}); + Quiz q = new Quiz(reqQuiz.getSubjectId(), questions); + Quiz quiz = this.quizService.create(q); + return ResponseEntity.ok(Map.of("message", "Quiz créé avec succès !", "quiz", quiz)); + } catch (JsonProcessingException e) { + return ResponseEntity.status(500).body("Erreur interne : " + e.getMessage()); + } + } + + @GetMapping("/{id}") + public ResponseEntity getQuiz(@PathVariable String id) { + try { + Quiz quiz = quizService.getQuizById(id); + if (quiz != null) { + return ResponseEntity.ok(quiz); + } else { + return ResponseEntity.notFound().build(); + } + } catch (Exception e) { + return ResponseEntity.status(500).body("Erreur interne : " + e.getMessage()); + } + } + + @GetMapping("/quiz/subject/{subjectId}") + public ResponseEntity getQuizBySubjectId(@PathVariable String subjectId) { + try { + List quizzes = quizService.getQuizBySubjectId(subjectId); + if (quizzes != null && !quizzes.isEmpty()) { + return ResponseEntity.ok(quizzes); + } else { + return ResponseEntity.status(404).body("Aucun quiz trouvé pour ce sujet"); + } + } catch (Exception e) { + return ResponseEntity.status(500).body("Erreur interne : " + e.getMessage()); + } + } + + @GetMapping("quiz/subject/{subjectId}/last/{n}") + public ResponseEntity getLastQuizBySubjectId(@PathVariable String subjectId, @PathVariable int n) { + try { + List quizzes = quizService.getLastQuizBySubjectId(subjectId, n); + if (quizzes != null && !quizzes.isEmpty()) { + return ResponseEntity.ok(quizzes); + } else { + return ResponseEntity.status(404).body("Aucun quiz trouvé pour ce sujet"); + } + } catch (Exception e) { + return ResponseEntity.status(500).body("Erreur interne : " + e.getMessage()); + } + } + + @GetMapping("quiz/subject/{subjectId}/active") + public ResponseEntity getActiveQuizBySubjectId(@PathVariable String subjectId) { + try { + Quiz quiz = quizService.getActiveQuizBySubjectId(subjectId); + if (quiz != null) { + return ResponseEntity.ok(quiz); + } else { + return ResponseEntity.status(404).body("Aucun quiz actif trouvé pour ce sujet"); + } + } catch (Exception e) { + return ResponseEntity.status(500).body("Erreur interne : " + e.getMessage()); + } + } + + @DeleteMapping("/{id}") + public ResponseEntity deleteQuiz(@PathVariable String id) { + try { + Quiz quiz = quizService.getQuizById(id); + if (quiz != null) { + quizService.deleteQuiz(id); + return ResponseEntity.ok(Map.of("message", "Quiz supprimé avec succès !")); + } else { + return ResponseEntity.status(404).body("Quiz non trouvé"); + } + } catch (Exception e) { + return ResponseEntity.status(500).body("Erreur interne : " + e.getMessage()); + } + } +} \ No newline at end of file diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/SubjectController.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/SubjectController.java index a19cc8f..7075a8e 100644 --- a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/SubjectController.java +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/SubjectController.java @@ -1,18 +1,29 @@ package com.pdl.studyai_backend.controller; -import jakarta.validation.Valid; - import java.util.Map; import java.util.Optional; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; import com.pdl.studyai_backend.dto.SubjectRequest; +import com.pdl.studyai_backend.model.Quiz; import com.pdl.studyai_backend.model.Resume; import com.pdl.studyai_backend.model.Subject; -import com.pdl.studyai_backend.service.SubjectService; import com.pdl.studyai_backend.service.ResumeService; +import com.pdl.studyai_backend.service.QuizService; +import com.pdl.studyai_backend.service.SubjectService; + +import jakarta.validation.Valid; @RestController @CrossOrigin(origins="*") @@ -21,10 +32,12 @@ public class SubjectController { private final SubjectService subjectService; private final ResumeService resumeService; + private final QuizService quizService; - public SubjectController(SubjectService subjectService, ResumeService resumeService) { + public SubjectController(SubjectService subjectService, ResumeService resumeService, QuizService quizService) { this.subjectService = subjectService; this.resumeService = resumeService; + this.quizService = quizService; } @PostMapping("/create") @@ -109,5 +122,19 @@ public ResponseEntity getResumesBySubjectId(@PathVariable String subjectId) { return ResponseEntity.status(500).body("Erreur interne : " + e.getMessage()); } } + + @GetMapping("/quiz/{subjectId}") + public ResponseEntity getQuizzesBySubjectId(@PathVariable String subjectId) { + try { + Quiz quiz = this.quizService.getActiveQuizBySubjectId(subjectId); + if (quiz != null) { + return ResponseEntity.ok(quiz); + } else { + return ResponseEntity.notFound().build(); + } + } catch (Exception e) { + return ResponseEntity.status(500).body("Erreur interne : " + e.getMessage()); + } + } } diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/dto/QuizRequest.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/dto/QuizRequest.java new file mode 100644 index 0000000..82d86dd --- /dev/null +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/dto/QuizRequest.java @@ -0,0 +1,12 @@ +package com.pdl.studyai_backend.dto; + +import jakarta.validation.constraints.NotBlank; + +public class QuizRequest { + @NotBlank + private String subjectId; + + public String getSubjectId() { + return subjectId; + } +} diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Question.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Question.java new file mode 100644 index 0000000..7f8f48a --- /dev/null +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Question.java @@ -0,0 +1,32 @@ +package com.pdl.studyai_backend.model; + +import org.springframework.data.annotation.Id; +import java.util.List; + + +public class Question { + @Id + private String id; + private String content; + private List reponses; + public Question() {} + public Question(String content, List reponses) { + this.content = content; + this.reponses = reponses; + } + public String getId() { + return id; + } + public String getContent() { + return content; + } + public void setContent(String content) { + this.content = content; + } + public List getReponses() { + return reponses; + } + public void setReponses(List reponses) { + this.reponses = reponses; + } +} \ No newline at end of file diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Quiz.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Quiz.java index a930d2b..cab64db 100644 --- a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Quiz.java +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Quiz.java @@ -10,12 +10,17 @@ public class Quiz { @Id private String id; private String subjectId; - private List questions; - private List answers; + private List questions; private Instant createdAt = Instant.now(); public Quiz() {} + //constructors + public Quiz(String subjectId, List questions) { + this.subjectId = subjectId; + this.questions = questions; + } + public String getId() { return id; } @@ -28,40 +33,30 @@ public void setSubjectId(String subjectId) { this.subjectId = subjectId; } - public List getQuestions() { + public List getQuestions() { return questions; } - public void setQuestions(List questions) { + public void setQuestions(List questions) { this.questions = questions; } - public List getAnswers() { - return answers; - } - - public void setAnswers(List answers) { - this.answers = answers; - } - - public Quiz(String subjectId, List questions, List answers) { + public Quiz(String subjectId) { this.subjectId = subjectId; - this.questions = questions; - this.answers = answers; } - public void addQuestion(String question, String answer) { - this.questions.add(question); - this.answers.add(answer); - } + // public void addQuestion(String question, String answer) { + // this.questions.add(question); + // this.answers.add(answer); + // } - public void removeQuestion(String question) { - int index = this.questions.indexOf(question); - if (index != -1) { - this.questions.remove(index); - this.answers.remove(index); - } - } + // public void removeQuestion(String question) { + // int index = this.questions.indexOf(question); + // if (index != -1) { + // this.questions.remove(index); + // this.answers.remove(index); + // } + // } public Instant getCreatedAt() { return createdAt; diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Reponse.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Reponse.java new file mode 100644 index 0000000..7d2d94c --- /dev/null +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Reponse.java @@ -0,0 +1,45 @@ +package com.pdl.studyai_backend.model; + +import org.springframework.data.annotation.Id; + +public class Reponse { + @Id + private String id; + private String content; + private boolean isCorrect; + private boolean isSelected; + + public Reponse() {} + public Reponse(String content, boolean isCorrect) { + this.content = content; + this.isCorrect = isCorrect; + this.isSelected = false; + } + //getters + public String getId() { + return id; + } + public String getContent() { + return content; + } + public boolean isSelected() { + + return isSelected; + } + + public boolean isCorrect() { + return isCorrect; + } + + //setters + public void setContent(String content) { + this.content = content; + } + + public void setCorrect(boolean isCorrect) { + this.isCorrect = isCorrect; + } + public void setSelected(boolean isSelected) { + this.isSelected = isSelected; + } +} \ No newline at end of file diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/QuizService.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/QuizService.java index 4d44a12..dfd3901 100644 --- a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/QuizService.java +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/QuizService.java @@ -15,7 +15,7 @@ public class QuizService { public Quiz create(Quiz quiz) { return quizRepository.save(quiz); } - public Quiz findById(String id) { + public Quiz getQuizById(String id) { return quizRepository.findById(id).orElse(null); } public List findAll() { From 5397e0c0b71b6ac9d9764e052021d9caa86946e9 Mon Sep 17 00:00:00 2001 From: Bio Paul Kobena Date: Tue, 11 Nov 2025 23:48:12 +0100 Subject: [PATCH 50/68] fix: remove of chat part --- .../controller/ChatController.java | 27 ------------------- .../controller/ResumeController.java | 2 +- .../studyai_backend/service/ChatService.java | 5 ---- 3 files changed, 1 insertion(+), 33 deletions(-) delete mode 100644 backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ChatController.java delete mode 100644 backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/ChatService.java diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ChatController.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ChatController.java deleted file mode 100644 index f39d494..0000000 --- a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ChatController.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.pdl.studyai_backend.controller; - -import org.springframework.ai.chat.client.ChatClient; -import org.springframework.ai.chat.model.ChatResponse; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - - -@RestController -@CrossOrigin(origins = "*", allowedHeaders = "*") -public class ChatController { - private final ChatClient chatClient; - - public ChatController(ChatClient.Builder builder) { - this.chatClient = builder.build(); - } - - @GetMapping("/chat") - public ChatResponse chat() { - return chatClient.prompt() - .user("Explique moi ce que ce document veut me faire comprendre") - .call() - .chatResponse(); - } - -} diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ResumeController.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ResumeController.java index c5e853e..0da713b 100644 --- a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ResumeController.java +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ResumeController.java @@ -16,7 +16,7 @@ import com.pdl.studyai_backend.dto.ResumeRequest; import com.pdl.studyai_backend.model.Resume; import com.pdl.studyai_backend.model.Subject; -import com.pdl.studyai_backend.service.ResumeService; +import com.pdl.studyai_backend .service.ResumeService; import com.pdl.studyai_backend.service.SubjectService; import com.pdl.studyai_backend.service.StudioAiService; diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/ChatService.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/ChatService.java deleted file mode 100644 index dac2e37..0000000 --- a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/ChatService.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.pdl.studyai_backend.service; - -public class ChatService { - -} From 3e980e70019542f47cd24e932b5cc5ebca37c181 Mon Sep 17 00:00:00 2001 From: Bio Paul Kobena Date: Wed, 12 Nov 2025 01:16:45 +0100 Subject: [PATCH 51/68] feat: chat ok with subject to resolve --- .../controller/ChatController.java | 79 +++++++++++++++++ .../studyai_backend/model/ChatMessage.java | 86 ++++++++++++++++++ .../studyai_backend/model/ChatSession.java | 74 ++++++++++++++++ .../repository/ChatMessageRepository.java | 11 +++ .../repository/ChatSessionRepository.java | 10 +++ .../studyai_backend/service/ChatService.java | 87 +++++++++++++++++++ 6 files changed, 347 insertions(+) create mode 100644 backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ChatController.java create mode 100644 backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/ChatMessage.java create mode 100644 backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/ChatSession.java create mode 100644 backend/studyai_backend/src/main/java/com/pdl/studyai_backend/repository/ChatMessageRepository.java create mode 100644 backend/studyai_backend/src/main/java/com/pdl/studyai_backend/repository/ChatSessionRepository.java create mode 100644 backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/ChatService.java diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ChatController.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ChatController.java new file mode 100644 index 0000000..28264cc --- /dev/null +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/ChatController.java @@ -0,0 +1,79 @@ +package com.pdl.studyai_backend.controller; + +// import java.util.List; + +// import org.springframework.web.bind.annotation.GetMapping; +// import org.springframework.web.bind.annotation.PostMapping; +// import org.springframework.web.bind.annotation.RequestBody; +// import org.springframework.web.bind.annotation.RequestMapping; +// import org.springframework.web.bind.annotation.RequestParam; +// import org.springframework.web.bind.annotation.RestController; + +// import com.pdl.studyai_backend.model.ChatMessage; +// import com.pdl.studyai_backend.service.ChatService; + +// import reactor.core.publisher.Mono; + +// @RestController +// @RequestMapping("/chat") +// public class ChatController { + +// private final ChatService chatService; + +// public ChatController(ChatService chatService) { +// this.chatService = chatService; +// } + +// @GetMapping("/conversation") +// public List getConversation(@RequestParam String userId, @RequestParam String subjectId) { +// return chatService.getConversation(userId, subjectId); +// } + +// @PostMapping("/message") +// public Mono sendMessage(@RequestParam String userId, +// @RequestParam String subjectId, +// @RequestBody String message) { +// return chatService.sendMessage(userId, subjectId, message); +// } +// } +import java.util.List; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.pdl.studyai_backend.model.ChatMessage; +import com.pdl.studyai_backend.service.ChatService; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import reactor.core.publisher.Mono; + +@RestController +@RequestMapping("/chat") +@Tag(name = "Chat API", description = "Endpoints pour le chat Gemini") +public class ChatController { + + private final ChatService chatService; + + public ChatController(ChatService chatService) { + this.chatService = chatService; + } + + @Operation(summary = "Récupère la conversation pour un utilisateur et document donnés") + @GetMapping("/conversation") + public List getConversation(@RequestParam String userId, @RequestParam String subjectId) { + return chatService.getConversation(userId, subjectId); + } + + @Operation(summary = "Envoie un message et reçoit la réponse du modèle") + @PostMapping("/message") + public Mono sendMessage(@RequestParam String userId, + @RequestParam String subjectId, + @RequestBody String message) { + return chatService.sendMessage(userId, subjectId, message); + } +} diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/ChatMessage.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/ChatMessage.java new file mode 100644 index 0000000..0c14896 --- /dev/null +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/ChatMessage.java @@ -0,0 +1,86 @@ +package com.pdl.studyai_backend.model; + +import java.time.Instant; + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +@Document(collection = "chat_messages") +public class ChatMessage { + + @Id + private String id; + private String chatSessionId; + private String role; + private String content; + private Instant timestamp = Instant.now(); + + public ChatMessage() { + } + + public ChatMessage(String chatSessionId, String role, String content, Instant timestamp) { + this.chatSessionId = chatSessionId; + this.role = role; + this.content = content; + this.timestamp = timestamp; + } + + public ChatMessage(String id, String chatSessionId, String role, String content, Instant timestamp) { + this.id = id; + this.chatSessionId = chatSessionId; + this.role = role; + this.content = content; + this.timestamp = timestamp == null ? Instant.now() : timestamp; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getChatSessionId() { + return chatSessionId; + } + + public void setChatSessionId(String chatSessionId) { + this.chatSessionId = chatSessionId; + } + + public String getRole() { + return role; + } + + public void setRole(String role) { + this.role = role; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Instant getTimestamp() { + return timestamp; + } + + public void setTimestamp(Instant timestamp) { + this.timestamp = timestamp; + } + + @Override + public String toString() { + return "ChatMessage{" + + "id='" + id + '\'' + + ", chatSessionId='" + chatSessionId + '\'' + + ", role='" + role + '\'' + + ", content='" + content + '\'' + + ", timestamp=" + timestamp + + '}'; + } +} diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/ChatSession.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/ChatSession.java new file mode 100644 index 0000000..2d40be0 --- /dev/null +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/ChatSession.java @@ -0,0 +1,74 @@ +package com.pdl.studyai_backend.model; + +import java.time.Instant; + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +@Document(collection = "chat_sessions") +public class ChatSession { + + @Id + private String id; + private String userId; + private String subjectId; + private Instant createdAt = Instant.now(); + + public ChatSession() { + } + + public ChatSession(String id, String userId, String subjectId, Instant createdAt) { + this.id = id; + this.userId = userId; + this.subjectId = subjectId; + this.createdAt = createdAt == null ? Instant.now() : createdAt; + } + + public ChatSession(String userId, String subjectId, Instant createdAt) { + this.userId = userId; + this.subjectId = subjectId; + this.createdAt = createdAt; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getSubjectId() { + return subjectId; + } + + public void setSubjectId(String subjectId) { + this.subjectId = subjectId; + } + + public Instant getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Instant createdAt) { + this.createdAt = createdAt; + } + + @Override + public String toString() { + return "ChatSession{" + + "id='" + id + '\'' + + ", userId='" + userId + '\'' + + ", subjectId='" + subjectId + '\'' + + ", createdAt=" + createdAt + + '}'; + } +} diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/repository/ChatMessageRepository.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/repository/ChatMessageRepository.java new file mode 100644 index 0000000..dca6bf5 --- /dev/null +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/repository/ChatMessageRepository.java @@ -0,0 +1,11 @@ +package com.pdl.studyai_backend.repository; + +import java.util.List; + +import org.springframework.data.mongodb.repository.MongoRepository; + +import com.pdl.studyai_backend.model.ChatMessage; + +public interface ChatMessageRepository extends MongoRepository { + List findByChatSessionIdOrderByTimestampAsc(String chatSessionId); +} \ No newline at end of file diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/repository/ChatSessionRepository.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/repository/ChatSessionRepository.java new file mode 100644 index 0000000..58a73fd --- /dev/null +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/repository/ChatSessionRepository.java @@ -0,0 +1,10 @@ +package com.pdl.studyai_backend.repository; + +import org.springframework.data.mongodb.repository.MongoRepository; + +import com.pdl.studyai_backend.model.ChatSession; + +public interface ChatSessionRepository extends MongoRepository { + ChatSession findByUserIdAndSubjectId(String userId, String subjectId); +} + diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/ChatService.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/ChatService.java new file mode 100644 index 0000000..9838653 --- /dev/null +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/service/ChatService.java @@ -0,0 +1,87 @@ +package com.pdl.studyai_backend.service; + +import java.time.Instant; +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Service; + +import com.google.genai.Client; +import com.google.genai.types.GenerateContentResponse; +import com.pdl.studyai_backend.model.ChatMessage; +import com.pdl.studyai_backend.model.ChatSession; +import com.pdl.studyai_backend.repository.ChatMessageRepository; +import com.pdl.studyai_backend.repository.ChatSessionRepository; + +import reactor.core.publisher.Mono; + +@Service +public class ChatService { + + private final ChatSessionRepository chatSessionRepo; + private final ChatMessageRepository chatMessageRepo; + + public ChatService(ChatSessionRepository chatSessionRepo, ChatMessageRepository chatMessageRepo) { + this.chatSessionRepo = chatSessionRepo; + this.chatMessageRepo = chatMessageRepo; + } + + public List getConversation(String userId, String subjectId) { + ChatSession session = chatSessionRepo.findByUserIdAndSubjectId(userId, subjectId); + if (session == null) { + session = new ChatSession(); + session.setUserId(userId); + session.setSubjectId(subjectId); + session.setCreatedAt(Instant.now()); + chatSessionRepo.save(session); + } + return chatMessageRepo.findByChatSessionIdOrderByTimestampAsc(session.getId()); + } + + public Mono sendMessage(String userId, String subjectId, String userMessage) { + ChatSession sessionInit = chatSessionRepo.findByUserIdAndSubjectId(userId, subjectId); + if (sessionInit == null) { + sessionInit = new ChatSession(); + sessionInit.setUserId(userId); + sessionInit.setSubjectId(subjectId); + sessionInit.setCreatedAt(Instant.now()); + chatSessionRepo.save(sessionInit); + } + + final ChatSession session = sessionInit; + + ChatMessage msgUser = new ChatMessage(); + msgUser.setChatSessionId(session.getId()); + msgUser.setRole("user"); + msgUser.setContent(userMessage); + msgUser.setTimestamp(Instant.now()); + chatMessageRepo.save(msgUser); + + List history = chatMessageRepo.findByChatSessionIdOrderByTimestampAsc(session.getId()); + + final String prompt = history.stream() + .map(m -> (m.getRole().equals("user") ? "User: " : "Assistant: ") + m.getContent()) + .collect(Collectors.joining("\n")) + "\nUser: " + userMessage + "\nAssistant:"; + + return Mono.fromCallable(() -> { + try (Client client = new Client()) { + GenerateContentResponse response = client.models.generateContent( + "gemini-2.5-flash", + prompt, + null); + String assistantText = response.text(); + + // Sauvegarde du message assistant + ChatMessage msgAssistant = new ChatMessage(); + msgAssistant.setChatSessionId(session.getId()); + msgAssistant.setRole("assistant"); + msgAssistant.setContent(assistantText); + msgAssistant.setTimestamp(Instant.now()); + chatMessageRepo.save(msgAssistant); + + return assistantText; + } + }); + } + +} From 6d8b52383f34516aea17aa0bf4c7211bfa5b0920 Mon Sep 17 00:00:00 2001 From: Jojo-225 Date: Wed, 12 Nov 2025 12:02:04 +0100 Subject: [PATCH 52/68] Configuration de CI/CD test --- frontend/web/.github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/web/.github/workflows/ci.yml b/frontend/web/.github/workflows/ci.yml index 1beb04b..65e2796 100644 --- a/frontend/web/.github/workflows/ci.yml +++ b/frontend/web/.github/workflows/ci.yml @@ -7,7 +7,7 @@ on: branches: [main, master, dev, frontend, dev-reset] paths: - 'frontend/web/**' - - '.github/workflows/frontend-ci.yml' + - '.github/workflows/ci.yml' pull_request: branches: [main, master, dev, dev-reset] paths: @@ -77,7 +77,7 @@ jobs: env: NODE_ENV: production # Définis-la dans Settings → Secrets and variables → Actions → Variables - NEXT_PUBLIC_API_URL: ${{ vars.NEXT_PUBLIC_API_URL }} + NEXT_PUBLIC_API_URL: ${{ vars.NEXT_PUBLIC_API_BASE_URL }} run: npm run build - name: Upload build artifacts From b493015baca703c87e2d1922ff49f79f711eda3d Mon Sep 17 00:00:00 2001 From: Jojo-225 Date: Wed, 12 Nov 2025 12:38:06 +0100 Subject: [PATCH 53/68] =?UTF-8?q?Ajout=20du=20dossier=20workflows=20=C3=A0?= =?UTF-8?q?=20la=20racine?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {frontend/web/.github => .github}/workflows/ci.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {frontend/web/.github => .github}/workflows/ci.yml (100%) diff --git a/frontend/web/.github/workflows/ci.yml b/.github/workflows/ci.yml similarity index 100% rename from frontend/web/.github/workflows/ci.yml rename to .github/workflows/ci.yml From 0a96e2d8b745b703b9fccf1e4a63bf439aba10fd Mon Sep 17 00:00:00 2001 From: Hyckael Date: Wed, 12 Nov 2025 13:59:46 +0100 Subject: [PATCH 54/68] feat: Reponse model, question and quizz complete, quizzController in progess --- backend/studyai_backend/pom.xml | 2 +- backend/studyai_backend/sample.md | 9 ++++ .../controller/QuizController.java | 45 +++++++++++++++---- .../pdl/studyai_backend/model/Question.java | 12 ++--- .../com/pdl/studyai_backend/model/Quiz.java | 2 +- .../pdl/studyai_backend/model/Reponse.java | 17 ++++--- 6 files changed, 64 insertions(+), 23 deletions(-) diff --git a/backend/studyai_backend/pom.xml b/backend/studyai_backend/pom.xml index 5cd3b8b..cd24882 100644 --- a/backend/studyai_backend/pom.xml +++ b/backend/studyai_backend/pom.xml @@ -28,7 +28,7 @@ - 17 + 21 1.0.3 diff --git a/backend/studyai_backend/sample.md b/backend/studyai_backend/sample.md index cc4f1bc..f06e80d 100644 --- a/backend/studyai_backend/sample.md +++ b/backend/studyai_backend/sample.md @@ -15,4 +15,13 @@ "answer": "string" } ] + } + + { + "questions": [ + { + "content": "string", + "reponses": [{"content", "isCorrect", "isSelected (à false par defaut)"}, {"content", "isCorrect", "isSelected (à false par defaut)"}, {"content", "isCorrect", "isSelected (à false par defaut)"}, {"content", "isCorrect", "isSelected (à false par defaut)"}], + } + ] } \ No newline at end of file diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/QuizController.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/QuizController.java index 885e433..fcc45e8 100644 --- a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/QuizController.java +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/QuizController.java @@ -1,7 +1,8 @@ package com.pdl.studyai_backend.controller; -import java.util.Map; +import java.util.Arrays; import java.util.List; +import java.util.Map; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; @@ -13,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController; import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.pdl.studyai_backend.dto.QuizRequest; import com.pdl.studyai_backend.model.Question; @@ -23,18 +24,27 @@ import com.pdl.studyai_backend.service.StudioAiService; import com.pdl.studyai_backend.service.SubjectService; -import jakarta.servlet.http.HttpServletRequest; import io.jsonwebtoken.Claims; +import jakarta.servlet.http.HttpServletRequest; @RestController -@CrossOrigin(origins="http://localhost:3000") +@CrossOrigin(origins = "http://localhost:3000") public class QuizController { - + private final QuizService quizService; private final SubjectService subjectService; private final StudioAiService studioAiService; + private final String promptSample = "{\r\n" + // + " \"questions\": [\r\n" + // + " {\r\n" + // + " \"content\": \"string\",\r\n" + // + " \"reponses\": [{\"content\", \"isCorrect\", \"isSelected (à false par defaut)\"}, {\"content\", \"isCorrect\", \"isSelected (à false par defaut)\"}, {\"content\", \"isCorrect\", \"isSelected (à false par defaut)\"}, {\"content\", \"isCorrect\", \"isSelected (à false par defaut)\"}],\r\n" + // + " }\r\n" + // + " ]\r\n" + // + " }"; private final String promptHeader = "Génère un quiz au format JSON avec des questions, le nombre de reponse correcte sera aléatoire\n\n"; - //constructor + + // constructor public QuizController(QuizService quizService, SubjectService subjectService, StudioAiService studioAiService) { this.quizService = quizService; this.subjectService = subjectService; @@ -52,9 +62,16 @@ public ResponseEntity createQuiz(HttpServletRequest request, @RequestBody Qui if (subject == null) { return ResponseEntity.status(404).body("Sujet non trouvé"); } - String generatedQuiz = this.studioAiService.ask(this.promptHeader + subject.getExtractText()); + String generatedQuiz = this.studioAiService + .ask(this.promptHeader + subject.getExtractText() + " sous ce format " + this.promptSample); + System.out.println("Generated Quiz: " + generatedQuiz); + + String jsonOnly = extractJson(generatedQuiz); ObjectMapper mapper = new ObjectMapper(); - List questions = mapper.readValue(generatedQuiz, new TypeReference>() {}); + + JsonNode node = mapper.readTree(jsonOnly); + List questions = Arrays.asList(mapper.treeToValue(node.get("questions"), Question[].class)); + Quiz q = new Quiz(reqQuiz.getSubjectId(), questions); Quiz quiz = this.quizService.create(q); return ResponseEntity.ok(Map.of("message", "Quiz créé avec succès !", "quiz", quiz)); @@ -77,7 +94,7 @@ public ResponseEntity getQuiz(@PathVariable String id) { } } - @GetMapping("/quiz/subject/{subjectId}") + @GetMapping("/quiz/subject/{subjectId}") public ResponseEntity getQuizBySubjectId(@PathVariable String subjectId) { try { List quizzes = quizService.getQuizBySubjectId(subjectId); @@ -133,4 +150,14 @@ public ResponseEntity deleteQuiz(@PathVariable String id) { return ResponseEntity.status(500).body("Erreur interne : " + e.getMessage()); } } + + //Fonction utilitaire pour extraire le Json de la reponse de l'API + private String extractJson(String text) { + int start = text.indexOf("{"); + int end = text.lastIndexOf("}"); + if (start != -1 && end != -1 && end > start) { + return text.substring(start, end + 1).trim(); + } + return text.trim(); // si jamais il n'y a pas de balises +} } \ No newline at end of file diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Question.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Question.java index 7f8f48a..2dc55da 100644 --- a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Question.java +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Question.java @@ -1,12 +1,12 @@ package com.pdl.studyai_backend.model; -import org.springframework.data.annotation.Id; +// import org.springframework.data.annotation.Id; import java.util.List; public class Question { - @Id - private String id; + // @Id + // private String id; private String content; private List reponses; public Question() {} @@ -14,9 +14,9 @@ public Question(String content, List reponses) { this.content = content; this.reponses = reponses; } - public String getId() { - return id; - } + // public String getId() { + // return id; + // } public String getContent() { return content; } diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Quiz.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Quiz.java index cab64db..1b204cb 100644 --- a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Quiz.java +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Quiz.java @@ -6,7 +6,7 @@ import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "quizzes") -public class Quiz { +public class Quiz { @Id private String id; private String subjectId; diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Reponse.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Reponse.java index 7d2d94c..37e61e3 100644 --- a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Reponse.java +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/model/Reponse.java @@ -1,12 +1,17 @@ package com.pdl.studyai_backend.model; -import org.springframework.data.annotation.Id; +import com.fasterxml.jackson.annotation.JsonAlias; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +// import org.springframework.data.annotation.Id; +@JsonIgnoreProperties(ignoreUnknown = true) public class Reponse { - @Id - private String id; + // @Id + // private String id; private String content; + @JsonAlias({ "isCorrect", "iscorrect", "correct" }) private boolean isCorrect; + @JsonAlias({ "isSelected", "isselected", "selected" }) private boolean isSelected; public Reponse() {} @@ -16,9 +21,9 @@ public Reponse(String content, boolean isCorrect) { this.isSelected = false; } //getters - public String getId() { - return id; - } + // public String getId() { + // return id; + // } public String getContent() { return content; } From 7a7fe7c4c4678eebb0c1f67604daa2178a44d78a Mon Sep 17 00:00:00 2001 From: fsossa Date: Wed, 12 Nov 2025 14:44:42 +0100 Subject: [PATCH 55/68] change route /subjets/resume/id to subjects/id/resume --- .../controller/SubjectController.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/SubjectController.java b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/SubjectController.java index 3d745a8..cdbf290 100644 --- a/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/SubjectController.java +++ b/backend/studyai_backend/src/main/java/com/pdl/studyai_backend/controller/SubjectController.java @@ -123,7 +123,7 @@ public ResponseEntity getResumesBySubjectId(@PathVariable String subjectId) { } } - @GetMapping("/quiz/{subjectId}") + @GetMapping("/{subjectId}/quiz") public ResponseEntity getQuizzesBySubjectId(@PathVariable String subjectId) { try { Quiz quiz = this.quizService.getActiveQuizBySubjectId(subjectId); @@ -137,4 +137,19 @@ public ResponseEntity getQuizzesBySubjectId(@PathVariable String subjectId) { } } + @GetMapping("/{subjectId}/chat") + public ResponseEntity getChatBySubjectId(@PathVariable String subjectId) { + try { + Subject subject = this.subjectService.getSubjectById(subjectId).orElse(null); + if (subject != null) { + // TODO: Implement Chat retrieval logic + return ResponseEntity.ok(Map.of("message", "Chat trouvé")); + } else { + return ResponseEntity.notFound().build(); + } + } catch (Exception e) { + return ResponseEntity.status(500).body("Erreur interne : " + e.getMessage()); + } + } + } From 4a94625e63fd889c73bc3a975398d68c6518b03e Mon Sep 17 00:00:00 2001 From: Bio Paul Kobena Date: Wed, 12 Nov 2025 15:46:39 +0100 Subject: [PATCH 56/68] fix: lastSubjectId change to a SubjectId --- frontend/web/src/lib/api/summary.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/frontend/web/src/lib/api/summary.ts b/frontend/web/src/lib/api/summary.ts index 3e27cb9..38eae83 100644 --- a/frontend/web/src/lib/api/summary.ts +++ b/frontend/web/src/lib/api/summary.ts @@ -1,10 +1,12 @@ export async function summarizeExtractText() { - const subjectId = localStorage.getItem("lastSubjectId"); + + const subjectId = localStorage.getItem("SubjectId"); + if (!subjectId) { console.error("Aucun Subject ID trouvé !"); return; } - + console.log("") const base = process.env.NEXT_PUBLIC_API_BASE_URL!; try { const response = await fetch(`${base}/api/resume/create`, { @@ -16,6 +18,7 @@ export async function summarizeExtractText() { body: JSON.stringify({ subjectId }), }); + if (!response.ok) { throw new Error(`API Error: ${response.status}`); } From 2cac8e7b1b34578245c6f01f179e43fde51438e6 Mon Sep 17 00:00:00 2001 From: Jojo-225 Date: Wed, 12 Nov 2025 16:09:43 +0100 Subject: [PATCH 57/68] =?UTF-8?q?=20R=C3=A9glage=20des=20erreurs=20Prettie?= =?UTF-8?q?rs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/.github}/workflows/ci.yml | 0 frontend/web/public/aiRobot.json | 23679 ++++++- frontend/web/public/pdf.worker.min.mjs | 59075 +++++++++++++++- .../web/src/app/authentication/layout.tsx | 56 +- .../web/src/app/authentication/login/page.tsx | 186 +- .../src/app/authentication/register/page.tsx | 211 +- .../reset-password/MAJmdp/page.tsx | 17 +- .../reset-password/NewPassword/page.tsx | 77 +- .../authentication/reset-password/page.tsx | 56 +- .../reset-password/ready/page.tsx | 7 +- .../reset-password/success/page.tsx | 40 +- .../web/src/app/dashboard/chatter/page.tsx | 12 +- frontend/web/src/app/dashboard/layout.tsx | 104 +- frontend/web/src/app/dashboard/quiz/page.tsx | 11 +- .../web/src/app/dashboard/resume/page.tsx | 76 +- .../src/app/dashboard/upload-success/page.tsx | 132 +- .../web/src/app/dashboard/upload/page.tsx | 114 +- frontend/web/src/app/not-found.tsx | 2 +- frontend/web/src/app/page.tsx | 21 +- .../src/component/ui/animation-robotAi.tsx | 22 +- frontend/web/src/component/ui/button.tsx | 81 +- frontend/web/src/component/ui/card.tsx | 104 +- frontend/web/src/component/ui/chat.tsx | 51 +- .../web/src/component/ui/file-uploader.tsx | 1153 +- frontend/web/src/component/ui/form.tsx | 236 +- .../web/src/component/ui/hover-effect.tsx | 193 +- frontend/web/src/component/ui/input.tsx | 26 +- .../src/component/ui/interactive-button.tsx | 110 +- frontend/web/src/component/ui/label.tsx | 26 +- .../web/src/component/ui/option-button.tsx | 49 +- .../web/src/component/ui/page-not-found.tsx | 102 +- .../web/src/component/ui/password-input.tsx | 4 +- frontend/web/src/component/ui/quiz.tsx | 304 +- .../src/component/ui/resume-pdf-viewer.tsx | 30 +- frontend/web/src/lib/api/auth.ts | 3 +- frontend/web/src/lib/api/subject.ts | 49 +- frontend/web/src/lib/api/summary.ts | 3 +- frontend/web/src/lib/api/withAuth.client.tsx | 8 +- frontend/web/src/lib/pdf.ts | 38 +- frontend/web/src/lib/utils.ts | 12 +- 40 files changed, 84779 insertions(+), 1701 deletions(-) rename {.github => frontend/web/.github}/workflows/ci.yml (100%) diff --git a/.github/workflows/ci.yml b/frontend/web/.github/workflows/ci.yml similarity index 100% rename from .github/workflows/ci.yml rename to frontend/web/.github/workflows/ci.yml diff --git a/frontend/web/public/aiRobot.json b/frontend/web/public/aiRobot.json index 08c35be..194dfe6 100644 --- a/frontend/web/public/aiRobot.json +++ b/frontend/web/public/aiRobot.json @@ -1 +1,23678 @@ -{"nm":"Flow 9","ddd":0,"h":249,"w":173,"meta":{"g":"LottieFiles Figma v42"},"layers":[{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":9,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[30.2,12.37],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[30.2,12.37],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[30.2,12.37],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[30.2,12.37],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[31.5,12.5],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[30.2,12.37],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[30.2,12.37],"t":117},{"s":[30.2,12.37],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[91.74,201.63],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[91.74,201.63],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[88.7,201.63],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[92.29,201.72],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.5,201.5],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[88.7,201.63],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[88.7,201.63],"t":117},{"s":[91.74,201.63],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"ef":[{"ty":29,"nm":"","en":1,"ef":[{"ty":0,"nm":"","v":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[4],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[4],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[4],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[4],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[4],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[4],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[4],"t":117},{"s":[4],"t":137}]}},{"ty":0,"nm":"","v":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1],"t":117},{"s":[1],"t":137}]}},{"ty":4,"nm":"","v":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]}}]}],"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[16.68,0],[0,6.83],[-16.68,0],[0,-6.83]],"o":[[0,6.83],[-16.68,0],[0,-6.83],[16.68,0],[0,0]],"v":[[60.41,12.37],[30.22,24.74],[0,12.37],[30.22,0],[60.41,12.37]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[16.68,0],[0,6.83],[-16.68,0],[0,-6.83]],"o":[[0,6.83],[-16.68,0],[0,-6.83],[16.68,0],[0,0]],"v":[[60.41,12.37],[30.22,24.74],[0,12.37],[30.22,0],[60.41,12.37]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[16.68,0],[0,6.83],[-16.68,0],[0,-6.83]],"o":[[0,6.83],[-16.68,0],[0,-6.83],[16.68,0],[0,0]],"v":[[60.41,12.37],[30.22,24.74],[0,12.37],[30.22,0],[60.41,12.37]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[16.68,0],[0,6.83],[-16.68,0],[0,-6.83]],"o":[[0,6.83],[-16.68,0],[0,-6.83],[16.68,0],[0,0]],"v":[[60.41,12.37],[30.22,24.74],[0,12.37],[30.22,0],[60.41,12.37]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[17.39,0],[0,6.9],[-17.39,0],[0,-6.9]],"o":[[0,6.9],[-17.39,0],[0,-6.9],[17.39,0],[0,0]],"v":[[63,12.5],[31.52,25],[0,12.5],[31.52,0],[63,12.5]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[16.68,0],[0,6.83],[-16.68,0],[0,-6.83]],"o":[[0,6.83],[-16.68,0],[0,-6.83],[16.68,0],[0,0]],"v":[[60.41,12.37],[30.22,24.74],[0,12.37],[30.22,0],[60.41,12.37]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[16.68,0],[0,6.83],[-16.68,0],[0,-6.83]],"o":[[0,6.83],[-16.68,0],[0,-6.83],[16.68,0],[0,0]],"v":[[60.41,12.37],[30.22,24.74],[0,12.37],[30.22,0],[60.41,12.37]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[16.68,0],[0,6.83],[-16.68,0],[0,-6.83]],"o":[[0,6.83],[-16.68,0],[0,-6.83],[16.68,0],[0,0]],"v":[[60.41,12.37],[30.22,24.74],[0,12.37],[30.22,0],[60.41,12.37]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[64.41669845581055,16.374500274658203],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[64.41669845581055,16.374500274658203],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[64.41669845581055,16.374500274658203],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[64.41669845581055,16.374500274658203],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[67.00769805908203,16.503400802612305],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[64.41669845581055,16.374500274658203],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[64.41669845581055,16.374500274658203],"t":117},{"s":[64.41669845581055,16.374500274658203],"t":137}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.7372941333078871,0.8431764799379835,0.8392549115442762,1,1,1,1,0,1,1,0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.7372941333078871,0.8431764799379835,0.8392549115442762,1,1,1,1,0,1,1,0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.7372941333078871,0.8431764799379835,0.8392549115442762,1,1,1,1,0,1,1,0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.7372941333078871,0.8431764799379835,0.8392549115442762,1,1,1,1,0,1,1,0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.7372941333078871,0.8431764799379835,0.8392549115442762,1,1,1,1,0,1,1,0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.7372941333078871,0.8431764799379835,0.8392549115442762,1,1,1,1,0,1,1,0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.7372941333078871,0.8431764799379835,0.8392549115442762,1,1,1,1,0,1,1,0],"t":117},{"s":[0,0.7372941333078871,0.8431764799379835,0.8392549115442762,1,1,1,1,0,1,1,0],"t":137}]}},"t":2,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[34.2150993347168,16.374500274658203],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[34.2150993347168,16.374500274658203],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[34.2150993347168,16.374500274658203],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[34.2150993347168,16.374500274658203],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[35.51089859008789,16.503400802612305],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[34.2150993347168,16.374500274658203],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[34.2150993347168,16.374500274658203],"t":117},{"s":[34.2150993347168,16.374500274658203],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},{"ty":"rc","bm":0,"hd":false,"nm":"","d":1,"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[173,249]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":0,"k":[0,0,0]},"r":2,"o":{"a":0,"k":0}}],"ind":1},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.58,0.58],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.58,0.58],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.58,0.58],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.58,0.58],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.58,0.58],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.58,0.58],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.58,0.58],"t":117},{"s":[0.58,0.58],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[123.73,160.6],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[123.73,160.6],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[120.69,160.6],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[124.27,160.7],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[123.73,160.6],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[126.58,158.58],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[120.69,160.6],"t":117},{"s":[123.73,160.6],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.31,0],[0,0.31],[-0.31,0],[0,-0.31]],"o":[[0,0.31],[-0.31,0],[0,-0.31],[0.31,0],[0,0]],"v":[[1.17,0.58],[0.58,1.17],[0,0.58],[0.58,0],[1.17,0.58]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.31,0],[0,0.31],[-0.31,0],[0,-0.31]],"o":[[0,0.31],[-0.31,0],[0,-0.31],[0.31,0],[0,0]],"v":[[1.17,0.58],[0.58,1.17],[0,0.58],[0.58,0],[1.17,0.58]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.31,0],[0,0.31],[-0.31,0],[0,-0.31]],"o":[[0,0.31],[-0.31,0],[0,-0.31],[0.31,0],[0,0]],"v":[[1.17,0.58],[0.58,1.17],[0,0.58],[0.58,0],[1.17,0.58]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.31,0],[0,0.31],[-0.31,0],[0,-0.31]],"o":[[0,0.31],[-0.31,0],[0,-0.31],[0.31,0],[0,0]],"v":[[1.17,0.58],[0.58,1.17],[0,0.58],[0.58,0],[1.17,0.58]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.31,0],[0,0.31],[-0.31,0],[0,-0.31]],"o":[[0,0.31],[-0.31,0],[0,-0.31],[0.31,0],[0,0]],"v":[[1.17,0.58],[0.58,1.17],[0,0.58],[0.58,0],[1.17,0.58]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.31,0],[0,0.31],[-0.31,0],[0,-0.31]],"o":[[0,0.31],[-0.31,0],[0,-0.31],[0.31,0],[0,0]],"v":[[1.17,0.58],[0.58,1.17],[0,0.58],[0.58,0],[1.17,0.58]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.31,0],[0,0.31],[-0.31,0],[0,-0.31]],"o":[[0,0.31],[-0.31,0],[0,-0.31],[0.31,0],[0,0]],"v":[[1.17,0.58],[0.58,1.17],[0,0.58],[0.58,0],[1.17,0.58]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[0.31,0],[0,0.31],[-0.31,0],[0,-0.31]],"o":[[0,0.31],[-0.31,0],[0,-0.31],[0.31,0],[0,0]],"v":[[1.17,0.58],[0.58,1.17],[0,0.58],[0.58,0],[1.17,0.58]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":117},{"s":[1,1,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":2},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.57,6.91],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.57,6.91],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.57,6.91],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.57,6.91],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.57,6.91],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.26,6.94],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.57,6.91],"t":117},{"s":[2.57,6.91],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[122.68,151.58],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[122.68,151.58],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[119.64,151.58],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[123.23,151.67],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[122.68,151.58],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[121.56,151.19],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[119.64,151.58],"t":117},{"s":[122.68,151.58],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-25.54],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.62,2.31],[-0.62,0.58],[-0.18,-0.06],[0.12,-3.26],[0.74,-0.09],[0.22,0.18],[0.06,1.2]],"o":[[-0.09,-1.57],[-0.77,-3.05],[0.4,-0.4],[2.77,0.86],[-0.06,1.97],[-0.12,0.03],[-0.8,-0.71],[0,0]],"v":[[2.29,10.37],[1.3,5.32],[0.2,0.21],[1.61,0.15],[5.12,9.51],[3.83,13.81],[3.21,13.63],[2.29,10.37]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.62,2.31],[-0.62,0.58],[-0.18,-0.06],[0.12,-3.26],[0.74,-0.09],[0.22,0.18],[0.06,1.2]],"o":[[-0.09,-1.57],[-0.77,-3.05],[0.4,-0.4],[2.77,0.86],[-0.06,1.97],[-0.12,0.03],[-0.8,-0.71],[0,0]],"v":[[2.29,10.37],[1.3,5.32],[0.2,0.21],[1.61,0.15],[5.12,9.51],[3.83,13.81],[3.21,13.63],[2.29,10.37]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.62,2.31],[-0.62,0.58],[-0.18,-0.06],[0.12,-3.26],[0.74,-0.09],[0.22,0.18],[0.06,1.2]],"o":[[-0.09,-1.57],[-0.77,-3.05],[0.4,-0.4],[2.77,0.86],[-0.06,1.97],[-0.12,0.03],[-0.8,-0.71],[0,0]],"v":[[2.29,10.37],[1.3,5.32],[0.2,0.21],[1.61,0.15],[5.12,9.51],[3.83,13.81],[3.21,13.63],[2.29,10.37]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.62,2.31],[-0.62,0.58],[-0.18,-0.06],[0.12,-3.26],[0.74,-0.09],[0.22,0.18],[0.06,1.2]],"o":[[-0.09,-1.57],[-0.77,-3.05],[0.4,-0.4],[2.77,0.86],[-0.06,1.97],[-0.12,0.03],[-0.8,-0.71],[0,0]],"v":[[2.29,10.37],[1.3,5.32],[0.2,0.21],[1.61,0.15],[5.12,9.51],[3.83,13.81],[3.21,13.63],[2.29,10.37]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.62,2.31],[-0.62,0.58],[-0.18,-0.06],[0.12,-3.26],[0.74,-0.09],[0.22,0.18],[0.06,1.2]],"o":[[-0.09,-1.57],[-0.77,-3.05],[0.4,-0.4],[2.77,0.86],[-0.06,1.97],[-0.12,0.03],[-0.8,-0.71],[0,0]],"v":[[2.29,10.37],[1.3,5.32],[0.2,0.21],[1.61,0.15],[5.12,9.51],[3.83,13.81],[3.21,13.63],[2.29,10.37]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.62,2.31],[-0.62,0.58],[-0.18,-0.06],[0.12,-3.26],[0.74,-0.09],[0.22,0.18],[0.06,1.2]],"o":[[-0.09,-1.57],[-0.77,-3.05],[0.4,-0.4],[2.77,0.86],[-0.06,1.97],[-0.12,0.03],[-0.8,-0.71],[0,0]],"v":[[1.67,10.42],[0.69,5.38],[0.38,0.29],[1.05,0.06],[4.51,9.56],[3.21,13.87],[2.6,13.69],[1.67,10.42]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.62,2.31],[-0.62,0.58],[-0.18,-0.06],[0.12,-3.26],[0.74,-0.09],[0.22,0.18],[0.06,1.2]],"o":[[-0.09,-1.57],[-0.77,-3.05],[0.4,-0.4],[2.77,0.86],[-0.06,1.97],[-0.12,0.03],[-0.8,-0.71],[0,0]],"v":[[2.29,10.37],[1.3,5.32],[0.2,0.21],[1.61,0.15],[5.12,9.51],[3.83,13.81],[3.21,13.63],[2.29,10.37]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[0.62,2.31],[-0.62,0.58],[-0.18,-0.06],[0.12,-3.26],[0.74,-0.09],[0.22,0.18],[0.06,1.2]],"o":[[-0.09,-1.57],[-0.77,-3.05],[0.4,-0.4],[2.77,0.86],[-0.06,1.97],[-0.12,0.03],[-0.8,-0.71],[0,0]],"v":[[2.29,10.37],[1.3,5.32],[0.2,0.21],[1.61,0.15],[5.12,9.51],[3.83,13.81],[3.21,13.63],[2.29,10.37]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":117},{"s":[1,1,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":3},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.97,16.42],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.97,16.42],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.97,16.42],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.97,16.42],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.97,16.42],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[4.34,14.4],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.97,16.42],"t":117},{"s":[2.97,16.42],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[111.16,162.62],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[111.16,162.62],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[108.12,162.62],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[111.71,162.71],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[111.16,162.62],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[110.66,160.6],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[108.12,162.62],"t":117},{"s":[111.16,162.62],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.65,-0.83],[0.16,0.21],[0.03,2.22],[-2.95,3.51],[-1.29,0.77],[-0.28,-14.62],[-2.59,-3.02],[-0.02,-0.02]],"o":[[-0.58,0.89],[-0.21,-0.21],[-2.59,-3.02],[-0.28,-14.68],[0.22,-0.25],[-2.89,3.48],[0.03,2.22],[0.02,0.02],[0,0]],"v":[[5.93,30.28],[4.12,32.84],[3.57,32.22],[0.92,23.05],[1.6,1.97],[3.87,0],[3.23,21.05],[5.87,30.22],[5.93,30.28]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.65,-0.83],[0.16,0.21],[0.03,2.22],[-2.95,3.51],[-1.29,0.77],[-0.28,-14.62],[-2.59,-3.02],[-0.02,-0.02]],"o":[[-0.58,0.89],[-0.21,-0.21],[-2.59,-3.02],[-0.28,-14.68],[0.22,-0.25],[-2.89,3.48],[0.03,2.22],[0.02,0.02],[0,0]],"v":[[5.93,30.28],[4.12,32.84],[3.57,32.22],[0.92,23.05],[1.6,1.97],[3.87,0],[3.23,21.05],[5.87,30.22],[5.93,30.28]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.65,-0.83],[0.16,0.21],[0.03,2.22],[-2.95,3.51],[-1.29,0.77],[-0.28,-14.62],[-2.59,-3.02],[-0.02,-0.02]],"o":[[-0.58,0.89],[-0.21,-0.21],[-2.59,-3.02],[-0.28,-14.68],[0.22,-0.25],[-2.89,3.48],[0.03,2.22],[0.02,0.02],[0,0]],"v":[[5.93,30.28],[4.12,32.84],[3.57,32.22],[0.92,23.05],[1.6,1.97],[3.87,0],[3.23,21.05],[5.87,30.22],[5.93,30.28]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.65,-0.83],[0.16,0.21],[0.03,2.22],[-2.95,3.51],[-1.29,0.77],[-0.28,-14.62],[-2.59,-3.02],[-0.02,-0.02]],"o":[[-0.58,0.89],[-0.21,-0.21],[-2.59,-3.02],[-0.28,-14.68],[0.22,-0.25],[-2.89,3.48],[0.03,2.22],[0.02,0.02],[0,0]],"v":[[5.93,30.28],[4.12,32.84],[3.57,32.22],[0.92,23.05],[1.6,1.97],[3.87,0],[3.23,21.05],[5.87,30.22],[5.93,30.28]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.65,-0.83],[0.16,0.21],[0.03,2.22],[-2.95,3.51],[-1.29,0.77],[-0.28,-14.62],[-2.59,-3.02],[-0.02,-0.02]],"o":[[-0.58,0.89],[-0.21,-0.21],[-2.59,-3.02],[-0.28,-14.68],[0.22,-0.25],[-2.89,3.48],[0.03,2.22],[0.02,0.02],[0,0]],"v":[[5.93,30.28],[4.12,32.84],[3.57,32.22],[0.92,23.05],[1.6,1.97],[3.87,0],[3.23,21.05],[5.87,30.22],[5.93,30.28]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[-2,5.5],[-0.88,1.15],[0,0],[-2.59,-3.02],[0,0]],"o":[[-1,-3],[-1,-3],[0,0],[0,0],[0.52,-1.42],[-2.53,3.3],[0,0],[0.02,0.02],[0,0]],"v":[[5.69,28.8],[5.69,28.8],[1.69,17.8],[1.69,17.8],[0.69,3.3],[2.71,0],[1.69,8.8],[8.69,22.8],[5.69,28.8]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.65,-0.83],[0.16,0.21],[0.03,2.22],[-2.95,3.51],[-1.29,0.77],[-0.28,-14.62],[-2.59,-3.02],[-0.02,-0.02]],"o":[[-0.58,0.89],[-0.21,-0.21],[-2.59,-3.02],[-0.28,-14.68],[0.22,-0.25],[-2.89,3.48],[0.03,2.22],[0.02,0.02],[0,0]],"v":[[5.93,30.28],[4.12,32.84],[3.57,32.22],[0.92,23.05],[1.6,1.97],[3.87,0],[3.23,21.05],[5.87,30.22],[5.93,30.28]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[0.65,-0.83],[0.16,0.21],[0.03,2.22],[-2.95,3.51],[-1.29,0.77],[-0.28,-14.62],[-2.59,-3.02],[-0.02,-0.02]],"o":[[-0.58,0.89],[-0.21,-0.21],[-2.59,-3.02],[-0.28,-14.68],[0.22,-0.25],[-2.89,3.48],[0.03,2.22],[0.02,0.02],[0,0]],"v":[[5.93,30.28],[4.12,32.84],[3.57,32.22],[0.92,23.05],[1.6,1.97],[3.87,0],[3.23,21.05],[5.87,30.22],[5.93,30.28]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-3.7883899211883545,-43.916900634765625],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-3.7883899211883545,-43.916900634765625],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-3.7883899211883545,-43.916900634765625],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-3.7883899211883545,-43.916900634765625],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-3.7883899211883545,-43.916900634765625],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-4.947559833526611,-43.916900634765625],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-3.7883899211883545,-43.916900634765625],"t":117},{"s":[-3.7883899211883545,-43.916900634765625],"t":137}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":117},{"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":137}]}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-38.14699935913086,-26.011699676513672],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-38.14699935913086,-26.011699676513672],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-38.14699935913086,-26.011699676513672],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-38.14699935913086,-26.011699676513672],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-38.14699935913086,-26.011699676513672],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-39.30609893798828,-26.011699676513672],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-38.14699935913086,-26.011699676513672],"t":117},{"s":[-38.14699935913086,-26.011699676513672],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":4},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.77,17.51],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.77,17.51],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.77,17.51],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.77,17.51],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.77,17.51],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[11.47,18.77],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.77,17.51],"t":117},{"s":[7.77,17.51],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[118.26,160.6],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[118.26,160.6],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[115.22,160.6],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[118.81,160.69],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[118.26,160.6],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[119.05,161.85],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[115.22,160.6],"t":117},{"s":[118.26,160.6],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[-2.92,3.51],[-2.83,0.52],[-0.95,-0.52],[3.85,-9.11],[2.77,0.12],[0.58,0.71],[0.03,2.22]],"o":[[-0.28,-14.68],[0.34,-0.4],[2.25,-0.43],[5.88,3.35],[-0.86,1.97],[-1.14,-0.03],[-2.59,-3.02],[0,0]],"v":[[0.92,24.16],[1.57,3.08],[6.46,0.13],[11.73,0.96],[12,27.86],[6.13,35.03],[3.57,33.33],[0.92,24.16]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[-2.92,3.51],[-2.83,0.52],[-0.95,-0.52],[3.85,-9.11],[2.77,0.12],[0.58,0.71],[0.03,2.22]],"o":[[-0.28,-14.68],[0.34,-0.4],[2.25,-0.43],[5.88,3.35],[-0.86,1.97],[-1.14,-0.03],[-2.59,-3.02],[0,0]],"v":[[0.92,24.16],[1.57,3.08],[6.46,0.13],[11.73,0.96],[12,27.86],[6.13,35.03],[3.57,33.33],[0.92,24.16]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[-2.92,3.51],[-2.83,0.52],[-0.95,-0.52],[3.85,-9.11],[2.77,0.12],[0.58,0.71],[0.03,2.22]],"o":[[-0.28,-14.68],[0.34,-0.4],[2.25,-0.43],[5.88,3.35],[-0.86,1.97],[-1.14,-0.03],[-2.59,-3.02],[0,0]],"v":[[0.92,24.16],[1.57,3.08],[6.46,0.13],[11.73,0.96],[12,27.86],[6.13,35.03],[3.57,33.33],[0.92,24.16]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[-2.92,3.51],[-2.83,0.52],[-0.95,-0.52],[3.85,-9.11],[2.77,0.12],[0.58,0.71],[0.03,2.22]],"o":[[-0.28,-14.68],[0.34,-0.4],[2.25,-0.43],[5.88,3.35],[-0.86,1.97],[-1.14,-0.03],[-2.59,-3.02],[0,0]],"v":[[0.92,24.16],[1.57,3.08],[6.46,0.13],[11.73,0.96],[12,27.86],[6.13,35.03],[3.57,33.33],[0.92,24.16]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[-2.92,3.51],[-2.83,0.52],[-0.95,-0.52],[3.85,-9.11],[2.77,0.12],[0.58,0.71],[0.03,2.22]],"o":[[-0.28,-14.68],[0.34,-0.4],[2.25,-0.43],[5.88,3.35],[-0.86,1.97],[-1.14,-0.03],[-2.59,-3.02],[0,0]],"v":[[0.92,24.16],[1.57,3.08],[6.46,0.13],[11.73,0.96],[12,27.86],[6.13,35.03],[3.57,33.33],[0.92,24.16]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[-2.92,3.51],[-2.83,0.52],[-0.95,-0.52],[0.3,-11.41],[0.85,-1.5],[0,0],[2.42,4]],"o":[[-3.54,-5.85],[0.34,-0.4],[2.25,-0.43],[5.88,3.35],[-0.08,2.95],[-3.58,6.31],[0,0],[0,0]],"v":[[3.92,20.41],[1.45,3.08],[6.34,0.13],[11.6,0.96],[22.92,27.91],[21.92,35.41],[11.92,31.91],[3.92,20.41]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[-2.92,3.51],[-2.83,0.52],[-0.95,-0.52],[3.85,-9.11],[2.77,0.12],[0.58,0.71],[0.03,2.22]],"o":[[-0.28,-14.68],[0.34,-0.4],[2.25,-0.43],[5.88,3.35],[-0.86,1.97],[-1.14,-0.03],[-2.59,-3.02],[0,0]],"v":[[0.92,24.16],[1.57,3.08],[6.46,0.13],[11.73,0.96],[12,27.86],[6.13,35.03],[3.57,33.33],[0.92,24.16]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[-2.92,3.51],[-2.83,0.52],[-0.95,-0.52],[3.85,-9.11],[2.77,0.12],[0.58,0.71],[0.03,2.22]],"o":[[-0.28,-14.68],[0.34,-0.4],[2.25,-0.43],[5.88,3.35],[-0.86,1.97],[-1.14,-0.03],[-2.59,-3.02],[0,0]],"v":[[0.92,24.16],[1.57,3.08],[6.46,0.13],[11.73,0.96],[12,27.86],[6.13,35.03],[3.57,33.33],[0.92,24.16]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-0.5048930048942566,-28.483699798583984],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-0.5048930048942566,-28.483699798583984],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-0.5048930048942566,-28.483699798583984],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-0.5048930048942566,-28.483699798583984],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-0.5048930048942566,-28.483699798583984],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-0.6306260228157043,-28.483699798583984],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-0.5048930048942566,-28.483699798583984],"t":117},{"s":[-0.5048930048942566,-28.483699798583984],"t":137}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":117},{"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":137}]}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[46.504398345947266,5.895659923553467],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[46.504398345947266,5.895659923553467],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[46.504398345947266,5.895659923553467],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[46.504398345947266,5.895659923553467],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[46.504398345947266,5.895659923553467],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[46.37860107421875,5.8956499099731445],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[46.504398345947266,5.895659923553467],"t":117},{"s":[46.504398345947266,5.895659923553467],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":5},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[15.74,5.32],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[15.74,5.32],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[15.74,5.32],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[15.74,5.32],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[15.74,5.32],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[15.74,5.32],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[15.74,5.32],"t":117},{"s":[15.74,5.32],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[76.85,144.63],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[76.85,144.63],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[73.81,144.63],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[77.39,144.72],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[76.85,144.63],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[73.81,144.63],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[73.81,144.63],"t":117},{"s":[76.85,144.63],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[2.46,-3.05],[0.12,-2],[-1.48,1.82],[-4,-0.03],[0,0]],"o":[[0,0],[-3.94,0],[-1.45,1.78],[0.09,-2.06],[2.55,-3.11],[0,0],[0,0]],"v":[[31.48,0.06],[12.56,0.15],[2.37,4.89],[0,10.65],[2.43,4.77],[12.89,0],[31.48,0.06]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[2.46,-3.05],[0.12,-2],[-1.48,1.82],[-4,-0.03],[0,0]],"o":[[0,0],[-3.94,0],[-1.45,1.78],[0.09,-2.06],[2.55,-3.11],[0,0],[0,0]],"v":[[31.48,0.06],[12.56,0.15],[2.37,4.89],[0,10.65],[2.43,4.77],[12.89,0],[31.48,0.06]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[2.46,-3.05],[0.12,-2],[-1.48,1.82],[-4,-0.03],[0,0]],"o":[[0,0],[-3.94,0],[-1.45,1.78],[0.09,-2.06],[2.55,-3.11],[0,0],[0,0]],"v":[[31.48,0.06],[12.56,0.15],[2.37,4.89],[0,10.65],[2.43,4.77],[12.89,0],[31.48,0.06]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[2.46,-3.05],[0.12,-2],[-1.48,1.82],[-4,-0.03],[0,0]],"o":[[0,0],[-3.94,0],[-1.45,1.78],[0.09,-2.06],[2.55,-3.11],[0,0],[0,0]],"v":[[31.48,0.06],[12.56,0.15],[2.37,4.89],[0,10.65],[2.43,4.77],[12.89,0],[31.48,0.06]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[2.46,-3.05],[0.12,-2],[-1.48,1.82],[-4,-0.03],[0,0]],"o":[[0,0],[-3.94,0],[-1.45,1.78],[0.09,-2.06],[2.55,-3.11],[0,0],[0,0]],"v":[[31.48,0.06],[12.56,0.15],[2.37,4.89],[0,10.65],[2.43,4.77],[12.89,0],[31.48,0.06]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[2.46,-3.05],[0.12,-2],[-1.48,1.82],[-4,-0.03],[0,0]],"o":[[0,0],[-3.94,0],[-1.45,1.78],[0.09,-2.06],[2.55,-3.11],[0,0],[0,0]],"v":[[31.48,0.06],[12.56,0.15],[2.37,4.89],[0,10.65],[2.43,4.77],[12.89,0],[31.48,0.06]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[2.46,-3.05],[0.12,-2],[-1.48,1.82],[-4,-0.03],[0,0]],"o":[[0,0],[-3.94,0],[-1.45,1.78],[0.09,-2.06],[2.55,-3.11],[0,0],[0,0]],"v":[[31.48,0.06],[12.56,0.15],[2.37,4.89],[0,10.65],[2.43,4.77],[12.89,0],[31.48,0.06]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[0,0],[2.46,-3.05],[0.12,-2],[-1.48,1.82],[-4,-0.03],[0,0]],"o":[[0,0],[-3.94,0],[-1.45,1.78],[0.09,-2.06],[2.55,-3.11],[0,0],[0,0]],"v":[[31.48,0.06],[12.56,0.15],[2.37,4.89],[0,10.65],[2.43,4.77],[12.89,0],[31.48,0.06]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[35.2421989440918,-24.878700256347656],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[35.2421989440918,-24.878700256347656],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[35.2421989440918,-24.878700256347656],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[35.2421989440918,-24.878700256347656],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[35.2421989440918,-24.878700256347656],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[35.2421989440918,-24.878700256347656],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[35.2421989440918,-24.878700256347656],"t":117},{"s":[35.2421989440918,-24.878700256347656],"t":137}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":117},{"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":137}]}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.84089994430542,9.454489707946777],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.84089994430542,9.454489707946777],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.84089994430542,9.454489707946777],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.84089994430542,9.454489707946777],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.84089994430542,9.454489707946777],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.84089994430542,9.454489707946777],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.84089994430542,9.454489707946777],"t":117},{"s":[5.84089994430542,9.454489707946777],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":6},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[31.48,24.08],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[32.48,24.08],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[31.48,24.08],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[31.48,24.08],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[32.48,24.08],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[31.48,24.08],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[31.48,24.08],"t":117},{"s":[31.48,24.08],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[92.59,163.39],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[91.59,163.39],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[89.55,163.39],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[93.13,163.48],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[91.59,163.39],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[89.55,163.39],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[89.55,163.39],"t":117},{"s":[92.59,163.39],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,-0.12],[0.15,-0.4],[3.26,-5.08],[0.65,-0.83],[1.02,-1.11],[1.08,-0.37],[2.37,-0.03],[0,0],[4.03,1.45],[2.28,2.46],[5.48,16.68],[0.09,1.11],[0,0.31],[-1.45,1.78],[-3.94,0],[0,0],[0,0],[-2.55,-3.11],[-0.28,-1.69],[-0.02,-0.25],[0,-0.27]],"o":[[0,0.12],[-0.03,1.2],[-3.88,11.88],[-0.58,0.89],[-0.83,1.11],[-2.25,2.46],[-4.03,1.45],[0,0],[-2.4,-0.03],[-1.11,-0.37],[-6.22,-6.77],[-0.12,-0.4],[0,-0.33],[0.12,-2],[2.46,-3.05],[0,0],[0,0],[4.03,-0.03],[1.23,1.48],[0.04,0.23],[0.02,0.27],[0,0]],"v":[[62.96,11.08],[62.96,11.45],[62.5,13.94],[53.02,37.18],[51.21,39.73],[48.44,43.02],[41.67,46.96],[31.7,48.16],[31.3,48.16],[21.33,46.96],[14.53,43.02],[0.46,13.94],[0,11.6],[0,10.65],[2.37,4.89],[12.56,0.15],[31.48,0.06],[50.07,0],[60.53,4.77],[62.84,9.57],[62.93,10.28],[62.96,11.08]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,-0.12],[0.15,-0.4],[3.26,-5.08],[0.65,-0.83],[1.02,-1.11],[1.08,-0.37],[2.37,-0.03],[0,0],[4.03,1.45],[2.28,2.46],[5.48,16.68],[0.09,1.11],[0,0.31],[-1.45,1.78],[-3.94,0],[0,0],[0,0],[-2.55,-3.11],[-0.28,-1.69],[-0.02,-0.25],[0,-0.27]],"o":[[0,0.12],[-0.03,1.2],[-3.88,11.88],[-0.58,0.89],[-0.83,1.11],[-2.25,2.46],[-4.03,1.45],[0,0],[-2.4,-0.03],[-1.11,-0.37],[-6.22,-6.77],[-0.12,-0.4],[0,-0.33],[0.12,-2],[2.46,-3.05],[0,0],[0,0],[4.03,-0.03],[1.23,1.48],[0.04,0.23],[0.02,0.27],[0,0]],"v":[[64.96,11.08],[64.96,11.45],[64.5,13.94],[55.02,37.18],[53.21,39.73],[50.44,43.02],[43.67,46.96],[31.7,48.16],[31.3,48.16],[21.33,46.96],[14.53,43.02],[0.46,13.94],[0,11.6],[0,10.65],[2.37,4.89],[14.56,0.15],[33.48,0.06],[52.07,0],[62.53,4.77],[64.84,9.57],[64.93,10.28],[64.96,11.08]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,-0.12],[0.15,-0.4],[3.26,-5.08],[0.65,-0.83],[1.02,-1.11],[1.08,-0.37],[2.37,-0.03],[0,0],[4.03,1.45],[2.28,2.46],[5.48,16.68],[0.09,1.11],[0,0.31],[-1.45,1.78],[-3.94,0],[0,0],[0,0],[-2.55,-3.11],[-0.28,-1.69],[-0.02,-0.25],[0,-0.27]],"o":[[0,0.12],[-0.03,1.2],[-3.88,11.88],[-0.58,0.89],[-0.83,1.11],[-2.25,2.46],[-4.03,1.45],[0,0],[-2.4,-0.03],[-1.11,-0.37],[-6.22,-6.77],[-0.12,-0.4],[0,-0.33],[0.12,-2],[2.46,-3.05],[0,0],[0,0],[4.03,-0.03],[1.23,1.48],[0.04,0.23],[0.02,0.27],[0,0]],"v":[[62.96,11.08],[62.96,11.45],[62.5,13.94],[53.02,37.18],[51.21,39.73],[48.44,43.02],[41.67,46.96],[31.7,48.16],[31.3,48.16],[21.33,46.96],[14.53,43.02],[0.46,13.94],[0,11.6],[0,10.65],[2.37,4.89],[12.56,0.15],[31.48,0.06],[50.07,0],[60.53,4.77],[62.84,9.57],[62.93,10.28],[62.96,11.08]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,-0.12],[0.15,-0.4],[3.26,-5.08],[0.65,-0.83],[1.02,-1.11],[1.08,-0.37],[2.37,-0.03],[0,0],[4.03,1.45],[2.28,2.46],[5.48,16.68],[0.09,1.11],[0,0.31],[-1.45,1.78],[-3.94,0],[0,0],[0,0],[-2.55,-3.11],[-0.28,-1.69],[-0.02,-0.25],[0,-0.27]],"o":[[0,0.12],[-0.03,1.2],[-3.88,11.88],[-0.58,0.89],[-0.83,1.11],[-2.25,2.46],[-4.03,1.45],[0,0],[-2.4,-0.03],[-1.11,-0.37],[-6.22,-6.77],[-0.12,-0.4],[0,-0.33],[0.12,-2],[2.46,-3.05],[0,0],[0,0],[4.03,-0.03],[1.23,1.48],[0.04,0.23],[0.02,0.27],[0,0]],"v":[[62.96,11.08],[62.96,11.45],[62.5,13.94],[53.02,37.18],[51.21,39.73],[48.44,43.02],[41.67,46.96],[31.7,48.16],[31.3,48.16],[21.33,46.96],[14.53,43.02],[0.46,13.94],[0,11.6],[0,10.65],[2.37,4.89],[12.56,0.15],[31.48,0.06],[50.07,0],[60.53,4.77],[62.84,9.57],[62.93,10.28],[62.96,11.08]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,-0.12],[0.15,-0.4],[3.26,-5.08],[0.65,-0.83],[1.02,-1.11],[1.08,-0.37],[2.37,-0.03],[0,0],[4.03,1.45],[2.28,2.46],[2.48,16.68],[0.09,1.11],[0,0.31],[-1.45,1.78],[-3.94,0],[0,0],[0,0],[-2.55,-3.11],[-0.28,-1.69],[-0.02,-0.25],[0,-0.27]],"o":[[0,0.12],[-0.03,1.2],[-3.88,11.88],[-0.58,0.89],[-0.83,1.11],[-2.25,2.46],[-4.03,1.45],[0,0],[-2.4,-0.03],[-1.11,-0.37],[-6.22,-6.77],[-0.12,-0.4],[0,-0.33],[0.12,-2],[2.46,-3.05],[0,0],[0,0],[4.03,-0.03],[1.23,1.48],[0.04,0.23],[0.02,0.27],[0,0]],"v":[[64.96,11.08],[64.96,11.45],[64.5,13.94],[55.02,37.18],[53.21,39.73],[50.44,43.02],[43.67,46.96],[30.7,48.16],[30.3,48.16],[20.33,46.96],[13.53,43.02],[0.46,13.94],[0,11.6],[0,10.65],[2.37,4.89],[12.56,0.15],[33.48,0.06],[52.07,0],[62.53,4.77],[64.84,9.57],[64.93,10.28],[64.96,11.08]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,-0.12],[0.15,-0.4],[3.26,-5.08],[0.65,-0.83],[1.02,-1.11],[1.08,-0.37],[2.37,-0.03],[0,0],[4.03,1.45],[2.28,2.46],[5.48,16.68],[0.09,1.11],[0,0.31],[-1.45,1.78],[-3.94,0],[0,0],[0,0],[-2.55,-3.11],[-0.28,-1.69],[-0.02,-0.25],[0,-0.27]],"o":[[0,0.12],[-0.03,1.2],[-3.88,11.88],[-0.58,0.89],[-0.83,1.11],[-2.25,2.46],[-4.03,1.45],[0,0],[-2.4,-0.03],[-1.11,-0.37],[-6.22,-6.77],[-0.12,-0.4],[0,-0.33],[0.12,-2],[2.46,-3.05],[0,0],[0,0],[4.03,-0.03],[1.23,1.48],[0.04,0.23],[0.02,0.27],[0,0]],"v":[[62.96,11.08],[62.96,11.45],[62.5,13.94],[53.02,37.18],[51.21,39.73],[48.44,43.02],[41.67,46.96],[31.7,48.16],[31.3,48.16],[21.33,46.96],[14.53,43.02],[0.46,13.94],[0,11.6],[0,10.65],[2.37,4.89],[12.56,0.15],[31.48,0.06],[50.07,0],[60.53,4.77],[62.84,9.57],[62.93,10.28],[62.96,11.08]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,-0.12],[0.15,-0.4],[3.26,-5.08],[0.65,-0.83],[1.02,-1.11],[1.08,-0.37],[2.37,-0.03],[0,0],[4.03,1.45],[2.28,2.46],[5.48,16.68],[0.09,1.11],[0,0.31],[-1.45,1.78],[-3.94,0],[0,0],[0,0],[-2.55,-3.11],[-0.28,-1.69],[-0.02,-0.25],[0,-0.27]],"o":[[0,0.12],[-0.03,1.2],[-3.88,11.88],[-0.58,0.89],[-0.83,1.11],[-2.25,2.46],[-4.03,1.45],[0,0],[-2.4,-0.03],[-1.11,-0.37],[-6.22,-6.77],[-0.12,-0.4],[0,-0.33],[0.12,-2],[2.46,-3.05],[0,0],[0,0],[4.03,-0.03],[1.23,1.48],[0.04,0.23],[0.02,0.27],[0,0]],"v":[[62.96,11.08],[62.96,11.45],[62.5,13.94],[53.02,37.18],[51.21,39.73],[48.44,43.02],[41.67,46.96],[31.7,48.16],[31.3,48.16],[21.33,46.96],[14.53,43.02],[0.46,13.94],[0,11.6],[0,10.65],[2.37,4.89],[12.56,0.15],[31.48,0.06],[50.07,0],[60.53,4.77],[62.84,9.57],[62.93,10.28],[62.96,11.08]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[0,-0.12],[0.15,-0.4],[3.26,-5.08],[0.65,-0.83],[1.02,-1.11],[1.08,-0.37],[2.37,-0.03],[0,0],[4.03,1.45],[2.28,2.46],[5.48,16.68],[0.09,1.11],[0,0.31],[-1.45,1.78],[-3.94,0],[0,0],[0,0],[-2.55,-3.11],[-0.28,-1.69],[-0.02,-0.25],[0,-0.27]],"o":[[0,0.12],[-0.03,1.2],[-3.88,11.88],[-0.58,0.89],[-0.83,1.11],[-2.25,2.46],[-4.03,1.45],[0,0],[-2.4,-0.03],[-1.11,-0.37],[-6.22,-6.77],[-0.12,-0.4],[0,-0.33],[0.12,-2],[2.46,-3.05],[0,0],[0,0],[4.03,-0.03],[1.23,1.48],[0.04,0.23],[0.02,0.27],[0,0]],"v":[[62.96,11.08],[62.96,11.45],[62.5,13.94],[53.02,37.18],[51.21,39.73],[48.44,43.02],[41.67,46.96],[31.7,48.16],[31.3,48.16],[21.33,46.96],[14.53,43.02],[0.46,13.94],[0,11.6],[0,10.65],[2.37,4.89],[12.56,0.15],[31.48,0.06],[50.07,0],[60.53,4.77],[62.84,9.57],[62.93,10.28],[62.96,11.08]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[47.61669921875,-40.366798400878906],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[49.61669921875,-40.366798400878906],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[47.61669921875,-40.366798400878906],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[47.61669921875,-40.366798400878906],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[49.61669921875,-40.366798400878906],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[47.61669921875,-40.366798400878906],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[47.61669921875,-40.366798400878906],"t":117},{"s":[47.61669921875,-40.366798400878906],"t":137}]},"g":{"p":3,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,0.5419999957084656,0.5569019871973524,0.9176862794184217,0.7020000177645216,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,0.5419999957084656,0.5569019871973524,0.9176862794184217,0.7020000177645216,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,0.5419999957084656,0.5569019871973524,0.9176862794184217,0.7020000177645216,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,0.5419999957084656,0.5569019871973524,0.9176862794184217,0.7020000177645216,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,0.5419999957084656,0.5569019871973524,0.9176862794184217,0.7020000177645216,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,0.5419999957084656,0.5569019871973524,0.9176862794184217,0.7020000177645216,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,0.5419999957084656,0.5569019871973524,0.9176862794184217,0.7020000177645216,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":117},{"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,0.5419999957084656,0.5569019871973524,0.9176862794184217,0.7020000177645216,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":137}]}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-16.26740074157715,34.233699798583984],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-14.267399787902832,34.233699798583984],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-16.26740074157715,34.233699798583984],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-16.26740074157715,34.233699798583984],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-14.267399787902832,34.233699798583984],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-16.26740074157715,34.233699798583984],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-16.26740074157715,34.233699798583984],"t":117},{"s":[-16.26740074157715,34.233699798583984],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":7},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[9.2,4.24],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[9.2,4.24],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.52,3.98],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.06,3.98],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[9.2,4.24],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.52,3.98],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.52,4.04],"t":117},{"s":[9.2,4.24],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[92.59,122.84],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[92.59,122.84],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[85.86,122.98],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[84.41,124.58],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[92.59,122.84],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[85.86,122.98],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[84.86,123.04],"t":117},{"s":[92.59,122.84],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[4.55,-0.43],[1.35,4.15],[-0.98,0.12],[0,0],[-0.12,1.02]],"o":[[-0.46,4.4],[-4.49,0.43],[0.37,0.89],[0,0],[1.02,-0.09],[0,0]],"v":[[18.4,0],[9.91,8.43],[0,1.94],[2.28,3.26],[16.43,1.91],[18.4,0]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[4.55,-0.43],[1.35,4.15],[-0.98,0.12],[0,0],[-0.12,1.02]],"o":[[-0.46,4.4],[-4.49,0.43],[0.37,0.89],[0,0],[1.02,-0.09],[0,0]],"v":[[18.4,0],[9.91,8.43],[0,1.94],[2.28,3.26],[16.43,1.91],[18.4,0]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3,-0.5],[1.35,4.15],[-0.98,0.12],[0,0],[-0.12,1.02]],"o":[[-0.46,4.4],[-4.49,0.43],[0.37,0.89],[0,0],[1.02,-0.09],[0,0]],"v":[[11.04,0],[7.07,7.91],[0,1.54],[2.28,2.86],[9.07,1.91],[11.04,0]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[5.01,-0.36],[1.35,4.15],[-0.98,0.12],[0,0],[-0.12,1.02]],"o":[[-0.46,4.4],[-7,0.5],[0.37,0.89],[0,0],[1.02,-0.09],[0,0]],"v":[[20.12,0],[11.65,7.91],[0,1.5],[2.28,2.82],[18.15,1.91],[20.12,0]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[4.55,-0.43],[1.35,4.15],[-0.98,0.12],[0,0],[-0.12,1.02]],"o":[[-0.46,4.4],[-4.49,0.43],[0.37,0.89],[0,0],[1.02,-0.09],[0,0]],"v":[[18.4,0],[9.91,8.43],[0,1.94],[2.28,3.26],[16.43,1.91],[18.4,0]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3,-0.5],[1.35,4.15],[-0.98,0.12],[0,0],[-0.12,1.02]],"o":[[-0.46,4.4],[-4.49,0.43],[0.37,0.89],[0,0],[1.02,-0.09],[0,0]],"v":[[11.04,0],[7.07,7.91],[0,1.54],[2.28,2.86],[9.07,1.91],[11.04,0]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3,-0.5],[1.35,4.15],[-0.98,0.12],[0,0],[-0.12,1.02]],"o":[[-0.46,4.4],[-5.91,0.99],[0.37,0.89],[0,0],[1.02,-0.09],[0,0]],"v":[[13.04,0],[9.07,7.91],[0,1.54],[2.28,2.86],[11.07,1.91],[13.04,0]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[4.55,-0.43],[1.35,4.15],[-0.98,0.12],[0,0],[-0.12,1.02]],"o":[[-0.46,4.4],[-4.49,0.43],[0.37,0.89],[0,0],[1.02,-0.09],[0,0]],"v":[[18.4,0],[9.91,8.43],[0,1.94],[2.28,3.26],[16.43,1.91],[18.4,0]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[24.9685001373291,-17.711000442504883],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[24.9685001373291,-17.711000442504883],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[24.9685001373291,-18.113399505615234],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[24.9685001373291,-18.151599884033203],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[24.9685001373291,-17.711000442504883],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[24.9685001373291,-18.113399505615234],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[26.9685001373291,-18.113399505615234],"t":117},{"s":[24.9685001373291,-17.711000442504883],"t":137}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.07199999690055847,0.05101960852975939,0.6627843338274488,0.6706274706148634,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.07199999690055847,0.05101960852975939,0.6627843338274488,0.6706274706148634,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.07199999690055847,0.05101960852975939,0.6627843338274488,0.6706274706148634,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.07199999690055847,0.05101960852975939,0.6627843338274488,0.6706274706148634,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.07199999690055847,0.05101960852975939,0.6627843338274488,0.6706274706148634,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.07199999690055847,0.05101960852975939,0.6627843338274488,0.6706274706148634,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.07199999690055847,0.05101960852975939,0.6627843338274488,0.6706274706148634,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":117},{"s":[0.07199999690055847,0.05101960852975939,0.6627843338274488,0.6706274706148634,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":137}]}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.2692699432373047,4.988160133361816],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.2692699432373047,4.988160133361816],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.2692699432373047,4.58581018447876],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.2692699432373047,4.547599792480469],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.2692699432373047,4.988160133361816],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.2692699432373047,4.58581018447876],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[4.269269943237305,4.58581018447876],"t":117},{"s":[2.2692699432373047,4.988160133361816],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":8},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[9.4,2.57],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[9.4,2.57],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.72,2.23],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.22,2.23],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[9.4,2.57],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.72,2.23],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.72,2.23],"t":117},{"s":[9.4,2.57],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[92.43,119.33],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[92.43,119.33],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[85.71,119.67],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[84.22,121.23],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[92.43,119.33],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[85.71,119.67],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[84.71,119.67],"t":117},{"s":[92.43,119.33],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.05,-0.09],[0,0],[0.28,0.98],[0.06,0.47],[-0.09,0.12],[-0.12,0.03],[0,0],[-0.09,-0.09],[0,-0.12],[0.04,-0.45]],"o":[[-0.12,1.02],[0,0],[-1.05,0.09],[-0.14,-0.43],[-0.03,-0.12],[0.06,-0.09],[0,0],[0.12,0],[0.09,0.09],[0.02,0.47],[0,0]],"v":[[18.75,1.85],[16.75,3.75],[2.63,5.14],[0.32,3.63],[0.01,2.28],[0.1,1.91],[0.41,1.72],[18.29,0],[18.63,0.12],[18.78,0.46],[18.75,1.85]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.05,-0.09],[0,0],[0.28,0.98],[0.06,0.47],[-0.09,0.12],[-0.12,0.03],[0,0],[-0.09,-0.09],[0,-0.12],[0.04,-0.45]],"o":[[-0.12,1.02],[0,0],[-1.05,0.09],[-0.14,-0.43],[-0.03,-0.12],[0.06,-0.09],[0,0],[0.12,0],[0.09,0.09],[0.02,0.47],[0,0]],"v":[[18.75,1.85],[16.75,3.75],[2.63,5.14],[0.32,3.63],[0.01,2.28],[0.1,1.91],[0.41,1.72],[18.29,0],[18.63,0.12],[18.78,0.46],[18.75,1.85]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.05,-0.09],[0,0],[0.28,0.98],[0.06,0.47],[-0.09,0.12],[-0.12,0.03],[0,0],[-0.09,-0.09],[0,-0.12],[0.04,-0.45]],"o":[[-0.12,1.02],[0,0],[-1.05,0.09],[-0.14,-0.43],[-0.03,-0.12],[0.06,-0.09],[0,0],[0.12,0],[0.09,0.09],[0.02,0.47],[0,0]],"v":[[11.39,1.85],[9.39,3.75],[2.63,4.44],[0.32,2.94],[0.01,1.58],[0.1,1.21],[0.41,1.03],[10.93,0],[11.27,0.12],[11.42,0.46],[11.39,1.85]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.05,-0.09],[0,0],[0.28,0.98],[0.06,0.47],[-0.09,0.12],[-0.12,0.03],[0,0],[-0.09,-0.09],[0,-0.12],[0.04,-0.45]],"o":[[-0.12,1.02],[0,0],[-1.05,0.09],[-0.14,-0.43],[-0.03,-0.12],[0.06,-0.09],[0,0],[0.12,0],[0.09,0.09],[0.02,0.47],[0,0]],"v":[[20.42,1.76],[18.39,3.75],[2.63,4.44],[0.32,2.94],[0.01,1.58],[0.1,1.21],[0.41,1.03],[19.93,0],[20.27,0.12],[20.42,0.46],[20.42,1.76]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.05,-0.09],[0,0],[0.28,0.98],[0.06,0.47],[-0.09,0.12],[-0.12,0.03],[0,0],[-0.09,-0.09],[0,-0.12],[0.04,-0.45]],"o":[[-0.12,1.02],[0,0],[-1.05,0.09],[-0.14,-0.43],[-0.03,-0.12],[0.06,-0.09],[0,0],[0.12,0],[0.09,0.09],[0.02,0.47],[0,0]],"v":[[18.75,1.85],[16.75,3.75],[2.63,5.14],[0.32,3.63],[0.01,2.28],[0.1,1.91],[0.41,1.72],[18.29,0],[18.63,0.12],[18.78,0.46],[18.75,1.85]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.05,-0.09],[0,0],[0.28,0.98],[0.06,0.47],[-0.09,0.12],[-0.12,0.03],[0,0],[-0.09,-0.09],[0,-0.12],[0.04,-0.45]],"o":[[-0.12,1.02],[0,0],[-1.05,0.09],[-0.14,-0.43],[-0.03,-0.12],[0.06,-0.09],[0,0],[0.12,0],[0.09,0.09],[0.02,0.47],[0,0]],"v":[[11.39,1.85],[9.39,3.75],[2.63,4.44],[0.32,2.94],[0.01,1.58],[0.1,1.21],[0.41,1.03],[10.93,0],[11.27,0.12],[11.42,0.46],[11.39,1.85]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.05,-0.09],[0,0],[0.28,0.98],[0.06,0.47],[-0.09,0.12],[-0.12,0.03],[0,0],[-0.09,-0.09],[0,-0.12],[0.04,-0.45]],"o":[[-0.12,1.02],[0,0],[-1.05,0.09],[-0.14,-0.43],[-0.03,-0.12],[0.06,-0.09],[0,0],[0.12,0],[0.09,0.09],[0.02,0.47],[0,0]],"v":[[13.39,1.85],[11.39,3.75],[2.63,4.44],[0.32,2.94],[0.01,1.58],[0.1,1.21],[0.41,1.03],[12.93,0],[13.27,0.12],[13.42,0.46],[13.39,1.85]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[1.05,-0.09],[0,0],[0.28,0.98],[0.06,0.47],[-0.09,0.12],[-0.12,0.03],[0,0],[-0.09,-0.09],[0,-0.12],[0.04,-0.45]],"o":[[-0.12,1.02],[0,0],[-1.05,0.09],[-0.14,-0.43],[-0.03,-0.12],[0.06,-0.09],[0,0],[0.12,0],[0.09,0.09],[0.02,0.47],[0,0]],"v":[[18.75,1.85],[16.75,3.75],[2.63,5.14],[0.32,3.63],[0.01,2.28],[0.1,1.91],[0.41,1.72],[18.29,0],[18.63,0.12],[18.78,0.46],[18.75,1.85]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":117},{"s":[0.9334,0.9922,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":9},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.01,1.79],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.01,1.79],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.01,1.79],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.5,2],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.01,1.79],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.01,1.79],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.01,1.79],"t":117},{"s":[6.01,1.79],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[96.78,60.95],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[96.78,60.95],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[93.74,60.95],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[95.5,61],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[96.78,60.95],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[93.74,60.95],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[93.74,60.95],"t":117},{"s":[96.78,60.95],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.49,0.86],[0.25,0.37],[0.22,0],[0,-0.03],[-1.45,0.03],[-1.08,-1.11],[0,0],[0.09,0]],"o":[[-0.09,0.03],[0,0],[-0.8,-1.11],[-4.28,0.03],[0,0.03],[4.15,-0.09],[0.43,0.46],[0.31,0.83],[0,0]],"v":[[11.91,3.59],[11.26,2.17],[10.8,1.4],[7.05,0.33],[0,0.11],[3.48,0.08],[11.17,0.88],[11.82,1.93],[11.91,3.59]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.49,0.86],[0.25,0.37],[0.22,0],[0,-0.03],[-1.45,0.03],[-1.08,-1.11],[0,0],[0.09,0]],"o":[[-0.09,0.03],[0,0],[-0.8,-1.11],[-4.28,0.03],[0,0.03],[4.15,-0.09],[0.43,0.46],[0.31,0.83],[0,0]],"v":[[11.91,3.59],[11.26,2.17],[10.8,1.4],[7.05,0.33],[0,0.11],[3.48,0.08],[11.17,0.88],[11.82,1.93],[11.91,3.59]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.49,0.86],[0.25,0.37],[0.22,0],[0,-0.03],[-1.45,0.03],[-1.08,-1.11],[0,0],[0.09,0]],"o":[[-0.09,0.03],[0,0],[-0.8,-1.11],[-4.28,0.03],[0,0.03],[4.15,-0.09],[0.43,0.46],[0.31,0.83],[0,0]],"v":[[11.91,3.59],[11.26,2.17],[10.8,1.4],[7.05,0.33],[0,0.11],[3.48,0.08],[11.17,0.88],[11.82,1.93],[11.91,3.59]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.45,0.96],[0.23,0.41],[0.2,0],[0,-0.03],[-1.32,0.03],[-0.99,-1.23],[0,0],[0.08,0]],"o":[[-0.08,0.03],[0,0],[-0.73,-1.23],[-3.92,0.03],[0,0.03],[3.8,-0.1],[0.39,0.51],[0.28,0.93],[0,0]],"v":[[10.9,4],[10.31,2.42],[9.89,1.56],[6.45,0.36],[0,0.12],[3.18,0.09],[10.23,0.98],[10.82,2.15],[10.9,4]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.49,0.86],[0.25,0.37],[0.22,0],[0,-0.03],[-1.45,0.03],[-1.08,-1.11],[0,0],[0.09,0]],"o":[[-0.09,0.03],[0,0],[-0.8,-1.11],[-4.28,0.03],[0,0.03],[4.15,-0.09],[0.43,0.46],[0.31,0.83],[0,0]],"v":[[11.91,3.59],[11.26,2.17],[10.8,1.4],[7.05,0.33],[0,0.11],[3.48,0.08],[11.17,0.88],[11.82,1.93],[11.91,3.59]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.49,0.86],[0.25,0.37],[0.22,0],[0,-0.03],[-1.45,0.03],[-1.08,-1.11],[0,0],[0.09,0]],"o":[[-0.09,0.03],[0,0],[-0.8,-1.11],[-4.28,0.03],[0,0.03],[4.15,-0.09],[0.43,0.46],[0.31,0.83],[0,0]],"v":[[11.91,3.59],[11.26,2.17],[10.8,1.4],[7.05,0.33],[0,0.11],[3.48,0.08],[11.17,0.88],[11.82,1.93],[11.91,3.59]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.49,0.86],[0.25,0.37],[0.22,0],[0,-0.03],[-1.45,0.03],[-1.08,-1.11],[0,0],[0.09,0]],"o":[[-0.09,0.03],[0,0],[-0.8,-1.11],[-4.28,0.03],[0,0.03],[4.15,-0.09],[0.43,0.46],[0.31,0.83],[0,0]],"v":[[11.91,3.59],[11.26,2.17],[10.8,1.4],[7.05,0.33],[0,0.11],[3.48,0.08],[11.17,0.88],[11.82,1.93],[11.91,3.59]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[0.49,0.86],[0.25,0.37],[0.22,0],[0,-0.03],[-1.45,0.03],[-1.08,-1.11],[0,0],[0.09,0]],"o":[[-0.09,0.03],[0,0],[-0.8,-1.11],[-4.28,0.03],[0,0.03],[4.15,-0.09],[0.43,0.46],[0.31,0.83],[0,0]],"v":[[11.91,3.59],[11.26,2.17],[10.8,1.4],[7.05,0.33],[0,0.11],[3.48,0.08],[11.17,0.88],[11.82,1.93],[11.91,3.59]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":117},{"s":[1,1,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":10},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[8.52,7.41],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[8.52,7.41],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[8.52,7.41],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.06,8],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[8.52,7.41],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[8.52,7.41],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[8.52,7.41],"t":117},{"s":[8.52,7.41],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[114.86,95.13],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[114.86,95.13],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[111.81,95.13],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[102.06,97],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[114.86,95.13],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[111.81,95.13],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[111.81,95.13],"t":117},{"s":[114.86,95.13],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[8.06,5.32],[-0.15,0.37],[-2.52,-1.17],[0.49,-0.37]],"o":[[-0.43,0.28],[-2.83,-1.85],[0.18,-0.4],[8.03,3.72],[0,0]],"v":[[16.99,14.82],[5.48,3.68],[0.01,0.11],[5.85,1.62],[16.99,14.82]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[8.06,5.32],[-0.15,0.37],[-2.52,-1.17],[0.49,-0.37]],"o":[[-0.43,0.28],[-2.83,-1.85],[0.18,-0.4],[8.03,3.72],[0,0]],"v":[[16.99,14.82],[5.48,3.68],[0.01,0.11],[5.85,1.62],[16.99,14.82]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[8.06,5.32],[-0.15,0.37],[-2.52,-1.17],[0.49,-0.37]],"o":[[-0.43,0.28],[-2.83,-1.85],[0.18,-0.4],[8.03,3.72],[0,0]],"v":[[16.99,14.82],[5.48,3.68],[0.01,0.11],[5.85,1.62],[16.99,14.82]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[7.5,4.89],[-0.15,0.37],[-2.52,-1.17],[0.49,-0.37]],"o":[[-0.43,0.28],[-2.83,-1.85],[0.18,-0.4],[8.03,3.72],[0,0]],"v":[[14,16],[6.5,3.5],[0,0.11],[5.85,1.62],[14,16]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[8.06,5.32],[-0.15,0.37],[-2.52,-1.17],[0.49,-0.37]],"o":[[-0.43,0.28],[-2.83,-1.85],[0.18,-0.4],[8.03,3.72],[0,0]],"v":[[16.99,14.82],[5.48,3.68],[0.01,0.11],[5.85,1.62],[16.99,14.82]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[8.06,5.32],[-0.15,0.37],[-2.52,-1.17],[0.49,-0.37]],"o":[[-0.43,0.28],[-2.83,-1.85],[0.18,-0.4],[8.03,3.72],[0,0]],"v":[[16.99,14.82],[5.48,3.68],[0.01,0.11],[5.85,1.62],[16.99,14.82]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[8.06,5.32],[-0.15,0.37],[-2.52,-1.17],[0.49,-0.37]],"o":[[-0.43,0.28],[-2.83,-1.85],[0.18,-0.4],[8.03,3.72],[0,0]],"v":[[16.99,14.82],[5.48,3.68],[0.01,0.11],[5.85,1.62],[16.99,14.82]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[8.06,5.32],[-0.15,0.37],[-2.52,-1.17],[0.49,-0.37]],"o":[[-0.43,0.28],[-2.83,-1.85],[0.18,-0.4],[8.03,3.72],[0,0]],"v":[[16.99,14.82],[5.48,3.68],[0.01,0.11],[5.85,1.62],[16.99,14.82]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":117},{"s":[1,1,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":11},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.34,1.34],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.34,1.34],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.34,1.34],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.34,1.34],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.34,1.34],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.34,1.34],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.34,1.34],"t":117},{"s":[1.34,1.34],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[109.07,69.28],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[109.07,69.28],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[106.03,69.28],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[107.34,70.34],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[109.07,69.28],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[106.03,69.28],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[106.03,69.28],"t":117},{"s":[109.07,69.28],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.77,0],[0,0.74],[-0.74,0],[0,-0.77]],"o":[[0,0.74],[-0.74,0],[0,-0.77],[0.77,0],[0,0]],"v":[[2.68,1.35],[1.32,2.68],[0,1.35],[1.32,0],[2.68,1.35]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.77,0],[0,0.74],[-0.74,0],[0,-0.77]],"o":[[0,0.74],[-0.74,0],[0,-0.77],[0.77,0],[0,0]],"v":[[2.68,1.35],[1.32,2.68],[0,1.35],[1.32,0],[2.68,1.35]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.77,0],[0,0.74],[-0.74,0],[0,-0.77]],"o":[[0,0.74],[-0.74,0],[0,-0.77],[0.77,0],[0,0]],"v":[[2.68,1.35],[1.32,2.68],[0,1.35],[1.32,0],[2.68,1.35]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.77,0],[0,0.74],[-0.74,0],[0,-0.77]],"o":[[0,0.74],[-0.74,0],[0,-0.77],[0.77,0],[0,0]],"v":[[2.68,1.35],[1.32,2.68],[0,1.35],[1.32,0],[2.68,1.35]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.77,0],[0,0.74],[-0.74,0],[0,-0.77]],"o":[[0,0.74],[-0.74,0],[0,-0.77],[0.77,0],[0,0]],"v":[[2.68,1.35],[1.32,2.68],[0,1.35],[1.32,0],[2.68,1.35]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.77,0],[0,0.74],[-0.74,0],[0,-0.77]],"o":[[0,0.74],[-0.74,0],[0,-0.77],[0.77,0],[0,0]],"v":[[2.68,1.35],[1.32,2.68],[0,1.35],[1.32,0],[2.68,1.35]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.77,0],[0,0.74],[-0.74,0],[0,-0.77]],"o":[[0,0.74],[-0.74,0],[0,-0.77],[0.77,0],[0,0]],"v":[[2.68,1.35],[1.32,2.68],[0,1.35],[1.32,0],[2.68,1.35]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[0.77,0],[0,0.74],[-0.74,0],[0,-0.77]],"o":[[0,0.74],[-0.74,0],[0,-0.77],[0.77,0],[0,0]],"v":[[2.68,1.35],[1.32,2.68],[0,1.35],[1.32,0],[2.68,1.35]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":117},{"s":[1,1,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":12},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.25,5.28],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.25,5.28],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.25,5.28],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.15,5.15],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.25,5.28],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.25,5.28],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[5.25,5.28],"t":117},{"s":[5.25,5.28],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[118.26,76.37],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[118.26,76.37],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[115.22,76.37],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[114.85,77.36],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[118.26,76.37],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[115.22,76.37],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[115.22,76.37],"t":117},{"s":[118.26,76.37],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.69,-0.18],[1.29,1.66],[-1.11,1.2],[-0.12,-4.28]],"o":[[0.03,1.78],[-1.6,0.18],[-1.29,-1.63],[1.48,-1.57],[0,0]],"v":[[10.5,6.43],[7.39,10.55],[3.24,7.44],[0.25,0.4],[10.5,6.43]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.69,-0.18],[1.29,1.66],[-1.11,1.2],[-0.12,-4.28]],"o":[[0.03,1.78],[-1.6,0.18],[-1.29,-1.63],[1.48,-1.57],[0,0]],"v":[[10.5,6.43],[7.39,10.55],[3.24,7.44],[0.25,0.4],[10.5,6.43]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.69,-0.18],[1.29,1.66],[-1.11,1.2],[-0.12,-4.28]],"o":[[0.03,1.78],[-1.6,0.18],[-1.29,-1.63],[1.48,-1.57],[0,0]],"v":[[10.5,6.43],[7.39,10.55],[3.24,7.44],[0.25,0.4],[10.5,6.43]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.69,-0.18],[1.29,1.66],[-1.11,1.2],[-0.12,-4.28]],"o":[[0.03,1.78],[-1.6,0.18],[-1.29,-1.63],[1.48,-1.57],[0,0]],"v":[[10.29,8.23],[7.29,10.28],[2.79,6.78],[0.29,0.28],[10.29,8.23]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.69,-0.18],[1.29,1.66],[-1.11,1.2],[-0.12,-4.28]],"o":[[0.03,1.78],[-1.6,0.18],[-1.29,-1.63],[1.48,-1.57],[0,0]],"v":[[10.5,6.43],[7.39,10.55],[3.24,7.44],[0.25,0.4],[10.5,6.43]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.69,-0.18],[1.29,1.66],[-1.11,1.2],[-0.12,-4.28]],"o":[[0.03,1.78],[-1.6,0.18],[-1.29,-1.63],[1.48,-1.57],[0,0]],"v":[[10.5,6.43],[7.39,10.55],[3.24,7.44],[0.25,0.4],[10.5,6.43]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.69,-0.18],[1.29,1.66],[-1.11,1.2],[-0.12,-4.28]],"o":[[0.03,1.78],[-1.6,0.18],[-1.29,-1.63],[1.48,-1.57],[0,0]],"v":[[10.5,6.43],[7.39,10.55],[3.24,7.44],[0.25,0.4],[10.5,6.43]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[1.69,-0.18],[1.29,1.66],[-1.11,1.2],[-0.12,-4.28]],"o":[[0.03,1.78],[-1.6,0.18],[-1.29,-1.63],[1.48,-1.57],[0,0]],"v":[[10.5,6.43],[7.39,10.55],[3.24,7.44],[0.25,0.4],[10.5,6.43]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":117},{"s":[1,1,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":13},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.17,1.18],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.17,1.18],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.17,1.18],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.17,1.18],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.17,1.18],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.17,1.18],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.17,1.18],"t":117},{"s":[1.17,1.18],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[91.76,38.35],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[91.76,38.35],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[88.72,38.35],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.71,38.35],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[91.76,38.35],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[88.72,38.35],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[88.72,38.35],"t":117},{"s":[91.76,38.35],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.65,0],[0,0.65],[-0.65,0],[0,-0.68]],"o":[[0,0.65],[-0.65,0],[0,-0.68],[0.65,0],[0,0]],"v":[[2.34,1.2],[1.17,2.37],[0,1.2],[1.17,0],[2.34,1.2]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.65,0],[0,0.65],[-0.65,0],[0,-0.68]],"o":[[0,0.65],[-0.65,0],[0,-0.68],[0.65,0],[0,0]],"v":[[2.34,1.2],[1.17,2.37],[0,1.2],[1.17,0],[2.34,1.2]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.65,0],[0,0.65],[-0.65,0],[0,-0.68]],"o":[[0,0.65],[-0.65,0],[0,-0.68],[0.65,0],[0,0]],"v":[[2.34,1.2],[1.17,2.37],[0,1.2],[1.17,0],[2.34,1.2]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.65,0],[0,0.65],[-0.65,0],[0,-0.68]],"o":[[0,0.65],[-0.65,0],[0,-0.68],[0.65,0],[0,0]],"v":[[2.34,1.2],[1.17,2.37],[0,1.2],[1.17,0],[2.34,1.2]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.65,0],[0,0.65],[-0.65,0],[0,-0.68]],"o":[[0,0.65],[-0.65,0],[0,-0.68],[0.65,0],[0,0]],"v":[[2.34,1.2],[1.17,2.37],[0,1.2],[1.17,0],[2.34,1.2]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.65,0],[0,0.65],[-0.65,0],[0,-0.68]],"o":[[0,0.65],[-0.65,0],[0,-0.68],[0.65,0],[0,0]],"v":[[2.34,1.2],[1.17,2.37],[0,1.2],[1.17,0],[2.34,1.2]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.65,0],[0,0.65],[-0.65,0],[0,-0.68]],"o":[[0,0.65],[-0.65,0],[0,-0.68],[0.65,0],[0,0]],"v":[[2.34,1.2],[1.17,2.37],[0,1.2],[1.17,0],[2.34,1.2]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[0.65,0],[0,0.65],[-0.65,0],[0,-0.68]],"o":[[0,0.65],[-0.65,0],[0,-0.68],[0.65,0],[0,0]],"v":[[2.34,1.2],[1.17,2.37],[0,1.2],[1.17,0],[2.34,1.2]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,1,1],"t":117},{"s":[1,1,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":14},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[3.86,3.86],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[3.86,3.86],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[3.86,3.86],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[3.86,3.86],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[3.86,3.86],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[3.86,3.86],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[3.86,3.86],"t":117},{"s":[3.86,3.86],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.23,39.86],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.23,39.86],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[87.19,39.86],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[89.19,39.86],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.23,39.86],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[87.19,39.86],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[87.19,39.86],"t":117},{"s":[90.23,39.86],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[2.12,0],[0,2.12],[-2.12,0],[0,-2.15]],"o":[[0,2.12],[-2.12,0],[0,-2.15],[2.12,0],[0,0]],"v":[[7.72,3.88],[3.88,7.72],[0,3.88],[3.88,0],[7.72,3.88]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[2.12,0],[0,2.12],[-2.12,0],[0,-2.15]],"o":[[0,2.12],[-2.12,0],[0,-2.15],[2.12,0],[0,0]],"v":[[7.72,3.88],[3.88,7.72],[0,3.88],[3.88,0],[7.72,3.88]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[2.12,0],[0,2.12],[-2.12,0],[0,-2.15]],"o":[[0,2.12],[-2.12,0],[0,-2.15],[2.12,0],[0,0]],"v":[[7.72,3.88],[3.88,7.72],[0,3.88],[3.88,0],[7.72,3.88]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[2.12,0],[0,2.12],[-2.12,0],[0,-2.15]],"o":[[0,2.12],[-2.12,0],[0,-2.15],[2.12,0],[0,0]],"v":[[7.72,3.88],[3.88,7.72],[0,3.88],[3.88,0],[7.72,3.88]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[2.12,0],[0,2.12],[-2.12,0],[0,-2.15]],"o":[[0,2.12],[-2.12,0],[0,-2.15],[2.12,0],[0,0]],"v":[[7.72,3.88],[3.88,7.72],[0,3.88],[3.88,0],[7.72,3.88]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[2.12,0],[0,2.12],[-2.12,0],[0,-2.15]],"o":[[0,2.12],[-2.12,0],[0,-2.15],[2.12,0],[0,0]],"v":[[7.72,3.88],[3.88,7.72],[0,3.88],[3.88,0],[7.72,3.88]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[2.12,0],[0,2.12],[-2.12,0],[0,-2.15]],"o":[[0,2.12],[-2.12,0],[0,-2.15],[2.12,0],[0,0]],"v":[[7.72,3.88],[3.88,7.72],[0,3.88],[3.88,0],[7.72,3.88]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[2.12,0],[0,2.12],[-2.12,0],[0,-2.15]],"o":[[0,2.12],[-2.12,0],[0,-2.15],[2.12,0],[0,0]],"v":[[7.72,3.88],[3.88,7.72],[0,3.88],[3.88,0],[7.72,3.88]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.592549800872803,-1.1063200235366821],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.592549800872803,-1.1063200235366821],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.592549800872803,-1.1063200235366821],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.592549800872803,-1.1063200235366821],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.592549800872803,-1.1063200235366821],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.592549800872803,-1.1063200235366821],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.592549800872803,-1.1063200235366821],"t":117},{"s":[7.592549800872803,-1.1063200235366821],"t":137}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":117},{"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":137}]}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-5.978449821472168,0.8727499842643738],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-5.978449821472168,0.8727499842643738],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-5.978449821472168,0.8727499842643738],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-5.978449821472168,0.8727499842643738],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-5.978449821472168,0.8727499842643738],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-5.978449821472168,0.8727499842643738],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-5.978449821472168,0.8727499842643738],"t":117},{"s":[-5.978449821472168,0.8727499842643738],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":15},{"ty":4,"nm":" / / / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.48,0.48],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.48,0.02],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.48,0.48],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.48,0.48],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.48,0.48],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.48,0.48],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.48,0.48],"t":117},{"s":[0.48,0.48],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100.39,104.52],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100.39,111.47],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[101.89,106.38],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[93.45,107.07],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100.39,104.52],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[101.89,106.38],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[101.89,106.38],"t":117},{"s":[100.39,104.52],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.28,0],[0,0.25],[-0.25,0],[0,-0.28]],"o":[[0,0.25],[-0.25,0],[0,-0.28],[0.28,0],[0,0]],"v":[[0.95,0.49],[0.46,0.95],[0,0.49],[0.46,0],[0.95,0.49]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.28,0],[0,0.01],[-0.25,0],[0,-0.01]],"o":[[0,0.01],[-0.25,0],[0,-0.01],[0.28,0],[0,0]],"v":[[0.95,0.02],[0.46,0.03],[0,0.02],[0.46,0],[0.95,0.02]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.28,0],[0,0.25],[-0.25,0],[0,-0.28]],"o":[[0,0.25],[-0.25,0],[0,-0.28],[0.28,0],[0,0]],"v":[[0.95,0.49],[0.46,0.95],[0,0.49],[0.46,0],[0.95,0.49]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.28,0],[0,0.25],[-0.25,0],[0,-0.28]],"o":[[0,0.25],[-0.25,0],[0,-0.28],[0.28,0],[0,0]],"v":[[0.95,0.49],[0.46,0.95],[0,0.49],[0.46,0],[0.95,0.49]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.28,0],[0,0.25],[-0.25,0],[0,-0.28]],"o":[[0,0.25],[-0.25,0],[0,-0.28],[0.28,0],[0,0]],"v":[[0.95,0.49],[0.46,0.95],[0,0.49],[0.46,0],[0.95,0.49]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.28,0],[0,0.25],[-0.25,0],[0,-0.28]],"o":[[0,0.25],[-0.25,0],[0,-0.28],[0.28,0],[0,0]],"v":[[0.95,0.49],[0.46,0.95],[0,0.49],[0.46,0],[0.95,0.49]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.28,0],[0,0.25],[-0.25,0],[0,-0.28]],"o":[[0,0.25],[-0.25,0],[0,-0.28],[0.28,0],[0,0]],"v":[[0.95,0.49],[0.46,0.95],[0,0.49],[0.46,0],[0.95,0.49]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[0.28,0],[0,0.25],[-0.25,0],[0,-0.28]],"o":[[0,0.25],[-0.25,0],[0,-0.28],[0.28,0],[0,0]],"v":[[0.95,0.49],[0.46,0.95],[0,0.49],[0.46,0],[0.95,0.49]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":117},{"s":[0.9334,0.9922,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":16},{"ty":4,"nm":" / / / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.94,0.95],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.94,0.03],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.94,0.95],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.94,0.95],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.94,0.95],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.94,0.95],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.94,0.95],"t":117},{"s":[0.94,0.95],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[103.22,105.95],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[103.22,111.51],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[104.35,104.86],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[95.91,105.55],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[103.22,105.95],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[104.35,104.86],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[104.35,104.86],"t":117},{"s":[103.22,105.95],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.52],[-0.55,0],[0,-0.52]],"o":[[0,0.52],[-0.55,0],[0,-0.52],[0.52,0],[0,0]],"v":[[1.88,0.95],[0.95,1.91],[0,0.95],[0.95,0],[1.88,0.95]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.02],[-0.55,0],[0,-0.02]],"o":[[0,0.02],[-0.55,0],[0,-0.02],[0.52,0],[0,0]],"v":[[1.88,0.03],[0.95,0.06],[0,0.03],[0.95,0],[1.88,0.03]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.52],[-0.55,0],[0,-0.52]],"o":[[0,0.52],[-0.55,0],[0,-0.52],[0.52,0],[0,0]],"v":[[1.88,0.95],[0.95,1.91],[0,0.95],[0.95,0],[1.88,0.95]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.52],[-0.55,0],[0,-0.52]],"o":[[0,0.52],[-0.55,0],[0,-0.52],[0.52,0],[0,0]],"v":[[1.88,0.95],[0.95,1.91],[0,0.95],[0.95,0],[1.88,0.95]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.52],[-0.55,0],[0,-0.52]],"o":[[0,0.52],[-0.55,0],[0,-0.52],[0.52,0],[0,0]],"v":[[1.88,0.95],[0.95,1.91],[0,0.95],[0.95,0],[1.88,0.95]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.52],[-0.55,0],[0,-0.52]],"o":[[0,0.52],[-0.55,0],[0,-0.52],[0.52,0],[0,0]],"v":[[1.88,0.95],[0.95,1.91],[0,0.95],[0.95,0],[1.88,0.95]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.52],[-0.55,0],[0,-0.52]],"o":[[0,0.52],[-0.55,0],[0,-0.52],[0.52,0],[0,0]],"v":[[1.88,0.95],[0.95,1.91],[0,0.95],[0.95,0],[1.88,0.95]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.52],[-0.55,0],[0,-0.52]],"o":[[0,0.52],[-0.55,0],[0,-0.52],[0.52,0],[0,0]],"v":[[1.88,0.95],[0.95,1.91],[0,0.95],[0.95,0],[1.88,0.95]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":117},{"s":[0.9334,0.9922,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":17},{"ty":4,"nm":" / / / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.4,2.38],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.4,0.08],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.4,2.38],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.4,2.38],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.4,2.38],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.4,2.38],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.4,2.38],"t":117},{"s":[2.4,2.38],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[105.91,99.35],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[105.91,111.3],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[98.82,101.29],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.38,101.98],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[105.91,99.35],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[98.82,101.29],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[98.82,101.29],"t":117},{"s":[105.91,99.35],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.32,0],[0,1.32],[-1.32,0],[0,-1.29]],"o":[[0,1.32],[-1.32,0],[0,-1.29],[1.32,0],[0,0]],"v":[[4.8,2.37],[2.4,4.77],[0,2.37],[2.4,0],[4.8,2.37]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.32,0],[0,0.04],[-1.32,0],[0,-0.04]],"o":[[0,0.04],[-1.32,0],[0,-0.04],[1.32,0],[0,0]],"v":[[4.8,0.08],[2.4,0.16],[0,0.08],[2.4,0],[4.8,0.08]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.32,0],[0,1.32],[-1.32,0],[0,-1.29]],"o":[[0,1.32],[-1.32,0],[0,-1.29],[1.32,0],[0,0]],"v":[[4.8,2.37],[2.4,4.77],[0,2.37],[2.4,0],[4.8,2.37]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.32,0],[0,1.32],[-1.32,0],[0,-1.29]],"o":[[0,1.32],[-1.32,0],[0,-1.29],[1.32,0],[0,0]],"v":[[4.8,2.37],[2.4,4.77],[0,2.37],[2.4,0],[4.8,2.37]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.32,0],[0,1.32],[-1.32,0],[0,-1.29]],"o":[[0,1.32],[-1.32,0],[0,-1.29],[1.32,0],[0,0]],"v":[[4.8,2.37],[2.4,4.77],[0,2.37],[2.4,0],[4.8,2.37]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.32,0],[0,1.32],[-1.32,0],[0,-1.29]],"o":[[0,1.32],[-1.32,0],[0,-1.29],[1.32,0],[0,0]],"v":[[4.8,2.37],[2.4,4.77],[0,2.37],[2.4,0],[4.8,2.37]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.32,0],[0,1.32],[-1.32,0],[0,-1.29]],"o":[[0,1.32],[-1.32,0],[0,-1.29],[1.32,0],[0,0]],"v":[[4.8,2.37],[2.4,4.77],[0,2.37],[2.4,0],[4.8,2.37]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[1.32,0],[0,1.32],[-1.32,0],[0,-1.29]],"o":[[0,1.32],[-1.32,0],[0,-1.29],[1.32,0],[0,0]],"v":[[4.8,2.37],[2.4,4.77],[0,2.37],[2.4,0],[4.8,2.37]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":117},{"s":[0.9334,0.9922,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":18},{"ty":4,"nm":" / / / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.45,6.45],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.45,0.21],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.45,6.45],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.45,6.45],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.45,6.45],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.45,6.45],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.45,6.45],"t":117},{"s":[6.45,6.45],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[104.17,101.01],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[104.17,111.35],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[101.13,101.01],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[92.69,101.69],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[104.17,101.01],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[101.13,101.01],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[101.13,101.01],"t":117},{"s":[104.17,101.01],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3.57,0],[0,3.54],[-3.54,0],[0,-3.57]],"o":[[0,3.54],[-3.54,0],[0,-3.57],[3.57,0],[0,0]],"v":[[12.89,6.46],[6.43,12.89],[0,6.46],[6.43,0],[12.89,6.46]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3.57,0],[0,0.12],[-3.54,0],[0,-0.12]],"o":[[0,0.12],[-3.54,0],[0,-0.12],[3.57,0],[0,0]],"v":[[12.89,0.21],[6.43,0.42],[0,0.21],[6.43,0],[12.89,0.21]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3.57,0],[0,3.54],[-3.54,0],[0,-3.57]],"o":[[0,3.54],[-3.54,0],[0,-3.57],[3.57,0],[0,0]],"v":[[12.89,6.46],[6.43,12.89],[0,6.46],[6.43,0],[12.89,6.46]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3.57,0],[0,3.54],[-3.54,0],[0,-3.57]],"o":[[0,3.54],[-3.54,0],[0,-3.57],[3.57,0],[0,0]],"v":[[12.89,6.46],[6.43,12.89],[0,6.46],[6.43,0],[12.89,6.46]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3.57,0],[0,3.54],[-3.54,0],[0,-3.57]],"o":[[0,3.54],[-3.54,0],[0,-3.57],[3.57,0],[0,0]],"v":[[12.89,6.46],[6.43,12.89],[0,6.46],[6.43,0],[12.89,6.46]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3.57,0],[0,3.54],[-3.54,0],[0,-3.57]],"o":[[0,3.54],[-3.54,0],[0,-3.57],[3.57,0],[0,0]],"v":[[12.89,6.46],[6.43,12.89],[0,6.46],[6.43,0],[12.89,6.46]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3.57,0],[0,3.54],[-3.54,0],[0,-3.57]],"o":[[0,3.54],[-3.54,0],[0,-3.57],[3.57,0],[0,0]],"v":[[12.89,6.46],[6.43,12.89],[0,6.46],[6.43,0],[12.89,6.46]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[3.57,0],[0,3.54],[-3.54,0],[0,-3.57]],"o":[[0,3.54],[-3.54,0],[0,-3.57],[3.57,0],[0,0]],"v":[[12.89,6.46],[6.43,12.89],[0,6.46],[6.43,0],[12.89,6.46]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[12.887200355529785,0.008924400433897972],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[12.887200355529785,0.0002937199897132814],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[12.887200355529785,0.008924400433897972],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[12.887200355529785,0.008924400433897972],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[12.887200355529785,0.008924400433897972],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[12.887200355529785,0.008924400433897972],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[12.887200355529785,0.008924400433897972],"t":117},{"s":[12.887200355529785,0.008924400433897972],"t":137}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":117},{"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":137}]}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.005847049877047539,0.008924400433897972],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.005847049877047539,0.0002937199897132814],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.005847049877047539,0.008924400433897972],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.005847049877047539,0.008924400433897972],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.005847049877047539,0.008924400433897972],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.005847049877047539,0.008924400433897972],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.005847049877047539,0.008924400433897972],"t":117},{"s":[0.005847049877047539,0.008924400433897972],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":19},{"ty":4,"nm":" / / / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.68,7.68],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.88,0.26],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.68,7.68],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.68,7.68],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.68,7.68],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.68,7.68],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.68,7.68],"t":117},{"s":[7.68,7.68],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[104.17,101.01],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[104.17,111.36],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[101.13,101.01],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[92.69,101.69],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[104.17,101.01],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[101.13,101.01],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[101.13,101.01],"t":117},{"s":[104.17,101.01],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[4.25,0],[0,4.22],[-4.22,0],[0,-4.25]],"o":[[0,4.22],[-4.22,0],[0,-4.25],[4.25,0],[0,0]],"v":[[15.36,7.69],[7.66,15.36],[0,7.69],[7.66,0],[15.36,7.69]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[9.84,0],[0,0.14],[-4.22,0],[0,-0.14]],"o":[[0,0.14],[-9.84,0],[0,-0.14],[4.25,0],[0,0]],"v":[[15.56,0.25],[7.87,0.52],[0.21,0.25],[7.87,0],[15.56,0.25]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[4.25,0],[0,4.22],[-4.22,0],[0,-4.25]],"o":[[0,4.22],[-4.22,0],[0,-4.25],[4.25,0],[0,0]],"v":[[15.36,7.69],[7.66,15.36],[0,7.69],[7.66,0],[15.36,7.69]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[4.25,0],[0,4.22],[-4.22,0],[0,-4.25]],"o":[[0,4.22],[-4.22,0],[0,-4.25],[4.25,0],[0,0]],"v":[[15.36,7.69],[7.66,15.36],[0,7.69],[7.66,0],[15.36,7.69]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[4.25,0],[0,4.22],[-4.22,0],[0,-4.25]],"o":[[0,4.22],[-4.22,0],[0,-4.25],[4.25,0],[0,0]],"v":[[15.36,7.69],[7.66,15.36],[0,7.69],[7.66,0],[15.36,7.69]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[4.25,0],[0,4.22],[-4.22,0],[0,-4.25]],"o":[[0,4.22],[-4.22,0],[0,-4.25],[4.25,0],[0,0]],"v":[[15.36,7.69],[7.66,15.36],[0,7.69],[7.66,0],[15.36,7.69]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[4.25,0],[0,4.22],[-4.22,0],[0,-4.25]],"o":[[0,4.22],[-4.22,0],[0,-4.25],[4.25,0],[0,0]],"v":[[15.36,7.69],[7.66,15.36],[0,7.69],[7.66,0],[15.36,7.69]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[4.25,0],[0,4.22],[-4.22,0],[0,-4.25]],"o":[[0,4.22],[-4.22,0],[0,-4.25],[4.25,0],[0,0]],"v":[[15.36,7.69],[7.66,15.36],[0,7.69],[7.66,0],[15.36,7.69]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":117},{"s":[0.9334,0.9922,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":20},{"ty":4,"nm":" / / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":2,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.69,10.69],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[11,0.5],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.69,10.69],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.69,10.69],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.69,10.69],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.69,10.69],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.69,10.69],"t":117},{"s":[10.69,10.69],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[104.17,101.01],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[104,111.5],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[101.13,101.01],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[92.69,101.69],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[104.17,101.01],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[101.13,101.01],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[101.13,101.01],"t":117},{"s":[104.17,101.01],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[5.91,0],[0,5.88],[-5.88,0],[0,-5.91]],"o":[[0,5.88],[-5.88,0],[0,-5.91],[5.91,0],[0,0]],"v":[[21.39,10.71],[10.68,21.39],[0,10.71],[10.68,0],[21.39,10.71]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[6.08,0],[0,0.27],[-6.05,0],[0,-0.28]],"o":[[0,0.27],[-6.05,0],[0,-0.28],[6.08,0],[0,0]],"v":[[22,0.5],[10.98,1],[0,0.5],[10.98,0],[22,0.5]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[5.91,0],[0,5.88],[-5.88,0],[0,-5.91]],"o":[[0,5.88],[-5.88,0],[0,-5.91],[5.91,0],[0,0]],"v":[[21.39,10.71],[10.68,21.39],[0,10.71],[10.68,0],[21.39,10.71]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[5.91,0],[0,5.88],[-5.88,0],[0,-5.91]],"o":[[0,5.88],[-5.88,0],[0,-5.91],[5.91,0],[0,0]],"v":[[21.39,10.71],[10.68,21.39],[0,10.71],[10.68,0],[21.39,10.71]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[5.91,0],[0,5.88],[-5.88,0],[0,-5.91]],"o":[[0,5.88],[-5.88,0],[0,-5.91],[5.91,0],[0,0]],"v":[[21.39,10.71],[10.68,21.39],[0,10.71],[10.68,0],[21.39,10.71]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[5.91,0],[0,5.88],[-5.88,0],[0,-5.91]],"o":[[0,5.88],[-5.88,0],[0,-5.91],[5.91,0],[0,0]],"v":[[21.39,10.71],[10.68,21.39],[0,10.71],[10.68,0],[21.39,10.71]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[5.91,0],[0,5.88],[-5.88,0],[0,-5.91]],"o":[[0,5.88],[-5.88,0],[0,-5.91],[5.91,0],[0,0]],"v":[[21.39,10.71],[10.68,21.39],[0,10.71],[10.68,0],[21.39,10.71]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[5.91,0],[0,5.88],[-5.88,0],[0,-5.91]],"o":[[0,5.88],[-5.88,0],[0,-5.91],[5.91,0],[0,0]],"v":[[21.39,10.71],[10.68,21.39],[0,10.71],[10.68,0],[21.39,10.71]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[21.266300201416016,10.696399688720703],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[21.875,0.5001150369644165],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[21.266300201416016,10.696399688720703],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[21.266300201416016,10.696399688720703],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[21.266300201416016,10.696399688720703],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[21.266300201416016,10.696399688720703],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[21.266300201416016,10.696399688720703],"t":117},{"s":[21.266300201416016,10.696399688720703],"t":137}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":117},{"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":137}]}},"t":2,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.693300247192383,10.696399688720703],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.99940013885498,0.5001150369644165],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.693300247192383,10.696399688720703],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.693300247192383,10.696399688720703],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.693300247192383,10.696399688720703],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.693300247192383,10.696399688720703],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.693300247192383,10.696399688720703],"t":117},{"s":[10.693300247192383,10.696399688720703],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":21},{"ty":4,"nm":" / / / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.48,0.48],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.48,0.02],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.48,0.48],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.48,0.48],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.48,0.48],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.48,0.48],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.48,0.48],"t":117},{"s":[0.48,0.48],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[71.52,104.52],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[71.52,111.47],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[72.89,106.38],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[66.32,107.07],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[71.52,104.52],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[72.89,106.38],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[72.89,106.38],"t":117},{"s":[71.52,104.52],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.25,0],[0,0.25],[-0.28,0],[0,-0.28]],"o":[[0,0.25],[-0.28,0],[0,-0.28],[0.25,0],[0,0]],"v":[[0.95,0.49],[0.49,0.95],[0,0.49],[0.49,0],[0.95,0.49]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.25,0],[0,0.01],[-0.28,0],[0,-0.01]],"o":[[0,0.01],[-0.28,0],[0,-0.01],[0.25,0],[0,0]],"v":[[0.95,0.02],[0.49,0.03],[0,0.02],[0.49,0],[0.95,0.02]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.25,0],[0,0.25],[-0.28,0],[0,-0.28]],"o":[[0,0.25],[-0.28,0],[0,-0.28],[0.25,0],[0,0]],"v":[[0.95,0.49],[0.49,0.95],[0,0.49],[0.49,0],[0.95,0.49]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.25,0],[0,0.25],[-0.28,0],[0,-0.28]],"o":[[0,0.25],[-0.28,0],[0,-0.28],[0.25,0],[0,0]],"v":[[0.95,0.49],[0.49,0.95],[0,0.49],[0.49,0],[0.95,0.49]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.25,0],[0,0.25],[-0.28,0],[0,-0.28]],"o":[[0,0.25],[-0.28,0],[0,-0.28],[0.25,0],[0,0]],"v":[[0.95,0.49],[0.49,0.95],[0,0.49],[0.49,0],[0.95,0.49]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.25,0],[0,0.25],[-0.28,0],[0,-0.28]],"o":[[0,0.25],[-0.28,0],[0,-0.28],[0.25,0],[0,0]],"v":[[0.95,0.49],[0.49,0.95],[0,0.49],[0.49,0],[0.95,0.49]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.25,0],[0,0.25],[-0.28,0],[0,-0.28]],"o":[[0,0.25],[-0.28,0],[0,-0.28],[0.25,0],[0,0]],"v":[[0.95,0.49],[0.49,0.95],[0,0.49],[0.49,0],[0.95,0.49]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[0.25,0],[0,0.25],[-0.28,0],[0,-0.28]],"o":[[0,0.25],[-0.28,0],[0,-0.28],[0.25,0],[0,0]],"v":[[0.95,0.49],[0.49,0.95],[0,0.49],[0.49,0],[0.95,0.49]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":117},{"s":[0.9334,0.9922,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":22},{"ty":4,"nm":" / / / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.95,0.95],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.95,0.03],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.95,0.95],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.95,0.95],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.95,0.95],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.95,0.95],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.95,0.95],"t":117},{"s":[0.95,0.95],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[74.37,105.95],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[74.37,111.51],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[75.37,104.86],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[68.8,105.55],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[74.37,105.95],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[75.37,104.86],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[75.37,104.86],"t":117},{"s":[74.37,105.95],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.52],[-0.52,0],[0,-0.52]],"o":[[0,0.52],[-0.52,0],[0,-0.52],[0.52,0],[0,0]],"v":[[1.91,0.95],[0.95,1.91],[0,0.95],[0.95,0],[1.91,0.95]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.02],[-0.52,0],[0,-0.02]],"o":[[0,0.02],[-0.52,0],[0,-0.02],[0.52,0],[0,0]],"v":[[1.91,0.03],[0.95,0.06],[0,0.03],[0.95,0],[1.91,0.03]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.52],[-0.52,0],[0,-0.52]],"o":[[0,0.52],[-0.52,0],[0,-0.52],[0.52,0],[0,0]],"v":[[1.91,0.95],[0.95,1.91],[0,0.95],[0.95,0],[1.91,0.95]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.52],[-0.52,0],[0,-0.52]],"o":[[0,0.52],[-0.52,0],[0,-0.52],[0.52,0],[0,0]],"v":[[1.91,0.95],[0.95,1.91],[0,0.95],[0.95,0],[1.91,0.95]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.52],[-0.52,0],[0,-0.52]],"o":[[0,0.52],[-0.52,0],[0,-0.52],[0.52,0],[0,0]],"v":[[1.91,0.95],[0.95,1.91],[0,0.95],[0.95,0],[1.91,0.95]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.52],[-0.52,0],[0,-0.52]],"o":[[0,0.52],[-0.52,0],[0,-0.52],[0.52,0],[0,0]],"v":[[1.91,0.95],[0.95,1.91],[0,0.95],[0.95,0],[1.91,0.95]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.52],[-0.52,0],[0,-0.52]],"o":[[0,0.52],[-0.52,0],[0,-0.52],[0.52,0],[0,0]],"v":[[1.91,0.95],[0.95,1.91],[0,0.95],[0.95,0],[1.91,0.95]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[0.52,0],[0,0.52],[-0.52,0],[0,-0.52]],"o":[[0,0.52],[-0.52,0],[0,-0.52],[0.52,0],[0,0]],"v":[[1.91,0.95],[0.95,1.91],[0,0.95],[0.95,0],[1.91,0.95]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":117},{"s":[0.9334,0.9922,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":23},{"ty":4,"nm":" / / / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.38,2.38],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.38,0.08],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.38,2.38],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.38,2.38],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.38,2.38],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.38,2.38],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[2.38,2.38],"t":117},{"s":[2.38,2.38],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[77.06,99.35],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[77.06,111.3],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[69.8,101.29],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[63.23,101.98],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[77.06,99.35],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[69.8,101.29],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[69.8,101.29],"t":117},{"s":[77.06,99.35],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.32,0],[0,1.32],[-1.32,0],[0,-1.29]],"o":[[0,1.32],[-1.32,0],[0,-1.29],[1.32,0],[0,0]],"v":[[4.77,2.37],[2.37,4.77],[0,2.37],[2.37,0],[4.77,2.37]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.32,0],[0,0.04],[-1.32,0],[0,-0.04]],"o":[[0,0.04],[-1.32,0],[0,-0.04],[1.32,0],[0,0]],"v":[[4.77,0.08],[2.37,0.16],[0,0.08],[2.37,0],[4.77,0.08]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.32,0],[0,1.32],[-1.32,0],[0,-1.29]],"o":[[0,1.32],[-1.32,0],[0,-1.29],[1.32,0],[0,0]],"v":[[4.77,2.37],[2.37,4.77],[0,2.37],[2.37,0],[4.77,2.37]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.32,0],[0,1.32],[-1.32,0],[0,-1.29]],"o":[[0,1.32],[-1.32,0],[0,-1.29],[1.32,0],[0,0]],"v":[[4.77,2.37],[2.37,4.77],[0,2.37],[2.37,0],[4.77,2.37]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.32,0],[0,1.32],[-1.32,0],[0,-1.29]],"o":[[0,1.32],[-1.32,0],[0,-1.29],[1.32,0],[0,0]],"v":[[4.77,2.37],[2.37,4.77],[0,2.37],[2.37,0],[4.77,2.37]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.32,0],[0,1.32],[-1.32,0],[0,-1.29]],"o":[[0,1.32],[-1.32,0],[0,-1.29],[1.32,0],[0,0]],"v":[[4.77,2.37],[2.37,4.77],[0,2.37],[2.37,0],[4.77,2.37]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.32,0],[0,1.32],[-1.32,0],[0,-1.29]],"o":[[0,1.32],[-1.32,0],[0,-1.29],[1.32,0],[0,0]],"v":[[4.77,2.37],[2.37,4.77],[0,2.37],[2.37,0],[4.77,2.37]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[1.32,0],[0,1.32],[-1.32,0],[0,-1.29]],"o":[[0,1.32],[-1.32,0],[0,-1.29],[1.32,0],[0,0]],"v":[[4.77,2.37],[2.37,4.77],[0,2.37],[2.37,0],[4.77,2.37]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":117},{"s":[0.9334,0.9922,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":24},{"ty":4,"nm":" / / / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.45,6.45],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.45,0.21],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.45,6.45],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.45,6.45],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.45,6.45],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.45,6.45],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[6.45,6.45],"t":117},{"s":[6.45,6.45],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[75.31,101.01],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[75.31,111.35],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[72.27,101.01],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[65.69,101.69],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[75.31,101.01],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[72.27,101.01],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[72.27,101.01],"t":117},{"s":[75.31,101.01],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3.54,0],[0,3.54],[-3.57,0],[0,-3.57]],"o":[[0,3.54],[-3.57,0],[0,-3.57],[3.54,0],[0,0]],"v":[[12.89,6.46],[6.46,12.89],[0,6.46],[6.46,0],[12.89,6.46]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3.54,0],[0,0.12],[-3.57,0],[0,-0.12]],"o":[[0,0.12],[-3.57,0],[0,-0.12],[3.54,0],[0,0]],"v":[[12.89,0.21],[6.46,0.42],[0,0.21],[6.46,0],[12.89,0.21]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3.54,0],[0,3.54],[-3.57,0],[0,-3.57]],"o":[[0,3.54],[-3.57,0],[0,-3.57],[3.54,0],[0,0]],"v":[[12.89,6.46],[6.46,12.89],[0,6.46],[6.46,0],[12.89,6.46]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3.54,0],[0,3.54],[-3.57,0],[0,-3.57]],"o":[[0,3.54],[-3.57,0],[0,-3.57],[3.54,0],[0,0]],"v":[[12.89,6.46],[6.46,12.89],[0,6.46],[6.46,0],[12.89,6.46]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3.54,0],[0,3.54],[-3.57,0],[0,-3.57]],"o":[[0,3.54],[-3.57,0],[0,-3.57],[3.54,0],[0,0]],"v":[[12.89,6.46],[6.46,12.89],[0,6.46],[6.46,0],[12.89,6.46]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3.54,0],[0,3.54],[-3.57,0],[0,-3.57]],"o":[[0,3.54],[-3.57,0],[0,-3.57],[3.54,0],[0,0]],"v":[[12.89,6.46],[6.46,12.89],[0,6.46],[6.46,0],[12.89,6.46]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[3.54,0],[0,3.54],[-3.57,0],[0,-3.57]],"o":[[0,3.54],[-3.57,0],[0,-3.57],[3.54,0],[0,0]],"v":[[12.89,6.46],[6.46,12.89],[0,6.46],[6.46,0],[12.89,6.46]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[3.54,0],[0,3.54],[-3.57,0],[0,-3.57]],"o":[[0,3.54],[-3.57,0],[0,-3.57],[3.54,0],[0,0]],"v":[[12.89,6.46],[6.46,12.89],[0,6.46],[6.46,0],[12.89,6.46]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[12.891799926757812,0.008924400433897972],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[12.891799926757812,0.0002937199897132814],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[12.891799926757812,0.008924400433897972],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[12.891799926757812,0.008924400433897972],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[12.891799926757812,0.008924400433897972],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[12.891799926757812,0.008924400433897972],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[12.891799926757812,0.008924400433897972],"t":117},{"s":[12.891799926757812,0.008924400433897972],"t":137}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":117},{"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":137}]}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.010463099926710129,0.008924400433897972],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.010463099926710129,0.0002937199897132814],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.010463099926710129,0.008924400433897972],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.010463099926710129,0.008924400433897972],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.010463099926710129,0.008924400433897972],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.010463099926710129,0.008924400433897972],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.010463099926710129,0.008924400433897972],"t":117},{"s":[0.010463099926710129,0.008924400433897972],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":25},{"ty":4,"nm":" / / / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.68,7.68],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.95,0.26],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.68,7.68],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.68,7.68],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.68,7.68],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.68,7.68],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[7.68,7.68],"t":117},{"s":[7.68,7.68],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[75.31,101.01],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[75.31,111.36],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[72.27,101.01],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[65.69,101.69],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[75.31,101.01],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[72.27,101.01],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[72.27,101.01],"t":117},{"s":[75.31,101.01],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[4.22,0],[0,4.22],[-4.25,0],[0,-4.25]],"o":[[0,4.22],[-4.25,0],[0,-4.25],[4.22,0],[0,0]],"v":[[15.36,7.69],[7.69,15.36],[0,7.69],[7.69,0],[15.36,7.69]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[10.18,0],[0,0.14],[-4.25,0],[0,-0.14]],"o":[[0,0.14],[-10.18,0],[0,-0.14],[4.22,0],[0,0]],"v":[[15.62,0.25],[7.96,0.52],[0.27,0.25],[7.96,0],[15.62,0.25]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[4.22,0],[0,4.22],[-4.25,0],[0,-4.25]],"o":[[0,4.22],[-4.25,0],[0,-4.25],[4.22,0],[0,0]],"v":[[15.36,7.69],[7.69,15.36],[0,7.69],[7.69,0],[15.36,7.69]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[4.22,0],[0,4.22],[-4.25,0],[0,-4.25]],"o":[[0,4.22],[-4.25,0],[0,-4.25],[4.22,0],[0,0]],"v":[[15.36,7.69],[7.69,15.36],[0,7.69],[7.69,0],[15.36,7.69]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[4.22,0],[0,4.22],[-4.25,0],[0,-4.25]],"o":[[0,4.22],[-4.25,0],[0,-4.25],[4.22,0],[0,0]],"v":[[15.36,7.69],[7.69,15.36],[0,7.69],[7.69,0],[15.36,7.69]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[4.22,0],[0,4.22],[-4.25,0],[0,-4.25]],"o":[[0,4.22],[-4.25,0],[0,-4.25],[4.22,0],[0,0]],"v":[[15.36,7.69],[7.69,15.36],[0,7.69],[7.69,0],[15.36,7.69]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[4.22,0],[0,4.22],[-4.25,0],[0,-4.25]],"o":[[0,4.22],[-4.25,0],[0,-4.25],[4.22,0],[0,0]],"v":[[15.36,7.69],[7.69,15.36],[0,7.69],[7.69,0],[15.36,7.69]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[4.22,0],[0,4.22],[-4.25,0],[0,-4.25]],"o":[[0,4.22],[-4.25,0],[0,-4.25],[4.22,0],[0,0]],"v":[[15.36,7.69],[7.69,15.36],[0,7.69],[7.69,0],[15.36,7.69]]}],"t":137}]}},{"ty":"fl","bm":0,"hd":false,"nm":"","c":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.9334,0.9922,1],"t":117},{"s":[0.9334,0.9922,1],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":26},{"ty":4,"nm":" / / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":2,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.69,10.69],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.5,0.5],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.69,10.69],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.69,10.69],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.69,10.69],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.69,10.69],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.69,10.69],"t":117},{"s":[10.69,10.69],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[75.31,101.01],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[75.5,111.5],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[72.27,101.01],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[65.69,101.69],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[75.31,101.01],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[72.27,101.01],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[72.27,101.01],"t":117},{"s":[75.31,101.01],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[5.88,0],[0,5.88],[-5.91,0],[0,-5.91]],"o":[[0,5.88],[-5.91,0],[0,-5.91],[5.88,0],[0,0]],"v":[[21.39,10.71],[10.71,21.39],[0,10.71],[10.71,0],[21.39,10.71]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[5.77,0],[0,0.27],[-5.8,0],[0,-0.28]],"o":[[0,0.27],[-5.8,0],[0,-0.28],[5.77,0],[0,0]],"v":[[21,0.5],[10.52,1],[0,0.5],[10.52,0],[21,0.5]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[5.88,0],[0,5.88],[-5.91,0],[0,-5.91]],"o":[[0,5.88],[-5.91,0],[0,-5.91],[5.88,0],[0,0]],"v":[[21.39,10.71],[10.71,21.39],[0,10.71],[10.71,0],[21.39,10.71]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[5.88,0],[0,5.88],[-5.91,0],[0,-5.91]],"o":[[0,5.88],[-5.91,0],[0,-5.91],[5.88,0],[0,0]],"v":[[21.39,10.71],[10.71,21.39],[0,10.71],[10.71,0],[21.39,10.71]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[5.88,0],[0,5.88],[-5.91,0],[0,-5.91]],"o":[[0,5.88],[-5.91,0],[0,-5.91],[5.88,0],[0,0]],"v":[[21.39,10.71],[10.71,21.39],[0,10.71],[10.71,0],[21.39,10.71]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[5.88,0],[0,5.88],[-5.91,0],[0,-5.91]],"o":[[0,5.88],[-5.91,0],[0,-5.91],[5.88,0],[0,0]],"v":[[21.39,10.71],[10.71,21.39],[0,10.71],[10.71,0],[21.39,10.71]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[5.88,0],[0,5.88],[-5.91,0],[0,-5.91]],"o":[[0,5.88],[-5.91,0],[0,-5.91],[5.88,0],[0,0]],"v":[[21.39,10.71],[10.71,21.39],[0,10.71],[10.71,0],[21.39,10.71]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[5.88,0],[0,5.88],[-5.91,0],[0,-5.91]],"o":[[0,5.88],[-5.91,0],[0,-5.91],[5.88,0],[0,0]],"v":[[21.39,10.71],[10.71,21.39],[0,10.71],[10.71,0],[21.39,10.71]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[21.270999908447266,10.696399688720703],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[20.885199546813965,0.5001150369644165],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[21.270999908447266,10.696399688720703],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[21.270999908447266,10.696399688720703],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[21.270999908447266,10.696399688720703],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[21.270999908447266,10.696399688720703],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[21.270999908447266,10.696399688720703],"t":117},{"s":[21.270999908447266,10.696399688720703],"t":137}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":117},{"s":[0.12999999523162842,0.19611765027279945,0.5020000296854505,0.9882745105051527,1,0.000039215686274509805,0.000039215686274509805,0.000039215686274509805],"t":137}]}},"t":2,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.697999954223633,10.696399688720703],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.503899574279785,0.5001150369644165],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.697999954223633,10.696399688720703],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.697999954223633,10.696399688720703],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.697999954223633,10.696399688720703],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.697999954223633,10.696399688720703],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[10.697999954223633,10.696399688720703],"t":117},{"s":[10.697999954223633,10.696399688720703],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":27},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[36.74,14.19],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[36.74,14.19],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[36.74,14.19],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[30.53,14],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[36.74,14.19],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[36.74,14.19],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[36.74,14.19],"t":117},{"s":[36.74,14.19],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.24,99.82],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.24,99.82],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[87.2,99.82],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[80.47,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.24,99.82],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[87.2,99.82],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[87.2,99.82],"t":117},{"s":[90.24,99.82],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.42,0],[0,0],[1.26,0.62],[-0.43,3.11],[0,0],[-11.69,0.58],[-5.42,-0.03],[-3.94,-0.22],[-1.48,-10.56],[-0.02,-0.08],[3.05,-1.51]],"o":[[-1.23,0.62],[0,0],[-1.38,0],[-3.02,-1.51],[0,0],[1.45,-10.52],[4.92,-0.28],[4.25,0.03],[11.72,0.58],[0,0.08],[0.4,3.11],[0,0]],"v":[[69.09,27.45],[65.06,28.38],[8.41,28.38],[4.37,27.45],[0.07,19.82],[0.1,19.58],[22.78,0.37],[38.32,0],[50.6,0.37],[73.4,19.58],[73.43,19.82],[69.09,27.45]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.42,0],[0,0],[1.26,0.62],[-0.43,3.11],[0,0],[-11.69,0.58],[-5.42,-0.03],[-3.94,-0.22],[-1.48,-10.56],[-0.02,-0.08],[3.05,-1.51]],"o":[[-1.23,0.62],[0,0],[-1.38,0],[-3.02,-1.51],[0,0],[1.45,-10.52],[4.92,-0.28],[4.25,0.03],[11.72,0.58],[0,0.08],[0.4,3.11],[0,0]],"v":[[69.09,27.45],[65.06,28.38],[8.41,28.38],[4.37,27.45],[0.07,19.82],[0.1,19.58],[22.78,0.37],[38.32,0],[50.6,0.37],[73.4,19.58],[73.43,19.82],[69.09,27.45]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.42,0],[0,0],[1.26,0.62],[-0.43,3.11],[0,0],[-11.69,0.58],[-5.42,-0.03],[-3.94,-0.22],[-1.48,-10.56],[-0.02,-0.08],[3.05,-1.51]],"o":[[-1.23,0.62],[0,0],[-1.38,0],[-3.02,-1.51],[0,0],[1.45,-10.52],[4.92,-0.28],[4.25,0.03],[11.72,0.58],[0,0.08],[0.4,3.11],[0,0]],"v":[[69.09,27.45],[65.06,28.38],[8.41,28.38],[4.37,27.45],[0.07,19.82],[0.1,19.58],[22.78,0.37],[38.32,0],[50.6,0.37],[73.4,19.58],[73.43,19.82],[69.09,27.45]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.19,0],[0,0],[1.06,0.61],[-0.36,3.07],[0,0],[-9.87,0.58],[-4.57,-0.03],[-3.32,-0.21],[-0.93,-10.32],[-0.02,-0.08],[2.57,-1.49]],"o":[[-1.04,0.61],[0,0],[-1.17,0],[-2.54,-1.49],[0,0],[1.22,-10.38],[4.15,-0.27],[3.58,0.03],[13.81,0.88],[0,0.08],[0.34,3.07],[0,0]],"v":[[57.34,27.09],[53.94,28],[6.15,28],[2.74,27.09],[0.11,19.56],[0.14,19.32],[18.27,0.37],[31.38,0],[41.74,0.37],[60.98,19.32],[61.01,19.56],[57.34,27.09]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.42,0],[0,0],[1.26,0.62],[-0.43,3.11],[0,0],[-11.69,0.58],[-5.42,-0.03],[-3.94,-0.22],[-1.48,-10.56],[-0.02,-0.08],[3.05,-1.51]],"o":[[-1.23,0.62],[0,0],[-1.38,0],[-3.02,-1.51],[0,0],[1.45,-10.52],[4.92,-0.28],[4.25,0.03],[11.72,0.58],[0,0.08],[0.4,3.11],[0,0]],"v":[[69.09,27.45],[65.06,28.38],[8.41,28.38],[4.37,27.45],[0.07,19.82],[0.1,19.58],[22.78,0.37],[38.32,0],[50.6,0.37],[73.4,19.58],[73.43,19.82],[69.09,27.45]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.42,0],[0,0],[1.26,0.62],[-0.43,3.11],[0,0],[-11.69,0.58],[-5.42,-0.03],[-3.94,-0.22],[-1.48,-10.56],[-0.02,-0.08],[3.05,-1.51]],"o":[[-1.23,0.62],[0,0],[-1.38,0],[-3.02,-1.51],[0,0],[1.45,-10.52],[4.92,-0.28],[4.25,0.03],[11.72,0.58],[0,0.08],[0.4,3.11],[0,0]],"v":[[69.09,27.45],[65.06,28.38],[8.41,28.38],[4.37,27.45],[0.07,19.82],[0.1,19.58],[22.78,0.37],[38.32,0],[50.6,0.37],[73.4,19.58],[73.43,19.82],[69.09,27.45]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[1.42,0],[0,0],[1.26,0.62],[-0.43,3.11],[0,0],[-11.69,0.58],[-5.42,-0.03],[-3.94,-0.22],[-1.48,-10.56],[-0.02,-0.08],[3.05,-1.51]],"o":[[-1.23,0.62],[0,0],[-1.38,0],[-3.02,-1.51],[0,0],[1.45,-10.52],[4.92,-0.28],[4.25,0.03],[11.72,0.58],[0,0.08],[0.4,3.11],[0,0]],"v":[[69.09,27.45],[65.06,28.38],[8.41,28.38],[4.37,27.45],[0.07,19.82],[0.1,19.58],[22.78,0.37],[38.32,0],[50.6,0.37],[73.4,19.58],[73.43,19.82],[69.09,27.45]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[1.42,0],[0,0],[1.26,0.62],[-0.43,3.11],[0,0],[-11.69,0.58],[-5.42,-0.03],[-3.94,-0.22],[-1.48,-10.56],[-0.02,-0.08],[3.05,-1.51]],"o":[[-1.23,0.62],[0,0],[-1.38,0],[-3.02,-1.51],[0,0],[1.45,-10.52],[4.92,-0.28],[4.25,0.03],[11.72,0.58],[0,0.08],[0.4,3.11],[0,0]],"v":[[69.09,27.45],[65.06,28.38],[8.41,28.38],[4.37,27.45],[0.07,19.82],[0.1,19.58],[22.78,0.37],[38.32,0],[50.6,0.37],[73.4,19.58],[73.43,19.82],[69.09,27.45]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[31.217300415039062,2.0615499019622803],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[31.217300415039062,2.0615499019622803],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[31.217300415039062,2.0615499019622803],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[25.572599411010742,2.0387699604034424],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[31.217300415039062,2.0615499019622803],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[31.217300415039062,2.0615499019622803],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[31.217300415039062,2.0615499019622803],"t":117},{"s":[31.217300415039062,2.0615499019622803],"t":137}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":117},{"s":[0,0.011803921798718909,0.05101960852975939,0.07847059101100062,1,0.04317647174234484,0.18435294509167763,0.2706274646543989],"t":137}]}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[30.633899688720703,28.31909942626953],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[30.633899688720703,28.31909942626953],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[30.633899688720703,28.31909942626953],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[24.899499893188477,27.941699981689453],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[30.633899688720703,28.31909942626953],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[30.633899688720703,28.31909942626953],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[30.633899688720703,28.31909942626953],"t":117},{"s":[30.633899688720703,28.31909942626953],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":28},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[47.21,35.9],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[47.21,35.9],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[47.21,35.9],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[44.5,36],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[47.21,35.9],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[47.21,35.9],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[47.21,35.9],"t":117},{"s":[47.21,35.9],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.25,101.01],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.25,101.01],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[87.21,101.01],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[88.5,101],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.25,101.01],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[87.21,101.01],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[87.21,101.01],"t":117},{"s":[90.25,101.01],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[12,0],[0,0],[0,11.97],[0,0],[-21.3,0],[0,0],[0,-21.3],[0,0]],"o":[[0,12],[0,0],[-11.97,0],[0,0],[0,-21.3],[0,0],[21.33,0],[0,0],[0,0]],"v":[[94.41,50.04],[72.66,71.8],[21.76,71.8],[0,50.04],[0,38.71],[38.71,0],[55.67,0],[94.41,38.71],[94.41,50.04]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[12,0],[0,0],[0,11.97],[0,0],[-21.3,0],[0,0],[0,-21.3],[0,0]],"o":[[0,12],[0,0],[-11.97,0],[0,0],[0,-21.3],[0,0],[21.33,0],[0,0],[0,0]],"v":[[94.41,50.04],[72.66,71.8],[21.76,71.8],[0,50.04],[0,38.71],[38.71,0],[55.67,0],[94.41,38.71],[94.41,50.04]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[12,0],[0,0],[0,11.97],[0,0],[-21.3,0],[0,0],[0,-21.3],[0,0]],"o":[[0,12],[0,0],[-11.97,0],[0,0],[0,-21.3],[0,0],[21.33,0],[0,0],[0,0]],"v":[[94.41,50.04],[72.66,71.8],[21.76,71.8],[0,50.04],[0,38.71],[38.71,0],[55.67,0],[94.41,38.71],[94.41,50.04]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[10.93,0],[0,0],[0,12.01],[0,0],[-19.4,0],[0,0],[0,-21.36],[0,0]],"o":[[0,12.04],[0,0],[-10.9,0],[0,0],[0,-21.36],[0,0],[19.43,0],[0,0],[0,0]],"v":[[89,50.18],[66.18,72],[19.82,72],[0,50.18],[0,38.82],[35.26,0],[50.71,0],[89,38.82],[89,50.18]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[12,0],[0,0],[0,11.97],[0,0],[-21.3,0],[0,0],[0,-21.3],[0,0]],"o":[[0,12],[0,0],[-11.97,0],[0,0],[0,-21.3],[0,0],[21.33,0],[0,0],[0,0]],"v":[[94.41,50.04],[72.66,71.8],[21.76,71.8],[0,50.04],[0,38.71],[38.71,0],[55.67,0],[94.41,38.71],[94.41,50.04]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[12,0],[0,0],[0,11.97],[0,0],[-21.3,0],[0,0],[0,-21.3],[0,0]],"o":[[0,12],[0,0],[-11.97,0],[0,0],[0,-21.3],[0,0],[21.33,0],[0,0],[0,0]],"v":[[94.41,50.04],[72.66,71.8],[21.76,71.8],[0,50.04],[0,38.71],[38.71,0],[55.67,0],[94.41,38.71],[94.41,50.04]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[12,0],[0,0],[0,11.97],[0,0],[-21.3,0],[0,0],[0,-21.3],[0,0]],"o":[[0,12],[0,0],[-11.97,0],[0,0],[0,-21.3],[0,0],[21.33,0],[0,0],[0,0]],"v":[[94.41,50.04],[72.66,71.8],[21.76,71.8],[0,50.04],[0,38.71],[38.71,0],[55.67,0],[94.41,38.71],[94.41,50.04]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[12,0],[0,0],[0,11.97],[0,0],[-21.3,0],[0,0],[0,-21.3],[0,0]],"o":[[0,12],[0,0],[-11.97,0],[0,0],[0,-21.3],[0,0],[21.33,0],[0,0],[0,0]],"v":[[94.41,50.04],[72.66,71.8],[21.76,71.8],[0,50.04],[0,38.71],[38.71,0],[55.67,0],[94.41,38.71],[94.41,50.04]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[56.17570114135742,-36.271400451660156],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[56.17570114135742,-36.271400451660156],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[56.17570114135742,-36.271400451660156],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[58.23630142211914,-28.593900680541992],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[56.17570114135742,-36.271400451660156],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[56.17570114135742,-36.271400451660156],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[56.17570114135742,-36.271400451660156],"t":117},{"s":[56.17570114135742,-36.271400451660156],"t":137}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":117},{"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":137}]}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-24.73270034790039,44.637001037597656],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-24.73270034790039,44.637001037597656],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-24.73270034790039,44.637001037597656],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-22.528499603271484,44.76409912109375],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-24.73270034790039,44.637001037597656],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-24.73270034790039,44.637001037597656],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-24.73270034790039,44.637001037597656],"t":117},{"s":[-24.73270034790039,44.637001037597656],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":29},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[13.2,6.51],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[13.2,6.51],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[13.2,6.51],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[13,6.5],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[13.2,6.51],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[13.2,6.51],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[13.2,6.51],"t":117},{"s":[13.2,6.51],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.25,65.4],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.25,65.4],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[87.21,65.4],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[89,65.5],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.25,65.4],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[87.21,65.4],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[87.21,65.4],"t":117},{"s":[90.25,65.4],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,1.54],[0,0],[-1.54,0],[0,0],[0,-1.54],[0,0],[1.54,0]],"o":[[0,0],[-1.54,0],[0,0],[0,-1.54],[0,0],[1.54,0],[0,0],[0,1.54],[0,0]],"v":[[23.6,13.02],[2.8,13.02],[0,10.22],[0,2.77],[2.8,0],[23.6,0],[26.4,2.77],[26.4,10.22],[23.6,13.02]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,1.54],[0,0],[-1.54,0],[0,0],[0,-1.54],[0,0],[1.54,0]],"o":[[0,0],[-1.54,0],[0,0],[0,-1.54],[0,0],[1.54,0],[0,0],[0,1.54],[0,0]],"v":[[23.6,13.02],[2.8,13.02],[0,10.22],[0,2.77],[2.8,0],[23.6,0],[26.4,2.77],[26.4,10.22],[23.6,13.02]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,1.54],[0,0],[-1.54,0],[0,0],[0,-1.54],[0,0],[1.54,0]],"o":[[0,0],[-1.54,0],[0,0],[0,-1.54],[0,0],[1.54,0],[0,0],[0,1.54],[0,0]],"v":[[23.6,13.02],[2.8,13.02],[0,10.22],[0,2.77],[2.8,0],[23.6,0],[26.4,2.77],[26.4,10.22],[23.6,13.02]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,1.54],[0,0],[-1.52,0],[0,0],[0,-1.54],[0,0],[1.52,0]],"o":[[0,0],[-1.52,0],[0,0],[0,-1.54],[0,0],[1.52,0],[0,0],[0,1.54],[0,0]],"v":[[23.24,13],[2.76,13],[0,10.2],[0,2.77],[2.76,0],[23.24,0],[26,2.77],[26,10.2],[23.24,13]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,1.54],[0,0],[-1.54,0],[0,0],[0,-1.54],[0,0],[1.54,0]],"o":[[0,0],[-1.54,0],[0,0],[0,-1.54],[0,0],[1.54,0],[0,0],[0,1.54],[0,0]],"v":[[23.6,13.02],[2.8,13.02],[0,10.22],[0,2.77],[2.8,0],[23.6,0],[26.4,2.77],[26.4,10.22],[23.6,13.02]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,1.54],[0,0],[-1.54,0],[0,0],[0,-1.54],[0,0],[1.54,0]],"o":[[0,0],[-1.54,0],[0,0],[0,-1.54],[0,0],[1.54,0],[0,0],[0,1.54],[0,0]],"v":[[23.6,13.02],[2.8,13.02],[0,10.22],[0,2.77],[2.8,0],[23.6,0],[26.4,2.77],[26.4,10.22],[23.6,13.02]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,1.54],[0,0],[-1.54,0],[0,0],[0,-1.54],[0,0],[1.54,0]],"o":[[0,0],[-1.54,0],[0,0],[0,-1.54],[0,0],[1.54,0],[0,0],[0,1.54],[0,0]],"v":[[23.6,13.02],[2.8,13.02],[0,10.22],[0,2.77],[2.8,0],[23.6,0],[26.4,2.77],[26.4,10.22],[23.6,13.02]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[0,0],[0,1.54],[0,0],[-1.54,0],[0,0],[0,-1.54],[0,0],[1.54,0]],"o":[[0,0],[-1.54,0],[0,0],[0,-1.54],[0,0],[1.54,0],[0,0],[0,1.54],[0,0]],"v":[[23.6,13.02],[2.8,13.02],[0,10.22],[0,2.77],[2.8,0],[23.6,0],[26.4,2.77],[26.4,10.22],[23.6,13.02]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[16.47279930114746,-7.3155198097229],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[16.47279930114746,-7.3155198097229],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[16.47279930114746,-7.3155198097229],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[16.493499755859375,-7.060659885406494],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[16.47279930114746,-7.3155198097229],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[16.47279930114746,-7.3155198097229],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[16.47279930114746,-7.3155198097229],"t":117},{"s":[16.47279930114746,-7.3155198097229],"t":137}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":117},{"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":137}]}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-1.0524699687957764,12.470800399780273],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-1.0524699687957764,12.470800399780273],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-1.0524699687957764,12.470800399780273],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-1.0363600254058838,12.45419979095459],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-1.0524699687957764,12.470800399780273],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-1.0524699687957764,12.470800399780273],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-1.0524699687957764,12.470800399780273],"t":117},{"s":[-1.0524699687957764,12.470800399780273],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":30},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.51,9.89],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.51,9.89],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.51,9.89],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1,10],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.51,9.89],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.51,9.89],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.51,9.89],"t":117},{"s":[1.51,9.89],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.25,51.06],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.25,51.06],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[87.21,51.06],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[89,51],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[90.25,51.06],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[87.21,51.06],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[87.21,51.06],"t":117},{"s":[90.25,51.06],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[3.02,19.79],[0,19.79],[0,0],[3.02,0],[3.02,19.79]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[3.02,19.79],[0,19.79],[0,0],[3.02,0],[3.02,19.79]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[3.02,19.79],[0,19.79],[0,0],[3.02,0],[3.02,19.79]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[2,20],[0,20],[0,0],[2,0],[2,20]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[3.02,19.79],[0,19.79],[0,0],[3.02,0],[3.02,19.79]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[3.02,19.79],[0,19.79],[0,0],[3.02,0],[3.02,19.79]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[3.02,19.79],[0,19.79],[0,0],[3.02,0],[3.02,19.79]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[3.02,19.79],[0,19.79],[0,0],[3.02,0],[3.02,19.79]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.6390000581741333,-9.476360321044922],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.6390000581741333,-9.476360321044922],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.6390000581741333,-9.476360321044922],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.1589200496673584,-8.825639724731445],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.6390000581741333,-9.476360321044922],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.6390000581741333,-9.476360321044922],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[1.6390000581741333,-9.476360321044922],"t":117},{"s":[1.6390000581741333,-9.476360321044922],"t":137}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":117},{"s":[0.03999999910593033,0.02356862791116331,0.8118039327883253,0.9451372581743727,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":137}]}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-7.406360149383545,-8.157259941101074],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-7.406360149383545,-8.157259941101074],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-7.406360149383545,-8.157259941101074],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-4.911630153656006,-8.244790077209473],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-7.406360149383545,-8.157259941101074],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-7.406360149383545,-8.157259941101074],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[-7.406360149383545,-8.157259941101074],"t":117},{"s":[-7.406360149383545,-8.157259941101074],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":31},{"ty":4,"nm":" / ","sr":1,"st":0,"op":138,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[16.79,9.77],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[16.79,9.77],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[8.08,18.39],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[8.08,18.39],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[16.79,9.77],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[8.08,18.39],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[8.08,18.39],"t":117},{"s":[16.79,9.77],"t":137}]},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100,100],"t":117},{"s":[100,100],"t":137}]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[52.79,145.28],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[52.79,145.28],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[58.5,159.52],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[62.08,159.61],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[52.79,145.28],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[58.5,159.52],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[58.5,159.52],"t":117},{"s":[52.79,145.28],"t":137}]},"r":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":117},{"s":[0],"t":137}]},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}},"shapes":[{"ty":"sh","bm":0,"hd":false,"nm":"","d":1,"ks":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[-2.52,-3.82],[0.28,-2.86],[0.8,-0.8],[7.63,6.28],[-0.89,2.62],[-0.8,0.37],[-2.15,-0.58]],"o":[[14.16,3.88],[0.28,0.43],[-0.25,2.28],[-4.86,4.68],[-1.69,-1.35],[0.37,-1.05],[3.63,-1.63],[0,0]],"v":[[12.03,0.91],[32.06,7.5],[33.54,13.01],[31.23,17.84],[5.38,10.48],[0.12,2.82],[2.46,0.85],[12.03,0.91]]}],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[-2.52,-3.82],[0.28,-2.86],[0.8,-0.8],[7.63,6.28],[-0.89,2.62],[-0.8,0.37],[-2.15,-0.58]],"o":[[14.16,3.88],[0.28,0.43],[-0.25,2.28],[-4.86,4.68],[-1.69,-1.35],[0.37,-1.05],[3.63,-1.63],[0,0]],"v":[[12.03,0.91],[32.06,7.5],[33.54,13.01],[31.23,17.84],[5.38,10.48],[0.12,2.82],[2.46,0.85],[12.03,0.91]]}],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[-1.52,-1.87],[0.28,-2.86],[0,0],[6.15,0],[0,0],[0.01,4.11],[-5.5,3]],"o":[[2.63,-1.44],[1.4,1.73],[-0.25,2.28],[0,0],[-4,0],[0,0],[-0.03,-9.44],[0,0]],"v":[[7,0.78],[14.61,1.87],[16.08,7.38],[15,12.78],[5.5,36.78],[0.5,29.78],[0,19.28],[7,0.78]]}],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[-1.52,-1.87],[0.28,-2.86],[0,0],[6.15,0],[0,0],[0.01,4.11],[-5.5,3]],"o":[[2.63,-1.44],[1.4,1.73],[-0.25,2.28],[0,0],[-4,0],[0,0],[-0.03,-9.44],[0,0]],"v":[[7,0.78],[14.61,1.87],[16.08,7.38],[15,12.78],[5.5,36.78],[0.5,29.78],[0,19.28],[7,0.78]]}],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[-2.52,-3.82],[0.28,-2.86],[0.8,-0.8],[7.63,6.28],[-0.89,2.62],[-0.8,0.37],[-2.15,-0.58]],"o":[[14.16,3.88],[0.28,0.43],[-0.25,2.28],[-4.86,4.68],[-1.69,-1.35],[0.37,-1.05],[3.63,-1.63],[0,0]],"v":[[12.03,0.91],[32.06,7.5],[33.54,13.01],[31.23,17.84],[5.38,10.48],[0.12,2.82],[2.46,0.85],[12.03,0.91]]}],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[-1.52,-1.87],[0.28,-2.86],[0,0],[6.15,0],[0,0],[0.01,4.11],[-5.5,3]],"o":[[2.63,-1.44],[1.4,1.73],[-0.25,2.28],[0,0],[-4,0],[0,0],[-0.03,-9.44],[0,0]],"v":[[7,0.78],[14.61,1.87],[16.08,7.38],[15,12.78],[5.5,36.78],[0.5,29.78],[0,19.28],[7,0.78]]}],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[{"c":true,"i":[[0,0],[-1.52,-1.87],[0.28,-2.86],[0,0],[6.15,0],[0,0],[0.01,4.11],[-5.5,3]],"o":[[2.63,-1.44],[1.4,1.73],[-0.25,2.28],[0,0],[-4,0],[0,0],[-0.03,-9.44],[0,0]],"v":[[7,0.78],[14.61,1.87],[16.08,7.38],[15,12.78],[5.5,36.78],[0.5,29.78],[0,19.28],[7,0.78]]}],"t":117},{"s":[{"c":true,"i":[[0,0],[-2.52,-3.82],[0.28,-2.86],[0.8,-0.8],[7.63,6.28],[-0.89,2.62],[-0.8,0.37],[-2.15,-0.58]],"o":[[14.16,3.88],[0.28,0.43],[-0.25,2.28],[-4.86,4.68],[-1.69,-1.35],[0.37,-1.05],[3.63,-1.63],[0,0]],"v":[[12.03,0.91],[32.06,7.5],[33.54,13.01],[31.23,17.84],[5.38,10.48],[0.12,2.82],[2.46,0.85],[12.03,0.91]]}],"t":137}]}},{"ty":"gf","bm":0,"hd":false,"nm":"","e":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[99.60659790039062,37.614200592041016],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[99.60659790039062,37.614200592041016],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[82.15280151367188,31.987899780273438],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[82.15280151367188,31.987899780273438],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[99.60659790039062,37.614200592041016],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[82.15280151367188,31.987899780273438],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[82.15280151367188,31.987899780273438],"t":117},{"s":[99.60659790039062,37.614200592041016],"t":137}]},"g":{"p":2,"k":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":117},{"s":[0.03999999910593033,0.02356862791116331,0.7451372700953016,0.8470980483316908,1,0.8706274586939344,0.9804313737177381,0.5569019871973524],"t":137}]}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[37.44649887084961,-10.70110034942627],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[37.44649887084961,-10.70110034942627],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[19.992599487304688,-16.32740020751953],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[19.992599487304688,-16.32740020751953],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[37.44649887084961,-10.70110034942627],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[19.992599487304688,-16.32740020751953],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[19.992599487304688,-16.32740020751953],"t":117},{"s":[37.44649887084961,-10.70110034942627],"t":137}]},"r":1,"o":{"a":1,"k":[{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":0},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":20},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":39},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":59},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":78},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":98},{"o":{"x":0,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":117},{"s":[100],"t":137}]}}],"ind":32}],"v":"5.7.0","fr":30,"op":136.73999500460923,"ip":0,"assets":[]} \ No newline at end of file +{ + "nm": "Flow 9", + "ddd": 0, + "h": 249, + "w": 173, + "meta": { "g": "LottieFiles Figma v42" }, + "layers": [ + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 9, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [30.2, 12.37], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [30.2, 12.37], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [30.2, 12.37], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [30.2, 12.37], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [31.5, 12.5], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [30.2, 12.37], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [30.2, 12.37], + "t": 117 + }, + { "s": [30.2, 12.37], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [91.74, 201.63], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [91.74, 201.63], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [88.7, 201.63], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [92.29, 201.72], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.5, 201.5], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [88.7, 201.63], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [88.7, 201.63], + "t": 117 + }, + { "s": [91.74, 201.63], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "ef": [ + { + "ty": 29, + "nm": "", + "en": 1, + "ef": [ + { + "ty": 0, + "nm": "", + "v": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [4], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [4], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [4], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [4], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [4], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [4], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [4], + "t": 117 + }, + { "s": [4], "t": 137 } + ] + } + }, + { + "ty": 0, + "nm": "", + "v": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1], + "t": 117 + }, + { "s": [1], "t": 137 } + ] + } + }, + { + "ty": 4, + "nm": "", + "v": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + } + } + ] + } + ], + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [16.68, 0], + [0, 6.83], + [-16.68, 0], + [0, -6.83] + ], + "o": [ + [0, 6.83], + [-16.68, 0], + [0, -6.83], + [16.68, 0], + [0, 0] + ], + "v": [ + [60.41, 12.37], + [30.22, 24.74], + [0, 12.37], + [30.22, 0], + [60.41, 12.37] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [16.68, 0], + [0, 6.83], + [-16.68, 0], + [0, -6.83] + ], + "o": [ + [0, 6.83], + [-16.68, 0], + [0, -6.83], + [16.68, 0], + [0, 0] + ], + "v": [ + [60.41, 12.37], + [30.22, 24.74], + [0, 12.37], + [30.22, 0], + [60.41, 12.37] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [16.68, 0], + [0, 6.83], + [-16.68, 0], + [0, -6.83] + ], + "o": [ + [0, 6.83], + [-16.68, 0], + [0, -6.83], + [16.68, 0], + [0, 0] + ], + "v": [ + [60.41, 12.37], + [30.22, 24.74], + [0, 12.37], + [30.22, 0], + [60.41, 12.37] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [16.68, 0], + [0, 6.83], + [-16.68, 0], + [0, -6.83] + ], + "o": [ + [0, 6.83], + [-16.68, 0], + [0, -6.83], + [16.68, 0], + [0, 0] + ], + "v": [ + [60.41, 12.37], + [30.22, 24.74], + [0, 12.37], + [30.22, 0], + [60.41, 12.37] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [17.39, 0], + [0, 6.9], + [-17.39, 0], + [0, -6.9] + ], + "o": [ + [0, 6.9], + [-17.39, 0], + [0, -6.9], + [17.39, 0], + [0, 0] + ], + "v": [ + [63, 12.5], + [31.52, 25], + [0, 12.5], + [31.52, 0], + [63, 12.5] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [16.68, 0], + [0, 6.83], + [-16.68, 0], + [0, -6.83] + ], + "o": [ + [0, 6.83], + [-16.68, 0], + [0, -6.83], + [16.68, 0], + [0, 0] + ], + "v": [ + [60.41, 12.37], + [30.22, 24.74], + [0, 12.37], + [30.22, 0], + [60.41, 12.37] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [16.68, 0], + [0, 6.83], + [-16.68, 0], + [0, -6.83] + ], + "o": [ + [0, 6.83], + [-16.68, 0], + [0, -6.83], + [16.68, 0], + [0, 0] + ], + "v": [ + [60.41, 12.37], + [30.22, 24.74], + [0, 12.37], + [30.22, 0], + [60.41, 12.37] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [16.68, 0], + [0, 6.83], + [-16.68, 0], + [0, -6.83] + ], + "o": [ + [0, 6.83], + [-16.68, 0], + [0, -6.83], + [16.68, 0], + [0, 0] + ], + "v": [ + [60.41, 12.37], + [30.22, 24.74], + [0, 12.37], + [30.22, 0], + [60.41, 12.37] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [64.41669845581055, 16.374500274658203], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [64.41669845581055, 16.374500274658203], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [64.41669845581055, 16.374500274658203], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [64.41669845581055, 16.374500274658203], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [67.00769805908203, 16.503400802612305], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [64.41669845581055, 16.374500274658203], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [64.41669845581055, 16.374500274658203], + "t": 117 + }, + { "s": [64.41669845581055, 16.374500274658203], "t": 137 } + ] + }, + "g": { + "p": 2, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.7372941333078871, 0.8431764799379835, + 0.8392549115442762, 1, 1, 1, 1, 0, 1, 1, 0 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.7372941333078871, 0.8431764799379835, + 0.8392549115442762, 1, 1, 1, 1, 0, 1, 1, 0 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.7372941333078871, 0.8431764799379835, + 0.8392549115442762, 1, 1, 1, 1, 0, 1, 1, 0 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.7372941333078871, 0.8431764799379835, + 0.8392549115442762, 1, 1, 1, 1, 0, 1, 1, 0 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.7372941333078871, 0.8431764799379835, + 0.8392549115442762, 1, 1, 1, 1, 0, 1, 1, 0 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.7372941333078871, 0.8431764799379835, + 0.8392549115442762, 1, 1, 1, 1, 0, 1, 1, 0 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.7372941333078871, 0.8431764799379835, + 0.8392549115442762, 1, 1, 1, 1, 0, 1, 1, 0 + ], + "t": 117 + }, + { + "s": [ + 0, 0.7372941333078871, 0.8431764799379835, + 0.8392549115442762, 1, 1, 1, 1, 0, 1, 1, 0 + ], + "t": 137 + } + ] + } + }, + "t": 2, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [34.2150993347168, 16.374500274658203], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [34.2150993347168, 16.374500274658203], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [34.2150993347168, 16.374500274658203], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [34.2150993347168, 16.374500274658203], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [35.51089859008789, 16.503400802612305], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [34.2150993347168, 16.374500274658203], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [34.2150993347168, 16.374500274658203], + "t": 117 + }, + { "s": [34.2150993347168, 16.374500274658203], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + { + "ty": "rc", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "p": { "a": 0, "k": [0, 0] }, + "r": { "a": 0, "k": 0 }, + "s": { "a": 0, "k": [173, 249] } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { "a": 0, "k": [0, 0, 0] }, + "r": 2, + "o": { "a": 0, "k": 0 } + } + ], + "ind": 1 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.58, 0.58], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.58, 0.58], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.58, 0.58], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.58, 0.58], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.58, 0.58], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.58, 0.58], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.58, 0.58], + "t": 117 + }, + { "s": [0.58, 0.58], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [123.73, 160.6], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [123.73, 160.6], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [120.69, 160.6], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [124.27, 160.7], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [123.73, 160.6], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [126.58, 158.58], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [120.69, 160.6], + "t": 117 + }, + { "s": [123.73, 160.6], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.31, 0], + [0, 0.31], + [-0.31, 0], + [0, -0.31] + ], + "o": [ + [0, 0.31], + [-0.31, 0], + [0, -0.31], + [0.31, 0], + [0, 0] + ], + "v": [ + [1.17, 0.58], + [0.58, 1.17], + [0, 0.58], + [0.58, 0], + [1.17, 0.58] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.31, 0], + [0, 0.31], + [-0.31, 0], + [0, -0.31] + ], + "o": [ + [0, 0.31], + [-0.31, 0], + [0, -0.31], + [0.31, 0], + [0, 0] + ], + "v": [ + [1.17, 0.58], + [0.58, 1.17], + [0, 0.58], + [0.58, 0], + [1.17, 0.58] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.31, 0], + [0, 0.31], + [-0.31, 0], + [0, -0.31] + ], + "o": [ + [0, 0.31], + [-0.31, 0], + [0, -0.31], + [0.31, 0], + [0, 0] + ], + "v": [ + [1.17, 0.58], + [0.58, 1.17], + [0, 0.58], + [0.58, 0], + [1.17, 0.58] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.31, 0], + [0, 0.31], + [-0.31, 0], + [0, -0.31] + ], + "o": [ + [0, 0.31], + [-0.31, 0], + [0, -0.31], + [0.31, 0], + [0, 0] + ], + "v": [ + [1.17, 0.58], + [0.58, 1.17], + [0, 0.58], + [0.58, 0], + [1.17, 0.58] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.31, 0], + [0, 0.31], + [-0.31, 0], + [0, -0.31] + ], + "o": [ + [0, 0.31], + [-0.31, 0], + [0, -0.31], + [0.31, 0], + [0, 0] + ], + "v": [ + [1.17, 0.58], + [0.58, 1.17], + [0, 0.58], + [0.58, 0], + [1.17, 0.58] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.31, 0], + [0, 0.31], + [-0.31, 0], + [0, -0.31] + ], + "o": [ + [0, 0.31], + [-0.31, 0], + [0, -0.31], + [0.31, 0], + [0, 0] + ], + "v": [ + [1.17, 0.58], + [0.58, 1.17], + [0, 0.58], + [0.58, 0], + [1.17, 0.58] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.31, 0], + [0, 0.31], + [-0.31, 0], + [0, -0.31] + ], + "o": [ + [0, 0.31], + [-0.31, 0], + [0, -0.31], + [0.31, 0], + [0, 0] + ], + "v": [ + [1.17, 0.58], + [0.58, 1.17], + [0, 0.58], + [0.58, 0], + [1.17, 0.58] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.31, 0], + [0, 0.31], + [-0.31, 0], + [0, -0.31] + ], + "o": [ + [0, 0.31], + [-0.31, 0], + [0, -0.31], + [0.31, 0], + [0, 0] + ], + "v": [ + [1.17, 0.58], + [0.58, 1.17], + [0, 0.58], + [0.58, 0], + [1.17, 0.58] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 117 + }, + { "s": [1, 1, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 2 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.57, 6.91], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.57, 6.91], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.57, 6.91], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.57, 6.91], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.57, 6.91], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.26, 6.94], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.57, 6.91], + "t": 117 + }, + { "s": [2.57, 6.91], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [122.68, 151.58], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [122.68, 151.58], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [119.64, 151.58], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [123.23, 151.67], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [122.68, 151.58], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [121.56, 151.19], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [119.64, 151.58], + "t": 117 + }, + { "s": [122.68, 151.58], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-25.54], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.62, 2.31], + [-0.62, 0.58], + [-0.18, -0.06], + [0.12, -3.26], + [0.74, -0.09], + [0.22, 0.18], + [0.06, 1.2] + ], + "o": [ + [-0.09, -1.57], + [-0.77, -3.05], + [0.4, -0.4], + [2.77, 0.86], + [-0.06, 1.97], + [-0.12, 0.03], + [-0.8, -0.71], + [0, 0] + ], + "v": [ + [2.29, 10.37], + [1.3, 5.32], + [0.2, 0.21], + [1.61, 0.15], + [5.12, 9.51], + [3.83, 13.81], + [3.21, 13.63], + [2.29, 10.37] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.62, 2.31], + [-0.62, 0.58], + [-0.18, -0.06], + [0.12, -3.26], + [0.74, -0.09], + [0.22, 0.18], + [0.06, 1.2] + ], + "o": [ + [-0.09, -1.57], + [-0.77, -3.05], + [0.4, -0.4], + [2.77, 0.86], + [-0.06, 1.97], + [-0.12, 0.03], + [-0.8, -0.71], + [0, 0] + ], + "v": [ + [2.29, 10.37], + [1.3, 5.32], + [0.2, 0.21], + [1.61, 0.15], + [5.12, 9.51], + [3.83, 13.81], + [3.21, 13.63], + [2.29, 10.37] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.62, 2.31], + [-0.62, 0.58], + [-0.18, -0.06], + [0.12, -3.26], + [0.74, -0.09], + [0.22, 0.18], + [0.06, 1.2] + ], + "o": [ + [-0.09, -1.57], + [-0.77, -3.05], + [0.4, -0.4], + [2.77, 0.86], + [-0.06, 1.97], + [-0.12, 0.03], + [-0.8, -0.71], + [0, 0] + ], + "v": [ + [2.29, 10.37], + [1.3, 5.32], + [0.2, 0.21], + [1.61, 0.15], + [5.12, 9.51], + [3.83, 13.81], + [3.21, 13.63], + [2.29, 10.37] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.62, 2.31], + [-0.62, 0.58], + [-0.18, -0.06], + [0.12, -3.26], + [0.74, -0.09], + [0.22, 0.18], + [0.06, 1.2] + ], + "o": [ + [-0.09, -1.57], + [-0.77, -3.05], + [0.4, -0.4], + [2.77, 0.86], + [-0.06, 1.97], + [-0.12, 0.03], + [-0.8, -0.71], + [0, 0] + ], + "v": [ + [2.29, 10.37], + [1.3, 5.32], + [0.2, 0.21], + [1.61, 0.15], + [5.12, 9.51], + [3.83, 13.81], + [3.21, 13.63], + [2.29, 10.37] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.62, 2.31], + [-0.62, 0.58], + [-0.18, -0.06], + [0.12, -3.26], + [0.74, -0.09], + [0.22, 0.18], + [0.06, 1.2] + ], + "o": [ + [-0.09, -1.57], + [-0.77, -3.05], + [0.4, -0.4], + [2.77, 0.86], + [-0.06, 1.97], + [-0.12, 0.03], + [-0.8, -0.71], + [0, 0] + ], + "v": [ + [2.29, 10.37], + [1.3, 5.32], + [0.2, 0.21], + [1.61, 0.15], + [5.12, 9.51], + [3.83, 13.81], + [3.21, 13.63], + [2.29, 10.37] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.62, 2.31], + [-0.62, 0.58], + [-0.18, -0.06], + [0.12, -3.26], + [0.74, -0.09], + [0.22, 0.18], + [0.06, 1.2] + ], + "o": [ + [-0.09, -1.57], + [-0.77, -3.05], + [0.4, -0.4], + [2.77, 0.86], + [-0.06, 1.97], + [-0.12, 0.03], + [-0.8, -0.71], + [0, 0] + ], + "v": [ + [1.67, 10.42], + [0.69, 5.38], + [0.38, 0.29], + [1.05, 0.06], + [4.51, 9.56], + [3.21, 13.87], + [2.6, 13.69], + [1.67, 10.42] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.62, 2.31], + [-0.62, 0.58], + [-0.18, -0.06], + [0.12, -3.26], + [0.74, -0.09], + [0.22, 0.18], + [0.06, 1.2] + ], + "o": [ + [-0.09, -1.57], + [-0.77, -3.05], + [0.4, -0.4], + [2.77, 0.86], + [-0.06, 1.97], + [-0.12, 0.03], + [-0.8, -0.71], + [0, 0] + ], + "v": [ + [2.29, 10.37], + [1.3, 5.32], + [0.2, 0.21], + [1.61, 0.15], + [5.12, 9.51], + [3.83, 13.81], + [3.21, 13.63], + [2.29, 10.37] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.62, 2.31], + [-0.62, 0.58], + [-0.18, -0.06], + [0.12, -3.26], + [0.74, -0.09], + [0.22, 0.18], + [0.06, 1.2] + ], + "o": [ + [-0.09, -1.57], + [-0.77, -3.05], + [0.4, -0.4], + [2.77, 0.86], + [-0.06, 1.97], + [-0.12, 0.03], + [-0.8, -0.71], + [0, 0] + ], + "v": [ + [2.29, 10.37], + [1.3, 5.32], + [0.2, 0.21], + [1.61, 0.15], + [5.12, 9.51], + [3.83, 13.81], + [3.21, 13.63], + [2.29, 10.37] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 117 + }, + { "s": [1, 1, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 3 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.97, 16.42], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.97, 16.42], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.97, 16.42], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.97, 16.42], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.97, 16.42], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [4.34, 14.4], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.97, 16.42], + "t": 117 + }, + { "s": [2.97, 16.42], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [111.16, 162.62], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [111.16, 162.62], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [108.12, 162.62], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [111.71, 162.71], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [111.16, 162.62], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [110.66, 160.6], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [108.12, 162.62], + "t": 117 + }, + { "s": [111.16, 162.62], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.65, -0.83], + [0.16, 0.21], + [0.03, 2.22], + [-2.95, 3.51], + [-1.29, 0.77], + [-0.28, -14.62], + [-2.59, -3.02], + [-0.02, -0.02] + ], + "o": [ + [-0.58, 0.89], + [-0.21, -0.21], + [-2.59, -3.02], + [-0.28, -14.68], + [0.22, -0.25], + [-2.89, 3.48], + [0.03, 2.22], + [0.02, 0.02], + [0, 0] + ], + "v": [ + [5.93, 30.28], + [4.12, 32.84], + [3.57, 32.22], + [0.92, 23.05], + [1.6, 1.97], + [3.87, 0], + [3.23, 21.05], + [5.87, 30.22], + [5.93, 30.28] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.65, -0.83], + [0.16, 0.21], + [0.03, 2.22], + [-2.95, 3.51], + [-1.29, 0.77], + [-0.28, -14.62], + [-2.59, -3.02], + [-0.02, -0.02] + ], + "o": [ + [-0.58, 0.89], + [-0.21, -0.21], + [-2.59, -3.02], + [-0.28, -14.68], + [0.22, -0.25], + [-2.89, 3.48], + [0.03, 2.22], + [0.02, 0.02], + [0, 0] + ], + "v": [ + [5.93, 30.28], + [4.12, 32.84], + [3.57, 32.22], + [0.92, 23.05], + [1.6, 1.97], + [3.87, 0], + [3.23, 21.05], + [5.87, 30.22], + [5.93, 30.28] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.65, -0.83], + [0.16, 0.21], + [0.03, 2.22], + [-2.95, 3.51], + [-1.29, 0.77], + [-0.28, -14.62], + [-2.59, -3.02], + [-0.02, -0.02] + ], + "o": [ + [-0.58, 0.89], + [-0.21, -0.21], + [-2.59, -3.02], + [-0.28, -14.68], + [0.22, -0.25], + [-2.89, 3.48], + [0.03, 2.22], + [0.02, 0.02], + [0, 0] + ], + "v": [ + [5.93, 30.28], + [4.12, 32.84], + [3.57, 32.22], + [0.92, 23.05], + [1.6, 1.97], + [3.87, 0], + [3.23, 21.05], + [5.87, 30.22], + [5.93, 30.28] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.65, -0.83], + [0.16, 0.21], + [0.03, 2.22], + [-2.95, 3.51], + [-1.29, 0.77], + [-0.28, -14.62], + [-2.59, -3.02], + [-0.02, -0.02] + ], + "o": [ + [-0.58, 0.89], + [-0.21, -0.21], + [-2.59, -3.02], + [-0.28, -14.68], + [0.22, -0.25], + [-2.89, 3.48], + [0.03, 2.22], + [0.02, 0.02], + [0, 0] + ], + "v": [ + [5.93, 30.28], + [4.12, 32.84], + [3.57, 32.22], + [0.92, 23.05], + [1.6, 1.97], + [3.87, 0], + [3.23, 21.05], + [5.87, 30.22], + [5.93, 30.28] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.65, -0.83], + [0.16, 0.21], + [0.03, 2.22], + [-2.95, 3.51], + [-1.29, 0.77], + [-0.28, -14.62], + [-2.59, -3.02], + [-0.02, -0.02] + ], + "o": [ + [-0.58, 0.89], + [-0.21, -0.21], + [-2.59, -3.02], + [-0.28, -14.68], + [0.22, -0.25], + [-2.89, 3.48], + [0.03, 2.22], + [0.02, 0.02], + [0, 0] + ], + "v": [ + [5.93, 30.28], + [4.12, 32.84], + [3.57, 32.22], + [0.92, 23.05], + [1.6, 1.97], + [3.87, 0], + [3.23, 21.05], + [5.87, 30.22], + [5.93, 30.28] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [-2, 5.5], + [-0.88, 1.15], + [0, 0], + [-2.59, -3.02], + [0, 0] + ], + "o": [ + [-1, -3], + [-1, -3], + [0, 0], + [0, 0], + [0.52, -1.42], + [-2.53, 3.3], + [0, 0], + [0.02, 0.02], + [0, 0] + ], + "v": [ + [5.69, 28.8], + [5.69, 28.8], + [1.69, 17.8], + [1.69, 17.8], + [0.69, 3.3], + [2.71, 0], + [1.69, 8.8], + [8.69, 22.8], + [5.69, 28.8] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.65, -0.83], + [0.16, 0.21], + [0.03, 2.22], + [-2.95, 3.51], + [-1.29, 0.77], + [-0.28, -14.62], + [-2.59, -3.02], + [-0.02, -0.02] + ], + "o": [ + [-0.58, 0.89], + [-0.21, -0.21], + [-2.59, -3.02], + [-0.28, -14.68], + [0.22, -0.25], + [-2.89, 3.48], + [0.03, 2.22], + [0.02, 0.02], + [0, 0] + ], + "v": [ + [5.93, 30.28], + [4.12, 32.84], + [3.57, 32.22], + [0.92, 23.05], + [1.6, 1.97], + [3.87, 0], + [3.23, 21.05], + [5.87, 30.22], + [5.93, 30.28] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.65, -0.83], + [0.16, 0.21], + [0.03, 2.22], + [-2.95, 3.51], + [-1.29, 0.77], + [-0.28, -14.62], + [-2.59, -3.02], + [-0.02, -0.02] + ], + "o": [ + [-0.58, 0.89], + [-0.21, -0.21], + [-2.59, -3.02], + [-0.28, -14.68], + [0.22, -0.25], + [-2.89, 3.48], + [0.03, 2.22], + [0.02, 0.02], + [0, 0] + ], + "v": [ + [5.93, 30.28], + [4.12, 32.84], + [3.57, 32.22], + [0.92, 23.05], + [1.6, 1.97], + [3.87, 0], + [3.23, 21.05], + [5.87, 30.22], + [5.93, 30.28] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-3.7883899211883545, -43.916900634765625], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-3.7883899211883545, -43.916900634765625], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-3.7883899211883545, -43.916900634765625], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-3.7883899211883545, -43.916900634765625], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-3.7883899211883545, -43.916900634765625], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-4.947559833526611, -43.916900634765625], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-3.7883899211883545, -43.916900634765625], + "t": 117 + }, + { "s": [-3.7883899211883545, -43.916900634765625], "t": 137 } + ] + }, + "g": { + "p": 2, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 117 + }, + { + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 137 + } + ] + } + }, + "t": 1, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-38.14699935913086, -26.011699676513672], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-38.14699935913086, -26.011699676513672], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-38.14699935913086, -26.011699676513672], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-38.14699935913086, -26.011699676513672], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-38.14699935913086, -26.011699676513672], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-39.30609893798828, -26.011699676513672], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-38.14699935913086, -26.011699676513672], + "t": 117 + }, + { "s": [-38.14699935913086, -26.011699676513672], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 4 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.77, 17.51], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.77, 17.51], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.77, 17.51], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.77, 17.51], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.77, 17.51], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [11.47, 18.77], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.77, 17.51], + "t": 117 + }, + { "s": [7.77, 17.51], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [118.26, 160.6], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [118.26, 160.6], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [115.22, 160.6], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [118.81, 160.69], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [118.26, 160.6], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [119.05, 161.85], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [115.22, 160.6], + "t": 117 + }, + { "s": [118.26, 160.6], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-2.92, 3.51], + [-2.83, 0.52], + [-0.95, -0.52], + [3.85, -9.11], + [2.77, 0.12], + [0.58, 0.71], + [0.03, 2.22] + ], + "o": [ + [-0.28, -14.68], + [0.34, -0.4], + [2.25, -0.43], + [5.88, 3.35], + [-0.86, 1.97], + [-1.14, -0.03], + [-2.59, -3.02], + [0, 0] + ], + "v": [ + [0.92, 24.16], + [1.57, 3.08], + [6.46, 0.13], + [11.73, 0.96], + [12, 27.86], + [6.13, 35.03], + [3.57, 33.33], + [0.92, 24.16] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-2.92, 3.51], + [-2.83, 0.52], + [-0.95, -0.52], + [3.85, -9.11], + [2.77, 0.12], + [0.58, 0.71], + [0.03, 2.22] + ], + "o": [ + [-0.28, -14.68], + [0.34, -0.4], + [2.25, -0.43], + [5.88, 3.35], + [-0.86, 1.97], + [-1.14, -0.03], + [-2.59, -3.02], + [0, 0] + ], + "v": [ + [0.92, 24.16], + [1.57, 3.08], + [6.46, 0.13], + [11.73, 0.96], + [12, 27.86], + [6.13, 35.03], + [3.57, 33.33], + [0.92, 24.16] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-2.92, 3.51], + [-2.83, 0.52], + [-0.95, -0.52], + [3.85, -9.11], + [2.77, 0.12], + [0.58, 0.71], + [0.03, 2.22] + ], + "o": [ + [-0.28, -14.68], + [0.34, -0.4], + [2.25, -0.43], + [5.88, 3.35], + [-0.86, 1.97], + [-1.14, -0.03], + [-2.59, -3.02], + [0, 0] + ], + "v": [ + [0.92, 24.16], + [1.57, 3.08], + [6.46, 0.13], + [11.73, 0.96], + [12, 27.86], + [6.13, 35.03], + [3.57, 33.33], + [0.92, 24.16] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-2.92, 3.51], + [-2.83, 0.52], + [-0.95, -0.52], + [3.85, -9.11], + [2.77, 0.12], + [0.58, 0.71], + [0.03, 2.22] + ], + "o": [ + [-0.28, -14.68], + [0.34, -0.4], + [2.25, -0.43], + [5.88, 3.35], + [-0.86, 1.97], + [-1.14, -0.03], + [-2.59, -3.02], + [0, 0] + ], + "v": [ + [0.92, 24.16], + [1.57, 3.08], + [6.46, 0.13], + [11.73, 0.96], + [12, 27.86], + [6.13, 35.03], + [3.57, 33.33], + [0.92, 24.16] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-2.92, 3.51], + [-2.83, 0.52], + [-0.95, -0.52], + [3.85, -9.11], + [2.77, 0.12], + [0.58, 0.71], + [0.03, 2.22] + ], + "o": [ + [-0.28, -14.68], + [0.34, -0.4], + [2.25, -0.43], + [5.88, 3.35], + [-0.86, 1.97], + [-1.14, -0.03], + [-2.59, -3.02], + [0, 0] + ], + "v": [ + [0.92, 24.16], + [1.57, 3.08], + [6.46, 0.13], + [11.73, 0.96], + [12, 27.86], + [6.13, 35.03], + [3.57, 33.33], + [0.92, 24.16] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-2.92, 3.51], + [-2.83, 0.52], + [-0.95, -0.52], + [0.3, -11.41], + [0.85, -1.5], + [0, 0], + [2.42, 4] + ], + "o": [ + [-3.54, -5.85], + [0.34, -0.4], + [2.25, -0.43], + [5.88, 3.35], + [-0.08, 2.95], + [-3.58, 6.31], + [0, 0], + [0, 0] + ], + "v": [ + [3.92, 20.41], + [1.45, 3.08], + [6.34, 0.13], + [11.6, 0.96], + [22.92, 27.91], + [21.92, 35.41], + [11.92, 31.91], + [3.92, 20.41] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-2.92, 3.51], + [-2.83, 0.52], + [-0.95, -0.52], + [3.85, -9.11], + [2.77, 0.12], + [0.58, 0.71], + [0.03, 2.22] + ], + "o": [ + [-0.28, -14.68], + [0.34, -0.4], + [2.25, -0.43], + [5.88, 3.35], + [-0.86, 1.97], + [-1.14, -0.03], + [-2.59, -3.02], + [0, 0] + ], + "v": [ + [0.92, 24.16], + [1.57, 3.08], + [6.46, 0.13], + [11.73, 0.96], + [12, 27.86], + [6.13, 35.03], + [3.57, 33.33], + [0.92, 24.16] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-2.92, 3.51], + [-2.83, 0.52], + [-0.95, -0.52], + [3.85, -9.11], + [2.77, 0.12], + [0.58, 0.71], + [0.03, 2.22] + ], + "o": [ + [-0.28, -14.68], + [0.34, -0.4], + [2.25, -0.43], + [5.88, 3.35], + [-0.86, 1.97], + [-1.14, -0.03], + [-2.59, -3.02], + [0, 0] + ], + "v": [ + [0.92, 24.16], + [1.57, 3.08], + [6.46, 0.13], + [11.73, 0.96], + [12, 27.86], + [6.13, 35.03], + [3.57, 33.33], + [0.92, 24.16] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-0.5048930048942566, -28.483699798583984], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-0.5048930048942566, -28.483699798583984], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-0.5048930048942566, -28.483699798583984], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-0.5048930048942566, -28.483699798583984], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-0.5048930048942566, -28.483699798583984], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-0.6306260228157043, -28.483699798583984], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-0.5048930048942566, -28.483699798583984], + "t": 117 + }, + { "s": [-0.5048930048942566, -28.483699798583984], "t": 137 } + ] + }, + "g": { + "p": 2, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 117 + }, + { + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 137 + } + ] + } + }, + "t": 1, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [46.504398345947266, 5.895659923553467], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [46.504398345947266, 5.895659923553467], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [46.504398345947266, 5.895659923553467], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [46.504398345947266, 5.895659923553467], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [46.504398345947266, 5.895659923553467], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [46.37860107421875, 5.8956499099731445], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [46.504398345947266, 5.895659923553467], + "t": 117 + }, + { "s": [46.504398345947266, 5.895659923553467], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 5 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [15.74, 5.32], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [15.74, 5.32], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [15.74, 5.32], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [15.74, 5.32], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [15.74, 5.32], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [15.74, 5.32], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [15.74, 5.32], + "t": 117 + }, + { "s": [15.74, 5.32], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [76.85, 144.63], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [76.85, 144.63], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [73.81, 144.63], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [77.39, 144.72], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [76.85, 144.63], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [73.81, 144.63], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [73.81, 144.63], + "t": 117 + }, + { "s": [76.85, 144.63], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [2.46, -3.05], + [0.12, -2], + [-1.48, 1.82], + [-4, -0.03], + [0, 0] + ], + "o": [ + [0, 0], + [-3.94, 0], + [-1.45, 1.78], + [0.09, -2.06], + [2.55, -3.11], + [0, 0], + [0, 0] + ], + "v": [ + [31.48, 0.06], + [12.56, 0.15], + [2.37, 4.89], + [0, 10.65], + [2.43, 4.77], + [12.89, 0], + [31.48, 0.06] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [2.46, -3.05], + [0.12, -2], + [-1.48, 1.82], + [-4, -0.03], + [0, 0] + ], + "o": [ + [0, 0], + [-3.94, 0], + [-1.45, 1.78], + [0.09, -2.06], + [2.55, -3.11], + [0, 0], + [0, 0] + ], + "v": [ + [31.48, 0.06], + [12.56, 0.15], + [2.37, 4.89], + [0, 10.65], + [2.43, 4.77], + [12.89, 0], + [31.48, 0.06] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [2.46, -3.05], + [0.12, -2], + [-1.48, 1.82], + [-4, -0.03], + [0, 0] + ], + "o": [ + [0, 0], + [-3.94, 0], + [-1.45, 1.78], + [0.09, -2.06], + [2.55, -3.11], + [0, 0], + [0, 0] + ], + "v": [ + [31.48, 0.06], + [12.56, 0.15], + [2.37, 4.89], + [0, 10.65], + [2.43, 4.77], + [12.89, 0], + [31.48, 0.06] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [2.46, -3.05], + [0.12, -2], + [-1.48, 1.82], + [-4, -0.03], + [0, 0] + ], + "o": [ + [0, 0], + [-3.94, 0], + [-1.45, 1.78], + [0.09, -2.06], + [2.55, -3.11], + [0, 0], + [0, 0] + ], + "v": [ + [31.48, 0.06], + [12.56, 0.15], + [2.37, 4.89], + [0, 10.65], + [2.43, 4.77], + [12.89, 0], + [31.48, 0.06] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [2.46, -3.05], + [0.12, -2], + [-1.48, 1.82], + [-4, -0.03], + [0, 0] + ], + "o": [ + [0, 0], + [-3.94, 0], + [-1.45, 1.78], + [0.09, -2.06], + [2.55, -3.11], + [0, 0], + [0, 0] + ], + "v": [ + [31.48, 0.06], + [12.56, 0.15], + [2.37, 4.89], + [0, 10.65], + [2.43, 4.77], + [12.89, 0], + [31.48, 0.06] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [2.46, -3.05], + [0.12, -2], + [-1.48, 1.82], + [-4, -0.03], + [0, 0] + ], + "o": [ + [0, 0], + [-3.94, 0], + [-1.45, 1.78], + [0.09, -2.06], + [2.55, -3.11], + [0, 0], + [0, 0] + ], + "v": [ + [31.48, 0.06], + [12.56, 0.15], + [2.37, 4.89], + [0, 10.65], + [2.43, 4.77], + [12.89, 0], + [31.48, 0.06] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [2.46, -3.05], + [0.12, -2], + [-1.48, 1.82], + [-4, -0.03], + [0, 0] + ], + "o": [ + [0, 0], + [-3.94, 0], + [-1.45, 1.78], + [0.09, -2.06], + [2.55, -3.11], + [0, 0], + [0, 0] + ], + "v": [ + [31.48, 0.06], + [12.56, 0.15], + [2.37, 4.89], + [0, 10.65], + [2.43, 4.77], + [12.89, 0], + [31.48, 0.06] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [2.46, -3.05], + [0.12, -2], + [-1.48, 1.82], + [-4, -0.03], + [0, 0] + ], + "o": [ + [0, 0], + [-3.94, 0], + [-1.45, 1.78], + [0.09, -2.06], + [2.55, -3.11], + [0, 0], + [0, 0] + ], + "v": [ + [31.48, 0.06], + [12.56, 0.15], + [2.37, 4.89], + [0, 10.65], + [2.43, 4.77], + [12.89, 0], + [31.48, 0.06] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [35.2421989440918, -24.878700256347656], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [35.2421989440918, -24.878700256347656], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [35.2421989440918, -24.878700256347656], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [35.2421989440918, -24.878700256347656], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [35.2421989440918, -24.878700256347656], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [35.2421989440918, -24.878700256347656], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [35.2421989440918, -24.878700256347656], + "t": 117 + }, + { "s": [35.2421989440918, -24.878700256347656], "t": 137 } + ] + }, + "g": { + "p": 2, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 117 + }, + { + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 137 + } + ] + } + }, + "t": 1, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.84089994430542, 9.454489707946777], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.84089994430542, 9.454489707946777], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.84089994430542, 9.454489707946777], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.84089994430542, 9.454489707946777], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.84089994430542, 9.454489707946777], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.84089994430542, 9.454489707946777], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.84089994430542, 9.454489707946777], + "t": 117 + }, + { "s": [5.84089994430542, 9.454489707946777], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 6 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [31.48, 24.08], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [32.48, 24.08], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [31.48, 24.08], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [31.48, 24.08], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [32.48, 24.08], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [31.48, 24.08], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [31.48, 24.08], + "t": 117 + }, + { "s": [31.48, 24.08], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [92.59, 163.39], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [91.59, 163.39], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [89.55, 163.39], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [93.13, 163.48], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [91.59, 163.39], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [89.55, 163.39], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [89.55, 163.39], + "t": 117 + }, + { "s": [92.59, 163.39], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, -0.12], + [0.15, -0.4], + [3.26, -5.08], + [0.65, -0.83], + [1.02, -1.11], + [1.08, -0.37], + [2.37, -0.03], + [0, 0], + [4.03, 1.45], + [2.28, 2.46], + [5.48, 16.68], + [0.09, 1.11], + [0, 0.31], + [-1.45, 1.78], + [-3.94, 0], + [0, 0], + [0, 0], + [-2.55, -3.11], + [-0.28, -1.69], + [-0.02, -0.25], + [0, -0.27] + ], + "o": [ + [0, 0.12], + [-0.03, 1.2], + [-3.88, 11.88], + [-0.58, 0.89], + [-0.83, 1.11], + [-2.25, 2.46], + [-4.03, 1.45], + [0, 0], + [-2.4, -0.03], + [-1.11, -0.37], + [-6.22, -6.77], + [-0.12, -0.4], + [0, -0.33], + [0.12, -2], + [2.46, -3.05], + [0, 0], + [0, 0], + [4.03, -0.03], + [1.23, 1.48], + [0.04, 0.23], + [0.02, 0.27], + [0, 0] + ], + "v": [ + [62.96, 11.08], + [62.96, 11.45], + [62.5, 13.94], + [53.02, 37.18], + [51.21, 39.73], + [48.44, 43.02], + [41.67, 46.96], + [31.7, 48.16], + [31.3, 48.16], + [21.33, 46.96], + [14.53, 43.02], + [0.46, 13.94], + [0, 11.6], + [0, 10.65], + [2.37, 4.89], + [12.56, 0.15], + [31.48, 0.06], + [50.07, 0], + [60.53, 4.77], + [62.84, 9.57], + [62.93, 10.28], + [62.96, 11.08] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, -0.12], + [0.15, -0.4], + [3.26, -5.08], + [0.65, -0.83], + [1.02, -1.11], + [1.08, -0.37], + [2.37, -0.03], + [0, 0], + [4.03, 1.45], + [2.28, 2.46], + [5.48, 16.68], + [0.09, 1.11], + [0, 0.31], + [-1.45, 1.78], + [-3.94, 0], + [0, 0], + [0, 0], + [-2.55, -3.11], + [-0.28, -1.69], + [-0.02, -0.25], + [0, -0.27] + ], + "o": [ + [0, 0.12], + [-0.03, 1.2], + [-3.88, 11.88], + [-0.58, 0.89], + [-0.83, 1.11], + [-2.25, 2.46], + [-4.03, 1.45], + [0, 0], + [-2.4, -0.03], + [-1.11, -0.37], + [-6.22, -6.77], + [-0.12, -0.4], + [0, -0.33], + [0.12, -2], + [2.46, -3.05], + [0, 0], + [0, 0], + [4.03, -0.03], + [1.23, 1.48], + [0.04, 0.23], + [0.02, 0.27], + [0, 0] + ], + "v": [ + [64.96, 11.08], + [64.96, 11.45], + [64.5, 13.94], + [55.02, 37.18], + [53.21, 39.73], + [50.44, 43.02], + [43.67, 46.96], + [31.7, 48.16], + [31.3, 48.16], + [21.33, 46.96], + [14.53, 43.02], + [0.46, 13.94], + [0, 11.6], + [0, 10.65], + [2.37, 4.89], + [14.56, 0.15], + [33.48, 0.06], + [52.07, 0], + [62.53, 4.77], + [64.84, 9.57], + [64.93, 10.28], + [64.96, 11.08] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, -0.12], + [0.15, -0.4], + [3.26, -5.08], + [0.65, -0.83], + [1.02, -1.11], + [1.08, -0.37], + [2.37, -0.03], + [0, 0], + [4.03, 1.45], + [2.28, 2.46], + [5.48, 16.68], + [0.09, 1.11], + [0, 0.31], + [-1.45, 1.78], + [-3.94, 0], + [0, 0], + [0, 0], + [-2.55, -3.11], + [-0.28, -1.69], + [-0.02, -0.25], + [0, -0.27] + ], + "o": [ + [0, 0.12], + [-0.03, 1.2], + [-3.88, 11.88], + [-0.58, 0.89], + [-0.83, 1.11], + [-2.25, 2.46], + [-4.03, 1.45], + [0, 0], + [-2.4, -0.03], + [-1.11, -0.37], + [-6.22, -6.77], + [-0.12, -0.4], + [0, -0.33], + [0.12, -2], + [2.46, -3.05], + [0, 0], + [0, 0], + [4.03, -0.03], + [1.23, 1.48], + [0.04, 0.23], + [0.02, 0.27], + [0, 0] + ], + "v": [ + [62.96, 11.08], + [62.96, 11.45], + [62.5, 13.94], + [53.02, 37.18], + [51.21, 39.73], + [48.44, 43.02], + [41.67, 46.96], + [31.7, 48.16], + [31.3, 48.16], + [21.33, 46.96], + [14.53, 43.02], + [0.46, 13.94], + [0, 11.6], + [0, 10.65], + [2.37, 4.89], + [12.56, 0.15], + [31.48, 0.06], + [50.07, 0], + [60.53, 4.77], + [62.84, 9.57], + [62.93, 10.28], + [62.96, 11.08] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, -0.12], + [0.15, -0.4], + [3.26, -5.08], + [0.65, -0.83], + [1.02, -1.11], + [1.08, -0.37], + [2.37, -0.03], + [0, 0], + [4.03, 1.45], + [2.28, 2.46], + [5.48, 16.68], + [0.09, 1.11], + [0, 0.31], + [-1.45, 1.78], + [-3.94, 0], + [0, 0], + [0, 0], + [-2.55, -3.11], + [-0.28, -1.69], + [-0.02, -0.25], + [0, -0.27] + ], + "o": [ + [0, 0.12], + [-0.03, 1.2], + [-3.88, 11.88], + [-0.58, 0.89], + [-0.83, 1.11], + [-2.25, 2.46], + [-4.03, 1.45], + [0, 0], + [-2.4, -0.03], + [-1.11, -0.37], + [-6.22, -6.77], + [-0.12, -0.4], + [0, -0.33], + [0.12, -2], + [2.46, -3.05], + [0, 0], + [0, 0], + [4.03, -0.03], + [1.23, 1.48], + [0.04, 0.23], + [0.02, 0.27], + [0, 0] + ], + "v": [ + [62.96, 11.08], + [62.96, 11.45], + [62.5, 13.94], + [53.02, 37.18], + [51.21, 39.73], + [48.44, 43.02], + [41.67, 46.96], + [31.7, 48.16], + [31.3, 48.16], + [21.33, 46.96], + [14.53, 43.02], + [0.46, 13.94], + [0, 11.6], + [0, 10.65], + [2.37, 4.89], + [12.56, 0.15], + [31.48, 0.06], + [50.07, 0], + [60.53, 4.77], + [62.84, 9.57], + [62.93, 10.28], + [62.96, 11.08] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, -0.12], + [0.15, -0.4], + [3.26, -5.08], + [0.65, -0.83], + [1.02, -1.11], + [1.08, -0.37], + [2.37, -0.03], + [0, 0], + [4.03, 1.45], + [2.28, 2.46], + [2.48, 16.68], + [0.09, 1.11], + [0, 0.31], + [-1.45, 1.78], + [-3.94, 0], + [0, 0], + [0, 0], + [-2.55, -3.11], + [-0.28, -1.69], + [-0.02, -0.25], + [0, -0.27] + ], + "o": [ + [0, 0.12], + [-0.03, 1.2], + [-3.88, 11.88], + [-0.58, 0.89], + [-0.83, 1.11], + [-2.25, 2.46], + [-4.03, 1.45], + [0, 0], + [-2.4, -0.03], + [-1.11, -0.37], + [-6.22, -6.77], + [-0.12, -0.4], + [0, -0.33], + [0.12, -2], + [2.46, -3.05], + [0, 0], + [0, 0], + [4.03, -0.03], + [1.23, 1.48], + [0.04, 0.23], + [0.02, 0.27], + [0, 0] + ], + "v": [ + [64.96, 11.08], + [64.96, 11.45], + [64.5, 13.94], + [55.02, 37.18], + [53.21, 39.73], + [50.44, 43.02], + [43.67, 46.96], + [30.7, 48.16], + [30.3, 48.16], + [20.33, 46.96], + [13.53, 43.02], + [0.46, 13.94], + [0, 11.6], + [0, 10.65], + [2.37, 4.89], + [12.56, 0.15], + [33.48, 0.06], + [52.07, 0], + [62.53, 4.77], + [64.84, 9.57], + [64.93, 10.28], + [64.96, 11.08] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, -0.12], + [0.15, -0.4], + [3.26, -5.08], + [0.65, -0.83], + [1.02, -1.11], + [1.08, -0.37], + [2.37, -0.03], + [0, 0], + [4.03, 1.45], + [2.28, 2.46], + [5.48, 16.68], + [0.09, 1.11], + [0, 0.31], + [-1.45, 1.78], + [-3.94, 0], + [0, 0], + [0, 0], + [-2.55, -3.11], + [-0.28, -1.69], + [-0.02, -0.25], + [0, -0.27] + ], + "o": [ + [0, 0.12], + [-0.03, 1.2], + [-3.88, 11.88], + [-0.58, 0.89], + [-0.83, 1.11], + [-2.25, 2.46], + [-4.03, 1.45], + [0, 0], + [-2.4, -0.03], + [-1.11, -0.37], + [-6.22, -6.77], + [-0.12, -0.4], + [0, -0.33], + [0.12, -2], + [2.46, -3.05], + [0, 0], + [0, 0], + [4.03, -0.03], + [1.23, 1.48], + [0.04, 0.23], + [0.02, 0.27], + [0, 0] + ], + "v": [ + [62.96, 11.08], + [62.96, 11.45], + [62.5, 13.94], + [53.02, 37.18], + [51.21, 39.73], + [48.44, 43.02], + [41.67, 46.96], + [31.7, 48.16], + [31.3, 48.16], + [21.33, 46.96], + [14.53, 43.02], + [0.46, 13.94], + [0, 11.6], + [0, 10.65], + [2.37, 4.89], + [12.56, 0.15], + [31.48, 0.06], + [50.07, 0], + [60.53, 4.77], + [62.84, 9.57], + [62.93, 10.28], + [62.96, 11.08] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, -0.12], + [0.15, -0.4], + [3.26, -5.08], + [0.65, -0.83], + [1.02, -1.11], + [1.08, -0.37], + [2.37, -0.03], + [0, 0], + [4.03, 1.45], + [2.28, 2.46], + [5.48, 16.68], + [0.09, 1.11], + [0, 0.31], + [-1.45, 1.78], + [-3.94, 0], + [0, 0], + [0, 0], + [-2.55, -3.11], + [-0.28, -1.69], + [-0.02, -0.25], + [0, -0.27] + ], + "o": [ + [0, 0.12], + [-0.03, 1.2], + [-3.88, 11.88], + [-0.58, 0.89], + [-0.83, 1.11], + [-2.25, 2.46], + [-4.03, 1.45], + [0, 0], + [-2.4, -0.03], + [-1.11, -0.37], + [-6.22, -6.77], + [-0.12, -0.4], + [0, -0.33], + [0.12, -2], + [2.46, -3.05], + [0, 0], + [0, 0], + [4.03, -0.03], + [1.23, 1.48], + [0.04, 0.23], + [0.02, 0.27], + [0, 0] + ], + "v": [ + [62.96, 11.08], + [62.96, 11.45], + [62.5, 13.94], + [53.02, 37.18], + [51.21, 39.73], + [48.44, 43.02], + [41.67, 46.96], + [31.7, 48.16], + [31.3, 48.16], + [21.33, 46.96], + [14.53, 43.02], + [0.46, 13.94], + [0, 11.6], + [0, 10.65], + [2.37, 4.89], + [12.56, 0.15], + [31.48, 0.06], + [50.07, 0], + [60.53, 4.77], + [62.84, 9.57], + [62.93, 10.28], + [62.96, 11.08] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, -0.12], + [0.15, -0.4], + [3.26, -5.08], + [0.65, -0.83], + [1.02, -1.11], + [1.08, -0.37], + [2.37, -0.03], + [0, 0], + [4.03, 1.45], + [2.28, 2.46], + [5.48, 16.68], + [0.09, 1.11], + [0, 0.31], + [-1.45, 1.78], + [-3.94, 0], + [0, 0], + [0, 0], + [-2.55, -3.11], + [-0.28, -1.69], + [-0.02, -0.25], + [0, -0.27] + ], + "o": [ + [0, 0.12], + [-0.03, 1.2], + [-3.88, 11.88], + [-0.58, 0.89], + [-0.83, 1.11], + [-2.25, 2.46], + [-4.03, 1.45], + [0, 0], + [-2.4, -0.03], + [-1.11, -0.37], + [-6.22, -6.77], + [-0.12, -0.4], + [0, -0.33], + [0.12, -2], + [2.46, -3.05], + [0, 0], + [0, 0], + [4.03, -0.03], + [1.23, 1.48], + [0.04, 0.23], + [0.02, 0.27], + [0, 0] + ], + "v": [ + [62.96, 11.08], + [62.96, 11.45], + [62.5, 13.94], + [53.02, 37.18], + [51.21, 39.73], + [48.44, 43.02], + [41.67, 46.96], + [31.7, 48.16], + [31.3, 48.16], + [21.33, 46.96], + [14.53, 43.02], + [0.46, 13.94], + [0, 11.6], + [0, 10.65], + [2.37, 4.89], + [12.56, 0.15], + [31.48, 0.06], + [50.07, 0], + [60.53, 4.77], + [62.84, 9.57], + [62.93, 10.28], + [62.96, 11.08] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [47.61669921875, -40.366798400878906], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [49.61669921875, -40.366798400878906], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [47.61669921875, -40.366798400878906], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [47.61669921875, -40.366798400878906], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [49.61669921875, -40.366798400878906], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [47.61669921875, -40.366798400878906], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [47.61669921875, -40.366798400878906], + "t": 117 + }, + { "s": [47.61669921875, -40.366798400878906], "t": 137 } + ] + }, + "g": { + "p": 3, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 0.5419999957084656, + 0.5569019871973524, 0.9176862794184217, 0.7020000177645216, + 1, 0.8706274586939344, 0.9804313737177381, + 0.5569019871973524 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 0.5419999957084656, + 0.5569019871973524, 0.9176862794184217, 0.7020000177645216, + 1, 0.8706274586939344, 0.9804313737177381, + 0.5569019871973524 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 0.5419999957084656, + 0.5569019871973524, 0.9176862794184217, 0.7020000177645216, + 1, 0.8706274586939344, 0.9804313737177381, + 0.5569019871973524 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 0.5419999957084656, + 0.5569019871973524, 0.9176862794184217, 0.7020000177645216, + 1, 0.8706274586939344, 0.9804313737177381, + 0.5569019871973524 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 0.5419999957084656, + 0.5569019871973524, 0.9176862794184217, 0.7020000177645216, + 1, 0.8706274586939344, 0.9804313737177381, + 0.5569019871973524 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 0.5419999957084656, + 0.5569019871973524, 0.9176862794184217, 0.7020000177645216, + 1, 0.8706274586939344, 0.9804313737177381, + 0.5569019871973524 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 0.5419999957084656, + 0.5569019871973524, 0.9176862794184217, 0.7020000177645216, + 1, 0.8706274586939344, 0.9804313737177381, + 0.5569019871973524 + ], + "t": 117 + }, + { + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 0.5419999957084656, + 0.5569019871973524, 0.9176862794184217, 0.7020000177645216, + 1, 0.8706274586939344, 0.9804313737177381, + 0.5569019871973524 + ], + "t": 137 + } + ] + } + }, + "t": 1, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-16.26740074157715, 34.233699798583984], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-14.267399787902832, 34.233699798583984], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-16.26740074157715, 34.233699798583984], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-16.26740074157715, 34.233699798583984], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-14.267399787902832, 34.233699798583984], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-16.26740074157715, 34.233699798583984], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-16.26740074157715, 34.233699798583984], + "t": 117 + }, + { "s": [-16.26740074157715, 34.233699798583984], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 7 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [9.2, 4.24], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [9.2, 4.24], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.52, 3.98], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.06, 3.98], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [9.2, 4.24], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.52, 3.98], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.52, 4.04], + "t": 117 + }, + { "s": [9.2, 4.24], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [92.59, 122.84], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [92.59, 122.84], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [85.86, 122.98], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [84.41, 124.58], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [92.59, 122.84], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [85.86, 122.98], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [84.86, 123.04], + "t": 117 + }, + { "s": [92.59, 122.84], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.55, -0.43], + [1.35, 4.15], + [-0.98, 0.12], + [0, 0], + [-0.12, 1.02] + ], + "o": [ + [-0.46, 4.4], + [-4.49, 0.43], + [0.37, 0.89], + [0, 0], + [1.02, -0.09], + [0, 0] + ], + "v": [ + [18.4, 0], + [9.91, 8.43], + [0, 1.94], + [2.28, 3.26], + [16.43, 1.91], + [18.4, 0] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.55, -0.43], + [1.35, 4.15], + [-0.98, 0.12], + [0, 0], + [-0.12, 1.02] + ], + "o": [ + [-0.46, 4.4], + [-4.49, 0.43], + [0.37, 0.89], + [0, 0], + [1.02, -0.09], + [0, 0] + ], + "v": [ + [18.4, 0], + [9.91, 8.43], + [0, 1.94], + [2.28, 3.26], + [16.43, 1.91], + [18.4, 0] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3, -0.5], + [1.35, 4.15], + [-0.98, 0.12], + [0, 0], + [-0.12, 1.02] + ], + "o": [ + [-0.46, 4.4], + [-4.49, 0.43], + [0.37, 0.89], + [0, 0], + [1.02, -0.09], + [0, 0] + ], + "v": [ + [11.04, 0], + [7.07, 7.91], + [0, 1.54], + [2.28, 2.86], + [9.07, 1.91], + [11.04, 0] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.01, -0.36], + [1.35, 4.15], + [-0.98, 0.12], + [0, 0], + [-0.12, 1.02] + ], + "o": [ + [-0.46, 4.4], + [-7, 0.5], + [0.37, 0.89], + [0, 0], + [1.02, -0.09], + [0, 0] + ], + "v": [ + [20.12, 0], + [11.65, 7.91], + [0, 1.5], + [2.28, 2.82], + [18.15, 1.91], + [20.12, 0] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.55, -0.43], + [1.35, 4.15], + [-0.98, 0.12], + [0, 0], + [-0.12, 1.02] + ], + "o": [ + [-0.46, 4.4], + [-4.49, 0.43], + [0.37, 0.89], + [0, 0], + [1.02, -0.09], + [0, 0] + ], + "v": [ + [18.4, 0], + [9.91, 8.43], + [0, 1.94], + [2.28, 3.26], + [16.43, 1.91], + [18.4, 0] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3, -0.5], + [1.35, 4.15], + [-0.98, 0.12], + [0, 0], + [-0.12, 1.02] + ], + "o": [ + [-0.46, 4.4], + [-4.49, 0.43], + [0.37, 0.89], + [0, 0], + [1.02, -0.09], + [0, 0] + ], + "v": [ + [11.04, 0], + [7.07, 7.91], + [0, 1.54], + [2.28, 2.86], + [9.07, 1.91], + [11.04, 0] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3, -0.5], + [1.35, 4.15], + [-0.98, 0.12], + [0, 0], + [-0.12, 1.02] + ], + "o": [ + [-0.46, 4.4], + [-5.91, 0.99], + [0.37, 0.89], + [0, 0], + [1.02, -0.09], + [0, 0] + ], + "v": [ + [13.04, 0], + [9.07, 7.91], + [0, 1.54], + [2.28, 2.86], + [11.07, 1.91], + [13.04, 0] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.55, -0.43], + [1.35, 4.15], + [-0.98, 0.12], + [0, 0], + [-0.12, 1.02] + ], + "o": [ + [-0.46, 4.4], + [-4.49, 0.43], + [0.37, 0.89], + [0, 0], + [1.02, -0.09], + [0, 0] + ], + "v": [ + [18.4, 0], + [9.91, 8.43], + [0, 1.94], + [2.28, 3.26], + [16.43, 1.91], + [18.4, 0] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [24.9685001373291, -17.711000442504883], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [24.9685001373291, -17.711000442504883], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [24.9685001373291, -18.113399505615234], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [24.9685001373291, -18.151599884033203], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [24.9685001373291, -17.711000442504883], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [24.9685001373291, -18.113399505615234], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [26.9685001373291, -18.113399505615234], + "t": 117 + }, + { "s": [24.9685001373291, -17.711000442504883], "t": 137 } + ] + }, + "g": { + "p": 2, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.07199999690055847, 0.05101960852975939, + 0.6627843338274488, 0.6706274706148634, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.07199999690055847, 0.05101960852975939, + 0.6627843338274488, 0.6706274706148634, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.07199999690055847, 0.05101960852975939, + 0.6627843338274488, 0.6706274706148634, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.07199999690055847, 0.05101960852975939, + 0.6627843338274488, 0.6706274706148634, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.07199999690055847, 0.05101960852975939, + 0.6627843338274488, 0.6706274706148634, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.07199999690055847, 0.05101960852975939, + 0.6627843338274488, 0.6706274706148634, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.07199999690055847, 0.05101960852975939, + 0.6627843338274488, 0.6706274706148634, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 117 + }, + { + "s": [ + 0.07199999690055847, 0.05101960852975939, + 0.6627843338274488, 0.6706274706148634, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 137 + } + ] + } + }, + "t": 1, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.2692699432373047, 4.988160133361816], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.2692699432373047, 4.988160133361816], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.2692699432373047, 4.58581018447876], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.2692699432373047, 4.547599792480469], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.2692699432373047, 4.988160133361816], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.2692699432373047, 4.58581018447876], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [4.269269943237305, 4.58581018447876], + "t": 117 + }, + { "s": [2.2692699432373047, 4.988160133361816], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 8 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [9.4, 2.57], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [9.4, 2.57], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.72, 2.23], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.22, 2.23], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [9.4, 2.57], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.72, 2.23], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.72, 2.23], + "t": 117 + }, + { "s": [9.4, 2.57], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [92.43, 119.33], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [92.43, 119.33], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [85.71, 119.67], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [84.22, 121.23], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [92.43, 119.33], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [85.71, 119.67], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [84.71, 119.67], + "t": 117 + }, + { "s": [92.43, 119.33], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.05, -0.09], + [0, 0], + [0.28, 0.98], + [0.06, 0.47], + [-0.09, 0.12], + [-0.12, 0.03], + [0, 0], + [-0.09, -0.09], + [0, -0.12], + [0.04, -0.45] + ], + "o": [ + [-0.12, 1.02], + [0, 0], + [-1.05, 0.09], + [-0.14, -0.43], + [-0.03, -0.12], + [0.06, -0.09], + [0, 0], + [0.12, 0], + [0.09, 0.09], + [0.02, 0.47], + [0, 0] + ], + "v": [ + [18.75, 1.85], + [16.75, 3.75], + [2.63, 5.14], + [0.32, 3.63], + [0.01, 2.28], + [0.1, 1.91], + [0.41, 1.72], + [18.29, 0], + [18.63, 0.12], + [18.78, 0.46], + [18.75, 1.85] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.05, -0.09], + [0, 0], + [0.28, 0.98], + [0.06, 0.47], + [-0.09, 0.12], + [-0.12, 0.03], + [0, 0], + [-0.09, -0.09], + [0, -0.12], + [0.04, -0.45] + ], + "o": [ + [-0.12, 1.02], + [0, 0], + [-1.05, 0.09], + [-0.14, -0.43], + [-0.03, -0.12], + [0.06, -0.09], + [0, 0], + [0.12, 0], + [0.09, 0.09], + [0.02, 0.47], + [0, 0] + ], + "v": [ + [18.75, 1.85], + [16.75, 3.75], + [2.63, 5.14], + [0.32, 3.63], + [0.01, 2.28], + [0.1, 1.91], + [0.41, 1.72], + [18.29, 0], + [18.63, 0.12], + [18.78, 0.46], + [18.75, 1.85] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.05, -0.09], + [0, 0], + [0.28, 0.98], + [0.06, 0.47], + [-0.09, 0.12], + [-0.12, 0.03], + [0, 0], + [-0.09, -0.09], + [0, -0.12], + [0.04, -0.45] + ], + "o": [ + [-0.12, 1.02], + [0, 0], + [-1.05, 0.09], + [-0.14, -0.43], + [-0.03, -0.12], + [0.06, -0.09], + [0, 0], + [0.12, 0], + [0.09, 0.09], + [0.02, 0.47], + [0, 0] + ], + "v": [ + [11.39, 1.85], + [9.39, 3.75], + [2.63, 4.44], + [0.32, 2.94], + [0.01, 1.58], + [0.1, 1.21], + [0.41, 1.03], + [10.93, 0], + [11.27, 0.12], + [11.42, 0.46], + [11.39, 1.85] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.05, -0.09], + [0, 0], + [0.28, 0.98], + [0.06, 0.47], + [-0.09, 0.12], + [-0.12, 0.03], + [0, 0], + [-0.09, -0.09], + [0, -0.12], + [0.04, -0.45] + ], + "o": [ + [-0.12, 1.02], + [0, 0], + [-1.05, 0.09], + [-0.14, -0.43], + [-0.03, -0.12], + [0.06, -0.09], + [0, 0], + [0.12, 0], + [0.09, 0.09], + [0.02, 0.47], + [0, 0] + ], + "v": [ + [20.42, 1.76], + [18.39, 3.75], + [2.63, 4.44], + [0.32, 2.94], + [0.01, 1.58], + [0.1, 1.21], + [0.41, 1.03], + [19.93, 0], + [20.27, 0.12], + [20.42, 0.46], + [20.42, 1.76] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.05, -0.09], + [0, 0], + [0.28, 0.98], + [0.06, 0.47], + [-0.09, 0.12], + [-0.12, 0.03], + [0, 0], + [-0.09, -0.09], + [0, -0.12], + [0.04, -0.45] + ], + "o": [ + [-0.12, 1.02], + [0, 0], + [-1.05, 0.09], + [-0.14, -0.43], + [-0.03, -0.12], + [0.06, -0.09], + [0, 0], + [0.12, 0], + [0.09, 0.09], + [0.02, 0.47], + [0, 0] + ], + "v": [ + [18.75, 1.85], + [16.75, 3.75], + [2.63, 5.14], + [0.32, 3.63], + [0.01, 2.28], + [0.1, 1.91], + [0.41, 1.72], + [18.29, 0], + [18.63, 0.12], + [18.78, 0.46], + [18.75, 1.85] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.05, -0.09], + [0, 0], + [0.28, 0.98], + [0.06, 0.47], + [-0.09, 0.12], + [-0.12, 0.03], + [0, 0], + [-0.09, -0.09], + [0, -0.12], + [0.04, -0.45] + ], + "o": [ + [-0.12, 1.02], + [0, 0], + [-1.05, 0.09], + [-0.14, -0.43], + [-0.03, -0.12], + [0.06, -0.09], + [0, 0], + [0.12, 0], + [0.09, 0.09], + [0.02, 0.47], + [0, 0] + ], + "v": [ + [11.39, 1.85], + [9.39, 3.75], + [2.63, 4.44], + [0.32, 2.94], + [0.01, 1.58], + [0.1, 1.21], + [0.41, 1.03], + [10.93, 0], + [11.27, 0.12], + [11.42, 0.46], + [11.39, 1.85] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.05, -0.09], + [0, 0], + [0.28, 0.98], + [0.06, 0.47], + [-0.09, 0.12], + [-0.12, 0.03], + [0, 0], + [-0.09, -0.09], + [0, -0.12], + [0.04, -0.45] + ], + "o": [ + [-0.12, 1.02], + [0, 0], + [-1.05, 0.09], + [-0.14, -0.43], + [-0.03, -0.12], + [0.06, -0.09], + [0, 0], + [0.12, 0], + [0.09, 0.09], + [0.02, 0.47], + [0, 0] + ], + "v": [ + [13.39, 1.85], + [11.39, 3.75], + [2.63, 4.44], + [0.32, 2.94], + [0.01, 1.58], + [0.1, 1.21], + [0.41, 1.03], + [12.93, 0], + [13.27, 0.12], + [13.42, 0.46], + [13.39, 1.85] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.05, -0.09], + [0, 0], + [0.28, 0.98], + [0.06, 0.47], + [-0.09, 0.12], + [-0.12, 0.03], + [0, 0], + [-0.09, -0.09], + [0, -0.12], + [0.04, -0.45] + ], + "o": [ + [-0.12, 1.02], + [0, 0], + [-1.05, 0.09], + [-0.14, -0.43], + [-0.03, -0.12], + [0.06, -0.09], + [0, 0], + [0.12, 0], + [0.09, 0.09], + [0.02, 0.47], + [0, 0] + ], + "v": [ + [18.75, 1.85], + [16.75, 3.75], + [2.63, 5.14], + [0.32, 3.63], + [0.01, 2.28], + [0.1, 1.91], + [0.41, 1.72], + [18.29, 0], + [18.63, 0.12], + [18.78, 0.46], + [18.75, 1.85] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 117 + }, + { "s": [0.9334, 0.9922, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 9 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.01, 1.79], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.01, 1.79], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.01, 1.79], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.5, 2], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.01, 1.79], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.01, 1.79], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.01, 1.79], + "t": 117 + }, + { "s": [6.01, 1.79], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [96.78, 60.95], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [96.78, 60.95], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [93.74, 60.95], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [95.5, 61], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [96.78, 60.95], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [93.74, 60.95], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [93.74, 60.95], + "t": 117 + }, + { "s": [96.78, 60.95], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.49, 0.86], + [0.25, 0.37], + [0.22, 0], + [0, -0.03], + [-1.45, 0.03], + [-1.08, -1.11], + [0, 0], + [0.09, 0] + ], + "o": [ + [-0.09, 0.03], + [0, 0], + [-0.8, -1.11], + [-4.28, 0.03], + [0, 0.03], + [4.15, -0.09], + [0.43, 0.46], + [0.31, 0.83], + [0, 0] + ], + "v": [ + [11.91, 3.59], + [11.26, 2.17], + [10.8, 1.4], + [7.05, 0.33], + [0, 0.11], + [3.48, 0.08], + [11.17, 0.88], + [11.82, 1.93], + [11.91, 3.59] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.49, 0.86], + [0.25, 0.37], + [0.22, 0], + [0, -0.03], + [-1.45, 0.03], + [-1.08, -1.11], + [0, 0], + [0.09, 0] + ], + "o": [ + [-0.09, 0.03], + [0, 0], + [-0.8, -1.11], + [-4.28, 0.03], + [0, 0.03], + [4.15, -0.09], + [0.43, 0.46], + [0.31, 0.83], + [0, 0] + ], + "v": [ + [11.91, 3.59], + [11.26, 2.17], + [10.8, 1.4], + [7.05, 0.33], + [0, 0.11], + [3.48, 0.08], + [11.17, 0.88], + [11.82, 1.93], + [11.91, 3.59] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.49, 0.86], + [0.25, 0.37], + [0.22, 0], + [0, -0.03], + [-1.45, 0.03], + [-1.08, -1.11], + [0, 0], + [0.09, 0] + ], + "o": [ + [-0.09, 0.03], + [0, 0], + [-0.8, -1.11], + [-4.28, 0.03], + [0, 0.03], + [4.15, -0.09], + [0.43, 0.46], + [0.31, 0.83], + [0, 0] + ], + "v": [ + [11.91, 3.59], + [11.26, 2.17], + [10.8, 1.4], + [7.05, 0.33], + [0, 0.11], + [3.48, 0.08], + [11.17, 0.88], + [11.82, 1.93], + [11.91, 3.59] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.45, 0.96], + [0.23, 0.41], + [0.2, 0], + [0, -0.03], + [-1.32, 0.03], + [-0.99, -1.23], + [0, 0], + [0.08, 0] + ], + "o": [ + [-0.08, 0.03], + [0, 0], + [-0.73, -1.23], + [-3.92, 0.03], + [0, 0.03], + [3.8, -0.1], + [0.39, 0.51], + [0.28, 0.93], + [0, 0] + ], + "v": [ + [10.9, 4], + [10.31, 2.42], + [9.89, 1.56], + [6.45, 0.36], + [0, 0.12], + [3.18, 0.09], + [10.23, 0.98], + [10.82, 2.15], + [10.9, 4] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.49, 0.86], + [0.25, 0.37], + [0.22, 0], + [0, -0.03], + [-1.45, 0.03], + [-1.08, -1.11], + [0, 0], + [0.09, 0] + ], + "o": [ + [-0.09, 0.03], + [0, 0], + [-0.8, -1.11], + [-4.28, 0.03], + [0, 0.03], + [4.15, -0.09], + [0.43, 0.46], + [0.31, 0.83], + [0, 0] + ], + "v": [ + [11.91, 3.59], + [11.26, 2.17], + [10.8, 1.4], + [7.05, 0.33], + [0, 0.11], + [3.48, 0.08], + [11.17, 0.88], + [11.82, 1.93], + [11.91, 3.59] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.49, 0.86], + [0.25, 0.37], + [0.22, 0], + [0, -0.03], + [-1.45, 0.03], + [-1.08, -1.11], + [0, 0], + [0.09, 0] + ], + "o": [ + [-0.09, 0.03], + [0, 0], + [-0.8, -1.11], + [-4.28, 0.03], + [0, 0.03], + [4.15, -0.09], + [0.43, 0.46], + [0.31, 0.83], + [0, 0] + ], + "v": [ + [11.91, 3.59], + [11.26, 2.17], + [10.8, 1.4], + [7.05, 0.33], + [0, 0.11], + [3.48, 0.08], + [11.17, 0.88], + [11.82, 1.93], + [11.91, 3.59] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.49, 0.86], + [0.25, 0.37], + [0.22, 0], + [0, -0.03], + [-1.45, 0.03], + [-1.08, -1.11], + [0, 0], + [0.09, 0] + ], + "o": [ + [-0.09, 0.03], + [0, 0], + [-0.8, -1.11], + [-4.28, 0.03], + [0, 0.03], + [4.15, -0.09], + [0.43, 0.46], + [0.31, 0.83], + [0, 0] + ], + "v": [ + [11.91, 3.59], + [11.26, 2.17], + [10.8, 1.4], + [7.05, 0.33], + [0, 0.11], + [3.48, 0.08], + [11.17, 0.88], + [11.82, 1.93], + [11.91, 3.59] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.49, 0.86], + [0.25, 0.37], + [0.22, 0], + [0, -0.03], + [-1.45, 0.03], + [-1.08, -1.11], + [0, 0], + [0.09, 0] + ], + "o": [ + [-0.09, 0.03], + [0, 0], + [-0.8, -1.11], + [-4.28, 0.03], + [0, 0.03], + [4.15, -0.09], + [0.43, 0.46], + [0.31, 0.83], + [0, 0] + ], + "v": [ + [11.91, 3.59], + [11.26, 2.17], + [10.8, 1.4], + [7.05, 0.33], + [0, 0.11], + [3.48, 0.08], + [11.17, 0.88], + [11.82, 1.93], + [11.91, 3.59] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 117 + }, + { "s": [1, 1, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 10 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [8.52, 7.41], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [8.52, 7.41], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [8.52, 7.41], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.06, 8], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [8.52, 7.41], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [8.52, 7.41], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [8.52, 7.41], + "t": 117 + }, + { "s": [8.52, 7.41], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [114.86, 95.13], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [114.86, 95.13], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [111.81, 95.13], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [102.06, 97], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [114.86, 95.13], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [111.81, 95.13], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [111.81, 95.13], + "t": 117 + }, + { "s": [114.86, 95.13], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [8.06, 5.32], + [-0.15, 0.37], + [-2.52, -1.17], + [0.49, -0.37] + ], + "o": [ + [-0.43, 0.28], + [-2.83, -1.85], + [0.18, -0.4], + [8.03, 3.72], + [0, 0] + ], + "v": [ + [16.99, 14.82], + [5.48, 3.68], + [0.01, 0.11], + [5.85, 1.62], + [16.99, 14.82] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [8.06, 5.32], + [-0.15, 0.37], + [-2.52, -1.17], + [0.49, -0.37] + ], + "o": [ + [-0.43, 0.28], + [-2.83, -1.85], + [0.18, -0.4], + [8.03, 3.72], + [0, 0] + ], + "v": [ + [16.99, 14.82], + [5.48, 3.68], + [0.01, 0.11], + [5.85, 1.62], + [16.99, 14.82] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [8.06, 5.32], + [-0.15, 0.37], + [-2.52, -1.17], + [0.49, -0.37] + ], + "o": [ + [-0.43, 0.28], + [-2.83, -1.85], + [0.18, -0.4], + [8.03, 3.72], + [0, 0] + ], + "v": [ + [16.99, 14.82], + [5.48, 3.68], + [0.01, 0.11], + [5.85, 1.62], + [16.99, 14.82] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [7.5, 4.89], + [-0.15, 0.37], + [-2.52, -1.17], + [0.49, -0.37] + ], + "o": [ + [-0.43, 0.28], + [-2.83, -1.85], + [0.18, -0.4], + [8.03, 3.72], + [0, 0] + ], + "v": [ + [14, 16], + [6.5, 3.5], + [0, 0.11], + [5.85, 1.62], + [14, 16] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [8.06, 5.32], + [-0.15, 0.37], + [-2.52, -1.17], + [0.49, -0.37] + ], + "o": [ + [-0.43, 0.28], + [-2.83, -1.85], + [0.18, -0.4], + [8.03, 3.72], + [0, 0] + ], + "v": [ + [16.99, 14.82], + [5.48, 3.68], + [0.01, 0.11], + [5.85, 1.62], + [16.99, 14.82] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [8.06, 5.32], + [-0.15, 0.37], + [-2.52, -1.17], + [0.49, -0.37] + ], + "o": [ + [-0.43, 0.28], + [-2.83, -1.85], + [0.18, -0.4], + [8.03, 3.72], + [0, 0] + ], + "v": [ + [16.99, 14.82], + [5.48, 3.68], + [0.01, 0.11], + [5.85, 1.62], + [16.99, 14.82] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [8.06, 5.32], + [-0.15, 0.37], + [-2.52, -1.17], + [0.49, -0.37] + ], + "o": [ + [-0.43, 0.28], + [-2.83, -1.85], + [0.18, -0.4], + [8.03, 3.72], + [0, 0] + ], + "v": [ + [16.99, 14.82], + [5.48, 3.68], + [0.01, 0.11], + [5.85, 1.62], + [16.99, 14.82] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [8.06, 5.32], + [-0.15, 0.37], + [-2.52, -1.17], + [0.49, -0.37] + ], + "o": [ + [-0.43, 0.28], + [-2.83, -1.85], + [0.18, -0.4], + [8.03, 3.72], + [0, 0] + ], + "v": [ + [16.99, 14.82], + [5.48, 3.68], + [0.01, 0.11], + [5.85, 1.62], + [16.99, 14.82] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 117 + }, + { "s": [1, 1, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 11 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.34, 1.34], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.34, 1.34], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.34, 1.34], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.34, 1.34], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.34, 1.34], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.34, 1.34], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.34, 1.34], + "t": 117 + }, + { "s": [1.34, 1.34], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [109.07, 69.28], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [109.07, 69.28], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [106.03, 69.28], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [107.34, 70.34], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [109.07, 69.28], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [106.03, 69.28], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [106.03, 69.28], + "t": 117 + }, + { "s": [109.07, 69.28], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.77, 0], + [0, 0.74], + [-0.74, 0], + [0, -0.77] + ], + "o": [ + [0, 0.74], + [-0.74, 0], + [0, -0.77], + [0.77, 0], + [0, 0] + ], + "v": [ + [2.68, 1.35], + [1.32, 2.68], + [0, 1.35], + [1.32, 0], + [2.68, 1.35] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.77, 0], + [0, 0.74], + [-0.74, 0], + [0, -0.77] + ], + "o": [ + [0, 0.74], + [-0.74, 0], + [0, -0.77], + [0.77, 0], + [0, 0] + ], + "v": [ + [2.68, 1.35], + [1.32, 2.68], + [0, 1.35], + [1.32, 0], + [2.68, 1.35] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.77, 0], + [0, 0.74], + [-0.74, 0], + [0, -0.77] + ], + "o": [ + [0, 0.74], + [-0.74, 0], + [0, -0.77], + [0.77, 0], + [0, 0] + ], + "v": [ + [2.68, 1.35], + [1.32, 2.68], + [0, 1.35], + [1.32, 0], + [2.68, 1.35] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.77, 0], + [0, 0.74], + [-0.74, 0], + [0, -0.77] + ], + "o": [ + [0, 0.74], + [-0.74, 0], + [0, -0.77], + [0.77, 0], + [0, 0] + ], + "v": [ + [2.68, 1.35], + [1.32, 2.68], + [0, 1.35], + [1.32, 0], + [2.68, 1.35] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.77, 0], + [0, 0.74], + [-0.74, 0], + [0, -0.77] + ], + "o": [ + [0, 0.74], + [-0.74, 0], + [0, -0.77], + [0.77, 0], + [0, 0] + ], + "v": [ + [2.68, 1.35], + [1.32, 2.68], + [0, 1.35], + [1.32, 0], + [2.68, 1.35] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.77, 0], + [0, 0.74], + [-0.74, 0], + [0, -0.77] + ], + "o": [ + [0, 0.74], + [-0.74, 0], + [0, -0.77], + [0.77, 0], + [0, 0] + ], + "v": [ + [2.68, 1.35], + [1.32, 2.68], + [0, 1.35], + [1.32, 0], + [2.68, 1.35] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.77, 0], + [0, 0.74], + [-0.74, 0], + [0, -0.77] + ], + "o": [ + [0, 0.74], + [-0.74, 0], + [0, -0.77], + [0.77, 0], + [0, 0] + ], + "v": [ + [2.68, 1.35], + [1.32, 2.68], + [0, 1.35], + [1.32, 0], + [2.68, 1.35] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.77, 0], + [0, 0.74], + [-0.74, 0], + [0, -0.77] + ], + "o": [ + [0, 0.74], + [-0.74, 0], + [0, -0.77], + [0.77, 0], + [0, 0] + ], + "v": [ + [2.68, 1.35], + [1.32, 2.68], + [0, 1.35], + [1.32, 0], + [2.68, 1.35] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 117 + }, + { "s": [1, 1, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 12 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.25, 5.28], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.25, 5.28], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.25, 5.28], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.15, 5.15], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.25, 5.28], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.25, 5.28], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [5.25, 5.28], + "t": 117 + }, + { "s": [5.25, 5.28], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [118.26, 76.37], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [118.26, 76.37], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [115.22, 76.37], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [114.85, 77.36], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [118.26, 76.37], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [115.22, 76.37], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [115.22, 76.37], + "t": 117 + }, + { "s": [118.26, 76.37], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.69, -0.18], + [1.29, 1.66], + [-1.11, 1.2], + [-0.12, -4.28] + ], + "o": [ + [0.03, 1.78], + [-1.6, 0.18], + [-1.29, -1.63], + [1.48, -1.57], + [0, 0] + ], + "v": [ + [10.5, 6.43], + [7.39, 10.55], + [3.24, 7.44], + [0.25, 0.4], + [10.5, 6.43] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.69, -0.18], + [1.29, 1.66], + [-1.11, 1.2], + [-0.12, -4.28] + ], + "o": [ + [0.03, 1.78], + [-1.6, 0.18], + [-1.29, -1.63], + [1.48, -1.57], + [0, 0] + ], + "v": [ + [10.5, 6.43], + [7.39, 10.55], + [3.24, 7.44], + [0.25, 0.4], + [10.5, 6.43] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.69, -0.18], + [1.29, 1.66], + [-1.11, 1.2], + [-0.12, -4.28] + ], + "o": [ + [0.03, 1.78], + [-1.6, 0.18], + [-1.29, -1.63], + [1.48, -1.57], + [0, 0] + ], + "v": [ + [10.5, 6.43], + [7.39, 10.55], + [3.24, 7.44], + [0.25, 0.4], + [10.5, 6.43] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.69, -0.18], + [1.29, 1.66], + [-1.11, 1.2], + [-0.12, -4.28] + ], + "o": [ + [0.03, 1.78], + [-1.6, 0.18], + [-1.29, -1.63], + [1.48, -1.57], + [0, 0] + ], + "v": [ + [10.29, 8.23], + [7.29, 10.28], + [2.79, 6.78], + [0.29, 0.28], + [10.29, 8.23] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.69, -0.18], + [1.29, 1.66], + [-1.11, 1.2], + [-0.12, -4.28] + ], + "o": [ + [0.03, 1.78], + [-1.6, 0.18], + [-1.29, -1.63], + [1.48, -1.57], + [0, 0] + ], + "v": [ + [10.5, 6.43], + [7.39, 10.55], + [3.24, 7.44], + [0.25, 0.4], + [10.5, 6.43] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.69, -0.18], + [1.29, 1.66], + [-1.11, 1.2], + [-0.12, -4.28] + ], + "o": [ + [0.03, 1.78], + [-1.6, 0.18], + [-1.29, -1.63], + [1.48, -1.57], + [0, 0] + ], + "v": [ + [10.5, 6.43], + [7.39, 10.55], + [3.24, 7.44], + [0.25, 0.4], + [10.5, 6.43] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.69, -0.18], + [1.29, 1.66], + [-1.11, 1.2], + [-0.12, -4.28] + ], + "o": [ + [0.03, 1.78], + [-1.6, 0.18], + [-1.29, -1.63], + [1.48, -1.57], + [0, 0] + ], + "v": [ + [10.5, 6.43], + [7.39, 10.55], + [3.24, 7.44], + [0.25, 0.4], + [10.5, 6.43] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.69, -0.18], + [1.29, 1.66], + [-1.11, 1.2], + [-0.12, -4.28] + ], + "o": [ + [0.03, 1.78], + [-1.6, 0.18], + [-1.29, -1.63], + [1.48, -1.57], + [0, 0] + ], + "v": [ + [10.5, 6.43], + [7.39, 10.55], + [3.24, 7.44], + [0.25, 0.4], + [10.5, 6.43] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 117 + }, + { "s": [1, 1, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 13 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.17, 1.18], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.17, 1.18], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.17, 1.18], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.17, 1.18], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.17, 1.18], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.17, 1.18], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.17, 1.18], + "t": 117 + }, + { "s": [1.17, 1.18], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [91.76, 38.35], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [91.76, 38.35], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [88.72, 38.35], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.71, 38.35], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [91.76, 38.35], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [88.72, 38.35], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [88.72, 38.35], + "t": 117 + }, + { "s": [91.76, 38.35], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.65, 0], + [0, 0.65], + [-0.65, 0], + [0, -0.68] + ], + "o": [ + [0, 0.65], + [-0.65, 0], + [0, -0.68], + [0.65, 0], + [0, 0] + ], + "v": [ + [2.34, 1.2], + [1.17, 2.37], + [0, 1.2], + [1.17, 0], + [2.34, 1.2] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.65, 0], + [0, 0.65], + [-0.65, 0], + [0, -0.68] + ], + "o": [ + [0, 0.65], + [-0.65, 0], + [0, -0.68], + [0.65, 0], + [0, 0] + ], + "v": [ + [2.34, 1.2], + [1.17, 2.37], + [0, 1.2], + [1.17, 0], + [2.34, 1.2] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.65, 0], + [0, 0.65], + [-0.65, 0], + [0, -0.68] + ], + "o": [ + [0, 0.65], + [-0.65, 0], + [0, -0.68], + [0.65, 0], + [0, 0] + ], + "v": [ + [2.34, 1.2], + [1.17, 2.37], + [0, 1.2], + [1.17, 0], + [2.34, 1.2] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.65, 0], + [0, 0.65], + [-0.65, 0], + [0, -0.68] + ], + "o": [ + [0, 0.65], + [-0.65, 0], + [0, -0.68], + [0.65, 0], + [0, 0] + ], + "v": [ + [2.34, 1.2], + [1.17, 2.37], + [0, 1.2], + [1.17, 0], + [2.34, 1.2] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.65, 0], + [0, 0.65], + [-0.65, 0], + [0, -0.68] + ], + "o": [ + [0, 0.65], + [-0.65, 0], + [0, -0.68], + [0.65, 0], + [0, 0] + ], + "v": [ + [2.34, 1.2], + [1.17, 2.37], + [0, 1.2], + [1.17, 0], + [2.34, 1.2] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.65, 0], + [0, 0.65], + [-0.65, 0], + [0, -0.68] + ], + "o": [ + [0, 0.65], + [-0.65, 0], + [0, -0.68], + [0.65, 0], + [0, 0] + ], + "v": [ + [2.34, 1.2], + [1.17, 2.37], + [0, 1.2], + [1.17, 0], + [2.34, 1.2] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.65, 0], + [0, 0.65], + [-0.65, 0], + [0, -0.68] + ], + "o": [ + [0, 0.65], + [-0.65, 0], + [0, -0.68], + [0.65, 0], + [0, 0] + ], + "v": [ + [2.34, 1.2], + [1.17, 2.37], + [0, 1.2], + [1.17, 0], + [2.34, 1.2] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.65, 0], + [0, 0.65], + [-0.65, 0], + [0, -0.68] + ], + "o": [ + [0, 0.65], + [-0.65, 0], + [0, -0.68], + [0.65, 0], + [0, 0] + ], + "v": [ + [2.34, 1.2], + [1.17, 2.37], + [0, 1.2], + [1.17, 0], + [2.34, 1.2] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 1, 1], + "t": 117 + }, + { "s": [1, 1, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 14 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [3.86, 3.86], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [3.86, 3.86], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [3.86, 3.86], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [3.86, 3.86], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [3.86, 3.86], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [3.86, 3.86], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [3.86, 3.86], + "t": 117 + }, + { "s": [3.86, 3.86], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.23, 39.86], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.23, 39.86], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [87.19, 39.86], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [89.19, 39.86], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.23, 39.86], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [87.19, 39.86], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [87.19, 39.86], + "t": 117 + }, + { "s": [90.23, 39.86], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [2.12, 0], + [0, 2.12], + [-2.12, 0], + [0, -2.15] + ], + "o": [ + [0, 2.12], + [-2.12, 0], + [0, -2.15], + [2.12, 0], + [0, 0] + ], + "v": [ + [7.72, 3.88], + [3.88, 7.72], + [0, 3.88], + [3.88, 0], + [7.72, 3.88] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [2.12, 0], + [0, 2.12], + [-2.12, 0], + [0, -2.15] + ], + "o": [ + [0, 2.12], + [-2.12, 0], + [0, -2.15], + [2.12, 0], + [0, 0] + ], + "v": [ + [7.72, 3.88], + [3.88, 7.72], + [0, 3.88], + [3.88, 0], + [7.72, 3.88] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [2.12, 0], + [0, 2.12], + [-2.12, 0], + [0, -2.15] + ], + "o": [ + [0, 2.12], + [-2.12, 0], + [0, -2.15], + [2.12, 0], + [0, 0] + ], + "v": [ + [7.72, 3.88], + [3.88, 7.72], + [0, 3.88], + [3.88, 0], + [7.72, 3.88] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [2.12, 0], + [0, 2.12], + [-2.12, 0], + [0, -2.15] + ], + "o": [ + [0, 2.12], + [-2.12, 0], + [0, -2.15], + [2.12, 0], + [0, 0] + ], + "v": [ + [7.72, 3.88], + [3.88, 7.72], + [0, 3.88], + [3.88, 0], + [7.72, 3.88] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [2.12, 0], + [0, 2.12], + [-2.12, 0], + [0, -2.15] + ], + "o": [ + [0, 2.12], + [-2.12, 0], + [0, -2.15], + [2.12, 0], + [0, 0] + ], + "v": [ + [7.72, 3.88], + [3.88, 7.72], + [0, 3.88], + [3.88, 0], + [7.72, 3.88] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [2.12, 0], + [0, 2.12], + [-2.12, 0], + [0, -2.15] + ], + "o": [ + [0, 2.12], + [-2.12, 0], + [0, -2.15], + [2.12, 0], + [0, 0] + ], + "v": [ + [7.72, 3.88], + [3.88, 7.72], + [0, 3.88], + [3.88, 0], + [7.72, 3.88] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [2.12, 0], + [0, 2.12], + [-2.12, 0], + [0, -2.15] + ], + "o": [ + [0, 2.12], + [-2.12, 0], + [0, -2.15], + [2.12, 0], + [0, 0] + ], + "v": [ + [7.72, 3.88], + [3.88, 7.72], + [0, 3.88], + [3.88, 0], + [7.72, 3.88] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [2.12, 0], + [0, 2.12], + [-2.12, 0], + [0, -2.15] + ], + "o": [ + [0, 2.12], + [-2.12, 0], + [0, -2.15], + [2.12, 0], + [0, 0] + ], + "v": [ + [7.72, 3.88], + [3.88, 7.72], + [0, 3.88], + [3.88, 0], + [7.72, 3.88] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.592549800872803, -1.1063200235366821], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.592549800872803, -1.1063200235366821], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.592549800872803, -1.1063200235366821], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.592549800872803, -1.1063200235366821], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.592549800872803, -1.1063200235366821], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.592549800872803, -1.1063200235366821], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.592549800872803, -1.1063200235366821], + "t": 117 + }, + { "s": [7.592549800872803, -1.1063200235366821], "t": 137 } + ] + }, + "g": { + "p": 2, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 117 + }, + { + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 137 + } + ] + } + }, + "t": 1, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-5.978449821472168, 0.8727499842643738], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-5.978449821472168, 0.8727499842643738], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-5.978449821472168, 0.8727499842643738], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-5.978449821472168, 0.8727499842643738], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-5.978449821472168, 0.8727499842643738], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-5.978449821472168, 0.8727499842643738], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-5.978449821472168, 0.8727499842643738], + "t": 117 + }, + { "s": [-5.978449821472168, 0.8727499842643738], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 15 + }, + { + "ty": 4, + "nm": " / / / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.48, 0.48], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.48, 0.02], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.48, 0.48], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.48, 0.48], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.48, 0.48], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.48, 0.48], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.48, 0.48], + "t": 117 + }, + { "s": [0.48, 0.48], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100.39, 104.52], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100.39, 111.47], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [101.89, 106.38], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [93.45, 107.07], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100.39, 104.52], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [101.89, 106.38], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [101.89, 106.38], + "t": 117 + }, + { "s": [100.39, 104.52], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.28, 0], + [0, 0.25], + [-0.25, 0], + [0, -0.28] + ], + "o": [ + [0, 0.25], + [-0.25, 0], + [0, -0.28], + [0.28, 0], + [0, 0] + ], + "v": [ + [0.95, 0.49], + [0.46, 0.95], + [0, 0.49], + [0.46, 0], + [0.95, 0.49] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.28, 0], + [0, 0.01], + [-0.25, 0], + [0, -0.01] + ], + "o": [ + [0, 0.01], + [-0.25, 0], + [0, -0.01], + [0.28, 0], + [0, 0] + ], + "v": [ + [0.95, 0.02], + [0.46, 0.03], + [0, 0.02], + [0.46, 0], + [0.95, 0.02] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.28, 0], + [0, 0.25], + [-0.25, 0], + [0, -0.28] + ], + "o": [ + [0, 0.25], + [-0.25, 0], + [0, -0.28], + [0.28, 0], + [0, 0] + ], + "v": [ + [0.95, 0.49], + [0.46, 0.95], + [0, 0.49], + [0.46, 0], + [0.95, 0.49] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.28, 0], + [0, 0.25], + [-0.25, 0], + [0, -0.28] + ], + "o": [ + [0, 0.25], + [-0.25, 0], + [0, -0.28], + [0.28, 0], + [0, 0] + ], + "v": [ + [0.95, 0.49], + [0.46, 0.95], + [0, 0.49], + [0.46, 0], + [0.95, 0.49] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.28, 0], + [0, 0.25], + [-0.25, 0], + [0, -0.28] + ], + "o": [ + [0, 0.25], + [-0.25, 0], + [0, -0.28], + [0.28, 0], + [0, 0] + ], + "v": [ + [0.95, 0.49], + [0.46, 0.95], + [0, 0.49], + [0.46, 0], + [0.95, 0.49] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.28, 0], + [0, 0.25], + [-0.25, 0], + [0, -0.28] + ], + "o": [ + [0, 0.25], + [-0.25, 0], + [0, -0.28], + [0.28, 0], + [0, 0] + ], + "v": [ + [0.95, 0.49], + [0.46, 0.95], + [0, 0.49], + [0.46, 0], + [0.95, 0.49] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.28, 0], + [0, 0.25], + [-0.25, 0], + [0, -0.28] + ], + "o": [ + [0, 0.25], + [-0.25, 0], + [0, -0.28], + [0.28, 0], + [0, 0] + ], + "v": [ + [0.95, 0.49], + [0.46, 0.95], + [0, 0.49], + [0.46, 0], + [0.95, 0.49] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.28, 0], + [0, 0.25], + [-0.25, 0], + [0, -0.28] + ], + "o": [ + [0, 0.25], + [-0.25, 0], + [0, -0.28], + [0.28, 0], + [0, 0] + ], + "v": [ + [0.95, 0.49], + [0.46, 0.95], + [0, 0.49], + [0.46, 0], + [0.95, 0.49] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 117 + }, + { "s": [0.9334, 0.9922, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 16 + }, + { + "ty": 4, + "nm": " / / / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.94, 0.95], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.94, 0.03], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.94, 0.95], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.94, 0.95], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.94, 0.95], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.94, 0.95], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.94, 0.95], + "t": 117 + }, + { "s": [0.94, 0.95], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [103.22, 105.95], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [103.22, 111.51], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [104.35, 104.86], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [95.91, 105.55], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [103.22, 105.95], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [104.35, 104.86], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [104.35, 104.86], + "t": 117 + }, + { "s": [103.22, 105.95], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.52], + [-0.55, 0], + [0, -0.52] + ], + "o": [ + [0, 0.52], + [-0.55, 0], + [0, -0.52], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.88, 0.95], + [0.95, 1.91], + [0, 0.95], + [0.95, 0], + [1.88, 0.95] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.02], + [-0.55, 0], + [0, -0.02] + ], + "o": [ + [0, 0.02], + [-0.55, 0], + [0, -0.02], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.88, 0.03], + [0.95, 0.06], + [0, 0.03], + [0.95, 0], + [1.88, 0.03] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.52], + [-0.55, 0], + [0, -0.52] + ], + "o": [ + [0, 0.52], + [-0.55, 0], + [0, -0.52], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.88, 0.95], + [0.95, 1.91], + [0, 0.95], + [0.95, 0], + [1.88, 0.95] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.52], + [-0.55, 0], + [0, -0.52] + ], + "o": [ + [0, 0.52], + [-0.55, 0], + [0, -0.52], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.88, 0.95], + [0.95, 1.91], + [0, 0.95], + [0.95, 0], + [1.88, 0.95] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.52], + [-0.55, 0], + [0, -0.52] + ], + "o": [ + [0, 0.52], + [-0.55, 0], + [0, -0.52], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.88, 0.95], + [0.95, 1.91], + [0, 0.95], + [0.95, 0], + [1.88, 0.95] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.52], + [-0.55, 0], + [0, -0.52] + ], + "o": [ + [0, 0.52], + [-0.55, 0], + [0, -0.52], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.88, 0.95], + [0.95, 1.91], + [0, 0.95], + [0.95, 0], + [1.88, 0.95] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.52], + [-0.55, 0], + [0, -0.52] + ], + "o": [ + [0, 0.52], + [-0.55, 0], + [0, -0.52], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.88, 0.95], + [0.95, 1.91], + [0, 0.95], + [0.95, 0], + [1.88, 0.95] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.52], + [-0.55, 0], + [0, -0.52] + ], + "o": [ + [0, 0.52], + [-0.55, 0], + [0, -0.52], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.88, 0.95], + [0.95, 1.91], + [0, 0.95], + [0.95, 0], + [1.88, 0.95] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 117 + }, + { "s": [0.9334, 0.9922, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 17 + }, + { + "ty": 4, + "nm": " / / / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.4, 2.38], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.4, 0.08], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.4, 2.38], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.4, 2.38], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.4, 2.38], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.4, 2.38], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.4, 2.38], + "t": 117 + }, + { "s": [2.4, 2.38], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [105.91, 99.35], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [105.91, 111.3], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [98.82, 101.29], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.38, 101.98], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [105.91, 99.35], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [98.82, 101.29], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [98.82, 101.29], + "t": 117 + }, + { "s": [105.91, 99.35], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 1.32], + [-1.32, 0], + [0, -1.29] + ], + "o": [ + [0, 1.32], + [-1.32, 0], + [0, -1.29], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.8, 2.37], + [2.4, 4.77], + [0, 2.37], + [2.4, 0], + [4.8, 2.37] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 0.04], + [-1.32, 0], + [0, -0.04] + ], + "o": [ + [0, 0.04], + [-1.32, 0], + [0, -0.04], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.8, 0.08], + [2.4, 0.16], + [0, 0.08], + [2.4, 0], + [4.8, 0.08] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 1.32], + [-1.32, 0], + [0, -1.29] + ], + "o": [ + [0, 1.32], + [-1.32, 0], + [0, -1.29], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.8, 2.37], + [2.4, 4.77], + [0, 2.37], + [2.4, 0], + [4.8, 2.37] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 1.32], + [-1.32, 0], + [0, -1.29] + ], + "o": [ + [0, 1.32], + [-1.32, 0], + [0, -1.29], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.8, 2.37], + [2.4, 4.77], + [0, 2.37], + [2.4, 0], + [4.8, 2.37] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 1.32], + [-1.32, 0], + [0, -1.29] + ], + "o": [ + [0, 1.32], + [-1.32, 0], + [0, -1.29], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.8, 2.37], + [2.4, 4.77], + [0, 2.37], + [2.4, 0], + [4.8, 2.37] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 1.32], + [-1.32, 0], + [0, -1.29] + ], + "o": [ + [0, 1.32], + [-1.32, 0], + [0, -1.29], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.8, 2.37], + [2.4, 4.77], + [0, 2.37], + [2.4, 0], + [4.8, 2.37] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 1.32], + [-1.32, 0], + [0, -1.29] + ], + "o": [ + [0, 1.32], + [-1.32, 0], + [0, -1.29], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.8, 2.37], + [2.4, 4.77], + [0, 2.37], + [2.4, 0], + [4.8, 2.37] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 1.32], + [-1.32, 0], + [0, -1.29] + ], + "o": [ + [0, 1.32], + [-1.32, 0], + [0, -1.29], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.8, 2.37], + [2.4, 4.77], + [0, 2.37], + [2.4, 0], + [4.8, 2.37] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 117 + }, + { "s": [0.9334, 0.9922, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 18 + }, + { + "ty": 4, + "nm": " / / / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.45, 6.45], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.45, 0.21], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.45, 6.45], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.45, 6.45], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.45, 6.45], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.45, 6.45], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.45, 6.45], + "t": 117 + }, + { "s": [6.45, 6.45], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [104.17, 101.01], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [104.17, 111.35], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [101.13, 101.01], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [92.69, 101.69], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [104.17, 101.01], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [101.13, 101.01], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [101.13, 101.01], + "t": 117 + }, + { "s": [104.17, 101.01], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.57, 0], + [0, 3.54], + [-3.54, 0], + [0, -3.57] + ], + "o": [ + [0, 3.54], + [-3.54, 0], + [0, -3.57], + [3.57, 0], + [0, 0] + ], + "v": [ + [12.89, 6.46], + [6.43, 12.89], + [0, 6.46], + [6.43, 0], + [12.89, 6.46] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.57, 0], + [0, 0.12], + [-3.54, 0], + [0, -0.12] + ], + "o": [ + [0, 0.12], + [-3.54, 0], + [0, -0.12], + [3.57, 0], + [0, 0] + ], + "v": [ + [12.89, 0.21], + [6.43, 0.42], + [0, 0.21], + [6.43, 0], + [12.89, 0.21] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.57, 0], + [0, 3.54], + [-3.54, 0], + [0, -3.57] + ], + "o": [ + [0, 3.54], + [-3.54, 0], + [0, -3.57], + [3.57, 0], + [0, 0] + ], + "v": [ + [12.89, 6.46], + [6.43, 12.89], + [0, 6.46], + [6.43, 0], + [12.89, 6.46] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.57, 0], + [0, 3.54], + [-3.54, 0], + [0, -3.57] + ], + "o": [ + [0, 3.54], + [-3.54, 0], + [0, -3.57], + [3.57, 0], + [0, 0] + ], + "v": [ + [12.89, 6.46], + [6.43, 12.89], + [0, 6.46], + [6.43, 0], + [12.89, 6.46] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.57, 0], + [0, 3.54], + [-3.54, 0], + [0, -3.57] + ], + "o": [ + [0, 3.54], + [-3.54, 0], + [0, -3.57], + [3.57, 0], + [0, 0] + ], + "v": [ + [12.89, 6.46], + [6.43, 12.89], + [0, 6.46], + [6.43, 0], + [12.89, 6.46] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.57, 0], + [0, 3.54], + [-3.54, 0], + [0, -3.57] + ], + "o": [ + [0, 3.54], + [-3.54, 0], + [0, -3.57], + [3.57, 0], + [0, 0] + ], + "v": [ + [12.89, 6.46], + [6.43, 12.89], + [0, 6.46], + [6.43, 0], + [12.89, 6.46] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.57, 0], + [0, 3.54], + [-3.54, 0], + [0, -3.57] + ], + "o": [ + [0, 3.54], + [-3.54, 0], + [0, -3.57], + [3.57, 0], + [0, 0] + ], + "v": [ + [12.89, 6.46], + [6.43, 12.89], + [0, 6.46], + [6.43, 0], + [12.89, 6.46] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.57, 0], + [0, 3.54], + [-3.54, 0], + [0, -3.57] + ], + "o": [ + [0, 3.54], + [-3.54, 0], + [0, -3.57], + [3.57, 0], + [0, 0] + ], + "v": [ + [12.89, 6.46], + [6.43, 12.89], + [0, 6.46], + [6.43, 0], + [12.89, 6.46] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [12.887200355529785, 0.008924400433897972], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [12.887200355529785, 0.0002937199897132814], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [12.887200355529785, 0.008924400433897972], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [12.887200355529785, 0.008924400433897972], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [12.887200355529785, 0.008924400433897972], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [12.887200355529785, 0.008924400433897972], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [12.887200355529785, 0.008924400433897972], + "t": 117 + }, + { "s": [12.887200355529785, 0.008924400433897972], "t": 137 } + ] + }, + "g": { + "p": 2, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 117 + }, + { + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 137 + } + ] + } + }, + "t": 1, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.005847049877047539, 0.008924400433897972], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.005847049877047539, 0.0002937199897132814], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.005847049877047539, 0.008924400433897972], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.005847049877047539, 0.008924400433897972], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.005847049877047539, 0.008924400433897972], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.005847049877047539, 0.008924400433897972], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.005847049877047539, 0.008924400433897972], + "t": 117 + }, + { "s": [0.005847049877047539, 0.008924400433897972], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 19 + }, + { + "ty": 4, + "nm": " / / / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.68, 7.68], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.88, 0.26], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.68, 7.68], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.68, 7.68], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.68, 7.68], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.68, 7.68], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.68, 7.68], + "t": 117 + }, + { "s": [7.68, 7.68], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [104.17, 101.01], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [104.17, 111.36], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [101.13, 101.01], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [92.69, 101.69], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [104.17, 101.01], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [101.13, 101.01], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [101.13, 101.01], + "t": 117 + }, + { "s": [104.17, 101.01], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.25, 0], + [0, 4.22], + [-4.22, 0], + [0, -4.25] + ], + "o": [ + [0, 4.22], + [-4.22, 0], + [0, -4.25], + [4.25, 0], + [0, 0] + ], + "v": [ + [15.36, 7.69], + [7.66, 15.36], + [0, 7.69], + [7.66, 0], + [15.36, 7.69] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [9.84, 0], + [0, 0.14], + [-4.22, 0], + [0, -0.14] + ], + "o": [ + [0, 0.14], + [-9.84, 0], + [0, -0.14], + [4.25, 0], + [0, 0] + ], + "v": [ + [15.56, 0.25], + [7.87, 0.52], + [0.21, 0.25], + [7.87, 0], + [15.56, 0.25] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.25, 0], + [0, 4.22], + [-4.22, 0], + [0, -4.25] + ], + "o": [ + [0, 4.22], + [-4.22, 0], + [0, -4.25], + [4.25, 0], + [0, 0] + ], + "v": [ + [15.36, 7.69], + [7.66, 15.36], + [0, 7.69], + [7.66, 0], + [15.36, 7.69] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.25, 0], + [0, 4.22], + [-4.22, 0], + [0, -4.25] + ], + "o": [ + [0, 4.22], + [-4.22, 0], + [0, -4.25], + [4.25, 0], + [0, 0] + ], + "v": [ + [15.36, 7.69], + [7.66, 15.36], + [0, 7.69], + [7.66, 0], + [15.36, 7.69] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.25, 0], + [0, 4.22], + [-4.22, 0], + [0, -4.25] + ], + "o": [ + [0, 4.22], + [-4.22, 0], + [0, -4.25], + [4.25, 0], + [0, 0] + ], + "v": [ + [15.36, 7.69], + [7.66, 15.36], + [0, 7.69], + [7.66, 0], + [15.36, 7.69] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.25, 0], + [0, 4.22], + [-4.22, 0], + [0, -4.25] + ], + "o": [ + [0, 4.22], + [-4.22, 0], + [0, -4.25], + [4.25, 0], + [0, 0] + ], + "v": [ + [15.36, 7.69], + [7.66, 15.36], + [0, 7.69], + [7.66, 0], + [15.36, 7.69] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.25, 0], + [0, 4.22], + [-4.22, 0], + [0, -4.25] + ], + "o": [ + [0, 4.22], + [-4.22, 0], + [0, -4.25], + [4.25, 0], + [0, 0] + ], + "v": [ + [15.36, 7.69], + [7.66, 15.36], + [0, 7.69], + [7.66, 0], + [15.36, 7.69] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.25, 0], + [0, 4.22], + [-4.22, 0], + [0, -4.25] + ], + "o": [ + [0, 4.22], + [-4.22, 0], + [0, -4.25], + [4.25, 0], + [0, 0] + ], + "v": [ + [15.36, 7.69], + [7.66, 15.36], + [0, 7.69], + [7.66, 0], + [15.36, 7.69] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 117 + }, + { "s": [0.9334, 0.9922, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 20 + }, + { + "ty": 4, + "nm": " / / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 2, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.69, 10.69], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [11, 0.5], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.69, 10.69], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.69, 10.69], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.69, 10.69], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.69, 10.69], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.69, 10.69], + "t": 117 + }, + { "s": [10.69, 10.69], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [104.17, 101.01], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [104, 111.5], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [101.13, 101.01], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [92.69, 101.69], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [104.17, 101.01], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [101.13, 101.01], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [101.13, 101.01], + "t": 117 + }, + { "s": [104.17, 101.01], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.91, 0], + [0, 5.88], + [-5.88, 0], + [0, -5.91] + ], + "o": [ + [0, 5.88], + [-5.88, 0], + [0, -5.91], + [5.91, 0], + [0, 0] + ], + "v": [ + [21.39, 10.71], + [10.68, 21.39], + [0, 10.71], + [10.68, 0], + [21.39, 10.71] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [6.08, 0], + [0, 0.27], + [-6.05, 0], + [0, -0.28] + ], + "o": [ + [0, 0.27], + [-6.05, 0], + [0, -0.28], + [6.08, 0], + [0, 0] + ], + "v": [ + [22, 0.5], + [10.98, 1], + [0, 0.5], + [10.98, 0], + [22, 0.5] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.91, 0], + [0, 5.88], + [-5.88, 0], + [0, -5.91] + ], + "o": [ + [0, 5.88], + [-5.88, 0], + [0, -5.91], + [5.91, 0], + [0, 0] + ], + "v": [ + [21.39, 10.71], + [10.68, 21.39], + [0, 10.71], + [10.68, 0], + [21.39, 10.71] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.91, 0], + [0, 5.88], + [-5.88, 0], + [0, -5.91] + ], + "o": [ + [0, 5.88], + [-5.88, 0], + [0, -5.91], + [5.91, 0], + [0, 0] + ], + "v": [ + [21.39, 10.71], + [10.68, 21.39], + [0, 10.71], + [10.68, 0], + [21.39, 10.71] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.91, 0], + [0, 5.88], + [-5.88, 0], + [0, -5.91] + ], + "o": [ + [0, 5.88], + [-5.88, 0], + [0, -5.91], + [5.91, 0], + [0, 0] + ], + "v": [ + [21.39, 10.71], + [10.68, 21.39], + [0, 10.71], + [10.68, 0], + [21.39, 10.71] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.91, 0], + [0, 5.88], + [-5.88, 0], + [0, -5.91] + ], + "o": [ + [0, 5.88], + [-5.88, 0], + [0, -5.91], + [5.91, 0], + [0, 0] + ], + "v": [ + [21.39, 10.71], + [10.68, 21.39], + [0, 10.71], + [10.68, 0], + [21.39, 10.71] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.91, 0], + [0, 5.88], + [-5.88, 0], + [0, -5.91] + ], + "o": [ + [0, 5.88], + [-5.88, 0], + [0, -5.91], + [5.91, 0], + [0, 0] + ], + "v": [ + [21.39, 10.71], + [10.68, 21.39], + [0, 10.71], + [10.68, 0], + [21.39, 10.71] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.91, 0], + [0, 5.88], + [-5.88, 0], + [0, -5.91] + ], + "o": [ + [0, 5.88], + [-5.88, 0], + [0, -5.91], + [5.91, 0], + [0, 0] + ], + "v": [ + [21.39, 10.71], + [10.68, 21.39], + [0, 10.71], + [10.68, 0], + [21.39, 10.71] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [21.266300201416016, 10.696399688720703], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [21.875, 0.5001150369644165], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [21.266300201416016, 10.696399688720703], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [21.266300201416016, 10.696399688720703], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [21.266300201416016, 10.696399688720703], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [21.266300201416016, 10.696399688720703], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [21.266300201416016, 10.696399688720703], + "t": 117 + }, + { "s": [21.266300201416016, 10.696399688720703], "t": 137 } + ] + }, + "g": { + "p": 2, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 117 + }, + { + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 137 + } + ] + } + }, + "t": 2, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.693300247192383, 10.696399688720703], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.99940013885498, 0.5001150369644165], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.693300247192383, 10.696399688720703], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.693300247192383, 10.696399688720703], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.693300247192383, 10.696399688720703], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.693300247192383, 10.696399688720703], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.693300247192383, 10.696399688720703], + "t": 117 + }, + { "s": [10.693300247192383, 10.696399688720703], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 21 + }, + { + "ty": 4, + "nm": " / / / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.48, 0.48], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.48, 0.02], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.48, 0.48], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.48, 0.48], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.48, 0.48], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.48, 0.48], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.48, 0.48], + "t": 117 + }, + { "s": [0.48, 0.48], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [71.52, 104.52], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [71.52, 111.47], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [72.89, 106.38], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [66.32, 107.07], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [71.52, 104.52], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [72.89, 106.38], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [72.89, 106.38], + "t": 117 + }, + { "s": [71.52, 104.52], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.25, 0], + [0, 0.25], + [-0.28, 0], + [0, -0.28] + ], + "o": [ + [0, 0.25], + [-0.28, 0], + [0, -0.28], + [0.25, 0], + [0, 0] + ], + "v": [ + [0.95, 0.49], + [0.49, 0.95], + [0, 0.49], + [0.49, 0], + [0.95, 0.49] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.25, 0], + [0, 0.01], + [-0.28, 0], + [0, -0.01] + ], + "o": [ + [0, 0.01], + [-0.28, 0], + [0, -0.01], + [0.25, 0], + [0, 0] + ], + "v": [ + [0.95, 0.02], + [0.49, 0.03], + [0, 0.02], + [0.49, 0], + [0.95, 0.02] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.25, 0], + [0, 0.25], + [-0.28, 0], + [0, -0.28] + ], + "o": [ + [0, 0.25], + [-0.28, 0], + [0, -0.28], + [0.25, 0], + [0, 0] + ], + "v": [ + [0.95, 0.49], + [0.49, 0.95], + [0, 0.49], + [0.49, 0], + [0.95, 0.49] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.25, 0], + [0, 0.25], + [-0.28, 0], + [0, -0.28] + ], + "o": [ + [0, 0.25], + [-0.28, 0], + [0, -0.28], + [0.25, 0], + [0, 0] + ], + "v": [ + [0.95, 0.49], + [0.49, 0.95], + [0, 0.49], + [0.49, 0], + [0.95, 0.49] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.25, 0], + [0, 0.25], + [-0.28, 0], + [0, -0.28] + ], + "o": [ + [0, 0.25], + [-0.28, 0], + [0, -0.28], + [0.25, 0], + [0, 0] + ], + "v": [ + [0.95, 0.49], + [0.49, 0.95], + [0, 0.49], + [0.49, 0], + [0.95, 0.49] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.25, 0], + [0, 0.25], + [-0.28, 0], + [0, -0.28] + ], + "o": [ + [0, 0.25], + [-0.28, 0], + [0, -0.28], + [0.25, 0], + [0, 0] + ], + "v": [ + [0.95, 0.49], + [0.49, 0.95], + [0, 0.49], + [0.49, 0], + [0.95, 0.49] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.25, 0], + [0, 0.25], + [-0.28, 0], + [0, -0.28] + ], + "o": [ + [0, 0.25], + [-0.28, 0], + [0, -0.28], + [0.25, 0], + [0, 0] + ], + "v": [ + [0.95, 0.49], + [0.49, 0.95], + [0, 0.49], + [0.49, 0], + [0.95, 0.49] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.25, 0], + [0, 0.25], + [-0.28, 0], + [0, -0.28] + ], + "o": [ + [0, 0.25], + [-0.28, 0], + [0, -0.28], + [0.25, 0], + [0, 0] + ], + "v": [ + [0.95, 0.49], + [0.49, 0.95], + [0, 0.49], + [0.49, 0], + [0.95, 0.49] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 117 + }, + { "s": [0.9334, 0.9922, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 22 + }, + { + "ty": 4, + "nm": " / / / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.95, 0.95], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.95, 0.03], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.95, 0.95], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.95, 0.95], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.95, 0.95], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.95, 0.95], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.95, 0.95], + "t": 117 + }, + { "s": [0.95, 0.95], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [74.37, 105.95], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [74.37, 111.51], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [75.37, 104.86], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [68.8, 105.55], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [74.37, 105.95], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [75.37, 104.86], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [75.37, 104.86], + "t": 117 + }, + { "s": [74.37, 105.95], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.52], + [-0.52, 0], + [0, -0.52] + ], + "o": [ + [0, 0.52], + [-0.52, 0], + [0, -0.52], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.91, 0.95], + [0.95, 1.91], + [0, 0.95], + [0.95, 0], + [1.91, 0.95] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.02], + [-0.52, 0], + [0, -0.02] + ], + "o": [ + [0, 0.02], + [-0.52, 0], + [0, -0.02], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.91, 0.03], + [0.95, 0.06], + [0, 0.03], + [0.95, 0], + [1.91, 0.03] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.52], + [-0.52, 0], + [0, -0.52] + ], + "o": [ + [0, 0.52], + [-0.52, 0], + [0, -0.52], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.91, 0.95], + [0.95, 1.91], + [0, 0.95], + [0.95, 0], + [1.91, 0.95] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.52], + [-0.52, 0], + [0, -0.52] + ], + "o": [ + [0, 0.52], + [-0.52, 0], + [0, -0.52], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.91, 0.95], + [0.95, 1.91], + [0, 0.95], + [0.95, 0], + [1.91, 0.95] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.52], + [-0.52, 0], + [0, -0.52] + ], + "o": [ + [0, 0.52], + [-0.52, 0], + [0, -0.52], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.91, 0.95], + [0.95, 1.91], + [0, 0.95], + [0.95, 0], + [1.91, 0.95] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.52], + [-0.52, 0], + [0, -0.52] + ], + "o": [ + [0, 0.52], + [-0.52, 0], + [0, -0.52], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.91, 0.95], + [0.95, 1.91], + [0, 0.95], + [0.95, 0], + [1.91, 0.95] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.52], + [-0.52, 0], + [0, -0.52] + ], + "o": [ + [0, 0.52], + [-0.52, 0], + [0, -0.52], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.91, 0.95], + [0.95, 1.91], + [0, 0.95], + [0.95, 0], + [1.91, 0.95] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0.52, 0], + [0, 0.52], + [-0.52, 0], + [0, -0.52] + ], + "o": [ + [0, 0.52], + [-0.52, 0], + [0, -0.52], + [0.52, 0], + [0, 0] + ], + "v": [ + [1.91, 0.95], + [0.95, 1.91], + [0, 0.95], + [0.95, 0], + [1.91, 0.95] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 117 + }, + { "s": [0.9334, 0.9922, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 23 + }, + { + "ty": 4, + "nm": " / / / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.38, 2.38], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.38, 0.08], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.38, 2.38], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.38, 2.38], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.38, 2.38], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.38, 2.38], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [2.38, 2.38], + "t": 117 + }, + { "s": [2.38, 2.38], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [77.06, 99.35], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [77.06, 111.3], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [69.8, 101.29], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [63.23, 101.98], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [77.06, 99.35], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [69.8, 101.29], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [69.8, 101.29], + "t": 117 + }, + { "s": [77.06, 99.35], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 1.32], + [-1.32, 0], + [0, -1.29] + ], + "o": [ + [0, 1.32], + [-1.32, 0], + [0, -1.29], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.77, 2.37], + [2.37, 4.77], + [0, 2.37], + [2.37, 0], + [4.77, 2.37] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 0.04], + [-1.32, 0], + [0, -0.04] + ], + "o": [ + [0, 0.04], + [-1.32, 0], + [0, -0.04], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.77, 0.08], + [2.37, 0.16], + [0, 0.08], + [2.37, 0], + [4.77, 0.08] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 1.32], + [-1.32, 0], + [0, -1.29] + ], + "o": [ + [0, 1.32], + [-1.32, 0], + [0, -1.29], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.77, 2.37], + [2.37, 4.77], + [0, 2.37], + [2.37, 0], + [4.77, 2.37] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 1.32], + [-1.32, 0], + [0, -1.29] + ], + "o": [ + [0, 1.32], + [-1.32, 0], + [0, -1.29], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.77, 2.37], + [2.37, 4.77], + [0, 2.37], + [2.37, 0], + [4.77, 2.37] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 1.32], + [-1.32, 0], + [0, -1.29] + ], + "o": [ + [0, 1.32], + [-1.32, 0], + [0, -1.29], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.77, 2.37], + [2.37, 4.77], + [0, 2.37], + [2.37, 0], + [4.77, 2.37] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 1.32], + [-1.32, 0], + [0, -1.29] + ], + "o": [ + [0, 1.32], + [-1.32, 0], + [0, -1.29], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.77, 2.37], + [2.37, 4.77], + [0, 2.37], + [2.37, 0], + [4.77, 2.37] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 1.32], + [-1.32, 0], + [0, -1.29] + ], + "o": [ + [0, 1.32], + [-1.32, 0], + [0, -1.29], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.77, 2.37], + [2.37, 4.77], + [0, 2.37], + [2.37, 0], + [4.77, 2.37] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.32, 0], + [0, 1.32], + [-1.32, 0], + [0, -1.29] + ], + "o": [ + [0, 1.32], + [-1.32, 0], + [0, -1.29], + [1.32, 0], + [0, 0] + ], + "v": [ + [4.77, 2.37], + [2.37, 4.77], + [0, 2.37], + [2.37, 0], + [4.77, 2.37] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 117 + }, + { "s": [0.9334, 0.9922, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 24 + }, + { + "ty": 4, + "nm": " / / / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.45, 6.45], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.45, 0.21], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.45, 6.45], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.45, 6.45], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.45, 6.45], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.45, 6.45], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [6.45, 6.45], + "t": 117 + }, + { "s": [6.45, 6.45], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [75.31, 101.01], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [75.31, 111.35], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [72.27, 101.01], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [65.69, 101.69], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [75.31, 101.01], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [72.27, 101.01], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [72.27, 101.01], + "t": 117 + }, + { "s": [75.31, 101.01], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.54, 0], + [0, 3.54], + [-3.57, 0], + [0, -3.57] + ], + "o": [ + [0, 3.54], + [-3.57, 0], + [0, -3.57], + [3.54, 0], + [0, 0] + ], + "v": [ + [12.89, 6.46], + [6.46, 12.89], + [0, 6.46], + [6.46, 0], + [12.89, 6.46] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.54, 0], + [0, 0.12], + [-3.57, 0], + [0, -0.12] + ], + "o": [ + [0, 0.12], + [-3.57, 0], + [0, -0.12], + [3.54, 0], + [0, 0] + ], + "v": [ + [12.89, 0.21], + [6.46, 0.42], + [0, 0.21], + [6.46, 0], + [12.89, 0.21] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.54, 0], + [0, 3.54], + [-3.57, 0], + [0, -3.57] + ], + "o": [ + [0, 3.54], + [-3.57, 0], + [0, -3.57], + [3.54, 0], + [0, 0] + ], + "v": [ + [12.89, 6.46], + [6.46, 12.89], + [0, 6.46], + [6.46, 0], + [12.89, 6.46] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.54, 0], + [0, 3.54], + [-3.57, 0], + [0, -3.57] + ], + "o": [ + [0, 3.54], + [-3.57, 0], + [0, -3.57], + [3.54, 0], + [0, 0] + ], + "v": [ + [12.89, 6.46], + [6.46, 12.89], + [0, 6.46], + [6.46, 0], + [12.89, 6.46] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.54, 0], + [0, 3.54], + [-3.57, 0], + [0, -3.57] + ], + "o": [ + [0, 3.54], + [-3.57, 0], + [0, -3.57], + [3.54, 0], + [0, 0] + ], + "v": [ + [12.89, 6.46], + [6.46, 12.89], + [0, 6.46], + [6.46, 0], + [12.89, 6.46] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.54, 0], + [0, 3.54], + [-3.57, 0], + [0, -3.57] + ], + "o": [ + [0, 3.54], + [-3.57, 0], + [0, -3.57], + [3.54, 0], + [0, 0] + ], + "v": [ + [12.89, 6.46], + [6.46, 12.89], + [0, 6.46], + [6.46, 0], + [12.89, 6.46] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.54, 0], + [0, 3.54], + [-3.57, 0], + [0, -3.57] + ], + "o": [ + [0, 3.54], + [-3.57, 0], + [0, -3.57], + [3.54, 0], + [0, 0] + ], + "v": [ + [12.89, 6.46], + [6.46, 12.89], + [0, 6.46], + [6.46, 0], + [12.89, 6.46] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [3.54, 0], + [0, 3.54], + [-3.57, 0], + [0, -3.57] + ], + "o": [ + [0, 3.54], + [-3.57, 0], + [0, -3.57], + [3.54, 0], + [0, 0] + ], + "v": [ + [12.89, 6.46], + [6.46, 12.89], + [0, 6.46], + [6.46, 0], + [12.89, 6.46] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [12.891799926757812, 0.008924400433897972], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [12.891799926757812, 0.0002937199897132814], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [12.891799926757812, 0.008924400433897972], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [12.891799926757812, 0.008924400433897972], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [12.891799926757812, 0.008924400433897972], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [12.891799926757812, 0.008924400433897972], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [12.891799926757812, 0.008924400433897972], + "t": 117 + }, + { "s": [12.891799926757812, 0.008924400433897972], "t": 137 } + ] + }, + "g": { + "p": 2, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 117 + }, + { + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 137 + } + ] + } + }, + "t": 1, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.010463099926710129, 0.008924400433897972], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.010463099926710129, 0.0002937199897132814], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.010463099926710129, 0.008924400433897972], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.010463099926710129, 0.008924400433897972], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.010463099926710129, 0.008924400433897972], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.010463099926710129, 0.008924400433897972], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.010463099926710129, 0.008924400433897972], + "t": 117 + }, + { "s": [0.010463099926710129, 0.008924400433897972], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 25 + }, + { + "ty": 4, + "nm": " / / / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.68, 7.68], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.95, 0.26], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.68, 7.68], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.68, 7.68], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.68, 7.68], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.68, 7.68], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [7.68, 7.68], + "t": 117 + }, + { "s": [7.68, 7.68], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [75.31, 101.01], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [75.31, 111.36], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [72.27, 101.01], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [65.69, 101.69], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [75.31, 101.01], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [72.27, 101.01], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [72.27, 101.01], + "t": 117 + }, + { "s": [75.31, 101.01], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.22, 0], + [0, 4.22], + [-4.25, 0], + [0, -4.25] + ], + "o": [ + [0, 4.22], + [-4.25, 0], + [0, -4.25], + [4.22, 0], + [0, 0] + ], + "v": [ + [15.36, 7.69], + [7.69, 15.36], + [0, 7.69], + [7.69, 0], + [15.36, 7.69] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [10.18, 0], + [0, 0.14], + [-4.25, 0], + [0, -0.14] + ], + "o": [ + [0, 0.14], + [-10.18, 0], + [0, -0.14], + [4.22, 0], + [0, 0] + ], + "v": [ + [15.62, 0.25], + [7.96, 0.52], + [0.27, 0.25], + [7.96, 0], + [15.62, 0.25] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.22, 0], + [0, 4.22], + [-4.25, 0], + [0, -4.25] + ], + "o": [ + [0, 4.22], + [-4.25, 0], + [0, -4.25], + [4.22, 0], + [0, 0] + ], + "v": [ + [15.36, 7.69], + [7.69, 15.36], + [0, 7.69], + [7.69, 0], + [15.36, 7.69] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.22, 0], + [0, 4.22], + [-4.25, 0], + [0, -4.25] + ], + "o": [ + [0, 4.22], + [-4.25, 0], + [0, -4.25], + [4.22, 0], + [0, 0] + ], + "v": [ + [15.36, 7.69], + [7.69, 15.36], + [0, 7.69], + [7.69, 0], + [15.36, 7.69] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.22, 0], + [0, 4.22], + [-4.25, 0], + [0, -4.25] + ], + "o": [ + [0, 4.22], + [-4.25, 0], + [0, -4.25], + [4.22, 0], + [0, 0] + ], + "v": [ + [15.36, 7.69], + [7.69, 15.36], + [0, 7.69], + [7.69, 0], + [15.36, 7.69] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.22, 0], + [0, 4.22], + [-4.25, 0], + [0, -4.25] + ], + "o": [ + [0, 4.22], + [-4.25, 0], + [0, -4.25], + [4.22, 0], + [0, 0] + ], + "v": [ + [15.36, 7.69], + [7.69, 15.36], + [0, 7.69], + [7.69, 0], + [15.36, 7.69] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.22, 0], + [0, 4.22], + [-4.25, 0], + [0, -4.25] + ], + "o": [ + [0, 4.22], + [-4.25, 0], + [0, -4.25], + [4.22, 0], + [0, 0] + ], + "v": [ + [15.36, 7.69], + [7.69, 15.36], + [0, 7.69], + [7.69, 0], + [15.36, 7.69] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [4.22, 0], + [0, 4.22], + [-4.25, 0], + [0, -4.25] + ], + "o": [ + [0, 4.22], + [-4.25, 0], + [0, -4.25], + [4.22, 0], + [0, 0] + ], + "v": [ + [15.36, 7.69], + [7.69, 15.36], + [0, 7.69], + [7.69, 0], + [15.36, 7.69] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "fl", + "bm": 0, + "hd": false, + "nm": "", + "c": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0.9334, 0.9922, 1], + "t": 117 + }, + { "s": [0.9334, 0.9922, 1], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 26 + }, + { + "ty": 4, + "nm": " / / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 2, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.69, 10.69], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.5, 0.5], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.69, 10.69], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.69, 10.69], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.69, 10.69], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.69, 10.69], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.69, 10.69], + "t": 117 + }, + { "s": [10.69, 10.69], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [75.31, 101.01], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [75.5, 111.5], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [72.27, 101.01], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [65.69, 101.69], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [75.31, 101.01], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [72.27, 101.01], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [72.27, 101.01], + "t": 117 + }, + { "s": [75.31, 101.01], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.88, 0], + [0, 5.88], + [-5.91, 0], + [0, -5.91] + ], + "o": [ + [0, 5.88], + [-5.91, 0], + [0, -5.91], + [5.88, 0], + [0, 0] + ], + "v": [ + [21.39, 10.71], + [10.71, 21.39], + [0, 10.71], + [10.71, 0], + [21.39, 10.71] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.77, 0], + [0, 0.27], + [-5.8, 0], + [0, -0.28] + ], + "o": [ + [0, 0.27], + [-5.8, 0], + [0, -0.28], + [5.77, 0], + [0, 0] + ], + "v": [ + [21, 0.5], + [10.52, 1], + [0, 0.5], + [10.52, 0], + [21, 0.5] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.88, 0], + [0, 5.88], + [-5.91, 0], + [0, -5.91] + ], + "o": [ + [0, 5.88], + [-5.91, 0], + [0, -5.91], + [5.88, 0], + [0, 0] + ], + "v": [ + [21.39, 10.71], + [10.71, 21.39], + [0, 10.71], + [10.71, 0], + [21.39, 10.71] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.88, 0], + [0, 5.88], + [-5.91, 0], + [0, -5.91] + ], + "o": [ + [0, 5.88], + [-5.91, 0], + [0, -5.91], + [5.88, 0], + [0, 0] + ], + "v": [ + [21.39, 10.71], + [10.71, 21.39], + [0, 10.71], + [10.71, 0], + [21.39, 10.71] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.88, 0], + [0, 5.88], + [-5.91, 0], + [0, -5.91] + ], + "o": [ + [0, 5.88], + [-5.91, 0], + [0, -5.91], + [5.88, 0], + [0, 0] + ], + "v": [ + [21.39, 10.71], + [10.71, 21.39], + [0, 10.71], + [10.71, 0], + [21.39, 10.71] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.88, 0], + [0, 5.88], + [-5.91, 0], + [0, -5.91] + ], + "o": [ + [0, 5.88], + [-5.91, 0], + [0, -5.91], + [5.88, 0], + [0, 0] + ], + "v": [ + [21.39, 10.71], + [10.71, 21.39], + [0, 10.71], + [10.71, 0], + [21.39, 10.71] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.88, 0], + [0, 5.88], + [-5.91, 0], + [0, -5.91] + ], + "o": [ + [0, 5.88], + [-5.91, 0], + [0, -5.91], + [5.88, 0], + [0, 0] + ], + "v": [ + [21.39, 10.71], + [10.71, 21.39], + [0, 10.71], + [10.71, 0], + [21.39, 10.71] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [5.88, 0], + [0, 5.88], + [-5.91, 0], + [0, -5.91] + ], + "o": [ + [0, 5.88], + [-5.91, 0], + [0, -5.91], + [5.88, 0], + [0, 0] + ], + "v": [ + [21.39, 10.71], + [10.71, 21.39], + [0, 10.71], + [10.71, 0], + [21.39, 10.71] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [21.270999908447266, 10.696399688720703], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [20.885199546813965, 0.5001150369644165], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [21.270999908447266, 10.696399688720703], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [21.270999908447266, 10.696399688720703], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [21.270999908447266, 10.696399688720703], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [21.270999908447266, 10.696399688720703], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [21.270999908447266, 10.696399688720703], + "t": 117 + }, + { "s": [21.270999908447266, 10.696399688720703], "t": 137 } + ] + }, + "g": { + "p": 2, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 117 + }, + { + "s": [ + 0.12999999523162842, 0.19611765027279945, + 0.5020000296854505, 0.9882745105051527, 1, + 0.000039215686274509805, 0.000039215686274509805, + 0.000039215686274509805 + ], + "t": 137 + } + ] + } + }, + "t": 2, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.697999954223633, 10.696399688720703], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.503899574279785, 0.5001150369644165], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.697999954223633, 10.696399688720703], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.697999954223633, 10.696399688720703], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.697999954223633, 10.696399688720703], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.697999954223633, 10.696399688720703], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [10.697999954223633, 10.696399688720703], + "t": 117 + }, + { "s": [10.697999954223633, 10.696399688720703], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 27 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [36.74, 14.19], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [36.74, 14.19], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [36.74, 14.19], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [30.53, 14], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [36.74, 14.19], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [36.74, 14.19], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [36.74, 14.19], + "t": 117 + }, + { "s": [36.74, 14.19], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.24, 99.82], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.24, 99.82], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [87.2, 99.82], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [80.47, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.24, 99.82], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [87.2, 99.82], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [87.2, 99.82], + "t": 117 + }, + { "s": [90.24, 99.82], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.42, 0], + [0, 0], + [1.26, 0.62], + [-0.43, 3.11], + [0, 0], + [-11.69, 0.58], + [-5.42, -0.03], + [-3.94, -0.22], + [-1.48, -10.56], + [-0.02, -0.08], + [3.05, -1.51] + ], + "o": [ + [-1.23, 0.62], + [0, 0], + [-1.38, 0], + [-3.02, -1.51], + [0, 0], + [1.45, -10.52], + [4.92, -0.28], + [4.25, 0.03], + [11.72, 0.58], + [0, 0.08], + [0.4, 3.11], + [0, 0] + ], + "v": [ + [69.09, 27.45], + [65.06, 28.38], + [8.41, 28.38], + [4.37, 27.45], + [0.07, 19.82], + [0.1, 19.58], + [22.78, 0.37], + [38.32, 0], + [50.6, 0.37], + [73.4, 19.58], + [73.43, 19.82], + [69.09, 27.45] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.42, 0], + [0, 0], + [1.26, 0.62], + [-0.43, 3.11], + [0, 0], + [-11.69, 0.58], + [-5.42, -0.03], + [-3.94, -0.22], + [-1.48, -10.56], + [-0.02, -0.08], + [3.05, -1.51] + ], + "o": [ + [-1.23, 0.62], + [0, 0], + [-1.38, 0], + [-3.02, -1.51], + [0, 0], + [1.45, -10.52], + [4.92, -0.28], + [4.25, 0.03], + [11.72, 0.58], + [0, 0.08], + [0.4, 3.11], + [0, 0] + ], + "v": [ + [69.09, 27.45], + [65.06, 28.38], + [8.41, 28.38], + [4.37, 27.45], + [0.07, 19.82], + [0.1, 19.58], + [22.78, 0.37], + [38.32, 0], + [50.6, 0.37], + [73.4, 19.58], + [73.43, 19.82], + [69.09, 27.45] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.42, 0], + [0, 0], + [1.26, 0.62], + [-0.43, 3.11], + [0, 0], + [-11.69, 0.58], + [-5.42, -0.03], + [-3.94, -0.22], + [-1.48, -10.56], + [-0.02, -0.08], + [3.05, -1.51] + ], + "o": [ + [-1.23, 0.62], + [0, 0], + [-1.38, 0], + [-3.02, -1.51], + [0, 0], + [1.45, -10.52], + [4.92, -0.28], + [4.25, 0.03], + [11.72, 0.58], + [0, 0.08], + [0.4, 3.11], + [0, 0] + ], + "v": [ + [69.09, 27.45], + [65.06, 28.38], + [8.41, 28.38], + [4.37, 27.45], + [0.07, 19.82], + [0.1, 19.58], + [22.78, 0.37], + [38.32, 0], + [50.6, 0.37], + [73.4, 19.58], + [73.43, 19.82], + [69.09, 27.45] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.19, 0], + [0, 0], + [1.06, 0.61], + [-0.36, 3.07], + [0, 0], + [-9.87, 0.58], + [-4.57, -0.03], + [-3.32, -0.21], + [-0.93, -10.32], + [-0.02, -0.08], + [2.57, -1.49] + ], + "o": [ + [-1.04, 0.61], + [0, 0], + [-1.17, 0], + [-2.54, -1.49], + [0, 0], + [1.22, -10.38], + [4.15, -0.27], + [3.58, 0.03], + [13.81, 0.88], + [0, 0.08], + [0.34, 3.07], + [0, 0] + ], + "v": [ + [57.34, 27.09], + [53.94, 28], + [6.15, 28], + [2.74, 27.09], + [0.11, 19.56], + [0.14, 19.32], + [18.27, 0.37], + [31.38, 0], + [41.74, 0.37], + [60.98, 19.32], + [61.01, 19.56], + [57.34, 27.09] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.42, 0], + [0, 0], + [1.26, 0.62], + [-0.43, 3.11], + [0, 0], + [-11.69, 0.58], + [-5.42, -0.03], + [-3.94, -0.22], + [-1.48, -10.56], + [-0.02, -0.08], + [3.05, -1.51] + ], + "o": [ + [-1.23, 0.62], + [0, 0], + [-1.38, 0], + [-3.02, -1.51], + [0, 0], + [1.45, -10.52], + [4.92, -0.28], + [4.25, 0.03], + [11.72, 0.58], + [0, 0.08], + [0.4, 3.11], + [0, 0] + ], + "v": [ + [69.09, 27.45], + [65.06, 28.38], + [8.41, 28.38], + [4.37, 27.45], + [0.07, 19.82], + [0.1, 19.58], + [22.78, 0.37], + [38.32, 0], + [50.6, 0.37], + [73.4, 19.58], + [73.43, 19.82], + [69.09, 27.45] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.42, 0], + [0, 0], + [1.26, 0.62], + [-0.43, 3.11], + [0, 0], + [-11.69, 0.58], + [-5.42, -0.03], + [-3.94, -0.22], + [-1.48, -10.56], + [-0.02, -0.08], + [3.05, -1.51] + ], + "o": [ + [-1.23, 0.62], + [0, 0], + [-1.38, 0], + [-3.02, -1.51], + [0, 0], + [1.45, -10.52], + [4.92, -0.28], + [4.25, 0.03], + [11.72, 0.58], + [0, 0.08], + [0.4, 3.11], + [0, 0] + ], + "v": [ + [69.09, 27.45], + [65.06, 28.38], + [8.41, 28.38], + [4.37, 27.45], + [0.07, 19.82], + [0.1, 19.58], + [22.78, 0.37], + [38.32, 0], + [50.6, 0.37], + [73.4, 19.58], + [73.43, 19.82], + [69.09, 27.45] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.42, 0], + [0, 0], + [1.26, 0.62], + [-0.43, 3.11], + [0, 0], + [-11.69, 0.58], + [-5.42, -0.03], + [-3.94, -0.22], + [-1.48, -10.56], + [-0.02, -0.08], + [3.05, -1.51] + ], + "o": [ + [-1.23, 0.62], + [0, 0], + [-1.38, 0], + [-3.02, -1.51], + [0, 0], + [1.45, -10.52], + [4.92, -0.28], + [4.25, 0.03], + [11.72, 0.58], + [0, 0.08], + [0.4, 3.11], + [0, 0] + ], + "v": [ + [69.09, 27.45], + [65.06, 28.38], + [8.41, 28.38], + [4.37, 27.45], + [0.07, 19.82], + [0.1, 19.58], + [22.78, 0.37], + [38.32, 0], + [50.6, 0.37], + [73.4, 19.58], + [73.43, 19.82], + [69.09, 27.45] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [1.42, 0], + [0, 0], + [1.26, 0.62], + [-0.43, 3.11], + [0, 0], + [-11.69, 0.58], + [-5.42, -0.03], + [-3.94, -0.22], + [-1.48, -10.56], + [-0.02, -0.08], + [3.05, -1.51] + ], + "o": [ + [-1.23, 0.62], + [0, 0], + [-1.38, 0], + [-3.02, -1.51], + [0, 0], + [1.45, -10.52], + [4.92, -0.28], + [4.25, 0.03], + [11.72, 0.58], + [0, 0.08], + [0.4, 3.11], + [0, 0] + ], + "v": [ + [69.09, 27.45], + [65.06, 28.38], + [8.41, 28.38], + [4.37, 27.45], + [0.07, 19.82], + [0.1, 19.58], + [22.78, 0.37], + [38.32, 0], + [50.6, 0.37], + [73.4, 19.58], + [73.43, 19.82], + [69.09, 27.45] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [31.217300415039062, 2.0615499019622803], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [31.217300415039062, 2.0615499019622803], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [31.217300415039062, 2.0615499019622803], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [25.572599411010742, 2.0387699604034424], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [31.217300415039062, 2.0615499019622803], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [31.217300415039062, 2.0615499019622803], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [31.217300415039062, 2.0615499019622803], + "t": 117 + }, + { "s": [31.217300415039062, 2.0615499019622803], "t": 137 } + ] + }, + "g": { + "p": 2, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 117 + }, + { + "s": [ + 0, 0.011803921798718909, 0.05101960852975939, + 0.07847059101100062, 1, 0.04317647174234484, + 0.18435294509167763, 0.2706274646543989 + ], + "t": 137 + } + ] + } + }, + "t": 1, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [30.633899688720703, 28.31909942626953], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [30.633899688720703, 28.31909942626953], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [30.633899688720703, 28.31909942626953], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [24.899499893188477, 27.941699981689453], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [30.633899688720703, 28.31909942626953], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [30.633899688720703, 28.31909942626953], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [30.633899688720703, 28.31909942626953], + "t": 117 + }, + { "s": [30.633899688720703, 28.31909942626953], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 28 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [47.21, 35.9], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [47.21, 35.9], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [47.21, 35.9], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [44.5, 36], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [47.21, 35.9], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [47.21, 35.9], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [47.21, 35.9], + "t": 117 + }, + { "s": [47.21, 35.9], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.25, 101.01], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.25, 101.01], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [87.21, 101.01], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [88.5, 101], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.25, 101.01], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [87.21, 101.01], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [87.21, 101.01], + "t": 117 + }, + { "s": [90.25, 101.01], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [12, 0], + [0, 0], + [0, 11.97], + [0, 0], + [-21.3, 0], + [0, 0], + [0, -21.3], + [0, 0] + ], + "o": [ + [0, 12], + [0, 0], + [-11.97, 0], + [0, 0], + [0, -21.3], + [0, 0], + [21.33, 0], + [0, 0], + [0, 0] + ], + "v": [ + [94.41, 50.04], + [72.66, 71.8], + [21.76, 71.8], + [0, 50.04], + [0, 38.71], + [38.71, 0], + [55.67, 0], + [94.41, 38.71], + [94.41, 50.04] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [12, 0], + [0, 0], + [0, 11.97], + [0, 0], + [-21.3, 0], + [0, 0], + [0, -21.3], + [0, 0] + ], + "o": [ + [0, 12], + [0, 0], + [-11.97, 0], + [0, 0], + [0, -21.3], + [0, 0], + [21.33, 0], + [0, 0], + [0, 0] + ], + "v": [ + [94.41, 50.04], + [72.66, 71.8], + [21.76, 71.8], + [0, 50.04], + [0, 38.71], + [38.71, 0], + [55.67, 0], + [94.41, 38.71], + [94.41, 50.04] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [12, 0], + [0, 0], + [0, 11.97], + [0, 0], + [-21.3, 0], + [0, 0], + [0, -21.3], + [0, 0] + ], + "o": [ + [0, 12], + [0, 0], + [-11.97, 0], + [0, 0], + [0, -21.3], + [0, 0], + [21.33, 0], + [0, 0], + [0, 0] + ], + "v": [ + [94.41, 50.04], + [72.66, 71.8], + [21.76, 71.8], + [0, 50.04], + [0, 38.71], + [38.71, 0], + [55.67, 0], + [94.41, 38.71], + [94.41, 50.04] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [10.93, 0], + [0, 0], + [0, 12.01], + [0, 0], + [-19.4, 0], + [0, 0], + [0, -21.36], + [0, 0] + ], + "o": [ + [0, 12.04], + [0, 0], + [-10.9, 0], + [0, 0], + [0, -21.36], + [0, 0], + [19.43, 0], + [0, 0], + [0, 0] + ], + "v": [ + [89, 50.18], + [66.18, 72], + [19.82, 72], + [0, 50.18], + [0, 38.82], + [35.26, 0], + [50.71, 0], + [89, 38.82], + [89, 50.18] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [12, 0], + [0, 0], + [0, 11.97], + [0, 0], + [-21.3, 0], + [0, 0], + [0, -21.3], + [0, 0] + ], + "o": [ + [0, 12], + [0, 0], + [-11.97, 0], + [0, 0], + [0, -21.3], + [0, 0], + [21.33, 0], + [0, 0], + [0, 0] + ], + "v": [ + [94.41, 50.04], + [72.66, 71.8], + [21.76, 71.8], + [0, 50.04], + [0, 38.71], + [38.71, 0], + [55.67, 0], + [94.41, 38.71], + [94.41, 50.04] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [12, 0], + [0, 0], + [0, 11.97], + [0, 0], + [-21.3, 0], + [0, 0], + [0, -21.3], + [0, 0] + ], + "o": [ + [0, 12], + [0, 0], + [-11.97, 0], + [0, 0], + [0, -21.3], + [0, 0], + [21.33, 0], + [0, 0], + [0, 0] + ], + "v": [ + [94.41, 50.04], + [72.66, 71.8], + [21.76, 71.8], + [0, 50.04], + [0, 38.71], + [38.71, 0], + [55.67, 0], + [94.41, 38.71], + [94.41, 50.04] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [12, 0], + [0, 0], + [0, 11.97], + [0, 0], + [-21.3, 0], + [0, 0], + [0, -21.3], + [0, 0] + ], + "o": [ + [0, 12], + [0, 0], + [-11.97, 0], + [0, 0], + [0, -21.3], + [0, 0], + [21.33, 0], + [0, 0], + [0, 0] + ], + "v": [ + [94.41, 50.04], + [72.66, 71.8], + [21.76, 71.8], + [0, 50.04], + [0, 38.71], + [38.71, 0], + [55.67, 0], + [94.41, 38.71], + [94.41, 50.04] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [12, 0], + [0, 0], + [0, 11.97], + [0, 0], + [-21.3, 0], + [0, 0], + [0, -21.3], + [0, 0] + ], + "o": [ + [0, 12], + [0, 0], + [-11.97, 0], + [0, 0], + [0, -21.3], + [0, 0], + [21.33, 0], + [0, 0], + [0, 0] + ], + "v": [ + [94.41, 50.04], + [72.66, 71.8], + [21.76, 71.8], + [0, 50.04], + [0, 38.71], + [38.71, 0], + [55.67, 0], + [94.41, 38.71], + [94.41, 50.04] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [56.17570114135742, -36.271400451660156], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [56.17570114135742, -36.271400451660156], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [56.17570114135742, -36.271400451660156], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [58.23630142211914, -28.593900680541992], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [56.17570114135742, -36.271400451660156], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [56.17570114135742, -36.271400451660156], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [56.17570114135742, -36.271400451660156], + "t": 117 + }, + { "s": [56.17570114135742, -36.271400451660156], "t": 137 } + ] + }, + "g": { + "p": 2, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 117 + }, + { + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 137 + } + ] + } + }, + "t": 1, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-24.73270034790039, 44.637001037597656], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-24.73270034790039, 44.637001037597656], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-24.73270034790039, 44.637001037597656], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-22.528499603271484, 44.76409912109375], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-24.73270034790039, 44.637001037597656], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-24.73270034790039, 44.637001037597656], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-24.73270034790039, 44.637001037597656], + "t": 117 + }, + { "s": [-24.73270034790039, 44.637001037597656], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 29 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [13.2, 6.51], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [13.2, 6.51], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [13.2, 6.51], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [13, 6.5], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [13.2, 6.51], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [13.2, 6.51], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [13.2, 6.51], + "t": 117 + }, + { "s": [13.2, 6.51], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.25, 65.4], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.25, 65.4], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [87.21, 65.4], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [89, 65.5], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.25, 65.4], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [87.21, 65.4], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [87.21, 65.4], + "t": 117 + }, + { "s": [90.25, 65.4], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 1.54], + [0, 0], + [-1.54, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.54, 0] + ], + "o": [ + [0, 0], + [-1.54, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.54, 0], + [0, 0], + [0, 1.54], + [0, 0] + ], + "v": [ + [23.6, 13.02], + [2.8, 13.02], + [0, 10.22], + [0, 2.77], + [2.8, 0], + [23.6, 0], + [26.4, 2.77], + [26.4, 10.22], + [23.6, 13.02] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 1.54], + [0, 0], + [-1.54, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.54, 0] + ], + "o": [ + [0, 0], + [-1.54, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.54, 0], + [0, 0], + [0, 1.54], + [0, 0] + ], + "v": [ + [23.6, 13.02], + [2.8, 13.02], + [0, 10.22], + [0, 2.77], + [2.8, 0], + [23.6, 0], + [26.4, 2.77], + [26.4, 10.22], + [23.6, 13.02] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 1.54], + [0, 0], + [-1.54, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.54, 0] + ], + "o": [ + [0, 0], + [-1.54, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.54, 0], + [0, 0], + [0, 1.54], + [0, 0] + ], + "v": [ + [23.6, 13.02], + [2.8, 13.02], + [0, 10.22], + [0, 2.77], + [2.8, 0], + [23.6, 0], + [26.4, 2.77], + [26.4, 10.22], + [23.6, 13.02] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 1.54], + [0, 0], + [-1.52, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.52, 0] + ], + "o": [ + [0, 0], + [-1.52, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.52, 0], + [0, 0], + [0, 1.54], + [0, 0] + ], + "v": [ + [23.24, 13], + [2.76, 13], + [0, 10.2], + [0, 2.77], + [2.76, 0], + [23.24, 0], + [26, 2.77], + [26, 10.2], + [23.24, 13] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 1.54], + [0, 0], + [-1.54, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.54, 0] + ], + "o": [ + [0, 0], + [-1.54, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.54, 0], + [0, 0], + [0, 1.54], + [0, 0] + ], + "v": [ + [23.6, 13.02], + [2.8, 13.02], + [0, 10.22], + [0, 2.77], + [2.8, 0], + [23.6, 0], + [26.4, 2.77], + [26.4, 10.22], + [23.6, 13.02] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 1.54], + [0, 0], + [-1.54, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.54, 0] + ], + "o": [ + [0, 0], + [-1.54, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.54, 0], + [0, 0], + [0, 1.54], + [0, 0] + ], + "v": [ + [23.6, 13.02], + [2.8, 13.02], + [0, 10.22], + [0, 2.77], + [2.8, 0], + [23.6, 0], + [26.4, 2.77], + [26.4, 10.22], + [23.6, 13.02] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 1.54], + [0, 0], + [-1.54, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.54, 0] + ], + "o": [ + [0, 0], + [-1.54, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.54, 0], + [0, 0], + [0, 1.54], + [0, 0] + ], + "v": [ + [23.6, 13.02], + [2.8, 13.02], + [0, 10.22], + [0, 2.77], + [2.8, 0], + [23.6, 0], + [26.4, 2.77], + [26.4, 10.22], + [23.6, 13.02] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 1.54], + [0, 0], + [-1.54, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.54, 0] + ], + "o": [ + [0, 0], + [-1.54, 0], + [0, 0], + [0, -1.54], + [0, 0], + [1.54, 0], + [0, 0], + [0, 1.54], + [0, 0] + ], + "v": [ + [23.6, 13.02], + [2.8, 13.02], + [0, 10.22], + [0, 2.77], + [2.8, 0], + [23.6, 0], + [26.4, 2.77], + [26.4, 10.22], + [23.6, 13.02] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [16.47279930114746, -7.3155198097229], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [16.47279930114746, -7.3155198097229], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [16.47279930114746, -7.3155198097229], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [16.493499755859375, -7.060659885406494], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [16.47279930114746, -7.3155198097229], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [16.47279930114746, -7.3155198097229], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [16.47279930114746, -7.3155198097229], + "t": 117 + }, + { "s": [16.47279930114746, -7.3155198097229], "t": 137 } + ] + }, + "g": { + "p": 2, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 117 + }, + { + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 137 + } + ] + } + }, + "t": 1, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-1.0524699687957764, 12.470800399780273], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-1.0524699687957764, 12.470800399780273], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-1.0524699687957764, 12.470800399780273], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-1.0363600254058838, 12.45419979095459], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-1.0524699687957764, 12.470800399780273], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-1.0524699687957764, 12.470800399780273], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-1.0524699687957764, 12.470800399780273], + "t": 117 + }, + { "s": [-1.0524699687957764, 12.470800399780273], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 30 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.51, 9.89], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.51, 9.89], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.51, 9.89], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1, 10], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.51, 9.89], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.51, 9.89], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.51, 9.89], + "t": 117 + }, + { "s": [1.51, 9.89], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.25, 51.06], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.25, 51.06], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [87.21, 51.06], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [89, 51], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [90.25, 51.06], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [87.21, 51.06], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [87.21, 51.06], + "t": 117 + }, + { "s": [90.25, 51.06], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "v": [ + [3.02, 19.79], + [0, 19.79], + [0, 0], + [3.02, 0], + [3.02, 19.79] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "v": [ + [3.02, 19.79], + [0, 19.79], + [0, 0], + [3.02, 0], + [3.02, 19.79] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "v": [ + [3.02, 19.79], + [0, 19.79], + [0, 0], + [3.02, 0], + [3.02, 19.79] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "v": [ + [2, 20], + [0, 20], + [0, 0], + [2, 0], + [2, 20] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "v": [ + [3.02, 19.79], + [0, 19.79], + [0, 0], + [3.02, 0], + [3.02, 19.79] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "v": [ + [3.02, 19.79], + [0, 19.79], + [0, 0], + [3.02, 0], + [3.02, 19.79] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "v": [ + [3.02, 19.79], + [0, 19.79], + [0, 0], + [3.02, 0], + [3.02, 19.79] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "o": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ], + "v": [ + [3.02, 19.79], + [0, 19.79], + [0, 0], + [3.02, 0], + [3.02, 19.79] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.6390000581741333, -9.476360321044922], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.6390000581741333, -9.476360321044922], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.6390000581741333, -9.476360321044922], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.1589200496673584, -8.825639724731445], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.6390000581741333, -9.476360321044922], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.6390000581741333, -9.476360321044922], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [1.6390000581741333, -9.476360321044922], + "t": 117 + }, + { "s": [1.6390000581741333, -9.476360321044922], "t": 137 } + ] + }, + "g": { + "p": 2, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 117 + }, + { + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.8118039327883253, 0.9451372581743727, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 137 + } + ] + } + }, + "t": 1, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-7.406360149383545, -8.157259941101074], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-7.406360149383545, -8.157259941101074], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-7.406360149383545, -8.157259941101074], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-4.911630153656006, -8.244790077209473], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-7.406360149383545, -8.157259941101074], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-7.406360149383545, -8.157259941101074], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [-7.406360149383545, -8.157259941101074], + "t": 117 + }, + { "s": [-7.406360149383545, -8.157259941101074], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 31 + }, + { + "ty": 4, + "nm": " / ", + "sr": 1, + "st": 0, + "op": 138, + "ip": 0, + "hd": false, + "ddd": 0, + "bm": 0, + "hasMask": false, + "ao": 0, + "ks": { + "a": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [16.79, 9.77], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [16.79, 9.77], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [8.08, 18.39], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [8.08, 18.39], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [16.79, 9.77], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [8.08, 18.39], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [8.08, 18.39], + "t": 117 + }, + { "s": [16.79, 9.77], "t": 137 } + ] + }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100, 100], + "t": 117 + }, + { "s": [100, 100], "t": 137 } + ] + }, + "sk": { "a": 0, "k": 0 }, + "p": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [52.79, 145.28], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [52.79, 145.28], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [58.5, 159.52], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [62.08, 159.61], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [52.79, 145.28], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [58.5, 159.52], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [58.5, 159.52], + "t": 117 + }, + { "s": [52.79, 145.28], "t": 137 } + ] + }, + "r": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [0], + "t": 117 + }, + { "s": [0], "t": 137 } + ] + }, + "sa": { "a": 0, "k": 0 }, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + }, + "shapes": [ + { + "ty": "sh", + "bm": 0, + "hd": false, + "nm": "", + "d": 1, + "ks": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-2.52, -3.82], + [0.28, -2.86], + [0.8, -0.8], + [7.63, 6.28], + [-0.89, 2.62], + [-0.8, 0.37], + [-2.15, -0.58] + ], + "o": [ + [14.16, 3.88], + [0.28, 0.43], + [-0.25, 2.28], + [-4.86, 4.68], + [-1.69, -1.35], + [0.37, -1.05], + [3.63, -1.63], + [0, 0] + ], + "v": [ + [12.03, 0.91], + [32.06, 7.5], + [33.54, 13.01], + [31.23, 17.84], + [5.38, 10.48], + [0.12, 2.82], + [2.46, 0.85], + [12.03, 0.91] + ] + } + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-2.52, -3.82], + [0.28, -2.86], + [0.8, -0.8], + [7.63, 6.28], + [-0.89, 2.62], + [-0.8, 0.37], + [-2.15, -0.58] + ], + "o": [ + [14.16, 3.88], + [0.28, 0.43], + [-0.25, 2.28], + [-4.86, 4.68], + [-1.69, -1.35], + [0.37, -1.05], + [3.63, -1.63], + [0, 0] + ], + "v": [ + [12.03, 0.91], + [32.06, 7.5], + [33.54, 13.01], + [31.23, 17.84], + [5.38, 10.48], + [0.12, 2.82], + [2.46, 0.85], + [12.03, 0.91] + ] + } + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-1.52, -1.87], + [0.28, -2.86], + [0, 0], + [6.15, 0], + [0, 0], + [0.01, 4.11], + [-5.5, 3] + ], + "o": [ + [2.63, -1.44], + [1.4, 1.73], + [-0.25, 2.28], + [0, 0], + [-4, 0], + [0, 0], + [-0.03, -9.44], + [0, 0] + ], + "v": [ + [7, 0.78], + [14.61, 1.87], + [16.08, 7.38], + [15, 12.78], + [5.5, 36.78], + [0.5, 29.78], + [0, 19.28], + [7, 0.78] + ] + } + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-1.52, -1.87], + [0.28, -2.86], + [0, 0], + [6.15, 0], + [0, 0], + [0.01, 4.11], + [-5.5, 3] + ], + "o": [ + [2.63, -1.44], + [1.4, 1.73], + [-0.25, 2.28], + [0, 0], + [-4, 0], + [0, 0], + [-0.03, -9.44], + [0, 0] + ], + "v": [ + [7, 0.78], + [14.61, 1.87], + [16.08, 7.38], + [15, 12.78], + [5.5, 36.78], + [0.5, 29.78], + [0, 19.28], + [7, 0.78] + ] + } + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-2.52, -3.82], + [0.28, -2.86], + [0.8, -0.8], + [7.63, 6.28], + [-0.89, 2.62], + [-0.8, 0.37], + [-2.15, -0.58] + ], + "o": [ + [14.16, 3.88], + [0.28, 0.43], + [-0.25, 2.28], + [-4.86, 4.68], + [-1.69, -1.35], + [0.37, -1.05], + [3.63, -1.63], + [0, 0] + ], + "v": [ + [12.03, 0.91], + [32.06, 7.5], + [33.54, 13.01], + [31.23, 17.84], + [5.38, 10.48], + [0.12, 2.82], + [2.46, 0.85], + [12.03, 0.91] + ] + } + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-1.52, -1.87], + [0.28, -2.86], + [0, 0], + [6.15, 0], + [0, 0], + [0.01, 4.11], + [-5.5, 3] + ], + "o": [ + [2.63, -1.44], + [1.4, 1.73], + [-0.25, 2.28], + [0, 0], + [-4, 0], + [0, 0], + [-0.03, -9.44], + [0, 0] + ], + "v": [ + [7, 0.78], + [14.61, 1.87], + [16.08, 7.38], + [15, 12.78], + [5.5, 36.78], + [0.5, 29.78], + [0, 19.28], + [7, 0.78] + ] + } + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-1.52, -1.87], + [0.28, -2.86], + [0, 0], + [6.15, 0], + [0, 0], + [0.01, 4.11], + [-5.5, 3] + ], + "o": [ + [2.63, -1.44], + [1.4, 1.73], + [-0.25, 2.28], + [0, 0], + [-4, 0], + [0, 0], + [-0.03, -9.44], + [0, 0] + ], + "v": [ + [7, 0.78], + [14.61, 1.87], + [16.08, 7.38], + [15, 12.78], + [5.5, 36.78], + [0.5, 29.78], + [0, 19.28], + [7, 0.78] + ] + } + ], + "t": 117 + }, + { + "s": [ + { + "c": true, + "i": [ + [0, 0], + [-2.52, -3.82], + [0.28, -2.86], + [0.8, -0.8], + [7.63, 6.28], + [-0.89, 2.62], + [-0.8, 0.37], + [-2.15, -0.58] + ], + "o": [ + [14.16, 3.88], + [0.28, 0.43], + [-0.25, 2.28], + [-4.86, 4.68], + [-1.69, -1.35], + [0.37, -1.05], + [3.63, -1.63], + [0, 0] + ], + "v": [ + [12.03, 0.91], + [32.06, 7.5], + [33.54, 13.01], + [31.23, 17.84], + [5.38, 10.48], + [0.12, 2.82], + [2.46, 0.85], + [12.03, 0.91] + ] + } + ], + "t": 137 + } + ] + } + }, + { + "ty": "gf", + "bm": 0, + "hd": false, + "nm": "", + "e": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [99.60659790039062, 37.614200592041016], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [99.60659790039062, 37.614200592041016], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [82.15280151367188, 31.987899780273438], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [82.15280151367188, 31.987899780273438], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [99.60659790039062, 37.614200592041016], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [82.15280151367188, 31.987899780273438], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [82.15280151367188, 31.987899780273438], + "t": 117 + }, + { "s": [99.60659790039062, 37.614200592041016], "t": 137 } + ] + }, + "g": { + "p": 2, + "k": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 117 + }, + { + "s": [ + 0.03999999910593033, 0.02356862791116331, + 0.7451372700953016, 0.8470980483316908, 1, + 0.8706274586939344, 0.9804313737177381, 0.5569019871973524 + ], + "t": 137 + } + ] + } + }, + "t": 1, + "a": { "a": 0, "k": 0 }, + "h": { "a": 0, "k": 0 }, + "s": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [37.44649887084961, -10.70110034942627], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [37.44649887084961, -10.70110034942627], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [19.992599487304688, -16.32740020751953], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [19.992599487304688, -16.32740020751953], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [37.44649887084961, -10.70110034942627], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [19.992599487304688, -16.32740020751953], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [19.992599487304688, -16.32740020751953], + "t": 117 + }, + { "s": [37.44649887084961, -10.70110034942627], "t": 137 } + ] + }, + "r": 1, + "o": { + "a": 1, + "k": [ + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 0 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 20 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 39 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 59 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 78 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 98 + }, + { + "o": { "x": 0, "y": 0 }, + "i": { "x": 0.58, "y": 1 }, + "s": [100], + "t": 117 + }, + { "s": [100], "t": 137 } + ] + } + } + ], + "ind": 32 + } + ], + "v": "5.7.0", + "fr": 30, + "op": 136.73999500460923, + "ip": 0, + "assets": [] +} diff --git a/frontend/web/public/pdf.worker.min.mjs b/frontend/web/public/pdf.worker.min.mjs index 924a202..e89188a 100644 --- a/frontend/web/public/pdf.worker.min.mjs +++ b/frontend/web/public/pdf.worker.min.mjs @@ -22,7 +22,59074 @@ /** * pdfjsVersion = 5.4.394 * pdfjsBuild = 2cc809ade - */const e=!("object"!=typeof process||process+""!="[object process]"||process.versions.nw||process.versions.electron&&process.type&&"browser"!==process.type),t=[.001,0,0,.001,0,0],a=1.35,r=.35,i=.25925925925925924,n=1,s=2,o=4,c=8,l=16,h=64,u=128,d=256,f="pdfjs_internal_editor_",g=3,p=9,m=13,b=15,y=101,w={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},x=1,S=2,k=3,C=0,v=4,F=1,T=2,O=3,M={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26},D="Group",R="R",N=1,E=2,L=4,_=16,U=32,j=128,X=512,q=1,H=2,W=4096,G=8192,z=32768,$=65536,V=131072,K=1048576,J=2097152,Y=8388608,Z=16777216,Q=1,ee=2,te=3,ae=4,re=5,ie={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"},ne={WC:"WillClose",WS:"WillSave",DS:"DidSave",WP:"WillPrint",DP:"DidPrint"},se={O:"PageOpen",C:"PageClose"},oe=1,ce=5,le=1,he=2,ue=3,de=4,fe=5,ge=6,pe=7,me=8,be=9,ye=10,we=11,xe=12,Se=13,Ae=14,ke=15,Ce=16,ve=17,Fe=18,Ie=19,Te=20,Oe=21,Me=22,De=23,Be=24,Re=25,Ne=26,Ee=27,Pe=28,Le=29,_e=30,Ue=31,je=32,Xe=33,qe=34,He=35,We=36,Ge=37,ze=38,$e=39,Ve=40,Ke=41,Je=42,Ye=43,Ze=44,Qe=45,et=46,tt=47,at=48,rt=49,it=50,nt=51,st=52,ot=53,ct=54,lt=55,ht=56,ut=57,dt=58,ft=59,gt=60,pt=61,mt=62,bt=63,yt=64,wt=65,xt=66,St=67,At=68,kt=69,Ct=70,vt=71,Ft=72,It=73,Tt=74,Ot=75,Mt=76,Dt=77,Bt=80,Rt=81,Nt=83,Et=84,Pt=85,Lt=86,_t=87,Ut=88,jt=89,Xt=90,qt=91,Ht=92,Wt=93,Gt=94,zt=0,$t=1,Vt=2,Kt=3,Jt=4,Yt=1,Zt=2;let Qt=oe;function getVerbosityLevel(){return Qt}function info(e){Qt>=ce&&console.info(`Info: ${e}`)}function warn(e){Qt>=oe&&console.warn(`Warning: ${e}`)}function unreachable(e){throw new Error(e)}function assert(e,t){e||unreachable(t)}function createValidAbsoluteUrl(e,t=null,a=null){if(!e)return null;if(a&&"string"==typeof e){if(a.addDefaultProtocol&&e.startsWith("www.")){const t=e.match(/\./g);t?.length>=2&&(e=`http://${e}`)}if(a.tryConvertEncoding)try{e=stringToUTF8String(e)}catch{}}const r=t?URL.parse(e,t):URL.parse(e);return function _isValidProtocol(e){switch(e?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(r)?r:null}function shadow(e,t,a,r=!1){Object.defineProperty(e,t,{value:a,enumerable:!r,configurable:!0,writable:!1});return a}const ea=function BaseExceptionClosure(){function BaseException(e,t){this.message=e;this.name=t}BaseException.prototype=new Error;BaseException.constructor=BaseException;return BaseException}();class PasswordException extends ea{constructor(e,t){super(e,"PasswordException");this.code=t}}class UnknownErrorException extends ea{constructor(e,t){super(e,"UnknownErrorException");this.details=t}}class InvalidPDFException extends ea{constructor(e){super(e,"InvalidPDFException")}}class ResponseException extends ea{constructor(e,t,a){super(e,"ResponseException");this.status=t;this.missing=a}}class FormatError extends ea{constructor(e){super(e,"FormatError")}}class AbortException extends ea{constructor(e){super(e,"AbortException")}}function bytesToString(e){"object"==typeof e&&void 0!==e?.length||unreachable("Invalid argument for bytesToString");const t=e.length,a=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 isFloat16ArraySupported(){return shadow(this,"isFloat16ArraySupported","undefined"!=typeof Float16Array)}static get isSanitizerSupported(){return shadow(this,"isSanitizerSupported","undefined"!=typeof Sanitizer)}static get platform(){const{platform:e,userAgent:t}=navigator;return shadow(this,"platform",{isAndroid:t.includes("Android"),isLinux:e.includes("Linux"),isMac:e.includes("Mac"),isWindows:e.includes("Win"),isFirefox:t.includes("Firefox")})}static get isCSSRoundSupported(){return shadow(this,"isCSSRoundSupported",globalThis.CSS?.supports?.("width: round(1.5px, 1px)"))}}const ta=Array.from(Array(256).keys(),e=>e.toString(16).padStart(2,"0"));class Util{static makeHexColor(e,t,a){return`#${ta[e]}${ta[t]}${ta[a]}`}static domMatrixToTransform(e){return[e.a,e.b,e.c,e.d,e.e,e.f]}static scaleMinMax(e,t){let a;if(e[0]){if(e[0]<0){a=t[0];t[0]=t[2];t[2]=a}t[0]*=e[0];t[2]*=e[0];if(e[3]<0){a=t[1];t[1]=t[3];t[3]=a}t[1]*=e[3];t[3]*=e[3]}else{a=t[0];t[0]=t[1];t[1]=a;a=t[2];t[2]=t[3];t[3]=a;if(e[1]<0){a=t[1];t[1]=t[3];t[3]=a}t[1]*=e[1];t[3]*=e[1];if(e[2]<0){a=t[0];t[0]=t[2];t[2]=a}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 multiplyByDOMMatrix(e,t){return[e[0]*t.a+e[2]*t.b,e[1]*t.a+e[3]*t.b,e[0]*t.c+e[2]*t.d,e[1]*t.c+e[3]*t.d,e[0]*t.e+e[2]*t.f+e[4],e[1]*t.e+e[3]*t.f+e[5]]}static applyTransform(e,t,a=0){const r=e[a],i=e[a+1];e[a]=r*t[0]+i*t[2]+t[4];e[a+1]=r*t[1]+i*t[3]+t[5]}static applyTransformToBezier(e,t,a=0){const r=t[0],i=t[1],n=t[2],s=t[3],o=t[4],c=t[5];for(let t=0;t<6;t+=2){const l=e[a+t],h=e[a+t+1];e[a+t]=l*r+h*n+o;e[a+t+1]=l*i+h*s+c}}static applyInverseTransform(e,t){const a=e[0],r=e[1],i=t[0]*t[3]-t[1]*t[2];e[0]=(a*t[3]-r*t[2]+t[2]*t[5]-t[4]*t[3])/i;e[1]=(-a*t[1]+r*t[0]+t[4]*t[1]-t[5]*t[0])/i}static axialAlignedBoundingBox(e,t,a){const r=t[0],i=t[1],n=t[2],s=t[3],o=t[4],c=t[5],l=e[0],h=e[1],u=e[2],d=e[3];let f=r*l+o,g=f,p=r*u+o,m=p,b=s*h+c,y=b,w=s*d+c,x=w;if(0!==i||0!==n){const e=i*l,t=i*u,a=n*h,r=n*d;f+=a;m+=a;p+=r;g+=r;b+=e;x+=e;w+=t;y+=t}a[0]=Math.min(a[0],f,p,g,m);a[1]=Math.min(a[1],b,w,y,x);a[2]=Math.max(a[2],f,p,g,m);a[3]=Math.max(a[3],b,w,y,x)}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,t){const a=e[0],r=e[1],i=e[2],n=e[3],s=a**2+r**2,o=a*i+r*n,c=i**2+n**2,l=(s+c)/2,h=Math.sqrt(l**2-(s*c-o**2));t[0]=Math.sqrt(l+h||1);t[1]=Math.sqrt(l-h||1)}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 a=Math.max(Math.min(e[0],e[2]),Math.min(t[0],t[2])),r=Math.min(Math.max(e[0],e[2]),Math.max(t[0],t[2]));if(a>r)return null;const i=Math.max(Math.min(e[1],e[3]),Math.min(t[1],t[3])),n=Math.min(Math.max(e[1],e[3]),Math.max(t[1],t[3]));return i>n?null:[a,i,r,n]}static pointBoundingBox(e,t,a){a[0]=Math.min(a[0],e);a[1]=Math.min(a[1],t);a[2]=Math.max(a[2],e);a[3]=Math.max(a[3],t)}static rectBoundingBox(e,t,a,r,i){i[0]=Math.min(i[0],e,a);i[1]=Math.min(i[1],t,r);i[2]=Math.max(i[2],e,a);i[3]=Math.max(i[3],t,r)}static#e(e,t,a,r,i,n,s,o,c,l){if(c<=0||c>=1)return;const h=1-c,u=c*c,d=u*c,f=h*(h*(h*e+3*c*t)+3*u*a)+d*r,g=h*(h*(h*i+3*c*n)+3*u*s)+d*o;l[0]=Math.min(l[0],f);l[1]=Math.min(l[1],g);l[2]=Math.max(l[2],f);l[3]=Math.max(l[3],g)}static#t(e,t,a,r,i,n,s,o,c,l,h,u){if(Math.abs(c)<1e-12){Math.abs(l)>=1e-12&&this.#e(e,t,a,r,i,n,s,o,-h/l,u);return}const d=l**2-4*h*c;if(d<0)return;const f=Math.sqrt(d),g=2*c;this.#e(e,t,a,r,i,n,s,o,(-l+f)/g,u);this.#e(e,t,a,r,i,n,s,o,(-l-f)/g,u)}static bezierBoundingBox(e,t,a,r,i,n,s,o,c){c[0]=Math.min(c[0],e,s);c[1]=Math.min(c[1],t,o);c[2]=Math.max(c[2],e,s);c[3]=Math.max(c[3],t,o);this.#t(e,a,i,s,t,r,n,o,3*(3*(a-i)-e+s),6*(e-2*a+i),3*(a-e),c);this.#t(e,a,i,s,t,r,n,o,3*(3*(r-n)-t+o),6*(t-2*r+n),3*(r-t),c)}}const aa=[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,t=!1){if(e[0]>="ï"){let a;if("þ"===e[0]&&"ÿ"===e[1]){a="utf-16be";e.length%2==1&&(e=e.slice(0,-1))}else if("ÿ"===e[0]&&"þ"===e[1]){a="utf-16le";e.length%2==1&&(e=e.slice(0,-1))}else"ï"===e[0]&&"»"===e[1]&&"¿"===e[2]&&(a="utf-8");if(a)try{const r=new TextDecoder(a,{fatal:!0}),i=stringToBytes(e),n=r.decode(i);return t||!n.includes("")?n:n.replaceAll(/\x1b[^\x1b]*(?:\x1b|$)/g,"")}catch(e){warn(`stringToPDFString: "${e}".`)}}const a=[];for(let r=0,i=e.length;rta[e]).join("")}"function"!=typeof Promise.try&&(Promise.try=function(e,...t){return new Promise(a=>{a(e(...t))})});"function"!=typeof Math.sumPrecise&&(Math.sumPrecise=function(e){return e.reduce((e,t)=>e+t,0)});const na=Symbol("CIRCULAR_REF"),sa=Symbol("EOF");let oa=Object.create(null),ca=Object.create(null),la=Object.create(null);class Name{constructor(e){this.name=e}static get(e){return ca[e]||=new Name(e)}}class Cmd{constructor(e){this.cmd=e}static get(e){return oa[e]||=new Cmd(e)}}const ha=function nonSerializableClosure(){return ha};class Dict{constructor(e=null){this._map=new Map;this.xref=e;this.objId=null;this.suppressEncryption=!1;this.__nonSerializable__=ha}assignXref(e){this.xref=e}get size(){return this._map.size}get(e,t,a){let r=this._map.get(e);if(void 0===r&&void 0!==t){r=this._map.get(t);void 0===r&&void 0!==a&&(r=this._map.get(a))}return r instanceof Ref&&this.xref?this.xref.fetch(r,this.suppressEncryption):r}async getAsync(e,t,a){let r=this._map.get(e);if(void 0===r&&void 0!==t){r=this._map.get(t);void 0===r&&void 0!==a&&(r=this._map.get(a))}return r instanceof Ref&&this.xref?this.xref.fetchAsync(r,this.suppressEncryption):r}getArray(e,t,a){let r=this._map.get(e);if(void 0===r&&void 0!==t){r=this._map.get(t);void 0===r&&void 0!==a&&(r=this._map.get(a))}r instanceof Ref&&this.xref&&(r=this.xref.fetch(r,this.suppressEncryption));if(Array.isArray(r)){r=r.slice();for(let e=0,t=r.length;e{unreachable("Should not call `set` on the empty dictionary.")};return shadow(this,"empty",e)}static merge({xref:e,dictArray:t,mergeSubDicts:a=!1}){const r=new Dict(e),i=new Map;for(const e of t)if(e instanceof Dict)for(const[t,r]of e._map){let e=i.get(t);if(void 0===e){e=[];i.set(t,e)}else if(!(a&&r instanceof Dict))continue;e.push(r)}for(const[t,a]of i){if(1===a.length||!(a[0]instanceof Dict)){r._map.set(t,a[0]);continue}const i=new Dict(e);for(const e of a)for(const[t,a]of e._map)i._map.has(t)||i._map.set(t,a);i.size>0&&r._map.set(t,i)}i.clear();return r.size>0?r: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){this._map.delete(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=la[e];if(t)return t;const a=/^(\d+)R(\d*)$/.exec(e);return a&&"0"!==a[1]?la[e]=new Ref(parseInt(a[1]),a[2]?parseInt(a[2]):0):null}static get(e,t){const a=0===t?`${e}R`:`${e}R${t}`;return la[a]||=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 isAsyncDecoder(){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,a=null){unreachable("Abstract method `makeSubStream` called")}getBaseStreams(){return null}getOriginalStream(){return this.stream?.getOriginalStream()||this}}const ua=/^[1-9]\.\d$/,da=2**31-1,fa=[1,0,0,1,0,0],ga=["ColorSpace","ExtGState","Font","Pattern","Properties","Shading","XObject"],pa=["ExtGState","Font","Properties","XObject"];function getLookupTableFactory(e){let t;return function(){if(e){t=Object.create(null);e(t);e=null}return t}}class MissingDataException extends ea{constructor(e,t){super(`Missing data [${e}, ${t})`,"MissingDataException");this.begin=e;this.end=t}}class ParserEOFException extends ea{constructor(e){super(e,"ParserEOFException")}}class XRefEntryException extends ea{constructor(e){super(e,"XRefEntryException")}}class XRefParseException extends ea{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 a=0;for(let r=0;r0,"The number should be a positive integer.");const a="M".repeat(e/1e3|0)+ma[e%1e3/100|0]+ma[10+(e%100/10|0)]+ma[20+e%10];return t?a.toLowerCase():a}function log2(e){return e>0?Math.ceil(Math.log2(e)):0}function readInt8(e,t){return e[t]<<24>>24}function readInt16(e,t){return(e[t]<<24|e[t+1]<<16)>>16}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)&&!(e instanceof BigInt64Array||e instanceof BigUint64Array)&&(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 a=e.match(t);return a?{name:a[1],pos:parseInt(a[2],10)}:{name:e,pos:0}})}function escapePDFName(e){const t=[];let a=0;for(let r=0,i=e.length;r126||35===i||40===i||41===i||60===i||62===i||91===i||93===i||123===i||125===i||47===i||37===i){a"\n"===e?"\\n":"\r"===e?"\\r":`\\${e}`)}function _collectJS(e,t,a,r){if(!e)return;let i=null;if(e instanceof Ref){if(r.has(e))return;i=e;r.put(i);e=t.fetch(e)}if(Array.isArray(e))for(const i of e)_collectJS(i,t,a,r);else if(e instanceof Dict){if(isName(e.get("S"),"JavaScript")){const t=e.get("JS");let r;t instanceof BaseStream?r=t.getString():"string"==typeof t&&(r=t);r&&=stringToPDFString(r,!0).replaceAll("\0","");r&&a.push(r.trim())}_collectJS(e.getRaw("Next"),t,a,r)}i&&r.remove(i)}function collectActions(e,t,a){const r=Object.create(null),i=getInheritableProperty({dict:t,key:"AA",stopWhenFound:!1});if(i)for(let t=i.length-1;t>=0;t--){const n=i[t];if(n instanceof Dict)for(const t of n.getKeys()){const i=a[t];if(!i)continue;const s=[];_collectJS(n.getRaw(t),e,s,new RefSet);s.length>0&&(r[i]=s)}}if(t.has("A")){const a=[];_collectJS(t.get("A"),e,a,new RefSet);a.length>0&&(r.Action=a)}return objectSize(r)>0?r:null}const ba={60:"<",62:">",38:"&",34:""",39:"'"};function*codePointIter(e){for(let t=0,a=e.length;t55295&&(a<57344||a>65533)&&t++;yield a}}function encodeToXmlString(e){const t=[];let a=0;for(let r=0,i=e.length;r55295&&(i<57344||i>65533)&&r++;a=r+1}}if(0===t.length)return e;a: ${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:a,fontWeight:r,italicAngle:i}=e;if(!validateFontName(a,!0))return!1;const n=r?r.toString():"";e.fontWeight=t.has(n)?n:"400";const s=parseFloat(i);e.italicAngle=isNaN(s)||s<-90||s>90?"14":i.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[a,r]of e){if(!a.startsWith(f))continue;let e=t.get(r.pageIndex);if(!e){e=[];t.set(r.pageIndex,e)}e.push(r)}return t.size>0?t:null}function stringToAsciiOrUTF16BE(e){return null==e||function isAscii(e){if("string"!=typeof e)return!1;return!e||/^[\x00-\x7F]*$/.test(e)}(e)?e:stringToUTF16String(e,!0)}function stringToUTF16HexString(e){const t=[];for(let a=0,r=e.length;a>8&255],ta[255&r])}return t.join("")}function stringToUTF16String(e,t=!1){const a=[];t&&a.push("þÿ");for(let t=0,r=e.length;t>8&255),String.fromCharCode(255&r))}return a.join("")}function getRotationMatrix(e,t,a){switch(e){case 90:return[0,1,-1,0,t,0];case 180:return[-1,0,0,-1,t,a];case 270:return[0,-1,1,0,0,a];default:throw new Error("Invalid rotation")}}function getSizeInBytes(e){return Math.ceil(Math.ceil(Math.log2(1+e))/8)}class QCMS{static#a=null;static _memory=null;static _mustAddAlpha=!1;static _destBuffer=null;static _destOffset=0;static _destLength=0;static _cssColor="";static _makeHexColor=null;static get _memoryArray(){const e=this.#a;return e?.byteLength?e:this.#a=new Uint8Array(this._memory.buffer)}}let ya;const wa="undefined"!=typeof TextDecoder?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};"undefined"!=typeof TextDecoder&&wa.decode();let xa=null;function getUint8ArrayMemory0(){null!==xa&&0!==xa.byteLength||(xa=new Uint8Array(ya.memory.buffer));return xa}let Sa=0;function passArray8ToWasm0(e,t){const a=t(1*e.length,1)>>>0;getUint8ArrayMemory0().set(e,a/1);Sa=e.length;return a}const Aa=Object.freeze({RGB8:0,0:"RGB8",RGBA8:1,1:"RGBA8",BGRA8:2,2:"BGRA8",Gray8:3,3:"Gray8",GrayA8:4,4:"GrayA8",CMYK:5,5:"CMYK"}),ka=Object.freeze({Perceptual:0,0:"Perceptual",RelativeColorimetric:1,1:"RelativeColorimetric",Saturation:2,2:"Saturation",AbsoluteColorimetric:3,3:"AbsoluteColorimetric"});function __wbg_get_imports(){const e={wbg:{}};e.wbg.__wbg_copyresult_b08ee7d273f295dd=function(e,t){!function copy_result(e,t){const{_mustAddAlpha:a,_destBuffer:r,_destOffset:i,_destLength:n,_memoryArray:s}=QCMS;if(t!==n)if(a)for(let a=e,n=e+t,o=i;a>>0,t>>>0)};e.wbg.__wbg_copyrgb_d60ce17bb05d9b67=function(e){!function copy_rgb(e){const{_destBuffer:t,_destOffset:a,_memoryArray:r}=QCMS;t[a]=r[e];t[a+1]=r[e+1];t[a+2]=r[e+2]}(e>>>0)};e.wbg.__wbg_makecssRGB_893bf0cd9fdb302d=function(e){!function make_cssRGB(e){const{_memoryArray:t}=QCMS;QCMS._cssColor=QCMS._makeHexColor(t[e],t[e+1],t[e+2])}(e>>>0)};e.wbg.__wbindgen_init_externref_table=function(){const e=ya.__wbindgen_export_0,t=e.grow(4);e.set(0,void 0);e.set(t+0,void 0);e.set(t+1,null);e.set(t+2,!0);e.set(t+3,!1)};e.wbg.__wbindgen_throw=function(e,t){throw new Error(function getStringFromWasm0(e,t){e>>>=0;return wa.decode(getUint8ArrayMemory0().subarray(e,e+t))}(e,t))};return e}function __wbg_finalize_init(e,t){ya=e.exports;__wbg_init.__wbindgen_wasm_module=t;xa=null;ya.__wbindgen_start();return ya}async function __wbg_init(e){if(void 0!==ya)return ya;void 0!==e&&(Object.getPrototypeOf(e)===Object.prototype?({module_or_path:e}=e):console.warn("using deprecated parameters for the initialization function; pass a single object instead"));const t=__wbg_get_imports();("string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL)&&(e=fetch(e));const{instance:a,module:r}=await async function __wbg_load(e,t){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if("application/wasm"==e.headers.get("Content-Type"))throw t;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",t)}const a=await e.arrayBuffer();return await WebAssembly.instantiate(a,t)}{const a=await WebAssembly.instantiate(e,t);return a instanceof WebAssembly.Instance?{instance:a,module:e}:a}}(await e,t);return __wbg_finalize_init(a,r)}class ColorSpace{static#r=new Uint8ClampedArray(3);constructor(e,t){this.name=e;this.numComps=t}getRgb(e,t,a=new Uint8ClampedArray(3)){this.getRgbItem(e,t,a,0);return a}getRgbHex(e,t){const a=this.getRgb(e,t,ColorSpace.#r);return Util.makeHexColor(a[0],a[1],a[2])}getRgbItem(e,t,a,r){unreachable("Should not call ColorSpace.getRgbItem")}getRgbBuffer(e,t,a,r,i,n,s){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,a,r,i,n,s,o,c){const l=t*a;let h=null;const u=1<u&&"DeviceGray"!==this.name&&"DeviceRGB"!==this.name){const t=s<=8?new Uint8Array(u):new Uint16Array(u);for(let e=0;e=.99554525?1:MathClamp(1.055*e**(1/2.4)-.055,0,1)}#b(e){return e<0?-this.#b(-e):e>8?((e+16)/116)**3:e*CalRGBCS.#d}#y(e,t,a){if(0===e[0]&&0===e[1]&&0===e[2]){a[0]=t[0];a[1]=t[1];a[2]=t[2];return}const r=this.#b(0),i=(1-r)/(1-this.#b(e[0])),n=1-i,s=(1-r)/(1-this.#b(e[1])),o=1-s,c=(1-r)/(1-this.#b(e[2])),l=1-c;a[0]=t[0]*i+n;a[1]=t[1]*s+o;a[2]=t[2]*c+l}#w(e,t,a){if(1===e[0]&&1===e[2]){a[0]=t[0];a[1]=t[1];a[2]=t[2];return}const r=a;this.#f(CalRGBCS.#n,t,r);const i=CalRGBCS.#l;this.#g(e,r,i);this.#f(CalRGBCS.#s,i,a)}#x(e,t,a){const r=a;this.#f(CalRGBCS.#n,t,r);const i=CalRGBCS.#l;this.#p(e,r,i);this.#f(CalRGBCS.#s,i,a)}#i(e,t,a,r,i){const n=MathClamp(e[t]*i,0,1),s=MathClamp(e[t+1]*i,0,1),o=MathClamp(e[t+2]*i,0,1),c=1===n?1:n**this.GR,l=1===s?1:s**this.GG,h=1===o?1:o**this.GB,u=this.MXA*c+this.MXB*l+this.MXC*h,d=this.MYA*c+this.MYB*l+this.MYC*h,f=this.MZA*c+this.MZB*l+this.MZC*h,g=CalRGBCS.#h;g[0]=u;g[1]=d;g[2]=f;const p=CalRGBCS.#u;this.#w(this.whitePoint,g,p);const m=CalRGBCS.#h;this.#y(this.blackPoint,p,m);const b=CalRGBCS.#u;this.#x(CalRGBCS.#c,m,b);const y=CalRGBCS.#h;this.#f(CalRGBCS.#o,b,y);a[r]=255*this.#m(y[0]);a[r+1]=255*this.#m(y[1]);a[r+2]=255*this.#m(y[2])}getRgbItem(e,t,a,r){this.#i(e,t,a,r,1)}getRgbBuffer(e,t,a,r,i,n,s){const o=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}}#S(e){return e>=6/29?e**3:108/841*(e-4/29)}#A(e,t,a,r){return a+e*(r-a)/t}#i(e,t,a,r,i){let n=e[t],s=e[t+1],o=e[t+2];if(!1!==a){n=this.#A(n,a,0,100);s=this.#A(s,a,this.amin,this.amax);o=this.#A(o,a,this.bmin,this.bmax)}s>this.amax?s=this.amax:sthis.bmax?o=this.bmax:ofunction qcms_convert_one(e,t,a){ya.qcms_convert_one(e,t,a)}(this.#k,255*e[t],a);break;case 3:r=Aa.RGB8;this.#C=(e,t,a)=>function qcms_convert_three(e,t,a,r,i){ya.qcms_convert_three(e,t,a,r,i)}(this.#k,255*e[t],255*e[t+1],255*e[t+2],a);break;case 4:r=Aa.CMYK;this.#C=(e,t,a)=>function qcms_convert_four(e,t,a,r,i,n){ya.qcms_convert_four(e,t,a,r,i,n)}(this.#k,255*e[t],255*e[t+1],255*e[t+2],255*e[t+3],a);break;default:throw new Error(`Unsupported number of components: ${a}`)}this.#k=function qcms_transformer_from_memory(e,t,a){const r=passArray8ToWasm0(e,ya.__wbindgen_malloc),i=Sa;return ya.qcms_transformer_from_memory(r,i,t,a)>>>0}(e,r,ka.Perceptual);if(!this.#k)throw new Error("Failed to create ICC color space");IccColorSpace.#I||=new FinalizationRegistry(e=>{!function qcms_drop_transformer(e){ya.qcms_drop_transformer(e)}(e)});IccColorSpace.#I.register(this,this.#k)}getRgbHex(e,t){this.#C(e,t,!0);return QCMS._cssColor}getRgbItem(e,t,a,r){QCMS._destBuffer=a;QCMS._destOffset=r;QCMS._destLength=3;this.#C(e,t,!1);QCMS._destBuffer=null}getRgbBuffer(e,t,a,r,i,n,s){e=e.subarray(t,t+a*this.numComps);if(8!==n){const t=255/((1<=this.end?-1:this.bytes[this.pos++]}getBytes(e){const t=this.bytes,a=this.pos,r=this.end;if(!e)return t.subarray(a,r);let i=a+e;i>r&&(i=r);this.pos=i;return t.subarray(a,i)}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,a=null){return new Stream(this.bytes.buffer,e,t,a)}}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,a){super(new Uint8Array(e),0,e,null);this.chunkSize=t;this._loadedChunks=new Set;this.numChunks=Math.ceil(e/t);this.manager=a;this.progressiveDataLength=0;this.lastSuccessfulEnsureByteChunk=-1}getMissingChunks(){const e=[];for(let t=0,a=this.numChunks;t=this.end?this.numChunks:Math.floor(t/this.chunkSize);for(let e=a;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 a=Math.floor(e/this.chunkSize);if(a>this.numChunks)return;const r=Math.min(Math.floor((t-1)/this.chunkSize)+1,this.numChunks);for(let i=a;i=this.end)return-1;e>=this.progressiveDataLength&&this.ensureByte(e);return this.bytes[this.pos++]}getBytes(e){const t=this.bytes,a=this.pos,r=this.end;if(!e){r>this.progressiveDataLength&&this.ensureRange(a,r);return t.subarray(a,r)}let i=a+e;i>r&&(i=r);i>this.progressiveDataLength&&this.ensureRange(a,i);this.pos=i;return t.subarray(a,i)}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,a=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),a=Math.floor((this.end-1)/e)+1,r=[];for(let e=t;e{const readChunk=({value:n,done:s})=>{try{if(s){const t=arrayBuffersToBytes(r);r=null;e(t);return}i+=n.byteLength;a.isStreamingSupported&&this.onProgress({loaded:i});r.push(n);a.read().then(readChunk,t)}catch(e){t(e)}};a.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++,a=new Set;this._chunksNeededByRequest.set(t,a);for(const t of e)this.stream.hasChunk(t)||a.add(t);if(0===a.size)return Promise.resolve();const r=Promise.withResolvers();this._promisesByRequest.set(t,r);const i=[];for(const e of a){let a=this._requestsByChunk.get(e);if(!a){a=[];this._requestsByChunk.set(e,a);i.push(e)}a.push(t)}if(i.length>0){const e=this.groupChunks(i);for(const t of e){const e=t.beginChunk*this.chunkSize,a=Math.min(t.endChunk*this.chunkSize,this.length);this.sendRequest(e,a).catch(r.reject)}}return r.promise.catch(e=>{if(!this.aborted)throw e})}getStream(){return this.stream}requestRange(e,t){t=Math.min(t,this.length);const a=this.getBeginChunk(e),r=this.getEndChunk(t),i=[];for(let e=a;ee-t);return this._requestChunks(t)}groupChunks(e){const t=[];let a=-1,r=-1;for(let i=0,n=e.length;i=0&&r+1!==n){t.push({beginChunk:a,endChunk:r+1});a=n}i+1===e.length&&t.push({beginChunk:a,endChunk:n+1});r=n}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,a=void 0===e.begin,r=a?this.progressiveDataLength:e.begin,i=r+t.byteLength,n=Math.floor(r/this.chunkSize),s=i0||o.push(a)}}}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(s);Number.isInteger(e)&&this._requestChunks([e])}for(const e of o){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)}}function convertToRGBA(e){switch(e.kind){case F:return convertBlackAndWhiteToRGBA(e);case T:return function convertRGBToRGBA({src:e,srcPos:t=0,dest:a,destPos:r=0,width:i,height:n}){let s=0;const o=i*n*3,c=o>>2,l=new Uint32Array(e.buffer,t,c);if(FeatureTest.isLittleEndian){for(;s>>24|t<<8|4278190080;a[r+2]=t>>>16|i<<16|4278190080;a[r+3]=i>>>8|4278190080}for(let i=4*s,n=t+o;i>>8|255;a[r+2]=t<<16|i>>>16|255;a[r+3]=i<<8|255}for(let i=4*s,n=t+o;i>3,u=7&r,d=e.length;a=new Uint32Array(a.buffer);let f=0;for(let r=0;ra||t>a)return!0;const r=e*t;if(this._hasMaxArea)return r>this.MAX_AREA;if(r(this.MAX_AREA=this.#O**2)}static getReducePowerForJPX(e,t,a){const r=e*t,i=2**30/(4*a);if(!this.needsToBeResized(e,t))return r>i?Math.ceil(Math.log2(r/i)):0;const{MAX_DIM:n,MAX_AREA:s}=this,o=Math.max(e/n,t/n,Math.sqrt(r/Math.min(i,s)));return Math.ceil(Math.log2(o))}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.#O,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.#M=t}static _areGoodDims(e,t){try{const a=new OffscreenCanvas(e,t),r=a.getContext("2d");r.fillRect(0,0,1,1);const i=r.getImageData(0,0,1,1).data[3];a.width=a.height=1;return 0!==i}catch{return!1}}static _guessMax(e,t,a,r){for(;e+a+1da){const e=this.#D();if(e)return e}const r=this._encodeBMP();let i,n;if(await ImageResizer.canUseImageDecoder){i=new ImageDecoder({data:r,type:"image/bmp",preferAnimation:!1,transfer:[r.buffer]});n=i.decode().catch(e=>{warn(`BMP image decoding failed: ${e}`);return createImageBitmap(new Blob([this._encodeBMP().buffer],{type:"image/bmp"}))}).finally(()=>{i.close()})}else n=createImageBitmap(new Blob([r.buffer],{type:"image/bmp"}));const{MAX_AREA:s,MAX_DIM:o}=ImageResizer,c=Math.max(t/o,a/o,Math.sqrt(t*a/s)),l=Math.max(c,2),h=Math.round(10*(c+1.25))/10/l,u=Math.floor(Math.log2(h)),d=new Array(u+2).fill(2);d[0]=l;d.splice(-1,1,h/(1<>s,c=r>>s;let l,h=r;try{l=new Uint8Array(n)}catch{let e=Math.floor(Math.log2(n+1));for(;;)try{l=new Uint8Array(2**e-1);break}catch{e-=1}h=Math.floor((2**e-1)/(4*a));const t=a*h*4;t>s;e>3,s=a+3&-4;if(a!==s){const e=new Uint8Array(s*t);let r=0;for(let n=0,o=t*a;ni&&(r=i)}else{for(;!this.eof;)this.readBlock(t);r=this.bufferLength}this.pos=r;return this.buffer.subarray(a,r)}async getImageData(e,t){if(!this.canAsyncDecodeImageFromBuffer)return this.isAsyncDecoder?this.decodeImage(null,t):this.getBytes(e,t);const a=await this.stream.asyncGetBytes();return this.decodeImage(a,t)}reset(){this.pos=0}makeSubStream(e,t,a=null){if(void 0===t)for(;!this.eof;)this.readBlock();else{const a=e+t;for(;this.bufferLength<=a&&!this.eof;)this.readBlock()}return new Stream(this.buffer,e,t,a)}getBaseStreams(){return this.stream?this.stream.getBaseStreams():null}}class StreamsSequenceStream extends DecodeStream{constructor(e,t=null){e=e.filter(e=>e instanceof BaseStream);let a=0;for(const t of e)a+=t instanceof DecodeStream?t._rawMinBufferLength:t.length;super(a);this.streams=e;this._onError=t}readBlock(){const e=this.streams;if(0===e.length){this.eof=!0;return}const t=e.shift();let a;try{a=t.getBytes()}catch(e){if(this._onError){this._onError(e,t.dict?.objId);return}throw e}const r=this.bufferLength,i=r+a.length;this.ensureBuffer(i).set(a,r);this.bufferLength=i}getBaseStreams(){const e=[];for(const t of this.streams){const a=t.getBaseStreams();a&&e.push(...a)}return e.length>0?e:null}}class ColorSpaceUtils{static parse({cs:e,xref:t,resources:a=null,pdfFunctionFactory:r,globalColorSpaceCache:i,localColorSpaceCache:n,asyncIfNotCached:s=!1}){const o={xref:t,resources:a,pdfFunctionFactory:r,globalColorSpaceCache:i,localColorSpaceCache:n};let c,l,h;if(e instanceof Ref){l=e;const a=i.getByRef(l)||n.getByRef(l);if(a)return a;e=t.fetch(e)}if(e instanceof Name){c=e.name;const t=n.getByName(c);if(t)return t}try{h=this.#B(e,o)}catch(e){if(s&&!(e instanceof MissingDataException))return Promise.reject(e);throw e}if(c||l){n.set(c,l,h);l&&i.set(null,l,h)}return s?Promise.resolve(h):h}static#R(e,t){const{globalColorSpaceCache:a}=t;let r;if(e instanceof Ref){r=e;const t=a.getByRef(r);if(t)return t}const i=this.#B(e,t);r&&a.set(null,r,i);return i}static#B(e,t){const{xref:a,resources:r,pdfFunctionFactory:i,globalColorSpaceCache:n}=t;if((e=a.fetchIfRef(e))instanceof Name)switch(e.name){case"G":case"DeviceGray":return this.gray;case"RGB":case"DeviceRGB":return this.rgb;case"DeviceRGBA":return this.rgba;case"CMYK":case"DeviceCMYK":return this.cmyk;case"Pattern":return new PatternCS(null);default:if(r instanceof Dict){const a=r.get("ColorSpace");if(a instanceof Dict){const r=a.get(e.name);if(r){if(r instanceof Name)return this.#B(r,t);e=r;break}}}warn(`Unrecognized ColorSpace: ${e.name}`);return this.gray}if(Array.isArray(e)){const r=a.fetchIfRef(e[0]).name;let s,o,c,l,h,u;switch(r){case"G":case"DeviceGray":return this.gray;case"RGB":case"DeviceRGB":return this.rgb;case"CMYK":case"DeviceCMYK":return this.cmyk;case"CalGray":s=a.fetchIfRef(e[1]);l=s.getArray("WhitePoint");h=s.getArray("BlackPoint");u=s.get("Gamma");return new CalGrayCS(l,h,u);case"CalRGB":s=a.fetchIfRef(e[1]);l=s.getArray("WhitePoint");h=s.getArray("BlackPoint");u=s.getArray("Gamma");const d=s.getArray("Matrix");return new CalRGBCS(l,h,u,d);case"ICCBased":const f=e[1]instanceof Ref;if(f){const t=n.getByRef(e[1]);if(t)return t}const g=a.fetchIfRef(e[1]),p=g.dict;o=p.get("N");if(IccColorSpace.isUsable)try{const t=new IccColorSpace(g.getBytes(),"ICCBased",o);f&&n.set(null,e[1],t);return t}catch(t){if(t instanceof MissingDataException)throw t;warn(`ICCBased color space (${e[1]}): "${t}".`)}const m=p.getRaw("Alternate");if(m){const e=this.#R(m,t);if(e.numComps===o)return e;warn("ICCBased color space: Ignoring incorrect /Alternate entry.")}if(1===o)return this.gray;if(3===o)return this.rgb;if(4===o)return this.cmyk;break;case"Pattern":c=e[1]||null;c&&(c=this.#R(c,t));return new PatternCS(c);case"I":case"Indexed":c=this.#R(e[1],t);const b=MathClamp(a.fetchIfRef(e[2]),0,255),y=a.fetchIfRef(e[3]);return new IndexedCS(c,b,y);case"Separation":case"DeviceN":const w=a.fetchIfRef(e[1]);o=Array.isArray(w)?w.length:1;c=this.#R(e[2],t);const x=i.create(e[3]);return new AlternateCS(o,c,x);case"Lab":s=a.fetchIfRef(e[1]);l=s.getArray("WhitePoint");h=s.getArray("BlackPoint");const S=s.getArray("Range");return new LabCS(l,h,S);default:warn(`Unimplemented ColorSpace object: ${r}`);return this.gray}}warn(`Unrecognized ColorSpace object: ${e}`);return this.gray}static get gray(){return shadow(this,"gray",new DeviceGrayCS)}static get rgb(){return shadow(this,"rgb",new DeviceRgbCS)}static get rgba(){return shadow(this,"rgba",new DeviceRgbaCS)}static get cmyk(){if(CmykICCBasedCS.isUsable)try{return shadow(this,"cmyk",new CmykICCBasedCS)}catch{warn("CMYK fallback: DeviceCMYK")}return shadow(this,"cmyk",new DeviceCmykCS)}}class JpegError extends ea{constructor(e){super(e,"JpegError")}}class DNLMarkerError extends ea{constructor(e,t){super(e,"DNLMarkerError");this.scanLines=t}}class EOIMarkerError extends ea{constructor(e){super(e,"EOIMarkerError")}}const va=new Uint8Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),Fa=4017,Ia=799,Ta=3406,Oa=2276,Ma=1567,Da=3784,Ba=5793,Ra=2896;function buildHuffmanTable(e,t){let a,r,i=0,n=16;for(;n>0&&!e[n-1];)n--;const s=[{children:[],index:0}];let o,c=s[0];for(a=0;a0;)c=s.pop();c.index++;s.push(c);for(;s.length<=a;){s.push(o={children:[],index:0});c.children[c.index]=o.children;c=o}i++}if(a+10){g--;return f>>g&1}f=e[t++];if(255===f){const r=e[t++];if(r){if(220===r&&l){const r=readUint16(e,t+=2);t+=2;if(r>0&&r!==a.scanLines)throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data",r)}else if(217===r){if(l){const e=y*(8===a.precision?8:0);if(e>0&&Math.round(a.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 ${(f<<8|r).toString(16)}`)}}g=7;return f>>>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){p--;return}let a=n;const r=s;for(;a<=r;){const r=decodeHuffman(e.huffmanTableAC),i=15&r,n=r>>4;if(0===i){if(n<15){p=receive(n)+(1<>4;if(0===i)if(l<15){p=receive(l)+(1<>4;if(0===r){if(n<15)break;i+=16;continue}i+=n;const s=va[i];e.blockData[t+s]=receiveAndExtend(r);i++}};let T,O=0;const M=1===w?r[0].blocksPerLine*r[0].blocksPerColumn:h*a.mcusPerColumn;let D,R;for(;O<=M;){const a=i?Math.min(M-O,i):M;if(a>0){for(S=0;S0?"unexpected":"excessive"} MCU data, current marker is: ${T.invalid}`);t=T.offset}if(!(T.marker>=65488&&T.marker<=65495))break;t+=2}return t-d}function quantizeAndInverse(e,t,a){const r=e.quantizationTable,i=e.blockData;let n,s,o,c,l,h,u,d,f,g,p,m,b,y,w,x,S;if(!r)throw new JpegError("missing required Quantization Table.");for(let e=0;e<64;e+=8){f=i[t+e];g=i[t+e+1];p=i[t+e+2];m=i[t+e+3];b=i[t+e+4];y=i[t+e+5];w=i[t+e+6];x=i[t+e+7];f*=r[e];if(0!==(g|p|m|b|y|w|x)){g*=r[e+1];p*=r[e+2];m*=r[e+3];b*=r[e+4];y*=r[e+5];w*=r[e+6];x*=r[e+7];n=Ba*f+128>>8;s=Ba*b+128>>8;o=p;c=w;l=Ra*(g-x)+128>>8;d=Ra*(g+x)+128>>8;h=m<<4;u=y<<4;n=n+s+1>>1;s=n-s;S=o*Da+c*Ma+128>>8;o=o*Ma-c*Da+128>>8;c=S;l=l+u+1>>1;u=l-u;d=d+h+1>>1;h=d-h;n=n+c+1>>1;c=n-c;s=s+o+1>>1;o=s-o;S=l*Oa+d*Ta+2048>>12;l=l*Ta-d*Oa+2048>>12;d=S;S=h*Ia+u*Fa+2048>>12;h=h*Fa-u*Ia+2048>>12;u=S;a[e]=n+d;a[e+7]=n-d;a[e+1]=s+u;a[e+6]=s-u;a[e+2]=o+h;a[e+5]=o-h;a[e+3]=c+l;a[e+4]=c-l}else{S=Ba*f+512>>10;a[e]=S;a[e+1]=S;a[e+2]=S;a[e+3]=S;a[e+4]=S;a[e+5]=S;a[e+6]=S;a[e+7]=S}}for(let e=0;e<8;++e){f=a[e];g=a[e+8];p=a[e+16];m=a[e+24];b=a[e+32];y=a[e+40];w=a[e+48];x=a[e+56];if(0!==(g|p|m|b|y|w|x)){n=Ba*f+2048>>12;s=Ba*b+2048>>12;o=p;c=w;l=Ra*(g-x)+2048>>12;d=Ra*(g+x)+2048>>12;h=m;u=y;n=4112+(n+s+1>>1);s=n-s;S=o*Da+c*Ma+2048>>12;o=o*Ma-c*Da+2048>>12;c=S;l=l+u+1>>1;u=l-u;d=d+h+1>>1;h=d-h;n=n+c+1>>1;c=n-c;s=s+o+1>>1;o=s-o;S=l*Oa+d*Ta+2048>>12;l=l*Ta-d*Oa+2048>>12;d=S;S=h*Ia+u*Fa+2048>>12;h=h*Fa-u*Ia+2048>>12;u=S;f=n+d;x=n-d;g=s+u;w=s-u;p=o+h;y=o-h;m=c+l;b=c-l;f<16?f=0:f>=4080?f=255:f>>=4;g<16?g=0:g>=4080?g=255:g>>=4;p<16?p=0:p>=4080?p=255:p>>=4;m<16?m=0:m>=4080?m=255:m>>=4;b<16?b=0:b>=4080?b=255:b>>=4;y<16?y=0:y>=4080?y=255:y>>=4;w<16?w=0:w>=4080?w=255:w>>=4;x<16?x=0:x>=4080?x=255:x>>=4;i[t+e]=f;i[t+e+8]=g;i[t+e+16]=p;i[t+e+24]=m;i[t+e+32]=b;i[t+e+40]=y;i[t+e+48]=w;i[t+e+56]=x}else{S=Ba*f+8192>>14;S=S<-2040?0:S>=2024?255:S+2056>>4;i[t+e]=S;i[t+e+8]=S;i[t+e+16]=S;i[t+e+24]=S;i[t+e+32]=S;i[t+e+40]=S;i[t+e+48]=S;i[t+e+56]=S}}}function buildComponentData(e,t){const a=t.blocksPerLine,r=t.blocksPerColumn,i=new Int16Array(64);for(let e=0;e=r)return null;const n=readUint16(e,t);if(n>=65472&&n<=65534)return{invalid:null,marker:n,offset:t};let s=readUint16(e,i);for(;!(s>=65472&&s<=65534);){if(++i>=r)return null;s=readUint16(e,i)}return{invalid:n.toString(16),marker:s,offset:i}}function prepareComponents(e){const t=Math.ceil(e.samplesPerLine/8/e.maxH),a=Math.ceil(e.scanLines/8/e.maxV);for(const r of e.components){const i=Math.ceil(Math.ceil(e.samplesPerLine/8)*r.h/e.maxH),n=Math.ceil(Math.ceil(e.scanLines/8)*r.v/e.maxV),s=t*r.h,o=64*(a*r.v)*(s+1);r.blockData=new Int16Array(o);r.blocksPerLine=i;r.blocksPerColumn=n}e.mcusPerLine=t;e.mcusPerColumn=a}function readDataBlock(e,t){const a=readUint16(e,t);let r=(t+=2)+a-2;const i=findNextFileMarker(e,r,t);if(i?.invalid){warn("readDataBlock - incorrect length, current marker is: "+i.invalid);r=i.offset}const n=e.subarray(t,r);return{appData:n,oldOffset:t,newOffset:t+n.length}}function skipData(e,t){const a=readUint16(e,t),r=(t+=2)+a-2,i=findNextFileMarker(e,r,t);return i?.invalid?i.offset:r}class JpegImage{constructor({decodeTransform:e=null,colorTransform:t=-1}={}){this._decodeTransform=e;this._colorTransform=t}static canUseImageDecoder(e,t=-1){let a=null,r=0,i=null,n=readUint16(e,r);r+=2;if(65496!==n)throw new JpegError("SOI not found");n=readUint16(e,r);r+=2;e:for(;65497!==n;){switch(n){case 65505:const{appData:t,oldOffset:s,newOffset:o}=readDataBlock(e,r);r=o;if(69===t[0]&&120===t[1]&&105===t[2]&&102===t[3]&&0===t[4]&&0===t[5]){if(a)throw new JpegError("Duplicate EXIF-blocks found.");a={exifStart:s+6,exifEnd:o}}n=readUint16(e,r);r+=2;continue;case 65472:case 65473:case 65474:i=e[r+7];break e;case 65535:255!==e[r]&&r--}r=skipData(e,r);n=readUint16(e,r);r+=2}return 4===i||3===i&&0===t?null:a||{}}parse(e,{dnlScanLines:t=null}={}){let a,r,i=0,n=null,s=null,o=0;const c=[],l=[],h=[];let u=readUint16(e,i);i+=2;if(65496!==u)throw new JpegError("SOI not found");u=readUint16(e,i);i+=2;e:for(;65497!==u;){let d,f,g;switch(u){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:p,newOffset:m}=readDataBlock(e,i);i=m;65504===u&&74===p[0]&&70===p[1]&&73===p[2]&&70===p[3]&&0===p[4]&&(n={version:{major:p[5],minor:p[6]},densityUnits:p[7],xDensity:p[8]<<8|p[9],yDensity:p[10]<<8|p[11],thumbWidth:p[12],thumbHeight:p[13],thumbData:p.subarray(14,14+3*p[12]*p[13])});65518===u&&65===p[0]&&100===p[1]&&111===p[2]&&98===p[3]&&101===p[4]&&(s={version:p[5]<<8|p[6],flags0:p[7]<<8|p[8],flags1:p[9]<<8|p[10],transformCode:p[11]});break;case 65499:const b=readUint16(e,i);i+=2;const y=b+i-2;let w;for(;i>4){if(t>>4!=1)throw new JpegError("DQT - invalid table spec");for(f=0;f<64;f++){w=va[f];a[w]=readUint16(e,i);i+=2}}else for(f=0;f<64;f++){w=va[f];a[w]=e[i++]}c[15&t]=a}break;case 65472:case 65473:case 65474:if(a)throw new JpegError("Only single frame JPEGs supported");i+=2;a={};a.extended=65473===u;a.progressive=65474===u;a.precision=e[i++];const x=readUint16(e,i);i+=2;a.scanLines=t||x;a.samplesPerLine=readUint16(e,i);i+=2;a.components=[];a.componentIds={};const S=e[i++];let k=0,C=0;for(d=0;d>4,n=15&e[i+1];k>4?l:h)[15&t]=buildHuffmanTable(a,n)}break;case 65501:i+=2;r=readUint16(e,i);i+=2;break;case 65498:const F=1===++o&&!t;i+=2;const T=e[i++],O=[];for(d=0;d>4];n.huffmanTableAC=l[15&s];O.push(n)}const M=e[i++],D=e[i++],R=e[i++];try{i+=decodeScan(e,i,a,O,r,M,D,R>>4,15&R,F)}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 e}throw t}break;case 65500:i+=4;break;case 65535:255!==e[i]&&i--;break;default:const N=findNextFileMarker(e,i-2,i-3);if(N?.invalid){warn("JpegImage.parse - unexpected data, current marker is: "+N.invalid);i=N.offset;break}if(!N||i>=e.length-1){warn("JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).");break e}throw new JpegError("JpegImage.parse - unknown marker: "+u.toString(16))}u=readUint16(e,i);i+=2}if(!a)throw new JpegError("JpegImage.parse - no frame data found.");this.width=a.samplesPerLine;this.height=a.scanLines;this.jfif=n;this.adobe=s;this.components=[];for(const e of a.components){const t=c[e.quantizationId];t&&(e.quantizationTable=t);this.components.push({index:e.index,output:buildComponentData(0,e),scaleX:e.h/a.maxH,scaleY:e.v/a.maxV,blocksPerLine:e.blocksPerLine,blocksPerColumn:e.blocksPerColumn})}this.numComponents=this.components.length}_getLinearizedBlockData(e,t,a=!1){const r=this.width/e,i=this.height/t;let n,s,o,c,l,h,u,d,f,g,p,m=0;const b=this.components.length,y=e*t*b,w=new Uint8ClampedArray(y),x=new Uint32Array(e),S=4294967288;let k;for(u=0;u>8)+C[f+1];return w}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,a,r;for(let i=0,n=e.length;i4)throw new JpegError("Unsupported color mode");const n=this._getLinearizedBlockData(e,t,i);if(1===this.numComponents&&(a||r)){const e=n.length*(a?4:3),t=new Uint8ClampedArray(e);let r=0;if(a)!function grayToRGBA(e,t){if(FeatureTest.isLittleEndian)for(let a=0,r=e.length;a0&&(e=e.subarray(t));break}return e}decodeImage(e){if(this.eof)return this.buffer;e=this.#N(e||this.bytes);const t=new JpegImage(this.jpegOptions);t.parse(e);const a=t.getData({width:this.drawWidth,height:this.drawHeight,forceRGBA:this.forceRGBA,forceRGB:this.forceRGB,isSourcePDF:!0});this.buffer=a;this.bufferLength=a.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 a=this.canAsyncDecodeImageFromBuffer&&await this.stream.asyncGetBytes()||this.bytes;if(!a)return null;let r=this.#N(a);const i=JpegImage.canUseImageDecoder(r,e.colorTransform);if(!i)return null;if(i.exifStart){r=r.slice();r.fill(0,i.exifStart,i.exifEnd)}t=new ImageDecoder({data:r,type:"image/jpeg",preferAnimation:!1});return(await t.decode()).image}catch(e){warn(`getTransferableImage - failed: "${e}".`);return null}finally{t?.close()}}}const Na=async function OpenJPEG(e={}){var t=e,a="./this.program",quit_=(e,t)=>{throw t},r=import.meta.url;try{new URL(".",r).href}catch{}0;var i,n,s,o,c,l,h,u,d=console.log.bind(console),f=console.error.bind(console),g=!1,p=!1;function updateMemoryViews(){var e=o.buffer;c=new Int8Array(e);new Int16Array(e);l=new Uint8Array(e);new Uint16Array(e);h=new Int32Array(e);u=new Uint32Array(e);new Float32Array(e);new Float64Array(e);new BigInt64Array(e);new BigUint64Array(e)}class ExitStatus{name="ExitStatus";constructor(e){this.message=`Program terminated with exit(${e})`;this.status=e}}var m,callRuntimeCallbacks=e=>{for(;e.length>0;)e.shift()(t)},b=[],addOnPostRun=e=>b.push(e),y=[],addOnPreRun=e=>y.push(e),w=!0,x=0,S={},handleException=e=>{if(e instanceof ExitStatus||"unwind"==e)return i;quit_(0,e)},keepRuntimeAlive=()=>w||x>0,_proc_exit=e=>{i=e;if(!keepRuntimeAlive()){t.onExit?.(e);g=!0}quit_(0,new ExitStatus(e))},_exit=(e,t)=>{i=e;_proc_exit(e)},callUserCallback=e=>{if(!g)try{e();(()=>{if(!keepRuntimeAlive())try{_exit(i)}catch(e){handleException(e)}})()}catch(e){handleException(e)}},alignMemory=(e,t)=>Math.ceil(e/t)*t,growMemory=e=>{var t=(e-o.buffer.byteLength+65535)/65536|0;try{o.grow(t);updateMemoryViews();return 1}catch(e){}},k={},getEnvStrings=()=>{if(!getEnvStrings.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.language||"C").replace("-","_")+".UTF-8",_:a||"./this.program"};for(var t in k)void 0===k[t]?delete e[t]:e[t]=k[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);getEnvStrings.strings=r}return getEnvStrings.strings},stringToUTF8=(e,t,a)=>((e,t,a,r)=>{if(!(r>0))return 0;for(var i=a,n=a+r-1,s=0;s=n)break;t[a++]=o}else if(o<=2047){if(a+1>=n)break;t[a++]=192|o>>6;t[a++]=128|63&o}else if(o<=65535){if(a+2>=n)break;t[a++]=224|o>>12;t[a++]=128|o>>6&63;t[a++]=128|63&o}else{if(a+3>=n)break;t[a++]=240|o>>18;t[a++]=128|o>>12&63;t[a++]=128|o>>6&63;t[a++]=128|63&o;s++}}t[a]=0;return a-i})(e,l,t,a),lengthBytesUTF8=e=>{for(var t=0,a=0;a=55296&&r<=57343){t+=4;++a}else t+=3}return t},C=[null,[],[]],v="undefined"!=typeof TextDecoder?new TextDecoder:void 0,UTF8ArrayToString=(e,t=0,a,r)=>{var i=((e,t,a,r)=>{var i=t+a;if(r)return i;for(;e[t]&&!(t>=i);)++t;return t})(e,t,a,r);if(i-t>16&&e.buffer&&v)return v.decode(e.subarray(t,i));for(var n="";t>10,56320|1023&l)}}else n+=String.fromCharCode((31&s)<<6|o)}else n+=String.fromCharCode(s)}return n},printChar=(e,t)=>{var a=C[e];if(0===t||10===t){(1===e?d:f)(UTF8ArrayToString(a));a.length=0}else a.push(t)},UTF8ToString=(e,t,a)=>e?UTF8ArrayToString(l,e,t,a):"";t.noExitRuntime&&(w=t.noExitRuntime);t.print&&(d=t.print);t.printErr&&(f=t.printErr);t.wasmBinary&&t.wasmBinary;t.arguments&&t.arguments;t.thisProgram&&(a=t.thisProgram);if(t.preInit){"function"==typeof t.preInit&&(t.preInit=[t.preInit]);for(;t.preInit.length>0;)t.preInit.shift()()}t.writeArrayToMemory=(e,t)=>{c.set(e,t)};var F,T={k:()=>function abort(e){t.onAbort?.(e);f(e="Aborted("+e+")");g=!0;e+=". Build with -sASSERTIONS for more info.";var a=new WebAssembly.RuntimeError(e);s?.(a);throw a}(""),j:()=>{w=!1;x=0},l:(e,t)=>{if(S[e]){clearTimeout(S[e].id);delete S[e]}if(!t)return 0;var a=setTimeout(()=>{delete S[e];callUserCallback(()=>m(e,performance.now()))},t);S[e]={id:a,timeout_ms:t};return 0},f:function _copy_pixels_1(e,a){e>>=2;const r=t.imageData=new Uint8ClampedArray(a),i=h.subarray(e,e+a);r.set(i)},e:function _copy_pixels_3(e,a,r,i){e>>=2;a>>=2;r>>=2;const n=t.imageData=new Uint8ClampedArray(3*i),s=h.subarray(e,e+i),o=h.subarray(a,a+i),c=h.subarray(r,r+i);for(let e=0;e>=2;a>>=2;r>>=2;i>>=2;const s=t.imageData=new Uint8ClampedArray(4*n),o=h.subarray(e,e+n),c=h.subarray(a,a+n),l=h.subarray(r,r+n),u=h.subarray(i,i+n);for(let e=0;e{var t=l.length,a=2147483648;if((e>>>=0)>a)return!1;for(var r=1;r<=4;r*=2){var i=t*(1+.2/r);i=Math.min(i,e+100663296);var n=Math.min(a,alignMemory(Math.max(e,i),65536));if(growMemory(n))return!0}return!1},o:(e,t)=>{var a=0,r=0;for(var i of getEnvStrings()){var n=t+a;u[e+r>>2]=n;a+=stringToUTF8(i,n,1/0)+1;r+=4}return 0},p:(e,t)=>{var a=getEnvStrings();u[e>>2]=a.length;var r=0;for(var i of a)r+=lengthBytesUTF8(i)+1;u[t>>2]=r;return 0},n:function _fd_seek(e,t,a,r){t=(i=t)<-9007199254740992||i>9007199254740992?NaN:Number(i);var i;return 70},b:(e,t,a,r)=>{for(var i=0,n=0;n>2],o=u[t+4>>2];t+=8;for(var c=0;c>2]=i;return 0},q:function _gray_to_rgba(e,a){e>>=2;const r=t.imageData=new Uint8ClampedArray(4*a),i=h.subarray(e,e+a);for(let e=0;e>=2;a>>=2;const i=t.imageData=new Uint8ClampedArray(4*r),n=h.subarray(e,e+r),s=h.subarray(a,a+r);for(let e=0;e>=2;a>>=2;r>>=2;const n=t.imageData=new Uint8ClampedArray(4*i),s=h.subarray(e,e+i),o=h.subarray(a,a+i),c=h.subarray(r,r+i);for(let e=0;e{t.instantiateWasm(e,(e,t)=>{a(receiveInstance(e))})})}();!function run(){!function preRun(){if(t.preRun){"function"==typeof t.preRun&&(t.preRun=[t.preRun]);for(;t.preRun.length;)addOnPreRun(t.preRun.shift())}callRuntimeCallbacks(y)}();function doRun(){t.calledRun=!0;if(!g){!function initRuntime(){p=!0;F.s()}();n?.(t);t.onRuntimeInitialized?.();!function postRun(){if(t.postRun){"function"==typeof t.postRun&&(t.postRun=[t.postRun]);for(;t.postRun.length;)addOnPostRun(t.postRun.shift())}callRuntimeCallbacks(b)}()}}if(t.setStatus){t.setStatus("Running...");setTimeout(()=>{setTimeout(()=>t.setStatus(""),1);doRun()},1)}else doRun()}();return p?t:new Promise((e,t)=>{n=e;s=t})};class JpxError extends ea{constructor(e){super(e,"JpxError")}}class JpxImage{static#E=null;static#P=null;static#L=null;static#v=!0;static#_=!0;static#F=null;static setOptions({handler:e,useWasm:t,useWorkerFetch:a,wasmUrl:r}){this.#v=t;this.#_=a;this.#F=r;a||(this.#P=e)}static async#U(e){const t=`${this.#F}openjpeg_nowasm_fallback.js`;let a=null;try{a=(await import( -/*webpackIgnore: true*/ -/*@vite-ignore*/ -t)).default()}catch(e){warn(`JpxImage#getJsModule: ${e}`)}e(a)}static async#j(e,t,a){const r="openjpeg.wasm";try{this.#E||(this.#_?this.#E=await fetchBinaryData(`${this.#F}${r}`):this.#E=await this.#P.sendWithPromise("FetchBinaryData",{type:"wasmFactory",filename:r}));return a((await WebAssembly.instantiate(this.#E,t)).instance)}catch(t){warn(`JpxImage#instantiateWasm: ${t}`);this.#U(e);return null}finally{this.#P=null}}static async decode(e,{numComponents:t=4,isIndexedColormap:a=!1,smaskInData:r=!1,reducePower:i=0}={}){if(!this.#L){const{promise:e,resolve:t}=Promise.withResolvers(),a=[e];this.#v?a.push(Na({warn,instantiateWasm:this.#j.bind(this,t)})):this.#U(t);this.#L=Promise.race(a)}const n=await this.#L;if(!n)throw new JpxError("OpenJPEG failed to initialize");let s;try{const o=e.length;s=n._malloc(o);n.writeArrayToMemory(e,s);if(n._jp2_decode(s,o,t>0?t:0,!!a,!!r,i)){const{errorMessages:e}=n;if(e){delete n.errorMessages;throw new JpxError(e)}throw new JpxError("Unknown error")}const{imageData:c}=n;n.imageData=null;return c}finally{s&&n._free(s)}}static cleanup(){this.#L=null}static parseImageProperties(e){let t=e.getByte();for(;t>=0;){const a=t;t=e.getByte();if(65361===(a<<8|t)){e.skip(4);const t=e.getInt32()>>>0,a=e.getInt32()>>>0,r=e.getInt32()>>>0,i=e.getInt32()>>>0;e.skip(16);return{width:t-r,height:a-i,bitsPerComponent:8,componentsCount:e.getUint16()}}}throw new JpxError("No size marker found in JPX stream")}}function addState(e,t,a,r,i){let n=e;for(let e=0,a=t.length-1;e1e3){l=Math.max(l,d);f+=u+2;d=0;u=0}h.push({transform:t,x:d,y:f,w:a.width,h:a.height});d+=a.width+2;u=Math.max(u,a.height)}const g=Math.max(l,d)+1,p=f+u+1,m=new Uint8Array(g*p*4),b=g<<2;for(let e=0;e=0;){t[n-4]=t[n];t[n-3]=t[n+1];t[n-2]=t[n+2];t[n-1]=t[n+3];t[n+a]=t[n+a-4];t[n+a+1]=t[n+a-3];t[n+a+2]=t[n+a-2];t[n+a+3]=t[n+a-1];n-=b}}const y={width:g,height:p};if(e.isOffscreenCanvasSupported){const e=new OffscreenCanvas(g,p);e.getContext("2d").putImageData(new ImageData(new Uint8ClampedArray(m.buffer),g,p),0,0);y.bitmap=e.transferToImageBitmap();y.data=null}else{y.kind=O;y.data=m}a.splice(n,4*c,_t);r.splice(n,4*c,[y,h]);return n+1});addState(Ea,[ye,xe,Nt,we],null,function iterateImageMaskGroup(e,t){const a=e.fnArray,r=(t-(e.iCurr-3))%4;switch(r){case 0:return a[t]===ye;case 1:return a[t]===xe;case 2:return a[t]===Nt;case 3:return a[t]===we}throw new Error(`iterateImageMaskGroup - invalid pos: ${r}`)},function foundImageMaskGroup(e,t){const a=e.fnArray,r=e.argsArray,i=e.iCurr,n=i-3,s=i-2,o=i-1;let c=Math.floor((t-n)/4);if(c<10)return t-(t-n)%4;let l,h,u=!1;const d=r[o][0],f=r[s][0],g=r[s][1],p=r[s][2],m=r[s][3];if(g===p){u=!0;l=s+4;let e=o+4;for(let t=1;t=4&&a[n-4]===a[s]&&a[n-3]===a[o]&&a[n-2]===a[c]&&a[n-1]===a[l]&&r[n-4][0]===h&&r[n-4][1]===u){d++;f-=5}let g=f+4;for(let e=1;e{const t=e.argsArray,a=t[e.iCurr-1][0];if(a!==Te&&a!==Oe&&a!==Be&&a!==Re&&a!==Ne&&a!==Ee)return!0;const r=t[e.iCurr-2];return 1===r[0]&&0===r[1]&&0===r[2]&&1===r[3]},()=>!1,(e,t)=>{const{fnArray:a,argsArray:r}=e,i=e.iCurr,n=i-3,s=i-2,o=r[i-1],c=r[s],[,[l],h]=o;if(h){Util.scaleMinMax(c,h);for(let e=0,t=l.length;e=a)break}r=(r||Ea)[e[t]];if(r&&!Array.isArray(r)){n.iCurr=t;t++;if(!r.checkFn||(0,r.checkFn)(n)){i=r;r=null}else r=null}else t++}this.state=r;this.match=i;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;static isOffscreenCanvasSupported=!1;constructor(e=0,t){this._streamSink=t;this.fnArray=[];this.argsArray=[];this.optimizer=!t||e&d?new NullOptimizer(this):new QueueOptimizer(this);this.dependencies=new Set;this._totalLength=0;this.weight=0;this._resolved=t?null:Promise.resolve()}static setOptions({isOffscreenCanvasSupported:e}){this.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===we||e===je))&&this.flush()}addImageOps(e,t,a,r=!1){if(r){this.addOp(ye);this.addOp(be,[[["SMask",!1]]])}void 0!==a&&this.addOp(Ct,["OC",a]);this.addOp(e,t);void 0!==a&&this.addOp(vt,[]);r&&this.addOp(we)}addDependency(e){if(!this.dependencies.has(e)){this.dependencies.add(e);this.addOp(le,[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,a=e.length;t>>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,a){let r=0;for(let i=a;i>=0;i--){r+=e[i]+t[i];e[i]=255&r;r>>=8}}function incHex(e,t){let a=1;for(let r=t;r>=0&&a>0;r--){a+=e[r];e[r]=255&a;a>>=8}}const Pa=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 a=this.readByte();if(a<0)throw new FormatError("unexpected EOF in bcmap");e=!(128&a);t=t<<7|127&a}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 a;const r=this.tmpBuf;let i=0;do{const e=this.readByte();if(e<0)throw new FormatError("unexpected EOF in bcmap");a=!(128&e);r[i++]=127&e}while(!a);let n=t,s=0,o=0;for(;n>=0;){for(;o<8&&r.length>0;){s|=r[--i]<>=8;o-=8}}readHexSigned(e,t){this.readHexNumber(e,t);const a=1&e[t]?255:0;let r=0;for(let i=0;i<=t;i++){r=(1&r)<<8|e[i];e[i]=r>>1^a}}readString(){const e=this.readNumber(),t=new Array(e);for(let a=0;a=0;){const e=d>>5;if(7===e){switch(31&d){case 0:r.readString();break;case 1:n=r.readString()}continue}const a=!!(16&d),i=15&d;if(i+1>Pa)throw new Error("BinaryCMapReader.process: Invalid dataSize.");const f=1,g=r.readNumber();switch(e){case 0:r.readHex(s,i);r.readHexNumber(o,i);addHex(o,s,i);t.addCodespaceRange(i+1,hexToInt(s,i),hexToInt(o,i));for(let e=1;e=0;--i){r[a+i]=255&s;s>>=8}}}}class AsciiHexStream extends DecodeStream{constructor(e,t){t&&(t*=.5);super(t);this.stream=e;this.dict=e.dict;this.firstDigit=-1}readBlock(){const e=this.stream.getBytes(8e3);if(!e.length){this.eof=!0;return}const t=e.length+1>>1,a=this.ensureBuffer(this.bufferLength+t);let r=this.bufferLength,i=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(i<0)i=e;else{a[r++]=i<<4|e;i=-1}}if(i>=0&&this.eof){a[r++]=i<<4;i=-1}this.firstDigit=i;this.bufferLength=r}}const La=-1,_a=[[-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]],Ua=[[-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]],ja=[[-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]],Xa=[[-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]],qa=[[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]],Ha=[[-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 a;for(;0===(a=this._lookBits(12));)this._eatBits(1);1===a&&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,a=this.columns;let r,i,n,s,o;if(0===this.outputBits){this.rowsDone&&(this.eof=!0);if(this.eof)return-1;this.err=!1;let n,o,c;if(this.nextLine2D){for(s=0;t[s]=64);do{o+=c=this._getWhiteCode()}while(c>=64)}else{do{n+=c=this._getWhiteCode()}while(c>=64);do{o+=c=this._getBlackCode()}while(c>=64)}this._addPixels(t[this.codingPos]+n,i);t[this.codingPos]0?--r:++r;for(;e[r]<=t[this.codingPos]&&e[r]0?--r:++r;for(;e[r]<=t[this.codingPos]&&e[r]0?--r:++r;for(;e[r]<=t[this.codingPos]&&e[r]=64);else do{n+=c=this._getWhiteCode()}while(c>=64);this._addPixels(t[this.codingPos]+n,i);i^=1}}let l=!1;this.byteAlign&&(this.inputBits&=-8);if(this.eoblock||this.row!==this.rows-1){n=this._lookBits(12);if(this.eoline)for(;n!==La&&1!==n;){this._eatBits(1);n=this._lookBits(12)}else for(;0===n;){this._eatBits(1);n=this._lookBits(12)}if(1===n){this._eatBits(12);l=!0}else n===La&&(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&&l&&this.byteAlign){n=this._lookBits(12);if(1===n){this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}if(this.encoding>=0)for(s=0;s<4;++s){n=this._lookBits(12);1!==n&&info("bad rtc code: "+n);this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}}this.eof=!0}}else if(this.err&&this.eoline){for(;;){n=this._lookBits(13);if(n===La){this.eof=!0;return-1}if(n>>1==1)break;this._eatBits(1)}this._eatBits(12);if(this.encoding>0){this._eatBits(1);this.nextLine2D=!(1&n)}}this.outputBits=t[0]>0?t[this.codingPos=0]:t[this.codingPos=1];this.row++}if(this.outputBits>=8){o=1&this.codingPos?0:255;this.outputBits-=8;if(0===this.outputBits&&t[this.codingPos]n){o<<=n;1&this.codingPos||(o|=255>>8-n);this.outputBits-=n;n=0}else{o<<=this.outputBits;1&this.codingPos||(o|=255>>8-this.outputBits);n-=this.outputBits;this.outputBits=0;if(t[this.codingPos]0){o<<=n;n=0}}}while(n)}this.black&&(o^=255);return o}_addPixels(e,t){const a=this.codingLine;let r=this.codingPos;if(e>a[r]){if(e>this.columns){info("row is wrong length");this.err=!0;e=this.columns}1&r^t&&++r;a[r]=e}this.codingPos=r}_addPixelsNeg(e,t){const a=this.codingLine;let r=this.codingPos;if(e>a[r]){if(e>this.columns){info("row is wrong length");this.err=!0;e=this.columns}1&r^t&&++r;a[r]=e}else if(e0&&e=i){const t=a[e-i];if(t[0]===r){this._eatBits(r);return[!0,t[1],!0]}}}return[!1,0,!1]}_getTwoDimCode(){let e,t=0;if(this.eoblock){t=this._lookBits(7);e=_a[t];if(e?.[0]>0){this._eatBits(e[0]);return e[1]}}else{const e=this._findTableCode(1,7,_a);if(e[0]&&e[2])return e[1]}info("Bad two dim code");return La}_getWhiteCode(){let e,t=0;if(this.eoblock){t=this._lookBits(12);if(t===La)return 1;e=t>>5?ja[t>>3]:Ua[t];if(e[0]>0){this._eatBits(e[0]);return e[1]}}else{let e=this._findTableCode(1,9,ja);if(e[0])return e[1];e=this._findTableCode(11,12,Ua);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===La)return 1;t=e>>7?!(e>>9)&&e>>7?qa[(e>>1)-64]:Ha[e>>7]:Xa[e];if(t[0]>0){this._eatBits(t[0]);return t[1]}}else{let e=this._findTableCode(2,6,Ha);if(e[0])return e[1];e=this._findTableCode(7,12,qa,64);if(e[0])return e[1];e=this._findTableCode(10,13,Xa);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,a){super(t);this.stream=e;this.dict=e.dict;a instanceof Dict||(a=Dict.empty);const r={next:()=>e.getByte()};this.ccittFaxDecoder=new CCITTFaxDecoder(r,{K:a.get("K"),EndOfLine:a.get("EndOfLine"),EncodedByteAlign:a.get("EncodedByteAlign"),Columns:a.get("Columns"),Rows:a.get("Rows"),EndOfBlock:a.get("EndOfBlock"),BlackIs1:a.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 Wa=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ga=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]),za=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]),$a=[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],Va=[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.stream=e;this.dict=e.dict;const a=e.getByte(),r=e.getByte();if(-1===a||-1===r)throw new FormatError(`Invalid header in flate stream: ${a}, ${r}`);if(8!=(15&a))throw new FormatError(`Unknown compression method in flate stream: ${a}, ${r}`);if(((a<<8)+r)%31!=0)throw new FormatError(`Bad FCHECK in flate stream: ${a}, ${r}`);if(32&r)throw new FormatError(`FDICT bit set in flate stream: ${a}, ${r}`);this.codeSize=0;this.codeBuf=0}async getImageData(e,t){const a=await this.asyncGetBytes();return a?a.length<=e?a:a.subarray(0,e):this.getBytes(e)}async asyncGetBytes(){this.stream.reset();const e=this.stream.getBytes();try{const{readable:t,writable:a}=new DecompressionStream("deflate"),r=a.getWriter();await r.ready;r.write(e).then(async()=>{await r.ready;await r.close()}).catch(()=>{});const i=[];let n=0;for await(const e of t){i.push(e);n+=e.byteLength}const s=new Uint8Array(n);let o=0;for(const e of i){s.set(e,o);o+=e.byteLength}return s}catch{this.stream=new Stream(e,2,e.length,this.stream.dict);this.reset();return null}}get isAsync(){return!0}getBits(e){const t=this.stream;let a,r=this.codeSize,i=this.codeBuf;for(;r>e;this.codeSize=r-=e;return a}getCode(e){const t=this.stream,a=e[0],r=e[1];let i,n=this.codeSize,s=this.codeBuf;for(;n>16,l=65535&o;if(c<1||n>c;this.codeSize=n-c;return l}generateHuffmanTable(e){const t=e.length;let a,r=0;for(a=0;ar&&(r=e[a]);const i=1<>=1}for(a=e;a>=1;if(0===t){let t;if(-1===(t=r.getByte())){this.#X("Bad block header in flate stream");return}let a=t;if(-1===(t=r.getByte())){this.#X("Bad block header in flate stream");return}a|=t<<8;if(-1===(t=r.getByte())){this.#X("Bad block header in flate stream");return}let i=t;if(-1===(t=r.getByte())){this.#X("Bad block header in flate stream");return}i|=t<<8;if(i!==(65535&~a)&&(0!==a||0!==i))throw new FormatError("Bad uncompressed block length in flate stream");this.codeBuf=0;this.codeSize=0;const n=this.bufferLength,s=n+a;e=this.ensureBuffer(s);this.bufferLength=s;if(0===a)-1===r.peekByte()&&(this.eof=!0);else{const t=r.getBytes(a);e.set(t,n);t.length0;)h[o++]=f}i=this.generateHuffmanTable(h.subarray(0,e));n=this.generateHuffmanTable(h.subarray(e,l))}}e=this.buffer;let s=e?e.length:0,o=this.bufferLength;for(;;){let t=this.getCode(i);if(t<256){if(o+1>=s){e=this.ensureBuffer(o+1);s=e.length}e[o++]=t;continue}if(256===t){this.bufferLength=o;return}t-=257;t=Ga[t];let r=t>>16;r>0&&(r=this.getBits(r));a=(65535&t)+r;t=this.getCode(n);t=za[t];r=t>>16;r>0&&(r=this.getBits(r));const c=(65535&t)+r;if(o+a>=s){e=this.ensureBuffer(o+a);s=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 a=e[t]>>1,r=1&e[t];const i=Ka[a],n=i.qe;let s,o=this.a-n;if(this.chigh>15&1;this.clow=this.clow<<1&65535;this.ct--}while(!(32768&o));this.a=o;e[t]=a<<1|r;return s}}class Jbig2Error extends ea{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,a){this.data=e;this.start=t;this.end=a}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,a){const r=e.getContexts(t);let i=1;function readBits(e){let t=0;for(let n=0;n>>0}const n=readBits(1),s=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 o;0===n?o=s:s>0&&(o=-s);return o>=-2147483648&&o<=da?o:null}function decodeIAID(e,t,a){const r=e.getContexts("IAID");let i=1;for(let e=0;ee.y-t.y||e.x-t.x);const h=l.length,u=new Int8Array(h),d=new Int8Array(h),f=[];let g,p,m=0,b=0,y=0,w=0;for(p=0;p=v&&E=F){q=q<<1&m;for(p=0;p=0&&_=0){U=D[L][_];U&&(q|=U<=e?l<<=1:l=l<<1|S[o][c]}for(f=0;f=w||c<0||c>=y?l<<=1:l=l<<1|r[o][c]}const g=k.readBit(C,l);t[s]=g}}return S}function decodeTextRegion(e,t,a,r,i,n,s,o,c,l,h,u,d,f,g,p,m,b,y){if(e&&t)throw new Jbig2Error("refinement with Huffman is not supported");const w=[];let x,S;for(x=0;x1&&(i=e?y.readBits(b):decodeInteger(C,"IAIT",k));const n=s*v+i,F=e?f.symbolIDTable.decode(y):decodeIAID(C,k,c),T=t&&(e?y.readBit():decodeInteger(C,"IARI",k));let O=o[F],M=O[0].length,D=O.length;if(T){const e=decodeInteger(C,"IARDW",k),t=decodeInteger(C,"IARDH",k);M+=e;D+=t;O=decodeRefinement(M,D,g,O,(e>>1)+decodeInteger(C,"IARDX",k),(t>>1)+decodeInteger(C,"IARDY",k),!1,p,m)}let R=0;l?1&u?R=D-1:r+=D-1:u>1?r+=M-1:R=M-1;const N=n-(1&u?0:D-1),E=r-(2&u?M-1:0);let L,_,U;if(l)for(L=0;L>5&7;const c=[31&s];let l=t+6;if(7===s){o=536870911&readUint32(e,l-1);l+=3;let t=o+7>>3;c[0]=e[l++];for(;--t>0;)c.push(e[l++])}else if(5===s||6===s)throw new Jbig2Error("invalid referred-to flags");a.retainBits=c;let h=4;a.number<=256?h=1:a.number<=65536&&(h=2);const u=[];let d,f;for(d=0;d>>24&255;n[3]=t.height>>16&255;n[4]=t.height>>8&255;n[5]=255&t.height;for(d=l,f=e.length;d>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;l+=2;if(!e.huffman){c=0===e.template?4:1;s=[];for(o=0;o>2&3;h.stripSize=1<>4&3;h.transposed=!!(64&u);h.combinationOperator=u>>7&3;h.defaultPixelValue=u>>9&1;h.dsOffset=u<<17>>27;h.refinementTemplate=u>>15&1;if(h.huffman){const e=readUint16(r,l);l+=2;h.huffmanFS=3&e;h.huffmanDS=e>>2&3;h.huffmanDT=e>>4&3;h.huffmanRefinementDW=e>>6&3;h.huffmanRefinementDH=e>>8&3;h.huffmanRefinementDX=e>>10&3;h.huffmanRefinementDY=e>>12&3;h.huffmanRefinementSizeSelector=!!(16384&e)}if(h.refinement&&!h.refinementTemplate){s=[];for(o=0;o<2;o++){s.push({x:readInt8(r,l),y:readInt8(r,l+1)});l+=2}h.refinementAt=s}h.numberOfSymbolInstances=readUint32(r,l);l+=4;n=[h,a.referredTo,r,l,i];break;case 16:const d={},f=r[l++];d.mmr=!!(1&f);d.template=f>>1&3;d.patternWidth=r[l++];d.patternHeight=r[l++];d.maxPatternIndex=readUint32(r,l);l+=4;n=[d,a.number,r,l,i];break;case 22:case 23:const g={};g.info=readRegionSegmentInformation(r,l);l+=tr;const p=r[l++];g.mmr=!!(1&p);g.template=p>>1&3;g.enableSkip=!!(8&p);g.combinationOperator=p>>4&7;g.defaultPixelValue=p>>7&1;g.gridWidth=readUint32(r,l);l+=4;g.gridHeight=readUint32(r,l);l+=4;g.gridOffsetX=4294967295&readUint32(r,l);l+=4;g.gridOffsetY=4294967295&readUint32(r,l);l+=4;g.gridVectorX=readUint16(r,l);l+=2;g.gridVectorY=readUint16(r,l);l+=2;n=[g,a.referredTo,r,l,i];break;case 38:case 39:const m={};m.info=readRegionSegmentInformation(r,l);l+=tr;const b=r[l++];m.mmr=!!(1&b);m.template=b>>1&3;m.prediction=!!(8&b);if(!m.mmr){c=0===m.template?4:1;s=[];for(o=0;o>2&1;y.combinationOperator=w>>3&3;y.requiresBuffer=!!(32&w);y.combinationOperatorOverride=!!(64&w);n=[y];break;case 49:case 50:case 51:case 62:break;case 53:n=[a.number,r,l,i];break;default:throw new Jbig2Error(`segment type ${a.typeName}(${a.type}) is not implemented`)}const h="on"+a.typeName;h in t&&t[h].apply(t,n)}function processSegments(e,t){for(let a=0,r=e.length;a>3,a=new Uint8ClampedArray(t*e.height);e.defaultPixelValue&&a.fill(255);this.buffer=a}drawBitmap(e,t){const a=this.currentPageInfo,r=e.width,i=e.height,n=a.width+7>>3,s=a.combinationOperatorOverride?e.combinationOperator:a.combinationOperator,o=this.buffer,c=128>>(7&e.x);let l,h,u,d,f=e.y*n+(e.x>>3);switch(s){case 0:for(l=0;l>=1;if(!u){u=128;d++}}f+=n}break;case 2:for(l=0;l>=1;if(!u){u=128;d++}}f+=n}break;default:throw new Jbig2Error(`operator ${s} is not supported`)}}onImmediateGenericRegion(e,t,a,r){const i=e.info,n=new DecodingContext(t,a,r),s=decodeBitmap(e.mmr,i.width,i.height,e.template,e.prediction,null,e.at,n);this.drawBitmap(i,s)}onImmediateLosslessGenericRegion(){this.onImmediateGenericRegion(...arguments)}onSymbolDictionary(e,t,a,r,i,n){let s,o;if(e.huffman){s=function getSymbolDictionaryHuffmanTables(e,t,a){let r,i,n,s,o=0;switch(e.huffmanDHSelector){case 0:case 1:r=getStandardTable(e.huffmanDHSelector+4);break;case 3:r=getCustomHuffmanTable(o,t,a);o++;break;default:throw new Jbig2Error("invalid Huffman DH selector")}switch(e.huffmanDWSelector){case 0:case 1:i=getStandardTable(e.huffmanDWSelector+2);break;case 3:i=getCustomHuffmanTable(o,t,a);o++;break;default:throw new Jbig2Error("invalid Huffman DW selector")}if(e.bitmapSizeSelector){n=getCustomHuffmanTable(o,t,a);o++}else n=getStandardTable(1);s=e.aggregationInstancesSelector?getCustomHuffmanTable(o,t,a):getStandardTable(1);return{tableDeltaHeight:r,tableDeltaWidth:i,tableBitmapSize:n,tableAggregateInstances:s}}(e,a,this.customTables);o=new Reader(r,i,n)}let c=this.symbols;c||(this.symbols=c={});const l=[];for(const e of a){const t=c[e];t&&l.push(...t)}const h=new DecodingContext(r,i,n);c[t]=function decodeSymbolDictionary(e,t,a,r,i,n,s,o,c,l,h,u){if(e&&t)throw new Jbig2Error("symbol refinement with Huffman is not supported");const d=[];let f=0,g=log2(a.length+r);const p=h.decoder,m=h.contextCache;let b,y;if(e){b=getStandardTable(1);y=[];g=Math.max(g,1)}for(;d.length1)w=decodeTextRegion(e,t,r,f,0,i,1,a.concat(d),g,0,0,1,0,n,c,l,h,0,u);else{const e=decodeIAID(m,p,g),t=decodeInteger(m,"IARDX",p),i=decodeInteger(m,"IARDY",p);w=decodeRefinement(r,f,c,e=32){let a,r,s;switch(t){case 32:if(0===e)throw new Jbig2Error("no previous value in symbol ID table");r=i.readBits(2)+3;a=n[e-1].prefixLength;break;case 33:r=i.readBits(3)+3;a=0;break;case 34:r=i.readBits(7)+11;a=0;break;default:throw new Jbig2Error("invalid code length in symbol ID table")}for(s=0;s=0;m--){O=e?decodeMMRBitmap(T,c,l,!0):decodeBitmap(!1,c,l,a,!1,null,v,g);F[m]=O}for(M=0;M=0;b--){R^=F[b][M][D];N|=R<>8;_=u+M*d-D*f>>8;if(L>=0&&L+S<=r&&_>=0&&_+k<=i)for(m=0;m=i)){j=p[t];U=E[m];for(b=0;b=0&&e>1&7),c=1+(r>>4&7),l=[];let h,u,d=i;do{h=s.readBits(o);u=s.readBits(c);l.push(new HuffmanLine([d,h,u,0]));d+=1<>t&1;if(t<=0)this.children[a]=new HuffmanTreeNode(e);else{let r=this.children[a];r||(this.children[a]=r=new HuffmanTreeNode(null));r.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,a=e.length;t0&&this.rootNode.buildTree(a,a.prefixLength-1)}}decode(e){return this.rootNode.decodeNode(e)}assignPrefixCodes(e){const t=e.length;let a=0;for(let r=0;r=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,a=0;for(t=e-1;t>=0;t--)a|=this.readBit()<=this.end?-1:this.data[this.position++]}}function getCustomHuffmanTable(e,t,a){let r=0;for(let i=0,n=t.length;i>a&1;a--}}if(r&&!o){const e=5;for(let t=0;t>>t&(1<0;if(e<256){d[0]=e;f=1}else{if(!(e>=258)){if(256===e){h=9;s=258;f=0;continue}this.eof=!0;delete this.lzwState;break}if(e=0;t--){d[t]=o[a];a=l[a]}}else d[f++]=d[0]}if(i){l[s]=u;c[s]=c[u]+1;o[s]=d[0];s++;h=s+n&s+n-1?h:0|Math.min(Math.log(s+n)/.6931471805599453+1,12)}u=e;g+=f;if(r15))throw new FormatError(`Unsupported predictor: ${r}`);this.readBlock=2===r?this.readBlockTiff:this.readBlockPng;this.stream=e;this.dict=e.dict;const i=this.colors=a.get("Colors")||1,n=this.bits=a.get("BPC","BitsPerComponent")||8,s=this.columns=a.get("Columns")||1;this.pixBytes=i*n+7>>3;this.rowBytes=s*i*n+7>>3;return this}readBlockTiff(){const e=this.rowBytes,t=this.bufferLength,a=this.ensureBuffer(t+e),r=this.bits,i=this.colors,n=this.stream.getBytes(e);this.eof=!n.length;if(this.eof)return;let s,o=0,c=0,l=0,h=0,u=t;if(1===r&&1===i)for(s=0;s>1;e^=e>>2;e^=e>>4;o=(1&e)<<7;a[u++]=e}else if(8===r){for(s=0;s>8&255;a[u++]=255&e}}else{const e=new Uint8Array(i+1),u=(1<>l-r)&u;l-=r;c=c<=8){a[f++]=c>>h-8&255;h-=8}}h>0&&(a[f++]=(c<<8-h)+(o&(1<<8-h)-1))}this.bufferLength+=e}readBlockPng(){const e=this.rowBytes,t=this.pixBytes,a=this.stream.getByte(),r=this.stream.getBytes(e);this.eof=!r.length;if(this.eof)return;const i=this.bufferLength,n=this.ensureBuffer(i+e);let s=n.subarray(i-e,i);0===s.length&&(s=new Uint8Array(e));let o,c,l,h=i;switch(a){case 0:for(o=0;o>1)+r[o];for(;o>1)+r[o]&255;h++}break;case 4:for(o=0;o0){const e=this.stream.getBytes(r);t.set(e,a);a+=r}}else{r=257-r;t=this.ensureBuffer(a+r+1);t.fill(e[1],a,a+r);a+=r}this.bufferLength=a}}class Parser{constructor({lexer:e,xref:t,allowStreams:a=!1,recoveryMode:r=!1}){this.lexer=e;this.xref=t;this.allowStreams=a;this.recoveryMode=r;this.imageCache=Object.create(null);this._imageId=0;this.refill()}refill(){this.buf1=this.lexer.getObj();this.buf2=this.lexer.getObj()}shift(){if(this.buf2 instanceof Cmd&&"ID"===this.buf2.cmd){this.buf1=this.buf2;this.buf2=null}else{this.buf1=this.buf2;this.buf2=this.lexer.getObj()}}tryShift(){try{this.shift();return!0}catch(e){if(e instanceof MissingDataException)throw e;return!1}}getObj(e=null){const t=this.buf1;this.shift();if(t instanceof Cmd)switch(t.cmd){case"BI":return this.makeInlineImage(e);case"[":const a=[];for(;!isCmd(this.buf1,"]")&&this.buf1!==sa;)a.push(this.getObj(e));if(this.buf1===sa){if(this.recoveryMode)return a;throw new ParserEOFException("End of file inside array.")}this.shift();return a;case"<<":const r=new Dict(this.xref);for(;!isCmd(this.buf1,">>")&&this.buf1!==sa;){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===sa)break;r.set(t,this.getObj(e))}if(this.buf1===sa){if(this.recoveryMode)return r;throw new ParserEOFException("End of file inside dictionary.")}if(isCmd(this.buf2,"stream"))return this.allowStreams?this.makeStream(r,e):r;this.shift();return r;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,a=e.pos;let r,i,n=0;for(;-1!==(r=e.getByte());)if(0===n)n=69===r?1:0;else if(1===n)n=73===r?2:0;else if(32===r||10===r||13===r){i=e.pos;const a=e.peekBytes(15),s=a.length;if(0===s)break;for(let e=0;e127))){n=0;break}}if(2!==n)continue;if(!t){warn("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.");continue}const o=new Lexer(new Stream(e.peekBytes(75)),t);o._hexStringWarn=()=>{};let c=0;for(;;){const e=o.getObj();if(e===sa){n=0;break}if(e instanceof Cmd){const a=t[e.cmd];if(!a){n=0;break}if(a.variableArgs?c<=a.numArgs:c===a.numArgs)break;c=0;continue}c++}if(2===n)break}else n=0;if(-1===r){warn("findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker");if(i){warn('... trying to recover by using the last "EI" occurrence.');e.skip(-(e.pos-i))}}let s=4;e.skip(-s);r=e.peekByte();e.skip(s);isWhiteSpace(r)||s--;return e.pos-s-a}findDCTDecodeInlineStreamEnd(e){const t=e.pos;let a,r,i=!1;for(;-1!==(a=e.getByte());)if(255===a){switch(e.getByte()){case 0:break;case 255:e.skip(-1);break;case 217:i=!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:r=e.getUint16();r>2?e.skip(r-2):e.skip(-2)}if(i)break}const n=e.pos-t;if(-1===a){warn("Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead.");e.skip(-n);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return n}findASCII85DecodeInlineStreamEnd(e){const t=e.pos;let a;for(;-1!==(a=e.getByte());)if(126===a){const t=e.pos;a=e.peekByte();for(;isWhiteSpace(a);){e.skip();a=e.peekByte()}if(62===a){e.skip();break}if(e.pos>t){const t=e.peekBytes(2);if(69===t[0]&&73===t[1])break}}const r=e.pos-t;if(-1===a){warn("Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-r);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return r}findASCIIHexDecodeInlineStreamEnd(e){const t=e.pos;let a;for(;-1!==(a=e.getByte())&&62!==a;);const r=e.pos-t;if(-1===a){warn("Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-r);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return r}inlineStreamSkipEI(e){let t,a=0;for(;-1!==(t=e.getByte());)if(0===a)a=69===t?1:0;else if(1===a)a=73===t?2:0;else if(2===a)break}makeInlineImage(e){const t=this.lexer,a=t.stream,r=Object.create(null);let i;for(;!isCmd(this.buf1,"ID")&&this.buf1!==sa;){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===sa)break;r[t]=this.getObj(e)}-1!==t.beginInlineImagePos&&(i=a.pos-t.beginInlineImagePos);const n=this.xref.fetchIfRef(r.F||r.Filter);let s;if(n instanceof Name)s=n.name;else if(Array.isArray(n)){const e=this.xref.fetchIfRef(n[0]);e instanceof Name&&(s=e.name)}const o=a.pos;let c,l;switch(s){case"DCT":case"DCTDecode":c=this.findDCTDecodeInlineStreamEnd(a);break;case"A85":case"ASCII85Decode":c=this.findASCII85DecodeInlineStreamEnd(a);break;case"AHx":case"ASCIIHexDecode":c=this.findASCIIHexDecodeInlineStreamEnd(a);break;default:c=this.findDefaultInlineStreamEnd(a)}if(c<1e3&&i>0){const e=a.pos;a.pos=t.beginInlineImagePos;l=function getInlineImageCacheKey(e){const t=[],a=e.length;let r=0;for(;r=r){let r=!1;for(const e of i){const t=e.length;let i=0;for(;i=n){r=!0;break}if(i>=t){if(isWhiteSpace(s[c+o+i])){info(`Found "${bytesToString([...a,...e])}" when searching for endstream command.`);r=!0}break}}if(r){t.pos+=c;return t.pos-e}}c++}t.pos+=o}return-1}makeStream(e,t){const a=this.lexer;let r=a.stream;a.skipToNextLine();const i=r.pos-1;let n=e.get("Length");if(!Number.isInteger(n)){info(`Bad length "${n&&n.toString()}" in stream.`);n=0}r.pos=i+n;a.nextChar();if(this.tryShift()&&isCmd(this.buf2,"endstream"))this.shift();else{n=this.#q(i);if(n<0)throw new FormatError("Missing endstream command.");a.nextChar();this.shift();this.shift()}this.shift();r=r.makeSubStream(i,n,e);t&&(r=t.createStream(r,n));r=this.filter(r,e,n);r.dict=e;return r}filter(e,t,a){let r=t.get("F","Filter"),i=t.get("DP","DecodeParms");if(r instanceof Name){Array.isArray(i)&&warn("/DecodeParms should not be an Array, when /Filter is a Name.");return this.makeFilter(e,r.name,a,i)}let n=a;if(Array.isArray(r)){const t=r,a=i;for(let s=0,o=t.length;s=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,a=0,r=1;if(45===e){r=-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){a=10;e=this.nextChar()}if(e<48||e>57){const t=`Invalid number: ${String.fromCharCode(e)} (charCode ${e})`;if(isWhiteSpace(e)||40===e||60===e||-1===e){info(`Lexer.getNumber - "${t}".`);return 0}throw new FormatError(t)}let i=e-48,n=0,s=1;for(;(e=this.nextChar())>=0;)if(e>=48&&e<=57){const r=e-48;if(t)n=10*n+r;else{0!==a&&(a*=10);i=10*i+r}}else if(46===e){if(0!==a)break;a=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){s=45===e?-1:1;this.nextChar()}else if(e<48||e>57)break;t=!0}0!==a&&(i/=a);t&&(i*=10**(s*n));return r*i}getString(){let e=1,t=!1;const a=this.strBuf;a.length=0;let r=this.nextChar();for(;;){let i=!1;switch(0|r){case-1:warn("Unterminated string");t=!0;break;case 40:++e;a.push("(");break;case 41:if(0===--e){this.nextChar();t=!0}else a.push(")");break;case 92:r=this.nextChar();switch(r){case-1:warn("Unterminated string");t=!0;break;case 110:a.push("\n");break;case 114:a.push("\r");break;case 116:a.push("\t");break;case 98:a.push("\b");break;case 102:a.push("\f");break;case 92:case 40:case 41:a.push(String.fromCharCode(r));break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:let e=15&r;r=this.nextChar();i=!0;if(r>=48&&r<=55){e=(e<<3)+(15&r);r=this.nextChar();if(r>=48&&r<=55){i=!1;e=(e<<3)+(15&r)}}a.push(String.fromCharCode(e));break;case 13:10===this.peekChar()&&this.nextChar();break;case 10:break;default:a.push(String.fromCharCode(r))}break;default:a.push(String.fromCharCode(r))}if(t)break;i||(r=this.nextChar())}return a.join("")}getName(){let e,t;const a=this.strBuf;a.length=0;for(;(e=this.nextChar())>=0&&!rr[e];)if(35===e){e=this.nextChar();if(rr[e]){warn("Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number.");a.push("#");break}const r=toHexDigit(e);if(-1!==r){t=e;e=this.nextChar();const i=toHexDigit(e);if(-1===i){warn(`Lexer_getName: Illegal digit (${String.fromCharCode(e)}) in hexadecimal number.`);a.push("#",String.fromCharCode(t));if(rr[e])break;a.push(String.fromCharCode(e));continue}a.push(String.fromCharCode(r<<4|i))}else a.push("#",String.fromCharCode(e))}else a.push(String.fromCharCode(e));a.length>127&&warn(`Name token is longer than allowed by the spec: ${a.length}`);return Name.get(a.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,a=-1,r=-1;this._hexStringNumWarn=0;for(;;){if(t<0){warn("Unterminated hex string");break}if(62===t){this.nextChar();break}if(1!==rr[t]){r=toHexDigit(t);if(-1===r)this._hexStringWarn(t);else if(-1===a)a=r;else{e.push(String.fromCharCode(a<<4|r));a=-1}t=this.nextChar()}else t=this.nextChar()}-1!==a&&e.push(String.fromCharCode(a<<4));return e.join("")}getObj(){let e=!1,t=this.currentChar;for(;;){if(t<0)return sa;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(1!==rr[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 a=String.fromCharCode(t);if(t<32||t>127){const e=this.peekChar();if(e>=32&&e<=127){this.nextChar();return Cmd.get(a)}}const r=this.knownCommands;let i=void 0!==r?.[a];for(;(t=this.nextChar())>=0&&!rr[t];){const e=a+String.fromCharCode(t);if(i&&void 0===r[e])break;if(128===a.length)throw new FormatError(`Command token too long: ${a.length}`);a=e;i=void 0!==r?.[a]}if("true"===a)return!0;if("false"===a)return!1;if("null"===a)return null;"BI"===a&&(this.beginInlineImagePos=this.stream.pos);return Cmd.get(a)}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,a=!1){const r=e.get(t);if(Number.isInteger(r)&&(a?r>=0:r>0))return r;throw new Error(`The "${t}" parameter in the linearization dictionary is invalid.`)}const t=new Parser({lexer:new Lexer(e),xref:null}),a=t.getObj(),r=t.getObj(),i=t.getObj(),n=t.getObj();let s,o;if(!(Number.isInteger(a)&&Number.isInteger(r)&&isCmd(i,"obj")&&n instanceof Dict&&"number"==typeof(s=n.get("Linearized"))&&s>0))return null;if((o=getInt(n,"L"))!==e.length)throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.');return{length:o,hints:function getHints(e){const t=e.get("H");let a;if(Array.isArray(t)&&(2===(a=t.length)||4===a)){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.")}(n),objectNumberFirst:getInt(n,"O"),endFirst:getInt(n,"E"),numPages:getInt(n,"N"),mainXRefEntriesOffset:getInt(n,"T"),pageFirst:n.has("P")?getInt(n,"P",!0):0}}}const ir=["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"],nr=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,a){this.codespaceRanges[e-1].push(t,a);this.numCodespaceRanges++}mapCidRange(e,t,a){if(t-e>nr)throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");for(;e<=t;)this._map[e++]=a++}mapBfRange(e,t,a){if(t-e>nr)throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");const r=a.length-1;for(;e<=t;){this._map[e++]=a;const t=a.charCodeAt(r)+1;t>255?a=a.substring(0,r-1)+String.fromCharCode(a.charCodeAt(r-1)+1)+"\0":a=a.substring(0,r)+String.fromCharCode(t)}}mapBfRangeToArray(e,t,a){if(t-e>nr)throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");const r=a.length;let i=0;for(;e<=t&&i>>0;const s=i[n];for(let e=0,t=s.length;e=t&&r<=i){a.charcode=r;a.length=n+1;return}}}a.charcode=0;a.length=1}getCharCodeLength(e){const t=this.codespaceRanges;for(let a=0,r=t.length;a=i&&e<=n)return a+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,a){unreachable("should not call mapCidRange")}mapBfRange(e,t,a){unreachable("should not call mapBfRange")}mapBfRangeToArray(e,t,a){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 a=0;a>>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 a=t.getObj();if(a===sa)break;if(isCmd(a,"endbfchar"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectString(a);const i=a;e.mapOne(r,i)}}function parseBfRange(e,t){for(;;){let a=t.getObj();if(a===sa)break;if(isCmd(a,"endbfrange"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectString(a);const i=strToInt(a);a=t.getObj();if(Number.isInteger(a)||"string"==typeof a){const t=Number.isInteger(a)?String.fromCharCode(a):a;e.mapBfRange(r,i,t)}else{if(!isCmd(a,"["))break;{a=t.getObj();const n=[];for(;!isCmd(a,"]")&&a!==sa;){n.push(a);a=t.getObj()}e.mapBfRangeToArray(r,i,n)}}}throw new FormatError("Invalid bf range.")}function parseCidChar(e,t){for(;;){let a=t.getObj();if(a===sa)break;if(isCmd(a,"endcidchar"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectInt(a);const i=a;e.mapOne(r,i)}}function parseCidRange(e,t){for(;;){let a=t.getObj();if(a===sa)break;if(isCmd(a,"endcidrange"))return;expectString(a);const r=strToInt(a);a=t.getObj();expectString(a);const i=strToInt(a);a=t.getObj();expectInt(a);const n=a;e.mapCidRange(r,i,n)}}function parseCodespaceRange(e,t){for(;;){let a=t.getObj();if(a===sa)break;if(isCmd(a,"endcodespacerange"))return;if("string"!=typeof a)break;const r=strToInt(a);a=t.getObj();if("string"!=typeof a)break;const i=strToInt(a);e.addCodespaceRange(a.length,r,i)}throw new FormatError("Invalid codespace range.")}function parseWMode(e,t){const a=t.getObj();Number.isInteger(a)&&(e.vertical=!!a)}function parseCMapName(e,t){const a=t.getObj();a instanceof Name&&(e.name=a.name)}async function parseCMap(e,t,a,r){let i,n;e:for(;;)try{const a=t.getObj();if(a===sa)break;if(a instanceof Name){"WMode"===a.name?parseWMode(e,t):"CMapName"===a.name&&parseCMapName(e,t);i=a}else if(a instanceof Cmd)switch(a.cmd){case"endcmap":break e;case"usecmap":i instanceof Name&&(n=i.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}!r&&n&&(r=n);return r?extendCMap(e,a,r):e}async function extendCMap(e,t,a){e.useCMap=await createBuiltInCMap(a,t);if(0===e.numCodespaceRanges){const t=e.useCMap.codespaceRanges;for(let a=0;aextendCMap(i,t,e));const n=new Lexer(new Stream(a));return parseCMap(i,n,t,null)}class CMapFactory{static async create({encoding:e,fetchBuiltInCMap:t,useCMap:a}){if(e instanceof Name)return createBuiltInCMap(e.name,t);if(e instanceof BaseStream){const r=await parseCMap(new CMap,new Lexer(e),t,a);return r.isIdentityCMap?createBuiltInCMap(r.name,t):r}throw new Error("Encoding required.")}}const sr=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"],or=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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","","","",""],cr=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"],lr=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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","","","",""],hr=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"],ur=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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",""],dr=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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 hr;case"StandardEncoding":return lr;case"MacRomanEncoding":return cr;case"SymbolSetEncoding":return ur;case"ZapfDingbatsEncoding":return dr;case"ExpertEncoding":return sr;case"MacExpertEncoding":return or;default:return null}}const fr=getLookupTableFactory(function(e){e.A=65;e.AE=198;e.AEacute=508;e.AEmacron=482;e.AEsmall=63462;e.Aacute=193;e.Aacutesmall=63457;e.Abreve=258;e.Abreveacute=7854;e.Abrevecyrillic=1232;e.Abrevedotbelow=7862;e.Abrevegrave=7856;e.Abrevehookabove=7858;e.Abrevetilde=7860;e.Acaron=461;e.Acircle=9398;e.Acircumflex=194;e.Acircumflexacute=7844;e.Acircumflexdotbelow=7852;e.Acircumflexgrave=7846;e.Acircumflexhookabove=7848;e.Acircumflexsmall=63458;e.Acircumflextilde=7850;e.Acute=63177;e.Acutesmall=63412;e.Acyrillic=1040;e.Adblgrave=512;e.Adieresis=196;e.Adieresiscyrillic=1234;e.Adieresismacron=478;e.Adieresissmall=63460;e.Adotbelow=7840;e.Adotmacron=480;e.Agrave=192;e.Agravesmall=63456;e.Ahookabove=7842;e.Aiecyrillic=1236;e.Ainvertedbreve=514;e.Alpha=913;e.Alphatonos=902;e.Amacron=256;e.Amonospace=65313;e.Aogonek=260;e.Aring=197;e.Aringacute=506;e.Aringbelow=7680;e.Aringsmall=63461;e.Asmall=63329;e.Atilde=195;e.Atildesmall=63459;e.Aybarmenian=1329;e.B=66;e.Bcircle=9399;e.Bdotaccent=7682;e.Bdotbelow=7684;e.Becyrillic=1041;e.Benarmenian=1330;e.Beta=914;e.Bhook=385;e.Blinebelow=7686;e.Bmonospace=65314;e.Brevesmall=63220;e.Bsmall=63330;e.Btopbar=386;e.C=67;e.Caarmenian=1342;e.Cacute=262;e.Caron=63178;e.Caronsmall=63221;e.Ccaron=268;e.Ccedilla=199;e.Ccedillaacute=7688;e.Ccedillasmall=63463;e.Ccircle=9400;e.Ccircumflex=264;e.Cdot=266;e.Cdotaccent=266;e.Cedillasmall=63416;e.Chaarmenian=1353;e.Cheabkhasiancyrillic=1212;e.Checyrillic=1063;e.Chedescenderabkhasiancyrillic=1214;e.Chedescendercyrillic=1206;e.Chedieresiscyrillic=1268;e.Cheharmenian=1347;e.Chekhakassiancyrillic=1227;e.Cheverticalstrokecyrillic=1208;e.Chi=935;e.Chook=391;e.Circumflexsmall=63222;e.Cmonospace=65315;e.Coarmenian=1361;e.Csmall=63331;e.D=68;e.DZ=497;e.DZcaron=452;e.Daarmenian=1332;e.Dafrican=393;e.Dcaron=270;e.Dcedilla=7696;e.Dcircle=9401;e.Dcircumflexbelow=7698;e.Dcroat=272;e.Ddotaccent=7690;e.Ddotbelow=7692;e.Decyrillic=1044;e.Deicoptic=1006;e.Delta=8710;e.Deltagreek=916;e.Dhook=394;e.Dieresis=63179;e.DieresisAcute=63180;e.DieresisGrave=63181;e.Dieresissmall=63400;e.Digammagreek=988;e.Djecyrillic=1026;e.Dlinebelow=7694;e.Dmonospace=65316;e.Dotaccentsmall=63223;e.Dslash=272;e.Dsmall=63332;e.Dtopbar=395;e.Dz=498;e.Dzcaron=453;e.Dzeabkhasiancyrillic=1248;e.Dzecyrillic=1029;e.Dzhecyrillic=1039;e.E=69;e.Eacute=201;e.Eacutesmall=63465;e.Ebreve=276;e.Ecaron=282;e.Ecedillabreve=7708;e.Echarmenian=1333;e.Ecircle=9402;e.Ecircumflex=202;e.Ecircumflexacute=7870;e.Ecircumflexbelow=7704;e.Ecircumflexdotbelow=7878;e.Ecircumflexgrave=7872;e.Ecircumflexhookabove=7874;e.Ecircumflexsmall=63466;e.Ecircumflextilde=7876;e.Ecyrillic=1028;e.Edblgrave=516;e.Edieresis=203;e.Edieresissmall=63467;e.Edot=278;e.Edotaccent=278;e.Edotbelow=7864;e.Efcyrillic=1060;e.Egrave=200;e.Egravesmall=63464;e.Eharmenian=1335;e.Ehookabove=7866;e.Eightroman=8551;e.Einvertedbreve=518;e.Eiotifiedcyrillic=1124;e.Elcyrillic=1051;e.Elevenroman=8554;e.Emacron=274;e.Emacronacute=7702;e.Emacrongrave=7700;e.Emcyrillic=1052;e.Emonospace=65317;e.Encyrillic=1053;e.Endescendercyrillic=1186;e.Eng=330;e.Enghecyrillic=1188;e.Enhookcyrillic=1223;e.Eogonek=280;e.Eopen=400;e.Epsilon=917;e.Epsilontonos=904;e.Ercyrillic=1056;e.Ereversed=398;e.Ereversedcyrillic=1069;e.Escyrillic=1057;e.Esdescendercyrillic=1194;e.Esh=425;e.Esmall=63333;e.Eta=919;e.Etarmenian=1336;e.Etatonos=905;e.Eth=208;e.Ethsmall=63472;e.Etilde=7868;e.Etildebelow=7706;e.Euro=8364;e.Ezh=439;e.Ezhcaron=494;e.Ezhreversed=440;e.F=70;e.Fcircle=9403;e.Fdotaccent=7710;e.Feharmenian=1366;e.Feicoptic=996;e.Fhook=401;e.Fitacyrillic=1138;e.Fiveroman=8548;e.Fmonospace=65318;e.Fourroman=8547;e.Fsmall=63334;e.G=71;e.GBsquare=13191;e.Gacute=500;e.Gamma=915;e.Gammaafrican=404;e.Gangiacoptic=1002;e.Gbreve=286;e.Gcaron=486;e.Gcedilla=290;e.Gcircle=9404;e.Gcircumflex=284;e.Gcommaaccent=290;e.Gdot=288;e.Gdotaccent=288;e.Gecyrillic=1043;e.Ghadarmenian=1346;e.Ghemiddlehookcyrillic=1172;e.Ghestrokecyrillic=1170;e.Gheupturncyrillic=1168;e.Ghook=403;e.Gimarmenian=1331;e.Gjecyrillic=1027;e.Gmacron=7712;e.Gmonospace=65319;e.Grave=63182;e.Gravesmall=63328;e.Gsmall=63335;e.Gsmallhook=667;e.Gstroke=484;e.H=72;e.H18533=9679;e.H18543=9642;e.H18551=9643;e.H22073=9633;e.HPsquare=13259;e.Haabkhasiancyrillic=1192;e.Hadescendercyrillic=1202;e.Hardsigncyrillic=1066;e.Hbar=294;e.Hbrevebelow=7722;e.Hcedilla=7720;e.Hcircle=9405;e.Hcircumflex=292;e.Hdieresis=7718;e.Hdotaccent=7714;e.Hdotbelow=7716;e.Hmonospace=65320;e.Hoarmenian=1344;e.Horicoptic=1e3;e.Hsmall=63336;e.Hungarumlaut=63183;e.Hungarumlautsmall=63224;e.Hzsquare=13200;e.I=73;e.IAcyrillic=1071;e.IJ=306;e.IUcyrillic=1070;e.Iacute=205;e.Iacutesmall=63469;e.Ibreve=300;e.Icaron=463;e.Icircle=9406;e.Icircumflex=206;e.Icircumflexsmall=63470;e.Icyrillic=1030;e.Idblgrave=520;e.Idieresis=207;e.Idieresisacute=7726;e.Idieresiscyrillic=1252;e.Idieresissmall=63471;e.Idot=304;e.Idotaccent=304;e.Idotbelow=7882;e.Iebrevecyrillic=1238;e.Iecyrillic=1045;e.Ifraktur=8465;e.Igrave=204;e.Igravesmall=63468;e.Ihookabove=7880;e.Iicyrillic=1048;e.Iinvertedbreve=522;e.Iishortcyrillic=1049;e.Imacron=298;e.Imacroncyrillic=1250;e.Imonospace=65321;e.Iniarmenian=1339;e.Iocyrillic=1025;e.Iogonek=302;e.Iota=921;e.Iotaafrican=406;e.Iotadieresis=938;e.Iotatonos=906;e.Ismall=63337;e.Istroke=407;e.Itilde=296;e.Itildebelow=7724;e.Izhitsacyrillic=1140;e.Izhitsadblgravecyrillic=1142;e.J=74;e.Jaarmenian=1345;e.Jcircle=9407;e.Jcircumflex=308;e.Jecyrillic=1032;e.Jheharmenian=1355;e.Jmonospace=65322;e.Jsmall=63338;e.K=75;e.KBsquare=13189;e.KKsquare=13261;e.Kabashkircyrillic=1184;e.Kacute=7728;e.Kacyrillic=1050;e.Kadescendercyrillic=1178;e.Kahookcyrillic=1219;e.Kappa=922;e.Kastrokecyrillic=1182;e.Kaverticalstrokecyrillic=1180;e.Kcaron=488;e.Kcedilla=310;e.Kcircle=9408;e.Kcommaaccent=310;e.Kdotbelow=7730;e.Keharmenian=1364;e.Kenarmenian=1343;e.Khacyrillic=1061;e.Kheicoptic=998;e.Khook=408;e.Kjecyrillic=1036;e.Klinebelow=7732;e.Kmonospace=65323;e.Koppacyrillic=1152;e.Koppagreek=990;e.Ksicyrillic=1134;e.Ksmall=63339;e.L=76;e.LJ=455;e.LL=63167;e.Lacute=313;e.Lambda=923;e.Lcaron=317;e.Lcedilla=315;e.Lcircle=9409;e.Lcircumflexbelow=7740;e.Lcommaaccent=315;e.Ldot=319;e.Ldotaccent=319;e.Ldotbelow=7734;e.Ldotbelowmacron=7736;e.Liwnarmenian=1340;e.Lj=456;e.Ljecyrillic=1033;e.Llinebelow=7738;e.Lmonospace=65324;e.Lslash=321;e.Lslashsmall=63225;e.Lsmall=63340;e.M=77;e.MBsquare=13190;e.Macron=63184;e.Macronsmall=63407;e.Macute=7742;e.Mcircle=9410;e.Mdotaccent=7744;e.Mdotbelow=7746;e.Menarmenian=1348;e.Mmonospace=65325;e.Msmall=63341;e.Mturned=412;e.Mu=924;e.N=78;e.NJ=458;e.Nacute=323;e.Ncaron=327;e.Ncedilla=325;e.Ncircle=9411;e.Ncircumflexbelow=7754;e.Ncommaaccent=325;e.Ndotaccent=7748;e.Ndotbelow=7750;e.Nhookleft=413;e.Nineroman=8552;e.Nj=459;e.Njecyrillic=1034;e.Nlinebelow=7752;e.Nmonospace=65326;e.Nowarmenian=1350;e.Nsmall=63342;e.Ntilde=209;e.Ntildesmall=63473;e.Nu=925;e.O=79;e.OE=338;e.OEsmall=63226;e.Oacute=211;e.Oacutesmall=63475;e.Obarredcyrillic=1256;e.Obarreddieresiscyrillic=1258;e.Obreve=334;e.Ocaron=465;e.Ocenteredtilde=415;e.Ocircle=9412;e.Ocircumflex=212;e.Ocircumflexacute=7888;e.Ocircumflexdotbelow=7896;e.Ocircumflexgrave=7890;e.Ocircumflexhookabove=7892;e.Ocircumflexsmall=63476;e.Ocircumflextilde=7894;e.Ocyrillic=1054;e.Odblacute=336;e.Odblgrave=524;e.Odieresis=214;e.Odieresiscyrillic=1254;e.Odieresissmall=63478;e.Odotbelow=7884;e.Ogoneksmall=63227;e.Ograve=210;e.Ogravesmall=63474;e.Oharmenian=1365;e.Ohm=8486;e.Ohookabove=7886;e.Ohorn=416;e.Ohornacute=7898;e.Ohorndotbelow=7906;e.Ohorngrave=7900;e.Ohornhookabove=7902;e.Ohorntilde=7904;e.Ohungarumlaut=336;e.Oi=418;e.Oinvertedbreve=526;e.Omacron=332;e.Omacronacute=7762;e.Omacrongrave=7760;e.Omega=8486;e.Omegacyrillic=1120;e.Omegagreek=937;e.Omegaroundcyrillic=1146;e.Omegatitlocyrillic=1148;e.Omegatonos=911;e.Omicron=927;e.Omicrontonos=908;e.Omonospace=65327;e.Oneroman=8544;e.Oogonek=490;e.Oogonekmacron=492;e.Oopen=390;e.Oslash=216;e.Oslashacute=510;e.Oslashsmall=63480;e.Osmall=63343;e.Ostrokeacute=510;e.Otcyrillic=1150;e.Otilde=213;e.Otildeacute=7756;e.Otildedieresis=7758;e.Otildesmall=63477;e.P=80;e.Pacute=7764;e.Pcircle=9413;e.Pdotaccent=7766;e.Pecyrillic=1055;e.Peharmenian=1354;e.Pemiddlehookcyrillic=1190;e.Phi=934;e.Phook=420;e.Pi=928;e.Piwrarmenian=1363;e.Pmonospace=65328;e.Psi=936;e.Psicyrillic=1136;e.Psmall=63344;e.Q=81;e.Qcircle=9414;e.Qmonospace=65329;e.Qsmall=63345;e.R=82;e.Raarmenian=1356;e.Racute=340;e.Rcaron=344;e.Rcedilla=342;e.Rcircle=9415;e.Rcommaaccent=342;e.Rdblgrave=528;e.Rdotaccent=7768;e.Rdotbelow=7770;e.Rdotbelowmacron=7772;e.Reharmenian=1360;e.Rfraktur=8476;e.Rho=929;e.Ringsmall=63228;e.Rinvertedbreve=530;e.Rlinebelow=7774;e.Rmonospace=65330;e.Rsmall=63346;e.Rsmallinverted=641;e.Rsmallinvertedsuperior=694;e.S=83;e.SF010000=9484;e.SF020000=9492;e.SF030000=9488;e.SF040000=9496;e.SF050000=9532;e.SF060000=9516;e.SF070000=9524;e.SF080000=9500;e.SF090000=9508;e.SF100000=9472;e.SF110000=9474;e.SF190000=9569;e.SF200000=9570;e.SF210000=9558;e.SF220000=9557;e.SF230000=9571;e.SF240000=9553;e.SF250000=9559;e.SF260000=9565;e.SF270000=9564;e.SF280000=9563;e.SF360000=9566;e.SF370000=9567;e.SF380000=9562;e.SF390000=9556;e.SF400000=9577;e.SF410000=9574;e.SF420000=9568;e.SF430000=9552;e.SF440000=9580;e.SF450000=9575;e.SF460000=9576;e.SF470000=9572;e.SF480000=9573;e.SF490000=9561;e.SF500000=9560;e.SF510000=9554;e.SF520000=9555;e.SF530000=9579;e.SF540000=9578;e.Sacute=346;e.Sacutedotaccent=7780;e.Sampigreek=992;e.Scaron=352;e.Scarondotaccent=7782;e.Scaronsmall=63229;e.Scedilla=350;e.Schwa=399;e.Schwacyrillic=1240;e.Schwadieresiscyrillic=1242;e.Scircle=9416;e.Scircumflex=348;e.Scommaaccent=536;e.Sdotaccent=7776;e.Sdotbelow=7778;e.Sdotbelowdotaccent=7784;e.Seharmenian=1357;e.Sevenroman=8550;e.Shaarmenian=1351;e.Shacyrillic=1064;e.Shchacyrillic=1065;e.Sheicoptic=994;e.Shhacyrillic=1210;e.Shimacoptic=1004;e.Sigma=931;e.Sixroman=8549;e.Smonospace=65331;e.Softsigncyrillic=1068;e.Ssmall=63347;e.Stigmagreek=986;e.T=84;e.Tau=932;e.Tbar=358;e.Tcaron=356;e.Tcedilla=354;e.Tcircle=9417;e.Tcircumflexbelow=7792;e.Tcommaaccent=354;e.Tdotaccent=7786;e.Tdotbelow=7788;e.Tecyrillic=1058;e.Tedescendercyrillic=1196;e.Tenroman=8553;e.Tetsecyrillic=1204;e.Theta=920;e.Thook=428;e.Thorn=222;e.Thornsmall=63486;e.Threeroman=8546;e.Tildesmall=63230;e.Tiwnarmenian=1359;e.Tlinebelow=7790;e.Tmonospace=65332;e.Toarmenian=1337;e.Tonefive=444;e.Tonesix=388;e.Tonetwo=423;e.Tretroflexhook=430;e.Tsecyrillic=1062;e.Tshecyrillic=1035;e.Tsmall=63348;e.Twelveroman=8555;e.Tworoman=8545;e.U=85;e.Uacute=218;e.Uacutesmall=63482;e.Ubreve=364;e.Ucaron=467;e.Ucircle=9418;e.Ucircumflex=219;e.Ucircumflexbelow=7798;e.Ucircumflexsmall=63483;e.Ucyrillic=1059;e.Udblacute=368;e.Udblgrave=532;e.Udieresis=220;e.Udieresisacute=471;e.Udieresisbelow=7794;e.Udieresiscaron=473;e.Udieresiscyrillic=1264;e.Udieresisgrave=475;e.Udieresismacron=469;e.Udieresissmall=63484;e.Udotbelow=7908;e.Ugrave=217;e.Ugravesmall=63481;e.Uhookabove=7910;e.Uhorn=431;e.Uhornacute=7912;e.Uhorndotbelow=7920;e.Uhorngrave=7914;e.Uhornhookabove=7916;e.Uhorntilde=7918;e.Uhungarumlaut=368;e.Uhungarumlautcyrillic=1266;e.Uinvertedbreve=534;e.Ukcyrillic=1144;e.Umacron=362;e.Umacroncyrillic=1262;e.Umacrondieresis=7802;e.Umonospace=65333;e.Uogonek=370;e.Upsilon=933;e.Upsilon1=978;e.Upsilonacutehooksymbolgreek=979;e.Upsilonafrican=433;e.Upsilondieresis=939;e.Upsilondieresishooksymbolgreek=980;e.Upsilonhooksymbol=978;e.Upsilontonos=910;e.Uring=366;e.Ushortcyrillic=1038;e.Usmall=63349;e.Ustraightcyrillic=1198;e.Ustraightstrokecyrillic=1200;e.Utilde=360;e.Utildeacute=7800;e.Utildebelow=7796;e.V=86;e.Vcircle=9419;e.Vdotbelow=7806;e.Vecyrillic=1042;e.Vewarmenian=1358;e.Vhook=434;e.Vmonospace=65334;e.Voarmenian=1352;e.Vsmall=63350;e.Vtilde=7804;e.W=87;e.Wacute=7810;e.Wcircle=9420;e.Wcircumflex=372;e.Wdieresis=7812;e.Wdotaccent=7814;e.Wdotbelow=7816;e.Wgrave=7808;e.Wmonospace=65335;e.Wsmall=63351;e.X=88;e.Xcircle=9421;e.Xdieresis=7820;e.Xdotaccent=7818;e.Xeharmenian=1341;e.Xi=926;e.Xmonospace=65336;e.Xsmall=63352;e.Y=89;e.Yacute=221;e.Yacutesmall=63485;e.Yatcyrillic=1122;e.Ycircle=9422;e.Ycircumflex=374;e.Ydieresis=376;e.Ydieresissmall=63487;e.Ydotaccent=7822;e.Ydotbelow=7924;e.Yericyrillic=1067;e.Yerudieresiscyrillic=1272;e.Ygrave=7922;e.Yhook=435;e.Yhookabove=7926;e.Yiarmenian=1349;e.Yicyrillic=1031;e.Yiwnarmenian=1362;e.Ymonospace=65337;e.Ysmall=63353;e.Ytilde=7928;e.Yusbigcyrillic=1130;e.Yusbigiotifiedcyrillic=1132;e.Yuslittlecyrillic=1126;e.Yuslittleiotifiedcyrillic=1128;e.Z=90;e.Zaarmenian=1334;e.Zacute=377;e.Zcaron=381;e.Zcaronsmall=63231;e.Zcircle=9423;e.Zcircumflex=7824;e.Zdot=379;e.Zdotaccent=379;e.Zdotbelow=7826;e.Zecyrillic=1047;e.Zedescendercyrillic=1176;e.Zedieresiscyrillic=1246;e.Zeta=918;e.Zhearmenian=1338;e.Zhebrevecyrillic=1217;e.Zhecyrillic=1046;e.Zhedescendercyrillic=1174;e.Zhedieresiscyrillic=1244;e.Zlinebelow=7828;e.Zmonospace=65338;e.Zsmall=63354;e.Zstroke=437;e.a=97;e.aabengali=2438;e.aacute=225;e.aadeva=2310;e.aagujarati=2694;e.aagurmukhi=2566;e.aamatragurmukhi=2622;e.aarusquare=13059;e.aavowelsignbengali=2494;e.aavowelsigndeva=2366;e.aavowelsigngujarati=2750;e.abbreviationmarkarmenian=1375;e.abbreviationsigndeva=2416;e.abengali=2437;e.abopomofo=12570;e.abreve=259;e.abreveacute=7855;e.abrevecyrillic=1233;e.abrevedotbelow=7863;e.abrevegrave=7857;e.abrevehookabove=7859;e.abrevetilde=7861;e.acaron=462;e.acircle=9424;e.acircumflex=226;e.acircumflexacute=7845;e.acircumflexdotbelow=7853;e.acircumflexgrave=7847;e.acircumflexhookabove=7849;e.acircumflextilde=7851;e.acute=180;e.acutebelowcmb=791;e.acutecmb=769;e.acutecomb=769;e.acutedeva=2388;e.acutelowmod=719;e.acutetonecmb=833;e.acyrillic=1072;e.adblgrave=513;e.addakgurmukhi=2673;e.adeva=2309;e.adieresis=228;e.adieresiscyrillic=1235;e.adieresismacron=479;e.adotbelow=7841;e.adotmacron=481;e.ae=230;e.aeacute=509;e.aekorean=12624;e.aemacron=483;e.afii00208=8213;e.afii08941=8356;e.afii10017=1040;e.afii10018=1041;e.afii10019=1042;e.afii10020=1043;e.afii10021=1044;e.afii10022=1045;e.afii10023=1025;e.afii10024=1046;e.afii10025=1047;e.afii10026=1048;e.afii10027=1049;e.afii10028=1050;e.afii10029=1051;e.afii10030=1052;e.afii10031=1053;e.afii10032=1054;e.afii10033=1055;e.afii10034=1056;e.afii10035=1057;e.afii10036=1058;e.afii10037=1059;e.afii10038=1060;e.afii10039=1061;e.afii10040=1062;e.afii10041=1063;e.afii10042=1064;e.afii10043=1065;e.afii10044=1066;e.afii10045=1067;e.afii10046=1068;e.afii10047=1069;e.afii10048=1070;e.afii10049=1071;e.afii10050=1168;e.afii10051=1026;e.afii10052=1027;e.afii10053=1028;e.afii10054=1029;e.afii10055=1030;e.afii10056=1031;e.afii10057=1032;e.afii10058=1033;e.afii10059=1034;e.afii10060=1035;e.afii10061=1036;e.afii10062=1038;e.afii10063=63172;e.afii10064=63173;e.afii10065=1072;e.afii10066=1073;e.afii10067=1074;e.afii10068=1075;e.afii10069=1076;e.afii10070=1077;e.afii10071=1105;e.afii10072=1078;e.afii10073=1079;e.afii10074=1080;e.afii10075=1081;e.afii10076=1082;e.afii10077=1083;e.afii10078=1084;e.afii10079=1085;e.afii10080=1086;e.afii10081=1087;e.afii10082=1088;e.afii10083=1089;e.afii10084=1090;e.afii10085=1091;e.afii10086=1092;e.afii10087=1093;e.afii10088=1094;e.afii10089=1095;e.afii10090=1096;e.afii10091=1097;e.afii10092=1098;e.afii10093=1099;e.afii10094=1100;e.afii10095=1101;e.afii10096=1102;e.afii10097=1103;e.afii10098=1169;e.afii10099=1106;e.afii10100=1107;e.afii10101=1108;e.afii10102=1109;e.afii10103=1110;e.afii10104=1111;e.afii10105=1112;e.afii10106=1113;e.afii10107=1114;e.afii10108=1115;e.afii10109=1116;e.afii10110=1118;e.afii10145=1039;e.afii10146=1122;e.afii10147=1138;e.afii10148=1140;e.afii10192=63174;e.afii10193=1119;e.afii10194=1123;e.afii10195=1139;e.afii10196=1141;e.afii10831=63175;e.afii10832=63176;e.afii10846=1241;e.afii299=8206;e.afii300=8207;e.afii301=8205;e.afii57381=1642;e.afii57388=1548;e.afii57392=1632;e.afii57393=1633;e.afii57394=1634;e.afii57395=1635;e.afii57396=1636;e.afii57397=1637;e.afii57398=1638;e.afii57399=1639;e.afii57400=1640;e.afii57401=1641;e.afii57403=1563;e.afii57407=1567;e.afii57409=1569;e.afii57410=1570;e.afii57411=1571;e.afii57412=1572;e.afii57413=1573;e.afii57414=1574;e.afii57415=1575;e.afii57416=1576;e.afii57417=1577;e.afii57418=1578;e.afii57419=1579;e.afii57420=1580;e.afii57421=1581;e.afii57422=1582;e.afii57423=1583;e.afii57424=1584;e.afii57425=1585;e.afii57426=1586;e.afii57427=1587;e.afii57428=1588;e.afii57429=1589;e.afii57430=1590;e.afii57431=1591;e.afii57432=1592;e.afii57433=1593;e.afii57434=1594;e.afii57440=1600;e.afii57441=1601;e.afii57442=1602;e.afii57443=1603;e.afii57444=1604;e.afii57445=1605;e.afii57446=1606;e.afii57448=1608;e.afii57449=1609;e.afii57450=1610;e.afii57451=1611;e.afii57452=1612;e.afii57453=1613;e.afii57454=1614;e.afii57455=1615;e.afii57456=1616;e.afii57457=1617;e.afii57458=1618;e.afii57470=1607;e.afii57505=1700;e.afii57506=1662;e.afii57507=1670;e.afii57508=1688;e.afii57509=1711;e.afii57511=1657;e.afii57512=1672;e.afii57513=1681;e.afii57514=1722;e.afii57519=1746;e.afii57534=1749;e.afii57636=8362;e.afii57645=1470;e.afii57658=1475;e.afii57664=1488;e.afii57665=1489;e.afii57666=1490;e.afii57667=1491;e.afii57668=1492;e.afii57669=1493;e.afii57670=1494;e.afii57671=1495;e.afii57672=1496;e.afii57673=1497;e.afii57674=1498;e.afii57675=1499;e.afii57676=1500;e.afii57677=1501;e.afii57678=1502;e.afii57679=1503;e.afii57680=1504;e.afii57681=1505;e.afii57682=1506;e.afii57683=1507;e.afii57684=1508;e.afii57685=1509;e.afii57686=1510;e.afii57687=1511;e.afii57688=1512;e.afii57689=1513;e.afii57690=1514;e.afii57694=64298;e.afii57695=64299;e.afii57700=64331;e.afii57705=64287;e.afii57716=1520;e.afii57717=1521;e.afii57718=1522;e.afii57723=64309;e.afii57793=1460;e.afii57794=1461;e.afii57795=1462;e.afii57796=1467;e.afii57797=1464;e.afii57798=1463;e.afii57799=1456;e.afii57800=1458;e.afii57801=1457;e.afii57802=1459;e.afii57803=1474;e.afii57804=1473;e.afii57806=1465;e.afii57807=1468;e.afii57839=1469;e.afii57841=1471;e.afii57842=1472;e.afii57929=700;e.afii61248=8453;e.afii61289=8467;e.afii61352=8470;e.afii61573=8236;e.afii61574=8237;e.afii61575=8238;e.afii61664=8204;e.afii63167=1645;e.afii64937=701;e.agrave=224;e.agujarati=2693;e.agurmukhi=2565;e.ahiragana=12354;e.ahookabove=7843;e.aibengali=2448;e.aibopomofo=12574;e.aideva=2320;e.aiecyrillic=1237;e.aigujarati=2704;e.aigurmukhi=2576;e.aimatragurmukhi=2632;e.ainarabic=1593;e.ainfinalarabic=65226;e.aininitialarabic=65227;e.ainmedialarabic=65228;e.ainvertedbreve=515;e.aivowelsignbengali=2504;e.aivowelsigndeva=2376;e.aivowelsigngujarati=2760;e.akatakana=12450;e.akatakanahalfwidth=65393;e.akorean=12623;e.alef=1488;e.alefarabic=1575;e.alefdageshhebrew=64304;e.aleffinalarabic=65166;e.alefhamzaabovearabic=1571;e.alefhamzaabovefinalarabic=65156;e.alefhamzabelowarabic=1573;e.alefhamzabelowfinalarabic=65160;e.alefhebrew=1488;e.aleflamedhebrew=64335;e.alefmaddaabovearabic=1570;e.alefmaddaabovefinalarabic=65154;e.alefmaksuraarabic=1609;e.alefmaksurafinalarabic=65264;e.alefmaksurainitialarabic=65267;e.alefmaksuramedialarabic=65268;e.alefpatahhebrew=64302;e.alefqamatshebrew=64303;e.aleph=8501;e.allequal=8780;e.alpha=945;e.alphatonos=940;e.amacron=257;e.amonospace=65345;e.ampersand=38;e.ampersandmonospace=65286;e.ampersandsmall=63270;e.amsquare=13250;e.anbopomofo=12578;e.angbopomofo=12580;e.angbracketleft=12296;e.angbracketright=12297;e.angkhankhuthai=3674;e.angle=8736;e.anglebracketleft=12296;e.anglebracketleftvertical=65087;e.anglebracketright=12297;e.anglebracketrightvertical=65088;e.angleleft=9001;e.angleright=9002;e.angstrom=8491;e.anoteleia=903;e.anudattadeva=2386;e.anusvarabengali=2434;e.anusvaradeva=2306;e.anusvaragujarati=2690;e.aogonek=261;e.apaatosquare=13056;e.aparen=9372;e.apostrophearmenian=1370;e.apostrophemod=700;e.apple=63743;e.approaches=8784;e.approxequal=8776;e.approxequalorimage=8786;e.approximatelyequal=8773;e.araeaekorean=12686;e.araeakorean=12685;e.arc=8978;e.arighthalfring=7834;e.aring=229;e.aringacute=507;e.aringbelow=7681;e.arrowboth=8596;e.arrowdashdown=8675;e.arrowdashleft=8672;e.arrowdashright=8674;e.arrowdashup=8673;e.arrowdblboth=8660;e.arrowdbldown=8659;e.arrowdblleft=8656;e.arrowdblright=8658;e.arrowdblup=8657;e.arrowdown=8595;e.arrowdownleft=8601;e.arrowdownright=8600;e.arrowdownwhite=8681;e.arrowheaddownmod=709;e.arrowheadleftmod=706;e.arrowheadrightmod=707;e.arrowheadupmod=708;e.arrowhorizex=63719;e.arrowleft=8592;e.arrowleftdbl=8656;e.arrowleftdblstroke=8653;e.arrowleftoverright=8646;e.arrowleftwhite=8678;e.arrowright=8594;e.arrowrightdblstroke=8655;e.arrowrightheavy=10142;e.arrowrightoverleft=8644;e.arrowrightwhite=8680;e.arrowtableft=8676;e.arrowtabright=8677;e.arrowup=8593;e.arrowupdn=8597;e.arrowupdnbse=8616;e.arrowupdownbase=8616;e.arrowupleft=8598;e.arrowupleftofdown=8645;e.arrowupright=8599;e.arrowupwhite=8679;e.arrowvertex=63718;e.asciicircum=94;e.asciicircummonospace=65342;e.asciitilde=126;e.asciitildemonospace=65374;e.ascript=593;e.ascriptturned=594;e.asmallhiragana=12353;e.asmallkatakana=12449;e.asmallkatakanahalfwidth=65383;e.asterisk=42;e.asteriskaltonearabic=1645;e.asteriskarabic=1645;e.asteriskmath=8727;e.asteriskmonospace=65290;e.asterisksmall=65121;e.asterism=8258;e.asuperior=63209;e.asymptoticallyequal=8771;e.at=64;e.atilde=227;e.atmonospace=65312;e.atsmall=65131;e.aturned=592;e.aubengali=2452;e.aubopomofo=12576;e.audeva=2324;e.augujarati=2708;e.augurmukhi=2580;e.aulengthmarkbengali=2519;e.aumatragurmukhi=2636;e.auvowelsignbengali=2508;e.auvowelsigndeva=2380;e.auvowelsigngujarati=2764;e.avagrahadeva=2365;e.aybarmenian=1377;e.ayin=1506;e.ayinaltonehebrew=64288;e.ayinhebrew=1506;e.b=98;e.babengali=2476;e.backslash=92;e.backslashmonospace=65340;e.badeva=2348;e.bagujarati=2732;e.bagurmukhi=2604;e.bahiragana=12400;e.bahtthai=3647;e.bakatakana=12496;e.bar=124;e.barmonospace=65372;e.bbopomofo=12549;e.bcircle=9425;e.bdotaccent=7683;e.bdotbelow=7685;e.beamedsixteenthnotes=9836;e.because=8757;e.becyrillic=1073;e.beharabic=1576;e.behfinalarabic=65168;e.behinitialarabic=65169;e.behiragana=12409;e.behmedialarabic=65170;e.behmeeminitialarabic=64671;e.behmeemisolatedarabic=64520;e.behnoonfinalarabic=64621;e.bekatakana=12505;e.benarmenian=1378;e.bet=1489;e.beta=946;e.betasymbolgreek=976;e.betdagesh=64305;e.betdageshhebrew=64305;e.bethebrew=1489;e.betrafehebrew=64332;e.bhabengali=2477;e.bhadeva=2349;e.bhagujarati=2733;e.bhagurmukhi=2605;e.bhook=595;e.bihiragana=12403;e.bikatakana=12499;e.bilabialclick=664;e.bindigurmukhi=2562;e.birusquare=13105;e.blackcircle=9679;e.blackdiamond=9670;e.blackdownpointingtriangle=9660;e.blackleftpointingpointer=9668;e.blackleftpointingtriangle=9664;e.blacklenticularbracketleft=12304;e.blacklenticularbracketleftvertical=65083;e.blacklenticularbracketright=12305;e.blacklenticularbracketrightvertical=65084;e.blacklowerlefttriangle=9699;e.blacklowerrighttriangle=9698;e.blackrectangle=9644;e.blackrightpointingpointer=9658;e.blackrightpointingtriangle=9654;e.blacksmallsquare=9642;e.blacksmilingface=9787;e.blacksquare=9632;e.blackstar=9733;e.blackupperlefttriangle=9700;e.blackupperrighttriangle=9701;e.blackuppointingsmalltriangle=9652;e.blackuppointingtriangle=9650;e.blank=9251;e.blinebelow=7687;e.block=9608;e.bmonospace=65346;e.bobaimaithai=3610;e.bohiragana=12412;e.bokatakana=12508;e.bparen=9373;e.bqsquare=13251;e.braceex=63732;e.braceleft=123;e.braceleftbt=63731;e.braceleftmid=63730;e.braceleftmonospace=65371;e.braceleftsmall=65115;e.bracelefttp=63729;e.braceleftvertical=65079;e.braceright=125;e.bracerightbt=63742;e.bracerightmid=63741;e.bracerightmonospace=65373;e.bracerightsmall=65116;e.bracerighttp=63740;e.bracerightvertical=65080;e.bracketleft=91;e.bracketleftbt=63728;e.bracketleftex=63727;e.bracketleftmonospace=65339;e.bracketlefttp=63726;e.bracketright=93;e.bracketrightbt=63739;e.bracketrightex=63738;e.bracketrightmonospace=65341;e.bracketrighttp=63737;e.breve=728;e.brevebelowcmb=814;e.brevecmb=774;e.breveinvertedbelowcmb=815;e.breveinvertedcmb=785;e.breveinverteddoublecmb=865;e.bridgebelowcmb=810;e.bridgeinvertedbelowcmb=826;e.brokenbar=166;e.bstroke=384;e.bsuperior=63210;e.btopbar=387;e.buhiragana=12406;e.bukatakana=12502;e.bullet=8226;e.bulletinverse=9688;e.bulletoperator=8729;e.bullseye=9678;e.c=99;e.caarmenian=1390;e.cabengali=2458;e.cacute=263;e.cadeva=2330;e.cagujarati=2714;e.cagurmukhi=2586;e.calsquare=13192;e.candrabindubengali=2433;e.candrabinducmb=784;e.candrabindudeva=2305;e.candrabindugujarati=2689;e.capslock=8682;e.careof=8453;e.caron=711;e.caronbelowcmb=812;e.caroncmb=780;e.carriagereturn=8629;e.cbopomofo=12568;e.ccaron=269;e.ccedilla=231;e.ccedillaacute=7689;e.ccircle=9426;e.ccircumflex=265;e.ccurl=597;e.cdot=267;e.cdotaccent=267;e.cdsquare=13253;e.cedilla=184;e.cedillacmb=807;e.cent=162;e.centigrade=8451;e.centinferior=63199;e.centmonospace=65504;e.centoldstyle=63394;e.centsuperior=63200;e.chaarmenian=1401;e.chabengali=2459;e.chadeva=2331;e.chagujarati=2715;e.chagurmukhi=2587;e.chbopomofo=12564;e.cheabkhasiancyrillic=1213;e.checkmark=10003;e.checyrillic=1095;e.chedescenderabkhasiancyrillic=1215;e.chedescendercyrillic=1207;e.chedieresiscyrillic=1269;e.cheharmenian=1395;e.chekhakassiancyrillic=1228;e.cheverticalstrokecyrillic=1209;e.chi=967;e.chieuchacirclekorean=12919;e.chieuchaparenkorean=12823;e.chieuchcirclekorean=12905;e.chieuchkorean=12618;e.chieuchparenkorean=12809;e.chochangthai=3594;e.chochanthai=3592;e.chochingthai=3593;e.chochoethai=3596;e.chook=392;e.cieucacirclekorean=12918;e.cieucaparenkorean=12822;e.cieuccirclekorean=12904;e.cieuckorean=12616;e.cieucparenkorean=12808;e.cieucuparenkorean=12828;e.circle=9675;e.circlecopyrt=169;e.circlemultiply=8855;e.circleot=8857;e.circleplus=8853;e.circlepostalmark=12342;e.circlewithlefthalfblack=9680;e.circlewithrighthalfblack=9681;e.circumflex=710;e.circumflexbelowcmb=813;e.circumflexcmb=770;e.clear=8999;e.clickalveolar=450;e.clickdental=448;e.clicklateral=449;e.clickretroflex=451;e.club=9827;e.clubsuitblack=9827;e.clubsuitwhite=9831;e.cmcubedsquare=13220;e.cmonospace=65347;e.cmsquaredsquare=13216;e.coarmenian=1409;e.colon=58;e.colonmonetary=8353;e.colonmonospace=65306;e.colonsign=8353;e.colonsmall=65109;e.colontriangularhalfmod=721;e.colontriangularmod=720;e.comma=44;e.commaabovecmb=787;e.commaaboverightcmb=789;e.commaaccent=63171;e.commaarabic=1548;e.commaarmenian=1373;e.commainferior=63201;e.commamonospace=65292;e.commareversedabovecmb=788;e.commareversedmod=701;e.commasmall=65104;e.commasuperior=63202;e.commaturnedabovecmb=786;e.commaturnedmod=699;e.compass=9788;e.congruent=8773;e.contourintegral=8750;e.control=8963;e.controlACK=6;e.controlBEL=7;e.controlBS=8;e.controlCAN=24;e.controlCR=13;e.controlDC1=17;e.controlDC2=18;e.controlDC3=19;e.controlDC4=20;e.controlDEL=127;e.controlDLE=16;e.controlEM=25;e.controlENQ=5;e.controlEOT=4;e.controlESC=27;e.controlETB=23;e.controlETX=3;e.controlFF=12;e.controlFS=28;e.controlGS=29;e.controlHT=9;e.controlLF=10;e.controlNAK=21;e.controlNULL=0;e.controlRS=30;e.controlSI=15;e.controlSO=14;e.controlSOT=2;e.controlSTX=1;e.controlSUB=26;e.controlSYN=22;e.controlUS=31;e.controlVT=11;e.copyright=169;e.copyrightsans=63721;e.copyrightserif=63193;e.cornerbracketleft=12300;e.cornerbracketlefthalfwidth=65378;e.cornerbracketleftvertical=65089;e.cornerbracketright=12301;e.cornerbracketrighthalfwidth=65379;e.cornerbracketrightvertical=65090;e.corporationsquare=13183;e.cosquare=13255;e.coverkgsquare=13254;e.cparen=9374;e.cruzeiro=8354;e.cstretched=663;e.curlyand=8911;e.curlyor=8910;e.currency=164;e.cyrBreve=63185;e.cyrFlex=63186;e.cyrbreve=63188;e.cyrflex=63189;e.d=100;e.daarmenian=1380;e.dabengali=2470;e.dadarabic=1590;e.dadeva=2342;e.dadfinalarabic=65214;e.dadinitialarabic=65215;e.dadmedialarabic=65216;e.dagesh=1468;e.dageshhebrew=1468;e.dagger=8224;e.daggerdbl=8225;e.dagujarati=2726;e.dagurmukhi=2598;e.dahiragana=12384;e.dakatakana=12480;e.dalarabic=1583;e.dalet=1491;e.daletdagesh=64307;e.daletdageshhebrew=64307;e.dalethebrew=1491;e.dalfinalarabic=65194;e.dammaarabic=1615;e.dammalowarabic=1615;e.dammatanaltonearabic=1612;e.dammatanarabic=1612;e.danda=2404;e.dargahebrew=1447;e.dargalefthebrew=1447;e.dasiapneumatacyrilliccmb=1157;e.dblGrave=63187;e.dblanglebracketleft=12298;e.dblanglebracketleftvertical=65085;e.dblanglebracketright=12299;e.dblanglebracketrightvertical=65086;e.dblarchinvertedbelowcmb=811;e.dblarrowleft=8660;e.dblarrowright=8658;e.dbldanda=2405;e.dblgrave=63190;e.dblgravecmb=783;e.dblintegral=8748;e.dbllowline=8215;e.dbllowlinecmb=819;e.dbloverlinecmb=831;e.dblprimemod=698;e.dblverticalbar=8214;e.dblverticallineabovecmb=782;e.dbopomofo=12553;e.dbsquare=13256;e.dcaron=271;e.dcedilla=7697;e.dcircle=9427;e.dcircumflexbelow=7699;e.dcroat=273;e.ddabengali=2465;e.ddadeva=2337;e.ddagujarati=2721;e.ddagurmukhi=2593;e.ddalarabic=1672;e.ddalfinalarabic=64393;e.dddhadeva=2396;e.ddhabengali=2466;e.ddhadeva=2338;e.ddhagujarati=2722;e.ddhagurmukhi=2594;e.ddotaccent=7691;e.ddotbelow=7693;e.decimalseparatorarabic=1643;e.decimalseparatorpersian=1643;e.decyrillic=1076;e.degree=176;e.dehihebrew=1453;e.dehiragana=12391;e.deicoptic=1007;e.dekatakana=12487;e.deleteleft=9003;e.deleteright=8998;e.delta=948;e.deltaturned=397;e.denominatorminusonenumeratorbengali=2552;e.dezh=676;e.dhabengali=2471;e.dhadeva=2343;e.dhagujarati=2727;e.dhagurmukhi=2599;e.dhook=599;e.dialytikatonos=901;e.dialytikatonoscmb=836;e.diamond=9830;e.diamondsuitwhite=9826;e.dieresis=168;e.dieresisacute=63191;e.dieresisbelowcmb=804;e.dieresiscmb=776;e.dieresisgrave=63192;e.dieresistonos=901;e.dihiragana=12386;e.dikatakana=12482;e.dittomark=12291;e.divide=247;e.divides=8739;e.divisionslash=8725;e.djecyrillic=1106;e.dkshade=9619;e.dlinebelow=7695;e.dlsquare=13207;e.dmacron=273;e.dmonospace=65348;e.dnblock=9604;e.dochadathai=3598;e.dodekthai=3604;e.dohiragana=12393;e.dokatakana=12489;e.dollar=36;e.dollarinferior=63203;e.dollarmonospace=65284;e.dollaroldstyle=63268;e.dollarsmall=65129;e.dollarsuperior=63204;e.dong=8363;e.dorusquare=13094;e.dotaccent=729;e.dotaccentcmb=775;e.dotbelowcmb=803;e.dotbelowcomb=803;e.dotkatakana=12539;e.dotlessi=305;e.dotlessj=63166;e.dotlessjstrokehook=644;e.dotmath=8901;e.dottedcircle=9676;e.doubleyodpatah=64287;e.doubleyodpatahhebrew=64287;e.downtackbelowcmb=798;e.downtackmod=725;e.dparen=9375;e.dsuperior=63211;e.dtail=598;e.dtopbar=396;e.duhiragana=12389;e.dukatakana=12485;e.dz=499;e.dzaltone=675;e.dzcaron=454;e.dzcurl=677;e.dzeabkhasiancyrillic=1249;e.dzecyrillic=1109;e.dzhecyrillic=1119;e.e=101;e.eacute=233;e.earth=9793;e.ebengali=2447;e.ebopomofo=12572;e.ebreve=277;e.ecandradeva=2317;e.ecandragujarati=2701;e.ecandravowelsigndeva=2373;e.ecandravowelsigngujarati=2757;e.ecaron=283;e.ecedillabreve=7709;e.echarmenian=1381;e.echyiwnarmenian=1415;e.ecircle=9428;e.ecircumflex=234;e.ecircumflexacute=7871;e.ecircumflexbelow=7705;e.ecircumflexdotbelow=7879;e.ecircumflexgrave=7873;e.ecircumflexhookabove=7875;e.ecircumflextilde=7877;e.ecyrillic=1108;e.edblgrave=517;e.edeva=2319;e.edieresis=235;e.edot=279;e.edotaccent=279;e.edotbelow=7865;e.eegurmukhi=2575;e.eematragurmukhi=2631;e.efcyrillic=1092;e.egrave=232;e.egujarati=2703;e.eharmenian=1383;e.ehbopomofo=12573;e.ehiragana=12360;e.ehookabove=7867;e.eibopomofo=12575;e.eight=56;e.eightarabic=1640;e.eightbengali=2542;e.eightcircle=9319;e.eightcircleinversesansserif=10129;e.eightdeva=2414;e.eighteencircle=9329;e.eighteenparen=9349;e.eighteenperiod=9369;e.eightgujarati=2798;e.eightgurmukhi=2670;e.eighthackarabic=1640;e.eighthangzhou=12328;e.eighthnotebeamed=9835;e.eightideographicparen=12839;e.eightinferior=8328;e.eightmonospace=65304;e.eightoldstyle=63288;e.eightparen=9339;e.eightperiod=9359;e.eightpersian=1784;e.eightroman=8567;e.eightsuperior=8312;e.eightthai=3672;e.einvertedbreve=519;e.eiotifiedcyrillic=1125;e.ekatakana=12456;e.ekatakanahalfwidth=65396;e.ekonkargurmukhi=2676;e.ekorean=12628;e.elcyrillic=1083;e.element=8712;e.elevencircle=9322;e.elevenparen=9342;e.elevenperiod=9362;e.elevenroman=8570;e.ellipsis=8230;e.ellipsisvertical=8942;e.emacron=275;e.emacronacute=7703;e.emacrongrave=7701;e.emcyrillic=1084;e.emdash=8212;e.emdashvertical=65073;e.emonospace=65349;e.emphasismarkarmenian=1371;e.emptyset=8709;e.enbopomofo=12579;e.encyrillic=1085;e.endash=8211;e.endashvertical=65074;e.endescendercyrillic=1187;e.eng=331;e.engbopomofo=12581;e.enghecyrillic=1189;e.enhookcyrillic=1224;e.enspace=8194;e.eogonek=281;e.eokorean=12627;e.eopen=603;e.eopenclosed=666;e.eopenreversed=604;e.eopenreversedclosed=606;e.eopenreversedhook=605;e.eparen=9376;e.epsilon=949;e.epsilontonos=941;e.equal=61;e.equalmonospace=65309;e.equalsmall=65126;e.equalsuperior=8316;e.equivalence=8801;e.erbopomofo=12582;e.ercyrillic=1088;e.ereversed=600;e.ereversedcyrillic=1101;e.escyrillic=1089;e.esdescendercyrillic=1195;e.esh=643;e.eshcurl=646;e.eshortdeva=2318;e.eshortvowelsigndeva=2374;e.eshreversedloop=426;e.eshsquatreversed=645;e.esmallhiragana=12359;e.esmallkatakana=12455;e.esmallkatakanahalfwidth=65386;e.estimated=8494;e.esuperior=63212;e.eta=951;e.etarmenian=1384;e.etatonos=942;e.eth=240;e.etilde=7869;e.etildebelow=7707;e.etnahtafoukhhebrew=1425;e.etnahtafoukhlefthebrew=1425;e.etnahtahebrew=1425;e.etnahtalefthebrew=1425;e.eturned=477;e.eukorean=12641;e.euro=8364;e.evowelsignbengali=2503;e.evowelsigndeva=2375;e.evowelsigngujarati=2759;e.exclam=33;e.exclamarmenian=1372;e.exclamdbl=8252;e.exclamdown=161;e.exclamdownsmall=63393;e.exclammonospace=65281;e.exclamsmall=63265;e.existential=8707;e.ezh=658;e.ezhcaron=495;e.ezhcurl=659;e.ezhreversed=441;e.ezhtail=442;e.f=102;e.fadeva=2398;e.fagurmukhi=2654;e.fahrenheit=8457;e.fathaarabic=1614;e.fathalowarabic=1614;e.fathatanarabic=1611;e.fbopomofo=12552;e.fcircle=9429;e.fdotaccent=7711;e.feharabic=1601;e.feharmenian=1414;e.fehfinalarabic=65234;e.fehinitialarabic=65235;e.fehmedialarabic=65236;e.feicoptic=997;e.female=9792;e.ff=64256;e.f_f=64256;e.ffi=64259;e.f_f_i=64259;e.ffl=64260;e.f_f_l=64260;e.fi=64257;e.f_i=64257;e.fifteencircle=9326;e.fifteenparen=9346;e.fifteenperiod=9366;e.figuredash=8210;e.filledbox=9632;e.filledrect=9644;e.finalkaf=1498;e.finalkafdagesh=64314;e.finalkafdageshhebrew=64314;e.finalkafhebrew=1498;e.finalmem=1501;e.finalmemhebrew=1501;e.finalnun=1503;e.finalnunhebrew=1503;e.finalpe=1507;e.finalpehebrew=1507;e.finaltsadi=1509;e.finaltsadihebrew=1509;e.firsttonechinese=713;e.fisheye=9673;e.fitacyrillic=1139;e.five=53;e.fivearabic=1637;e.fivebengali=2539;e.fivecircle=9316;e.fivecircleinversesansserif=10126;e.fivedeva=2411;e.fiveeighths=8541;e.fivegujarati=2795;e.fivegurmukhi=2667;e.fivehackarabic=1637;e.fivehangzhou=12325;e.fiveideographicparen=12836;e.fiveinferior=8325;e.fivemonospace=65301;e.fiveoldstyle=63285;e.fiveparen=9336;e.fiveperiod=9356;e.fivepersian=1781;e.fiveroman=8564;e.fivesuperior=8309;e.fivethai=3669;e.fl=64258;e.f_l=64258;e.florin=402;e.fmonospace=65350;e.fmsquare=13209;e.fofanthai=3615;e.fofathai=3613;e.fongmanthai=3663;e.forall=8704;e.four=52;e.fourarabic=1636;e.fourbengali=2538;e.fourcircle=9315;e.fourcircleinversesansserif=10125;e.fourdeva=2410;e.fourgujarati=2794;e.fourgurmukhi=2666;e.fourhackarabic=1636;e.fourhangzhou=12324;e.fourideographicparen=12835;e.fourinferior=8324;e.fourmonospace=65300;e.fournumeratorbengali=2551;e.fouroldstyle=63284;e.fourparen=9335;e.fourperiod=9355;e.fourpersian=1780;e.fourroman=8563;e.foursuperior=8308;e.fourteencircle=9325;e.fourteenparen=9345;e.fourteenperiod=9365;e.fourthai=3668;e.fourthtonechinese=715;e.fparen=9377;e.fraction=8260;e.franc=8355;e.g=103;e.gabengali=2455;e.gacute=501;e.gadeva=2327;e.gafarabic=1711;e.gaffinalarabic=64403;e.gafinitialarabic=64404;e.gafmedialarabic=64405;e.gagujarati=2711;e.gagurmukhi=2583;e.gahiragana=12364;e.gakatakana=12460;e.gamma=947;e.gammalatinsmall=611;e.gammasuperior=736;e.gangiacoptic=1003;e.gbopomofo=12557;e.gbreve=287;e.gcaron=487;e.gcedilla=291;e.gcircle=9430;e.gcircumflex=285;e.gcommaaccent=291;e.gdot=289;e.gdotaccent=289;e.gecyrillic=1075;e.gehiragana=12370;e.gekatakana=12466;e.geometricallyequal=8785;e.gereshaccenthebrew=1436;e.gereshhebrew=1523;e.gereshmuqdamhebrew=1437;e.germandbls=223;e.gershayimaccenthebrew=1438;e.gershayimhebrew=1524;e.getamark=12307;e.ghabengali=2456;e.ghadarmenian=1394;e.ghadeva=2328;e.ghagujarati=2712;e.ghagurmukhi=2584;e.ghainarabic=1594;e.ghainfinalarabic=65230;e.ghaininitialarabic=65231;e.ghainmedialarabic=65232;e.ghemiddlehookcyrillic=1173;e.ghestrokecyrillic=1171;e.gheupturncyrillic=1169;e.ghhadeva=2394;e.ghhagurmukhi=2650;e.ghook=608;e.ghzsquare=13203;e.gihiragana=12366;e.gikatakana=12462;e.gimarmenian=1379;e.gimel=1490;e.gimeldagesh=64306;e.gimeldageshhebrew=64306;e.gimelhebrew=1490;e.gjecyrillic=1107;e.glottalinvertedstroke=446;e.glottalstop=660;e.glottalstopinverted=662;e.glottalstopmod=704;e.glottalstopreversed=661;e.glottalstopreversedmod=705;e.glottalstopreversedsuperior=740;e.glottalstopstroke=673;e.glottalstopstrokereversed=674;e.gmacron=7713;e.gmonospace=65351;e.gohiragana=12372;e.gokatakana=12468;e.gparen=9378;e.gpasquare=13228;e.gradient=8711;e.grave=96;e.gravebelowcmb=790;e.gravecmb=768;e.gravecomb=768;e.gravedeva=2387;e.gravelowmod=718;e.gravemonospace=65344;e.gravetonecmb=832;e.greater=62;e.greaterequal=8805;e.greaterequalorless=8923;e.greatermonospace=65310;e.greaterorequivalent=8819;e.greaterorless=8823;e.greateroverequal=8807;e.greatersmall=65125;e.gscript=609;e.gstroke=485;e.guhiragana=12368;e.guillemotleft=171;e.guillemotright=187;e.guilsinglleft=8249;e.guilsinglright=8250;e.gukatakana=12464;e.guramusquare=13080;e.gysquare=13257;e.h=104;e.haabkhasiancyrillic=1193;e.haaltonearabic=1729;e.habengali=2489;e.hadescendercyrillic=1203;e.hadeva=2361;e.hagujarati=2745;e.hagurmukhi=2617;e.haharabic=1581;e.hahfinalarabic=65186;e.hahinitialarabic=65187;e.hahiragana=12399;e.hahmedialarabic=65188;e.haitusquare=13098;e.hakatakana=12495;e.hakatakanahalfwidth=65418;e.halantgurmukhi=2637;e.hamzaarabic=1569;e.hamzalowarabic=1569;e.hangulfiller=12644;e.hardsigncyrillic=1098;e.harpoonleftbarbup=8636;e.harpoonrightbarbup=8640;e.hasquare=13258;e.hatafpatah=1458;e.hatafpatah16=1458;e.hatafpatah23=1458;e.hatafpatah2f=1458;e.hatafpatahhebrew=1458;e.hatafpatahnarrowhebrew=1458;e.hatafpatahquarterhebrew=1458;e.hatafpatahwidehebrew=1458;e.hatafqamats=1459;e.hatafqamats1b=1459;e.hatafqamats28=1459;e.hatafqamats34=1459;e.hatafqamatshebrew=1459;e.hatafqamatsnarrowhebrew=1459;e.hatafqamatsquarterhebrew=1459;e.hatafqamatswidehebrew=1459;e.hatafsegol=1457;e.hatafsegol17=1457;e.hatafsegol24=1457;e.hatafsegol30=1457;e.hatafsegolhebrew=1457;e.hatafsegolnarrowhebrew=1457;e.hatafsegolquarterhebrew=1457;e.hatafsegolwidehebrew=1457;e.hbar=295;e.hbopomofo=12559;e.hbrevebelow=7723;e.hcedilla=7721;e.hcircle=9431;e.hcircumflex=293;e.hdieresis=7719;e.hdotaccent=7715;e.hdotbelow=7717;e.he=1492;e.heart=9829;e.heartsuitblack=9829;e.heartsuitwhite=9825;e.hedagesh=64308;e.hedageshhebrew=64308;e.hehaltonearabic=1729;e.heharabic=1607;e.hehebrew=1492;e.hehfinalaltonearabic=64423;e.hehfinalalttwoarabic=65258;e.hehfinalarabic=65258;e.hehhamzaabovefinalarabic=64421;e.hehhamzaaboveisolatedarabic=64420;e.hehinitialaltonearabic=64424;e.hehinitialarabic=65259;e.hehiragana=12408;e.hehmedialaltonearabic=64425;e.hehmedialarabic=65260;e.heiseierasquare=13179;e.hekatakana=12504;e.hekatakanahalfwidth=65421;e.hekutaarusquare=13110;e.henghook=615;e.herutusquare=13113;e.het=1495;e.hethebrew=1495;e.hhook=614;e.hhooksuperior=689;e.hieuhacirclekorean=12923;e.hieuhaparenkorean=12827;e.hieuhcirclekorean=12909;e.hieuhkorean=12622;e.hieuhparenkorean=12813;e.hihiragana=12402;e.hikatakana=12498;e.hikatakanahalfwidth=65419;e.hiriq=1460;e.hiriq14=1460;e.hiriq21=1460;e.hiriq2d=1460;e.hiriqhebrew=1460;e.hiriqnarrowhebrew=1460;e.hiriqquarterhebrew=1460;e.hiriqwidehebrew=1460;e.hlinebelow=7830;e.hmonospace=65352;e.hoarmenian=1392;e.hohipthai=3627;e.hohiragana=12411;e.hokatakana=12507;e.hokatakanahalfwidth=65422;e.holam=1465;e.holam19=1465;e.holam26=1465;e.holam32=1465;e.holamhebrew=1465;e.holamnarrowhebrew=1465;e.holamquarterhebrew=1465;e.holamwidehebrew=1465;e.honokhukthai=3630;e.hookabovecomb=777;e.hookcmb=777;e.hookpalatalizedbelowcmb=801;e.hookretroflexbelowcmb=802;e.hoonsquare=13122;e.horicoptic=1001;e.horizontalbar=8213;e.horncmb=795;e.hotsprings=9832;e.house=8962;e.hparen=9379;e.hsuperior=688;e.hturned=613;e.huhiragana=12405;e.huiitosquare=13107;e.hukatakana=12501;e.hukatakanahalfwidth=65420;e.hungarumlaut=733;e.hungarumlautcmb=779;e.hv=405;e.hyphen=45;e.hypheninferior=63205;e.hyphenmonospace=65293;e.hyphensmall=65123;e.hyphensuperior=63206;e.hyphentwo=8208;e.i=105;e.iacute=237;e.iacyrillic=1103;e.ibengali=2439;e.ibopomofo=12583;e.ibreve=301;e.icaron=464;e.icircle=9432;e.icircumflex=238;e.icyrillic=1110;e.idblgrave=521;e.ideographearthcircle=12943;e.ideographfirecircle=12939;e.ideographicallianceparen=12863;e.ideographiccallparen=12858;e.ideographiccentrecircle=12965;e.ideographicclose=12294;e.ideographiccomma=12289;e.ideographiccommaleft=65380;e.ideographiccongratulationparen=12855;e.ideographiccorrectcircle=12963;e.ideographicearthparen=12847;e.ideographicenterpriseparen=12861;e.ideographicexcellentcircle=12957;e.ideographicfestivalparen=12864;e.ideographicfinancialcircle=12950;e.ideographicfinancialparen=12854;e.ideographicfireparen=12843;e.ideographichaveparen=12850;e.ideographichighcircle=12964;e.ideographiciterationmark=12293;e.ideographiclaborcircle=12952;e.ideographiclaborparen=12856;e.ideographicleftcircle=12967;e.ideographiclowcircle=12966;e.ideographicmedicinecircle=12969;e.ideographicmetalparen=12846;e.ideographicmoonparen=12842;e.ideographicnameparen=12852;e.ideographicperiod=12290;e.ideographicprintcircle=12958;e.ideographicreachparen=12867;e.ideographicrepresentparen=12857;e.ideographicresourceparen=12862;e.ideographicrightcircle=12968;e.ideographicsecretcircle=12953;e.ideographicselfparen=12866;e.ideographicsocietyparen=12851;e.ideographicspace=12288;e.ideographicspecialparen=12853;e.ideographicstockparen=12849;e.ideographicstudyparen=12859;e.ideographicsunparen=12848;e.ideographicsuperviseparen=12860;e.ideographicwaterparen=12844;e.ideographicwoodparen=12845;e.ideographiczero=12295;e.ideographmetalcircle=12942;e.ideographmooncircle=12938;e.ideographnamecircle=12948;e.ideographsuncircle=12944;e.ideographwatercircle=12940;e.ideographwoodcircle=12941;e.ideva=2311;e.idieresis=239;e.idieresisacute=7727;e.idieresiscyrillic=1253;e.idotbelow=7883;e.iebrevecyrillic=1239;e.iecyrillic=1077;e.ieungacirclekorean=12917;e.ieungaparenkorean=12821;e.ieungcirclekorean=12903;e.ieungkorean=12615;e.ieungparenkorean=12807;e.igrave=236;e.igujarati=2695;e.igurmukhi=2567;e.ihiragana=12356;e.ihookabove=7881;e.iibengali=2440;e.iicyrillic=1080;e.iideva=2312;e.iigujarati=2696;e.iigurmukhi=2568;e.iimatragurmukhi=2624;e.iinvertedbreve=523;e.iishortcyrillic=1081;e.iivowelsignbengali=2496;e.iivowelsigndeva=2368;e.iivowelsigngujarati=2752;e.ij=307;e.ikatakana=12452;e.ikatakanahalfwidth=65394;e.ikorean=12643;e.ilde=732;e.iluyhebrew=1452;e.imacron=299;e.imacroncyrillic=1251;e.imageorapproximatelyequal=8787;e.imatragurmukhi=2623;e.imonospace=65353;e.increment=8710;e.infinity=8734;e.iniarmenian=1387;e.integral=8747;e.integralbottom=8993;e.integralbt=8993;e.integralex=63733;e.integraltop=8992;e.integraltp=8992;e.intersection=8745;e.intisquare=13061;e.invbullet=9688;e.invcircle=9689;e.invsmileface=9787;e.iocyrillic=1105;e.iogonek=303;e.iota=953;e.iotadieresis=970;e.iotadieresistonos=912;e.iotalatin=617;e.iotatonos=943;e.iparen=9380;e.irigurmukhi=2674;e.ismallhiragana=12355;e.ismallkatakana=12451;e.ismallkatakanahalfwidth=65384;e.issharbengali=2554;e.istroke=616;e.isuperior=63213;e.iterationhiragana=12445;e.iterationkatakana=12541;e.itilde=297;e.itildebelow=7725;e.iubopomofo=12585;e.iucyrillic=1102;e.ivowelsignbengali=2495;e.ivowelsigndeva=2367;e.ivowelsigngujarati=2751;e.izhitsacyrillic=1141;e.izhitsadblgravecyrillic=1143;e.j=106;e.jaarmenian=1393;e.jabengali=2460;e.jadeva=2332;e.jagujarati=2716;e.jagurmukhi=2588;e.jbopomofo=12560;e.jcaron=496;e.jcircle=9433;e.jcircumflex=309;e.jcrossedtail=669;e.jdotlessstroke=607;e.jecyrillic=1112;e.jeemarabic=1580;e.jeemfinalarabic=65182;e.jeeminitialarabic=65183;e.jeemmedialarabic=65184;e.jeharabic=1688;e.jehfinalarabic=64395;e.jhabengali=2461;e.jhadeva=2333;e.jhagujarati=2717;e.jhagurmukhi=2589;e.jheharmenian=1403;e.jis=12292;e.jmonospace=65354;e.jparen=9381;e.jsuperior=690;e.k=107;e.kabashkircyrillic=1185;e.kabengali=2453;e.kacute=7729;e.kacyrillic=1082;e.kadescendercyrillic=1179;e.kadeva=2325;e.kaf=1499;e.kafarabic=1603;e.kafdagesh=64315;e.kafdageshhebrew=64315;e.kaffinalarabic=65242;e.kafhebrew=1499;e.kafinitialarabic=65243;e.kafmedialarabic=65244;e.kafrafehebrew=64333;e.kagujarati=2709;e.kagurmukhi=2581;e.kahiragana=12363;e.kahookcyrillic=1220;e.kakatakana=12459;e.kakatakanahalfwidth=65398;e.kappa=954;e.kappasymbolgreek=1008;e.kapyeounmieumkorean=12657;e.kapyeounphieuphkorean=12676;e.kapyeounpieupkorean=12664;e.kapyeounssangpieupkorean=12665;e.karoriisquare=13069;e.kashidaautoarabic=1600;e.kashidaautonosidebearingarabic=1600;e.kasmallkatakana=12533;e.kasquare=13188;e.kasraarabic=1616;e.kasratanarabic=1613;e.kastrokecyrillic=1183;e.katahiraprolongmarkhalfwidth=65392;e.kaverticalstrokecyrillic=1181;e.kbopomofo=12558;e.kcalsquare=13193;e.kcaron=489;e.kcedilla=311;e.kcircle=9434;e.kcommaaccent=311;e.kdotbelow=7731;e.keharmenian=1412;e.kehiragana=12369;e.kekatakana=12465;e.kekatakanahalfwidth=65401;e.kenarmenian=1391;e.kesmallkatakana=12534;e.kgreenlandic=312;e.khabengali=2454;e.khacyrillic=1093;e.khadeva=2326;e.khagujarati=2710;e.khagurmukhi=2582;e.khaharabic=1582;e.khahfinalarabic=65190;e.khahinitialarabic=65191;e.khahmedialarabic=65192;e.kheicoptic=999;e.khhadeva=2393;e.khhagurmukhi=2649;e.khieukhacirclekorean=12920;e.khieukhaparenkorean=12824;e.khieukhcirclekorean=12906;e.khieukhkorean=12619;e.khieukhparenkorean=12810;e.khokhaithai=3586;e.khokhonthai=3589;e.khokhuatthai=3587;e.khokhwaithai=3588;e.khomutthai=3675;e.khook=409;e.khorakhangthai=3590;e.khzsquare=13201;e.kihiragana=12365;e.kikatakana=12461;e.kikatakanahalfwidth=65399;e.kiroguramusquare=13077;e.kiromeetorusquare=13078;e.kirosquare=13076;e.kiyeokacirclekorean=12910;e.kiyeokaparenkorean=12814;e.kiyeokcirclekorean=12896;e.kiyeokkorean=12593;e.kiyeokparenkorean=12800;e.kiyeoksioskorean=12595;e.kjecyrillic=1116;e.klinebelow=7733;e.klsquare=13208;e.kmcubedsquare=13222;e.kmonospace=65355;e.kmsquaredsquare=13218;e.kohiragana=12371;e.kohmsquare=13248;e.kokaithai=3585;e.kokatakana=12467;e.kokatakanahalfwidth=65402;e.kooposquare=13086;e.koppacyrillic=1153;e.koreanstandardsymbol=12927;e.koroniscmb=835;e.kparen=9382;e.kpasquare=13226;e.ksicyrillic=1135;e.ktsquare=13263;e.kturned=670;e.kuhiragana=12367;e.kukatakana=12463;e.kukatakanahalfwidth=65400;e.kvsquare=13240;e.kwsquare=13246;e.l=108;e.labengali=2482;e.lacute=314;e.ladeva=2354;e.lagujarati=2738;e.lagurmukhi=2610;e.lakkhangyaothai=3653;e.lamaleffinalarabic=65276;e.lamalefhamzaabovefinalarabic=65272;e.lamalefhamzaaboveisolatedarabic=65271;e.lamalefhamzabelowfinalarabic=65274;e.lamalefhamzabelowisolatedarabic=65273;e.lamalefisolatedarabic=65275;e.lamalefmaddaabovefinalarabic=65270;e.lamalefmaddaaboveisolatedarabic=65269;e.lamarabic=1604;e.lambda=955;e.lambdastroke=411;e.lamed=1500;e.lameddagesh=64316;e.lameddageshhebrew=64316;e.lamedhebrew=1500;e.lamfinalarabic=65246;e.lamhahinitialarabic=64714;e.laminitialarabic=65247;e.lamjeeminitialarabic=64713;e.lamkhahinitialarabic=64715;e.lamlamhehisolatedarabic=65010;e.lammedialarabic=65248;e.lammeemhahinitialarabic=64904;e.lammeeminitialarabic=64716;e.largecircle=9711;e.lbar=410;e.lbelt=620;e.lbopomofo=12556;e.lcaron=318;e.lcedilla=316;e.lcircle=9435;e.lcircumflexbelow=7741;e.lcommaaccent=316;e.ldot=320;e.ldotaccent=320;e.ldotbelow=7735;e.ldotbelowmacron=7737;e.leftangleabovecmb=794;e.lefttackbelowcmb=792;e.less=60;e.lessequal=8804;e.lessequalorgreater=8922;e.lessmonospace=65308;e.lessorequivalent=8818;e.lessorgreater=8822;e.lessoverequal=8806;e.lesssmall=65124;e.lezh=622;e.lfblock=9612;e.lhookretroflex=621;e.lira=8356;e.liwnarmenian=1388;e.lj=457;e.ljecyrillic=1113;e.ll=63168;e.lladeva=2355;e.llagujarati=2739;e.llinebelow=7739;e.llladeva=2356;e.llvocalicbengali=2529;e.llvocalicdeva=2401;e.llvocalicvowelsignbengali=2531;e.llvocalicvowelsigndeva=2403;e.lmiddletilde=619;e.lmonospace=65356;e.lmsquare=13264;e.lochulathai=3628;e.logicaland=8743;e.logicalnot=172;e.logicalnotreversed=8976;e.logicalor=8744;e.lolingthai=3621;e.longs=383;e.lowlinecenterline=65102;e.lowlinecmb=818;e.lowlinedashed=65101;e.lozenge=9674;e.lparen=9383;e.lslash=322;e.lsquare=8467;e.lsuperior=63214;e.ltshade=9617;e.luthai=3622;e.lvocalicbengali=2444;e.lvocalicdeva=2316;e.lvocalicvowelsignbengali=2530;e.lvocalicvowelsigndeva=2402;e.lxsquare=13267;e.m=109;e.mabengali=2478;e.macron=175;e.macronbelowcmb=817;e.macroncmb=772;e.macronlowmod=717;e.macronmonospace=65507;e.macute=7743;e.madeva=2350;e.magujarati=2734;e.magurmukhi=2606;e.mahapakhhebrew=1444;e.mahapakhlefthebrew=1444;e.mahiragana=12414;e.maichattawalowleftthai=63637;e.maichattawalowrightthai=63636;e.maichattawathai=3659;e.maichattawaupperleftthai=63635;e.maieklowleftthai=63628;e.maieklowrightthai=63627;e.maiekthai=3656;e.maiekupperleftthai=63626;e.maihanakatleftthai=63620;e.maihanakatthai=3633;e.maitaikhuleftthai=63625;e.maitaikhuthai=3655;e.maitholowleftthai=63631;e.maitholowrightthai=63630;e.maithothai=3657;e.maithoupperleftthai=63629;e.maitrilowleftthai=63634;e.maitrilowrightthai=63633;e.maitrithai=3658;e.maitriupperleftthai=63632;e.maiyamokthai=3654;e.makatakana=12510;e.makatakanahalfwidth=65423;e.male=9794;e.mansyonsquare=13127;e.maqafhebrew=1470;e.mars=9794;e.masoracirclehebrew=1455;e.masquare=13187;e.mbopomofo=12551;e.mbsquare=13268;e.mcircle=9436;e.mcubedsquare=13221;e.mdotaccent=7745;e.mdotbelow=7747;e.meemarabic=1605;e.meemfinalarabic=65250;e.meeminitialarabic=65251;e.meemmedialarabic=65252;e.meemmeeminitialarabic=64721;e.meemmeemisolatedarabic=64584;e.meetorusquare=13133;e.mehiragana=12417;e.meizierasquare=13182;e.mekatakana=12513;e.mekatakanahalfwidth=65426;e.mem=1502;e.memdagesh=64318;e.memdageshhebrew=64318;e.memhebrew=1502;e.menarmenian=1396;e.merkhahebrew=1445;e.merkhakefulahebrew=1446;e.merkhakefulalefthebrew=1446;e.merkhalefthebrew=1445;e.mhook=625;e.mhzsquare=13202;e.middledotkatakanahalfwidth=65381;e.middot=183;e.mieumacirclekorean=12914;e.mieumaparenkorean=12818;e.mieumcirclekorean=12900;e.mieumkorean=12609;e.mieumpansioskorean=12656;e.mieumparenkorean=12804;e.mieumpieupkorean=12654;e.mieumsioskorean=12655;e.mihiragana=12415;e.mikatakana=12511;e.mikatakanahalfwidth=65424;e.minus=8722;e.minusbelowcmb=800;e.minuscircle=8854;e.minusmod=727;e.minusplus=8723;e.minute=8242;e.miribaarusquare=13130;e.mirisquare=13129;e.mlonglegturned=624;e.mlsquare=13206;e.mmcubedsquare=13219;e.mmonospace=65357;e.mmsquaredsquare=13215;e.mohiragana=12418;e.mohmsquare=13249;e.mokatakana=12514;e.mokatakanahalfwidth=65427;e.molsquare=13270;e.momathai=3617;e.moverssquare=13223;e.moverssquaredsquare=13224;e.mparen=9384;e.mpasquare=13227;e.mssquare=13235;e.msuperior=63215;e.mturned=623;e.mu=181;e.mu1=181;e.muasquare=13186;e.muchgreater=8811;e.muchless=8810;e.mufsquare=13196;e.mugreek=956;e.mugsquare=13197;e.muhiragana=12416;e.mukatakana=12512;e.mukatakanahalfwidth=65425;e.mulsquare=13205;e.multiply=215;e.mumsquare=13211;e.munahhebrew=1443;e.munahlefthebrew=1443;e.musicalnote=9834;e.musicalnotedbl=9835;e.musicflatsign=9837;e.musicsharpsign=9839;e.mussquare=13234;e.muvsquare=13238;e.muwsquare=13244;e.mvmegasquare=13241;e.mvsquare=13239;e.mwmegasquare=13247;e.mwsquare=13245;e.n=110;e.nabengali=2472;e.nabla=8711;e.nacute=324;e.nadeva=2344;e.nagujarati=2728;e.nagurmukhi=2600;e.nahiragana=12394;e.nakatakana=12490;e.nakatakanahalfwidth=65413;e.napostrophe=329;e.nasquare=13185;e.nbopomofo=12555;e.nbspace=160;e.ncaron=328;e.ncedilla=326;e.ncircle=9437;e.ncircumflexbelow=7755;e.ncommaaccent=326;e.ndotaccent=7749;e.ndotbelow=7751;e.nehiragana=12397;e.nekatakana=12493;e.nekatakanahalfwidth=65416;e.newsheqelsign=8362;e.nfsquare=13195;e.ngabengali=2457;e.ngadeva=2329;e.ngagujarati=2713;e.ngagurmukhi=2585;e.ngonguthai=3591;e.nhiragana=12435;e.nhookleft=626;e.nhookretroflex=627;e.nieunacirclekorean=12911;e.nieunaparenkorean=12815;e.nieuncieuckorean=12597;e.nieuncirclekorean=12897;e.nieunhieuhkorean=12598;e.nieunkorean=12596;e.nieunpansioskorean=12648;e.nieunparenkorean=12801;e.nieunsioskorean=12647;e.nieuntikeutkorean=12646;e.nihiragana=12395;e.nikatakana=12491;e.nikatakanahalfwidth=65414;e.nikhahitleftthai=63641;e.nikhahitthai=3661;e.nine=57;e.ninearabic=1641;e.ninebengali=2543;e.ninecircle=9320;e.ninecircleinversesansserif=10130;e.ninedeva=2415;e.ninegujarati=2799;e.ninegurmukhi=2671;e.ninehackarabic=1641;e.ninehangzhou=12329;e.nineideographicparen=12840;e.nineinferior=8329;e.ninemonospace=65305;e.nineoldstyle=63289;e.nineparen=9340;e.nineperiod=9360;e.ninepersian=1785;e.nineroman=8568;e.ninesuperior=8313;e.nineteencircle=9330;e.nineteenparen=9350;e.nineteenperiod=9370;e.ninethai=3673;e.nj=460;e.njecyrillic=1114;e.nkatakana=12531;e.nkatakanahalfwidth=65437;e.nlegrightlong=414;e.nlinebelow=7753;e.nmonospace=65358;e.nmsquare=13210;e.nnabengali=2467;e.nnadeva=2339;e.nnagujarati=2723;e.nnagurmukhi=2595;e.nnnadeva=2345;e.nohiragana=12398;e.nokatakana=12494;e.nokatakanahalfwidth=65417;e.nonbreakingspace=160;e.nonenthai=3603;e.nonuthai=3609;e.noonarabic=1606;e.noonfinalarabic=65254;e.noonghunnaarabic=1722;e.noonghunnafinalarabic=64415;e.nooninitialarabic=65255;e.noonjeeminitialarabic=64722;e.noonjeemisolatedarabic=64587;e.noonmedialarabic=65256;e.noonmeeminitialarabic=64725;e.noonmeemisolatedarabic=64590;e.noonnoonfinalarabic=64653;e.notcontains=8716;e.notelement=8713;e.notelementof=8713;e.notequal=8800;e.notgreater=8815;e.notgreaternorequal=8817;e.notgreaternorless=8825;e.notidentical=8802;e.notless=8814;e.notlessnorequal=8816;e.notparallel=8742;e.notprecedes=8832;e.notsubset=8836;e.notsucceeds=8833;e.notsuperset=8837;e.nowarmenian=1398;e.nparen=9385;e.nssquare=13233;e.nsuperior=8319;e.ntilde=241;e.nu=957;e.nuhiragana=12396;e.nukatakana=12492;e.nukatakanahalfwidth=65415;e.nuktabengali=2492;e.nuktadeva=2364;e.nuktagujarati=2748;e.nuktagurmukhi=2620;e.numbersign=35;e.numbersignmonospace=65283;e.numbersignsmall=65119;e.numeralsigngreek=884;e.numeralsignlowergreek=885;e.numero=8470;e.nun=1504;e.nundagesh=64320;e.nundageshhebrew=64320;e.nunhebrew=1504;e.nvsquare=13237;e.nwsquare=13243;e.nyabengali=2462;e.nyadeva=2334;e.nyagujarati=2718;e.nyagurmukhi=2590;e.o=111;e.oacute=243;e.oangthai=3629;e.obarred=629;e.obarredcyrillic=1257;e.obarreddieresiscyrillic=1259;e.obengali=2451;e.obopomofo=12571;e.obreve=335;e.ocandradeva=2321;e.ocandragujarati=2705;e.ocandravowelsigndeva=2377;e.ocandravowelsigngujarati=2761;e.ocaron=466;e.ocircle=9438;e.ocircumflex=244;e.ocircumflexacute=7889;e.ocircumflexdotbelow=7897;e.ocircumflexgrave=7891;e.ocircumflexhookabove=7893;e.ocircumflextilde=7895;e.ocyrillic=1086;e.odblacute=337;e.odblgrave=525;e.odeva=2323;e.odieresis=246;e.odieresiscyrillic=1255;e.odotbelow=7885;e.oe=339;e.oekorean=12634;e.ogonek=731;e.ogonekcmb=808;e.ograve=242;e.ogujarati=2707;e.oharmenian=1413;e.ohiragana=12362;e.ohookabove=7887;e.ohorn=417;e.ohornacute=7899;e.ohorndotbelow=7907;e.ohorngrave=7901;e.ohornhookabove=7903;e.ohorntilde=7905;e.ohungarumlaut=337;e.oi=419;e.oinvertedbreve=527;e.okatakana=12458;e.okatakanahalfwidth=65397;e.okorean=12631;e.olehebrew=1451;e.omacron=333;e.omacronacute=7763;e.omacrongrave=7761;e.omdeva=2384;e.omega=969;e.omega1=982;e.omegacyrillic=1121;e.omegalatinclosed=631;e.omegaroundcyrillic=1147;e.omegatitlocyrillic=1149;e.omegatonos=974;e.omgujarati=2768;e.omicron=959;e.omicrontonos=972;e.omonospace=65359;e.one=49;e.onearabic=1633;e.onebengali=2535;e.onecircle=9312;e.onecircleinversesansserif=10122;e.onedeva=2407;e.onedotenleader=8228;e.oneeighth=8539;e.onefitted=63196;e.onegujarati=2791;e.onegurmukhi=2663;e.onehackarabic=1633;e.onehalf=189;e.onehangzhou=12321;e.oneideographicparen=12832;e.oneinferior=8321;e.onemonospace=65297;e.onenumeratorbengali=2548;e.oneoldstyle=63281;e.oneparen=9332;e.oneperiod=9352;e.onepersian=1777;e.onequarter=188;e.oneroman=8560;e.onesuperior=185;e.onethai=3665;e.onethird=8531;e.oogonek=491;e.oogonekmacron=493;e.oogurmukhi=2579;e.oomatragurmukhi=2635;e.oopen=596;e.oparen=9386;e.openbullet=9702;e.option=8997;e.ordfeminine=170;e.ordmasculine=186;e.orthogonal=8735;e.oshortdeva=2322;e.oshortvowelsigndeva=2378;e.oslash=248;e.oslashacute=511;e.osmallhiragana=12361;e.osmallkatakana=12457;e.osmallkatakanahalfwidth=65387;e.ostrokeacute=511;e.osuperior=63216;e.otcyrillic=1151;e.otilde=245;e.otildeacute=7757;e.otildedieresis=7759;e.oubopomofo=12577;e.overline=8254;e.overlinecenterline=65098;e.overlinecmb=773;e.overlinedashed=65097;e.overlinedblwavy=65100;e.overlinewavy=65099;e.overscore=175;e.ovowelsignbengali=2507;e.ovowelsigndeva=2379;e.ovowelsigngujarati=2763;e.p=112;e.paampssquare=13184;e.paasentosquare=13099;e.pabengali=2474;e.pacute=7765;e.padeva=2346;e.pagedown=8671;e.pageup=8670;e.pagujarati=2730;e.pagurmukhi=2602;e.pahiragana=12401;e.paiyannoithai=3631;e.pakatakana=12497;e.palatalizationcyrilliccmb=1156;e.palochkacyrillic=1216;e.pansioskorean=12671;e.paragraph=182;e.parallel=8741;e.parenleft=40;e.parenleftaltonearabic=64830;e.parenleftbt=63725;e.parenleftex=63724;e.parenleftinferior=8333;e.parenleftmonospace=65288;e.parenleftsmall=65113;e.parenleftsuperior=8317;e.parenlefttp=63723;e.parenleftvertical=65077;e.parenright=41;e.parenrightaltonearabic=64831;e.parenrightbt=63736;e.parenrightex=63735;e.parenrightinferior=8334;e.parenrightmonospace=65289;e.parenrightsmall=65114;e.parenrightsuperior=8318;e.parenrighttp=63734;e.parenrightvertical=65078;e.partialdiff=8706;e.paseqhebrew=1472;e.pashtahebrew=1433;e.pasquare=13225;e.patah=1463;e.patah11=1463;e.patah1d=1463;e.patah2a=1463;e.patahhebrew=1463;e.patahnarrowhebrew=1463;e.patahquarterhebrew=1463;e.patahwidehebrew=1463;e.pazerhebrew=1441;e.pbopomofo=12550;e.pcircle=9439;e.pdotaccent=7767;e.pe=1508;e.pecyrillic=1087;e.pedagesh=64324;e.pedageshhebrew=64324;e.peezisquare=13115;e.pefinaldageshhebrew=64323;e.peharabic=1662;e.peharmenian=1402;e.pehebrew=1508;e.pehfinalarabic=64343;e.pehinitialarabic=64344;e.pehiragana=12410;e.pehmedialarabic=64345;e.pekatakana=12506;e.pemiddlehookcyrillic=1191;e.perafehebrew=64334;e.percent=37;e.percentarabic=1642;e.percentmonospace=65285;e.percentsmall=65130;e.period=46;e.periodarmenian=1417;e.periodcentered=183;e.periodhalfwidth=65377;e.periodinferior=63207;e.periodmonospace=65294;e.periodsmall=65106;e.periodsuperior=63208;e.perispomenigreekcmb=834;e.perpendicular=8869;e.perthousand=8240;e.peseta=8359;e.pfsquare=13194;e.phabengali=2475;e.phadeva=2347;e.phagujarati=2731;e.phagurmukhi=2603;e.phi=966;e.phi1=981;e.phieuphacirclekorean=12922;e.phieuphaparenkorean=12826;e.phieuphcirclekorean=12908;e.phieuphkorean=12621;e.phieuphparenkorean=12812;e.philatin=632;e.phinthuthai=3642;e.phisymbolgreek=981;e.phook=421;e.phophanthai=3614;e.phophungthai=3612;e.phosamphaothai=3616;e.pi=960;e.pieupacirclekorean=12915;e.pieupaparenkorean=12819;e.pieupcieuckorean=12662;e.pieupcirclekorean=12901;e.pieupkiyeokkorean=12658;e.pieupkorean=12610;e.pieupparenkorean=12805;e.pieupsioskiyeokkorean=12660;e.pieupsioskorean=12612;e.pieupsiostikeutkorean=12661;e.pieupthieuthkorean=12663;e.pieuptikeutkorean=12659;e.pihiragana=12404;e.pikatakana=12500;e.pisymbolgreek=982;e.piwrarmenian=1411;e.planckover2pi=8463;e.planckover2pi1=8463;e.plus=43;e.plusbelowcmb=799;e.pluscircle=8853;e.plusminus=177;e.plusmod=726;e.plusmonospace=65291;e.plussmall=65122;e.plussuperior=8314;e.pmonospace=65360;e.pmsquare=13272;e.pohiragana=12413;e.pointingindexdownwhite=9759;e.pointingindexleftwhite=9756;e.pointingindexrightwhite=9758;e.pointingindexupwhite=9757;e.pokatakana=12509;e.poplathai=3611;e.postalmark=12306;e.postalmarkface=12320;e.pparen=9387;e.precedes=8826;e.prescription=8478;e.primemod=697;e.primereversed=8245;e.product=8719;e.projective=8965;e.prolongedkana=12540;e.propellor=8984;e.propersubset=8834;e.propersuperset=8835;e.proportion=8759;e.proportional=8733;e.psi=968;e.psicyrillic=1137;e.psilipneumatacyrilliccmb=1158;e.pssquare=13232;e.puhiragana=12407;e.pukatakana=12503;e.pvsquare=13236;e.pwsquare=13242;e.q=113;e.qadeva=2392;e.qadmahebrew=1448;e.qafarabic=1602;e.qaffinalarabic=65238;e.qafinitialarabic=65239;e.qafmedialarabic=65240;e.qamats=1464;e.qamats10=1464;e.qamats1a=1464;e.qamats1c=1464;e.qamats27=1464;e.qamats29=1464;e.qamats33=1464;e.qamatsde=1464;e.qamatshebrew=1464;e.qamatsnarrowhebrew=1464;e.qamatsqatanhebrew=1464;e.qamatsqatannarrowhebrew=1464;e.qamatsqatanquarterhebrew=1464;e.qamatsqatanwidehebrew=1464;e.qamatsquarterhebrew=1464;e.qamatswidehebrew=1464;e.qarneyparahebrew=1439;e.qbopomofo=12561;e.qcircle=9440;e.qhook=672;e.qmonospace=65361;e.qof=1511;e.qofdagesh=64327;e.qofdageshhebrew=64327;e.qofhebrew=1511;e.qparen=9388;e.quarternote=9833;e.qubuts=1467;e.qubuts18=1467;e.qubuts25=1467;e.qubuts31=1467;e.qubutshebrew=1467;e.qubutsnarrowhebrew=1467;e.qubutsquarterhebrew=1467;e.qubutswidehebrew=1467;e.question=63;e.questionarabic=1567;e.questionarmenian=1374;e.questiondown=191;e.questiondownsmall=63423;e.questiongreek=894;e.questionmonospace=65311;e.questionsmall=63295;e.quotedbl=34;e.quotedblbase=8222;e.quotedblleft=8220;e.quotedblmonospace=65282;e.quotedblprime=12318;e.quotedblprimereversed=12317;e.quotedblright=8221;e.quoteleft=8216;e.quoteleftreversed=8219;e.quotereversed=8219;e.quoteright=8217;e.quoterightn=329;e.quotesinglbase=8218;e.quotesingle=39;e.quotesinglemonospace=65287;e.r=114;e.raarmenian=1404;e.rabengali=2480;e.racute=341;e.radeva=2352;e.radical=8730;e.radicalex=63717;e.radoverssquare=13230;e.radoverssquaredsquare=13231;e.radsquare=13229;e.rafe=1471;e.rafehebrew=1471;e.ragujarati=2736;e.ragurmukhi=2608;e.rahiragana=12425;e.rakatakana=12521;e.rakatakanahalfwidth=65431;e.ralowerdiagonalbengali=2545;e.ramiddlediagonalbengali=2544;e.ramshorn=612;e.ratio=8758;e.rbopomofo=12566;e.rcaron=345;e.rcedilla=343;e.rcircle=9441;e.rcommaaccent=343;e.rdblgrave=529;e.rdotaccent=7769;e.rdotbelow=7771;e.rdotbelowmacron=7773;e.referencemark=8251;e.reflexsubset=8838;e.reflexsuperset=8839;e.registered=174;e.registersans=63720;e.registerserif=63194;e.reharabic=1585;e.reharmenian=1408;e.rehfinalarabic=65198;e.rehiragana=12428;e.rekatakana=12524;e.rekatakanahalfwidth=65434;e.resh=1512;e.reshdageshhebrew=64328;e.reshhebrew=1512;e.reversedtilde=8765;e.reviahebrew=1431;e.reviamugrashhebrew=1431;e.revlogicalnot=8976;e.rfishhook=638;e.rfishhookreversed=639;e.rhabengali=2525;e.rhadeva=2397;e.rho=961;e.rhook=637;e.rhookturned=635;e.rhookturnedsuperior=693;e.rhosymbolgreek=1009;e.rhotichookmod=734;e.rieulacirclekorean=12913;e.rieulaparenkorean=12817;e.rieulcirclekorean=12899;e.rieulhieuhkorean=12608;e.rieulkiyeokkorean=12602;e.rieulkiyeoksioskorean=12649;e.rieulkorean=12601;e.rieulmieumkorean=12603;e.rieulpansioskorean=12652;e.rieulparenkorean=12803;e.rieulphieuphkorean=12607;e.rieulpieupkorean=12604;e.rieulpieupsioskorean=12651;e.rieulsioskorean=12605;e.rieulthieuthkorean=12606;e.rieultikeutkorean=12650;e.rieulyeorinhieuhkorean=12653;e.rightangle=8735;e.righttackbelowcmb=793;e.righttriangle=8895;e.rihiragana=12426;e.rikatakana=12522;e.rikatakanahalfwidth=65432;e.ring=730;e.ringbelowcmb=805;e.ringcmb=778;e.ringhalfleft=703;e.ringhalfleftarmenian=1369;e.ringhalfleftbelowcmb=796;e.ringhalfleftcentered=723;e.ringhalfright=702;e.ringhalfrightbelowcmb=825;e.ringhalfrightcentered=722;e.rinvertedbreve=531;e.rittorusquare=13137;e.rlinebelow=7775;e.rlongleg=636;e.rlonglegturned=634;e.rmonospace=65362;e.rohiragana=12429;e.rokatakana=12525;e.rokatakanahalfwidth=65435;e.roruathai=3619;e.rparen=9389;e.rrabengali=2524;e.rradeva=2353;e.rragurmukhi=2652;e.rreharabic=1681;e.rrehfinalarabic=64397;e.rrvocalicbengali=2528;e.rrvocalicdeva=2400;e.rrvocalicgujarati=2784;e.rrvocalicvowelsignbengali=2500;e.rrvocalicvowelsigndeva=2372;e.rrvocalicvowelsigngujarati=2756;e.rsuperior=63217;e.rtblock=9616;e.rturned=633;e.rturnedsuperior=692;e.ruhiragana=12427;e.rukatakana=12523;e.rukatakanahalfwidth=65433;e.rupeemarkbengali=2546;e.rupeesignbengali=2547;e.rupiah=63197;e.ruthai=3620;e.rvocalicbengali=2443;e.rvocalicdeva=2315;e.rvocalicgujarati=2699;e.rvocalicvowelsignbengali=2499;e.rvocalicvowelsigndeva=2371;e.rvocalicvowelsigngujarati=2755;e.s=115;e.sabengali=2488;e.sacute=347;e.sacutedotaccent=7781;e.sadarabic=1589;e.sadeva=2360;e.sadfinalarabic=65210;e.sadinitialarabic=65211;e.sadmedialarabic=65212;e.sagujarati=2744;e.sagurmukhi=2616;e.sahiragana=12373;e.sakatakana=12469;e.sakatakanahalfwidth=65403;e.sallallahoualayhewasallamarabic=65018;e.samekh=1505;e.samekhdagesh=64321;e.samekhdageshhebrew=64321;e.samekhhebrew=1505;e.saraaathai=3634;e.saraaethai=3649;e.saraaimaimalaithai=3652;e.saraaimaimuanthai=3651;e.saraamthai=3635;e.saraathai=3632;e.saraethai=3648;e.saraiileftthai=63622;e.saraiithai=3637;e.saraileftthai=63621;e.saraithai=3636;e.saraothai=3650;e.saraueeleftthai=63624;e.saraueethai=3639;e.saraueleftthai=63623;e.sarauethai=3638;e.sarauthai=3640;e.sarauuthai=3641;e.sbopomofo=12569;e.scaron=353;e.scarondotaccent=7783;e.scedilla=351;e.schwa=601;e.schwacyrillic=1241;e.schwadieresiscyrillic=1243;e.schwahook=602;e.scircle=9442;e.scircumflex=349;e.scommaaccent=537;e.sdotaccent=7777;e.sdotbelow=7779;e.sdotbelowdotaccent=7785;e.seagullbelowcmb=828;e.second=8243;e.secondtonechinese=714;e.section=167;e.seenarabic=1587;e.seenfinalarabic=65202;e.seeninitialarabic=65203;e.seenmedialarabic=65204;e.segol=1462;e.segol13=1462;e.segol1f=1462;e.segol2c=1462;e.segolhebrew=1462;e.segolnarrowhebrew=1462;e.segolquarterhebrew=1462;e.segoltahebrew=1426;e.segolwidehebrew=1462;e.seharmenian=1405;e.sehiragana=12379;e.sekatakana=12475;e.sekatakanahalfwidth=65406;e.semicolon=59;e.semicolonarabic=1563;e.semicolonmonospace=65307;e.semicolonsmall=65108;e.semivoicedmarkkana=12444;e.semivoicedmarkkanahalfwidth=65439;e.sentisquare=13090;e.sentosquare=13091;e.seven=55;e.sevenarabic=1639;e.sevenbengali=2541;e.sevencircle=9318;e.sevencircleinversesansserif=10128;e.sevendeva=2413;e.seveneighths=8542;e.sevengujarati=2797;e.sevengurmukhi=2669;e.sevenhackarabic=1639;e.sevenhangzhou=12327;e.sevenideographicparen=12838;e.seveninferior=8327;e.sevenmonospace=65303;e.sevenoldstyle=63287;e.sevenparen=9338;e.sevenperiod=9358;e.sevenpersian=1783;e.sevenroman=8566;e.sevensuperior=8311;e.seventeencircle=9328;e.seventeenparen=9348;e.seventeenperiod=9368;e.seventhai=3671;e.sfthyphen=173;e.shaarmenian=1399;e.shabengali=2486;e.shacyrillic=1096;e.shaddaarabic=1617;e.shaddadammaarabic=64609;e.shaddadammatanarabic=64606;e.shaddafathaarabic=64608;e.shaddakasraarabic=64610;e.shaddakasratanarabic=64607;e.shade=9618;e.shadedark=9619;e.shadelight=9617;e.shademedium=9618;e.shadeva=2358;e.shagujarati=2742;e.shagurmukhi=2614;e.shalshelethebrew=1427;e.shbopomofo=12565;e.shchacyrillic=1097;e.sheenarabic=1588;e.sheenfinalarabic=65206;e.sheeninitialarabic=65207;e.sheenmedialarabic=65208;e.sheicoptic=995;e.sheqel=8362;e.sheqelhebrew=8362;e.sheva=1456;e.sheva115=1456;e.sheva15=1456;e.sheva22=1456;e.sheva2e=1456;e.shevahebrew=1456;e.shevanarrowhebrew=1456;e.shevaquarterhebrew=1456;e.shevawidehebrew=1456;e.shhacyrillic=1211;e.shimacoptic=1005;e.shin=1513;e.shindagesh=64329;e.shindageshhebrew=64329;e.shindageshshindot=64300;e.shindageshshindothebrew=64300;e.shindageshsindot=64301;e.shindageshsindothebrew=64301;e.shindothebrew=1473;e.shinhebrew=1513;e.shinshindot=64298;e.shinshindothebrew=64298;e.shinsindot=64299;e.shinsindothebrew=64299;e.shook=642;e.sigma=963;e.sigma1=962;e.sigmafinal=962;e.sigmalunatesymbolgreek=1010;e.sihiragana=12375;e.sikatakana=12471;e.sikatakanahalfwidth=65404;e.siluqhebrew=1469;e.siluqlefthebrew=1469;e.similar=8764;e.sindothebrew=1474;e.siosacirclekorean=12916;e.siosaparenkorean=12820;e.sioscieuckorean=12670;e.sioscirclekorean=12902;e.sioskiyeokkorean=12666;e.sioskorean=12613;e.siosnieunkorean=12667;e.siosparenkorean=12806;e.siospieupkorean=12669;e.siostikeutkorean=12668;e.six=54;e.sixarabic=1638;e.sixbengali=2540;e.sixcircle=9317;e.sixcircleinversesansserif=10127;e.sixdeva=2412;e.sixgujarati=2796;e.sixgurmukhi=2668;e.sixhackarabic=1638;e.sixhangzhou=12326;e.sixideographicparen=12837;e.sixinferior=8326;e.sixmonospace=65302;e.sixoldstyle=63286;e.sixparen=9337;e.sixperiod=9357;e.sixpersian=1782;e.sixroman=8565;e.sixsuperior=8310;e.sixteencircle=9327;e.sixteencurrencydenominatorbengali=2553;e.sixteenparen=9347;e.sixteenperiod=9367;e.sixthai=3670;e.slash=47;e.slashmonospace=65295;e.slong=383;e.slongdotaccent=7835;e.smileface=9786;e.smonospace=65363;e.sofpasuqhebrew=1475;e.softhyphen=173;e.softsigncyrillic=1100;e.sohiragana=12381;e.sokatakana=12477;e.sokatakanahalfwidth=65407;e.soliduslongoverlaycmb=824;e.solidusshortoverlaycmb=823;e.sorusithai=3625;e.sosalathai=3624;e.sosothai=3595;e.sosuathai=3626;e.space=32;e.spacehackarabic=32;e.spade=9824;e.spadesuitblack=9824;e.spadesuitwhite=9828;e.sparen=9390;e.squarebelowcmb=827;e.squarecc=13252;e.squarecm=13213;e.squarediagonalcrosshatchfill=9641;e.squarehorizontalfill=9636;e.squarekg=13199;e.squarekm=13214;e.squarekmcapital=13262;e.squareln=13265;e.squarelog=13266;e.squaremg=13198;e.squaremil=13269;e.squaremm=13212;e.squaremsquared=13217;e.squareorthogonalcrosshatchfill=9638;e.squareupperlefttolowerrightfill=9639;e.squareupperrighttolowerleftfill=9640;e.squareverticalfill=9637;e.squarewhitewithsmallblack=9635;e.srsquare=13275;e.ssabengali=2487;e.ssadeva=2359;e.ssagujarati=2743;e.ssangcieuckorean=12617;e.ssanghieuhkorean=12677;e.ssangieungkorean=12672;e.ssangkiyeokkorean=12594;e.ssangnieunkorean=12645;e.ssangpieupkorean=12611;e.ssangsioskorean=12614;e.ssangtikeutkorean=12600;e.ssuperior=63218;e.sterling=163;e.sterlingmonospace=65505;e.strokelongoverlaycmb=822;e.strokeshortoverlaycmb=821;e.subset=8834;e.subsetnotequal=8842;e.subsetorequal=8838;e.succeeds=8827;e.suchthat=8715;e.suhiragana=12377;e.sukatakana=12473;e.sukatakanahalfwidth=65405;e.sukunarabic=1618;e.summation=8721;e.sun=9788;e.superset=8835;e.supersetnotequal=8843;e.supersetorequal=8839;e.svsquare=13276;e.syouwaerasquare=13180;e.t=116;e.tabengali=2468;e.tackdown=8868;e.tackleft=8867;e.tadeva=2340;e.tagujarati=2724;e.tagurmukhi=2596;e.taharabic=1591;e.tahfinalarabic=65218;e.tahinitialarabic=65219;e.tahiragana=12383;e.tahmedialarabic=65220;e.taisyouerasquare=13181;e.takatakana=12479;e.takatakanahalfwidth=65408;e.tatweelarabic=1600;e.tau=964;e.tav=1514;e.tavdages=64330;e.tavdagesh=64330;e.tavdageshhebrew=64330;e.tavhebrew=1514;e.tbar=359;e.tbopomofo=12554;e.tcaron=357;e.tccurl=680;e.tcedilla=355;e.tcheharabic=1670;e.tchehfinalarabic=64379;e.tchehinitialarabic=64380;e.tchehmedialarabic=64381;e.tcircle=9443;e.tcircumflexbelow=7793;e.tcommaaccent=355;e.tdieresis=7831;e.tdotaccent=7787;e.tdotbelow=7789;e.tecyrillic=1090;e.tedescendercyrillic=1197;e.teharabic=1578;e.tehfinalarabic=65174;e.tehhahinitialarabic=64674;e.tehhahisolatedarabic=64524;e.tehinitialarabic=65175;e.tehiragana=12390;e.tehjeeminitialarabic=64673;e.tehjeemisolatedarabic=64523;e.tehmarbutaarabic=1577;e.tehmarbutafinalarabic=65172;e.tehmedialarabic=65176;e.tehmeeminitialarabic=64676;e.tehmeemisolatedarabic=64526;e.tehnoonfinalarabic=64627;e.tekatakana=12486;e.tekatakanahalfwidth=65411;e.telephone=8481;e.telephoneblack=9742;e.telishagedolahebrew=1440;e.telishaqetanahebrew=1449;e.tencircle=9321;e.tenideographicparen=12841;e.tenparen=9341;e.tenperiod=9361;e.tenroman=8569;e.tesh=679;e.tet=1496;e.tetdagesh=64312;e.tetdageshhebrew=64312;e.tethebrew=1496;e.tetsecyrillic=1205;e.tevirhebrew=1435;e.tevirlefthebrew=1435;e.thabengali=2469;e.thadeva=2341;e.thagujarati=2725;e.thagurmukhi=2597;e.thalarabic=1584;e.thalfinalarabic=65196;e.thanthakhatlowleftthai=63640;e.thanthakhatlowrightthai=63639;e.thanthakhatthai=3660;e.thanthakhatupperleftthai=63638;e.theharabic=1579;e.thehfinalarabic=65178;e.thehinitialarabic=65179;e.thehmedialarabic=65180;e.thereexists=8707;e.therefore=8756;e.theta=952;e.theta1=977;e.thetasymbolgreek=977;e.thieuthacirclekorean=12921;e.thieuthaparenkorean=12825;e.thieuthcirclekorean=12907;e.thieuthkorean=12620;e.thieuthparenkorean=12811;e.thirteencircle=9324;e.thirteenparen=9344;e.thirteenperiod=9364;e.thonangmonthothai=3601;e.thook=429;e.thophuthaothai=3602;e.thorn=254;e.thothahanthai=3607;e.thothanthai=3600;e.thothongthai=3608;e.thothungthai=3606;e.thousandcyrillic=1154;e.thousandsseparatorarabic=1644;e.thousandsseparatorpersian=1644;e.three=51;e.threearabic=1635;e.threebengali=2537;e.threecircle=9314;e.threecircleinversesansserif=10124;e.threedeva=2409;e.threeeighths=8540;e.threegujarati=2793;e.threegurmukhi=2665;e.threehackarabic=1635;e.threehangzhou=12323;e.threeideographicparen=12834;e.threeinferior=8323;e.threemonospace=65299;e.threenumeratorbengali=2550;e.threeoldstyle=63283;e.threeparen=9334;e.threeperiod=9354;e.threepersian=1779;e.threequarters=190;e.threequartersemdash=63198;e.threeroman=8562;e.threesuperior=179;e.threethai=3667;e.thzsquare=13204;e.tihiragana=12385;e.tikatakana=12481;e.tikatakanahalfwidth=65409;e.tikeutacirclekorean=12912;e.tikeutaparenkorean=12816;e.tikeutcirclekorean=12898;e.tikeutkorean=12599;e.tikeutparenkorean=12802;e.tilde=732;e.tildebelowcmb=816;e.tildecmb=771;e.tildecomb=771;e.tildedoublecmb=864;e.tildeoperator=8764;e.tildeoverlaycmb=820;e.tildeverticalcmb=830;e.timescircle=8855;e.tipehahebrew=1430;e.tipehalefthebrew=1430;e.tippigurmukhi=2672;e.titlocyrilliccmb=1155;e.tiwnarmenian=1407;e.tlinebelow=7791;e.tmonospace=65364;e.toarmenian=1385;e.tohiragana=12392;e.tokatakana=12488;e.tokatakanahalfwidth=65412;e.tonebarextrahighmod=741;e.tonebarextralowmod=745;e.tonebarhighmod=742;e.tonebarlowmod=744;e.tonebarmidmod=743;e.tonefive=445;e.tonesix=389;e.tonetwo=424;e.tonos=900;e.tonsquare=13095;e.topatakthai=3599;e.tortoiseshellbracketleft=12308;e.tortoiseshellbracketleftsmall=65117;e.tortoiseshellbracketleftvertical=65081;e.tortoiseshellbracketright=12309;e.tortoiseshellbracketrightsmall=65118;e.tortoiseshellbracketrightvertical=65082;e.totaothai=3605;e.tpalatalhook=427;e.tparen=9391;e.trademark=8482;e.trademarksans=63722;e.trademarkserif=63195;e.tretroflexhook=648;e.triagdn=9660;e.triaglf=9668;e.triagrt=9658;e.triagup=9650;e.ts=678;e.tsadi=1510;e.tsadidagesh=64326;e.tsadidageshhebrew=64326;e.tsadihebrew=1510;e.tsecyrillic=1094;e.tsere=1461;e.tsere12=1461;e.tsere1e=1461;e.tsere2b=1461;e.tserehebrew=1461;e.tserenarrowhebrew=1461;e.tserequarterhebrew=1461;e.tserewidehebrew=1461;e.tshecyrillic=1115;e.tsuperior=63219;e.ttabengali=2463;e.ttadeva=2335;e.ttagujarati=2719;e.ttagurmukhi=2591;e.tteharabic=1657;e.ttehfinalarabic=64359;e.ttehinitialarabic=64360;e.ttehmedialarabic=64361;e.tthabengali=2464;e.tthadeva=2336;e.tthagujarati=2720;e.tthagurmukhi=2592;e.tturned=647;e.tuhiragana=12388;e.tukatakana=12484;e.tukatakanahalfwidth=65410;e.tusmallhiragana=12387;e.tusmallkatakana=12483;e.tusmallkatakanahalfwidth=65391;e.twelvecircle=9323;e.twelveparen=9343;e.twelveperiod=9363;e.twelveroman=8571;e.twentycircle=9331;e.twentyhangzhou=21316;e.twentyparen=9351;e.twentyperiod=9371;e.two=50;e.twoarabic=1634;e.twobengali=2536;e.twocircle=9313;e.twocircleinversesansserif=10123;e.twodeva=2408;e.twodotenleader=8229;e.twodotleader=8229;e.twodotleadervertical=65072;e.twogujarati=2792;e.twogurmukhi=2664;e.twohackarabic=1634;e.twohangzhou=12322;e.twoideographicparen=12833;e.twoinferior=8322;e.twomonospace=65298;e.twonumeratorbengali=2549;e.twooldstyle=63282;e.twoparen=9333;e.twoperiod=9353;e.twopersian=1778;e.tworoman=8561;e.twostroke=443;e.twosuperior=178;e.twothai=3666;e.twothirds=8532;e.u=117;e.uacute=250;e.ubar=649;e.ubengali=2441;e.ubopomofo=12584;e.ubreve=365;e.ucaron=468;e.ucircle=9444;e.ucircumflex=251;e.ucircumflexbelow=7799;e.ucyrillic=1091;e.udattadeva=2385;e.udblacute=369;e.udblgrave=533;e.udeva=2313;e.udieresis=252;e.udieresisacute=472;e.udieresisbelow=7795;e.udieresiscaron=474;e.udieresiscyrillic=1265;e.udieresisgrave=476;e.udieresismacron=470;e.udotbelow=7909;e.ugrave=249;e.ugujarati=2697;e.ugurmukhi=2569;e.uhiragana=12358;e.uhookabove=7911;e.uhorn=432;e.uhornacute=7913;e.uhorndotbelow=7921;e.uhorngrave=7915;e.uhornhookabove=7917;e.uhorntilde=7919;e.uhungarumlaut=369;e.uhungarumlautcyrillic=1267;e.uinvertedbreve=535;e.ukatakana=12454;e.ukatakanahalfwidth=65395;e.ukcyrillic=1145;e.ukorean=12636;e.umacron=363;e.umacroncyrillic=1263;e.umacrondieresis=7803;e.umatragurmukhi=2625;e.umonospace=65365;e.underscore=95;e.underscoredbl=8215;e.underscoremonospace=65343;e.underscorevertical=65075;e.underscorewavy=65103;e.union=8746;e.universal=8704;e.uogonek=371;e.uparen=9392;e.upblock=9600;e.upperdothebrew=1476;e.upsilon=965;e.upsilondieresis=971;e.upsilondieresistonos=944;e.upsilonlatin=650;e.upsilontonos=973;e.uptackbelowcmb=797;e.uptackmod=724;e.uragurmukhi=2675;e.uring=367;e.ushortcyrillic=1118;e.usmallhiragana=12357;e.usmallkatakana=12453;e.usmallkatakanahalfwidth=65385;e.ustraightcyrillic=1199;e.ustraightstrokecyrillic=1201;e.utilde=361;e.utildeacute=7801;e.utildebelow=7797;e.uubengali=2442;e.uudeva=2314;e.uugujarati=2698;e.uugurmukhi=2570;e.uumatragurmukhi=2626;e.uuvowelsignbengali=2498;e.uuvowelsigndeva=2370;e.uuvowelsigngujarati=2754;e.uvowelsignbengali=2497;e.uvowelsigndeva=2369;e.uvowelsigngujarati=2753;e.v=118;e.vadeva=2357;e.vagujarati=2741;e.vagurmukhi=2613;e.vakatakana=12535;e.vav=1493;e.vavdagesh=64309;e.vavdagesh65=64309;e.vavdageshhebrew=64309;e.vavhebrew=1493;e.vavholam=64331;e.vavholamhebrew=64331;e.vavvavhebrew=1520;e.vavyodhebrew=1521;e.vcircle=9445;e.vdotbelow=7807;e.vecyrillic=1074;e.veharabic=1700;e.vehfinalarabic=64363;e.vehinitialarabic=64364;e.vehmedialarabic=64365;e.vekatakana=12537;e.venus=9792;e.verticalbar=124;e.verticallineabovecmb=781;e.verticallinebelowcmb=809;e.verticallinelowmod=716;e.verticallinemod=712;e.vewarmenian=1406;e.vhook=651;e.vikatakana=12536;e.viramabengali=2509;e.viramadeva=2381;e.viramagujarati=2765;e.visargabengali=2435;e.visargadeva=2307;e.visargagujarati=2691;e.vmonospace=65366;e.voarmenian=1400;e.voicediterationhiragana=12446;e.voicediterationkatakana=12542;e.voicedmarkkana=12443;e.voicedmarkkanahalfwidth=65438;e.vokatakana=12538;e.vparen=9393;e.vtilde=7805;e.vturned=652;e.vuhiragana=12436;e.vukatakana=12532;e.w=119;e.wacute=7811;e.waekorean=12633;e.wahiragana=12431;e.wakatakana=12527;e.wakatakanahalfwidth=65436;e.wakorean=12632;e.wasmallhiragana=12430;e.wasmallkatakana=12526;e.wattosquare=13143;e.wavedash=12316;e.wavyunderscorevertical=65076;e.wawarabic=1608;e.wawfinalarabic=65262;e.wawhamzaabovearabic=1572;e.wawhamzaabovefinalarabic=65158;e.wbsquare=13277;e.wcircle=9446;e.wcircumflex=373;e.wdieresis=7813;e.wdotaccent=7815;e.wdotbelow=7817;e.wehiragana=12433;e.weierstrass=8472;e.wekatakana=12529;e.wekorean=12638;e.weokorean=12637;e.wgrave=7809;e.whitebullet=9702;e.whitecircle=9675;e.whitecircleinverse=9689;e.whitecornerbracketleft=12302;e.whitecornerbracketleftvertical=65091;e.whitecornerbracketright=12303;e.whitecornerbracketrightvertical=65092;e.whitediamond=9671;e.whitediamondcontainingblacksmalldiamond=9672;e.whitedownpointingsmalltriangle=9663;e.whitedownpointingtriangle=9661;e.whiteleftpointingsmalltriangle=9667;e.whiteleftpointingtriangle=9665;e.whitelenticularbracketleft=12310;e.whitelenticularbracketright=12311;e.whiterightpointingsmalltriangle=9657;e.whiterightpointingtriangle=9655;e.whitesmallsquare=9643;e.whitesmilingface=9786;e.whitesquare=9633;e.whitestar=9734;e.whitetelephone=9743;e.whitetortoiseshellbracketleft=12312;e.whitetortoiseshellbracketright=12313;e.whiteuppointingsmalltriangle=9653;e.whiteuppointingtriangle=9651;e.wihiragana=12432;e.wikatakana=12528;e.wikorean=12639;e.wmonospace=65367;e.wohiragana=12434;e.wokatakana=12530;e.wokatakanahalfwidth=65382;e.won=8361;e.wonmonospace=65510;e.wowaenthai=3623;e.wparen=9394;e.wring=7832;e.wsuperior=695;e.wturned=653;e.wynn=447;e.x=120;e.xabovecmb=829;e.xbopomofo=12562;e.xcircle=9447;e.xdieresis=7821;e.xdotaccent=7819;e.xeharmenian=1389;e.xi=958;e.xmonospace=65368;e.xparen=9395;e.xsuperior=739;e.y=121;e.yaadosquare=13134;e.yabengali=2479;e.yacute=253;e.yadeva=2351;e.yaekorean=12626;e.yagujarati=2735;e.yagurmukhi=2607;e.yahiragana=12420;e.yakatakana=12516;e.yakatakanahalfwidth=65428;e.yakorean=12625;e.yamakkanthai=3662;e.yasmallhiragana=12419;e.yasmallkatakana=12515;e.yasmallkatakanahalfwidth=65388;e.yatcyrillic=1123;e.ycircle=9448;e.ycircumflex=375;e.ydieresis=255;e.ydotaccent=7823;e.ydotbelow=7925;e.yeharabic=1610;e.yehbarreearabic=1746;e.yehbarreefinalarabic=64431;e.yehfinalarabic=65266;e.yehhamzaabovearabic=1574;e.yehhamzaabovefinalarabic=65162;e.yehhamzaaboveinitialarabic=65163;e.yehhamzaabovemedialarabic=65164;e.yehinitialarabic=65267;e.yehmedialarabic=65268;e.yehmeeminitialarabic=64733;e.yehmeemisolatedarabic=64600;e.yehnoonfinalarabic=64660;e.yehthreedotsbelowarabic=1745;e.yekorean=12630;e.yen=165;e.yenmonospace=65509;e.yeokorean=12629;e.yeorinhieuhkorean=12678;e.yerahbenyomohebrew=1450;e.yerahbenyomolefthebrew=1450;e.yericyrillic=1099;e.yerudieresiscyrillic=1273;e.yesieungkorean=12673;e.yesieungpansioskorean=12675;e.yesieungsioskorean=12674;e.yetivhebrew=1434;e.ygrave=7923;e.yhook=436;e.yhookabove=7927;e.yiarmenian=1397;e.yicyrillic=1111;e.yikorean=12642;e.yinyang=9775;e.yiwnarmenian=1410;e.ymonospace=65369;e.yod=1497;e.yoddagesh=64313;e.yoddageshhebrew=64313;e.yodhebrew=1497;e.yodyodhebrew=1522;e.yodyodpatahhebrew=64287;e.yohiragana=12424;e.yoikorean=12681;e.yokatakana=12520;e.yokatakanahalfwidth=65430;e.yokorean=12635;e.yosmallhiragana=12423;e.yosmallkatakana=12519;e.yosmallkatakanahalfwidth=65390;e.yotgreek=1011;e.yoyaekorean=12680;e.yoyakorean=12679;e.yoyakthai=3618;e.yoyingthai=3597;e.yparen=9396;e.ypogegrammeni=890;e.ypogegrammenigreekcmb=837;e.yr=422;e.yring=7833;e.ysuperior=696;e.ytilde=7929;e.yturned=654;e.yuhiragana=12422;e.yuikorean=12684;e.yukatakana=12518;e.yukatakanahalfwidth=65429;e.yukorean=12640;e.yusbigcyrillic=1131;e.yusbigiotifiedcyrillic=1133;e.yuslittlecyrillic=1127;e.yuslittleiotifiedcyrillic=1129;e.yusmallhiragana=12421;e.yusmallkatakana=12517;e.yusmallkatakanahalfwidth=65389;e.yuyekorean=12683;e.yuyeokorean=12682;e.yyabengali=2527;e.yyadeva=2399;e.z=122;e.zaarmenian=1382;e.zacute=378;e.zadeva=2395;e.zagurmukhi=2651;e.zaharabic=1592;e.zahfinalarabic=65222;e.zahinitialarabic=65223;e.zahiragana=12374;e.zahmedialarabic=65224;e.zainarabic=1586;e.zainfinalarabic=65200;e.zakatakana=12470;e.zaqefgadolhebrew=1429;e.zaqefqatanhebrew=1428;e.zarqahebrew=1432;e.zayin=1494;e.zayindagesh=64310;e.zayindageshhebrew=64310;e.zayinhebrew=1494;e.zbopomofo=12567;e.zcaron=382;e.zcircle=9449;e.zcircumflex=7825;e.zcurl=657;e.zdot=380;e.zdotaccent=380;e.zdotbelow=7827;e.zecyrillic=1079;e.zedescendercyrillic=1177;e.zedieresiscyrillic=1247;e.zehiragana=12380;e.zekatakana=12476;e.zero=48;e.zeroarabic=1632;e.zerobengali=2534;e.zerodeva=2406;e.zerogujarati=2790;e.zerogurmukhi=2662;e.zerohackarabic=1632;e.zeroinferior=8320;e.zeromonospace=65296;e.zerooldstyle=63280;e.zeropersian=1776;e.zerosuperior=8304;e.zerothai=3664;e.zerowidthjoiner=65279;e.zerowidthnonjoiner=8204;e.zerowidthspace=8203;e.zeta=950;e.zhbopomofo=12563;e.zhearmenian=1386;e.zhebrevecyrillic=1218;e.zhecyrillic=1078;e.zhedescendercyrillic=1175;e.zhedieresiscyrillic=1245;e.zihiragana=12376;e.zikatakana=12472;e.zinorhebrew=1454;e.zlinebelow=7829;e.zmonospace=65370;e.zohiragana=12382;e.zokatakana=12478;e.zparen=9397;e.zretroflexhook=656;e.zstroke=438;e.zuhiragana=12378;e.zukatakana=12474;e[".notdef"]=0;e.angbracketleftbig=9001;e.angbracketleftBig=9001;e.angbracketleftbigg=9001;e.angbracketleftBigg=9001;e.angbracketrightBig=9002;e.angbracketrightbig=9002;e.angbracketrightBigg=9002;e.angbracketrightbigg=9002;e.arrowhookleft=8618;e.arrowhookright=8617;e.arrowlefttophalf=8636;e.arrowleftbothalf=8637;e.arrownortheast=8599;e.arrownorthwest=8598;e.arrowrighttophalf=8640;e.arrowrightbothalf=8641;e.arrowsoutheast=8600;e.arrowsouthwest=8601;e.backslashbig=8726;e.backslashBig=8726;e.backslashBigg=8726;e.backslashbigg=8726;e.bardbl=8214;e.bracehtipdownleft=65079;e.bracehtipdownright=65079;e.bracehtipupleft=65080;e.bracehtipupright=65080;e.braceleftBig=123;e.braceleftbig=123;e.braceleftbigg=123;e.braceleftBigg=123;e.bracerightBig=125;e.bracerightbig=125;e.bracerightbigg=125;e.bracerightBigg=125;e.bracketleftbig=91;e.bracketleftBig=91;e.bracketleftbigg=91;e.bracketleftBigg=91;e.bracketrightBig=93;e.bracketrightbig=93;e.bracketrightbigg=93;e.bracketrightBigg=93;e.ceilingleftbig=8968;e.ceilingleftBig=8968;e.ceilingleftBigg=8968;e.ceilingleftbigg=8968;e.ceilingrightbig=8969;e.ceilingrightBig=8969;e.ceilingrightbigg=8969;e.ceilingrightBigg=8969;e.circledotdisplay=8857;e.circledottext=8857;e.circlemultiplydisplay=8855;e.circlemultiplytext=8855;e.circleplusdisplay=8853;e.circleplustext=8853;e.contintegraldisplay=8750;e.contintegraltext=8750;e.coproductdisplay=8720;e.coproducttext=8720;e.floorleftBig=8970;e.floorleftbig=8970;e.floorleftbigg=8970;e.floorleftBigg=8970;e.floorrightbig=8971;e.floorrightBig=8971;e.floorrightBigg=8971;e.floorrightbigg=8971;e.hatwide=770;e.hatwider=770;e.hatwidest=770;e.intercal=7488;e.integraldisplay=8747;e.integraltext=8747;e.intersectiondisplay=8898;e.intersectiontext=8898;e.logicalanddisplay=8743;e.logicalandtext=8743;e.logicalordisplay=8744;e.logicalortext=8744;e.parenleftBig=40;e.parenleftbig=40;e.parenleftBigg=40;e.parenleftbigg=40;e.parenrightBig=41;e.parenrightbig=41;e.parenrightBigg=41;e.parenrightbigg=41;e.prime=8242;e.productdisplay=8719;e.producttext=8719;e.radicalbig=8730;e.radicalBig=8730;e.radicalBigg=8730;e.radicalbigg=8730;e.radicalbt=8730;e.radicaltp=8730;e.radicalvertex=8730;e.slashbig=47;e.slashBig=47;e.slashBigg=47;e.slashbigg=47;e.summationdisplay=8721;e.summationtext=8721;e.tildewide=732;e.tildewider=732;e.tildewidest=732;e.uniondisplay=8899;e.unionmultidisplay=8846;e.unionmultitext=8846;e.unionsqdisplay=8852;e.unionsqtext=8852;e.uniontext=8899;e.vextenddouble=8741;e.vextendsingle=8739}),gr=getLookupTableFactory(function(e){e.space=32;e.a1=9985;e.a2=9986;e.a202=9987;e.a3=9988;e.a4=9742;e.a5=9990;e.a119=9991;e.a118=9992;e.a117=9993;e.a11=9755;e.a12=9758;e.a13=9996;e.a14=9997;e.a15=9998;e.a16=9999;e.a105=1e4;e.a17=10001;e.a18=10002;e.a19=10003;e.a20=10004;e.a21=10005;e.a22=10006;e.a23=10007;e.a24=10008;e.a25=10009;e.a26=10010;e.a27=10011;e.a28=10012;e.a6=10013;e.a7=10014;e.a8=10015;e.a9=10016;e.a10=10017;e.a29=10018;e.a30=10019;e.a31=10020;e.a32=10021;e.a33=10022;e.a34=10023;e.a35=9733;e.a36=10025;e.a37=10026;e.a38=10027;e.a39=10028;e.a40=10029;e.a41=10030;e.a42=10031;e.a43=10032;e.a44=10033;e.a45=10034;e.a46=10035;e.a47=10036;e.a48=10037;e.a49=10038;e.a50=10039;e.a51=10040;e.a52=10041;e.a53=10042;e.a54=10043;e.a55=10044;e.a56=10045;e.a57=10046;e.a58=10047;e.a59=10048;e.a60=10049;e.a61=10050;e.a62=10051;e.a63=10052;e.a64=10053;e.a65=10054;e.a66=10055;e.a67=10056;e.a68=10057;e.a69=10058;e.a70=10059;e.a71=9679;e.a72=10061;e.a73=9632;e.a74=10063;e.a203=10064;e.a75=10065;e.a204=10066;e.a76=9650;e.a77=9660;e.a78=9670;e.a79=10070;e.a81=9687;e.a82=10072;e.a83=10073;e.a84=10074;e.a97=10075;e.a98=10076;e.a99=10077;e.a100=10078;e.a101=10081;e.a102=10082;e.a103=10083;e.a104=10084;e.a106=10085;e.a107=10086;e.a108=10087;e.a112=9827;e.a111=9830;e.a110=9829;e.a109=9824;e.a120=9312;e.a121=9313;e.a122=9314;e.a123=9315;e.a124=9316;e.a125=9317;e.a126=9318;e.a127=9319;e.a128=9320;e.a129=9321;e.a130=10102;e.a131=10103;e.a132=10104;e.a133=10105;e.a134=10106;e.a135=10107;e.a136=10108;e.a137=10109;e.a138=10110;e.a139=10111;e.a140=10112;e.a141=10113;e.a142=10114;e.a143=10115;e.a144=10116;e.a145=10117;e.a146=10118;e.a147=10119;e.a148=10120;e.a149=10121;e.a150=10122;e.a151=10123;e.a152=10124;e.a153=10125;e.a154=10126;e.a155=10127;e.a156=10128;e.a157=10129;e.a158=10130;e.a159=10131;e.a160=10132;e.a161=8594;e.a163=8596;e.a164=8597;e.a196=10136;e.a165=10137;e.a192=10138;e.a166=10139;e.a167=10140;e.a168=10141;e.a169=10142;e.a170=10143;e.a171=10144;e.a172=10145;e.a173=10146;e.a162=10147;e.a174=10148;e.a175=10149;e.a176=10150;e.a177=10151;e.a178=10152;e.a179=10153;e.a193=10154;e.a180=10155;e.a199=10156;e.a181=10157;e.a200=10158;e.a182=10159;e.a201=10161;e.a183=10162;e.a184=10163;e.a197=10164;e.a185=10165;e.a194=10166;e.a198=10167;e.a186=10168;e.a195=10169;e.a187=10170;e.a188=10171;e.a189=10172;e.a190=10173;e.a191=10174;e.a89=10088;e.a90=10089;e.a93=10090;e.a94=10091;e.a91=10092;e.a92=10093;e.a205=10094;e.a85=10095;e.a206=10096;e.a86=10097;e.a87=10098;e.a88=10099;e.a95=10100;e.a96=10101;e[".notdef"]=0}),pr=getLookupTableFactory(function(e){e[63721]=169;e[63193]=169;e[63720]=174;e[63194]=174;e[63722]=8482;e[63195]=8482;e[63729]=9127;e[63730]=9128;e[63731]=9129;e[63740]=9131;e[63741]=9132;e[63742]=9133;e[63726]=9121;e[63727]=9122;e[63728]=9123;e[63737]=9124;e[63738]=9125;e[63739]=9126;e[63723]=9115;e[63724]=9116;e[63725]=9117;e[63734]=9118;e[63735]=9119;e[63736]=9120});function getUnicodeForGlyph(e,t){let a=t[e];if(void 0!==a)return a;if(!e)return-1;if("u"===e[0]){const t=e.length;let r;if(7===t&&"n"===e[1]&&"i"===e[2])r=e.substring(3);else{if(!(t>=5&&t<=7))return-1;r=e.substring(1)}if(r===r.toUpperCase()){a=parseInt(r,16);if(a>=0)return a}}return-1}const mr=[[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 a=mr[t];for(let r=0,i=a.length;r=a[r]&&e<=a[r+1])return t}for(let t=0,a=mr.length;t=a[r]&&e<=a[r+1])return t}return-1}const br=new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$","u"),yr=new Map;const wr=!0,xr=1,Sr=2,Ar=4,kr=32,Cr=[".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 a=getUnicodeForGlyph(e,t);if(-1!==a)for(const e in t)if(t[e]===a)return e;info("Unable to recover a standard glyph name for: "+e);return e}function type1FontGlyphMapping(e,t,a){const r=Object.create(null);let i,n,s;const o=!!(e.flags&Ar);if(e.isInternalFont){s=t;for(n=0;n=0?i:0}}else if(e.baseEncodingName){s=getEncoding(e.baseEncodingName);for(n=0;n=0?i:0}}else if(o)for(n in t)r[n]=t[n];else{s=lr;for(n=0;n=0?i:0}}const c=e.differences;let l;if(c)for(n in c){const e=c[n];i=a.indexOf(e);if(-1===i){l||(l=fr());const t=recoverGlyphName(e,l);t!==e&&(i=a.indexOf(t))}r[n]=i>=0?i:0}return r}function normalizeFontName(e){return e.replaceAll(/[,_]/g,"-").replaceAll(/\s/g,"")}const vr=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});const Fr=[".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"],Ir=[".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"],Tr=[".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"],Or=[".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"],Mr=391,Dr=[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}],Rr=[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,a){this.bytes=e.getBytes();this.properties=t;this.seacAnalysisEnabled=!!a}parse(){const e=this.properties,t=new CFF;this.cff=t;const a=this.parseHeader(),r=this.parseIndex(a.endPos),i=this.parseIndex(r.endPos),n=this.parseIndex(i.endPos),s=this.parseIndex(n.endPos),o=this.parseDict(i.obj.get(0)),c=this.createDict(CFFTopDict,o,t.strings);t.header=a.obj;t.names=this.parseNameIndex(r.obj);t.strings=this.parseStringIndex(n.obj);t.topDict=c;t.globalSubrIndex=s.obj;this.parsePrivateDict(t.topDict);t.isCIDFont=c.hasName("ROS");const l=c.getByName("CharStrings"),h=this.parseIndex(l).obj,u=c.getByName("FontMatrix");u&&(e.fontMatrix=u);const d=c.getByName("FontBBox");if(d){e.ascent=Math.max(d[3],d[1]);e.descent=Math.min(d[1],d[3]);e.ascentScaled=!0}let f,g;if(t.isCIDFont){const e=this.parseIndex(c.getByName("FDArray")).obj;for(let a=0,r=e.count;a=t)throw new FormatError("Invalid CFF header");if(0!==a){info("cff data is shifted");e=e.subarray(a);this.bytes=e}const r=e[0],i=e[1],n=e[2],s=e[3];return{obj:new CFFHeader(r,i,n,s),endPos:n}}parseDict(e){let t=0;function parseOperand(){let a=e[t++];if(30===a)return function parseFloatOperand(){let a="";const r=15,i=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],n=e.length;for(;t>4,o=15&n;if(s===r)break;a+=i[s];if(o===r)break;a+=i[o]}return parseFloat(a)}();if(28===a){a=readInt16(e,t);t+=2;return a}if(29===a){a=e[t++];a=a<<8|e[t++];a=a<<8|e[t++];a=a<<8|e[t++];return a}if(a>=32&&a<=246)return a-139;if(a>=247&&a<=250)return 256*(a-247)+e[t++]+108;if(a>=251&&a<=254)return-256*(a-251)-e[t++]-108;warn('CFFParser_parseDict: "'+a+'" is a reserved command.');return NaN}let a=[];const r=[];t=0;const i=e.length;for(;t10)return!1;let i=e.stackSize;const n=e.stack;let s=t.length;for(let o=0;o=4){i-=4;if(this.seacAnalysisEnabled){e.seac=n.slice(i,i+4);return!1}}l=Dr[c]}else if(c>=32&&c<=246){n[i]=c-139;i++}else if(c>=247&&c<=254){n[i]=c<251?(c-247<<8)+t[o]+108:-(c-251<<8)-t[o]-108;o++;i++}else if(255===c){n[i]=(t[o]<<24|t[o+1]<<16|t[o+2]<<8|t[o+3])/65536;o+=4;i++}else if(19===c||20===c){e.hints+=i>>1;if(0===e.hints){t.copyWithin(o-1,o,-1);o-=1;s-=1;continue}o+=e.hints+7>>3;i%=2;l=Dr[c]}else{if(10===c||29===c){const t=10===c?a:r;if(!t){l=Dr[c];warn("Missing subrsIndex for "+l.id);return!1}let s=32768;t.count<1240?s=107:t.count<33900&&(s=1131);const o=n[--i]+s;if(o<0||o>=t.count||isNaN(o)){l=Dr[c];warn("Out of bounds subrIndex for "+l.id);return!1}e.stackSize=i;e.callDepth++;if(!this.parseCharString(e,t.get(o),a,r))return!1;e.callDepth--;i=e.stackSize;continue}if(11===c){e.stackSize=i;return!0}if(0===c&&o===t.length){t[o-1]=14;l=Dr[14]}else{if(9===c){t.copyWithin(o-1,o,-1);o-=1;s-=1;continue}l=Dr[c]}}if(l){if(l.stem){e.hints+=i>>1;if(3===c||23===c)e.hasVStems=!0;else if(e.hasVStems&&(1===c||18===c)){warn("CFF stem hints are in wrong order");t[o-1]=1===c?3:23}}if("min"in l&&!e.undefStack&&i=2&&l.stem?i%=2:i>1&&warn("Found too many parameters for stack-clearing command");i>0&&(e.width=n[i-1])}if("stackDelta"in l){"stackFn"in l&&l.stackFn(n,i);i+=l.stackDelta}else if(l.stackClearing)i=0;else if(l.resetStack){i=0;e.undefStack=!1}else if(l.undefStack){i=0;e.undefStack=!0;e.firstStackClearing=!1}}}s=i.length){warn("Invalid fd index for glyph index.");u=!1}if(u){f=i[e].privateDict;d=f.subrsIndex}}else t&&(d=t);u&&(u=this.parseCharString(h,c,d,a));if(null!==h.width){const e=f.getByName("nominalWidthX");o[l]=e+h.width}else{const e=f.getByName("defaultWidthX");o[l]=e}null!==h.seac&&(s[l]=h.seac);u||e.set(l,new Uint8Array([14]))}return{charStrings:e,seacs:s,widths:o}}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 a=t[0],r=t[1];if(0===a||r>=this.bytes.length){this.emptyPrivateDictionary(e);return}const i=r+a,n=this.bytes.subarray(r,i),s=this.parseDict(n),o=this.createDict(CFFPrivateDict,s,e.strings);e.privateDict=o;0===o.getByName("ExpansionFactor")&&o.setByName("ExpansionFactor",.06);if(!o.getByName("Subrs"))return;const c=o.getByName("Subrs"),l=r+c;if(0===c||l>=this.bytes.length){this.emptyPrivateDictionary(e);return}const h=this.parseIndex(l);o.subrsIndex=h.obj}parseCharsets(e,t,a,r){if(0===e)return new CFFCharset(!0,Pr.ISO_ADOBE,Fr);if(1===e)return new CFFCharset(!0,Pr.EXPERT,Ir);if(2===e)return new CFFCharset(!0,Pr.EXPERT_SUBSET,Tr);const i=this.bytes,n=e,s=i[e++],o=[r?0:".notdef"];let c,l,h;t-=1;switch(s){case 0:for(h=0;h=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,a,r){this.major=e;this.minor=t;this.hdrSize=a;this.offSize=r}}class CFFStrings{constructor(){this.strings=[]}get(e){return e>=0&&e<=390?Or[e]:e-Mr<=this.strings.length?this.strings[e-Mr]:Or[0]}getSID(e){let t=Or.indexOf(e);if(-1!==t)return t;t=this.strings.indexOf(e);return-1!==t?t+Mr:-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 a of t)if(isNaN(a)){warn(`Invalid CFFDict value: "${t}" for key "${e}".`);return!0}const a=this.types[e];"num"!==a&&"sid"!==a&&"offset"!==a||(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 a of e){const e=Array.isArray(a[0])?(a[0][0]<<8)+a[0][1]:a[0];t.keyToNameMap[e]=a[1];t.nameToKeyMap[a[1]]=e;t.types[e]=a[2];t.defaults[e]=a[3];t.opcodes[e]=Array.isArray(a[0])?a[0]:[a[0]];t.order.push(e)}return t}}const Nr=[[[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(Nr))}constructor(e){super(CFFTopDict.tables,e);this.privateDict=null}}const Er=[[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(Er))}constructor(e){super(CFFPrivateDict.tables,e);this.subrsIndex=null}}const Pr={ISO_ADOBE:0,EXPERT:1,EXPERT_SUBSET:2};class CFFCharset{constructor(e,t,a,r){this.predefined=e;this.format=t;this.charset=a;this.raw=r}}class CFFEncoding{constructor(e,t,a,r){this.predefined=e;this.format=t;this.encoding=a;this.raw=r}}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,a){if(!(e in this.offsets))throw new FormatError(`Not tracking location of ${e}`);const r=a.data,i=this.offsets[e];for(let e=0,a=t.length;e>24&255;r[s]=l>>16&255;r[o]=l>>8&255;r[c]=255&l}}}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}},a=this.compileHeader(e.header);t.add(a);const r=this.compileNameIndex(e.names);t.add(r);if(e.isCIDFont&&e.topDict.hasName("FontMatrix")){const t=e.topDict.getByName("FontMatrix");e.topDict.removeByName("FontMatrix");for(const a of e.fdArray){let e=t.slice(0);a.hasName("FontMatrix")&&(e=Util.transform(e,a.getByName("FontMatrix")));a.setByName("FontMatrix",e)}}const i=e.topDict.getByName("XUID");i?.length>16&&e.topDict.removeByName("XUID");e.topDict.setByName("charset",0);let n=this.compileTopDicts([e.topDict],t.length,e.isCIDFont);t.add(n.output);const s=n.trackers[0],o=this.compileStringIndex(e.strings.strings);t.add(o);const c=this.compileIndex(e.globalSubrIndex);t.add(c);if(e.encoding&&e.topDict.hasName("Encoding"))if(e.encoding.predefined)s.setEntryLocation("Encoding",[e.encoding.format],t);else{const a=this.compileEncoding(e.encoding);s.setEntryLocation("Encoding",[t.length],t);t.add(a)}const l=this.compileCharset(e.charset,e.charStrings.count,e.strings,e.isCIDFont);s.setEntryLocation("charset",[t.length],t);t.add(l);const h=this.compileCharStrings(e.charStrings);s.setEntryLocation("CharStrings",[t.length],t);t.add(h);if(e.isCIDFont){s.setEntryLocation("FDSelect",[t.length],t);const a=this.compileFDSelect(e.fdSelect);t.add(a);n=this.compileTopDicts(e.fdArray,t.length,!0);s.setEntryLocation("FDArray",[t.length],t);t.add(n.output);const r=n.trackers;this.compilePrivateDicts(e.fdArray,r,t)}this.compilePrivateDicts([e.topDict],[s],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 a=CFFCompiler.EncodeFloatRegExp.exec(t);if(a){const r=parseFloat("1e"+((a[2]?+a[2]:0)+a[1].length));t=(Math.round(e*r)/r).toString()}let r,i,n="";for(r=0,i=t.length;r=-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 a of e){const e=Math.min(a.length,127);let r=new Array(e);for(let t=0;t"~"||"["===e||"]"===e||"("===e||")"===e||"{"===e||"}"===e||"<"===e||">"===e||"/"===e||"%"===e)&&(e="_");r[t]=e}r=r.join("");""===r&&(r="Bad_Font_Name");t.add(stringToBytes(r))}return this.compileIndex(t)}compileTopDicts(e,t,a){const r=[];let i=new CFFIndex;for(const n of e){if(a){n.removeByName("CIDFontVersion");n.removeByName("CIDFontRevision");n.removeByName("CIDFontType");n.removeByName("CIDCount");n.removeByName("UIDBase")}const e=new CFFOffsetTracker,s=this.compileDict(n,e);r.push(e);i.add(s);e.offset(t)}i=this.compileIndex(i,r);return{trackers:r,output:i}}compilePrivateDicts(e,t,a){for(let r=0,i=e.length;r>8&255,255&e])}else{i=new Uint8Array(1+2*n);i[0]=0;let t=0;const r=e.charset.length;let s=!1;for(let n=1;n>8&255;i[n+1]=255&o}}return this.compileTypedArray(i)}compileEncoding(e){return this.compileTypedArray(e.raw)}compileFDSelect(e){const t=e.format;let a,r;switch(t){case 0:a=new Uint8Array(1+e.fdSelect.length);a[0]=t;for(r=0;r>8&255,255&i,n];for(r=1;r>8&255,255&r,t);n=t}}const o=(s.length-3)/3;s[1]=o>>8&255;s[2]=255&o;s.push(r>>8&255,255&r);a=new Uint8Array(s)}return this.compileTypedArray(a)}compileTypedArray(e){return Array.from(e)}compileIndex(e,t=[]){const a=e.objects,r=a.length;if(0===r)return[0,0];const i=[r>>8&255,255&r];let n,s,o=1;for(n=0;n>8&255,255&c):3===s?i.push(c>>16&255,c>>8&255,255&c):i.push(c>>>24&255,c>>16&255,c>>8&255,255&c);a[n]&&(c+=a[n].length)}for(n=0;n=this.firstChar&&e<=this.lastChar?e:-1}amend(e){unreachable("Should not call amend()")}}class CFFFont{constructor(e,t){this.properties=t;const a=new CFFParser(e,t,wr);this.cff=a.parse();this.cff.duplicateFirstGlyph();const r=new CFFCompiler(this.cff);this.seacs=this.cff.seacs;try{this.data=r.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:a,cMap:r}=t,i=e.charset.charset;let n,s;if(t.composite){let t,o;if(a?.length>0){t=Object.create(null);for(let e=0,r=a.length;e=0){const r=a[t];r&&(i[e]=r)}}i.length>0&&(this.properties.builtInEncoding=i)}}function getFloat214(e,t){return readInt16(e,t)/16384}function getSubroutineBias(e){const t=e.length;let a=32768;t<1240?a=107:t<33900&&(a=1131);return a}function parseCmap(e,t,a){const r=1===readUint16(e,t+2)?readUint32(e,t+8):readUint32(e,t+16),i=readUint16(e,t+r);let n,s,o;if(4===i){readUint16(e,t+r+2);const a=readUint16(e,t+r+6)>>1;s=t+r+14;n=[];for(o=0;o>1;a0;)h.push({flags:n})}for(a=0;a>1;y=!0;break;case 4:s+=i.pop();moveTo(n,s);y=!0;break;case 5:for(;i.length>0;){n+=i.shift();s+=i.shift();lineTo(n,s)}break;case 6:for(;i.length>0;){n+=i.shift();lineTo(n,s);if(0===i.length)break;s+=i.shift();lineTo(n,s)}break;case 7:for(;i.length>0;){s+=i.shift();lineTo(n,s);if(0===i.length)break;n+=i.shift();lineTo(n,s)}break;case 8:for(;i.length>0;){l=n+i.shift();u=s+i.shift();h=l+i.shift();d=u+i.shift();n=h+i.shift();s=d+i.shift();bezierCurveTo(l,u,h,d,n,s)}break;case 10:m=i.pop();b=null;if(a.isCFFCIDFont){const e=a.fdSelect.getFDIndex(r);if(e>=0&&eMath.abs(s-t)?n+=i.shift():s+=i.shift();bezierCurveTo(l,u,h,d,n,s);break;default:throw new FormatError(`unknown operator: 12 ${w}`)}break;case 14:if(i.length>=4){const e=i.pop(),r=i.pop();s=i.pop();n=i.pop();t.save();t.translate(n,s);let o=lookupCmap(a.cmap,String.fromCharCode(a.glyphNameMap[lr[e]]));compileCharString(a.glyphs[o.glyphId],t,a,o.glyphId);t.restore();o=lookupCmap(a.cmap,String.fromCharCode(a.glyphNameMap[lr[r]]));compileCharString(a.glyphs[o.glyphId],t,a,o.glyphId)}return;case 19:case 20:o+=i.length>>1;c+=o+7>>3;y=!0;break;case 21:s+=i.pop();n+=i.pop();moveTo(n,s);y=!0;break;case 22:n+=i.pop();moveTo(n,s);y=!0;break;case 24:for(;i.length>2;){l=n+i.shift();u=s+i.shift();h=l+i.shift();d=u+i.shift();n=h+i.shift();s=d+i.shift();bezierCurveTo(l,u,h,d,n,s)}n+=i.shift();s+=i.shift();lineTo(n,s);break;case 25:for(;i.length>6;){n+=i.shift();s+=i.shift();lineTo(n,s)}l=n+i.shift();u=s+i.shift();h=l+i.shift();d=u+i.shift();n=h+i.shift();s=d+i.shift();bezierCurveTo(l,u,h,d,n,s);break;case 26:i.length%2&&(n+=i.shift());for(;i.length>0;){l=n;u=s+i.shift();h=l+i.shift();d=u+i.shift();n=h;s=d+i.shift();bezierCurveTo(l,u,h,d,n,s)}break;case 27:i.length%2&&(s+=i.shift());for(;i.length>0;){l=n+i.shift();u=s;h=l+i.shift();d=u+i.shift();n=h+i.shift();s=d;bezierCurveTo(l,u,h,d,n,s)}break;case 28:i.push(readInt16(e,c));c+=2;break;case 29:m=i.pop()+a.gsubrsBias;b=a.gsubrs[m];b&&parse(b);break;case 30:for(;i.length>0;){l=n;u=s+i.shift();h=l+i.shift();d=u+i.shift();n=h+i.shift();s=d+(1===i.length?i.shift():0);bezierCurveTo(l,u,h,d,n,s);if(0===i.length)break;l=n+i.shift();u=s;h=l+i.shift();d=u+i.shift();s=d+i.shift();n=h+(1===i.length?i.shift():0);bezierCurveTo(l,u,h,d,n,s)}break;case 31:for(;i.length>0;){l=n+i.shift();u=s;h=l+i.shift();d=u+i.shift();s=d+i.shift();n=h+(1===i.length?i.shift():0);bezierCurveTo(l,u,h,d,n,s);if(0===i.length)break;l=n;u=s+i.shift();h=l+i.shift();d=u+i.shift();n=h+i.shift();s=d+(1===i.length?i.shift():0);bezierCurveTo(l,u,h,d,n,s)}break;default:if(w<32)throw new FormatError(`unknown operator: ${w}`);if(w<247)i.push(w-139);else if(w<251)i.push(256*(w-247)+e[c++]+108);else if(w<255)i.push(256*-(w-251)-e[c++]-108);else{i.push((e[c]<<24|e[c+1]<<16|e[c+2]<<8|e[c+3])/65536);c+=4}}y&&(i.length=0)}}(e)}class Commands{cmds=[];transformStack=[];currentTransform=[1,0,0,1,0,0];add(e,t){if(t){const{currentTransform:a}=this;for(let e=0,r=t.length;e=0&&e2*readUint16(e,t)}const n=[];let s=i(t,0);for(let a=r;ae.getSize()+3&-4))}write(){const e=this.getSize(),t=new DataView(new ArrayBuffer(e)),a=e>131070,r=a?4:2,i=new DataView(new ArrayBuffer((this.glyphs.length+1)*r));a?i.setUint32(0,0):i.setUint16(0,0);let n=0,s=0;for(const e of this.glyphs){n+=e.write(n,t);n=n+3&-4;s+=r;a?i.setUint32(s,n):i.setUint16(s,n>>1)}return{isLocationLong:a,loca:new Uint8Array(i.buffer),glyf:new Uint8Array(t.buffer)}}scale(e){for(let t=0,a=this.glyphs.length;te.getSize()));return this.header.getSize()+e}write(e,t){if(!this.header)return 0;const a=e;e+=this.header.write(e,t);if(this.simple)e+=this.simple.write(e,t);else for(const a of this.composites)e+=a.write(e,t);return e-a}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 a of this.composites)a.scale(t,e)}}class GlyphHeader{constructor({numberOfContours:e,xMin:t,yMin:a,xMax:r,yMax:i}){this.numberOfContours=e;this.xMin=t;this.yMin=a;this.xMax=r;this.yMax=i}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:a}){this.xCoordinates=t;this.yCoordinates=a;this.flags=e}}class SimpleGlyph{constructor({contours:e,instructions:t}){this.contours=e;this.instructions=t}static parse(e,t,a){const r=[];for(let i=0;i255?e+=2:o>0&&(e+=1);t=n;o=Math.abs(s-a);o>255?e+=2:o>0&&(e+=1);a=s}}return e}write(e,t){const a=e,r=[],i=[],n=[];let s=0,o=0;for(const a of this.contours){for(let e=0,t=a.xCoordinates.length;e=0?18:2;r.push(e)}else r.push(l)}s=c;const h=a.yCoordinates[e];l=h-o;if(0===l){t|=32;i.push(0)}else{const e=Math.abs(l);if(e<=255){t|=l>=0?36:4;i.push(e)}else i.push(l)}o=h;n.push(t)}t.setUint16(e,r.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 a of n)t.setUint8(e++,a);for(let a=0,i=r.length;a=-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 a=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-a}scale(e,t){}}function writeInt16(e,t,a){e[t]=a>>8&255;e[t+1]=255&a}function writeInt32(e,t,a){e[t]=a>>24&255;e[t+1]=a>>16&255;e[t+2]=a>>8&255;e[t+3]=255&a}function writeData(e,t,a){if(a instanceof Uint8Array)e.set(a,t);else if("string"==typeof a)for(let r=0,i=a.length;ra;){a<<=1;r++}const i=a*t;return{range:i,entry:r,rangeShift:t*e-i}}toArray(){let e=this.sfnt;const t=this.tables,a=Object.keys(t);a.sort();const r=a.length;let i,n,s,o,c,l=12+16*r;const h=[l];for(i=0;i>>0;h.push(l)}const u=new Uint8Array(l);for(i=0;i>>0}writeInt32(u,l+4,e);writeInt32(u,l+8,h[i]);writeInt32(u,l+12,t[c].length);l+=16}return u}addTable(e,t){if(e in this.tables)throw new Error("Table "+e+" already exists");this.tables[e]=t}}const $r=[4],Vr=[5],Kr=[6],Jr=[7],Yr=[8],Zr=[12,35],Qr=[14],ei=[21],ti=[22],ai=[30],ri=[31];class Type1CharString{constructor(){this.width=0;this.lsb=0;this.flexing=!1;this.output=[];this.stack=[]}convert(e,t,a){const r=e.length;let i,n,s,o=!1;for(let c=0;cr)return!0;const i=r-e;for(let e=i;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);a?this.stack.splice(i,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,a){if(a>=e.length)return new Uint8Array(0);let r,i,n=0|t;for(r=0;r>8;n=52845*(t+n)+22719&65535}return o}function isSpecial(e){return 47===e||91===e||93===e||123===e||125===e||40===e||41===e}class Type1Parser{constructor(e,t,a){if(t){const t=e.getBytes(),a=!((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(a?decrypt(t,55665,4):function decryptAscii(e,t,a){let r=0|t;const i=e.length,n=new Uint8Array(i>>>1);let s,o;for(s=0,o=0;s>8;r=52845*(e+r)+22719&65535}}return n.slice(a,o)}(t,55665,4))}this.seacAnalysisEnabled=!!a;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 a="";do{a+=String.fromCharCode(t);t=this.nextChar()}while(t>=0&&!isWhiteSpace(t)&&!isSpecial(t));return a}readCharStrings(e,t){return-1===t?e:decrypt(e,4330,t)}extractFontProgram(e){const t=this.stream,a=[],r=[],i=Object.create(null);i.lenIV=4;const n={subrs:[],charstrings:[],properties:{privateData:i}};let s,o,c,l;for(;null!==(s=this.getToken());)if("/"===s){s=this.getToken();switch(s){case"CharStrings":this.getToken();this.getToken();this.getToken();this.getToken();for(;;){s=this.getToken();if(null===s||"end"===s)break;if("/"!==s)continue;const e=this.getToken();o=this.readInt();this.getToken();c=o>0?t.getBytes(o):new Uint8Array(0);l=n.properties.privateData.lenIV;const a=this.readCharStrings(c,l);this.nextChar();s=this.getToken();"noaccess"===s?this.getToken():"/"===s&&this.prevChar();r.push({glyph:e,encoded:a})}break;case"Subrs":this.readInt();this.getToken();for(;"dup"===this.getToken();){const e=this.readInt();o=this.readInt();this.getToken();c=o>0?t.getBytes(o):new Uint8Array(0);l=n.properties.privateData.lenIV;const r=this.readCharStrings(c,l);this.nextChar();s=this.getToken();"noaccess"===s&&this.getToken();a[e]=r}break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":const e=this.readNumberArray();e.length>0&&e.length,0;break;case"StemSnapH":case"StemSnapV":n.properties.privateData[s]=this.readNumberArray();break;case"StdHW":case"StdVW":n.properties.privateData[s]=this.readNumberArray()[0];break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":n.properties.privateData[s]=this.readNumber();break;case"ExpansionFactor":n.properties.privateData[s]=this.readNumber()||.06;break;case"ForceBold":n.properties.privateData[s]=this.readBoolean()}}for(const{encoded:t,glyph:i}of r){const r=new Type1CharString,s=r.convert(t,a,this.seacAnalysisEnabled);let o=r.output;s&&(o=[14]);const c={glyphName:i,charstring:o,width:r.width,lsb:r.lsb,seac:r.seac};".notdef"===i?n.charstrings.unshift(c):n.charstrings.push(c);if(e.builtInEncoding){const t=e.builtInEncoding.indexOf(i);t>-1&&void 0===e.widths[t]&&t>=e.firstChar&&t<=e.lastChar&&(e.widths[t]=r.width)}}return n}extractFontHeader(e){let t;for(;null!==(t=this.getToken());)if("/"===t){t=this.getToken();switch(t){case"FontMatrix":const a=this.readNumberArray();e.fontMatrix=a;break;case"Encoding":const r=this.getToken();let i;if(/^\d+$/.test(r)){i=[];const e=0|parseInt(r,10);this.getToken();for(let a=0;a=i){s+=a;for(;s=0&&(r[e]=i)}}return type1FontGlyphMapping(e,r,a)}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 a=0,r=e.length;a0;e--)t[e]-=t[e-1];f.setByName(e,t)}n.topDict.privateDict=f;const p=new CFFIndex;for(h=0,u=r.length;h0&&e.toUnicode.amend(t)}class fonts_Glyph{constructor(e,t,a,r,i,n,s,o,c){this.originalCharCode=e;this.fontChar=t;this.unicode=a;this.accent=r;this.width=i;this.vmetric=n;this.operatorListId=s;this.isSpace=o;this.isInFont=c}get category(){return shadow(this,"category",function getCharUnicodeCategory(e){const t=yr.get(e);if(t)return t;const a=e.match(br),r={isWhitespace:!!a?.[1],isZeroWidthDiacritic:!!a?.[2],isInvisibleFormatMark:!!a?.[3]};yr.set(e,r);return r}(this.unicode),!0)}}function int16(e,t){return(e<<8)+t}function writeSignedInt16(e,t,a){e[t+1]=a;e[t]=a>>>8}function signedInt16(e,t){const a=(e<<8)+t;return 32768&a?a-65536:a}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:a,composite:r}){let i,n;if(function isTrueTypeFile(e){const t=e.peekBytes(4);return 65536===readUint32(t,0)||"true"===bytesToString(t)}(e)||isTrueTypeCollectionFile(e))i=r?"CIDFontType2":"TrueType";else if(function isOpenTypeFile(e){return"OTTO"===bytesToString(e.peekBytes(4))}(e))i=r?"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))i=r?"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(r){i="CIDFontType0";n="CIDFontType0C"}else{i="MMType1"===t?"MMType1":"Type1";n="Type1C"}else{warn("getFontFileType: Unable to detect correct font file Type/Subtype.");i=t;n=a}return[i,n]}function applyStandardFontGlyphMap(e,t){for(const a in t)e[+a]=t[a]}function buildToFontChar(e,t,a){const r=[];let i;for(let a=0,n=e.length;aii[0][0]<=e&&e<=ii[0][1]||ii[1][0]<=e&&e<=ii[1][1];let u=null;for(const d in e){let f=e[d];if(!t(f))continue;if(l>h){c++;if(c>=ii.length){warn("Ran out of space in font private use area.");break}l=ii[c][0];h=ii[c][1]}const g=l++;0===f&&(f=a);let p=r.get(d);if("string"==typeof p)if(1===p.length)p=p.codePointAt(0);else{if(!u){u=new Map;for(let e=64256;e<=64335;e++){const t=String.fromCharCode(e).normalize("NFKD");t.length>1&&u.set(t,e)}}p=u.get(p)||p.codePointAt(0)}if(p&&!isInPrivateArea(p)&&!o.has(f)){n.set(p,f);o.add(f)}i[g]=f;s[d]=g}return{toFontChar:s,charCodeToGlyphId:i,toUnicodeExtraMap:n,nextAvailableFontCharCode:l}}function createCmapTable(e,t,a){const r=function getRanges(e,t,a){const r=[];for(const t in e)e[t]>=a||r.push({fontCharCode:0|t,glyphId:e[t]});if(t)for(const[e,i]of t)i>=a||r.push({fontCharCode:e,glyphId:i});0===r.length&&r.push({fontCharCode:0,glyphId:0});r.sort((e,t)=>e.fontCharCode-t.fontCharCode);const i=[],n=r.length;for(let e=0;e65535?2:1;let n,s,o,c,l="\0\0"+string16(i)+"\0\0"+string32(4+8*i);for(n=r.length-1;n>=0&&!(r[n][0]<=65535);--n);const h=n+1;r[n][0]<65535&&65535===r[n][1]&&(r[n][1]=65534);const u=r[n][1]<65535?1:0,d=h+u,f=OpenTypeFileBuilder.getSearchParams(d,2);let g,p,m,b,y="",w="",x="",S="",k="",C=0;for(n=0,s=h;n0){w+="ÿÿ";y+="ÿÿ";x+="\0";S+="\0\0"}const v="\0\0"+string16(2*d)+string16(f.range)+string16(f.entry)+string16(f.rangeShift)+w+"\0\0"+y+x+S+k;let F="",T="";if(i>1){l+="\0\0\n"+string32(4+8*i+4+v.length);F="";for(n=0,s=r.length;ne||!o)&&(o=e);c 123 are reserved for internal usage");s|=1<65535&&(c=65535)}else{o=0;c=255}const h=e.bbox||[0,0,0,0],u=a.unitsPerEm||(e.fontMatrix?1/Math.max(...e.fontMatrix.slice(0,4).map(Math.abs)):1e3),d=e.ascentScaled?1:u/ni,f=a.ascent||Math.round(d*(e.ascent||h[3]));let g=a.descent||Math.round(d*(e.descent||h[1]));g>0&&e.descent>0&&h[1]<0&&(g=-g);const p=a.yMax||f,m=-a.yMin||-g;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(r)+string32(i)+string32(n)+string32(s)+"*21*"+string16(e.italicAngle?1:0)+string16(o||e.firstChar)+string16(c||e.lastChar)+string16(f)+string16(g)+"\0d"+string16(p)+string16(m)+"\0\0\0\0\0\0\0\0"+string16(e.xHeight)+string16(e.capHeight)+string16(0)+string16(o||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 a=[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"],r=[];let i,n,s,o,c;for(i=0,n=a.length;i0;if((s||o)&&"CIDFontType2"===a&&this.cidEncoding.startsWith("Identity-")){const a=e.cidToGidMap,r=[];applyStandardFontGlyphMap(r,qr());/Arial-?Black/i.test(t)?applyStandardFontGlyphMap(r,Hr()):/Calibri/i.test(t)&&applyStandardFontGlyphMap(r,Wr());if(a){for(const e in r){const t=r[e];void 0!==a[t]&&(r[+e]=a[t])}a.length!==this.toUnicode.length&&e.hasIncludedToUnicodeMap&&this.toUnicode instanceof IdentityToUnicodeMap&&this.toUnicode.forEach(function(e,t){const i=r[e];void 0===a[i]&&(r[+e]=t)})}this.toUnicode instanceof IdentityToUnicodeMap||this.toUnicode.forEach(function(e,t){r[+e]=t});this.toFontChar=r;this.toUnicode=new ToUnicodeMap(r)}else if(/Symbol/i.test(r))this.toFontChar=buildToFontChar(ur,fr(),this.differences);else if(/Dingbats/i.test(r))this.toFontChar=buildToFontChar(dr,gr(),this.differences);else if(s||o){const e=buildToFontChar(this.defaultEncoding,fr(),this.differences);"CIDFontType2"!==a||this.cidEncoding.startsWith("Identity-")||this.toUnicode instanceof IdentityToUnicodeMap||this.toUnicode.forEach(function(t,a){e[+t]=a});this.toFontChar=e}else{const e=fr(),a=[];this.toUnicode.forEach((t,r)=>{if(!this.composite){const a=getUnicodeForGlyph(this.differences[t]||this.defaultEncoding[t],e);-1!==a&&(r=a)}a[+t]=r});this.composite&&this.toUnicode instanceof IdentityToUnicodeMap&&/Tahoma|Verdana/i.test(t)&&applyStandardFontGlyphMap(a,qr());this.toFontChar=a}amendFallbackToUnicode(e);this.loadedName=r.split("-",1)[0]}checkAndRepair(e,t,a){const r=["OS/2","cmap","head","hhea","hmtx","maxp","name","post","loca","glyf","fpgm","prep","cvt ","CFF "];function readTables(e,t){const a=Object.create(null);a["OS/2"]=null;a.cmap=null;a.head=null;a.hhea=null;a.hmtx=null;a.maxp=null;a.name=null;a.post=null;for(let i=0;i>>0,r=e.getInt32()>>>0,i=e.getInt32()>>>0,n=e.pos;e.pos=e.start||0;e.skip(r);const s=e.getBytes(i);e.pos=n;if("head"===t){s[8]=s[9]=s[10]=s[11]=0;s[17]|=32}return{tag:t,checksum:a,length:i,offset:r,data:s}}function readOpenTypeHeader(e){return{version:e.getString(4),numTables:e.getUint16(),searchRange:e.getUint16(),entrySelector:e.getUint16(),rangeShift:e.getUint16()}}function sanitizeGlyph(e,t,a,r,i,n){const s={length:0,sizeOfInstructions:0};if(t<0||t>=e.length||a>e.length||a-t<=12)return s;const o=e.subarray(t,a),c=signedInt16(o[2],o[3]),l=signedInt16(o[4],o[5]),h=signedInt16(o[6],o[7]),u=signedInt16(o[8],o[9]);if(c>h){writeSignedInt16(o,2,h);writeSignedInt16(o,6,c)}if(l>u){writeSignedInt16(o,4,u);writeSignedInt16(o,8,l)}const d=signedInt16(o[0],o[1]);if(d<0){if(d<-1)return s;r.set(o,i);s.length=o.length;return s}let f,g=10,p=0;for(f=0;fo.length)return s;if(!n&&b>0){r.set(o.subarray(0,m),i);r.set([0,0],i+m);r.set(o.subarray(y,x),i+m+2);x-=b;o.length-x>3&&(x=x+3&-4);s.length=x;return s}if(o.length-x>3){x=x+3&-4;r.set(o.subarray(0,x),i);s.length=x;return s}r.set(o,i);s.length=o.length;return s}function readNameTable(e){const a=(t.start||0)+e.offset;t.pos=a;const r=[[],[]],i=[],n=e.length,s=a+n;if(0!==t.getUint16()||n<6)return[r,i];const o=t.getUint16(),c=t.getUint16();let l,h;for(l=0;ls)continue;t.pos=n;const o=e.name;if(e.encoding){let a="";for(let r=0,i=e.length;r0&&(l+=e-1)}}else{if(m||y){warn("TT: nested FDEFs not allowed");p=!0}m=!0;u=l;s=d.pop();t.functionsDefined[s]={data:c,i:l}}else if(!m&&!y){s=d.at(-1);if(isNaN(s))info("TT: CALL empty stack (or invalid entry).");else{t.functionsUsed[s]=!0;if(s in t.functionsStackDeltas){const e=d.length+t.functionsStackDeltas[s];if(e<0){warn("TT: CALL invalid functions stack delta.");t.hintsValid=!1;return}d.length=e}else if(s in t.functionsDefined&&!g.includes(s)){f.push({data:c,i:l,stackTop:d.length-1});g.push(s);o=t.functionsDefined[s];if(!o){warn("TT: CALL non-existent function");t.hintsValid=!1;return}c=o.data;l=o.i}}}if(!m&&!y){let t=0;e<=142?t=i[e]:e>=192&&e<=223?t=-1:e>=224&&(t=-2);if(e>=113&&e<=117){r=d.pop();isNaN(r)||(t=2*-r)}for(;t<0&&d.length>0;){d.pop();t++}for(;t>0;){d.push(NaN);t--}}}t.tooComplexToFollowFunctions=p;const w=[c];l>c.length&&w.push(new Uint8Array(l-c.length));if(u>h){warn("TT: complementing a missing function tail");w.push(new Uint8Array([34,45]))}!function foldTTTable(e,t){if(t.length>1){let a,r,i=0;for(a=0,r=t.length;a>>0,n=[];for(let t=0;t>>0);const s={ttcTag:t,majorVersion:a,minorVersion:r,numFonts:i,offsetTable:n};switch(a){case 1:return s;case 2:s.dsigTag=e.getInt32()>>>0;s.dsigLength=e.getInt32()>>>0;s.dsigOffset=e.getInt32()>>>0;return s}throw new FormatError(`Invalid TrueType Collection majorVersion: ${a}.`)}(e),i=t.split("+");let n;for(let s=0;s0||!(a.cMap instanceof IdentityCMap));if("OTTO"===n.version&&!t||!s.head||!s.hhea||!s.maxp||!s.post){c=new Stream(s["CFF "].data);o=new CFFFont(c,a);return this.convert(e,o,a)}delete s.glyf;delete s.loca;delete s.fpgm;delete s.prep;delete s["cvt "];this.isOpenType=!0}if(!s.maxp)throw new FormatError('Required "maxp" table is not found');t.pos=(t.start||0)+s.maxp.offset;let h=t.getInt32();const u=t.getUint16();if(65536!==h&&20480!==h){if(6===s.maxp.length)h=20480;else{if(!(s.maxp.length>=32))throw new FormatError('"maxp" table has a wrong version number');h=65536}!function writeUint32(e,t,a){e[t+3]=255&a;e[t+2]=a>>>8;e[t+1]=a>>>16;e[t]=a>>>24}(s.maxp.data,0,h)}if(a.scaleFactors?.length===u&&l){const{scaleFactors:e}=a,t=int16(s.head.data[50],s.head.data[51]),r=new GlyfTable({glyfTable:s.glyf.data,isGlyphLocationsLong:t,locaTable:s.loca.data,numGlyphs:u});r.scale(e);const{glyf:i,loca:n,isLocationLong:o}=r.write();s.glyf.data=i;s.loca.data=n;if(o!==!!t){s.head.data[50]=0;s.head.data[51]=o?1:0}const c=s.hmtx.data;for(let t=0;t>8&255;c[a+1]=255&r;writeSignedInt16(c,a+2,Math.round(e[t]*signedInt16(c[a+2],c[a+3])))}}let d=u+1,f=!0;if(d>65535){f=!1;d=u;warn("Not enough space in glyfs to duplicate first glyph.")}let g=0,p=0;if(h>=65536&&s.maxp.length>=32){t.pos+=8;if(t.getUint16()>2){s.maxp.data[14]=0;s.maxp.data[15]=2}t.pos+=4;g=t.getUint16();t.pos+=4;p=t.getUint16()}s.maxp.data[4]=d>>8;s.maxp.data[5]=255&d;const m=function sanitizeTTPrograms(e,t,a,r){const i={functionsDefined:[],functionsUsed:[],functionsStackDeltas:[],tooComplexToFollowFunctions:!1,hintsValid:!0};e&&sanitizeTTProgram(e,i);t&&sanitizeTTProgram(t,i);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 a=0,r=e.functionsUsed.length;at){warn("TT: invalid function id: "+a);e.hintsValid=!1;return}if(e.functionsUsed[a]&&!e.functionsDefined[a]){warn("TT: undefined function: "+a);e.hintsValid=!1;return}}}(i,r);if(a&&1&a.length){const e=new Uint8Array(a.length+1);e.set(a.data);a.data=e}return i.hintsValid}(s.fpgm,s.prep,s["cvt "],g);if(!m){delete s.fpgm;delete s.prep;delete s["cvt "]}!function sanitizeMetrics(e,t,a,r,i,n){if(!t){a&&(a.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 s=e.getUint16();e.pos+=8;e.pos+=2;let o=e.getUint16();if(0!==s){if(!(2&int16(r.data[44],r.data[45]))){t.data[22]=0;t.data[23]=0}}if(o>i){info(`The numOfMetrics (${o}) should not be greater than the numGlyphs (${i}).`);o=i;t.data[34]=(65280&o)>>8;t.data[35]=255&o}const c=i-o-(a.length-4*o>>1);if(c>0){const e=new Uint8Array(a.length+2*c);e.set(a.data);if(n){e[a.length]=a.data[2];e[a.length+1]=a.data[3]}a.data=e}}(t,s.hhea,s.hmtx,s.head,d,f);if(!s.head)throw new FormatError('Required "head" table is not found');!function sanitizeHead(e,t,a){const r=e.data,i=function int32(e,t,a,r){return(e<<24)+(t<<16)+(a<<8)+r}(r[0],r[1],r[2],r[3]);if(i>>16!=1){info("Attempting to fix invalid version in head table: "+i);r[0]=0;r[1]=1;r[2]=0;r[3]=0}const n=int16(r[50],r[51]);if(n<0||n>1){info("Attempting to fix invalid indexToLocFormat in head table: "+n);const e=t+1;if(a===e<<1){r[50]=0;r[51]=0}else{if(a!==e<<2)throw new FormatError("Could not fix indexToLocFormat: "+n);r[50]=0;r[51]=1}}}(s.head,u,l?s.loca.length:0);let b=Object.create(null);if(l){const e=int16(s.head.data[50],s.head.data[51]),t=function sanitizeGlyphLocations(e,t,a,r,i,n,s){let o,c,l;if(r){o=4;c=function fontItemDecodeLong(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]};l=function fontItemEncodeLong(e,t,a){e[t]=a>>>24&255;e[t+1]=a>>16&255;e[t+2]=a>>8&255;e[t+3]=255&a}}else{o=2;c=function fontItemDecode(e,t){return e[t]<<9|e[t+1]<<1};l=function fontItemEncode(e,t,a){e[t]=a>>9&255;e[t+1]=a>>1&255}}const h=n?a+1:a,u=o*(1+h),d=new Uint8Array(u);d.set(e.data.subarray(0,u));e.data=d;const f=t.data,g=f.length,p=new Uint8Array(g);let m,b;const y=[];for(m=0,b=0;mg&&(e=g);y.push({index:m,offset:e,endOffset:0})}y.sort((e,t)=>e.offset-t.offset);for(m=0;me.index-t.index);for(m=0;ms&&(s=e.sizeOfInstructions);S+=t;l(d,b,S)}if(0===S){const e=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);for(m=0,b=o;ma+S)t.data=p.subarray(0,a+S);else{t.data=new Uint8Array(a+S);t.data.set(p.subarray(0,S))}t.data.set(p.subarray(0,a),S);l(e.data,d.length-o,S+a)}else t.data=p.subarray(0,S);return{missingGlyphs:x,maxSizeOfInstructions:s}}(s.loca,s.glyf,u,e,m,f,p);b=t.missingGlyphs;if(h>=65536&&s.maxp.length>=32){s.maxp.data[26]=t.maxSizeOfInstructions>>8;s.maxp.data[27]=255&t.maxSizeOfInstructions}}if(!s.hhea)throw new FormatError('Required "hhea" table is not found');if(0===s.hhea.data[10]&&0===s.hhea.data[11]){s.hhea.data[10]=255;s.hhea.data[11]=255}const y={unitsPerEm:int16(s.head.data[18],s.head.data[19]),yMax:signedInt16(s.head.data[42],s.head.data[43]),yMin:signedInt16(s.head.data[38],s.head.data[39]),ascent:signedInt16(s.hhea.data[4],s.hhea.data[5]),descent:signedInt16(s.hhea.data[6],s.hhea.data[7]),lineGap:signedInt16(s.hhea.data[8],s.hhea.data[9])};this.ascent=y.ascent/y.unitsPerEm;this.descent=y.descent/y.unitsPerEm;this.lineGap=y.lineGap/y.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;s.post&&function readPostScriptTable(e,a,r){const i=(t.start||0)+e.offset;t.pos=i;const n=i+e.length,s=t.getInt32();t.skip(28);let o,c,l=!0;switch(s){case 65536:o=Cr;break;case 131072:const e=t.getUint16();if(e!==r){l=!1;break}const i=[];for(c=0;c=32768){l=!1;break}i.push(e)}if(!l)break;const h=[],u=[];for(;t.pos65535)throw new FormatError("Max size of CID is 65,535");let i=-1;t?i=r:void 0!==e[r]&&(i=e[r]);i>=0&&i>>0;let h=!1;if(o?.platformId!==i||o?.encodingId!==n){if(0!==i||0!==n&&1!==n&&3!==n)if(1===i&&0===n)h=!0;else if(3!==i||1!==n||!r&&o){if(a&&3===i&&0===n){h=!0;let a=!0;if(e>3;e.push(r);a=Math.max(r,a)}const r=[];for(let e=0;e<=a;e++)r.push({firstCode:t.getUint16(),entryCount:t.getUint16(),idDelta:signedInt16(t.getByte(),t.getByte()),idRangePos:t.pos+t.getUint16()});for(let a=0;a<256;a++)if(0===e[a]){t.pos=r[0].idRangePos+2*a;f=t.getUint16();u.push({charCode:a,glyphId:f})}else{const i=r[e[a]];for(d=0;d>1;t.skip(6);const a=[];let r;for(r=0;r>1)-(e-r);i.offsetIndex=s;o=Math.max(o,s+i.end-i.start+1)}else i.offsetIndex=-1}const c=[];for(d=0;d>>0;for(d=0;d>>0,a=t.getInt32()>>>0;let r=t.getInt32()>>>0;for(let t=e;t<=a;t++)u.push({charCode:t,glyphId:r++})}}}u.sort((e,t)=>e.charCode-t.charCode);const g=[],p=new Set;for(const e of u){const{charCode:t}=e;if(!p.has(t)){p.add(t);g.push(e)}}return{platformId:o.platformId,encodingId:o.encodingId,mappings:g,hasShortCmap:h}}(s.cmap,t,this.isSymbolicFont,a.hasEncoding),r=e.platformId,i=e.encodingId,n=e.mappings;let o=[],c=!1;!a.hasEncoding||"MacRomanEncoding"!==a.baseEncodingName&&"WinAnsiEncoding"!==a.baseEncodingName||(o=getEncoding(a.baseEncodingName));if(a.hasEncoding&&!this.isSymbolicFont&&(3===r&&1===i||1===r&&0===i)){const e=fr();for(let t=0;t<256;t++){let s;s=void 0!==this.differences[t]?this.differences[t]:o.length&&""!==o[t]?o[t]:lr[t];if(!s)continue;const c=recoverGlyphName(s,e);let l;3===r&&1===i?l=e[c]:1===r&&0===i&&(l=cr.indexOf(c));if(void 0===l){if(!a.glyphNames&&a.hasIncludedToUnicodeMap&&!(this.toUnicode instanceof IdentityToUnicodeMap)){const e=this.toUnicode.get(t);e&&(l=e.codePointAt(0))}if(void 0===l)continue}for(const e of n)if(e.charCode===l){w[t]=e.glyphId;break}}}else if(0===r){for(const e of n)w[e.charCode]=e.glyphId;c=!0}else if(3===r&&0===i)for(const e of n){let t=e.charCode;t>=61440&&t<=61695&&(t&=255);w[t]=e.glyphId}else for(const e of n)w[e.charCode]=e.glyphId;if(a.glyphNames&&(o.length||this.differences.length))for(let e=0;e<256;++e){if(!c&&void 0!==w[e])continue;const t=this.differences[e]||o[e];if(!t)continue;const r=a.glyphNames.indexOf(t);r>0&&hasGlyph(r)&&(w[e]=r)}}0===w.length&&(w[0]=0);let x=d-1;f||(x=0);if(!a.cssFontInfo){const e=adjustMapping(w,hasGlyph,x,this.toUnicode);this.toFontChar=e.toFontChar;s.cmap={tag:"cmap",data:createCmapTable(e.charCodeToGlyphId,e.toUnicodeExtraMap,d)};s["OS/2"]&&function validateOS2Table(e,t){t.pos=(t.start||0)+e.offset;const a=t.getUint16();t.skip(60);const r=t.getUint16();if(a<4&&768&r)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}(s["OS/2"],t)||(s["OS/2"]={tag:"OS/2",data:createOS2Table(a,e.charCodeToGlyphId,y)})}if(!l)try{c=new Stream(s["CFF "].data);o=new CFFParser(c,a,wr).parse();o.duplicateFirstGlyph();const e=new CFFCompiler(o);s["CFF "].data=e.compile()}catch{warn("Failed to compile font "+a.loadedName)}if(s.name){const[t,r]=readNameTable(s.name);s.name.data=createNameTable(e,t);this.psName=t[0][6]||null;a.composite||function adjustTrueTypeToUnicode(e,t,a){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(e.hasEncoding)return;if(e.toUnicode instanceof IdentityToUnicodeMap)return;if(!t)return;if(0===a.length)return;if(e.defaultEncoding===hr)return;for(const e of a)if(!isWinNameRecord(e))return;const r=hr,i=[],n=fr();for(const e in r){const t=r[e];if(""===t)continue;const a=n[t];void 0!==a&&(i[e]=String.fromCharCode(a))}i.length>0&&e.toUnicode.amend(i)}(a,this.isSymbolicFont,r)}else s.name={tag:"name",data:createNameTable(this.name)};const S=new OpenTypeFileBuilder(n.version);for(const e in s)S.addTable(e,s[e].data);return S.toArray()}convert(e,a,r){r.fixedPitch=!1;r.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 a=[],r=fr();for(const i in t){if(e.hasEncoding&&(e.baseEncodingName||void 0!==e.differences[i]))continue;const n=getUnicodeForGlyph(t[i],r);-1!==n&&(a[i]=String.fromCharCode(n))}a.length>0&&e.toUnicode.amend(a)}(r,r.builtInEncoding);let i=1;a instanceof CFFFont&&(i=a.numGlyphs-1);const n=a.getGlyphMapping(r);let s=null,o=n,c=null;if(!r.cssFontInfo){s=adjustMapping(n,a.hasGlyphId.bind(a),i,this.toUnicode);this.toFontChar=s.toFontChar;o=s.charCodeToGlyphId;c=s.toUnicodeExtraMap}const l=a.numGlyphs;function getCharCodes(e,t){let a=null;for(const r in e)t===e[r]&&(a||=[]).push(0|r);return a}function createCharCode(e,t){for(const a in e)if(t===e[a])return 0|a;s.charCodeToGlyphId[s.nextAvailableFontCharCode]=t;return s.nextAvailableFontCharCode++}const h=a.seacs;if(s&&h?.length){const e=r.fontMatrix||t,i=a.getCharset(),o=Object.create(null);for(let t in h){t|=0;const a=h[t],r=lr[a[2]],c=lr[a[3]],l=i.indexOf(r),u=i.indexOf(c);if(l<0||u<0)continue;const d={x:a[0]*e[0]+a[1]*e[2]+e[4],y:a[0]*e[1]+a[1]*e[3]+e[5]},f=getCharCodes(n,t);if(f)for(const e of f){const t=s.charCodeToGlyphId,a=createCharCode(t,l),r=createCharCode(t,u);o[e]={baseFontCharCode:a,accentFontCharCode:r,accentOffset:d}}}r.seacMap=o}const u=r.fontMatrix?1/Math.max(...r.fontMatrix.slice(0,4).map(Math.abs)):1e3,d=new OpenTypeFileBuilder("OTTO");d.addTable("CFF ",a.data);d.addTable("OS/2",createOS2Table(r,o));d.addTable("cmap",createCmapTable(o,c,l));d.addTable("head","\0\0\0\0\0\0\0\0\0\0_<õ\0\0"+safeString16(u)+"\0\0\0\0ž\v~'\0\0\0\0ž\v~'\0\0"+safeString16(r.descent)+"ÿ"+safeString16(r.ascent)+string16(r.italicAngle?2:0)+"\0\0\0\0\0\0\0");d.addTable("hhea","\0\0\0"+safeString16(r.ascent)+safeString16(r.descent)+"\0\0ÿÿ\0\0\0\0\0\0"+safeString16(r.capHeight)+safeString16(Math.tan(r.italicAngle)*r.xHeight)+"\0\0\0\0\0\0\0\0\0\0\0\0"+string16(l));d.addTable("hmtx",function fontFieldsHmtx(){const e=a.charstrings,t=a.cff?a.cff.widths:null;let r="\0\0\0\0";for(let a=1,i=l;a=65520&&e<=65535?0:e>=62976&&e<=63743?pr()[e]||e:173===e?45:e}(a)}this.isType3Font&&(i=a);let h=null;if(this.seacMap?.[e]){l=!0;const t=this.seacMap[e];a=t.baseFontCharCode;h={fontChar:String.fromCodePoint(t.accentFontCharCode),offset:t.accentOffset}}let u="";"number"==typeof a&&(a<=1114111?u=String.fromCodePoint(a):warn(`charToGlyph - invalid fontCharCode: ${a}`));if(this.missingFile&&this.vertical&&1===u.length){const e=vr()[u.charCodeAt(0)];e&&(u=c=String.fromCharCode(e))}n=new fonts_Glyph(e,u,c,h,r,o,i,t,l);return this._glyphCache[e]=n}charsToGlyphs(e){let t=this._charsCache[e];if(t)return t;t=[];if(this.cMap){const a=Object.create(null),r=e.length;let i=0;for(;it.length%2==1,r=this.toUnicode instanceof IdentityToUnicodeMap?e=>this.toUnicode.charCodeOf(e):e=>this.toUnicode.charCodeOf(String.fromCodePoint(e));for(let i=0,n=e.length;i55295&&(n<57344||n>65533)&&i++;if(this.toUnicode){const e=r(n);if(-1!==e){if(hasCurrentBufErrors()){t.push(a.join(""));a.length=0}for(let t=(this.cMap?this.cMap.getCharCodeLength(e):1)-1;t>=0;t--)a.push(String.fromCharCode(e>>8*t&255));continue}}if(!hasCurrentBufErrors()){t.push(a.join(""));a.length=0}a.push(String.fromCodePoint(n))}t.push(a.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(){return{error:this.error}}}class CssFontInfo{#E;#H;#W;static strings=["fontFamily","fontWeight","italicAngle"];static write(e){const t=new TextEncoder,a={};let r=0;for(const i of CssFontInfo.strings){const n=t.encode(e[i]);a[i]=n;r+=4+n.length}const i=new ArrayBuffer(r),n=new Uint8Array(i),s=new DataView(i);let o=0;for(const e of CssFontInfo.strings){const t=a[e],r=t.length;s.setUint32(o,r);n.set(t,o+4);o+=4+r}assert(o===i.byteLength,"CssFontInfo.write: Buffer overflow");return i}constructor(e){this.#E=e;this.#H=new DataView(this.#E);this.#W=new TextDecoder}#G(e){assert(e>a&3;return 0===r?void 0:2===r}get black(){return this.#Y(0)}get bold(){return this.#Y(1)}get disableFontFace(){return this.#Y(2)}get fontExtraProperties(){return this.#Y(3)}get isInvalidPDFjsFont(){return this.#Y(4)}get isType3Font(){return this.#Y(5)}get italic(){return this.#Y(6)}get missingFile(){return this.#Y(7)}get remeasure(){return this.#Y(8)}get vertical(){return this.#Y(9)}#Z(e){assert(e0){let e=l[0],a=l[0],r=l[1],i=l[1];for(let t=0;tn?n:e;r=r>s?s:r;a=a"boolean"==typeof e)})(f,2)&&([u,d]=f);if(!(this.shadingType!==li||u&&d)){const[e,t,a,r,i,n]=this.coordsArr,s=Math.hypot(e-r,t-i);a<=n+s&&n<=a+s&&warn("Unsupported radial gradient.")}this.extendStart=u;this.extendEnd=d;const g=e.getRaw("Function"),p=r.create(g,!0),m=(l-c)/840,b=this.colorStops=[];if(c>=l||m<=0){info("Bad shading domain.");return}const y=new Float32Array(o.numComps),w=new Float32Array(1);let x=0;w[0]=c;p(w,0,y,0);const S=new Uint8ClampedArray(3);o.getRgb(y,0,S);let[k,C,v]=S;b.push([0,Util.makeHexColor(k,C,v)]);let F=1;w[0]=c+m;p(w,0,y,0);o.getRgb(y,0,S);let[T,O,M]=S,D=T-k+1,R=O-C+1,N=M-v+1,E=T-k-1,L=O-C-1,_=M-v-1;for(let e=2;e<840;e++){w[0]=c+e*m;p(w,0,y,0);o.getRgb(y,0,S);const[t,a,r]=S,i=e-x;D=Math.min(D,(t-k+1)/i);R=Math.min(R,(a-C+1)/i);N=Math.min(N,(r-v+1)/i);E=Math.max(E,(t-k-1)/i);L=Math.max(L,(a-C-1)/i);_=Math.max(_,(r-v-1)/i);if(!(E<=D&&L<=R&&_<=N)){const e=Util.makeHexColor(T,O,M);b.push([F/840,e]);D=t-T+1;R=a-O+1;N=r-M+1;E=t-T-1;L=a-O-1;_=r-M-1;x=F;k=T;C=O;v=M}F=e;T=t;O=a;M=r}b.push([1,Util.makeHexColor(T,O,M)]);let U="transparent";e.has("Background")&&(U=o.getRgbHex(e.get("Background"),0));if(!u){b.unshift([0,U]);b[1][0]+=BaseShading.SMALL_NUMBER}if(!d){b.at(-1)[0]-=BaseShading.SMALL_NUMBER;b.push([1,U])}this.colorStops=b}getIR(){const{coordsArr:e,shadingType:t}=this;let a,r,i,n,s;if(t===ci){r=[e[0],e[1]];i=[e[2],e[3]];n=null;s=null;a="axial"}else if(t===li){r=[e[0],e[1]];i=[e[3],e[4]];n=e[2];s=e[5];a="radial"}else unreachable(`getPattern type unknown: ${t}`);return["RadialAxial",a,this.bbox,this.colorStops,r,i,n,s]}}class MeshStreamReader{constructor(e,t){this.stream=e;this.context=t;this.buffer=0;this.bufferLength=0;const a=t.numComps;this.tmpCompsBuf=new Float32Array(a);const r=t.colorSpace.numComps;this.tmpCsCompsBuf=t.colorFn?new Float32Array(r):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){const{stream:t}=this;let{buffer:a,bufferLength:r}=this;if(32===e){if(0===r)return t.getInt32()>>>0;a=a<<24|t.getByte()<<16|t.getByte()<<8|t.getByte();const e=t.getByte();this.buffer=e&(1<>r)>>>0}if(8===e&&0===r)return t.getByte();for(;r>r}align(){this.buffer=0;this.bufferLength=0}readFlag(){return this.readBits(this.context.bitsPerFlag)}readCoordinate(){const{bitsPerCoordinate:e,decode:t}=this.context,a=this.readBits(e),r=this.readBits(e),i=e<32?1/((1<n?n:e;t=t>s?s:t;a=ae*i[t]):a;let s,o=-2;const c=[];for(const[e,t]of r.map((e,t)=>[e,t]).sort(([e],[t])=>e-t))if(-1!==e)if(e===o+1){s.push(n[t]);o+=1}else{o=e;s=[n[t]];c.push(e,s)}return c}(e),a=new Dict(null);a.set("BaseFont",Name.get(e));a.set("Type",Name.get("Font"));a.set("Subtype",Name.get("CIDFontType2"));a.set("Encoding",Name.get("Identity-H"));a.set("CIDToGIDMap",Name.get("Identity"));a.set("W",t);a.set("FirstChar",t[0]);a.set("LastChar",t.at(-2)+t.at(-1).length-1);const r=new Dict(null);a.set("FontDescriptor",r);const i=new Dict(null);i.set("Ordering","Identity");i.set("Registry","Adobe");i.set("Supplement",0);a.set("CIDSystemInfo",i);return a}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(nn.LBRACE);this.parseBlock();this.expect(nn.RBRACE);return this.operators}parseBlock(){for(;;)if(this.accept(nn.NUMBER))this.operators.push(this.prev.value);else if(this.accept(nn.OPERATOR))this.operators.push(this.prev.value);else{if(!this.accept(nn.LBRACE))return;this.parseCondition()}}parseCondition(){const e=this.operators.length;this.operators.push(null,null);this.parseBlock();this.expect(nn.RBRACE);if(this.accept(nn.IF)){this.operators[e]=this.operators.length;this.operators[e+1]="jz"}else{if(!this.accept(nn.LBRACE))throw new FormatError("PS Function: error parsing conditional.");{const t=this.operators.length;this.operators.push(null,null);const a=this.operators.length;this.parseBlock();this.expect(nn.RBRACE);this.expect(nn.IFELSE);this.operators[t]=this.operators.length;this.operators[t+1]="j";this.operators[e]=a;this.operators[e+1]="jz"}}}}const nn={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(nn.OPERATOR,e)}static get LBRACE(){return shadow(this,"LBRACE",new PostScriptToken(nn.LBRACE,"{"))}static get RBRACE(){return shadow(this,"RBRACE",new PostScriptToken(nn.RBRACE,"}"))}static get IF(){return shadow(this,"IF",new PostScriptToken(nn.IF,"IF"))}static get IFELSE(){return shadow(this,"IFELSE",new PostScriptToken(nn.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 sa;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(nn.NUMBER,this.getNumber());case 123:this.nextChar();return PostScriptToken.LBRACE;case 125:this.nextChar();return PostScriptToken.RBRACE}const a=this.strBuf;a.length=0;a[0]=String.fromCharCode(t);for(;(t=this.nextChar())>=0&&(t>=65&&t<=90||t>=97&&t<=122);)a.push(String.fromCharCode(t));const r=a.join("");switch(r.toLowerCase()){case"if":return PostScriptToken.IF;case"ifelse":return PostScriptToken.IFELSE;default:return PostScriptToken.getOperator(r)}}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 a=parseFloat(t.join(""));if(isNaN(a))throw new FormatError(`Invalid floating point number: ${a}`);return a}}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,a){unreachable("Abstract method `set` called.")}}class LocalImageCache extends BaseLocalCache{set(e,t=null,a){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,a)}else this._imageMap.has(e)||this._imageMap.set(e,a)}}class LocalColorSpaceCache extends BaseLocalCache{set(e=null,t=null,a){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,a)}else this._imageMap.has(e)||this._imageMap.set(e,a)}}class LocalFunctionCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,a){if(!t)throw new Error('LocalFunctionCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,a)}}class LocalGStateCache extends BaseLocalCache{set(e,t=null,a){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,a)}else this._imageMap.has(e)||this._imageMap.set(e,a)}}class LocalTilingPatternCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,a){if(!t)throw new Error('LocalTilingPatternCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,a)}}class RegionalImageCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,a){if(!t)throw new Error('RegionalImageCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,a)}}class GlobalColorSpaceCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}set(e=null,t,a){if(!t)throw new Error('GlobalColorSpaceCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,a)}clear(){this._imageCache.clear()}}class GlobalImageCache{static NUM_PAGES_THRESHOLD=2;static MIN_IMAGES_TO_CACHE=10;static MAX_BYTE_SIZE=5e7;#oe=new RefSet;constructor(){this._refCache=new RefSetCache;this._imageCache=new RefSetCache}get#ce(){let e=0;for(const t of this._imageCache)e+=t.byteSize;return e}get#le(){return!(this._imageCache.size+e):null}class PDFFunction{static getSampleArray(e,t,a,r){let i,n,s=1;for(i=0,n=e.length;i>c)*h;l&=(1<0&&(d=n[u-1]);let f=a[1];u>1,c=r.length>>1,l=new PostScriptEvaluator(s),h=Object.create(null);let u=8192;const d=new Float32Array(c);return function constructPostScriptFn(e,t,a,r){let n,s,f="";const g=d;for(n=0;ne&&(s=e)}m[n]=s}if(u>0){u--;h[f]=m}a.set(m,r)}}}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 a=t.length-e,r=e-1;r>=0;r--,a++)t.push(t[a])}index(e){this.push(this.stack[this.stack.length-e-1])}roll(e,t){const a=this.stack,r=a.length-e,i=a.length-1,n=r+(t-Math.floor(t/e)*e);for(let e=r,t=i;e0?t.push(s<>o);break;case"ceiling":s=t.pop();t.push(Math.ceil(s));break;case"copy":s=t.pop();t.copy(s);break;case"cos":s=t.pop();t.push(Math.cos(s%360/180*Math.PI));break;case"cvi":s=0|t.pop();t.push(s);break;case"cvr":break;case"div":o=t.pop();s=t.pop();t.push(s/o);break;case"dup":t.copy(1);break;case"eq":o=t.pop();s=t.pop();t.push(s===o);break;case"exch":t.roll(2,1);break;case"exp":o=t.pop();s=t.pop();t.push(s**o);break;case"false":t.push(!1);break;case"floor":s=t.pop();t.push(Math.floor(s));break;case"ge":o=t.pop();s=t.pop();t.push(s>=o);break;case"gt":o=t.pop();s=t.pop();t.push(s>o);break;case"idiv":o=t.pop();s=t.pop();t.push(s/o|0);break;case"index":s=t.pop();t.index(s);break;case"le":o=t.pop();s=t.pop();t.push(s<=o);break;case"ln":s=t.pop();t.push(Math.log(s));break;case"log":s=t.pop();t.push(Math.log10(s));break;case"lt":o=t.pop();s=t.pop();t.push(s=t?new AstLiteral(t):e.max<=t?e:new AstMin(e,t)}class PostScriptCompiler{compile(e,t,a){const r=[],i=[],n=t.length>>1,s=a.length>>1;let o,c,l,h,u,d,f,g,p=0;for(let e=0;et.min){o.unshift("Math.max(",n,", ");o.push(")")}if(s4){r=!0;t=0}else{r=!1;t=1}const c=[];for(n=0;n=0&&"ET"===ln[e];--e)ln[e]="EN";for(let e=n+1;e0&&(t=ln[n-1]);let a=u;e+1g&&isOdd(g)&&(m=g)}for(g=p;g>=m;--g){let e=-1;for(n=0,s=c.length;n=0){reverseValues(cn,e,n);e=-1}}else e<0&&(e=n);e>=0&&reverseValues(cn,e,c.length)}for(n=0,s=cn.length;n"!==e||(cn[n]="")}return createBidiText(cn.join(""),r)}const hn={style:"normal",weight:"normal"},un={style:"normal",weight:"bold"},dn={style:"italic",weight:"normal"},fn={style:"italic",weight:"bold"},gn=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","PT Astra Serif","DejaVu Serif","Bitstream Vera Serif","Ubuntu"],style:hn,ultimate:"serif"}],["Times-Bold",{alias:"Times-Roman",style:un,ultimate:"serif"}],["Times-Italic",{alias:"Times-Roman",style:dn,ultimate:"serif"}],["Times-BoldItalic",{alias:"Times-Roman",style:fn,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:hn,ultimate:"sans-serif"}],["Helvetica-Bold",{alias:"Helvetica",path:"LiberationSans-Bold.ttf",style:un,ultimate:"sans-serif"}],["Helvetica-Oblique",{alias:"Helvetica",path:"LiberationSans-Italic.ttf",style:dn,ultimate:"sans-serif"}],["Helvetica-BoldOblique",{alias:"Helvetica",path:"LiberationSans-BoldItalic.ttf",style:fn,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:hn,ultimate:"monospace"}],["Courier-Bold",{alias:"Courier",style:un,ultimate:"monospace"}],["Courier-Oblique",{alias:"Courier",style:dn,ultimate:"monospace"}],["Courier-BoldOblique",{alias:"Courier",style:fn,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:hn,fallback:"Helvetica"}],["ArialNarrow-Bold",{alias:"ArialNarrow",style:un,fallback:"Helvetica-Bold"}],["ArialNarrow-Italic",{alias:"ArialNarrow",style:dn,fallback:"Helvetica-Oblique"}],["ArialNarrow-BoldItalic",{alias:"ArialNarrow",style:fn,fallback:"Helvetica-BoldOblique"}],["Calibri",{local:["Calibri","Carlito"],style:hn,fallback:"Helvetica"}],["Calibri-Bold",{alias:"Calibri",style:un,fallback:"Helvetica-Bold"}],["Calibri-Italic",{alias:"Calibri",style:dn,fallback:"Helvetica-Oblique"}],["Calibri-BoldItalic",{alias:"Calibri",style:fn,fallback:"Helvetica-BoldOblique"}],["Wingdings",{local:["Wingdings","URW Dingbats"],style:hn}],["Wingdings-Regular",{alias:"Wingdings"}],["Wingdings-Bold",{alias:"Wingdings"}]]),pn=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:a,fallback:r,style:i,ultimate:n},s,o,c=!0,l=!0,h=""){const u={style:null,ultimate:null};if(t){const e=h?` ${h}`:"";for(const a of t)s.push(`local(${a}${e})`)}if(e){const t=gn.get(e),n=h||function getStyleToAppend(e){switch(e){case un:return"Bold";case dn:return"Italic";case fn:return"Bold Italic";default:if("bold"===e?.weight)return"Bold";if("italic"===e?.style)return"Italic"}return""}(i);Object.assign(u,generateFont(t,s,o,c&&!r,l&&!a,n))}i&&(u.style=i);n&&(u.ultimate=n);if(c&&r){const e=gn.get(r),{ultimate:t}=generateFont(e,s,o,c,l&&!a,h);u.ultimate||=t}l&&a&&o&&s.push(`url(${o}${a})`);return u}function getFontSubstitution(e,t,a,r,i,n){if(r.startsWith("InvalidPDFjsFont_"))return null;"TrueType"!==n&&"Type1"!==n||!/^[A-Z]{6}\+/.test(r)||(r=r.slice(7));const s=r=normalizeFontName(r);let o=e.get(s);if(o)return o;let c=gn.get(r);if(!c)for(const[e,t]of pn)if(r.startsWith(e)){r=`${t}${r.substring(e.length)}`;c=gn.get(r);break}let l=!1;if(!c){c=gn.get(i);l=!0}const h=`${t.getDocId()}_s${t.createFontId()}`;if(!c){if(!validateFontName(r)){warn(`Cannot substitute the font because of its name: ${r}`);e.set(s,null);return null}const t=/bold/gi.test(r),a=/oblique|italic/gi.test(r),i=t&&a&&fn||t&&un||a&&dn||hn;o={css:`"${getFamilyName(r)}",${h}`,guessFallback:!0,loadedName:h,baseFontName:r,src:`local(${r})`,style:i};e.set(s,o);return o}const u=[];l&&validateFontName(r)&&u.push(`local(${r})`);const{style:d,ultimate:f}=generateFont(c,u,a),g=null===f,p=g?"":`,${f}`;o={css:`"${getFamilyName(r)}",${h}${p}`,guessFallback:g,loadedName:h,baseFontName:r,src:u.join(","),style:d};e.set(s,o);return o}const mn=3285377520,bn=4294901760,yn=65535;class MurmurHash3_64{constructor(e){this.h1=e?4294967295&e:mn;this.h2=e?4294967295&e:mn}update(e){let t,a;if("string"==typeof e){t=new Uint8Array(2*e.length);a=0;for(let r=0,i=e.length;r>>8;t[a++]=255&i}}}else{if(!ArrayBuffer.isView(e))throw new Error("Invalid data format, must be a string or TypedArray.");t=e.slice();a=t.byteLength}const r=a>>2,i=a-4*r,n=new Uint32Array(t.buffer,0,r);let s=0,o=0,c=this.h1,l=this.h2;const h=3432918353,u=461845907,d=11601,f=13715;for(let e=0;e>>17;s=s*u&bn|s*f&yn;c^=s;c=c<<13|c>>>19;c=5*c+3864292196}else{o=n[e];o=o*h&bn|o*d&yn;o=o<<15|o>>>17;o=o*u&bn|o*f&yn;l^=o;l=l<<13|l>>>19;l=5*l+3864292196}s=0;switch(i){case 3:s^=t[4*r+2]<<16;case 2:s^=t[4*r+1]<<8;case 1:s^=t[4*r];s=s*h&bn|s*d&yn;s=s<<15|s>>>17;s=s*u&bn|s*f&yn;1&r?c^=s:l^=s}this.h1=c;this.h2=l}hexdigest(){let e=this.h1,t=this.h2;e^=t>>>1;e=3981806797*e&bn|36045*e&yn;t=4283543511*t&bn|(2950163797*(t<<16|e>>>16)&bn)>>>16;e^=t>>>1;e=444984403*e&bn|60499*e&yn;t=3301882366*t&bn|(3120437893*(t<<16|e>>>16)&bn)>>>16;e^=t>>>1;return(e>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")}}function resizeImageMask(e,t,a,r,i,n){const s=i*n;let o;o=t<=8?new Uint8Array(s):t<=16?new Uint16Array(s):new Uint32Array(s);const c=a/i,l=r/n;let h,u,d,f,g=0;const p=new Uint16Array(i),m=a;for(h=0;h0&&Number.isInteger(a.height)&&a.height>0&&(a.width!==f||a.height!==g)){warn("PDFImage - using the Width/Height of the image data, rather than the image dictionary.");f=a.width;g=a.height}else{const e="number"==typeof f&&f>0,t="number"==typeof g&&g>0;if(!e||!t){if(!a.fallbackDims)throw new FormatError(`Invalid image width: ${f} or height: ${g}`);warn("PDFImage - using the Width/Height of the parent image, for SMask/Mask data.");e||(f=a.fallbackDims.width);t||(g=a.fallbackDims.height)}}this.width=f;this.height=g;this.interpolate=h.get("I","Interpolate");this.imageMask=h.get("IM","ImageMask")||!1;this.matte=h.get("Matte")||!1;let p=a.bitsPerComponent;if(!p){p=h.get("BPC","BitsPerComponent");if(!p){if(!this.imageMask)throw new FormatError(`Bits per component missing in image: ${this.imageMask}`);p=1}}this.bpc=p;if(!this.imageMask){let i=h.getRaw("CS")||h.getRaw("ColorSpace");const n=!!i;if(n)this.jpxDecoderOptions?.smaskInData&&(i=Name.get("DeviceRGBA"));else if(this.jpxDecoderOptions)i=Name.get("DeviceRGBA");else switch(a.numComps){case 1:i=Name.get("DeviceGray");break;case 3:i=Name.get("DeviceRGB");break;case 4:i=Name.get("DeviceCMYK");break;default:throw new Error(`Images with ${a.numComps} color components not supported.`)}this.colorSpace=ColorSpaceUtils.parse({cs:i,xref:e,resources:r?t:null,pdfFunctionFactory:o,globalColorSpaceCache:c,localColorSpaceCache:l});this.numComps=this.colorSpace.numComps;if(this.jpxDecoderOptions){this.jpxDecoderOptions.numComponents=n?this.numComps:0;this.jpxDecoderOptions.isIndexedColormap="Indexed"===this.colorSpace.name}}this.decode=h.getArray("D","Decode");this.needsDecode=!1;if(this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode,p)||s&&!ColorSpace.isDefaultDecode(this.decode,1))){this.needsDecode=!0;const e=(1<0,c=(r+7>>3)*i,l=e.getBytes(c),h=1===r&&1===i&&o===(0===l.length||!!(128&l[0]));if(h)return{isSingleOpaquePixel:h};if(t){if(ImageResizer.needsToBeResized(r,i)){const e=new Uint8ClampedArray(r*i*4);convertBlackAndWhiteToRGBA({src:l,dest:e,width:r,height:i,nonBlackColor:0,inverseDecode:o});return ImageResizer.createImage({kind:O,data:e,width:r,height:i,interpolate:n})}const e=new OffscreenCanvas(r,i),t=e.getContext("2d"),a=t.createImageData(r,i);convertBlackAndWhiteToRGBA({src:l,dest:a.data,width:r,height:i,nonBlackColor:0,inverseDecode:o});t.putImageData(a,0,0);return{data:null,width:r,height:i,interpolate:n,bitmap:e.transferToImageBitmap()}}const u=l.byteLength;let d;if(e instanceof DecodeStream&&(!o||c===u))d=l;else if(o){d=new Uint8Array(c);d.set(l);d.fill(255,u)}else d=new Uint8Array(l);if(o)for(let e=0;e>7&1;s[d+1]=u>>6&1;s[d+2]=u>>5&1;s[d+3]=u>>4&1;s[d+4]=u>>3&1;s[d+5]=u>>2&1;s[d+6]=u>>1&1;s[d+7]=1&u;d+=8}if(d>=1}}}}else{let a=0;u=0;for(d=0,h=n;d>r;i<0?i=0:i>l&&(i=l);s[d]=i;u&=(1<s[r+1]){t=255;break}}o[h]=t}}}if(o)for(h=0,d=3,u=t*r;h>3,h=t&&ImageResizer.needsToBeResized(a,r);if(!this.smask&&!this.mask&&"DeviceRGBA"===this.colorSpace.name){i.kind=O;const e=i.data=await this.getImageBytes(o*s*4,{});return t?h?ImageResizer.createImage(i,!1):this.createBitmap(O,a,r,e):i}if(!e){let e;"DeviceGray"===this.colorSpace.name&&1===c?e=F:"DeviceRGB"!==this.colorSpace.name||8!==c||this.needsDecode||(e=T);if(e&&!this.smask&&!this.mask&&a===s&&r===o){const n=await this.#he(s,o);if(n)return n;const c=await this.getImageBytes(o*l,{});if(t)return h?ImageResizer.createImage({data:c,kind:e,width:a,height:r,interpolate:this.interpolate},this.needsDecode):this.createBitmap(e,s,o,c);i.kind=e;i.data=c;if(this.needsDecode){assert(e===F,"PDFImage.createImageData: The image must be grayscale.");const t=i.data;for(let e=0,a=t.length;e>3,s=await this.getImageBytes(r*n,{internal:!0}),o=this.getComponents(s);let c,l;if(1===i){l=a*r;if(this.needsDecode)for(c=0;c0&&r[0].count++}class TimeSlotManager{static TIME_SLOT_DURATION_MS=20;static CHECK_TIME_EVERY=100;constructor(){this.reset()}check(){if(++this.checkedo){const e="Image exceeded maximum allowed size and was removed.";if(!c)throw new Error(e);warn(e);return}let g;h.has("OC")&&(g=await this.parseMarkedContentProps(h.get("OC"),e));let p,m,b;if(h.get("IM","ImageMask")||!1){p=await PDFImage.createMask({image:t,isOffscreenCanvasSupported:l&&!this.parsingType3Font});if(p.isSingleOpaquePixel){m=Xt;b=[];r.addImageOps(m,b,g);if(i){const e={fn:m,args:b,optionalContent:g};n.set(i,u,e);u&&this._regionalImageCache.set(null,u,e)}return}if(this.parsingType3Font){b=function compileType3Glyph({data:e,width:t,height:a}){if(t>1e3||a>1e3)return null;const r=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),i=t+1,n=new Uint8Array(i*(a+1));let s,o,c;const l=t+7&-8,h=new Uint8Array(l*a);let u=0;for(const t of e){let e=128;for(;e>0;){h[u++]=t&e?0:255;e>>=1}}let d=0;u=0;if(0!==h[u]){n[0]=1;++d}for(o=1;o>2)+(h[u+1]?4:0)+(h[u-l+1]?8:0);if(r[e]){n[c+o]=r[e];++d}u++}if(h[u-l]!==h[u]){n[c+o]=h[u]?2:4;++d}if(d>1e3)return null}u=l*(a-1);c=s*i;if(0!==h[u]){n[c]=8;++d}for(o=1;o1e3)return null;const f=new Int32Array([0,i,-1,0,-i,0,0,0,1]),g=[],{a:p,b:m,c:b,d:y,e:w,f:x}=(new DOMMatrix).scaleSelf(1/t,-1/a).translateSelf(0,-a);for(s=0;d&&s<=a;s++){let e=s*i;const a=e+t;for(;e>4;n[e]&=l>>2|l<<2}r=e%i;o=e/i|0;g.push($t,p*r+b*o+w,m*r+y*o+x);n[e]||--d}while(c!==e);--s}return[Gt,[new Float32Array(g)],new Float32Array([0,0,t,a])]}(p);if(b){r.addImageOps(qt,b,g);return}warn("Cannot compile Type3 glyph.");r.addImageOps(Nt,[p],g);return}const e=`mask_${this.idFactory.createObjId()}`;r.addDependency(e);p.dataLen=p.bitmap?p.width*p.height*4:p.data.length;this._sendImgData(e,p);m=Nt;b=[{data:e,width:p.width,height:p.height,interpolate:p.interpolate,count:1}];r.addImageOps(m,b,g);if(i){const t={objId:e,fn:m,args:b,optionalContent:g};n.set(i,u,t);u&&this._regionalImageCache.set(null,u,t)}return}const y=h.has("SMask")||h.has("Mask");if(a&&d+f<200&&!y){try{const i=new PDFImage({xref:this.xref,res:e,image:t,isInline:a,pdfFunctionFactory:this._pdfFunctionFactory,globalColorSpaceCache:this.globalColorSpaceCache,localColorSpaceCache:s});p=await i.createImageData(!0,!1);r.addImageOps(Lt,[p],g)}catch(e){const t=`Unable to decode inline image: "${e}".`;if(!c)throw new Error(t);warn(t)}return}let w=`img_${this.idFactory.createObjId()}`,x=!1,S=null;if(this.parsingType3Font)w=`${this.idFactory.getDocId()}_type3_${w}`;else if(i&&u){x=this.globalImageCache.shouldCache(u,this.pageIndex);if(x){assert(!a,"Cannot cache an inline image globally.");w=`${this.idFactory.getDocId()}_${w}`}}r.addDependency(w);m=Pt;b=[w,d,f];r.addImageOps(m,b,g,y);if(x){S={objId:w,fn:m,args:b,optionalContent:g,hasMask:y,byteSize:0};if(this.globalImageCache.hasDecodeFailed(u)){this.globalImageCache.setData(u,S);this._sendImgData(w,null,x);return}if(d*f>25e4||y){const e=await this.handler.sendWithPromise("commonobj",[w,"CopyLocalImage",{imageRef:u}]);if(e){this.globalImageCache.setData(u,S);this.globalImageCache.addByteSize(u,e);return}}}PDFImage.buildImage({xref:this.xref,res:e,image:t,isInline:a,pdfFunctionFactory:this._pdfFunctionFactory,globalColorSpaceCache:this.globalColorSpaceCache,localColorSpaceCache:s}).then(async e=>{p=await e.createImageData(!1,l);p.dataLen=p.bitmap?p.width*p.height*4:p.data.length;p.ref=u;x&&this.globalImageCache.addByteSize(u,p.dataLen);return this._sendImgData(w,p,x)}).catch(e=>{warn(`Unable to decode image "${w}": "${e}".`);u&&this.globalImageCache.addDecodeFailed(u);return this._sendImgData(w,null,x)});if(i){const e={objId:w,fn:m,args:b,optionalContent:g,hasMask:y};n.set(i,u,e);if(u){this._regionalImageCache.set(null,u,e);if(x){assert(S,"The global cache-data must be available.");this.globalImageCache.setData(u,S)}}}}handleSMask(e,t,a,r,i,n,s){const o=e.get("G"),c={subtype:e.get("S").name,backdrop:e.get("BC")},l=e.get("TR");if(isPDFFunction(l)){const e=this._pdfFunctionFactory.create(l),t=new Uint8Array(256),a=new Float32Array(1);for(let r=0;r<256;r++){a[0]=r/255;e(a,0,a,0);t[r]=255*a[0]|0}c.transferMap=t}return this.buildFormXObject(t,o,c,a,r,i.state.clone({newPath:!0}),n,s)}handleTransferFunction(e){let t;if(Array.isArray(e))t=e;else{if(!isPDFFunction(e))return null;t=[e]}const a=[];let r=0,i=0;for(const e of t){const t=this.xref.fetchIfRef(e);r++;if(isName(t,"Identity")){a.push(null);continue}if(!isPDFFunction(t))return null;const n=this._pdfFunctionFactory.create(t),s=new Uint8Array(256),o=new Float32Array(1);for(let e=0;e<256;e++){o[0]=e/255;n(o,0,o,0);s[e]=255*o[0]|0}a.push(s);i++}return 1!==r&&4!==r||0===i?null:a}handleTilingType(e,t,a,r,i,n,s,o){const c=new OperatorList,l=Dict.merge({xref:this.xref,dictArray:[i.get("Resources"),a]});return this.getOperatorList({stream:r,task:s,resources:l,operatorList:c}).then(function(){const a=c.getIR(),r=getTilingPatternIR(a,i,t);n.addDependencies(c.dependencies);n.addOp(e,r);i.objId&&o.set(null,i.objId,{operatorListIR:a,dict:i})}).catch(e=>{if(!(e instanceof AbortException)){if(!this.options.ignoreErrors)throw e;warn(`handleTilingType - ignoring pattern: "${e}".`)}})}async handleSetFont(e,t,a,r,i,n,s=null,o=null){const c=t?.[0]instanceof Name?t[0].name:null,l=await this.loadFont(c,a,e,i,s,o);l.font.isType3Font&&r.addDependencies(l.type3Dependencies);n.font=l.font;l.send(this.handler);return l.loadedName}handleText(e,t){const a=t.font,r=a.charsToGlyphs(e);if(a.data){(!!(t.textRenderingMode&v)||"Pattern"===t.fillColorSpace.name||a.disableFontFace)&&PartialEvaluator.buildFontPaths(a,r,this.handler,this.options)}return r}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:a,cacheKey:r,task:i,stateManager:n,localGStateCache:s,localColorSpaceCache:o,seenRefs:c}){const l=t.objId;let h=!0;const u=[];let d=Promise.resolve();for(const[r,s]of t)switch(r){case"Type":break;case"LW":if("number"!=typeof s){warn(`Invalid LW (line width): ${s}`);break}u.push([r,Math.abs(s)]);break;case"LC":case"LJ":case"ML":case"D":case"RI":case"FL":case"CA":case"ca":u.push([r,s]);break;case"Font":h=!1;d=d.then(()=>this.handleSetFont(e,null,s[0],a,i,n.state).then(function(e){a.addDependency(e);u.push([r,[e,s[1]]])}));break;case"BM":u.push([r,normalizeBlendMode(s)]);break;case"SMask":if(isName(s,"None")){u.push([r,!1]);break}if(s instanceof Dict){h=!1;d=d.then(()=>this.handleSMask(s,e,a,i,n,o,c));u.push([r,!0])}else warn("Unsupported SMask type");break;case"TR":const t=this.handleTransferFunction(s);u.push([r,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 "+r);break;default:info("Unknown graphic state operator "+r)}await d;u.length>0&&a.addOp(be,[u]);h&&s.set(r,l,u)}loadFont(e,t,a,r,i=null,n=null){const errorFont=async()=>new TranslatedFont({loadedName:"g_font_error",font:new ErrorFont(`Font "${e}" is not available.`),dict:t});let s;if(t)t instanceof Ref&&(s=t);else{const t=a.get("Font");t&&(s=t.getRaw(e))}if(s){if(this.type3FontRefs?.has(s))return errorFont();if(this.fontCache.has(s))return this.fontCache.get(s);try{t=this.xref.fetchIfRef(s)}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=i||PartialEvaluator.fallbackFontDict}if(t.cacheKey&&this.fontCache.has(t.cacheKey))return this.fontCache.get(t.cacheKey);const{promise:o,resolve:c}=Promise.withResolvers();let l;try{l=this.preEvaluateFont(t);l.cssFontInfo=n}catch(e){warn(`loadFont - preEvaluateFont failed: "${e}".`);return errorFont()}const{descriptor:h,hash:u}=l,d=s instanceof Ref;let f;if(u&&h instanceof Dict){const e=h.fontAliases||=Object.create(null);if(e[u]){const t=e[u].aliasRef;if(d&&t&&this.fontCache.has(t)){this.fontCache.putAlias(s,t);return this.fontCache.get(s)}}else e[u]={fontID:this.idFactory.createFontId()};d&&(e[u].aliasRef=s);f=e[u].fontID}else f=this.idFactory.createFontId();assert(f?.startsWith("f"),'The "fontID" must be (correctly) defined.');if(d)this.fontCache.put(s,o);else{t.cacheKey=`cacheKey_${f}`;this.fontCache.put(t.cacheKey,o)}t.loadedName=`${this.idFactory.getDocId()}_${f}`;this.translateFont(l).then(async e=>{const i=new TranslatedFont({loadedName:t.loadedName,font:e,dict:t});if(e.isType3Font)try{await i.loadType3Data(this,a,r)}catch(e){throw new Error(`Type3 font load error: ${e}`)}c(i)}).catch(e=>{warn(`loadFont - translateFont failed: "${e}".`);c(new TranslatedFont({loadedName:t.loadedName,font:new ErrorFont(e?.message),dict:t}))});return o}buildPath(e,t,a){const{pathMinMax:r,pathBuffer:i}=a;switch(0|e){case Ie:{const e=a.currentPointX=t[0],n=a.currentPointY=t[1],s=t[2],o=t[3],c=e+s,l=n+o;0===s||0===o?i.push(zt,e,n,$t,c,l,Jt):i.push(zt,e,n,$t,c,n,$t,c,l,$t,e,l,Jt);Util.rectBoundingBox(e,n,c,l,r);break}case Se:{const e=a.currentPointX=t[0],n=a.currentPointY=t[1];i.push(zt,e,n);Util.pointBoundingBox(e,n,r);break}case Ae:{const e=a.currentPointX=t[0],n=a.currentPointY=t[1];i.push($t,e,n);Util.pointBoundingBox(e,n,r);break}case ke:{const e=a.currentPointX,n=a.currentPointY,[s,o,c,l,h,u]=t;a.currentPointX=h;a.currentPointY=u;i.push(Vt,s,o,c,l,h,u);Util.bezierBoundingBox(e,n,s,o,c,l,h,u,r);break}case Ce:{const e=a.currentPointX,n=a.currentPointY,[s,o,c,l]=t;a.currentPointX=c;a.currentPointY=l;i.push(Vt,e,n,s,o,c,l);Util.bezierBoundingBox(e,n,e,n,s,o,c,l,r);break}case ve:{const e=a.currentPointX,n=a.currentPointY,[s,o,c,l]=t;a.currentPointX=c;a.currentPointY=l;i.push(Vt,s,o,c,l,c,l);Util.bezierBoundingBox(e,n,s,o,c,l,c,l,r);break}case Fe:i.push(Jt)}}_getColorSpace(e,t,a){return ColorSpaceUtils.parse({cs:e,xref:this.xref,resources:t,pdfFunctionFactory:this._pdfFunctionFactory,globalColorSpaceCache:this.globalColorSpaceCache,localColorSpaceCache:a,asyncIfNotCached:!0})}async _handleColorSpace(e){try{return await e}catch(e){if(e instanceof AbortException)return null;if(this.options.ignoreErrors){warn(`_handleColorSpace - ignoring ColorSpace: "${e}".`);return null}throw e}}parseShading({shading:e,resources:t,localColorSpaceCache:a,localShadingPatternCache:r}){let i,n=r.get(e);if(n)return n;try{i=Pattern.parseShading(e,this.xref,t,this._pdfFunctionFactory,this.globalColorSpaceCache,a).getIR()}catch(t){if(t instanceof AbortException)return null;if(this.options.ignoreErrors){warn(`parseShading - ignoring shading: "${t}".`);r.set(e,null);return null}throw t}n=`pattern_${this.idFactory.createObjId()}`;this.parsingType3Font&&(n=`${this.idFactory.getDocId()}_type3_${n}`);r.set(e,n);if(this.parsingType3Font){const e=[],t=PatternInfo.write(i);e.push(t);this.handler.send("commonobj",[n,"Pattern",t],e)}else this.handler.send("obj",[n,this.pageIndex,"Pattern",i]);return n}handleColorN(e,t,a,r,i,n,s,o,c,l){const h=a.pop();if(h instanceof Name){const u=i.getRaw(h.name),d=u instanceof Ref&&c.getByRef(u);if(d)try{const i=r.base?r.base.getRgbHex(a,0):null,n=getTilingPatternIR(d.operatorListIR,d.dict,i);e.addOp(t,n);return}catch{}const f=this.xref.fetchIfRef(u);if(f){const i=f instanceof BaseStream?f.dict:f,h=i.get("PatternType");if(h===xn){const o=r.base?r.base.getRgbHex(a,0):null;return this.handleTilingType(t,o,n,f,i,e,s,c)}if(h===Sn){const a=i.get("Shading"),r=this.parseShading({shading:a,resources:n,localColorSpaceCache:o,localShadingPatternCache:l});if(r){const a=lookupMatrix(i.getArray("Matrix"),null);e.addOp(t,["Shading",r,a])}return}throw new FormatError(`Unknown PatternType: ${h}`)}}throw new FormatError(`Unknown PatternName: ${h}`)}_parseVisibilityExpression(e,t,a){if(++t>10){warn("Visibility expression is too deeply nested");return}const r=e.length,i=this.xref.fetchIfRef(e[0]);if(!(r<2)&&i instanceof Name){switch(i.name){case"And":case"Or":case"Not":a.push(i.name);break;default:warn(`Invalid operator ${i.name} in visibility expression`);return}for(let i=1;i0)return{type:"OCMD",expression:t}}const t=a.get("OCGs");if(Array.isArray(t)||t instanceof Dict){const e=[];if(Array.isArray(t))for(const a of t)e.push(a.toString());else e.push(t.objId);return{type:r,ids:e,policy:a.get("P")instanceof Name?a.get("P").name:null,expression:null}}if(t instanceof Ref)return{type:r,id:t.toString()}}return null}getOperatorList({stream:e,task:t,resources:a,operatorList:r,initialState:i=null,fallbackFontDict:n=null,prevRefs:s=null}){const o=e.dict?.objId,c=new RefSet(s);if(o){if(s?.has(o))throw new Error(`getOperatorList - ignoring circular reference: ${o}`);c.put(o)}a||=Dict.empty;i||=new EvalState;if(!r)throw new Error('getOperatorList: missing "operatorList" parameter');const l=this,h=this.xref,u=new LocalImageCache,d=new LocalColorSpaceCache,f=new LocalGStateCache,g=new LocalTilingPatternCache,p=new Map,m=a.get("XObject")||Dict.empty,b=a.get("Pattern")||Dict.empty,y=new StateManager(i),w=new EvaluatorPreprocessor(e,h,y),x=new TimeSlotManager;function closePendingRestoreOPS(e){for(let e=0,t=w.savedStatesDepth;e{y.state.fillColorSpace=e||ColorSpaceUtils.gray}));return}case it:{const t=l._getColorSpace(e[0],a,d);if(t instanceof ColorSpace){y.state.strokeColorSpace=t;continue}next(l._handleColorSpace(t).then(e=>{y.state.strokeColorSpace=e||ColorSpaceUtils.gray}));return}case ct:C=y.state.fillColorSpace;e=[C.getRgbHex(e,0)];i=ft;break;case st:C=y.state.strokeColorSpace;e=[C.getRgbHex(e,0)];i=dt;break;case ut:y.state.fillColorSpace=ColorSpaceUtils.gray;e=[ColorSpaceUtils.gray.getRgbHex(e,0)];i=ft;break;case ht:y.state.strokeColorSpace=ColorSpaceUtils.gray;e=[ColorSpaceUtils.gray.getRgbHex(e,0)];i=dt;break;case pt:y.state.fillColorSpace=ColorSpaceUtils.cmyk;e=[ColorSpaceUtils.cmyk.getRgbHex(e,0)];i=ft;break;case gt:y.state.strokeColorSpace=ColorSpaceUtils.cmyk;e=[ColorSpaceUtils.cmyk.getRgbHex(e,0)];i=dt;break;case ft:y.state.fillColorSpace=ColorSpaceUtils.rgb;e=[ColorSpaceUtils.rgb.getRgbHex(e,0)];break;case dt:y.state.strokeColorSpace=ColorSpaceUtils.rgb;e=[ColorSpaceUtils.rgb.getRgbHex(e,0)];break;case lt:C=y.state.patternFillColorSpace;if(!C){if(isNumberArray(e,null)){e=[ColorSpaceUtils.gray.getRgbHex(e,0)];i=ft;break}e=[];i=Wt;break}if("Pattern"===C.name){next(l.handleColorN(r,lt,e,C,b,a,t,d,g,p));return}e=[C.getRgbHex(e,0)];i=ft;break;case ot:C=y.state.patternStrokeColorSpace;if(!C){if(isNumberArray(e,null)){e=[ColorSpaceUtils.gray.getRgbHex(e,0)];i=dt;break}e=[];i=Ht;break}if("Pattern"===C.name){next(l.handleColorN(r,ot,e,C,b,a,t,d,g,p));return}e=[C.getRgbHex(e,0)];i=dt;break;case mt:let T;try{const t=a.get("Shading");if(!t)throw new FormatError("No shading resource found");T=t.get(e[0].name);if(!T)throw new FormatError("No shading object found")}catch(e){if(e instanceof AbortException)continue;if(l.options.ignoreErrors){warn(`getOperatorList - ignoring Shading: "${e}".`);continue}throw e}const O=l.parseShading({shading:T,resources:a,localColorSpaceCache:d,localShadingPatternCache:p});if(!O)continue;e=[O];i=mt;break;case be:F=e[0]instanceof Name;v=e[0].name;if(F){const t=f.getByName(v);if(t){t.length>0&&r.addOp(be,[t]);e=null;continue}}next(new Promise(function(e,i){if(!F)throw new FormatError("GState must be referred to by name.");const n=a.get("ExtGState");if(!(n instanceof Dict))throw new FormatError("ExtGState should be a dictionary.");const s=n.get(v);if(!(s instanceof Dict))throw new FormatError("GState should be a dictionary.");l.setGState({resources:a,gState:s,operatorList:r,cacheKey:v,task:t,stateManager:y,localGStateCache:f,localColorSpaceCache:d,seenRefs:c}).then(e,i)}).catch(function(e){if(!(e instanceof AbortException)){if(!l.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring ExtGState: "${e}".`)}}));return;case he:{const[t]=e;if("number"!=typeof t){warn(`Invalid setLineWidth: ${t}`);continue}e[0]=Math.abs(t);break}case ge:{const t=e[1];if("number"!=typeof t){warn(`Invalid setDash: ${t}`);continue}const a=e[0];if(!Array.isArray(a)){warn(`Invalid setDash: ${a}`);continue}a.some(e=>"number"!=typeof e)&&(e[0]=a.filter(e=>"number"==typeof e));break}case Se:case Ae:case ke:case Ce:case ve:case Fe:case Ie:l.buildPath(i,e,y.state);continue;case Te:case Oe:case Me:case De:case Be:case Re:case Ne:case Ee:case Pe:{const{state:{pathBuffer:e,pathMinMax:t}}=y;i!==Oe&&i!==Ne&&i!==Ee||e.push(Jt);if(0===e.length)r.addOp(qt,[i,[null],null]);else{r.addOp(qt,[i,[new Float32Array(e)],t.slice()]);e.length=0;t.set([1/0,1/0,-1/0,-1/0],0)}continue}case Je:r.addOp(i,[new Float32Array(e)]);continue;case St:case At:case Ft:case It:continue;case Ct:if(!(e[0]instanceof Name)){warn(`Expected name for beginMarkedContentProps arg0=${e[0]}`);r.addOp(Ct,["OC",null]);continue}if("OC"===e[0].name){next(l.parseMarkedContentProps(e[1],a).then(e=>{r.addOp(Ct,["OC",e])}).catch(e=>{if(!(e instanceof AbortException)){if(!l.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring beginMarkedContentProps: "${e}".`);r.addOp(Ct,["OC",null])}}));return}e=[e[0].name,e[1]instanceof Dict?e[1].get("MCID"):null];break;default:if(null!==e){for(S=0,k=e.length;S{if(!(e instanceof AbortException)){if(!this.options.ignoreErrors)throw e;warn(`getOperatorList - ignoring errors during "${t.name}" task: "${e}".`);closePendingRestoreOPS()}})}getTextContent({stream:e,task:a,resources:r,stateManager:i=null,includeMarkedContent:n=!1,sink:s,seenStyles:o=new Set,viewBox:c,lang:l=null,markedContentData:h=null,disableNormalization:u=!1,keepWhiteSpace:d=!1,prevRefs:f=null,intersector:g=null}){const p=e.dict?.objId,m=new RefSet(f);if(p){if(f?.has(p))throw new Error(`getTextContent - ignoring circular reference: ${p}`);m.put(p)}r||=Dict.empty;i||=new StateManager(new TextState);n&&(h||={level:0});const b={items:[],styles:Object.create(null),lang:l},y={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},w=[" "," "];let x=0;function saveLastChar(e){const t=(x+1)%2,a=" "!==w[x]&&" "===w[t];w[x]=e;x=t;return!d&&a}function shouldAddWhitepsace(){return!d&&" "!==w[x]&&" "===w[(x+1)%2]}function resetLastChars(){w[0]=w[1]=" ";x=0}const S=this,k=this.xref,C=[];let v=null;const F=new LocalImageCache,T=new LocalGStateCache,O=new EvaluatorPreprocessor(e,k,i);let M;function pushWhitespace({width:e=0,height:t=0,transform:a=y.prevTransform,fontName:r=y.fontName}){g?.addExtraChar(" ");b.items.push({str:" ",dir:"ltr",width:e,height:t,transform:a,fontName:r,hasEOL:!1})}function getCurrentTextTransform(){const e=M.font,a=[M.fontSize*M.textHScale,0,0,M.fontSize,0,M.textRise];if(e.isType3Font&&(M.fontSize<=1||e.isCharBBox)&&!isArrayEqual(M.fontMatrix,t)){const t=e.bbox[3]-e.bbox[1];t>0&&(a[3]*=t*M.fontMatrix[3])}return Util.transform(M.ctm,Util.transform(M.textMatrix,a))}function ensureTextContentItem(){if(y.initialized)return y;const{font:e,loadedName:t}=M;if(!o.has(t)){o.add(t);b.styles[t]={fontFamily:e.fallbackName,ascent:e.ascent,descent:e.descent,vertical:e.vertical};if(S.options.fontExtraProperties&&e.systemFontInfo){const a=b.styles[t];a.fontSubstitution=e.systemFontInfo.css;a.fontSubstitutionLoadedName=e.systemFontInfo.loadedName}}y.fontName=t;const a=y.transform=getCurrentTextTransform();if(e.vertical){y.width=y.totalWidth=Math.hypot(a[0],a[1]);y.height=y.totalHeight=0;y.vertical=!0}else{y.width=y.totalWidth=0;y.height=y.totalHeight=Math.hypot(a[2],a[3]);y.vertical=!1}const r=Math.hypot(M.textLineMatrix[0],M.textLineMatrix[1]),i=Math.hypot(M.ctm[0],M.ctm[1]);y.textAdvanceScale=i*r;const{fontSize:n}=M;y.trackingSpaceMin=.102*n;y.notASpace=.03*n;y.negativeSpaceMax=-.2*n;y.spaceInFlowMin=.102*n;y.spaceInFlowMax=.6*n;y.hasEOL=!1;y.initialized=!0;return y}function updateAdvanceScale(){if(!y.initialized)return;const e=Math.hypot(M.textLineMatrix[0],M.textLineMatrix[1]),t=Math.hypot(M.ctm[0],M.ctm[1])*e;if(t!==y.textAdvanceScale){if(y.vertical){y.totalHeight+=y.height*y.textAdvanceScale;y.height=0}else{y.totalWidth+=y.width*y.textAdvanceScale;y.width=0}y.textAdvanceScale=t}}function runBidiTransform(e){let t=e.str.join("");u||(t=function normalizeUnicode(e){if(!ra){ra=/([\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;ia=new Map([["ſt","ſt"]])}return e.replaceAll(ra,(e,t,a)=>t?t.normalize("NFKC"):ia.get(a))}(t));const a=bidi(t,-1,e.vertical);return{str:a.str,dir:a.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 n=await S.loadFont(e,i,r,a);M.loadedName=n.loadedName;M.font=n.font;M.fontMatrix=n.font.fontMatrix||t}function applyInverseRotation(e,t,a){const r=Math.hypot(a[0],a[1]);return[(a[0]*e+a[1]*t)/r,(a[2]*e+a[3]*t)/r]}function compareWithLastPosition(e){const t=getCurrentTextTransform();let a=t[4],r=t[5];if(M.font?.vertical){if(ac[2]||r+ec[3])return!1}else if(a+ec[2]||rc[3])return!1;if(!M.font||!y.prevTransform)return!0;let i=y.prevTransform[4],n=y.prevTransform[5];if(i===a&&n===r)return!0;let s=-1;t[0]&&0===t[1]&&0===t[2]?s=t[0]>0?0:180:t[1]&&0===t[0]&&0===t[3]&&(s=t[1]>0?90:270);switch(s){case 0:break;case 90:[a,r]=[r,a];[i,n]=[n,i];break;case 180:[a,r,i,n]=[-a,-r,-i,-n];break;case 270:[a,r]=[-r,-a];[i,n]=[-n,-i];break;default:[a,r]=applyInverseRotation(a,r,t);[i,n]=applyInverseRotation(i,n,y.prevTransform)}if(M.font.vertical){const e=(n-r)/y.textAdvanceScale,t=a-i,s=Math.sign(y.height);if(e.5*y.width){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}if(Math.abs(t)>y.width){appendEOL();return!0}e<=s*y.notASpace&&resetLastChars();if(e<=s*y.trackingSpaceMin)if(shouldAddWhitepsace()){resetLastChars();flushTextContentItem();pushWhitespace({height:Math.abs(e)})}else y.height+=e;else if(!addFakeSpaces(e,y.prevTransform,s))if(0===y.str.length){resetLastChars();pushWhitespace({height:Math.abs(e)})}else y.height+=e;Math.abs(t)>.25*y.width&&flushTextContentItem();return!0}const o=(a-i)/y.textAdvanceScale,l=r-n,h=Math.sign(y.width);if(o.5*y.height){appendEOL();return!0}resetLastChars();flushTextContentItem();return!0}if(Math.abs(l)>y.height){appendEOL();return!0}o<=h*y.notASpace&&resetLastChars();if(o<=h*y.trackingSpaceMin)if(shouldAddWhitepsace()){resetLastChars();flushTextContentItem();pushWhitespace({width:Math.abs(o)})}else y.width+=o;else if(!addFakeSpaces(o,y.prevTransform,h))if(0===y.str.length){resetLastChars();pushWhitespace({width:Math.abs(o)})}else y.width+=o;Math.abs(l)>.25*y.height&&flushTextContentItem();return!0}function buildTextContentItem({chars:e,extraSpacing:t}){const a=M.font;if(!e){const e=M.charSpacing+t;e&&(a.vertical?M.translateTextMatrix(0,-e):M.translateTextMatrix(e*M.textHScale,0));d&&compareWithLastPosition(0);return}const r=a.charsToGlyphs(e),i=M.fontMatrix[0]*M.fontSize;for(let e=0,n=r.length;e0){const e=C.join("");C.length=0;buildTextContentItem({chars:e,extraSpacing:0})}break;case Ze:if(!i.state.font){S.ensureStateFont(i.state);continue}buildTextContentItem({chars:w[0],extraSpacing:0});break;case et:if(!i.state.font){S.ensureStateFont(i.state);continue}M.carriageReturn();buildTextContentItem({chars:w[0],extraSpacing:0});break;case tt:if(!i.state.font){S.ensureStateFont(i.state);continue}M.wordSpacing=w[0];M.charSpacing=w[1];M.carriageReturn();buildTextContentItem({chars:w[2],extraSpacing:0});break;case xt:flushTextContentItem();v??=r.get("XObject")||Dict.empty;y=w[0]instanceof Name;p=w[0].name;if(y&&F.getByName(p))break;next(new Promise(function(e,t){if(!y)throw new FormatError("XObject must be referred to by name.");let f=v.getRaw(p);if(f instanceof Ref){if(F.getByRef(f)){e();return}if(S.globalImageCache.getData(f,S.pageIndex)){e();return}f=k.fetch(f)}if(!(f instanceof BaseStream))throw new FormatError("XObject should be a stream");const{dict:g}=f,b=g.get("Subtype");if(!(b instanceof Name))throw new FormatError("XObject should have a Name subtype");if("Form"!==b.name){F.set(p,g.objId,!0);e();return}const w=i.state.clone(),x=new StateManager(w),C=lookupMatrix(g.getArray("Matrix"),null);C&&x.transform(C);const T=g.get("Resources");enqueueChunk();const O={enqueueInvoked:!1,enqueue(e,t){this.enqueueInvoked=!0;s.enqueue(e,t)},get desiredSize(){return s.desiredSize??0},get ready(){return s.ready}};S.getTextContent({stream:f,task:a,resources:T instanceof Dict?T:r,stateManager:x,includeMarkedContent:n,sink:s&&O,seenStyles:o,viewBox:c,lang:l,markedContentData:h,disableNormalization:u,keepWhiteSpace:d,prevRefs:m}).then(function(){O.enqueueInvoked||F.set(p,g.objId,!0);e()},t)}).catch(function(e){if(!(e instanceof AbortException)){if(!S.options.ignoreErrors)throw e;warn(`getTextContent - ignoring XObject: "${e}".`)}}));return;case be:y=w[0]instanceof Name;p=w[0].name;if(y&&T.getByName(p))break;next(new Promise(function(e,t){if(!y)throw new FormatError("GState must be referred to by name.");const a=r.get("ExtGState");if(!(a instanceof Dict))throw new FormatError("ExtGState should be a dictionary.");const i=a.get(p);if(!(i instanceof Dict))throw new FormatError("GState should be a dictionary.");const n=i.get("Font");if(n){flushTextContentItem();M.fontName=null;M.fontSize=n[1];handleSetFont(null,n[0]).then(e,t)}else{T.set(p,i.objId,!0);e()}}).catch(function(e){if(!(e instanceof AbortException)){if(!S.options.ignoreErrors)throw e;warn(`getTextContent - ignoring ExtGState: "${e}".`)}}));return;case kt:flushTextContentItem();if(n){h.level++;b.items.push({type:"beginMarkedContent",tag:w[0]instanceof Name?w[0].name:null})}break;case Ct:flushTextContentItem();if(n){h.level++;let e=null;w[1]instanceof Dict&&(e=w[1].get("MCID"));b.items.push({type:"beginMarkedContentProps",id:Number.isInteger(e)?`${S.idFactory.getPageObjId()}_mc${e}`:null,tag:w[0]instanceof Name?w[0].name:null})}break;case vt:flushTextContentItem();if(n){if(0===h.level)break;h.level--;b.items.push({type:"endMarkedContent"})}break;case we:!e||e.font===M.font&&e.fontSize===M.fontSize&&e.fontName===M.fontName||flushTextContentItem()}if(b.items.length>=(s?.desiredSize??1)){g=!0;break}}if(g)next(An);else{flushTextContentItem();enqueueChunk();e()}}).catch(e=>{if(!(e instanceof AbortException)){if(!this.options.ignoreErrors)throw e;warn(`getTextContent - ignoring errors during "${a.name}" task: "${e}".`);flushTextContentItem();enqueueChunk()}})}async extractDataStructures(e,t){const a=this.xref;let r;const i=this.readToUnicode(t.toUnicode);if(t.composite){const a=e.get("CIDSystemInfo");a instanceof Dict&&(t.cidSystemInfo={registry:stringToPDFString(a.get("Registry")),ordering:stringToPDFString(a.get("Ordering")),supplement:a.get("Supplement")});try{const t=e.get("CIDToGIDMap");t instanceof BaseStream&&(r=t.getBytes())}catch(e){if(!this.options.ignoreErrors)throw e;warn(`extractDataStructures - ignoring CIDToGIDMap data: "${e}".`)}}const n=[];let s,o=null;if(e.has("Encoding")){s=e.get("Encoding");if(s instanceof Dict){o=s.get("BaseEncoding");o=o instanceof Name?o.name:null;if(s.has("Differences")){const e=s.get("Differences");let t=0;for(const r of e){const e=a.fetchIfRef(r);if("number"==typeof e)t=e;else{if(!(e instanceof Name))throw new FormatError(`Invalid entry in 'Differences' array: ${e}`);n[t++]=e.name}}}}else if(s instanceof Name)o=s.name;else{const e="Encoding is not a Name nor a Dict";if(!this.options.ignoreErrors)throw new FormatError(e);warn(e)}"MacRomanEncoding"!==o&&"MacExpertEncoding"!==o&&"WinAnsiEncoding"!==o&&(o=null)}const c=!t.file||t.isInternalFont,l=Xr()[t.name];o&&c&&l&&(o=null);if(o)t.defaultEncoding=getEncoding(o);else{let e=!!(t.flags&Ar);const a=!!(t.flags&kr);if("TrueType"===t.type&&e&&a&&0!==n.length){t.flags&=~Ar;e=!1}s=lr;"TrueType"!==t.type||a||(s=hr);if(e||l){s=cr;c&&(/Symbol/i.test(t.name)?s=ur:/Dingbats/i.test(t.name)?s=dr:/Wingdings/i.test(t.name)&&(s=hr))}t.defaultEncoding=s}t.differences=n;t.baseEncodingName=o;t.hasEncoding=!!o||n.length>0;t.dict=e;t.toUnicode=await i;const h=await this.buildToUnicode(t);t.toUnicode=h;r&&(t.cidToGidMap=this.readCidToGidMap(r,h));return t}_simpleFontToUnicode(e,t=!1){assert(!e.composite,"Must be a simple font.");const a=[],r=e.defaultEncoding.slice(),i=e.baseEncodingName,n=e.differences;for(const e in n){const t=n[e];".notdef"!==t&&(r[e]=t)}const s=fr();for(const n in r){let o=r[n];if(""===o)continue;let c=s[o];if(void 0!==c){a[n]=String.fromCharCode(c);continue}let l=0;switch(o[0]){case"G":3===o.length&&(l=parseInt(o.substring(1),16));break;case"g":5===o.length&&(l=parseInt(o.substring(1),16));break;case"C":case"c":if(o.length>=3&&o.length<=4){const a=o.substring(1);if(t){l=parseInt(a,16);break}l=+a;if(Number.isNaN(l)&&Number.isInteger(parseInt(a,16)))return this._simpleFontToUnicode(e,!0)}break;case"u":c=getUnicodeForGlyph(o,s);-1!==c&&(l=c);break;default:switch(o){case"f_h":case"f_t":case"T_h":a[n]=o.replaceAll("_","");continue}}if(l>0&&l<=1114111&&Number.isInteger(l)){if(i&&l===+n){const e=getEncoding(i);if(e&&(o=e[n])){a[n]=String.fromCharCode(s[o]);continue}}a[n]=String.fromCodePoint(l)}}return a}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:a}=e.cidSystemInfo,r=Name.get(`${t}-${a}-UCS2`),i=await CMapFactory.create({encoding:r,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}),n=[],s=[];e.cMap.forEach(function(e,t){if(t>65535)throw new FormatError("Max size of CID is 65,535");const a=i.lookup(t);if(a){s.length=0;for(let e=0,t=a.length;e>1;(0!==i||t.has(n))&&(a[n]=i)}return a}extractWidths(e,t,a){const r=this.xref;let i=[],n=0;const s=[];let o;if(a.composite){const t=e.get("DW");n="number"==typeof t?Math.ceil(t):1e3;const c=e.get("W");if(Array.isArray(c))for(let e=0,t=c.length;e{const t=c.get(e),r=new OperatorList;return n.getOperatorList({stream:t,task:a,resources:l,operatorList:r}).then(()=>{switch(r.fnArray[0]){case rt:this.#fe(r,b);break;case at:b||this.#ge(r)}h[e]=r.getIR();for(const e of r.dependencies)i.add(e)}).catch(function(t){warn(`Type3 font resource "${e}" is not available.`);const a=new OperatorList;h[e]=a.getIR()})});this.#de=o.then(()=>{r.charProcOperatorList=h;if(this._bbox){r.isCharBBox=!0;r.bbox=this._bbox}});return this.#de}#fe(e,t=NaN){const a=Util.normalizeRect(e.argsArray[0].slice(2)),r=a[2]-a[0],i=a[3]-a[1],n=Math.hypot(r,i);if(0===r||0===i){e.fnArray.splice(0,1);e.argsArray.splice(0,1)}else if(0===t||Math.round(n/t)>=10){this._bbox??=[1/0,1/0,-1/0,-1/0];Util.rectBoundingBox(...a,this._bbox)}let s=0,o=e.length;for(;s=Se&&n<=Pe;if(i.variableArgs)o>s&&info(`Command ${r}: expected [0, ${s}] args, but received ${o} args.`);else{if(o!==s){const e=this.nonProcessedArgs;for(;o>s;){e.push(t.shift());o--}for(;oEvaluatorPreprocessor.MAX_INVALID_PATH_OPS)throw new FormatError(`Invalid ${e}`);warn(`Skipping ${e}`);null!==t&&(t.length=0);continue}}this.preprocessCommand(n,t);e.fn=n;e.args=t;return!0}if(a===sa)return!1;if(null!==a){null===t&&(t=[]);t.push(a);if(t.length>33)throw new FormatError("Too many arguments")}}}preprocessCommand(e,t){switch(0|e){case ye:this.stateManager.save();break;case we:this.stateManager.restore();break;case xe: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:a,args:r}=e;switch(0|a){case Ge:const[e,a]=r;e instanceof Name&&(t.fontName=e.name);"number"==typeof a&&a>0&&(t.fontSize=a);break;case ft:ColorSpaceUtils.rgb.getRgbItem(r,0,t.fontColor,0);break;case ut:ColorSpaceUtils.gray.getRgbItem(r,0,t.fontColor,0);break;case pt:ColorSpaceUtils.cmyk.getRgbItem(r,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,a,r){super(e);this.stream=e;this.evaluatorOptions=t;this.xref=a;this.globalColorSpaceCache=r;this.resources=e.dict?.get("Resources")}parse(){const e={fn:0,args:[]};let t={scaleFactor:1,fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3),fillColorSpace:ColorSpaceUtils.gray},a=!1;const r=[];try{for(;;){e.args.length=0;if(a||!this.read(e))break;const{fn:i,args:n}=e;switch(0|i){case ye:r.push({scaleFactor:t.scaleFactor,fontSize:t.fontSize,fontName:t.fontName,fontColor:t.fontColor.slice(),fillColorSpace:t.fillColorSpace});break;case we:t=r.pop()||t;break;case Je:t.scaleFactor*=Math.hypot(n[0],n[1]);break;case Ge:const[e,i]=n;e instanceof Name&&(t.fontName=e.name);"number"==typeof i&&i>0&&(t.fontSize=i*t.scaleFactor);break;case nt:t.fillColorSpace=ColorSpaceUtils.parse({cs:n[0],xref:this.xref,resources:this.resources,pdfFunctionFactory:this._pdfFunctionFactory,globalColorSpaceCache:this.globalColorSpaceCache,localColorSpaceCache:this._localColorSpaceCache});break;case ct:t.fillColorSpace.getRgbItem(n,0,t.fontColor,0);break;case ft:ColorSpaceUtils.rgb.getRgbItem(n,0,t.fontColor,0);break;case ut:ColorSpaceUtils.gray.getRgbItem(n,0,t.fontColor,0);break;case pt:ColorSpaceUtils.cmyk.getRgbItem(n,0,t.fontColor,0);break;case Ze:case Qe:case et:case tt:a=!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 a=new OffscreenCanvas(1,1);this.ctxMeasure=a.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.setIfName("Type","FontDescriptor");e.set("FontName",this.fontName);e.set("FontFamily","MyriadPro Regular");e.set("FontBBox",[0,0,0,0]);e.setIfName("FontStretch","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.setIfName("Type","Font");e.setIfName("Subtype","CIDFontType0");e.setIfName("CIDToGIDMap","Identity");e.set("FirstChar",this.firstChar);e.set("LastChar",this.lastChar);e.set("FontDescriptor",this.fontDescriptorRef);e.set("DW",1e3);const t=[],a=[...this.widths.entries()].sort();let r=null,i=null;for(const[e,n]of a)if(r)if(e===r+i.length)i.push(n);else{t.push(r,i);r=e;i=[n]}else{r=e;i=[n]}r&&t.push(r,i);e.set("W",t);const n=new Dict(this.xref);n.set("Ordering","Identity");n.set("Registry","Adobe");n.set("Supplement",0);e.set("CIDSystemInfo",n);return this.xref.getNewPersistentRef(e)}get baseFontRef(){const e=new Dict(this.xref);e.set("BaseFont",this.fontName);e.setIfName("Type","Font");e.setIfName("Subtype","Type0");e.setIfName("Encoding","Identity-H");e.set("DescendantFonts",[this.descendantFontRef]);e.setIfName("ToUnicode","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 a of e.split(/\r\n?|\n/))for(const e of a.split("")){const a=e.charCodeAt(0);if(this.widths.has(a))continue;const r=t.measureText(e),i=Math.ceil(r.width);this.widths.set(a,i);this.firstChar=Math.min(a,this.firstChar);this.lastChar=Math.max(a,this.lastChar)}return this.resources}static getFirstPositionInfo(e,t,i){const[n,s,o,c]=e;let l=o-n,h=c-s;t%180!=0&&([l,h]=[h,l]);const u=a*i;return{coords:[0,h+r*i-u],bbox:[0,0,l,h],matrix:0!==t?getRotationMatrix(t,h,u):void 0}}createAppearance(e,t,i,n,s,o){const c=this._createContext(),l=[];let h=-1/0;for(const t of e.split(/\r\n?|\n/)){l.push(t);const e=c.measureText(t).width;h=Math.max(h,e);for(const e of codePointIter(t)){const t=String.fromCodePoint(e);let a=this.widths.get(e);if(void 0===a){const r=c.measureText(t);a=Math.ceil(r.width);this.widths.set(e,a);this.firstChar=Math.min(e,this.firstChar);this.lastChar=Math.max(e,this.lastChar)}}}h*=n/1e3;const[u,d,f,g]=t;let p=f-u,m=g-d;i%180!=0&&([p,m]=[m,p]);let b=1;h>p&&(b=p/h);let y=1;const w=a*n,x=r*n,S=w*l.length;S>m&&(y=m/S);const k=n*Math.min(b,y),C=["q",`0 0 ${numberToString(p)} ${numberToString(m)} re W n`,"BT",`1 0 0 1 0 ${numberToString(m+x)} Tm 0 Tc ${getPdfColor(s,!0)}`,`/${this.fontName.name} ${numberToString(k)} Tf`],{resources:v}=this;if(1!==(o="number"==typeof o&&o>=0&&o<=1?o:1)){C.push("/R0 gs");const e=new Dict(this.xref),t=new Dict(this.xref);t.set("ca",o);t.set("CA",o);t.setIfName("Type","ExtGState");e.set("R0",t);v.set("ExtGState",e)}const F=numberToString(w);for(const e of l)C.push(`0 -${F} Td <${stringToUTF16HexString(e)}> Tj`);C.push("ET","Q");const T=C.join("\n"),O=new Dict(this.xref);O.setIfName("Subtype","Form");O.setIfName("Type","XObject");O.set("BBox",[0,0,p,m]);O.set("Length",T.length);O.set("Resources",v);if(i){const e=getRotationMatrix(i,p,m);O.set("Matrix",e)}const M=new StringStream(T);M.dict=O;return M}}const kn=["m/d","m/d/yy","mm/dd/yy","mm/yy","d-mmm","d-mmm-yy","dd-mmm-yy","yy-mm-dd","mmm-yy","mmmm-yy","mmm d, yyyy","mmmm d, yyyy","m/d/yy h:MM tt","m/d/yy HH:MM"],Cn=["HH:MM","h:MM tt","HH:MM:ss","h:MM:ss tt"];class NameOrNumberTree{constructor(e,t,a){this.root=e;this.xref=t;this._type=a}getAll(){const e=new Map;if(!this.root)return e;const t=this.xref,a=new RefSet;a.put(this.root);const r=[this.root];for(;r.length>0;){const i=t.fetchIfRef(r.shift());if(!(i instanceof Dict))continue;if(i.has("Kids")){const e=i.get("Kids");if(!Array.isArray(e))continue;for(const t of e){if(a.has(t))throw new FormatError(`Duplicate entry in "${this._type}" tree.`);r.push(t);a.put(t)}continue}const n=i.get(this._type);if(Array.isArray(n))for(let a=0,r=n.length;a10){warn(`Search depth limit reached for "${this._type}" tree.`);return null}const i=a.get("Kids");if(!Array.isArray(i))return null;let n=0,s=i.length-1;for(;n<=s;){const r=n+s>>1,o=t.fetchIfRef(i[r]),c=o.get("Limits");if(et.fetchIfRef(c[1]))){a=o;break}n=r+1}}if(n>s)return null}const i=a.get(this._type);if(Array.isArray(i)){let a=0,r=i.length-2;for(;a<=r;){const n=a+r>>1,s=n+(1&n),o=t.fetchIfRef(i[s]);if(eo))return i[s+1];a=s+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(){gi=Object.create(null)}();!function clearPrimitiveCaches(){oa=Object.create(null);ca=Object.create(null);la=Object.create(null)}();!function clearUnicodeCaches(){yr.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{#pe=!1;constructor(e,t,a=!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");a||(e.has("EF")?this.#pe=!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,!0).replaceAll("\\\\","\\").replaceAll("\\/","/").replaceAll("\\","/"));return shadow(this,"filename",e||"unnamed")}get content(){if(!this.#pe)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 vn=0,Fn=-2,In=-3,Tn=-4,On=-5,Mn=-6,Dn=-9;function isWhitespace(e,t){const a=e[t];return" "===a||"\n"===a||"\r"===a||"\t"===a}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 a=[];let r=t;function skipWs(){for(;r"!==e[r]&&"/"!==e[r];)++r;const i=e.substring(t,r);skipWs();for(;r"!==e[r]&&"/"!==e[r]&&"?"!==e[r];){skipWs();let t="",i="";for(;r"!==e[a]&&"?"!==e[a]&&"/"!==e[a];)++a;const r=e.substring(t,a);!function skipWs(){for(;a"!==e[a+1]);)++a;return{name:r,value:e.substring(i,a),parsed:a-t}}parseXml(e){let t=0;for(;t",a);if(t<0){this.onError(Dn);return}this.onEndElement(e.substring(a,t));a=t+1;break;case"?":++a;const r=this._parseProcessingInstruction(e,a);if("?>"!==e.substring(a+r.parsed,a+r.parsed+2)){this.onError(In);return}this.onPi(r.name,r.value);a+=r.parsed+2;break;case"!":if("--"===e.substring(a+1,a+3)){t=e.indexOf("--\x3e",a+3);if(t<0){this.onError(On);return}this.onComment(e.substring(a+3,t));a=t+3}else if("[CDATA["===e.substring(a+1,a+8)){t=e.indexOf("]]>",a+8);if(t<0){this.onError(Fn);return}this.onCdata(e.substring(a+8,t));a=t+3}else{if("DOCTYPE"!==e.substring(a+1,a+8)){this.onError(Mn);return}{const r=e.indexOf("[",a+8);let i=!1;t=e.indexOf(">",a+8);if(t<0){this.onError(Tn);return}if(r>0&&t>r){t=e.indexOf("]>",a+8);if(t<0){this.onError(Tn);return}i=!0}const n=e.substring(a+8,t+(i?1:0));this.onDoctype(n);a=t+(i?2:1)}}break;default:const i=this._parseContent(e,a);if(null===i){this.onError(Mn);return}let n=!1;if("/>"===e.substring(a+i.parsed,a+i.parsed+2))n=!0;else if(">"!==e.substring(a+i.parsed,a+i.parsed+1)){this.onError(Dn);return}this.onBeginElement(i.name,i.attributes,n);a+=i.parsed+(n?2:1)}}else{for(;ae.textContent).join(""):this.nodeValue||""}get children(){return this.childNodes||[]}hasChildNodes(){return this.childNodes?.length>0}searchNode(e,t){if(t>=e.length)return this;const a=e[t];if(a.name.startsWith("#")&&t0){r.push([i,0]);i=i.childNodes[0]}else{if(0===r.length)return null;for(;0!==r.length;){const[e,t]=r.pop(),a=t+1;if(a");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=vn;this._hasAttributes=e;this._lowerCaseName=t}parseFromString(e){this._currentFragment=[];this._stack=[];this._errorCode=vn;this.parseXml(e);if(this._errorCode!==vn)return;const[t]=this._currentFragment;return t?{documentElement:t}:void 0}onText(e){if(function isWhitespaceString(e){for(let t=0,a=e.length;t\\376\\377([^<]+)/g,function(e,t){const a=t.replaceAll(/\\([0-3])([0-7])([0-7])/g,function(e,t,a,r){return String.fromCharCode(64*t+8*a+1*r)}).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.`)}),r=[">"];for(let e=0,t=a.length;e=32&&t<127&&60!==t&&62!==t&&38!==t?r.push(String.fromCharCode(t)):r.push("&#x"+(65536+t).toString(16).substring(1)+";")}return r.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,a=this._getSequence(t)||[];this._metadataMap.set(e.nodeName,a.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 Bn=1,Rn=2,Nn=3,En=4,Pn=5;class StructTreeRoot{constructor(e,t,a){this.xref=e;this.dict=t;this.ref=a instanceof Ref?a:null;this.roleMap=new Map;this.structParentIds=null;this.kidRefToPosition=void 0}getKidPosition(e){if(void 0===this.kidRefToPosition){const e=this.dict.get("K");if(Array.isArray(e)){const t=this.kidRefToPosition=new Map;for(let a=0,r=e.length;a=0||(e.parentTreeId=a++);s=!1}}if(s){for(const e of t.values())for(const t of e){delete t.parentTreeId;delete t.structTreeParent}return!1}return!0}async updateStructureTree({newAnnotationsByPage:e,pdfManager:t,changes:a}){const{ref:r,xref:i}=this,n=this.dict.clone(),s=new RefSetCache;s.put(r,n);let o,c=n.getRaw("ParentTree");if(c instanceof Ref)o=i.fetch(c);else{o=c;c=i.getNewTemporaryRef();n.set("ParentTree",c)}o=o.clone();s.put(c,o);let l=o.getRaw("Nums"),h=null;if(l instanceof Ref){h=l;l=i.fetch(h)}l=l.slice();h||o.set("Nums",l);const u=await StructTreeRoot.#be({newAnnotationsByPage:e,structTreeRootRef:r,structTreeRoot:this,kids:null,nums:l,xref:i,pdfManager:t,changes:a,cache:s});if(-1!==u){n.set("ParentTreeNextKey",u);h&&s.put(h,l);for(const[e,t]of s.items())a.put(e,{data:t})}}static async#be({newAnnotationsByPage:e,structTreeRootRef:t,structTreeRoot:a,kids:r,nums:i,xref:n,pdfManager:s,changes:o,cache:c}){const l=Name.get("OBJR");let h,u=-1;for(const[d,f]of e){const e=await s.getPage(d),{ref:g}=e,p=g instanceof Ref;for(const{accessibilityData:s,ref:m,parentTreeId:b,structTreeParent:y}of f){if(!s?.type)continue;const{structParent:f}=s;if(a&&Number.isInteger(f)&&f>=0){let t=(h||=new Map).get(d);if(void 0===t){t=new StructTreePage(a,e.pageDict).collectObjects(g);h.set(d,t)}const r=t?.get(f);if(r){const e=n.fetch(r).clone();StructTreeRoot.#we(e,s);o.put(r,{data:e});continue}}u=Math.max(u,b);const w=n.getNewTemporaryRef(),x=new Dict(n);StructTreeRoot.#we(x,s);await this.#xe({structTreeParent:y,tagDict:x,newTagRef:w,structTreeRootRef:t,fallbackKids:r,xref:n,cache:c});const S=new Dict(n);x.set("K",S);S.set("Type",l);p&&S.set("Pg",g);S.set("Obj",m);c.put(w,x);i.push(b,w)}}return u+1}static#we(e,{type:t,title:a,lang:r,alt:i,expanded:n,actualText:s}){e.set("S",Name.get(t));a&&e.set("T",stringToAsciiOrUTF16BE(a));r&&e.set("Lang",stringToAsciiOrUTF16BE(r));i&&e.set("Alt",stringToAsciiOrUTF16BE(i));n&&e.set("E",stringToAsciiOrUTF16BE(n));s&&e.set("ActualText",stringToAsciiOrUTF16BE(s))}static#ye({elements:e,xref:t,pageDict:a,numberTree:r}){const i=new Map;for(const t of e)if(t.structTreeParentId){const e=parseInt(t.structTreeParentId.split("_mc")[1],10);let a=i.get(e);if(!a){a=[];i.set(e,a)}a.push(t)}const n=a.get("StructParents");if(!Number.isInteger(n))return;const s=r.get(n),updateElement=(e,a,r)=>{const n=i.get(e);if(n){const e=a.getRaw("P"),i=t.fetchIfRef(e);if(e instanceof Ref&&i instanceof Dict){const e={ref:r,dict:a};for(const t of n)t.structTreeParent=e}return!0}return!1};for(const e of s){if(!(e instanceof Ref))continue;const a=t.fetch(e),r=a.get("K");if(Number.isInteger(r))updateElement(r,a,e);else if(Array.isArray(r))for(let i of r){i=t.fetchIfRef(i);if(Number.isInteger(i)&&updateElement(i,a,e))break;if(!(i instanceof Dict))continue;if(!isName(i.get("Type"),"MCR"))break;const r=i.get("MCID");if(Number.isInteger(r)&&updateElement(r,a,e))break}}}static async#xe({structTreeParent:e,tagDict:t,newTagRef:a,structTreeRootRef:r,fallbackKids:i,xref:n,cache:s}){let o,c=null;if(e){({ref:c}=e);o=e.dict.getRaw("P")||r}else o=r;t.set("P",o);const l=n.fetchIfRef(o);if(!l){i.push(a);return}let h=s.get(o);if(!h){h=l.clone();s.put(o,h)}const u=h.getRaw("K");let d=u instanceof Ref?s.get(u):null;if(!d){d=n.fetchIfRef(u);d=Array.isArray(d)?d.slice():[u];const e=n.getNewTemporaryRef();h.set("K",e);s.put(e,d)}const f=d.indexOf(c);d.splice(f>=0?f+1:d.length,0,a)}}class StructElementNode{constructor(e,t){this.tree=e;this.xref=e.xref;this.dict=t;this.kids=[];this.parseKids()}get role(){const e=this.dict.get("S"),t=e instanceof Name?e.name:"",{root:a}=this.tree;return a.roleMap.get(t)??t}get mathML(){let e=this.dict.get("AF")||[];Array.isArray(e)||(e=[e]);for(let t of e){t=this.xref.fetchIfRef(t);if(!(t instanceof Dict))continue;if(!isName(t.get("Type"),"Filespec"))continue;if(!isName(t.get("AFRelationship"),"Supplement"))continue;const e=t.get("EF");if(!(e instanceof Dict))continue;const a=e.get("UF")||e.get("F");if(a instanceof BaseStream&&(isName(a.dict.get("Type"),"EmbeddedFile")&&isName(a.dict.get("Subtype"),"application/mathml+xml")))return stringToUTF8String(a.getString())}const t=this.dict.get("A");if(t instanceof Dict){if(isName(t.get("O"),"MSFT_Office")){const e=t.get("MSFT_MathML");return e?stringToPDFString(e):null}}return null}parseKids(){let e=null;const t=this.dict.getRaw("Pg");t instanceof Ref&&(e=t.toString());const a=this.dict.get("K");if(Array.isArray(a))for(const t of a){const a=this.parseKid(e,this.xref.fetchIfRef(t));a&&this.kids.push(a)}else{const t=this.parseKid(e,a);t&&this.kids.push(t)}}parseKid(e,t){if(Number.isInteger(t))return this.tree.pageDict.objId!==e?null:new StructElement({type:Bn,mcid:t,pageObjId:e});if(!(t instanceof Dict))return null;const a=t.getRaw("Pg");a instanceof Ref&&(e=a.toString());const r=t.get("Type")instanceof Name?t.get("Type").name:null;if("MCR"===r){if(this.tree.pageDict.objId!==e)return null;const a=t.getRaw("Stm");return new StructElement({type:Rn,refObjId:a instanceof Ref?a.toString():null,pageObjId:e,mcid:t.get("MCID")})}if("OBJR"===r){if(this.tree.pageDict.objId!==e)return null;const a=t.getRaw("Obj");return new StructElement({type:Nn,refObjId:a instanceof Ref?a.toString():null,pageObjId:e})}return new StructElement({type:Pn,dict:t})}}class StructElement{constructor({type:e,dict:t=null,mcid:a=null,pageObjId:r=null,refObjId:i=null}){this.type=e;this.dict=t;this.mcid=a;this.pageObjId=r;this.refObjId=i;this.parentNode=null}}class StructTreePage{constructor(e,t){this.root=e;this.xref=e?.xref??null;this.rootDict=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 a=this.root.structParentIds?.get(e);if(!a)return null;const r=new Map,i=new NumberTree(t,this.xref);for(const[e]of a){const t=i.getRaw(e);t instanceof Ref&&r.set(e,t)}return r}parse(e){if(!(this.root&&this.rootDict&&e instanceof Ref))return;const t=this.rootDict.get("ParentTree");if(!t)return;const a=this.pageDict.get("StructParents"),r=this.root.structParentIds?.get(e);if(!Number.isInteger(a)&&!r)return;const i=new Map,n=new NumberTree(t,this.xref);if(Number.isInteger(a)){const e=n.get(a);if(Array.isArray(e))for(const t of e)t instanceof Ref&&this.addNode(this.xref.fetch(t),i)}if(r)for(const[e,t]of r){const a=n.get(e);if(a){const e=this.addNode(this.xref.fetchIfRef(a),i);1===e?.kids?.length&&e.kids[0].type===Nn&&(e.kids[0].type=t)}}}addNode(e,t,a=0){if(a>40){warn("StructTree MAX_DEPTH reached.");return null}if(!(e instanceof Dict))return null;if(t.has(e))return t.get(e);const r=new StructElementNode(this,e);t.set(e,r);switch(r.role){case"L":case"LBody":case"LI":case"Table":case"THead":case"TBody":case"TFoot":case"TR":for(const e of r.kids)e.type===Pn&&this.addNode(e.dict,t,a-1)}const i=e.get("P");if(!(i instanceof Dict)||isName(i.get("Type"),"StructTreeRoot")){this.addTopLevelNode(e,r)||t.delete(e);return r}const n=this.addNode(i,t,a+1);if(!n)return r;let s=!1;for(const t of n.kids)if(t.type===Pn&&t.dict===e){t.parentNode=r;s=!0}s||t.delete(e);return r}addTopLevelNode(e,t){const a=this.root.getKidPosition(e.objId);if(isNaN(a))return!1;-1!==a&&(this.nodes[a]=t);return!0}get serializable(){function nodeToSerializable(e,t,a=0){if(a>40){warn("StructTree too deep to be fully serialized.");return}const r=Object.create(null);r.role=e.role;r.children=[];t.children.push(r);let i=e.dict.get("Alt");"string"!=typeof i&&(i=e.dict.get("ActualText"));"string"==typeof i&&(r.alt=stringToPDFString(i));if("Formula"===r.role){const{mathML:t}=e;t&&(r.mathML=t)}const n=e.dict.get("A");if(n instanceof Dict){const e=lookupNormalRect(n.getArray("BBox"),null);if(e)r.bbox=e;else{const e=n.get("Width"),t=n.get("Height");"number"==typeof e&&e>0&&"number"==typeof t&&t>0&&(r.bbox=[0,0,e,t])}}const s=e.dict.get("Lang");"string"==typeof s&&(r.lang=stringToPDFString(s));for(const t of e.kids){const e=t.type===Pn?t.parentNode:null;e?nodeToSerializable(e,r,a+1):t.type===Bn||t.type===Rn?r.children.push({type:"content",id:`p${t.pageObjId}_mc${t.mcid}`}):t.type===Nn?r.children.push({type:"object",id:t.refObjId}):t.type===En&&r.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}}const Ln=function _isValidExplicitDest(e,t,a){if(!Array.isArray(a)||a.length<2)return!1;const[r,i,...n]=a;if(!e(r)&&!Number.isInteger(r))return!1;if(!t(i))return!1;const s=n.length;let o=!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;o=!1;break;default:return!1}for(const e of n)if(!("number"==typeof e||o&&null===e))return!1;return!0}.bind(null,e=>e instanceof Ref,isName);function fetchDest(e){e instanceof Dict&&(e=e.get("D"));return Ln(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,!0);if(Ln(t))return JSON.stringify(t)}return null}class Catalog{#Se=null;#Ae=null;builtInCMapCache=new Map;fontCache=new RefSetCache;globalColorSpaceCache=new GlobalColorSpaceCache;globalImageCache=new GlobalImageCache;nonBlendModesSet=new RefSet;pageDictCache=new RefSetCache;pageIndexCache=new RefSetCache;pageKidsCountCache=new RefSetCache;standardFontDataCache=new Map;systemFontCache=new Map;constructor(e,t){this.pdfManager=e;this.xref=t;this.#Ae=t.getCatalogObj();if(!(this.#Ae instanceof Dict))throw new FormatError("Catalog object is not a dictionary.");this.toplevelPagesDict}cloneDict(){return this.#Ae.clone()}get version(){const e=this.#Ae.get("Version");if(e instanceof Name){if(ua.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.#Ae.get("Lang");return shadow(this,"lang",e&&"string"==typeof e?stringToPDFString(e):null)}get needsRendering(){const e=this.#Ae.get("NeedsRendering");return shadow(this,"needsRendering","boolean"==typeof e&&e)}get collection(){let e=null;try{const t=this.#Ae.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.#Ae.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.#Ae.getRaw("AcroForm");return shadow(this,"acroFormRef",e instanceof Ref?e:null)}get metadata(){const e=this.#Ae.getRaw("Metadata");if(!(e instanceof Ref))return shadow(this,"metadata",null);let t=null;try{const a=this.xref.fetch(e,!this.xref.encrypt?.encryptMetadata);if(a instanceof BaseStream&&a.dict instanceof Dict){const e=a.dict.get("Type"),r=a.dict.get("Subtype");if(isName(e,"Metadata")&&isName(r,"XML")){const e=stringToUTF8String(a.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.#ke()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read mark info.")}return shadow(this,"markInfo",e)}#ke(){const e=this.#Ae.get("MarkInfo");if(!(e instanceof Dict))return null;const t={Marked:!1,UserProperties:!1,Suspects:!1};for(const a in t){const r=e.get(a);"boolean"==typeof r&&(t[a]=r)}return t}get structTreeRoot(){let e=null;try{e=this.#Ce()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable read to structTreeRoot info.")}return shadow(this,"structTreeRoot",e)}#Ce(){const e=this.#Ae.getRaw("StructTreeRoot"),t=this.xref.fetchIfRef(e);if(!(t instanceof Dict))return null;const a=new StructTreeRoot(this.xref,t,e);a.init();return a}get toplevelPagesDict(){const e=this.#Ae.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.#ve()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read document outline.")}return shadow(this,"documentOutline",e)}#ve(){let e=this.#Ae.get("Outlines");if(!(e instanceof Dict))return null;e=e.getRaw("First");if(!(e instanceof Ref))return null;const t={items:[]},a=[{obj:e,parent:t}],r=new RefSet;r.put(e);const i=this.xref,n=new Uint8ClampedArray(3);for(;a.length>0;){const t=a.shift(),s=i.fetchIfRef(t.obj);if(null===s)continue;s.has("Title")||warn("Invalid outline item encountered.");const o={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:s,resultObj:o,docBaseUrl:this.baseUrl,docAttachments:this.attachments});const c=s.get("Title"),l=s.get("F")||0,h=s.getArray("C"),u=s.get("Count");let d=n;!isNumberArray(h,3)||0===h[0]&&0===h[1]&&0===h[2]||(d=ColorSpaceUtils.rgb.getRgb(h,0));const f={action:o.action,attachment:o.attachment,dest:o.dest,url:o.url,unsafeUrl:o.unsafeUrl,newWindow:o.newWindow,setOCGState:o.setOCGState,title:"string"==typeof c?stringToPDFString(c):"",color:d,count:Number.isInteger(u)?u:void 0,bold:!!(2&l),italic:!!(1&l),items:[]};t.parent.items.push(f);e=s.getRaw("First");if(e instanceof Ref&&!r.has(e)){a.push({obj:e,parent:f});r.put(e)}e=s.getRaw("Next");if(e instanceof Ref&&!r.has(e)){a.push({obj:e,parent:t.parent});r.put(e)}}return t.items.length>0?t.items:null}get permissions(){let e=null;try{e=this.#Fe()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read permissions.")}return shadow(this,"permissions",e)}#Fe(){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 a=[];for(const e in w){const r=w[e];t&r&&a.push(r)}return a}get optionalContentConfig(){let e=null;try{const t=this.#Ae.get("OCProperties");if(!t)return shadow(this,"optionalContentConfig",null);const a=t.get("D");if(!a)return shadow(this,"optionalContentConfig",null);const r=t.get("OCGs");if(!Array.isArray(r))return shadow(this,"optionalContentConfig",null);const i=new RefSetCache;for(const e of r)e instanceof Ref&&!i.has(e)&&i.put(e,this.#Ie(e));e=this.#Te(a,i)}catch(e){if(e instanceof MissingDataException)throw e;warn(`Unable to read optional content config: ${e}`)}return shadow(this,"optionalContentConfig",e)}#Ie(e){const t=this.xref.fetch(e),a={id:e.toString(),name:null,intent:null,usage:{print:null,view:null},rbGroups:[]},r=t.get("Name");"string"==typeof r&&(a.name=stringToPDFString(r));let i=t.getArray("Intent");Array.isArray(i)||(i=[i]);i.every(e=>e instanceof Name)&&(a.intent=i.map(e=>e.name));const n=t.get("Usage");if(!(n instanceof Dict))return a;const s=a.usage,o=n.get("Print");if(o instanceof Dict){const e=o.get("PrintState");if(e instanceof Name)switch(e.name){case"ON":case"OFF":s.print={printState:e.name}}}const c=n.get("View");if(c instanceof Dict){const e=c.get("ViewState");if(e instanceof Name)switch(e.name){case"ON":case"OFF":s.view={viewState:e.name}}}return a}#Te(e,t){function parseOnOff(e){const a=[];if(Array.isArray(e))for(const r of e)r instanceof Ref&&t.has(r)&&a.push(r.toString());return a}function parseOrder(e,a=0){if(!Array.isArray(e))return null;const i=[];for(const n of e){if(n instanceof Ref&&t.has(n)){r.put(n);i.push(n.toString());continue}const e=parseNestedOrder(n,a);e&&i.push(e)}if(a>0)return i;const n=[];for(const[e]of t.items())r.has(e)||n.push(e.toString());n.length&&i.push({name:null,order:n});return i}function parseNestedOrder(e,t){if(++t>i){warn("parseNestedOrder - reached MAX_NESTED_LEVELS.");return null}const r=a.fetchIfRef(e);if(!Array.isArray(r))return null;const n=a.fetchIfRef(r[0]);if("string"!=typeof n)return null;const s=parseOrder(r.slice(1),t);return s?.length?{name:stringToPDFString(n),order:s}:null}const a=this.xref,r=new RefSet,i=10;!function parseRBGroups(e){if(Array.isArray(e))for(const r of e){const e=a.fetchIfRef(r);if(!Array.isArray(e)||!e.length)continue;const i=new Set;for(const a of e)if(a instanceof Ref&&t.has(a)&&!i.has(a.toString())){i.add(a.toString());t.get(a).rbGroups.push(i)}}}(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.#Se=e}get hasActualNumPages(){return null!==this.#Se}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.#Se??this._pagesCount}get destinations(){const e=this.#Oe(),t=Object.create(null);for(const a of e)if(a instanceof NameTree)for(const[e,r]of a.getAll()){const a=fetchDest(r);a&&(t[stringToPDFString(e,!0)]=a)}else if(a instanceof Dict)for(const[e,r]of a){const a=fetchDest(r);a&&(t[stringToPDFString(e,!0)]||=a)}return shadow(this,"destinations",t)}getDestination(e){if(this.hasOwnProperty("destinations"))return this.destinations[e]??null;const t=this.#Oe();for(const a of t)if(a instanceof NameTree||a instanceof Dict){const t=fetchDest(a.get(e));if(t)return t}if(t.length){const t=this.destinations[e];if(t)return t}return null}#Oe(){const e=this.#Ae.get("Names"),t=[];e?.has("Dests")&&t.push(new NameTree(e.getRaw("Dests"),this.xref));this.#Ae.has("Dests")&&t.push(this.#Ae.get("Dests"));return t}get pageLabels(){let e=null;try{e=this.#Me()}catch(e){if(e instanceof MissingDataException)throw e;warn("Unable to read page labels.")}return shadow(this,"pageLabels",e)}#Me(){const e=this.#Ae.getRaw("PageLabels");if(!e)return null;const t=new Array(this.numPages);let a=null,r="";const i=new NumberTree(e,this.xref).getAll();let n="",s=1;for(let e=0,o=this.numPages;e=1))throw new FormatError("Invalid start in PageLabel dictionary.");s=e}else s=1}switch(a){case"D":n=s;break;case"R":case"r":n=toRomanNumerals(s,"r"===a);break;case"A":case"a":const e=26,t="a"===a?97:65,r=s-1;n=String.fromCharCode(t+r%e).repeat(Math.floor(r/e)+1);break;default:if(a)throw new FormatError(`Invalid style "${a}" in PageLabel dictionary.`);n=""}t[e]=r+n;s++}return t}get pageLayout(){const e=this.#Ae.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.#Ae.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.#Ae.get("ViewerPreferences");if(!(e instanceof Dict))return shadow(this,"viewerPreferences",null);let t=null;for(const[a,r]of e){let e;switch(a){case"HideToolbar":case"HideMenubar":case"HideWindowUI":case"FitWindow":case"CenterWindow":case"DisplayDocTitle":case"PickTrayByPDFSize":"boolean"==typeof r&&(e=r);break;case"NonFullScreenPageMode":if(r instanceof Name)switch(r.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"UseOC":e=r.name;break;default:e="UseNone"}break;case"Direction":if(r instanceof Name)switch(r.name){case"L2R":case"R2L":e=r.name;break;default:e="L2R"}break;case"ViewArea":case"ViewClip":case"PrintArea":case"PrintClip":if(r instanceof Name)switch(r.name){case"MediaBox":case"CropBox":case"BleedBox":case"TrimBox":case"ArtBox":e=r.name;break;default:e="CropBox"}break;case"PrintScaling":if(r instanceof Name)switch(r.name){case"None":case"AppDefault":e=r.name;break;default:e="AppDefault"}break;case"Duplex":if(r instanceof Name)switch(r.name){case"Simplex":case"DuplexFlipShortEdge":case"DuplexFlipLongEdge":e=r.name;break;default:e="None"}break;case"PrintPageRange":if(Array.isArray(r)&&r.length%2==0){r.every((e,t,a)=>Number.isInteger(e)&&e>0&&(0===t||e>=a[t-1])&&e<=this.numPages)&&(e=r)}break;case"NumCopies":Number.isInteger(r)&&r>0&&(e=r);break;default:warn(`Ignoring non-standard key in ViewerPreferences: ${a}.`);continue}if(void 0!==e){t??=Object.create(null);t[a]=e}else warn(`Bad value, for key "${a}", in ViewerPreferences: ${r}.`)}return shadow(this,"viewerPreferences",t)}get openAction(){const e=this.#Ae.get("OpenAction"),t=Object.create(null);if(e instanceof Dict){const a=new Dict(this.xref);a.set("A",e);const r={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:a,resultObj:r});Array.isArray(r.dest)?t.dest=r.dest:r.action&&(t.action=r.action)}else Ln(e)&&(t.dest=e);return shadow(this,"openAction",objectSize(t)>0?t:null)}get attachments(){const e=this.#Ae.get("Names");let t=null;if(e instanceof Dict&&e.has("EmbeddedFiles")){const a=new NameTree(e.getRaw("EmbeddedFiles"),this.xref);for(const[e,r]of a.getAll()){const a=new FileSpec(r,this.xref);t??=Object.create(null);t[stringToPDFString(e,!0)]=a.serializable}}return shadow(this,"attachments",t)}get xfaImages(){const e=this.#Ae.get("Names");let t=null;if(e instanceof Dict&&e.has("XFAImages")){const a=new NameTree(e.getRaw("XFAImages"),this.xref);for(const[e,r]of a.getAll())if(r instanceof BaseStream){t??=new Map;t.set(stringToPDFString(e,!0),r.getBytes())}}return shadow(this,"xfaImages",t)}#De(){const e=this.#Ae.get("Names");let t=null;function appendIfJavaScriptDict(e,a){if(!(a instanceof Dict))return;if(!isName(a.get("S"),"JavaScript"))return;let r=a.get("JS");if(r instanceof BaseStream)r=r.getString();else if("string"!=typeof r)return;r=stringToPDFString(r,!0).replaceAll("\0","");r&&(t||=new Map).set(e,r)}if(e instanceof Dict&&e.has("JavaScript")){const t=new NameTree(e.getRaw("JavaScript"),this.xref);for(const[e,a]of t.getAll())appendIfJavaScriptDict(stringToPDFString(e,!0),a)}const a=this.#Ae.get("OpenAction");a&&appendIfJavaScriptDict("OpenAction",a);return t}get jsActions(){const e=this.#De();let t=collectActions(this.xref,this.#Ae,ne);if(e){t||=Object.create(null);for(const[a,r]of e)a in t?t[a].push(r):t[a]=[r]}return shadow(this,"jsActions",t)}async cleanup(e=!1){clearGlobalCaches();this.globalColorSpaceCache.clear();this.globalImageCache.clear(e);this.pageKidsCountCache.clear();this.pageIndexCache.clear();this.pageDictCache.clear();this.nonBlendModesSet.clear();for(const{dict:e}of await Promise.all(this.fontCache))delete e.cacheKey;this.fontCache.clear();this.builtInCMapCache.clear();this.standardFontDataCache.clear();this.systemFontCache.clear()}async getPageDict(e){const t=[this.toplevelPagesDict],a=new RefSet,r=this.#Ae.getRaw("Pages");r instanceof Ref&&a.put(r);const i=this.xref,n=this.pageKidsCountCache,s=this.pageIndexCache,o=this.pageDictCache;let c=0;for(;t.length;){const r=t.pop();if(r instanceof Ref){const l=n.get(r);if(l>=0&&c+l<=e){c+=l;continue}if(a.has(r))throw new FormatError("Pages tree contains circular reference.");a.put(r);const h=await(o.get(r)||i.fetchAsync(r));if(h instanceof Dict){let t=h.getRaw("Type");t instanceof Ref&&(t=await i.fetchAsync(t));if(isName(t,"Page")||!h.has("Kids")){n.has(r)||n.put(r,1);s.has(r)||s.put(r,c);if(c===e)return[h,r];c++;continue}}t.push(h);continue}if(!(r instanceof Dict))throw new FormatError("Page dictionary kid reference points to wrong type of object.");const{objId:l}=r;let h=r.getRaw("Count");h instanceof Ref&&(h=await i.fetchAsync(h));if(Number.isInteger(h)&&h>=0){l&&!n.has(l)&&n.put(l,h);if(c+h<=e){c+=h;continue}}let u=r.getRaw("Kids");u instanceof Ref&&(u=await i.fetchAsync(u));if(!Array.isArray(u)){let t=r.getRaw("Type");t instanceof Ref&&(t=await i.fetchAsync(t));if(isName(t,"Page")||!r.has("Kids")){if(c===e)return[r,null];c++;continue}throw new FormatError("Page dictionary kids object is not an array.")}for(let e=u.length-1;e>=0;e--){const a=u[e];t.push(a);r===this.toplevelPagesDict&&a instanceof Ref&&!o.has(a)&&o.put(a,i.fetchAsync(a))}}throw new Error(`Page index ${e} not found.`)}async getAllPageDicts(e=!1){const{ignoreErrors:t}=this.pdfManager.evaluatorOptions,a=[{currentNode:this.toplevelPagesDict,posInKids:0}],r=new RefSet,i=this.#Ae.getRaw("Pages");i instanceof Ref&&r.put(i);const n=new Map,s=this.xref,o=this.pageIndexCache;let c=0;function addPageDict(e,t){t&&!o.has(t)&&o.put(t,c);n.set(c++,[e,t])}function addPageError(a){if(a instanceof XRefEntryException&&!e)throw a;if(e&&t&&0===c){warn(`getAllPageDicts - Skipping invalid first page: "${a}".`);a=Dict.empty}n.set(c++,[a,null])}for(;a.length>0;){const e=a.at(-1),{currentNode:t,posInKids:i}=e;let n=t.getRaw("Kids");if(n instanceof Ref)try{n=await s.fetchAsync(n)}catch(e){addPageError(e);break}if(!Array.isArray(n)){addPageError(new FormatError("Page dictionary kids object is not an array."));break}if(i>=n.length){a.pop();continue}const o=n[i];let c;if(o instanceof Ref){if(r.has(o)){addPageError(new FormatError("Pages tree contains circular reference."));break}r.put(o);try{c=await s.fetchAsync(o)}catch(e){addPageError(e);break}}else c=o;if(!(c instanceof Dict)){addPageError(new FormatError("Page dictionary kid reference points to wrong type of object."));break}let l=c.getRaw("Type");if(l instanceof Ref)try{l=await s.fetchAsync(l)}catch(e){addPageError(e);break}isName(l,"Page")||!c.has("Kids")?addPageDict(c,o instanceof Ref?o:null):a.push({currentNode:c,posInKids:0});e.posInKids++}return n}getPageIndex(e){const t=this.pageIndexCache.get(e);if(void 0!==t)return Promise.resolve(t);const a=this.xref;let r=0;const next=t=>function pagesBeforeRef(t){let r,i=0;return a.fetchAsync(t).then(function(a){if(isRefsEqual(t,e)&&!isDict(a,"Page")&&!(a instanceof Dict&&!a.has("Type")&&a.has("Contents")))throw new FormatError("The reference does not point to a /Page dictionary.");if(!a)return null;if(!(a instanceof Dict))throw new FormatError("Node must be a dictionary.");r=a.getRaw("Parent");return a.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 n=[];let s=!1;for(const r of e){if(!(r instanceof Ref))throw new FormatError("Kid must be a reference.");if(isRefsEqual(r,t)){s=!0;break}n.push(a.fetchAsync(r).then(function(e){if(!(e instanceof Dict))throw new FormatError("Kid node must be a dictionary.");e.has("Count")?i+=e.get("Count"):i++}))}if(!s)throw new FormatError("Kid reference not found in parent's kids.");return Promise.all(n).then(()=>[i,r])})}(t).then(t=>{if(!t){this.pageIndexCache.put(e,r);return r}const[a,i]=t;r+=a;return next(i)});return next(e)}get baseUrl(){const e=this.#Ae.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:a=null,docAttachments:r=null}){if(!(e instanceof Dict)){warn("parseDestDictionary: `destDict` must be a dictionary.");return}let i,n,s=e.get("A");if(!(s instanceof Dict))if(e.has("Dest"))s=e.get("Dest");else{s=e.get("AA");s instanceof Dict&&(s.has("D")?s=s.get("D"):s.has("U")&&(s=s.get("U")))}if(s instanceof Dict){const e=s.get("S");if(!(e instanceof Name)){warn("parseDestDictionary: Invalid type in Action dictionary.");return}const a=e.name;switch(a){case"ResetForm":const e=s.get("Flags"),o=!(1&("number"==typeof e?e:0)),c=[],l=[];for(const e of s.get("Fields")||[])e instanceof Ref?l.push(e.toString()):"string"==typeof e&&c.push(stringToPDFString(e));t.resetForm={fields:c,refs:l,include:o};break;case"URI":i=s.get("URI");i instanceof Name&&(i="/"+i.name);break;case"GoTo":n=s.get("D");break;case"Launch":case"GoToR":const h=s.get("F");if(h instanceof Dict){const e=new FileSpec(h,null,!0),{rawFilename:t}=e.serializable;i=t}else"string"==typeof h&&(i=h);const u=fetchRemoteDest(s);u&&"string"==typeof i&&(i=i.split("#",1)[0]+"#"+u);const d=s.get("NewWindow");"boolean"==typeof d&&(t.newWindow=d);break;case"GoToE":const f=s.get("T");let g;if(r&&f instanceof Dict){const e=f.get("R"),t=f.get("N");isName(e,"C")&&"string"==typeof t&&(g=r[stringToPDFString(t,!0)])}if(g){t.attachment=g;const e=fetchRemoteDest(s);e&&(t.attachmentDest=e)}else warn('parseDestDictionary - unimplemented "GoToE" action.');break;case"Named":const p=s.get("N");p instanceof Name&&(t.action=p.name);break;case"SetOCGState":const m=s.get("State"),b=s.get("PreserveRB");if(!Array.isArray(m)||0===m.length)break;const y=[];for(const e of m)if(e instanceof Name)switch(e.name){case"ON":case"OFF":case"Toggle":y.push(e.name)}else e instanceof Ref&&y.push(e.toString());if(y.length!==m.length)break;t.setOCGState={state:y,preserveRB:"boolean"!=typeof b||b};break;case"JavaScript":const w=s.get("JS");let x;w instanceof BaseStream?x=w.getString():"string"==typeof w&&(x=w);const S=x&&recoverJsURL(stringToPDFString(x,!0));if(S){i=S.url;t.newWindow=S.newWindow;break}default:if("JavaScript"===a||"SubmitForm"===a)break;warn(`parseDestDictionary - unsupported action: "${a}".`)}}else e.has("Dest")&&(n=e.get("Dest"));if("string"==typeof i){const e=createValidAbsoluteUrl(i,a,{addDefaultProtocol:!0,tryConvertEncoding:!0});e&&(t.url=e.href);t.unsafeUrl=i}if(n){n instanceof Name&&(n=n.name);"string"==typeof n?t.dest=stringToPDFString(n,!0):Ln(n)&&(t.dest=n)}}}function mayHaveChildren(e){return e instanceof Ref||e instanceof Dict||e instanceof BaseStream||Array.isArray(e)}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)mayHaveChildren(a)&&t.push(a)}class ObjectLoader{refSet=new RefSet;constructor(e,t,a){this.dict=e;this.keys=t;this.xref=a}async load(){const{keys:e,dict:t}=this,a=[];for(const r of e){const e=t.getRaw(r);void 0!==e&&a.push(e)}await this.#Be(a);this.refSet=null}async#Be(e){const t=[],a=[];for(;e.length;){let r=e.pop();if(r instanceof Ref){if(this.refSet.has(r))continue;try{this.refSet.put(r);r=this.xref.fetch(r)}catch(e){if(!(e instanceof MissingDataException)){warn(`ObjectLoader.#walk - requesting all data: "${e}".`);await this.xref.stream.manager.requestAllChunks();return}t.push(r);a.push({begin:e.begin,end:e.end})}}if(r instanceof BaseStream){const e=r.getBaseStreams();if(e){let i=!1;for(const t of e)if(!t.isDataLoaded){i=!0;a.push({begin:t.start,end:t.end})}i&&t.push(r)}}addChildren(r,e)}if(a.length){await this.xref.stream.manager.requestRanges(a);for(const e of t)e instanceof Ref&&this.refSet.remove(e);await this.#Be(t)}}static async load(e,t,a){if(a.stream.isDataLoaded)return;const r=new ObjectLoader(e,t,a);await r.load()}}const _n=Symbol(),Un=Symbol(),jn=Symbol(),Xn=Symbol(),qn=Symbol(),Hn=Symbol(),Wn=Symbol(),Gn=Symbol(),zn=Symbol(),$n=Symbol("content"),Vn=Symbol("data"),Kn=Symbol(),Jn=Symbol("extra"),Yn=Symbol(),Zn=Symbol(),Qn=Symbol(),es=Symbol(),ts=Symbol(),as=Symbol(),rs=Symbol(),is=Symbol(),ns=Symbol(),ss=Symbol(),os=Symbol(),cs=Symbol(),ls=Symbol(),hs=Symbol(),us=Symbol(),ds=Symbol(),fs=Symbol(),gs=Symbol(),ps=Symbol(),ms=Symbol(),bs=Symbol(),ys=Symbol(),ws=Symbol(),xs=Symbol(),Ss=Symbol(),As=Symbol(),ks=Symbol(),Cs=Symbol(),vs=Symbol(),Fs=Symbol(),Is=Symbol(),Ts=Symbol(),Os=Symbol("namespaceId"),Ms=Symbol("nodeName"),Ds=Symbol(),Bs=Symbol(),Rs=Symbol(),Ns=Symbol(),Es=Symbol(),Ls=Symbol(),_s=Symbol(),Us=Symbol(),js=Symbol("root"),Xs=Symbol(),qs=Symbol(),Hs=Symbol(),Ws=Symbol(),Gs=Symbol(),zs=Symbol(),$s=Symbol(),Vs=Symbol(),Ks=Symbol(),Js=Symbol(),Ys=Symbol(),Zs=Symbol("uid"),Qs=Symbol(),eo={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}},to={pt:e=>e,cm:e=>e/2.54*72,mm:e=>e/25.4*72,in:e=>72*e,px:e=>e},ao=/([+-]?\d+\.?\d*)(.*)/;function stripQuotes(e){return e.startsWith("'")||e.startsWith('"')?e.slice(1,-1):e}function getInteger({data:e,defaultValue:t,validate:a}){if(!e)return t;e=e.trim();const r=parseInt(e,10);return!isNaN(r)&&a(r)?r:t}function getFloat({data:e,defaultValue:t,validate:a}){if(!e)return t;e=e.trim();const r=parseFloat(e);return!isNaN(r)&&a(r)?r:t}function getKeyword({data:e,defaultValue:t,validate:a}){return e&&a(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 a=e.trim().match(ao);if(!a)return getMeasurement(t);const[,r,i]=a,n=parseFloat(r);if(isNaN(n))return getMeasurement(t);if(0===n)return 0;const s=to[i];return s?s(n):n}function getRatio(e){if(!e)return{num:1,den:1};const t=e.split(":",2).map(e=>parseFloat(e.trim())).filter(e=>!isNaN(e));1===t.length&&t.push(1);if(0===t.length)return{num:1,den:1};const[a,r]=t;return{num:a,den:r}}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,a,r){this.success=e;this.html=t;this.bbox=a;this.breakNode=r}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 a=this.fonts.get("PdfJS-Fallback-PdfJS-XFA");for(const e of t)this.fonts.set(e,a)}addPdfFont(e){const t=e.cssFontInfo,a=t.fontFamily;let r=this.fonts.get(a);if(!r){r=Object.create(null);this.fonts.set(a,r);this.defaultFont||(this.defaultFont=r)}let i="";const n=parseFloat(t.fontWeight);0!==parseFloat(t.italicAngle)?i=n>=700?"bolditalic":"italic":n>=700&&(i="bold");if(!i){(e.name.includes("Bold")||e.psName?.includes("Bold"))&&(i="bold");(e.name.includes("Italic")||e.name.endsWith("It")||e.psName?.includes("Italic")||e.psName?.endsWith("It"))&&(i+="italic")}i||(i="regular");r[i]=e}getDefault(){return this.defaultFont}find(e,t=!0){let a=this.fonts.get(e)||this.cache.get(e);if(a)return a;const r=/,|-|_| |bolditalic|bold|italic|regular|it/gi;let i=e.replaceAll(r,"");a=this.fonts.get(i);if(a){this.cache.set(e,a);return a}i=i.toLowerCase();const n=[];for(const[e,t]of this.fonts.entries())e.replaceAll(r,"").toLowerCase().startsWith(i)&&n.push(t);if(0===n.length)for(const[,e]of this.fonts.entries())e.regular.name?.replaceAll(r,"").toLowerCase().startsWith(i)&&n.push(e);if(0===n.length){i=i.replaceAll(/psmt|mt/gi,"");for(const[e,t]of this.fonts.entries())e.replaceAll(r,"").toLowerCase().startsWith(i)&&n.push(t)}if(0===n.length)for(const e of this.fonts.values())e.regular.name?.replaceAll(r,"").toLowerCase().startsWith(i)&&n.push(e);if(n.length>=1){1!==n.length&&t&&warn(`XFA - Too many choices to guess the correct font: ${e}`);this.cache.set(e,n[0]);return n[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 text_FontInfo{constructor(e,t,a,r){this.lineHeight=a;this.paraMargin=t||{top:0,bottom:0,left:0,right:0};if(!e){[this.pdfFont,this.xfaFont]=this.defaultFont(r);return}this.xfaFont={typeface:e.typeface,posture:e.posture,weight:e.weight,size:e.size,letterSpacing:e.letterSpacing};const i=r.find(e.typeface);if(i){this.pdfFont=selectFont(e,i);this.pdfFont||([this.pdfFont,this.xfaFont]=this.defaultFont(r))}else[this.pdfFont,this.xfaFont]=this.defaultFont(r)}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,a,r){this.fontFinder=r;this.stack=[new text_FontInfo(e,t,a,r)]}pushData(e,t,a){const r=this.stack.at(-1);for(const t of["typeface","posture","weight","size","letterSpacing"])e[t]||(e[t]=r.xfaFont[t]);for(const e of["top","bottom","left","right"])isNaN(t[e])&&(t[e]=r.paraMargin[e]);const i=new text_FontInfo(e,t,a||r.lineHeight,this.fontFinder);i.pdfFont||(i.pdfFont=r.pdfFont);this.stack.push(i)}popFont(){this.stack.pop()}topFont(){return this.stack.at(-1)}}class TextMeasure{constructor(e,t,a,r){this.glyphs=[];this.fontSelector=new FontSelector(e,t,a,r);this.extraHeight=0}pushData(e,t,a){this.fontSelector.pushData(e,t,a)}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(),a=t.xfaFont.size;if(t.pdfFont){const r=t.xfaFont.letterSpacing,i=t.pdfFont,n=i.lineHeight||1.2,s=t.lineHeight||Math.max(1.2,n)*a,o=n-(void 0===i.lineGap?.2:i.lineGap),c=Math.max(1,o)*a,l=a/1e3,h=i.defaultWidth||i.charsToGlyphs(" ")[0].width;for(const t of e.split(/[\u2029\n]/)){const e=i.encodeString(t).join(""),a=i.charsToGlyphs(e);for(const e of a){const t=e.width||h;this.glyphs.push([t*l+r,s,c,e.unicode,!1])}this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop();return}for(const t of e.split(/[\u2029\n]/)){for(const e of t.split(""))this.glyphs.push([a,1.2*a,a,e,!1]);this.glyphs.push([0,0,0,"\n",!0])}this.glyphs.pop()}compute(e){let t=-1,a=0,r=0,i=0,n=0,s=0,o=!1,c=!0;for(let l=0,h=this.glyphs.length;le){r=Math.max(r,n);n=0;i+=s;s=m;t=-1;a=0;o=!0;c=!1}else{s=Math.max(m,s);a=n;n+=h;t=l}else if(n+h>e){i+=s;s=m;if(-1!==t){l=t;r=Math.max(r,a);n=0;t=-1;a=0}else{r=Math.max(r,n);n=h}o=!0;c=!1}else{n+=h;s=Math.max(m,s)}}r=Math.max(r,n);i+=s+this.extraHeight;return{width:1.02*r,height:i,isBroken:o}}}const ro=/^[^.[]+/,io=/^[^\]]+/,no=0,so=1,oo=2,co=3,lo=4,ho=new Map([["$data",(e,t)=>e.datasets?e.datasets.data:e],["$record",(e,t)=>(e.datasets?e.datasets.data:e)[cs]()[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]]),uo=new WeakMap;function parseIndex(e){return"*"===(e=e.trim())?1/0:parseInt(e,10)||0}function parseExpression(e,t,a=!0){let r=e.match(ro);if(!r)return null;let[i]=r;const n=[{name:i,cacheName:"."+i,index:0,js:null,formCalc:null,operator:no}];let s=i.length;for(;s0&&h.push(e)}if(0===h.length&&!o&&0===c){const a=t[ds]();if(!(t=a))return null;c=-1;e=[t];continue}e=isFinite(l)?h.filter(e=>le[l]):h.flat()}return 0===e.length?null:e}function createDataNode(e,t,a){const r=parseExpression(a);if(!r)return null;if(r.some(e=>e.operator===so))return null;const i=ho.get(r[0].name);let n=0;if(i){e=i(e,t);n=1}else e=t||e;for(let t=r.length;ne[$s]()).join("")}get[po](){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,po,e._attributes)}[As](e){let t=this;for(;t;){if(t===e)return!0;t=t[ds]()}return!1}[ds](){return this[Fo]}[us](){return this[ds]()}[cs](e=null){return e?this[e]:this[mo]}[Kn](){const e=Object.create(null);this[$n]&&(e.$content=this[$n]);for(const t of Object.getOwnPropertyNames(this)){const a=this[t];null!==a&&(a instanceof XFAObject?e[t]=a[Kn]():a instanceof XFAObjectArray?a.isEmpty()||(e[t]=a.dump()):e[t]=a)}return e}[Ys](){return null}[Ks](){return HTMLResult.EMPTY}*[ls](){for(const e of this[cs]())yield e}*[xo](e,t){for(const a of this[ls]())if(!e||t===e.has(a[Ms])){const e=this[ts](),t=a[Ks](e);t.success||(this[Jn].failingNode=a);yield t}}[Zn](){return null}[Un](e,t){this[Jn].children.push(e)}[ts](){}[Xn]({filter:e=null,include:t=!0}){if(this[Jn].generator){const e=this[ts](),t=this[Jn].failingNode[Ks](e);if(!t.success)return t;t.html&&this[Un](t.html,t.bbox);delete this[Jn].failingNode}else this[Jn].generator=this[xo](e,t);for(;;){const e=this[Jn].generator.next();if(e.done)break;const t=e.value;if(!t.success)return t;t.html&&this[Un](t.html,t.bbox)}this[Jn].generator=null;return HTMLResult.EMPTY}[Ws](e){this[Oo]=new Set(Object.keys(e))}[Ao](e){const t=this[po],a=this[Oo];return[...e].filter(e=>t.has(e)&&!a.has(e))}[Xs](e,t=new Set){for(const a of this[mo])a[Io](e,t)}[Io](e,t){const a=this[So](e,t);a?this[fo](a,e,t):this[Xs](e,t)}[So](e,t){const{use:a,usehref:r}=this;if(!a&&!r)return null;let i=null,n=null,s=null,o=a;if(r){o=r;r.startsWith("#som(")&&r.endsWith(")")?n=r.slice(5,-1):r.startsWith(".#som(")&&r.endsWith(")")?n=r.slice(6,-1):r.startsWith("#")?s=r.slice(1):r.startsWith(".#")&&(s=r.slice(2))}else a.startsWith("#")?s=a.slice(1):n=a;this.use=this.usehref="";if(s)i=e.get(s);else{i=searchNode(e.get(js),this,n,!0,!1);i&&(i=i[0])}if(!i){warn(`XFA - Invalid prototype reference: ${o}.`);return null}if(i[Ms]!==this[Ms]){warn(`XFA - Incompatible prototype: ${i[Ms]} !== ${this[Ms]}.`);return null}if(t.has(i)){warn("XFA - Cycle detected in prototypes use.");return null}t.add(i);const c=i[So](e,t);c&&i[fo](c,e,t);i[Xs](e,t);t.delete(i);return i}[fo](e,t,a){if(a.has(e)){warn("XFA - Cycle detected in prototypes use.");return}!this[$n]&&e[$n]&&(this[$n]=e[$n]);new Set(a).add(e);for(const t of this[Ao](e[Oo])){this[t]=e[t];this[Oo]&&this[Oo].add(t)}for(const r of Object.getOwnPropertyNames(this)){if(this[po].has(r))continue;const i=this[r],n=e[r];if(i instanceof XFAObjectArray){for(const e of i[mo])e[Io](t,a);for(let r=i[mo].length,s=n[mo].length;rXFAObject[bo](e)):"object"==typeof e&&null!==e?Object.assign({},e):e}[Gn](){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[Zs]=`${e[Ms]}${Do++}`;e[mo]=[];for(const t of Object.getOwnPropertyNames(this)){if(this[po].has(t)){e[t]=XFAObject[bo](this[t]);continue}const a=this[t];e[t]=a instanceof XFAObjectArray?new XFAObjectArray(a[Co]):null}for(const t of this[mo]){const a=t[Ms],r=t[Gn]();e[mo].push(r);r[Fo]=e;null===e[a]?e[a]=r:e[a][mo].push(r)}return e}[cs](e=null){return e?this[mo].filter(t=>t[Ms]===e):this[mo]}[as](e){return this[e]}[rs](e,t,a=!0){return Array.from(this[is](e,t,a))}*[is](e,t,a=!0){if("parent"!==e){for(const a of this[mo]){a[Ms]===e&&(yield a);a.name===e&&(yield a);(t||a[Fs]())&&(yield*a[is](e,t,!1))}a&&this[po].has(e)&&(yield new XFAAttribute(this,e,this[e]))}else yield this[Fo]}}class XFAObjectArray{constructor(e=1/0){this[Co]=e;this[mo]=[]}get isXFAObject(){return!1}get isXFAObjectArray(){return!0}push(e){if(this[mo].length<=this[Co]){this[mo].push(e);return!0}warn(`XFA - node "${e[Ms]}" accepts no more than ${this[Co]} children`);return!1}isEmpty(){return 0===this[mo].length}dump(){return 1===this[mo].length?this[mo][0][Kn]():this[mo].map(e=>e[Kn]())}[Gn](){const e=new XFAObjectArray(this[Co]);e[mo]=this[mo].map(e=>e[Gn]());return e}get children(){return this[mo]}clear(){this[mo].length=0}}class XFAAttribute{constructor(e,t,a){this[Fo]=e;this[Ms]=t;this[$n]=a;this[zn]=!1;this[Zs]="attribute"+Do++}[ds](){return this[Fo]}[Ss](){return!0}[ns](){return this[$n].trim()}[Gs](e){e=e.value||"";this[$n]=e.toString()}[$s](){return this[$n]}[As](e){return this[Fo]===e||this[Fo][As](e)}}class XmlObject extends XFAObject{constructor(e,t,a={}){super(e,t);this[$n]="";this[yo]=null;if("#text"!==t){const e=new Map;this[go]=e;for(const[t,r]of Object.entries(a))e.set(t,new XFAAttribute(this,t,r));if(a.hasOwnProperty(Ds)){const e=a[Ds].xfa.dataNode;void 0!==e&&("dataGroup"===e?this[yo]=!1:"dataValue"===e&&(this[yo]=!0))}}this[zn]=!1}[Js](e){const t=this[Ms];if("#text"===t){e.push(encodeToXmlString(this[$n]));return}const a=utf8StringToString(t),r=this[Os]===Bo?"xfa:":"";e.push(`<${r}${a}`);for(const[t,a]of this[go].entries()){const r=utf8StringToString(t);e.push(` ${r}="${encodeToXmlString(a[$n])}"`)}null!==this[yo]&&(this[yo]?e.push(' xfa:dataNode="dataValue"'):e.push(' xfa:dataNode="dataGroup"'));if(this[$n]||0!==this[mo].length){e.push(">");if(this[$n])"string"==typeof this[$n]?e.push(encodeToXmlString(this[$n])):this[$n][Js](e);else for(const t of this[mo])t[Js](e);e.push(``)}else e.push("/>")}[Bs](e){if(this[$n]){const e=new XmlObject(this[Os],"#text");this[jn](e);e[$n]=this[$n];this[$n]=""}this[jn](e);return!0}[Ns](e){this[$n]+=e}[Yn](){if(this[$n]&&this[mo].length>0){const e=new XmlObject(this[Os],"#text");this[jn](e);e[$n]=this[$n];delete this[$n]}}[Ks](){return"#text"===this[Ms]?HTMLResult.success({name:"#text",value:this[$n]}):HTMLResult.EMPTY}[cs](e=null){return e?this[mo].filter(t=>t[Ms]===e):this[mo]}[es](){return this[go]}[as](e){const t=this[go].get(e);return void 0!==t?t:this[cs](e)}*[is](e,t){const a=this[go].get(e);a&&(yield a);for(const a of this[mo]){a[Ms]===e&&(yield a);t&&(yield*a[is](e,t))}}*[Qn](e,t){const a=this[go].get(e);!a||t&&a[zn]||(yield a);for(const a of this[mo])yield*a[Qn](e,t)}*[os](e,t,a){for(const r of this[mo]){r[Ms]!==e||a&&r[zn]||(yield r);t&&(yield*r[os](e,t,a))}}[Ss](){return null===this[yo]?0===this[mo].length||this[mo][0][Os]===eo.xhtml.id:this[yo]}[ns](){return null===this[yo]?0===this[mo].length?this[$n].trim():this[mo][0][Os]===eo.xhtml.id?this[mo][0][$s]().trim():null:this[$n].trim()}[Gs](e){e=e.value||"";this[$n]=e.toString()}[Kn](e=!1){const t=Object.create(null);e&&(t.$ns=this[Os]);this[$n]&&(t.$content=this[$n]);t.$name=this[Ms];t.children=[];for(const a of this[mo])t.children.push(a[Kn](e));t.attributes=Object.create(null);for(const[e,a]of this[go])t.attributes[e]=a[$n];return t}}class ContentObject extends XFAObject{constructor(e,t){super(e,t);this[$n]=""}[Ns](e){this[$n]+=e}[Yn](){}}class OptionObject extends ContentObject{constructor(e,t,a){super(e,t);this[vo]=a}[Yn](){this[$n]=getKeyword({data:this[$n],defaultValue:this[vo][0],validate:e=>this[vo].includes(e)})}[qn](e){super[qn](e);delete this[vo]}}class StringObject extends ContentObject{[Yn](){this[$n]=this[$n].trim()}}class IntegerObject extends ContentObject{constructor(e,t,a,r){super(e,t);this[wo]=a;this[Mo]=r}[Yn](){this[$n]=getInteger({data:this[$n],defaultValue:this[wo],validate:this[Mo]})}[qn](e){super[qn](e);delete this[wo];delete this[Mo]}}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 Ro={anchorType(e,t){const a=e[us]();if(a&&(!a.layout||"position"===a.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 a=e[us]();let r=e.w;const i=e.h;if(a.layout?.includes("row")){const t=a[Jn],i=e.colSpan;let n;if(-1===i){n=Math.sumPrecise(t.columnWidths.slice(t.currentColumn));t.currentColumn=0}else{n=Math.sumPrecise(t.columnWidths.slice(t.currentColumn,t.currentColumn+i));t.currentColumn=(t.currentColumn+e.colSpan)%t.columnWidths.length}isNaN(n)||(r=e.w=n)}t.width=""!==r?measureToString(r):"auto";t.height=""!==i?measureToString(i):"auto"},position(e,t){const a=e[us]();if(!a?.layout||"position"===a.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[Ms])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[Ys]().margin)}};function setMinMaxDimensions(e,t){if("position"===e[us]().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,a,r,i,n){const s=new TextMeasure(t,a,r,i);"string"==typeof e?s.addString(e):e[Es](s);return s.compute(n)}function layoutNode(e,t){let a=null,r=null,i=!1;if((!e.w||!e.h)&&e.value){let n=0,s=0;if(e.margin){n=e.margin.leftInset+e.margin.rightInset;s=e.margin.topInset+e.margin.bottomInset}let o=null,c=null;if(e.para){c=Object.create(null);o=""===e.para.lineHeight?null:e.para.lineHeight;c.top=""===e.para.spaceAbove?0:e.para.spaceAbove;c.bottom=""===e.para.spaceBelow?0:e.para.spaceBelow;c.left=""===e.para.marginLeft?0:e.para.marginLeft;c.right=""===e.para.marginRight?0:e.para.marginRight}let l=e.font;if(!l){const t=e[fs]();let a=e[ds]();for(;a&&a!==t;){if(a.font){l=a.font;break}a=a[ds]()}}const h=(e.w||t.width)-n,u=e[gs].fontFinder;if(e.value.exData&&e.value.exData[$n]&&"text/html"===e.value.exData.contentType){const t=layoutText(e.value.exData[$n],l,c,o,u,h);r=t.width;a=t.height;i=t.isBroken}else{const t=e.value[$s]();if(t){const e=layoutText(t,l,c,o,u,h);r=e.width;a=e.height;i=e.isBroken}}null===r||e.w||(r+=n);null===a||e.h||(a+=s)}return{w:r,h:a,isBroken:i}}function computeBbox(e,t,a){let r;if(""!==e.w&&""!==e.h)r=[e.x,e.y,e.w,e.h];else{if(!a)return null;let i=e.w;if(""===i){if(0===e.maxW){const t=e[us]();i="position"===t.layout&&""!==t.w?0:e.minW}else i=Math.min(e.maxW,a.width);t.attributes.style.width=measureToString(i)}let n=e.h;if(""===n){if(0===e.maxH){const t=e[us]();n="position"===t.layout&&""!==t.h?0:e.minH}else n=Math.min(e.maxH,a.height);t.attributes.style.height=measureToString(n)}r=[e.x,e.y,i,n]}return r}function fixDimensions(e){const t=e[us]();if(t.layout?.includes("row")){const a=t[Jn],r=e.colSpan;let i;i=-1===r?Math.sumPrecise(a.columnWidths.slice(a.currentColumn)):Math.sumPrecise(a.columnWidths.slice(a.currentColumn,a.currentColumn+r));isNaN(i)||(e.w=i)}t.layout&&"position"!==t.layout&&(e.x=e.y=0);"table"===e.layout&&""===e.w&&Array.isArray(e.columnWidths)&&(e.w=Math.sumPrecise(e.columnWidths))}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 a=Object.create(null);for(const r of t){const t=e[r];if(null!==t)if(Ro.hasOwnProperty(r))Ro[r](e,a);else if(t instanceof XFAObject){const e=t[Ys]();e?Object.assign(a,e):warn(`(DEBUG) - XFA - style for ${r} not implemented yet`)}}return a}function createWrapper(e,t){const{attributes:a}=t,{style:r}=a,i={name:"div",attributes:{class:["xfaWrapper"],style:Object.create(null)},children:[]};a.class.push("xfaWrapped");if(e.border){const{widths:a,insets:n}=e.border[Jn];let s,o,c=n[0],l=n[3];const h=n[0]+n[2],u=n[1]+n[3];switch(e.border.hand){case"even":c-=a[0]/2;l-=a[3]/2;s=`calc(100% + ${(a[1]+a[3])/2-u}px)`;o=`calc(100% + ${(a[0]+a[2])/2-h}px)`;break;case"left":c-=a[0];l-=a[3];s=`calc(100% + ${a[1]+a[3]-u}px)`;o=`calc(100% + ${a[0]+a[2]-h}px)`;break;case"right":s=u?`calc(100% - ${u}px)`:"100%";o=h?`calc(100% - ${h}px)`:"100%"}const d=["xfaBorder"];isPrintOnly(e.border)&&d.push("xfaPrintOnly");const f={name:"div",attributes:{class:d,style:{top:`${c}px`,left:`${l}px`,width:s,height:o}},children:[]};for(const e of["border","borderWidth","borderColor","borderRadius","borderStyle"])if(void 0!==r[e]){f.attributes.style[e]=r[e];delete r[e]}i.children.push(f,t)}else i.children.push(t);for(const e of["background","backgroundClip","top","left","width","height","minWidth","minHeight","maxWidth","maxHeight","transform","transformOrigin","visibility"])if(void 0!==r[e]){i.attributes.style[e]=r[e];delete r[e]}i.attributes.style.position="absolute"===r.position?"absolute":"relative";delete r.position;if(r.alignSelf){i.attributes.style.alignSelf=r.alignSelf;delete r.alignSelf}return i}function fixTextIndent(e){const t=getMeasurement(e.textIndent,"0px");if(t>=0)return;const a="padding"+("left"===("right"===e.textAlign?"right":"left")?"Left":"Right"),r=getMeasurement(e[a],"0px");e[a]=r-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[fs]()[Jn].paraStack;return t.length?t.at(-1):null}function setPara(e,t,a){if(a.attributes.class?.includes("xfaRich")){if(t){""===e.h&&(t.height="auto");""===e.w&&(t.width="auto")}const r=getCurrentPara(e);if(r){const e=a.attributes.style;e.display="flex";e.flexDirection="column";switch(r.vAlign){case"top":e.justifyContent="start";break;case"bottom":e.justifyContent="end";break;case"middle":e.justifyContent="center"}const t=r[Ys]();for(const[a,r]of Object.entries(t))a in e||(e[a]=r)}}}function setFontFamily(e,t,a,r){if(!a){delete r.fontFamily;return}const i=stripQuotes(e.typeface);r.fontFamily=`"${i}"`;const n=a.find(i);if(n){const{fontFamily:a}=n.regular.cssFontInfo;a!==i&&(r.fontFamily=`"${a}"`);const s=getCurrentPara(t);if(s&&""!==s.lineHeight)return;if(r.lineHeight)return;const o=selectFont(e,n);o&&(r.lineHeight=Math.max(1.2,o.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[Jn])return null;const t={name:"div",attributes:e[Jn].attributes,children:e[Jn].children};if(e[Jn].failingNode){const a=e[Jn].failingNode[Zn]();a&&(e.layout.endsWith("-tb")?t.children.push(createLine(e,[a])):t.children.push(a))}return 0===t.children.length?null:t}function addHTML(e,t,a){const r=e[Jn],i=r.availableSpace,[n,s,o,c]=a;switch(e.layout){case"position":r.width=Math.max(r.width,n+o);r.height=Math.max(r.height,s+c);r.children.push(t);break;case"lr-tb":case"rl-tb":if(!r.line||1===r.attempt){r.line=createLine(e,[]);r.children.push(r.line);r.numberInLine=0}r.numberInLine+=1;r.line.children.push(t);if(0===r.attempt){r.currentWidth+=o;r.height=Math.max(r.height,r.prevHeight+c)}else{r.currentWidth=o;r.prevHeight=r.height;r.height+=c;r.attempt=0}r.width=Math.max(r.width,r.currentWidth);break;case"rl-row":case"row":{r.children.push(t);r.width+=o;r.height=Math.max(r.height,c);const e=measureToString(r.height);for(const t of r.children)t.attributes.style.height=e;break}case"table":case"tb":r.width=MathClamp(o,r.width,i.width);r.height+=c;r.children.push(t)}}function getAvailableSpace(e){const t=e[Jn].availableSpace,a=e.margin?e.margin.topInset+e.margin.bottomInset:0,r=e.margin?e.margin.leftInset+e.margin.rightInset:0;switch(e.layout){case"lr-tb":case"rl-tb":return 0===e[Jn].attempt?{width:t.width-r-e[Jn].currentWidth,height:t.height-a-e[Jn].prevHeight}:{width:t.width-r,height:t.height-a-e[Jn].height};case"rl-row":case"row":return{width:Math.sumPrecise(e[Jn].columnWidths.slice(e[Jn].currentColumn)),height:t.height-r};case"table":case"tb":return{width:t.width-r,height:t.height-a-e[Jn].height};default:return t}}function checkDimensions(e,t){if(null===e[fs]()[Jn].firstUnsplittable)return!0;if(0===e.w||0===e.h)return!0;const a=e[us](),r=a[Jn]?.attempt||0,[,i,n,s]=function getTransformedBBox(e){let t,a,r=""===e.w?NaN:e.w,i=""===e.h?NaN:e.h,[n,s]=[0,0];switch(e.anchorType||""){case"bottomCenter":[n,s]=[r/2,i];break;case"bottomLeft":[n,s]=[0,i];break;case"bottomRight":[n,s]=[r,i];break;case"middleCenter":[n,s]=[r/2,i/2];break;case"middleLeft":[n,s]=[0,i/2];break;case"middleRight":[n,s]=[r,i/2];break;case"topCenter":[n,s]=[r/2,0];break;case"topRight":[n,s]=[r,0]}switch(e.rotate||0){case 0:[t,a]=[-n,-s];break;case 90:[t,a]=[-s,n];[r,i]=[i,-r];break;case 180:[t,a]=[n,s];[r,i]=[-r,-i];break;case 270:[t,a]=[s,-n];[r,i]=[-i,r]}return[e.x+t+Math.min(0,r),e.y+a+Math.min(0,i),Math.abs(r),Math.abs(i)]}(e);switch(a.layout){case"lr-tb":case"rl-tb":return 0===r?e[fs]()[Jn].noLayoutFailure?""!==e.w?Math.round(n-t.width)<=2:t.width>2:!(""!==e.h&&Math.round(s-t.height)>2)&&(""!==e.w?Math.round(n-t.width)<=2||0===a[Jn].numberInLine&&t.height>2:t.width>2):!!e[fs]()[Jn].noLayoutFailure||!(""!==e.h&&Math.round(s-t.height)>2)&&((""===e.w||Math.round(n-t.width)<=2||!a[vs]())&&t.height>2);case"table":case"tb":return!!e[fs]()[Jn].noLayoutFailure||(""===e.h||e[Cs]()?(""===e.w||Math.round(n-t.width)<=2||!a[vs]())&&t.height>2:Math.round(s-t.height)<=2);case"position":if(e[fs]()[Jn].noLayoutFailure)return!0;if(""===e.h||Math.round(s+i-t.height)<=2)return!0;return s+i>e[fs]()[Jn].currentContentArea.h;case"rl-row":case"row":return!!e[fs]()[Jn].noLayoutFailure||(""===e.h||Math.round(s-t.height)<=2);default:return!0}}const No=eo.template.id,Eo="http://www.w3.org/2000/svg",Po=/^H(\d+)$/,Lo=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"]),_o=[[[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[ss]();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[jn](t);e.value=t}e.value[Gs](t)}function*getContainedChildren(e){for(const t of e[cs]())t instanceof SubformSet?yield*t[ls]():yield t}function isRequired(e){return"error"===e.validate?.nullTest}function setTabIndex(e){for(;e;){if(!e.traversal){e[zs]=e[ds]()[zs];return}if(e[zs])return;let t=null;for(const a of e.traversal[cs]())if("next"===a.operation){t=a;break}if(!t||!t.ref){e[zs]=e[ds]()[zs];return}const a=e[fs]();e[zs]=++a[zs];const r=a[qs](t.ref,e);if(!r)return;e=r[0]}}function applyAssist(e,t){const a=e.assist;if(a){const e=a[Ks]();e&&(t.title=e);const r=a.role.match(Po);if(r){const e="heading",a=r[1];t.role=e;t["aria-level"]=a}}if("table"===e.layout)t.role="table";else if("row"===e.layout)t.role="row";else{const a=e[ds]();"row"===a.layout&&(t.role="TH"===a.assist?.role?"columnheader":"cell")}}function ariaLabel(e){if(!e.assist)return null;const t=e.assist;return t.speak&&""!==t.speak[$n]?t.speak[$n]:t.toolTip?t.toolTip[$n]: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[fs]();if(null===t[Jn].firstUnsplittable){t[Jn].firstUnsplittable=e;t[Jn].noLayoutFailure=!0}}function unsetFirstUnsplittable(e){const t=e[fs]();t[Jn].firstUnsplittable===e&&(t[Jn].noLayoutFailure=!1)}function handleBreak(e){if(e[Jn])return!1;e[Jn]=Object.create(null);if("auto"===e.targetType)return!1;const t=e[fs]();let a=null;if(e.target){a=t[qs](e.target,e[ds]());if(!a)return!1;a=a[0]}const{currentPageArea:r,currentContentArea:i}=t[Jn];if("pageArea"===e.targetType){a instanceof PageArea||(a=null);if(e.startNew){e[Jn].target=a||r;return!0}if(a&&a!==r){e[Jn].target=a;return!0}return!1}a instanceof ContentArea||(a=null);const n=a&&a[ds]();let s,o=n;if(e.startNew)if(a){const e=n.contentArea.children,t=e.indexOf(i),r=e.indexOf(a);-1!==t&&te;r[Jn].noLayoutFailure=!0;const s=t[Ks](a);e[Un](s.html,s.bbox);r[Jn].noLayoutFailure=i;t[us]=n}class AppearanceFilter extends StringObject{constructor(e){super(No,"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(No,"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}[Ks](){const e=this.edge||new Edge({}),t=e[Ys](),a=Object.create(null);"visible"===this.fill?.presence?Object.assign(a,this.fill[Ys]()):a.fill="transparent";a.strokeWidth=measureToString("visible"===e.presence?e.thickness:0);a.stroke=t.color;let r;const i={xmlns:Eo,style:{width:"100%",height:"100%",overflow:"visible"}};if(360===this.sweepAngle)r={name:"ellipse",attributes:{xmlns:Eo,cx:"50%",cy:"50%",rx:"50%",ry:"50%",style:a}};else{const e=this.startAngle*Math.PI/180,t=this.sweepAngle*Math.PI/180,n=this.sweepAngle>180?1:0,[s,o,c,l]=[50*(1+Math.cos(e)),50*(1-Math.sin(e)),50*(1+Math.cos(e+t)),50*(1-Math.sin(e+t))];r={name:"path",attributes:{xmlns:Eo,d:`M ${s} ${o} A 50 50 0 ${n} 0 ${c} ${l}`,vectorEffect:"non-scaling-stroke",style:a}};Object.assign(i,{viewBox:"0 0 100 100",preserveAspectRatio:"none"})}const n={name:"svg",children:[r],attributes:i};if(hasMargin(this[ds]()[ds]()))return HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[n]});n.attributes.style.position="absolute";return HTMLResult.success(n)}}class Area extends XFAObject{constructor(e){super(No,"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}*[ls](){yield*getContainedChildren(this)}[Fs](){return!0}[xs](){return!0}[Un](e,t){const[a,r,i,n]=t;this[Jn].width=Math.max(this[Jn].width,a+i);this[Jn].height=Math.max(this[Jn].height,r+n);this[Jn].children.push(e)}[ts](){return this[Jn].availableSpace}[Ks](e){const t=toStyle(this,"position"),a={style:t,id:this[Zs],class:["xfaArea"]};isPrintOnly(this)&&a.class.push("xfaPrintOnly");this.name&&(a.xfaName=this.name);const r=[];this[Jn]={children:r,width:0,height:0,availableSpace:e};const i=this[Xn]({filter:new Set(["area","draw","field","exclGroup","subform","subformSet"]),include:!0});if(!i.success){if(i.isBreak())return i;delete this[Jn];return HTMLResult.FAILURE}t.width=measureToString(this[Jn].width);t.height=measureToString(this[Jn].height);const n={name:"div",attributes:a,children:r},s=[this.x,this.y,this[Jn].width,this[Jn].height];delete this[Jn];return HTMLResult.success(n,s)}}class Assist extends XFAObject{constructor(e){super(No,"assist",!0);this.id=e.id||"";this.role=e.role||"";this.use=e.use||"";this.usehref=e.usehref||"";this.speak=null;this.toolTip=null}[Ks](){return this.toolTip?.[$n]||null}}class Barcode extends XFAObject{constructor(e){super(No,"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(No,"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(No,"bindItems");this.connection=e.connection||"";this.labelRef=e.labelRef||"";this.ref=e.ref||"";this.valueRef=e.valueRef||""}}class Bookend extends XFAObject{constructor(e){super(No,"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(No,"boolean");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Ks](e){return valueToHtml(1===this[$n]?"1":"0")}}class Border extends XFAObject{constructor(e){super(No,"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}[ss](){if(!this[Jn]){const e=this.edge.children.slice();if(e.length<4){const t=e.at(-1)||new Edge({});for(let a=e.length;a<4;a++)e.push(t)}const t=e.map(e=>e.thickness),a=[0,0,0,0];if(this.margin){a[0]=this.margin.topInset;a[1]=this.margin.rightInset;a[2]=this.margin.bottomInset;a[3]=this.margin.leftInset}this[Jn]={widths:t,insets:a,edges:e}}return this[Jn]}[Ys](){const{edges:e}=this[ss](),t=e.map(e=>{const t=e[Ys]();t.color||="#000000";return t}),a=Object.create(null);this.margin&&Object.assign(a,this.margin[Ys]());"visible"===this.fill?.presence&&Object.assign(a,this.fill[Ys]());if(this.corner.children.some(e=>0!==e.radius)){const e=this.corner.children.map(e=>e[Ys]());if(2===e.length||3===e.length){const t=e.at(-1);for(let a=e.length;a<4;a++)e.push(t)}a.borderRadius=e.map(e=>e.radius).join(" ")}switch(this.presence){case"invisible":case"hidden":a.borderStyle="";break;case"inactive":a.borderStyle="none";break;default:a.borderStyle=t.map(e=>e.style).join(" ")}a.borderWidth=t.map(e=>e.width).join(" ");a.borderColor=t.map(e=>e.color).join(" ");return a}}class Break extends XFAObject{constructor(e){super(No,"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(No,"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(No,"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}[Ks](e){this[Jn]={};return HTMLResult.FAILURE}}class Button extends XFAObject{constructor(e){super(No,"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}[Ks](e){const t=this[ds]()[ds](),a={name:"button",attributes:{id:this[Zs],class:["xfaButton"],style:{}},children:[]};for(const e of t.event.children){if("click"!==e.activity||!e.script)continue;const t=recoverJsURL(e.script[$n]);if(!t)continue;const r=fixURL(t.url);r&&a.children.push({name:"a",attributes:{id:"link"+this[Zs],href:r,newWindow:t.newWindow,class:["xfaLink"],style:{}},children:[]})}return HTMLResult.success(a)}}class Calculate extends XFAObject{constructor(e){super(No,"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(No,"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}[Gs](e){_setValue(this,e)}[ss](e){if(!this[Jn]){let{width:t,height:a}=e;switch(this.placement){case"left":case"right":case"inline":t=this.reserve<=0?t:this.reserve;break;case"top":case"bottom":a=this.reserve<=0?a:this.reserve}this[Jn]=layoutNode(this,{width:t,height:a})}return this[Jn]}[Ks](e){if(!this.value)return HTMLResult.EMPTY;this[_s]();const t=this.value[Ks](e).html;if(!t){this[Ls]();return HTMLResult.EMPTY}const a=this.reserve;if(this.reserve<=0){const{w:t,h:a}=this[ss](e);switch(this.placement){case"left":case"right":case"inline":this.reserve=t;break;case"top":case"bottom":this.reserve=a}}const r=[];"string"==typeof t?r.push({name:"#text",value:t}):r.push(t);const i=toStyle(this,"font","margin","visibility");switch(this.placement){case"left":case"right":this.reserve>0&&(i.width=measureToString(this.reserve));break;case"top":case"bottom":this.reserve>0&&(i.height=measureToString(this.reserve))}setPara(this,null,t);this[Ls]();this.reserve=a;return HTMLResult.success({name:"div",attributes:{style:i,class:["xfaCaption"]},children:r})}}class Certificate extends StringObject{constructor(e){super(No,"certificate");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Certificates extends XFAObject{constructor(e){super(No,"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(No,"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}[Ks](e){const t=toStyle(this,"margin"),a=measureToString(this.size);t.width=t.height=a;let r,i,n;const s=this[ds]()[ds](),o=s.items.children.length&&s.items.children[0][Ks]().html||[],c={on:(void 0!==o[0]?o[0]:"on").toString(),off:(void 0!==o[1]?o[1]:"off").toString()},l=(s.value?.[$s]()||"off")===c.on||void 0,h=s[us](),u=s[Zs];let d;if(h instanceof ExclGroup){n=h[Zs];r="radio";i="xfaRadio";d=h[Vn]?.[Zs]||h[Zs]}else{r="checkbox";i="xfaCheckbox";d=s[Vn]?.[Zs]||s[Zs]}const f={name:"input",attributes:{class:[i],style:t,fieldId:u,dataId:d,type:r,checked:l,xfaOn:c.on,xfaOff:c.off,"aria-label":ariaLabel(s),"aria-required":!1}};n&&(f.attributes.name=n);if(isRequired(s)){f.attributes["aria-required"]=!0;f.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[f]})}}class ChoiceList extends XFAObject{constructor(e){super(No,"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}[Ks](e){const t=toStyle(this,"border","margin"),a=this[ds]()[ds](),r={fontSize:`calc(${a.font?.size||10}px * var(--total-scale-factor))`},i=[];if(a.items.children.length>0){const e=a.items;let t=0,n=0;if(2===e.children.length){t=e.children[0].save;n=1-t}const s=e.children[t][Ks]().html,o=e.children[n][Ks]().html;let c=!1;const l=a.value?.[$s]()||"";for(let e=0,t=s.length;eMathClamp(parseInt(e.trim(),10),0,255)).map(e=>isNaN(e)?0:e);if(n.length<3)return{r:a,g:r,b:i};[a,r,i]=n;return{r:a,g:r,b:i}}(e.value):"";this.extras=null}[ps](){return!1}[Ys](){return this.value?Util.makeHexColor(this.value.r,this.value.g,this.value.b):null}}class Comb extends XFAObject{constructor(e){super(No,"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(No,"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(No,"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}[Ks](e){const t={left:measureToString(this.x),top:measureToString(this.y),width:measureToString(this.w),height:measureToString(this.h)},a=["xfaContentarea"];isPrintOnly(this)&&a.push("xfaPrintOnly");return HTMLResult.success({name:"div",children:[],attributes:{style:t,class:a,id:this[Zs]}})}}class Corner extends XFAObject{constructor(e){super(No,"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}[Ys](){const e=toStyle(this,"visibility");e.radius=measureToString("square"===this.join?0:this.radius);return e}}class DateElement extends ContentObject{constructor(e){super(No,"date");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Yn](){const e=this[$n].trim();this[$n]=e?new Date(e):null}[Ks](e){return valueToHtml(this[$n]?this[$n].toString():"")}}class DateTime extends ContentObject{constructor(e){super(No,"dateTime");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Yn](){const e=this[$n].trim();this[$n]=e?new Date(e):null}[Ks](e){return valueToHtml(this[$n]?this[$n].toString():"")}}class DateTimeEdit extends XFAObject{constructor(e){super(No,"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}[Ks](e){const t=toStyle(this,"border","font","margin"),a=this[ds]()[ds](),r={name:"input",attributes:{type:"text",fieldId:a[Zs],dataId:a[Vn]?.[Zs]||a[Zs],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a),"aria-required":!1}};if(isRequired(a)){r.attributes["aria-required"]=!0;r.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[r]})}}class Decimal extends ContentObject{constructor(e){super(No,"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||""}[Yn](){const e=parseFloat(this[$n].trim());this[$n]=isNaN(e)?null:e}[Ks](e){return valueToHtml(null!==this[$n]?this[$n].toString():"")}}class DefaultUi extends XFAObject{constructor(e){super(No,"defaultUi",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class Desc extends XFAObject{constructor(e){super(No,"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(No,"digestMethod",["","SHA1","SHA256","SHA512","RIPEMD160"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class DigestMethods extends XFAObject{constructor(e){super(No,"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(No,"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}[Gs](e){_setValue(this,e)}[Ks](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence)return HTMLResult.EMPTY;fixDimensions(this);this[_s]();const t=this.w,a=this.h,{w:r,h:i,isBroken:n}=layoutNode(this,e);if(r&&""===this.w){if(n&&this[us]()[vs]()){this[Ls]();return HTMLResult.FAILURE}this.w=r}i&&""===this.h&&(this.h=i);setFirstUnsplittable(this);if(!checkDimensions(this,e)){this.w=t;this.h=a;this[Ls]();return HTMLResult.FAILURE}unsetFirstUnsplittable(this);const s=toStyle(this,"font","hAlign","dimensions","position","presence","rotate","anchorType","border","margin");setMinMaxDimensions(this,s);if(s.margin){s.padding=s.margin;delete s.margin}const o=["xfaDraw"];this.font&&o.push("xfaFont");isPrintOnly(this)&&o.push("xfaPrintOnly");const c={style:s,id:this[Zs],class:o};this.name&&(c.xfaName=this.name);const l={name:"div",attributes:c,children:[]};applyAssist(this,c);const h=computeBbox(this,l,e),u=this.value?this.value[Ks](e).html:null;if(null===u){this.w=t;this.h=a;this[Ls]();return HTMLResult.success(createWrapper(this,l),h)}l.children.push(u);setPara(this,s,u);this.w=t;this.h=a;this[Ls]();return HTMLResult.success(createWrapper(this,l),h)}}class Edge extends XFAObject{constructor(e){super(No,"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}[Ys](){const e=toStyle(this,"visibility");Object.assign(e,{linecap:this.cap,width:measureToString(this.thickness),color:this.color?this.color[Ys]():"#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(No,"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(No,"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(No,"encrypt",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=null}}class EncryptData extends XFAObject{constructor(e){super(No,"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(No,"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(No,"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(No,"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(No,"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(No,"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||""}[ws](){return"text/html"===this.contentType}[Bs](e){if("text/html"===this.contentType&&e[Os]===eo.xhtml.id){this[$n]=e;return!0}if("text/xml"===this.contentType){this[$n]=e;return!0}return!1}[Ks](e){return"text/html"===this.contentType&&this[$n]?this[$n][Ks](e):HTMLResult.EMPTY}}class ExObject extends XFAObject{constructor(e){super(No,"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(No,"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}[xs](){return!0}[ps](){return!0}[Gs](e){for(const t of this.field.children){if(!t.value){const e=new Value({});t[jn](e);t.value=e}t.value[Gs](e)}}[vs](){return this.layout.endsWith("-tb")&&0===this[Jn].attempt&&this[Jn].numberInLine>0||this[ds]()[vs]()}[Cs](){const e=this[us]();if(!e[Cs]())return!1;if(void 0!==this[Jn]._isSplittable)return this[Jn]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[Jn]._isSplittable=!1;return!1}if(e.layout?.endsWith("-tb")&&0!==e[Jn].numberInLine)return!1;this[Jn]._isSplittable=!0;return!0}[Zn](){return flushHTML(this)}[Un](e,t){addHTML(this,e,t)}[ts](){return getAvailableSpace(this)}[Ks](e){setTabIndex(this);if("hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return HTMLResult.EMPTY;fixDimensions(this);const t=[],a={id:this[Zs],class:[]};setAccess(this,a.class);this[Jn]||=Object.create(null);Object.assign(this[Jn],{children:t,attributes:a,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 r=this[Cs]();r||setFirstUnsplittable(this);if(!checkDimensions(this,e))return HTMLResult.FAILURE;const i=new Set(["field"]);if(this.layout.includes("row")){const e=this[us]().columnWidths;if(Array.isArray(e)&&e.length>0){this[Jn].columnWidths=e;this[Jn].currentColumn=0}}const n=toStyle(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),s=["xfaExclgroup"],o=layoutClass(this);o&&s.push(o);isPrintOnly(this)&&s.push("xfaPrintOnly");a.style=n;a.class=s;this.name&&(a.xfaName=this.name);this[_s]();const c="lr-tb"===this.layout||"rl-tb"===this.layout,l=c?2:1;for(;this[Jn].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}[xs](){return!0}[Gs](e){_setValue(this,e)}[Ks](e){setTabIndex(this);if(!this.ui){this.ui=new Ui({});this.ui[gs]=this[gs];this[jn](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[jn](e)}if(!this.ui||"hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return HTMLResult.EMPTY;this.caption&&delete this.caption[Jn];this[_s]();const t=this.caption?this.caption[Ks](e).html:null,a=this.w,r=this.h;let i=0,n=0;if(this.margin){i=this.margin.leftInset+this.margin.rightInset;n=this.margin.topInset+this.margin.bottomInset}let s=null;if(""===this.w||""===this.h){let t=null,a=null,r=0,o=0;if(this.ui.checkButton)r=o=this.ui.checkButton.size;else{const{w:t,h:a}=layoutNode(this,e);if(null!==t){r=t;o=a}else o=function fonts_getMetrics(e,t=!1){let a=null;if(e){const t=stripQuotes(e.typeface),r=e[gs].fontFinder.find(t);a=selectFont(e,r)}if(!a)return{lineHeight:12,lineGap:2,lineNoGap:10};const r=e.size||10,i=a.lineHeight?Math.max(t?0:1.2,a.lineHeight):1.2,n=void 0===a.lineGap?.2:a.lineGap;return{lineHeight:i*r,lineGap:n*r,lineNoGap:Math.max(1,i-n)*r}}(this.font,!0).lineNoGap}s=getBorderDims(this.ui[ss]());r+=s.w;o+=s.h;if(this.caption){const{w:i,h:n,isBroken:s}=this.caption[ss](e);if(s&&this[us]()[vs]()){this[Ls]();return HTMLResult.FAILURE}t=i;a=n;switch(this.caption.placement){case"left":case"right":case"inline":t+=r;break;case"top":case"bottom":a+=o}}else{t=r;a=o}if(t&&""===this.w){t+=i;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(No,"float");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Yn](){const e=parseFloat(this[$n].trim());this[$n]=isNaN(e)?null:e}[Ks](e){return valueToHtml(null!==this[$n]?this[$n].toString():"")}}class template_Font extends XFAObject{constructor(e){super(No,"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}[qn](e){super[qn](e);this[gs].usedTypefaces.add(this.typeface)}[Ys](){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[gs].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(No,"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(No,"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(No,"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(No,"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||""}[Ks](){if(this.contentType&&!Lo.has(this.contentType.toLowerCase()))return HTMLResult.EMPTY;let e=this[gs].images?.get(this.href);if(!e&&(this.href||!this[$n]))return HTMLResult.EMPTY;e||"base64"!==this.transferEncoding||(e=function fromBase64Util(e){return Uint8Array.fromBase64?Uint8Array.fromBase64(e):stringToBytes(atob(e))}(this[$n]));if(!e)return HTMLResult.EMPTY;if(!this.contentType){for(const[t,a]of _o)if(e.length>t.length&&t.every((t,a)=>t===e[a])){this.contentType=a;break}if(!this.contentType)return HTMLResult.EMPTY}const t=new Blob([e],{type:this.contentType});let a;switch(this.aspect){case"fit":case"actual":break;case"height":a={height:"100%",objectFit:"fill"};break;case"none":a={width:"100%",height:"100%",objectFit:"fill"};break;case"width":a={width:"100%",objectFit:"fill"}}const r=this[ds]();return HTMLResult.success({name:"img",attributes:{class:["xfaImage"],style:a,src:URL.createObjectURL(t),alt:r?ariaLabel(r[ds]()):null}})}}class ImageEdit extends XFAObject{constructor(e){super(No,"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}[Ks](e){return"embed"===this.data?HTMLResult.success({name:"div",children:[],attributes:{}}):HTMLResult.EMPTY}}class Integer extends ContentObject{constructor(e){super(No,"integer");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Yn](){const e=parseInt(this[$n].trim(),10);this[$n]=isNaN(e)?null:e}[Ks](e){return valueToHtml(null!==this[$n]?this[$n].toString():"")}}class Issuers extends XFAObject{constructor(e){super(No,"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(No,"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}[Ks](){const e=[];for(const t of this[cs]())e.push(t[$s]());return HTMLResult.success(e)}}class Keep extends XFAObject{constructor(e){super(No,"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(No,"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(No,"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}[Ks](){const e=this[ds]()[ds](),t=this.edge||new Edge({}),a=t[Ys](),r=Object.create(null),i="visible"===t.presence?t.thickness:0;r.strokeWidth=measureToString(i);r.stroke=a.color;let n,s,o,c,l="100%",h="100%";if(e.w<=i){[n,s,o,c]=["50%",0,"50%","100%"];l=r.strokeWidth}else if(e.h<=i){[n,s,o,c]=[0,"50%","100%","50%"];h=r.strokeWidth}else"\\"===this.slope?[n,s,o,c]=[0,0,"100%","100%"]:[n,s,o,c]=[0,"100%","100%",0];const u={name:"svg",children:[{name:"line",attributes:{xmlns:Eo,x1:n,y1:s,x2:o,y2:c,style:r}}],attributes:{xmlns:Eo,width:l,height:h,style:{overflow:"visible"}}};if(hasMargin(e))return HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[u]});u.attributes.style.position="absolute";return HTMLResult.success(u)}}class Linear extends XFAObject{constructor(e){super(No,"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}[Ys](e){e=e?e[Ys]():"#FFFFFF";return`linear-gradient(${this.type.replace(/([RBLT])/," $1").toLowerCase()}, ${e}, ${this.color?this.color[Ys]():"#000000"})`}}class LockDocument extends ContentObject{constructor(e){super(No,"lockDocument");this.id=e.id||"";this.type=getStringOption(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}[Yn](){this[$n]=getStringOption(this[$n],["auto","0","1"])}}class Manifest extends XFAObject{constructor(e){super(No,"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(No,"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}[Ys](){return{margin:measureToString(this.topInset)+" "+measureToString(this.rightInset)+" "+measureToString(this.bottomInset)+" "+measureToString(this.leftInset)}}}class Mdp extends XFAObject{constructor(e){super(No,"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(No,"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 a=e.split(",",4).map(e=>getMeasurement(e.trim(),"-1"));if(a.length<4||a[2]<0||a[3]<0)return{x:t,y:t,width:t,height:t};const[r,i,n,s]=a;return{x:r,y:i,width:n,height:s}}(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(No,"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(No,"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}[Ks](e){const t=toStyle(this,"border","font","margin"),a=this[ds]()[ds](),r={name:"input",attributes:{type:"text",fieldId:a[Zs],dataId:a[Vn]?.[Zs]||a[Zs],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(a),"aria-required":!1}};if(isRequired(a)){r.attributes["aria-required"]=!0;r.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[r]})}}class Occur extends XFAObject{constructor(e){super(No,"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}[qn](){const e=this[ds](),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}[Is](){if(!this[Jn]){this[Jn]={numberOfUse:0};return!0}return!this.occur||-1===this.occur.max||this[Jn].numberOfUsee.oddOrEven===t&&e.pagePosition===a);if(r)return r;r=this.pageArea.children.find(e=>"any"===e.oddOrEven&&e.pagePosition===a);if(r)return r;r=this.pageArea.children.find(e=>"any"===e.oddOrEven&&"any"===e.pagePosition);return r||this.pageArea.children[0]}}class Para extends XFAObject{constructor(e){super(No,"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}[Ys](){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[Ys]());return e}}class PasswordEdit extends XFAObject{constructor(e){super(No,"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(No,"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}[Ys](e){e=e?e[Ys]():"#FFFFFF";const t=this.color?this.color[Ys]():"#000000",a="repeating-linear-gradient",r=`${e},${e} 5px,${t} 5px,${t} 10px`;switch(this.type){case"crossHatch":return`${a}(to top,${r}) ${a}(to right,${r})`;case"crossDiagonal":return`${a}(45deg,${r}) ${a}(-45deg,${r})`;case"diagonalLeft":return`${a}(45deg,${r})`;case"diagonalRight":return`${a}(-45deg,${r})`;case"horizontal":return`${a}(to top,${r})`;case"vertical":return`${a}(to right,${r})`}return""}}class Picture extends StringObject{constructor(e){super(No,"picture");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Proto extends XFAObject{constructor(e){super(No,"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(No,"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}[Ys](e){e=e?e[Ys]():"#FFFFFF";const t=this.color?this.color[Ys]():"#000000";return`radial-gradient(circle at center, ${"toEdge"===this.type?`${e},${t}`:`${t},${e}`})`}}class Reason extends StringObject{constructor(e){super(No,"reason");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Reasons extends XFAObject{constructor(e){super(No,"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(No,"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}[Ks](){const e=this.edge.children.length?this.edge.children[0]:new Edge({}),t=e[Ys](),a=Object.create(null);"visible"===this.fill?.presence?Object.assign(a,this.fill[Ys]()):a.fill="transparent";a.strokeWidth=measureToString("visible"===e.presence?e.thickness:0);a.stroke=t.color;const r=(this.corner.children.length?this.corner.children[0]:new Corner({}))[Ys](),i={name:"svg",children:[{name:"rect",attributes:{xmlns:Eo,width:"100%",height:"100%",x:0,y:0,rx:r.radius,ry:r.radius,style:a}}],attributes:{xmlns:Eo,style:{overflow:"visible"},width:"100%",height:"100%"}};if(hasMargin(this[ds]()[ds]()))return HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[i]});i.attributes.style.position="absolute";return HTMLResult.success(i)}}class RefElement extends StringObject{constructor(e){super(No,"ref");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Script extends StringObject{constructor(e){super(No,"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(No,"setProperty");this.connection=e.connection||"";this.ref=e.ref||"";this.target=e.target||""}}class SignData extends XFAObject{constructor(e){super(No,"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(No,"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(No,"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(No,"solid",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[Ys](e){return e?e[Ys]():"#FFFFFF"}}class Speak extends StringObject{constructor(e){super(No,"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(No,"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}[Ys](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(No,"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}[us](){const e=this[ds]();return e instanceof SubformSet?e[us]():e}[xs](){return!0}[vs](){return this.layout.endsWith("-tb")&&0===this[Jn].attempt&&this[Jn].numberInLine>0||this[ds]()[vs]()}*[ls](){yield*getContainedChildren(this)}[Zn](){return flushHTML(this)}[Un](e,t){addHTML(this,e,t)}[ts](){return getAvailableSpace(this)}[Cs](){const e=this[us]();if(!e[Cs]())return!1;if(void 0!==this[Jn]._isSplittable)return this[Jn]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[Jn]._isSplittable=!1;return!1}if(this.keep&&"none"!==this.keep.intact){this[Jn]._isSplittable=!1;return!1}if(e.layout?.endsWith("-tb")&&0!==e[Jn].numberInLine)return!1;this[Jn]._isSplittable=!0;return!0}[Ks](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[gs]=this[gs];this[jn](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[gs]=this[gs];this[jn](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[gs]=this[gs];this[jn](e);this.overflow.push(e)}this[Us](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[Jn]?.afterBreakAfter)return HTMLResult.EMPTY;fixDimensions(this);const t=[],a={id:this[Zs],class:[]};setAccess(this,a.class);this[Jn]||=Object.create(null);Object.assign(this[Jn],{children:t,line:null,attributes:a,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 r=this[fs](),i=r[Jn].noLayoutFailure,n=this[Cs]();n||setFirstUnsplittable(this);if(!checkDimensions(this,e))return HTMLResult.FAILURE;const s=new Set(["area","draw","exclGroup","field","subform","subformSet"]);if(this.layout.includes("row")){const e=this[us]().columnWidths;if(Array.isArray(e)&&e.length>0){this[Jn].columnWidths=e;this[Jn].currentColumn=0}}const o=toStyle(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),c=["xfaSubform"],l=layoutClass(this);l&&c.push(l);a.style=o;a.class=c;this.name&&(a.xfaName=this.name);if(this.overflow){const t=this.overflow[ss]();if(t.addLeader){t.addLeader=!1;handleOverflow(this,t.leader,e)}}this[_s]();const h="lr-tb"===this.layout||"rl-tb"===this.layout,u=h?2:1;for(;this[Jn].attempt=1){const e=this.breakAfter.children[0];if(handleBreak(e)){this[Jn].afterBreakAfter=y;return HTMLResult.breakNode(e)}}delete this[Jn];return y}}class SubformSet extends XFAObject{constructor(e){super(No,"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}*[ls](){yield*getContainedChildren(this)}[us](){let e=this[ds]();for(;!(e instanceof Subform);)e=e[ds]();return e}[xs](){return!0}}class SubjectDN extends ContentObject{constructor(e){super(No,"subjectDN");this.delimiter=e.delimiter||",";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Yn](){this[$n]=new Map(this[$n].split(this.delimiter).map(e=>{(e=e.split("=",2))[0]=e[0].trim();return e}))}}class SubjectDNs extends XFAObject{constructor(e){super(No,"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(No,"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(No,"template",!0);this.baseProfile=getStringOption(e.baseProfile,["full","interactiveForms"]);this.extras=null;this.subform=new XFAObjectArray}[Yn](){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[zs]=5e3}[Cs](){return!0}[qs](e,t){return e.startsWith("#")?[this[ms].get(e.slice(1))]:searchNode(this,t,e,!0,!0)}*[Vs](){if(!this.subform.children.length)return HTMLResult.success({name:"div",children:[]});this[Jn]={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[Hn]();const t=e.pageSet.pageArea.children,a={name:"div",children:[]};let r=null,i=null,n=null;if(e.breakBefore.children.length>=1){i=e.breakBefore.children[0];n=i.target}else if(e.subform.children.length>=1&&e.subform.children[0].breakBefore.children.length>=1){i=e.subform.children[0].breakBefore.children[0];n=i.target}else if(e.break?.beforeTarget){i=e.break;n=i.beforeTarget}else if(e.subform.children.length>=1&&e.subform.children[0].break?.beforeTarget){i=e.subform.children[0].break;n=i.beforeTarget}if(i){const e=this[qs](n,i[ds]());if(e instanceof PageArea){r=e;i[Jn]={}}}r||=t[0];r[Jn]={numberOfUse:1};const s=r[ds]();s[Jn]={numberOfUse:1,pageIndex:s.pageArea.children.indexOf(r),pageSetIndex:0};let o,c=null,l=null,h=!0,u=0,d=0;for(;;){if(h)u=0;else{a.children.pop();if(3===++u){warn("XFA - Something goes wrong: please file a bug.");return a}}o=null;this[Jn].currentPageArea=r;const t=r[Ks]().html;a.children.push(t);if(c){this[Jn].noLayoutFailure=!0;t.children.push(c[Ks](r[Jn].space).html);c=null}if(l){this[Jn].noLayoutFailure=!0;t.children.push(l[Ks](r[Jn].space).html);l=null}const i=r.contentArea.children,n=t.children.filter(e=>e.attributes.class.includes("xfaContentarea"));h=!1;this[Jn].firstUnsplittable=null;this[Jn].noLayoutFailure=!1;const flush=t=>{const a=e[Zn]();if(a){h||=a.children?.length>0;n[t].children.push(a)}};for(let t=d,r=i.length;t0;n[t].children.push(u.html)}else!h&&a.children.length>1&&a.children.pop();return a}if(u.isBreak()){const e=u.breakNode;flush(t);if("auto"===e.targetType)continue;if(e.leader){c=this[qs](e.leader,e[ds]());c=c?c[0]:null}if(e.trailer){l=this[qs](e.trailer,e[ds]());l=l?l[0]:null}if("pageArea"===e.targetType){o=e[Jn].target;t=1/0}else if(e[Jn].target){o=e[Jn].target;d=e[Jn].index+1;t=1/0}else t=e[Jn].index;continue}if(this[Jn].overflowNode){const e=this[Jn].overflowNode;this[Jn].overflowNode=null;const a=e[ss](),r=a.target;a.addLeader=null!==a.leader;a.addTrailer=null!==a.trailer;flush(t);const n=t;t=1/0;if(r instanceof PageArea)o=r;else if(r instanceof ContentArea){const e=i.indexOf(r);if(-1!==e)e>n?t=e-1:d=e;else{o=r[ds]();d=o.contentArea.children.indexOf(r)}}continue}flush(t)}this[Jn].pageNumber+=1;o&&(o[Is]()?o[Jn].numberOfUse+=1:o=null);r=o||r[hs]();yield null}}}class Text extends ContentObject{constructor(e){super(No,"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||""}[_n](){return!0}[Bs](e){if(e[Os]===eo.xhtml.id){this[$n]=e;return!0}warn(`XFA - Invalid content in Text: ${e[Ms]}.`);return!1}[Ns](e){this[$n]instanceof XFAObject||super[Ns](e)}[Yn](){"string"==typeof this[$n]&&(this[$n]=this[$n].replaceAll("\r\n","\n"))}[ss](){return"string"==typeof this[$n]?this[$n].split(/[\u2029\u2028\n]/).filter(e=>!!e).join("\n"):this[$n][$s]()}[Ks](e){if("string"==typeof this[$n]){const e=valueToHtml(this[$n]).html;if(this[$n].includes("\u2029")){e.name="div";e.children=[];this[$n].split("\u2029").map(e=>e.split(/[\u2028\n]/).flatMap(e=>[{name:"span",value:e},{name:"br"}])).forEach(t=>{e.children.push({name:"p",children:t})})}else if(/[\u2028\n]/.test(this[$n])){e.name="div";e.children=[];this[$n].split(/[\u2028\n]/).forEach(t=>{e.children.push({name:"span",value:t},{name:"br"})})}return HTMLResult.success(e)}return this[$n][Ks](e)}}class TextEdit extends XFAObject{constructor(e){super(No,"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}[Ks](e){const t=toStyle(this,"border","font","margin");let a;const r=this[ds]()[ds]();""===this.multiLine&&(this.multiLine=r instanceof Draw?1:0);a=1===this.multiLine?{name:"textarea",attributes:{dataId:r[Vn]?.[Zs]||r[Zs],fieldId:r[Zs],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(r),"aria-required":!1}}:{name:"input",attributes:{type:"text",dataId:r[Vn]?.[Zs]||r[Zs],fieldId:r[Zs],class:["xfaTextfield"],style:t,"aria-label":ariaLabel(r),"aria-required":!1}};if(isRequired(r)){a.attributes["aria-required"]=!0;a.attributes.required=!0}return HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[a]})}}class Time extends StringObject{constructor(e){super(No,"time");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[Yn](){const e=this[$n].trim();this[$n]=e?new Date(e):null}[Ks](e){return valueToHtml(this[$n]?this[$n].toString():"")}}class TimeStamp extends XFAObject{constructor(e){super(No,"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(No,"toolTip");this.id=e.id||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Traversal extends XFAObject{constructor(e){super(No,"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(No,"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}[Fs](){return!1}}class Ui extends XFAObject{constructor(e){super(No,"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}[ss](){if(void 0===this[Jn]){for(const e of Object.getOwnPropertyNames(this)){if("extras"===e||"picture"===e)continue;const t=this[e];if(t instanceof XFAObject){this[Jn]=t;return t}}this[Jn]=null}return this[Jn]}[Ks](e){const t=this[ss]();return t?t[Ks](e):HTMLResult.EMPTY}}class Validate extends XFAObject{constructor(e){super(No,"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(No,"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}[Gs](e){const t=this[ds]();if(t instanceof Field&&t.ui?.imageEdit){if(!this.image){this.image=new Image({});this[jn](this.image)}this.image[$n]=e[$n];return}const a=e[Ms];if(null===this[a]){for(const e of Object.getOwnPropertyNames(this)){const t=this[e];if(t instanceof XFAObject){this[e]=null;this[Us](t)}}this[e[Ms]]=e;this[jn](e)}else this[a][$n]=e[$n]}[$s](){if(this.exData)return"string"==typeof this.exData[$n]?this.exData[$n].trim():this.exData[$n][$s]().trim();for(const e of Object.getOwnPropertyNames(this)){if("image"===e)continue;const t=this[e];if(t instanceof XFAObject)return(t[$n]||"").toString().trim()}return null}[Ks](e){for(const t of Object.getOwnPropertyNames(this)){const a=this[t];if(a instanceof XFAObject)return a[Ks](e)}return HTMLResult.EMPTY}}class Variables extends XFAObject{constructor(e){super(No,"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}[Fs](){return!0}}class TemplateNamespace{static[Qs](e,t){if(TemplateNamespace.hasOwnProperty(e)){const a=TemplateNamespace[e](t);a[Ws](t);return a}}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 Uo=eo.datasets.id;function createText(e){const t=new Text({});t[$n]=e;return t}class Binder{constructor(e){this.root=e;this.datasets=e.datasets;this.data=e.datasets?.data||new XmlObject(eo.datasets.id,"data");this.emptyMerge=0===this.data[cs]().length;this.root.form=this.form=e.template[Gn]()}_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,a){e[Vn]=t;if(e[ps]())if(t[Ss]()){const a=t[ns]();e[Gs](createText(a))}else if(e instanceof Field&&"multiSelect"===e.ui?.choiceList?.open){const a=t[cs]().map(e=>e[$n].trim()).join("\n");e[Gs](createText(a))}else this._isConsumeData()&&warn("XFA - Nodes haven't the same type.");else!t[Ss]()||this._isMatchTemplate()?this._bindElement(e,t):warn("XFA - Nodes haven't the same type.")}_findDataByNameToConsume(e,t,a,r){if(!e)return null;let i,n;for(let r=0;r<3;r++){i=a[os](e,!1,!0);for(;;){n=i.next().value;if(!n)break;if(t===n[Ss]())return n}if(a[Os]===eo.datasets.id&&"data"===a[Ms])break;a=a[ds]()}if(!r)return null;i=this.data[os](e,!0,!1);n=i.next().value;if(n)return n;i=this.data[Qn](e,!0);n=i.next().value;return n?.[Ss]()?n:null}_setProperties(e,t){if(e.hasOwnProperty("setProperty"))for(const{ref:a,target:r,connection:i}of e.setProperty.children){if(i)continue;if(!a)continue;const n=searchNode(this.root,t,a,!1,!1);if(!n){warn(`XFA - Invalid reference: ${a}.`);continue}const[s]=n;if(!s[As](this.data)){warn("XFA - Invalid node: must be a data node.");continue}const o=searchNode(this.root,e,r,!1,!1);if(!o){warn(`XFA - Invalid target: ${r}.`);continue}const[c]=o;if(!c[As](e)){warn("XFA - Invalid target: must be a property or subproperty.");continue}const l=c[ds]();if(c instanceof SetProperty||l instanceof SetProperty){warn("XFA - Invalid target: cannot be a setProperty or one of its properties.");continue}if(c instanceof BindItems||l instanceof BindItems){warn("XFA - Invalid target: cannot be a bindItems or one of its properties.");continue}const h=s[$s](),u=c[Ms];if(c instanceof XFAAttribute){const e=Object.create(null);e[u]=h;const t=Reflect.construct(Object.getPrototypeOf(l).constructor,[e]);l[u]=t[u];continue}if(c.hasOwnProperty($n)){c[Vn]=s;c[$n]=h;c[Yn]()}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[Us](t);e.items.clear();const a=new Items({}),r=new Items({});e[jn](a);e.items.push(a);e[jn](r);e.items.push(r);for(const{ref:i,labelRef:n,valueRef:s,connection:o}of e.bindItems.children){if(o)continue;if(!i)continue;const e=searchNode(this.root,t,i,!1,!1);if(e)for(const t of e){if(!t[As](this.datasets)){warn(`XFA - Invalid ref (${i}): must be a datasets child.`);continue}const e=searchNode(this.root,t,n,!0,!1);if(!e){warn(`XFA - Invalid label: ${n}.`);continue}const[o]=e;if(!o[As](this.datasets)){warn("XFA - Invalid label: must be a datasets child.");continue}const c=searchNode(this.root,t,s,!0,!1);if(!c){warn(`XFA - Invalid value: ${s}.`);continue}const[l]=c;if(!l[As](this.datasets)){warn("XFA - Invalid value: must be a datasets child.");continue}const h=createText(o[$s]()),u=createText(l[$s]());a[jn](h);a.text.push(h);r[jn](u);r.text.push(u)}else warn(`XFA - Invalid reference: ${i}.`)}}_bindOccurrences(e,t,a){let r;if(t.length>1){r=e[Gn]();r[Us](r.occur);r.occur=null}this._bindValue(e,t[0],a);this._setProperties(e,t[0]);this._bindItems(e,t[0]);if(1===t.length)return;const i=e[ds](),n=e[Ms],s=i[bs](e);for(let e=1,o=t.length;et.name===e.name).length:a[r].children.length;const n=a[bs](e)+1,s=t.initial-i;if(s){const t=e[Gn]();t[Us](t.occur);t.occur=null;a[r].push(t);a[ys](n,t);for(let e=1;e0)this._bindOccurrences(r,[e[0]],null);else if(this.emptyMerge){const e=t[Os]===Uo?-1:t[Os],a=r[Vn]=new XmlObject(e,r.name||"root");t[jn](a);this._bindElement(r,a)}continue}if(!r[xs]())continue;let e=!1,i=null,n=null,s=null;if(r.bind){switch(r.bind.match){case"none":this._setAndBind(r,t);continue;case"global":e=!0;break;case"dataRef":if(!r.bind.ref){warn(`XFA - ref is empty in node ${r[Ms]}.`);this._setAndBind(r,t);continue}n=r.bind.ref}r.bind.picture&&(i=r.bind.picture[$n])}const[o,c]=this._getOccurInfo(r);if(n){s=searchNode(this.root,t,n,!0,!1);if(null===s){s=createDataNode(this.data,t,n);if(!s)continue;this._isConsumeData()&&(s[zn]=!0);this._setAndBind(r,s);continue}this._isConsumeData()&&(s=s.filter(e=>!e[zn]));s.length>c?s=s.slice(0,c):0===s.length&&(s=null);s&&this._isConsumeData()&&s.forEach(e=>{e[zn]=!0})}else{if(!r.name){this._setAndBind(r,t);continue}if(this._isConsumeData()){const a=[];for(;a.length0?a:null}else{s=t[os](r.name,!1,this.emptyMerge).next().value;if(!s){if(0===o){a.push(r);continue}const e=t[Os]===Uo?-1:t[Os];s=r[Vn]=new XmlObject(e,r.name);this.emptyMerge&&(s[zn]=!0);t[jn](s);this._setAndBind(r,s);continue}this.emptyMerge&&(s[zn]=!0);s=[s]}}s?this._bindOccurrences(r,s,i):o>0?this._setAndBind(r,t):a.push(r)}a.forEach(e=>e[ds]()[Us](e))}}class DataHandler{constructor(e,t){this.data=t;this.dataset=e.datasets||null}serialize(e){const t=[[-1,this.data[cs]()]];for(;t.length>0;){const a=t.at(-1),[r,i]=a;if(r+1===i.length){t.pop();continue}const n=i[++a[0]],s=e.get(n[Zs]);if(s)n[Gs](s);else{const t=n[es]();for(const a of t.values()){const t=e.get(a[Zs]);if(t){a[Gs](t);break}}}const o=n[cs]();o.length>0&&t.push([-1,o])}const a=[''];if(this.dataset)for(const e of this.dataset[cs]())"data"!==e[Ms]&&e[Js](a);this.data[Js](a);a.push("");return a.join("")}}const jo=eo.config.id;class Acrobat extends XFAObject{constructor(e){super(jo,"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(jo,"acrobat7",!0);this.dynamicRender=null}}class ADBE_JSConsole extends OptionObject{constructor(e){super(jo,"ADBE_JSConsole",["delegate","Enable","Disable"])}}class ADBE_JSDebugger extends OptionObject{constructor(e){super(jo,"ADBE_JSDebugger",["delegate","Enable","Disable"])}}class AddSilentPrint extends Option01{constructor(e){super(jo,"addSilentPrint")}}class AddViewerPreferences extends Option01{constructor(e){super(jo,"addViewerPreferences")}}class AdjustData extends Option10{constructor(e){super(jo,"adjustData")}}class AdobeExtensionLevel extends IntegerObject{constructor(e){super(jo,"adobeExtensionLevel",0,e=>e>=1&&e<=8)}}class Agent extends XFAObject{constructor(e){super(jo,"agent",!0);this.name=e.name?e.name.trim():"";this.common=new XFAObjectArray}}class AlwaysEmbed extends ContentObject{constructor(e){super(jo,"alwaysEmbed")}}class Amd extends StringObject{constructor(e){super(jo,"amd")}}class config_Area extends XFAObject{constructor(e){super(jo,"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(jo,"attributes",["preserve","delegate","ignore"])}}class AutoSave extends OptionObject{constructor(e){super(jo,"autoSave",["disabled","enabled"])}}class Base extends StringObject{constructor(e){super(jo,"base")}}class BatchOutput extends XFAObject{constructor(e){super(jo,"batchOutput");this.format=getStringOption(e.format,["none","concat","zip","zipCompress"])}}class BehaviorOverride extends ContentObject{constructor(e){super(jo,"behaviorOverride")}[Yn](){this[$n]=new Map(this[$n].trim().split(/\s+/).filter(e=>e.includes(":")).map(e=>e.split(":",2)))}}class Cache extends XFAObject{constructor(e){super(jo,"cache",!0);this.templateCache=null}}class Change extends Option01{constructor(e){super(jo,"change")}}class Common extends XFAObject{constructor(e){super(jo,"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(jo,"compress");this.scope=getStringOption(e.scope,["imageOnly","document"])}}class CompressLogicalStructure extends Option01{constructor(e){super(jo,"compressLogicalStructure")}}class CompressObjectStream extends Option10{constructor(e){super(jo,"compressObjectStream")}}class Compression extends XFAObject{constructor(e){super(jo,"compression",!0);this.compressLogicalStructure=null;this.compressObjectStream=null;this.level=null;this.type=null}}class Config extends XFAObject{constructor(e){super(jo,"config",!0);this.acrobat=null;this.present=null;this.trace=null;this.agent=new XFAObjectArray}}class Conformance extends OptionObject{constructor(e){super(jo,"conformance",["A","B"])}}class ContentCopy extends Option01{constructor(e){super(jo,"contentCopy")}}class Copies extends IntegerObject{constructor(e){super(jo,"copies",1,e=>e>=1)}}class Creator extends StringObject{constructor(e){super(jo,"creator")}}class CurrentPage extends IntegerObject{constructor(e){super(jo,"currentPage",0,e=>e>=0)}}class Data extends XFAObject{constructor(e){super(jo,"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(jo,"debug",!0);this.uri=null}}class DefaultTypeface extends ContentObject{constructor(e){super(jo,"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(jo,"destination",["pdf","pcl","ps","webClient","zpl"])}}class DocumentAssembly extends Option01{constructor(e){super(jo,"documentAssembly")}}class Driver extends XFAObject{constructor(e){super(jo,"driver",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class DuplexOption extends OptionObject{constructor(e){super(jo,"duplexOption",["simplex","duplexFlipLongEdge","duplexFlipShortEdge"])}}class DynamicRender extends OptionObject{constructor(e){super(jo,"dynamicRender",["forbidden","required"])}}class Embed extends Option01{constructor(e){super(jo,"embed")}}class config_Encrypt extends Option01{constructor(e){super(jo,"encrypt")}}class config_Encryption extends XFAObject{constructor(e){super(jo,"encryption",!0);this.encrypt=null;this.encryptionLevel=null;this.permissions=null}}class EncryptionLevel extends OptionObject{constructor(e){super(jo,"encryptionLevel",["40bit","128bit"])}}class Enforce extends StringObject{constructor(e){super(jo,"enforce")}}class Equate extends XFAObject{constructor(e){super(jo,"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(jo,"equateRange");this.from=e.from||"";this.to=e.to||"";this._unicodeRange=e.unicodeRange||""}get unicodeRange(){const e=[],t=/U\+([0-9a-fA-F]+)/,a=this._unicodeRange;for(let r of a.split(",").map(e=>e.trim()).filter(e=>!!e)){r=r.split("-",2).map(e=>{const a=e.match(t);return a?parseInt(a[1],16):0});1===r.length&&r.push(r[0]);e.push(r)}return shadow(this,"unicodeRange",e)}}class Exclude extends ContentObject{constructor(e){super(jo,"exclude")}[Yn](){this[$n]=this[$n].trim().split(/\s+/).filter(e=>e&&["calculate","close","enter","exit","initialize","ready","validate"].includes(e))}}class ExcludeNS extends StringObject{constructor(e){super(jo,"excludeNS")}}class FlipLabel extends OptionObject{constructor(e){super(jo,"flipLabel",["usePrinterSetting","on","off"])}}class config_FontInfo extends XFAObject{constructor(e){super(jo,"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(jo,"formFieldFilling")}}class GroupParent extends StringObject{constructor(e){super(jo,"groupParent")}}class IfEmpty extends OptionObject{constructor(e){super(jo,"ifEmpty",["dataValue","dataGroup","ignore","remove"])}}class IncludeXDPContent extends StringObject{constructor(e){super(jo,"includeXDPContent")}}class IncrementalLoad extends OptionObject{constructor(e){super(jo,"incrementalLoad",["none","forwardOnly"])}}class IncrementalMerge extends Option01{constructor(e){super(jo,"incrementalMerge")}}class Interactive extends Option01{constructor(e){super(jo,"interactive")}}class Jog extends OptionObject{constructor(e){super(jo,"jog",["usePrinterSetting","none","pageSet"])}}class LabelPrinter extends XFAObject{constructor(e){super(jo,"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(jo,"layout",["paginate","panel"])}}class Level extends IntegerObject{constructor(e){super(jo,"level",0,e=>e>0)}}class Linearized extends Option01{constructor(e){super(jo,"linearized")}}class Locale extends StringObject{constructor(e){super(jo,"locale")}}class LocaleSet extends StringObject{constructor(e){super(jo,"localeSet")}}class Log extends XFAObject{constructor(e){super(jo,"log",!0);this.mode=null;this.threshold=null;this.to=null;this.uri=null}}class MapElement extends XFAObject{constructor(e){super(jo,"map",!0);this.equate=new XFAObjectArray;this.equateRange=new XFAObjectArray}}class MediumInfo extends XFAObject{constructor(e){super(jo,"mediumInfo",!0);this.map=null}}class config_Message extends XFAObject{constructor(e){super(jo,"message",!0);this.msgId=null;this.severity=null}}class Messaging extends XFAObject{constructor(e){super(jo,"messaging",!0);this.message=new XFAObjectArray}}class Mode extends OptionObject{constructor(e){super(jo,"mode",["append","overwrite"])}}class ModifyAnnots extends Option01{constructor(e){super(jo,"modifyAnnots")}}class MsgId extends IntegerObject{constructor(e){super(jo,"msgId",1,e=>e>=1)}}class NameAttr extends StringObject{constructor(e){super(jo,"nameAttr")}}class NeverEmbed extends ContentObject{constructor(e){super(jo,"neverEmbed")}}class NumberOfCopies extends IntegerObject{constructor(e){super(jo,"numberOfCopies",null,e=>e>=2&&e<=5)}}class OpenAction extends XFAObject{constructor(e){super(jo,"openAction",!0);this.destination=null}}class Output extends XFAObject{constructor(e){super(jo,"output",!0);this.to=null;this.type=null;this.uri=null}}class OutputBin extends StringObject{constructor(e){super(jo,"outputBin")}}class OutputXSL extends XFAObject{constructor(e){super(jo,"outputXSL",!0);this.uri=null}}class Overprint extends OptionObject{constructor(e){super(jo,"overprint",["none","both","draw","field"])}}class Packets extends StringObject{constructor(e){super(jo,"packets")}[Yn](){"*"!==this[$n]&&(this[$n]=this[$n].trim().split(/\s+/).filter(e=>["config","datasets","template","xfdf","xslt"].includes(e)))}}class PageOffset extends XFAObject{constructor(e){super(jo,"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(jo,"pageRange")}[Yn](){const e=this[$n].trim().split(/\s+/).map(e=>parseInt(e,10)),t=[];for(let a=0,r=e.length;a!1)}}class Pcl extends XFAObject{constructor(e){super(jo,"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(jo,"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(jo,"pdfa",!0);this.amd=null;this.conformance=null;this.includeXDPContent=null;this.part=null}}class Permissions extends XFAObject{constructor(e){super(jo,"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(jo,"pickTrayByPDFSize")}}class config_Picture extends StringObject{constructor(e){super(jo,"picture")}}class PlaintextMetadata extends Option01{constructor(e){super(jo,"plaintextMetadata")}}class Presence extends OptionObject{constructor(e){super(jo,"presence",["preserve","dissolve","dissolveStructure","ignore","remove"])}}class Present extends XFAObject{constructor(e){super(jo,"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(jo,"print")}}class PrintHighQuality extends Option01{constructor(e){super(jo,"printHighQuality")}}class PrintScaling extends OptionObject{constructor(e){super(jo,"printScaling",["appdefault","noScaling"])}}class PrinterName extends StringObject{constructor(e){super(jo,"printerName")}}class Producer extends StringObject{constructor(e){super(jo,"producer")}}class Ps extends XFAObject{constructor(e){super(jo,"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(jo,"range")}[Yn](){this[$n]=this[$n].split(",",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(jo,"record")}[Yn](){this[$n]=this[$n].trim();const e=parseInt(this[$n],10);!isNaN(e)&&e>=0&&(this[$n]=e)}}class Relevant extends ContentObject{constructor(e){super(jo,"relevant")}[Yn](){this[$n]=this[$n].trim().split(/\s+/)}}class Rename extends ContentObject{constructor(e){super(jo,"rename")}[Yn](){this[$n]=this[$n].trim();(this[$n].toLowerCase().startsWith("xml")||new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*","u").test(this[$n]))&&warn("XFA - Rename: invalid XFA name")}}class RenderPolicy extends OptionObject{constructor(e){super(jo,"renderPolicy",["server","client"])}}class RunScripts extends OptionObject{constructor(e){super(jo,"runScripts",["both","client","none","server"])}}class config_Script extends XFAObject{constructor(e){super(jo,"script",!0);this.currentPage=null;this.exclude=null;this.runScripts=null}}class ScriptModel extends OptionObject{constructor(e){super(jo,"scriptModel",["XFA","none"])}}class Severity extends OptionObject{constructor(e){super(jo,"severity",["ignore","error","information","trace","warning"])}}class SilentPrint extends XFAObject{constructor(e){super(jo,"silentPrint",!0);this.addSilentPrint=null;this.printerName=null}}class Staple extends XFAObject{constructor(e){super(jo,"staple");this.mode=getStringOption(e.mode,["usePrinterSetting","on","off"])}}class StartNode extends StringObject{constructor(e){super(jo,"startNode")}}class StartPage extends IntegerObject{constructor(e){super(jo,"startPage",0,e=>!0)}}class SubmitFormat extends OptionObject{constructor(e){super(jo,"submitFormat",["html","delegate","fdf","xml","pdf"])}}class SubmitUrl extends StringObject{constructor(e){super(jo,"submitUrl")}}class SubsetBelow extends IntegerObject{constructor(e){super(jo,"subsetBelow",100,e=>e>=0&&e<=100)}}class SuppressBanner extends Option01{constructor(e){super(jo,"suppressBanner")}}class Tagged extends Option01{constructor(e){super(jo,"tagged")}}class config_Template extends XFAObject{constructor(e){super(jo,"template",!0);this.base=null;this.relevant=null;this.startPage=null;this.uri=null;this.xsl=null}}class Threshold extends OptionObject{constructor(e){super(jo,"threshold",["trace","error","information","warning"])}}class To extends OptionObject{constructor(e){super(jo,"to",["null","memory","stderr","stdout","system","uri"])}}class TemplateCache extends XFAObject{constructor(e){super(jo,"templateCache");this.maxEntries=getInteger({data:e.maxEntries,defaultValue:5,validate:e=>e>=0})}}class Trace extends XFAObject{constructor(e){super(jo,"trace",!0);this.area=new XFAObjectArray}}class Transform extends XFAObject{constructor(e){super(jo,"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(jo,"type",["none","ascii85","asciiHex","ccittfax","flate","lzw","runLength","native","xdp","mergedXDP"])}}class Uri extends StringObject{constructor(e){super(jo,"uri")}}class config_Validate extends OptionObject{constructor(e){super(jo,"validate",["preSubmit","prePrint","preExecute","preSave"])}}class ValidateApprovalSignatures extends ContentObject{constructor(e){super(jo,"validateApprovalSignatures")}[Yn](){this[$n]=this[$n].trim().split(/\s+/).filter(e=>["docReady","postSign"].includes(e))}}class ValidationMessaging extends OptionObject{constructor(e){super(jo,"validationMessaging",["allMessagesIndividually","allMessagesTogether","firstMessageOnly","noMessages"])}}class Version extends OptionObject{constructor(e){super(jo,"version",["1.7","1.6","1.5","1.4","1.3","1.2"])}}class VersionControl extends XFAObject{constructor(e){super(jo,"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(jo,"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(jo,"webClient",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class Whitespace extends OptionObject{constructor(e){super(jo,"whitespace",["preserve","ltrim","normalize","rtrim","trim"])}}class Window extends ContentObject{constructor(e){super(jo,"window")}[Yn](){const e=this[$n].split(",",2).map(e=>parseInt(e.trim(),10));if(e.some(e=>isNaN(e)))this[$n]=[0,0];else{1===e.length&&e.push(e[0]);this[$n]=e}}}class Xdc extends XFAObject{constructor(e){super(jo,"xdc",!0);this.uri=new XFAObjectArray;this.xsl=new XFAObjectArray}}class Xdp extends XFAObject{constructor(e){super(jo,"xdp",!0);this.packets=null}}class Xsl extends XFAObject{constructor(e){super(jo,"xsl",!0);this.debug=null;this.uri=null}}class Zpl extends XFAObject{constructor(e){super(jo,"zpl",!0);this.name=e.name?e.name.trim():"";this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class ConfigNamespace{static[Qs](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 Xo=eo.connectionSet.id;class ConnectionSet extends XFAObject{constructor(e){super(Xo,"connectionSet",!0);this.wsdlConnection=new XFAObjectArray;this.xmlConnection=new XFAObjectArray;this.xsdConnection=new XFAObjectArray}}class EffectiveInputPolicy extends XFAObject{constructor(e){super(Xo,"effectiveInputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EffectiveOutputPolicy extends XFAObject{constructor(e){super(Xo,"effectiveOutputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Operation extends StringObject{constructor(e){super(Xo,"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(Xo,"rootElement");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAction extends StringObject{constructor(e){super(Xo,"soapAction");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAddress extends StringObject{constructor(e){super(Xo,"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(Xo,"uri");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlAddress extends StringObject{constructor(e){super(Xo,"wsdlAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlConnection extends XFAObject{constructor(e){super(Xo,"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(Xo,"xmlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.uri=null}}class XsdConnection extends XFAObject{constructor(e){super(Xo,"xsdConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.rootElement=null;this.uri=null}}class ConnectionSetNamespace{static[Qs](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 qo=eo.datasets.id;class datasets_Data extends XmlObject{constructor(e){super(qo,"data",e)}[ks](){return!0}}class Datasets extends XFAObject{constructor(e){super(qo,"datasets",!0);this.data=null;this.Signature=null}[Bs](e){const t=e[Ms];("data"===t&&e[Os]===qo||"Signature"===t&&e[Os]===eo.signature.id)&&(this[t]=e);this[jn](e)}}class DatasetsNamespace{static[Qs](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 Ho=eo.localeSet.id;class CalendarSymbols extends XFAObject{constructor(e){super(Ho,"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(Ho,"currencySymbol");this.name=getStringOption(e.name,["symbol","isoname","decimal"])}}class CurrencySymbols extends XFAObject{constructor(e){super(Ho,"currencySymbols",!0);this.currencySymbol=new XFAObjectArray(3)}}class DatePattern extends StringObject{constructor(e){super(Ho,"datePattern");this.name=getStringOption(e.name,["full","long","med","short"])}}class DatePatterns extends XFAObject{constructor(e){super(Ho,"datePatterns",!0);this.datePattern=new XFAObjectArray(4)}}class DateTimeSymbols extends ContentObject{constructor(e){super(Ho,"dateTimeSymbols")}}class Day extends StringObject{constructor(e){super(Ho,"day")}}class DayNames extends XFAObject{constructor(e){super(Ho,"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(Ho,"era")}}class EraNames extends XFAObject{constructor(e){super(Ho,"eraNames",!0);this.era=new XFAObjectArray(2)}}class locale_set_Locale extends XFAObject{constructor(e){super(Ho,"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(Ho,"localeSet",!0);this.locale=new XFAObjectArray}}class Meridiem extends StringObject{constructor(e){super(Ho,"meridiem")}}class MeridiemNames extends XFAObject{constructor(e){super(Ho,"meridiemNames",!0);this.meridiem=new XFAObjectArray(2)}}class Month extends StringObject{constructor(e){super(Ho,"month")}}class MonthNames extends XFAObject{constructor(e){super(Ho,"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(Ho,"numberPattern");this.name=getStringOption(e.name,["full","long","med","short"])}}class NumberPatterns extends XFAObject{constructor(e){super(Ho,"numberPatterns",!0);this.numberPattern=new XFAObjectArray(4)}}class NumberSymbol extends StringObject{constructor(e){super(Ho,"numberSymbol");this.name=getStringOption(e.name,["decimal","grouping","percent","minus","zero"])}}class NumberSymbols extends XFAObject{constructor(e){super(Ho,"numberSymbols",!0);this.numberSymbol=new XFAObjectArray(5)}}class TimePattern extends StringObject{constructor(e){super(Ho,"timePattern");this.name=getStringOption(e.name,["full","long","med","short"])}}class TimePatterns extends XFAObject{constructor(e){super(Ho,"timePatterns",!0);this.timePattern=new XFAObjectArray(4)}}class TypeFace extends XFAObject{constructor(e){super(Ho,"typeFace",!0);this.name=""|e.name}}class TypeFaces extends XFAObject{constructor(e){super(Ho,"typeFaces",!0);this.typeFace=new XFAObjectArray}}class LocaleSetNamespace{static[Qs](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 Wo=eo.signature.id;class signature_Signature extends XFAObject{constructor(e){super(Wo,"signature",!0)}}class SignatureNamespace{static[Qs](e,t){if(SignatureNamespace.hasOwnProperty(e))return SignatureNamespace[e](t)}static signature(e){return new signature_Signature(e)}}const Go=eo.stylesheet.id;class Stylesheet extends XFAObject{constructor(e){super(Go,"stylesheet",!0)}}class StylesheetNamespace{static[Qs](e,t){if(StylesheetNamespace.hasOwnProperty(e))return StylesheetNamespace[e](t)}static stylesheet(e){return new Stylesheet(e)}}const zo=eo.xdp.id;class xdp_Xdp extends XFAObject{constructor(e){super(zo,"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}[Rs](e){const t=eo[e[Ms]];return t&&e[Os]===t.id}}class XdpNamespace{static[Qs](e,t){if(XdpNamespace.hasOwnProperty(e))return XdpNamespace[e](t)}static xdp(e){return new xdp_Xdp(e)}}const $o=eo.xhtml.id,Vo=Symbol(),Ko=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"]),Jo=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,parseInt(e)/100).toFixed(2)})`],["xfa-font-vertical-scale",e=>`scaleY(${Math.max(0,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))]]),Yo=/\s+/g,Zo=/[\r\n]+/g,Qo=/\r\n?/g;function mapStyle(e,t,a){const r=Object.create(null);if(!e)return r;const i=Object.create(null);for(const[t,a]of e.split(";").map(e=>e.split(":",2))){const e=Jo.get(t);if(""===e)continue;let n=a;e&&(n="string"==typeof e?e:e(a,i));t.endsWith("scale")?r.transform=r.transform?`${r[t]} ${n}`:n:r[t.replaceAll(/-([a-zA-Z])/g,(e,t)=>t.toUpperCase())]=n}r.fontFamily&&setFontFamily({typeface:r.fontFamily,weight:r.fontWeight||"normal",posture:r.fontStyle||"normal",size:i.fontSize||0},t,t[gs].fontFinder,r);if(a&&r.verticalAlign&&"0px"!==r.verticalAlign&&r.fontSize){const e=.583,t=.333,a=getMeasurement(r.fontSize);r.fontSize=measureToString(a*e);r.verticalAlign=measureToString(Math.sign(getMeasurement(r.verticalAlign))*a*t)}a&&r.fontSize&&(r.fontSize=`calc(${r.fontSize} * var(--total-scale-factor))`);fixTextIndent(r);return r}const ec=new Set(["body","html"]);class XhtmlObject extends XmlObject{constructor(e,t){super($o,t);this[Vo]=!1;this.style=e.style||""}[qn](e){super[qn](e);this.style=function checkStyle(e){return e.style?e.style.split(";").filter(e=>!!e.trim()).map(e=>e.split(":",2).map(e=>e.trim())).filter(([t,a])=>{"font-family"===t&&e[gs].usedTypefaces.add(a);return Ko.has(t)}).map(e=>e.join(":")).join(";"):""}(this)}[_n](){return!ec.has(this[Ms])}[Ns](e,t=!1){if(t)this[Vo]=!0;else{e=e.replaceAll(Zo,"");this.style.includes("xfa-spacerun:yes")||(e=e.replaceAll(Yo," "))}e&&(this[$n]+=e)}[Es](e,t=!0){const a=Object.create(null),r={top:NaN,bottom:NaN,left:NaN,right:NaN};let i=null;for(const[e,t]of this.style.split(";").map(e=>e.split(":",2)))switch(e){case"font-family":a.typeface=stripQuotes(t);break;case"font-size":a.size=getMeasurement(t);break;case"font-weight":a.weight=t;break;case"font-style":a.posture=t;break;case"letter-spacing":a.letterSpacing=getMeasurement(t);break;case"margin":const e=t.split(/ \t/).map(e=>getMeasurement(e));switch(e.length){case 1:r.top=r.bottom=r.left=r.right=e[0];break;case 2:r.top=r.bottom=e[0];r.left=r.right=e[1];break;case 3:r.top=e[0];r.bottom=e[2];r.left=r.right=e[1];break;case 4:r.top=e[0];r.left=e[1];r.bottom=e[2];r.right=e[3]}break;case"margin-top":r.top=getMeasurement(t);break;case"margin-bottom":r.bottom=getMeasurement(t);break;case"margin-left":r.left=getMeasurement(t);break;case"margin-right":r.right=getMeasurement(t);break;case"line-height":i=getMeasurement(t)}e.pushData(a,r,i);if(this[$n])e.addString(this[$n]);else for(const t of this[cs]())"#text"!==t[Ms]?t[Es](e):e.addString(t[$n]);t&&e.popFont()}[Ks](e){const t=[];this[Jn]={children:t};this[Xn]({});if(0===t.length&&!this[$n])return HTMLResult.EMPTY;let a;a=this[Vo]?this[$n]?this[$n].replaceAll(Qo,"\n"):void 0:this[$n]||void 0;return HTMLResult.success({name:this[Ms],attributes:{href:this.href,style:mapStyle(this.style,this,this[Vo])},children:t,value:a})}}class A extends XhtmlObject{constructor(e){super(e,"a");this.href=fixURL(e.href)||""}}class B extends XhtmlObject{constructor(e){super(e,"b")}[Es](e){e.pushFont({weight:"bold"});super[Es](e);e.popFont()}}class Body extends XhtmlObject{constructor(e){super(e,"body")}[Ks](e){const t=super[Ks](e),{html:a}=t;if(!a)return HTMLResult.EMPTY;a.name="div";a.attributes.class=["xfaRich"];return t}}class Br extends XhtmlObject{constructor(e){super(e,"br")}[$s](){return"\n"}[Es](e){e.addString("\n")}[Ks](e){return HTMLResult.success({name:"br"})}}class Html extends XhtmlObject{constructor(e){super(e,"html")}[Ks](e){const t=[];this[Jn]={children:t};this[Xn]({});if(0===t.length)return HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},value:this[$n]||""});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")}[Es](e){e.pushFont({posture:"italic"});super[Es](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")}[Es](e){super[Es](e,!1);e.addString("\n");e.addPara();e.popFont()}[$s](){return this[ds]()[cs]().at(-1)===this?super[$s]():super[$s]()+"\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[Qs](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 tc={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}[Qs](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[ms]=e}[Bs](e){this.element=e;return!0}[Yn](){super[Yn]();if(this.element.template instanceof Template){this[ms].set(js,this.element);this.element.template[Xs](this[ms]);this.element.template[ms]=this[ms]}}}class Empty extends XFAObject{constructor(){super(-1,"",Object.create(null))}[Bs](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(eo).map(({id:e})=>e));this._currentNamespace=e||new UnknownNamespace(++this._nextNsId)}buildRoot(e){return new Root(e)}build({nsPrefix:e,name:t,attributes:a,namespace:r,prefixes:i}){const n=null!==r;if(n){this._namespaceStack.push(this._currentNamespace);this._currentNamespace=this._searchNamespace(r)}i&&this._addNamespacePrefix(i);if(a.hasOwnProperty(Ds)){const e=tc.datasets,t=a[Ds];let r=null;for(const[a,i]of Object.entries(t)){if(this._getNamespaceToUse(a)===e){r={xfa:i};break}}r?a[Ds]=r:delete a[Ds]}const s=this._getNamespaceToUse(e),o=s?.[Qs](t,a)||new Empty;o[ks]()&&this._nsAgnosticLevel++;(n||i||o[ks]())&&(o[Wn]={hasNamespace:n,prefixes:i,nsAgnostic:o[ks]()});return o}isNsAgnostic(){return this._nsAgnosticLevel>0}_searchNamespace(e){let t=this._namespaces.get(e);if(t)return t;for(const[a,{check:r}]of Object.entries(eo))if(r(e)){t=tc[a];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:a}of e){const e=this._searchNamespace(a);let r=this._namespacePrefixes.get(t);if(!r){r=[];this._namespacePrefixes.set(t,r)}r.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:a,nsAgnostic:r}=e;t&&(this._currentNamespace=this._namespaceStack.pop());a&&a.forEach(({prefix:e})=>{this._namespacePrefixes.get(e).pop()});r&&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=vn;this._whiteRegex=/^\s+$/;this._nbsps=/\xa0+/g;this._richText=t}parse(e){this.parseXml(e);if(this._errorCode===vn){this._current[Yn]();return this._current.element}}onText(e){e=e.replace(this._nbsps,e=>e.slice(1)+" ");this._richText||this._current[_n]()?this._current[Ns](e,this._richText):this._whiteRegex.test(e)||this._current[Ns](e.trim())}onCdata(e){this._current[Ns](e)}_mkAttributes(e,t){let a=null,r=null;const i=Object.create({});for(const{name:n,value:s}of e)if("xmlns"===n)a?warn(`XFA - multiple namespace definition in <${t}>`):a=s;else if(n.startsWith("xmlns:")){const e=n.substring(6);r??=[];r.push({prefix:e,value:s})}else{const e=n.indexOf(":");if(-1===e)i[n]=s;else{const t=i[Ds]??=Object.create(null),[a,r]=[n.slice(0,e),n.slice(e+1)];(t[a]||=Object.create(null))[r]=s}}return[a,r,i]}_getNameAndPrefix(e,t){const a=e.indexOf(":");return-1===a?[e,null]:[e.substring(a+1),t?"":e.substring(0,a)]}onBeginElement(e,t,a){const[r,i,n]=this._mkAttributes(t,e),[s,o]=this._getNameAndPrefix(e,this._builder.isNsAgnostic()),c=this._builder.build({nsPrefix:o,name:s,attributes:n,namespace:r,prefixes:i});c[gs]=this._globalData;if(a){c[Yn]();this._current[Bs](c)&&c[Hs](this._ids);c[qn](this._builder)}else{this._stack.push(this._current);this._current=c}}onEndElement(e){const t=this._current;if(t[ws]()&&"string"==typeof t[$n]){const e=new XFAParser;e._globalData=this._globalData;const a=e.parse(t[$n]);t[$n]=null;t[Bs](a)}t[Yn]();this._current=this._stack.pop();this._current[Bs](t)&&t[Hs](this._ids);t[qn](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[gs].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[Vs]();return new Promise((t,a)=>{const nextIteration=()=>{try{const a=e.next();a.done?t(a.value):setTimeout(nextIteration,0)}catch(e){a(e)}};setTimeout(nextIteration,0)})}async _createPages(){try{this.pages=await this._createPagesHelper();this.dims=this.pages.children.map(e=>{const{width:t,height:a}=e.attributes.style;return[0,0,parseInt(t),parseInt(a)]})}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[gs].images=e}setFonts(e){this.form[gs].fontFinder=new FontFinder(e);const t=[];for(let e of this.form[gs].usedTypefaces){e=stripQuotes(e);this.form[gs].fontFinder.find(e)||t.push(e)}return t.length>0?t:null}appendFonts(e,t){this.form[gs].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[Ms])){const e=XhtmlNamespace.body({});e[jn](t);t=e}const a=t[Ks]();if(!a.success)return null;const{html:r}=a,{attributes:i}=r;if(i){i.class&&(i.class=i.class.filter(e=>!e.startsWith("xfa")));i.dir="auto"}return{html:r,str:t[$s]()}}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"),e.ensureCatalog("globalColorSpaceCache")]).then(([t,a,r,i,n,s])=>({pdfManager:e,acroForm:t instanceof Dict?t:Dict.empty,xfaDatasets:a,structTreeRoot:r,baseUrl:i,attachments:n,globalColorSpaceCache:s}),e=>{warn(`createGlobals: "${e}".`);return null})}static async create(e,t,a,r,i,n,s,o){const c=i?await this._getPageIndex(e,t,a.pdfManager):null;return a.pdfManager.ensure(this,"_create",[e,t,a,r,i,n,s,c,o])}static _create(e,t,a,r,i=!1,n=null,s=null,o=null,c=null){const l=e.fetchIfRef(t);if(!(l instanceof Dict))return;let h=l.get("Subtype");h=h instanceof Name?h.name:null;if(s&&!s.has(M[h.toUpperCase()]))return null;const{acroForm:u,pdfManager:d}=a,f=t instanceof Ref?t.toString():`annot_${r.createObjId()}`,g={xref:e,ref:t,dict:l,subtype:h,id:f,annotationGlobals:a,collectFields:i,orphanFields:n,needAppearances:!i&&!0===u.get("NeedAppearances"),pageIndex:o,evaluatorOptions:d.evaluatorOptions,pageRef:c};switch(h){case"Link":return new LinkAnnotation(g);case"Text":return new TextAnnotation(g);case"Widget":let e=getInheritableProperty({dict:l,key:"FT"});e=e instanceof Name?e.name:null;switch(e){case"Tx":return new TextWidgetAnnotation(g);case"Btn":return new ButtonWidgetAnnotation(g);case"Ch":return new ChoiceWidgetAnnotation(g);case"Sig":return new SignatureWidgetAnnotation(g)}warn(`Unimplemented widget field type "${e}", falling back to base field type.`);return new WidgetAnnotation(g);case"Popup":return new PopupAnnotation(g);case"FreeText":return new FreeTextAnnotation(g);case"Line":return new LineAnnotation(g);case"Square":return new SquareAnnotation(g);case"Circle":return new CircleAnnotation(g);case"PolyLine":return new PolylineAnnotation(g);case"Polygon":return new PolygonAnnotation(g);case"Caret":return new CaretAnnotation(g);case"Ink":return new InkAnnotation(g);case"Highlight":return new HighlightAnnotation(g);case"Underline":return new UnderlineAnnotation(g);case"Squiggly":return new SquigglyAnnotation(g);case"StrikeOut":return new StrikeOutAnnotation(g);case"Stamp":return new StampAnnotation(g);case"FileAttachment":return new FileAttachmentAnnotation(g);default:i||warn(h?`Unimplemented annotation type "${h}", falling back to base annotation.`:"Annotation is missing the required /Subtype.");return new Annotation(g)}}static async _getPageIndex(e,t,a){try{const r=await e.fetchIfRefAsync(t);if(!(r instanceof Dict))return-1;const i=r.getRaw("P");if(i instanceof Ref)try{return await a.ensureCatalog("getPageIndex",[i])}catch(e){info(`_getPageIndex -- not a valid page reference: "${e}".`)}if(r.has("Kids"))return-1;const n=await a.ensureDoc("numPages");for(let e=0;ee/255)||t}function getQuadPoints(e,t){const a=e.getArray("QuadPoints");if(!isNumberArray(a,null)||0===a.length||a.length%8>0)return null;const r=new Float32Array(a.length);for(let e=0,i=a.length;et[2]||gt[3]))return null;r.set([d,p,f,p,d,g,f,g],e)}return r}function getTransformMatrix(e,t,a){const r=new Float32Array([1/0,1/0,-1/0,-1/0]);Util.axialAlignedBoundingBox(t,a,r);const[i,n,s,o]=r;if(i===s||n===o)return[1,0,0,1,e[0],e[1]];const c=(e[2]-e[0])/(s-i),l=(e[3]-e[1])/(o-n);return[c,0,0,l,e[0]-i*c,e[1]-n*l]}class Annotation{constructor(e){const{dict:t,xref:a,annotationGlobals:r,ref:i,orphanFields:n}=e,s=n?.get(i);s&&t.set("Parent",s);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 o=t.get("MK");this.setBorderAndBackgroundColors(o);this.setRotation(o,t);this.ref=e.ref instanceof Ref?e.ref:null;this._streams=[];this.appearance&&this._streams.push(this.appearance);const c=!!(this.flags&j),l=!!(this.flags&X);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:c&&l,isEditable:!1,structParent:-1};if(r.structTreeRoot){let a=t.get("StructParent");this.data.structParent=a=Number.isInteger(a)&&a>=0?a:-1;r.structTreeRoot.addAnnotationIdToPage(e.pageRef,a)}if(e.collectFields){const r=t.get("Kids");if(Array.isArray(r)){const e=[];for(const t of r)t instanceof Ref&&e.push(t.toString());0!==e.length&&(this.data.kidIds=e)}this.data.actions=collectActions(a,t,ie);this.data.fieldName=this._constructFieldName(t);this.data.pageIndex=e.pageIndex}const h=t.get("IT");h instanceof Name&&(this.data.it=h.name);this._isOffscreenCanvasSupported=e.evaluatorOptions.isOffscreenCanvasSupported;this._fallbackFontDict=null;this._needAppearances=!1}_hasFlag(e,t){return!!(e&t)}_buildFlags(e,t){let{flags:a}=this;if(void 0===e){if(void 0===t)return;return t?a&~L:a&~E|L}if(e){a|=L;return t?a&~U|E:a&~E|U}a&=~(E|U);return t?a&~L:a|L}_isViewable(e){return!this._hasFlag(e,N)&&!this._hasFlag(e,U)}_isPrintable(e){return this._hasFlag(e,L)&&!this._hasFlag(e,E)&&!this._hasFlag(e,N)}mustBeViewed(e,t){const a=e?.get(this.data.id)?.noView;return void 0!==a?!a:this.viewable&&!this._hasFlag(this.flags,E)}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:a}=e,r=getInheritableProperty({dict:t,key:"DA"})||a.acroForm.get("DA");this._defaultAppearance="string"==typeof r?r:"";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&N&&"Annotation"!==this.constructor.name&&(this.flags^=N)}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 a=e[t];if(a instanceof Name)switch(a.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]=a.name;continue}warn(`Ignoring invalid lineEnding: ${a}`)}}setRotation(e,t){this.rotation=0;let a=e instanceof Dict?e.get("R")||0:t.get("Rotate")||0;if(Number.isInteger(a)&&0!==a){a%=360;a<0&&(a+=360);a%90==0&&(this.rotation=a)}}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 a=t.get("N");if(a instanceof BaseStream){this.appearance=a;return}if(!(a instanceof Dict))return;const r=e.get("AS");if(!(r instanceof Name&&a.has(r.name)))return;const i=a.get(r.name);i instanceof BaseStream&&(this.appearance=i)}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)}async loadResources(e,t){const a=await t.dict.getAsync("Resources");a&&await ObjectLoader.load(a,e,a.xref);return a}async getOperatorList(e,t,a,r){const{hasOwnCanvas:i,id:n,rect:o}=this.data;let c=this.appearance;const l=!!(i&&a&s);if(l&&(0===this.width||0===this.height)){this.data.hasOwnCanvas=!1;return{opList:new OperatorList,separateForm:!1,separateCanvas:!1}}if(!c){if(!l)return{opList:new OperatorList,separateForm:!1,separateCanvas:!1};c=new StringStream("");c.dict=new Dict}const h=c.dict,u=await this.loadResources(ga,c),d=lookupRect(h.getArray("BBox"),[0,0,1,1]),f=lookupMatrix(h.getArray("Matrix"),fa),g=getTransformMatrix(o,d,f),p=new OperatorList;let m;this.oc&&(m=await e.parseMarkedContentProps(this.oc,null));void 0!==m&&p.addOp(Ct,["OC",m]);p.addOp(Bt,[n,o,g,f,l]);await e.getOperatorList({stream:c,task:t,resources:u,operatorList:p,fallbackFontDict:this._fallbackFontDict});p.addOp(Rt,[]);void 0!==m&&p.addOp(vt,[]);this.reset();return{opList:p,separateForm:!1,separateCanvas:l}}async save(e,t,a,r){return null}get overlaysTextContent(){return!1}get hasTextContent(){return!1}async extractTextContent(e,t,a){if(!this.appearance)return;const r=await this.loadResources(pa,this.appearance),i=[],n=[];let s=null;const o={desiredSize:Math.Infinity,ready:!0,enqueue(e,t){for(const t of e.items)if(void 0!==t.str){s||=t.transform.slice(-2);n.push(t.str);if(t.hasEOL){i.push(n.join("").trimEnd());n.length=0}}}};await e.getTextContent({stream:this.appearance,task:t,resources:r,includeMarkedContent:!0,keepWhiteSpace:!0,sink:o,viewBox:a});this.reset();n.length&&i.push(n.join("").trimEnd());if(i.length>1||i[0]){const e=this.appearance.dict,t=lookupRect(e.getArray("BBox"),null),a=lookupMatrix(e.getArray("Matrix"),null);this.data.textPosition=this._transformPoint(s,t,a);this.data.textContent=i}}_transformPoint(e,t,a){const{rect:r}=this.data;t||=[0,0,1,1];a||=[1,0,0,1,0,0];const i=getTransformMatrix(r,t,a);i[4]-=r[0];i[5]-=r[1];const n=e.slice();Util.applyTransform(n,i);Util.applyTransform(n,a);return n}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 a=e;const r=new RefSet;e.objId&&r.put(e.objId);for(;a.has("Parent");){a=a.get("Parent");if(!(a instanceof Dict)||a.objId&&r.has(a.objId))break;a.objId&&r.put(a.objId);a.has("T")&&t.unshift(stringToPDFString(a.get("T")))}return t.join(".")}get width(){return this.data.rect[2]-this.data.rect[0]}get height(){return this.data.rect[3]-this.data.rect[1]}}class AnnotationBorderStyle{constructor(){this.width=1;this.rawWidth=1;this.style=Q;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 a=(t[2]-t[0])/2,r=(t[3]-t[1])/2;if(a>0&&r>0&&(e>a||e>r)){warn(`AnnotationBorderStyle.setWidth - ignoring width: ${e}`);e=1}}this.width=e}}setStyle(e){if(e instanceof Name)switch(e.name){case"S":this.style=Q;break;case"D":this.style=ee;break;case"B":this.style=te;break;case"I":this.style=ae;break;case"U":this.style=re}}setDashArray(e,t=!1){if(Array.isArray(e)){let a=!0,r=!0;for(const t of e){if(!(+t>=0)){a=!1;break}t>0&&(r=!1)}if(0===e.length||a&&!r){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 a=t.get("RT");this.data.replyType=a instanceof Name?a.name:R}let a=null;if(this.data.replyType===D){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;a=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;a=t.getRaw("Popup");t.has("C")||(this.data.color=null)}this.data.popupRef=a instanceof Ref?a.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:a,fillColor:r,blendMode:i,strokeAlpha:n,fillAlpha:s,pointsCallback:o}){const c=this.data.rect=[1/0,1/0,-1/0,-1/0],l=["q"];t&&l.push(t);a&&l.push(`${a[0]} ${a[1]} ${a[2]} RG`);r&&l.push(`${r[0]} ${r[1]} ${r[2]} rg`);const h=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=h.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,U)}getRotationMatrix(e){let t=e?.get(this.data.id)?.rotation;void 0===t&&(t=this.rotation);return 0===t?fa:getRotationMatrix(t,this.width,this.height)}getBorderAndBackgroundAppearances(e){let t=e?.get(this.data.id)?.rotation;void 0===t&&(t=this.rotation);if(!this.backgroundColor&&!this.borderColor)return"";const a=0===t||180===t?`0 0 ${this.width} ${this.height} re`:`0 0 ${this.height} ${this.width} re`;let r="";this.backgroundColor&&(r=`${getPdfColor(this.backgroundColor,!0)} ${a} f `);if(this.borderColor){r+=`${this.borderStyle.width||1} w ${getPdfColor(this.borderColor,!1)} ${a} S `}return r}async getOperatorList(e,t,a,r){if(a&l&&!(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,a,r);const i=await this._getAppearance(e,t,a,r);if(this.appearance&&null===i)return super.getOperatorList(e,t,a,r);const n=new OperatorList;if(!this._defaultAppearance||null===i)return{opList:n,separateForm:!1,separateCanvas:!1};const o=!!(this.data.hasOwnCanvas&&a&s),c=[0,0,this.width,this.height],h=getTransformMatrix(this.data.rect,c,[1,0,0,1,0,0]);let u;this.oc&&(u=await e.parseMarkedContentProps(this.oc,null));void 0!==u&&n.addOp(Ct,["OC",u]);n.addOp(Bt,[this.data.id,this.data.rect,h,this.getRotationMatrix(r),o]);const d=new StringStream(i);await e.getOperatorList({stream:d,task:t,resources:this._fieldResources.mergedResources,operatorList:n});n.addOp(Rt,[]);void 0!==u&&n.addOp(vt,[]);return{opList:n,separateForm:!1,separateCanvas:o}}_getMKDict(e){const t=new Dict(null);e&&t.set("R",e);t.setIfArray("BC",getPdfColorArray(this.borderColor));t.setIfArray("BG",getPdfColorArray(this.backgroundColor));return t.size>0?t:null}amendSavedDict(e,t){}setValue(e,t,a,r){const{dict:i,ref:n}=function getParentToUpdate(e,t,a){const r=new RefSet,i=e,n={dict:null,ref:null};for(;e instanceof Dict&&!r.has(t);){r.put(t);if(e.has("T"))break;if(!((t=e.getRaw("Parent"))instanceof Ref))return n;e=a.fetch(t)}if(e instanceof Dict&&e!==i){n.dict=e;n.ref=t}return n}(e,this.ref,a);if(i){if(!r.has(n)){const e=i.clone();e.set("V",t);r.put(n,{data:e});return e}}else e.set("V",t);return null}async save(e,t,a,r){const i=a?.get(this.data.id),n=this._buildFlags(i?.noView,i?.noPrint);let s=i?.value,o=i?.rotation;if(s===this.data.fieldValue||void 0===s){if(!this._hasValueFromXFA&&void 0===o&&void 0===n)return;s||=this.data.fieldValue}if(void 0===o&&!this._hasValueFromXFA&&Array.isArray(s)&&Array.isArray(this.data.fieldValue)&&isArrayEqual(s,this.data.fieldValue)&&void 0===n)return;void 0===o&&(o=this.rotation);let l=null;if(!this._needAppearances){l=await this._getAppearance(e,t,c,a);if(null===l&&void 0===n)return}let h=!1;if(l?.needAppearances){h=!0;l=null}const{xref:u}=e,d=u.fetchIfRef(this.ref);if(!(d instanceof Dict))return;const f=new Dict(u);for(const e of d.getKeys())"AP"!==e&&f.set(e,d.getRaw(e));if(void 0!==n){f.set("F",n);if(null===l&&!h){const e=d.getRaw("AP");e&&f.set("AP",e)}}const g={path:this.data.fieldName,value:s},p=this.setValue(f,Array.isArray(s)?s.map(stringToAsciiOrUTF16BE):stringToAsciiOrUTF16BE(s),u,r);this.amendSavedDict(a,p||f);const m=this._getMKDict(o);m&&f.set("MK",m);r.put(this.ref,{data:f,xfa:g,needAppearances:h});if(null!==l){const e=u.getNewTemporaryRef(),t=new Dict(u);f.set("AP",t);t.set("N",e);const i=this._getSaveFieldResources(u),n=new StringStream(l),s=n.dict=new Dict(u);s.setIfName("Subtype","Form");s.set("Resources",i);const c=o%180==0?[0,0,this.width,this.height]:[0,0,this.height,this.width];s.set("BBox",c);const h=this.getRotationMatrix(a);h!==fa&&s.set("Matrix",h);r.put(e,{data:n,xfa:null,needAppearances:!1})}f.set("M",`D:${getModificationDate()}`)}async _getAppearance(e,t,a,r){if(this.data.password)return null;const n=r?.get(this.data.id);let s,o;if(n){s=n.formattedValue||n.value;o=n.rotation}if(void 0===o&&void 0===s&&!this._needAppearances&&(!this._hasValueFromXFA||this.appearance))return null;const l=this.getBorderAndBackgroundAppearances(r);if(void 0===s){s=this.data.fieldValue;if(!s)return`/Tx BMC q ${l}Q EMC`}Array.isArray(s)&&1===s.length&&(s=s[0]);assert("string"==typeof s,"Expected `value` to be a string.");s=s.trimEnd();if(this.data.combo){const e=this.data.options.find(({exportValue:e})=>s===e);s=e?.displayValue||s}if(""===s)return`/Tx BMC q ${l}Q EMC`;void 0===o&&(o=this.rotation);let h,u=-1;if(this.data.multiLine){h=s.split(/\r\n?|\n/).map(e=>e.normalize("NFC"));u=h.length}else h=[s.replace(/\r\n?|\n/,"").normalize("NFC")];let{width:d,height:f}=this;90!==o&&270!==o||([d,f]=[f,d]);this._defaultAppearance||(this.data.defaultAppearanceData=parseDefaultAppearance(this._defaultAppearance="/Helvetica 0 Tf 0 g"));let g,p,m,b=await WidgetAnnotation._getFontData(e,t,this.data.defaultAppearanceData,this._fieldResources.mergedResources);const y=[];let w=!1;for(const e of h){const t=b.encodeString(e);t.length>1&&(w=!0);y.push(t.join(""))}if(w&&a&c)return{needAppearances:!0};if(w&&this._isOffscreenCanvasSupported){const a=this.data.comb?"monospace":"sans-serif",r=new FakeUnicodeFont(e.xref,a),i=r.createFontResources(h.join("")),n=i.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 o=r.fontName.name;b=await WidgetAnnotation._getFontData(e,t,{fontName:o,fontSize:0},i);for(let e=0,t=y.length;e2)return`/Tx BMC q ${l}BT `+g+` 1 0 0 1 ${numberToString(2)} ${numberToString(C)} Tm (${escapeString(y[0])}) Tj ET Q EMC`;return`/Tx BMC q ${l}BT `+g+` 1 0 0 1 0 0 Tm ${this._renderText(y[0],b,p,d,k,{shift:0},2,C)} ET Q EMC`}static async _getFontData(e,t,a,r){const i=new OperatorList,n={font:null,clone(){return this}},{fontName:s,fontSize:o}=a;await e.handleSetFont(r,[s&&Name.get(s),o],null,i,t,n,null);return n.font}_getTextWidth(e,t){return Math.sumPrecise(t.charsToGlyphs(e).map(e=>e.width))/1e3}_computeFontSize(e,t,r,i,n){let{fontSize:s}=this.data.defaultAppearanceData,o=(s||12)*a,c=Math.round(e/o);if(!s){const roundWithTwoDigits=e=>Math.floor(100*e)/100;if(-1===n){const n=this._getTextWidth(r,i);s=roundWithTwoDigits(Math.min(e/a,t/n));c=1}else{const l=r.split(/\r\n?|\n/),h=[];for(const e of l){const t=i.encodeString(e).join(""),a=i.charsToGlyphs(t),r=i.getCharPositions(t);h.push({line:t,glyphs:a,positions:r})}const isTooBig=a=>{let r=0;for(const n of h){r+=this._splitLine(null,i,a,t,n).length*a;if(r>e)return!0}return!1};c=Math.max(c,n);for(;;){o=e/c;s=roundWithTwoDigits(o/a);if(!isTooBig(s))break;c++}}const{fontName:l,fontColor:h}=this.data.defaultAppearanceData;this._defaultAppearance=function createDefaultAppearance({fontSize:e,fontName:t,fontColor:a}){return`/${escapePDFName(t)} ${e} Tf ${getPdfColor(a,!0)}`}({fontSize:s,fontName:l,fontColor:h})}return[this._defaultAppearance,s,e/c]}_renderText(e,t,a,r,i,n,s,o){let c;if(1===i){c=(r-this._getTextWidth(e,t)*a)/2}else if(2===i){c=r-this._getTextWidth(e,t)*a-s}else c=s;const l=numberToString(c-n.shift);n.shift=c;return`${l} ${o=numberToString(o)} Td (${escapeString(e)}) Tj`}_getSaveFieldResources(e){const{localResources:t,appearanceResources:a,acroFormResources:r}=this._fieldResources,i=this.data.defaultAppearanceData?.fontName;if(!i)return t||Dict.empty;for(const e of[t,a])if(e instanceof Dict){const t=e.get("Font");if(t instanceof Dict&&t.has(i))return e}if(r instanceof Dict){const a=r.get("Font");if(a instanceof Dict&&a.has(i)){const r=new Dict(e);r.set(i,a.getRaw(i));const n=new Dict(e);n.set("Font",r);return Dict.merge({xref:e,dictArray:[n,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|=E;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 a=getInheritableProperty({dict:t,key:"Q"});(!Number.isInteger(a)||a<0||a>2)&&(a=null);this.data.textAlignment=a;let r=getInheritableProperty({dict:t,key:"MaxLen"});(!Number.isInteger(r)||r<0)&&(r=0);this.data.maxLen=r;this.data.multiLine=this.hasFieldFlag(W);this.data.comb=this.hasFieldFlag(Z)&&!this.data.multiLine&&!this.data.password&&!this.hasFieldFlag(K)&&0!==this.data.maxLen;this.data.doNotScroll=this.hasFieldFlag(Y);const{data:{actions:i}}=this;if(!i)return;const n=/^AF(Date|Time)_(?:Keystroke|Format)(?:Ex)?\(['"]?([^'"]+)['"]?\);$/;let s=!1;(1===i.Format?.length&&1===i.Keystroke?.length&&n.test(i.Format[0])&&n.test(i.Keystroke[0])||0===i.Format?.length&&1===i.Keystroke?.length&&n.test(i.Keystroke[0])||0===i.Keystroke?.length&&1===i.Format?.length&&n.test(i.Format[0]))&&(s=!0);const o=[];i.Format&&o.push(...i.Format);i.Keystroke&&o.push(...i.Keystroke);if(s){delete i.Keystroke;i.Format=o}for(const e of o){const t=e.match(n);if(!t)continue;const a="Date"===t[1];let r=t[2];const i=parseInt(r,10);isNaN(i)||Math.floor(Math.log10(i))+1!==t[2].length||(r=(a?kn:Cn)[i]??r);this.data.datetimeFormat=r;if(!s)break;if(a){if(/HH|MM|ss|h/.test(r)){this.data.datetimeType="datetime-local";this.data.timeStep=/ss/.test(r)?1:60}else this.data.datetimeType="date";break}this.data.datetimeType="time";this.data.timeStep=/ss/.test(r)?1:60;break}}get hasTextContent(){return!!this.appearance&&!this._needAppearances}_getCombAppearance(e,t,a,r,i,n,s,o,c,l,h){const u=i/this.data.maxLen,d=this.getBorderAndBackgroundAppearances(h),f=[],g=t.getCharPositions(a);for(const[e,t]of g)f.push(`(${escapeString(a.substring(e,t))}) Tj`);const p=f.join(` ${numberToString(u)} 0 Td `);return`/Tx BMC q ${d}BT `+e+` 1 0 0 1 ${numberToString(s)} ${numberToString(o+c)} Tm ${p} ET Q EMC`}_getMultilineAppearance(e,t,a,r,i,n,s,o,c,l,h,u){const d=[],f=i-2*o,g={shift:0};for(let e=0,n=t.length;er){c.push(e.substring(d,a));d=a;f=p;l=-1;u=-1}else{f+=p;l=a;h=i;u=t}else if(f+p>r)if(-1!==l){c.push(e.substring(d,h));d=h;t=u+1;l=-1;f=0}else{c.push(e.substring(d,a));d=a;f=p}else f+=p}dt?`\\${t}`:"\\s+");new RegExp(`^\\s*${n}\\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.data.password,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,datetimeFormat:this.data.datetimeFormat,hasDatetimeHTML:!!this.data.datetimeType,type:"text"}}}class ButtonWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);this.checkedAppearance=null;this.uncheckedAppearance=null;const t=this.hasFieldFlag(z),a=this.hasFieldFlag($);this.data.checkBox=!t&&!a;this.data.radioButton=t&&!a;this.data.pushButton=a;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,r){if(this.data.pushButton)return super.getOperatorList(e,t,a,!1,r);let i=null,n=null;if(r){const e=r.get(this.data.id);i=e?e.value:null;n=e?e.rotation:null}if(null===i&&this.appearance)return super.getOperatorList(e,t,a,r);null==i&&(i=this.data.checkBox?this.data.fieldValue===this.data.exportValue:this.data.fieldValue===this.data.buttonValue);const s=i?this.checkedAppearance:this.uncheckedAppearance;if(s){const i=this.appearance,o=lookupMatrix(s.dict.getArray("Matrix"),fa);n&&s.dict.set("Matrix",this.getRotationMatrix(r));this.appearance=s;const c=super.getOperatorList(e,t,a,r);this.appearance=i;s.dict.set("Matrix",o);return c}return{opList:new OperatorList,separateForm:!1,separateCanvas:!1}}async save(e,t,a,r){this.data.checkBox?this._saveCheckbox(e,t,a,r):this.data.radioButton&&this._saveRadioButton(e,t,a,r)}async _saveCheckbox(e,t,a,r){if(!a)return;const i=a.get(this.data.id),n=this._buildFlags(i?.noView,i?.noPrint);let s=i?.rotation,o=i?.value;if(void 0===s&&void 0===n){if(void 0===o)return;if(this.data.fieldValue===this.data.exportValue===o)return}let c=e.xref.fetchIfRef(this.ref);if(!(c instanceof Dict))return;c=c.clone();void 0===s&&(s=this.rotation);void 0===o&&(o=this.data.fieldValue===this.data.exportValue);const l={path:this.data.fieldName,value:o?this.data.exportValue:""},h=Name.get(o?this.data.exportValue:"Off");this.setValue(c,h,e.xref,r);c.set("AS",h);c.set("M",`D:${getModificationDate()}`);void 0!==n&&c.set("F",n);const u=this._getMKDict(s);u&&c.set("MK",u);r.put(this.ref,{data:c,xfa:l,needAppearances:!1})}async _saveRadioButton(e,t,a,r){if(!a)return;const i=a.get(this.data.id),n=this._buildFlags(i?.noView,i?.noPrint);let s=i?.rotation,o=i?.value;if(void 0===s&&void 0===n){if(void 0===o)return;if(this.data.fieldValue===this.data.buttonValue===o)return}let c=e.xref.fetchIfRef(this.ref);if(!(c instanceof Dict))return;c=c.clone();void 0===o&&(o=this.data.fieldValue===this.data.buttonValue);void 0===s&&(s=this.rotation);const l={path:this.data.fieldName,value:o?this.data.buttonValue:""},h=Name.get(o?this.data.buttonValue:"Off");o&&this.setValue(c,h,e.xref,r);c.set("AS",h);c.set("M",`D:${getModificationDate()}`);void 0!==n&&c.set("F",n);const u=this._getMKDict(s);u&&c.set("MK",u);r.put(this.ref,{data:c,xfa:l,needAppearances:!1})}_getDefaultCheckedAppearance(e,t){const{width:a,height:r}=this,i=[0,0,a,r],n=.8*Math.min(a,r);let s,o;if("check"===t){s={width:.755*n,height:.705*n};o="3"}else if("disc"===t){s={width:.791*n,height:.705*n};o="l"}else unreachable(`_getDefaultCheckedAppearance - unsupported type: ${t}`);const c=`q BT /PdfJsZaDb ${n} Tf 0 g ${numberToString((a-s.width)/2)} ${numberToString((r-s.height)/2)} Td (${o}) Tj ET Q`,l=new Dict(e.xref);l.set("FormType",1);l.setIfName("Subtype","Form");l.setIfName("Type","XObject");l.set("BBox",i);l.set("Matrix",[1,0,0,1,0,0]);l.set("Length",c.length);const h=new Dict(e.xref),u=new Dict(e.xref);u.set("PdfJsZaDb",this.fallbackFontDict);h.set("Font",u);l.set("Resources",h);this.checkedAppearance=new StringStream(c);this.checkedAppearance.dict=l;this._streams.push(this.checkedAppearance)}_processCheckBox(e){const t=e.dict.get("AP");if(!(t instanceof Dict))return;const a=t.get("N");if(!(a instanceof Dict))return;const r=this._decodeFormValue(e.dict.get("AS"));"string"==typeof r&&(this.data.fieldValue=r);const i=null!==this.data.fieldValue&&"Off"!==this.data.fieldValue?this.data.fieldValue:"Yes",n=this._decodeFormValue(a.getKeys());if(0===n.length)n.push("Off",i);else if(1===n.length)"Off"===n[0]?n.push(i):n.unshift("Off");else if(n.includes(i)){n.length=0;n.push("Off",i)}else{const e=n.find(e=>"Off"!==e);n.length=0;n.push("Off",e)}n.includes(this.data.fieldValue)||(this.data.fieldValue="Off");this.data.exportValue=n[1];const s=a.get(this.data.exportValue);this.checkedAppearance=s instanceof BaseStream?s:null;const o=a.get("Off");this.uncheckedAppearance=o instanceof BaseStream?o: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 a=t.get("V");a instanceof Name&&(this.data.fieldValue=this._decodeFormValue(a))}const a=e.dict.get("AP");if(!(a instanceof Dict))return;const r=a.get("N");if(!(r instanceof Dict))return;for(const e of r.getKeys())if("Off"!==e){this.data.buttonValue=this._decodeFormValue(e);break}const i=r.get(this.data.buttonValue);this.checkedAppearance=i instanceof BaseStream?i:null;const n=r.get("Off");this.uncheckedAppearance=n instanceof BaseStream?n: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:a}=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:a.baseUrl,docAttachments:a.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.setIfName("BaseFont","ZapfDingbats");e.setIfName("Type","FallbackType");e.setIfName("Subtype","FallbackType");e.setIfName("Encoding","ZapfDingbatsEncoding");return shadow(this,"fallbackFontDict",e)}}class ChoiceWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.indices=t.getArray("I");this.hasIndices=Array.isArray(this.indices)&&this.indices.length>0;this.data.options=[];const r=getInheritableProperty({dict:t,key:"Opt"});if(Array.isArray(r))for(let e=0,t=r.length;e=0&&t0&&(this.data.options=this.data.fieldValue.map(e=>({exportValue:e,displayValue:e})));this.data.combo=this.hasFieldFlag(V);this.data.multiSelect=this.hasFieldFlag(J);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 a=e?.get(this.data.id)?.value;Array.isArray(a)||(a=[a]);const r=[],{options:i}=this.data;for(let e=0,t=0,n=i.length;ea){a=r;t=e}}[f,g]=this._computeFontSize(e,c-4,t,d,-1)}const p=g*a,m=(p-g)/2,b=Math.floor(l/p);let y=0;if(u.length>0){const e=Math.min(...u),t=Math.max(...u);y=Math.max(0,t-b+1);y>e&&(y=e)}const w=Math.min(y+b+1,h),x=["/Tx BMC q",`1 1 ${c} ${l} re W n`];if(u.length){x.push("0.600006 0.756866 0.854904 rg");for(const e of u)y<=e&&ee.trimEnd());const{coords:e,bbox:t,matrix:r}=FakeUnicodeFont.getFirstPositionInfo(this.rectangle,this.rotation,a);this.data.textPosition=this._transformPoint(e,t,r)}if(this._isOffscreenCanvasSupported){const i=e.dict.get("CA"),n=new FakeUnicodeFont(r,"sans-serif");this.appearance=n.createAppearance(this._contents.str,this.rectangle,this.rotation,a,t,i);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:a,ap:r}){const{color:i,date:n,fontSize:s,oldAnnotation:o,rect:c,rotation:l,user:h,value:u}=e,d=o||new Dict(t);d.setIfNotExists("Type",Name.get("Annot"));d.setIfNotExists("Subtype",Name.get("FreeText"));d.set(o?"M":"CreationDate",`D:${getModificationDate(n)}`);o&&d.delete("RC");d.setIfArray("Rect",c);const f=`/Helv ${s} Tf ${getPdfColor(i,!0)}`;d.set("DA",f);d.setIfDefined("Contents",stringToAsciiOrUTF16BE(u));d.setIfNotExists("F",4);d.setIfNotExists("Border",[0,0,0]);d.setIfNumber("Rotate",l);d.setIfDefined("T",stringToAsciiOrUTF16BE(h));if(a||r){const e=new Dict(t);d.set("AP",e);e.set("N",a||r)}return d}static async createNewAppearanceStream(e,t,r){const{baseFontRef:i,evaluator:n,task:s}=r,{color:o,fontSize:c,rect:l,rotation:h,value:u}=e;if(!o)return null;const d=new Dict(t),f=new Dict(t);if(i)f.set("Helv",i);else{const e=new Dict(t);e.setIfName("BaseFont","Helvetica");e.setIfName("Type","Font");e.setIfName("Subtype","Type1");e.setIfName("Encoding","WinAnsiEncoding");f.set("Helv",e)}d.set("Font",f);const g=await WidgetAnnotation._getFontData(n,s,{fontName:"Helv",fontSize:c},d),[p,m,b,y]=l;let w=b-p,x=y-m;h%180!=0&&([w,x]=[x,w]);const S=u.split("\n"),k=c/1e3;let C=-1/0;const v=[];for(let e of S){const t=g.encodeString(e);if(t.length>1)return null;e=t.join("");v.push(e);let a=0;const r=g.charsToGlyphs(e);for(const e of r)a+=e.width*k;C=Math.max(C,a)}let F=1;C>w&&(F=w/C);let T=1;const O=a*c,M=1*c,D=O*S.length;D>x&&(T=x/D);const R=c*Math.min(F,T);let N,E,L;switch(h){case 0:L=[1,0,0,1];E=[l[0],l[1],w,x];N=[l[0],l[3]-M];break;case 90:L=[0,1,-1,0];E=[l[1],-l[2],w,x];N=[l[1],-l[0]-M];break;case 180:L=[-1,0,0,-1];E=[-l[2],-l[3],w,x];N=[-l[2],-l[1]-M];break;case 270:L=[0,-1,1,0];E=[-l[3],l[0],w,x];N=[-l[3],l[2]-M]}const _=["q",`${L.join(" ")} 0 0 cm`,`${E.join(" ")} re W n`,"BT",`${getPdfColor(o,!0)}`,`0 Tc /Helv ${numberToString(R)} Tf`];_.push(`${N.join(" ")} Td (${escapeString(v[0])}) Tj`);const U=numberToString(O);for(let e=1,t=v.length;e{e.push(`${r[0]} ${r[1]} m`,`${r[2]} ${r[3]} l`,"S");return[t[0]-o,t[7]-o,t[2]+o,t[3]+o]}})}}}class SquareAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=M.SQUARE;this.data.hasOwnCanvas=this.data.noRotate;this.data.noHTML=!1;if(!this.appearance){const e=getPdfColorArray(this.color,[0,0,0]),r=t.get("CA"),i=getPdfColorArray(getRgbColor(t.getArray("IC"),null)),n=i?r:null;if(0===this.borderStyle.width&&!i)return;this._setDefaultAppearance({xref:a,extra:`${this.borderStyle.width} w`,strokeColor:e,fillColor:i,strokeAlpha:r,fillAlpha:n,pointsCallback:(e,t)=>{const a=t[4]+this.borderStyle.width/2,r=t[5]+this.borderStyle.width/2,n=t[6]-t[4]-this.borderStyle.width,s=t[3]-t[7]-this.borderStyle.width;e.push(`${a} ${r} ${n} ${s} re`);i?e.push("B"):e.push("S");return[t[0],t[7],t[2],t[3]]}})}}}class CircleAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=M.CIRCLE;if(!this.appearance){const e=getPdfColorArray(this.color,[0,0,0]),r=t.get("CA"),i=getPdfColorArray(getRgbColor(t.getArray("IC"),null)),n=i?r:null;if(0===this.borderStyle.width&&!i)return;const s=4/3*Math.tan(Math.PI/8);this._setDefaultAppearance({xref:a,extra:`${this.borderStyle.width} w`,strokeColor:e,fillColor:i,strokeAlpha:r,fillAlpha:n,pointsCallback:(e,t)=>{const a=t[0]+this.borderStyle.width/2,r=t[1]-this.borderStyle.width/2,n=t[6]-this.borderStyle.width/2,o=t[7]+this.borderStyle.width/2,c=a+(n-a)/2,l=r+(o-r)/2,h=(n-a)/2*s,u=(o-r)/2*s;e.push(`${c} ${o} m`,`${c+h} ${o} ${n} ${l+u} ${n} ${l} c`,`${n} ${l-u} ${c+h} ${r} ${c} ${r} c`,`${c-h} ${r} ${a} ${l-u} ${a} ${l} c`,`${a} ${l+u} ${c-h} ${o} ${c} ${o} c`,"h");i?e.push("B"):e.push("S");return[t[0],t[7],t[2],t[3]]}})}}}class PolylineAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=M.POLYLINE;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 r=t.getArray("Vertices");if(!isNumberArray(r,null))return;const i=this.data.vertices=Float32Array.from(r);if(!this.appearance){const e=getPdfColorArray(this.color,[0,0,0]),r=t.get("CA");let n,s=getRgbColor(t.getArray("IC"),null);s&&(s=getPdfColorArray(s));n=s?this.color?s.every((t,a)=>t===e[a])?"f":"B":"f":"S";const o=this.borderStyle.width||1,c=2*o,l=[1/0,1/0,-1/0,-1/0];for(let e=0,t=i.length;e{for(let t=0,a=i.length;t{for(const t of this.data.inkLists){for(let a=0,r=t.length;a0){const e=new Dict(t);g.set("BS",e);e.set("W",d)}g.setIfArray("C",getPdfColorArray(n));g.setIfNumber("CA",o);if(r||a){const e=new Dict(t);g.set("AP",e);e.set("N",a||r)}return g}static async createNewAppearanceStream(e,t,a){if(e.outlines)return this.createNewAppearanceStreamForHighlight(e,t,a);const{color:r,rect:i,paths:n,thickness:s,opacity:o}=e;if(!r)return null;const c=[`${s} w 1 J 1 j`,`${getPdfColor(r,!1)}`];1!==o&&c.push("/R0 gs");for(const e of n.lines){c.push(`${numberToString(e[4])} ${numberToString(e[5])} m`);for(let t=6,a=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[7],t[2],t[3]]}})}}else this.data.popupRef=null}get overlaysTextContent(){return!0}static createNewDict(e,t,{apRef:a,ap:r}){const{color:i,date:n,oldAnnotation:s,opacity:o,rect:c,rotation:l,user:h,quadPoints:u}=e,d=s||new Dict(t);d.setIfNotExists("Type",Name.get("Annot"));d.setIfNotExists("Subtype",Name.get("Highlight"));d.set(s?"M":"CreationDate",`D:${getModificationDate(n)}`);d.setIfArray("Rect",c);d.setIfNotExists("F",4);d.setIfNotExists("Border",[0,0,0]);d.setIfNumber("Rotate",l);d.setIfArray("QuadPoints",u);d.setIfArray("C",getPdfColorArray(i));d.setIfNumber("CA",o);d.setIfDefined("T",stringToAsciiOrUTF16BE(h));if(a||r){const e=new Dict(t);d.set("AP",e);e.set("N",a||r)}return d}static async createNewAppearanceStream(e,t,a){const{color:r,rect:i,outlines:n,opacity:s}=e;if(!r)return null;const o=[`${getPdfColor(r,!0)}`,"/R0 gs"],c=[];for(const e of n){c.length=0;c.push(`${numberToString(e[0])} ${numberToString(e[1])} m`);for(let t=2,a=e.length;t{e.push(`${t[4]} ${t[5]+1.3} m`,`${t[6]} ${t[7]+1.3} l`,"S");return[t[0],t[7],t[2],t[3]]}})}}else this.data.popupRef=null}get overlaysTextContent(){return!0}}class SquigglyAnnotation extends MarkupAnnotation{constructor(e){super(e);const{dict:t,xref:a}=e;this.data.annotationType=M.SQUIGGLY;if(this.data.quadPoints=getQuadPoints(t,null)){if(!this.appearance){const e=getPdfColorArray(this.color,[0,0,0]),r=t.get("CA");this._setDefaultAppearance({xref:a,extra:"[] 0 d 1 w",strokeColor:e,strokeAlpha:r,pointsCallback:(e,t)=>{const a=(t[1]-t[5])/6;let r=a,i=t[4];const n=t[5],s=t[6];e.push(`${i} ${n+r} m`);do{i+=2;r=0===r?a:0;e.push(`${i} ${n+r} l`)}while(i{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[7],t[2],t[3]]}})}}else this.data.popupRef=null}get overlaysTextContent(){return!0}}class StampAnnotation extends MarkupAnnotation{#Re=null;constructor(e){super(e);this.data.annotationType=M.STAMP;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!0;this.#Re??=this.data.hasOwnCanvas;this.data.hasOwnCanvas=!0;return!0}if(null!==this.#Re){this.data.hasOwnCanvas=this.#Re;this.#Re=null}return!t?.has(this.data.id)}static async createImage(e,t){const{width:a,height:r}=e,i=new OffscreenCanvas(a,r),n=i.getContext("2d",{alpha:!0});n.drawImage(e,0,0);const s=n.getImageData(0,0,a,r).data,o=new Uint32Array(s.buffer),c=o.some(FeatureTest.isLittleEndian?e=>e>>>24!=255:e=>!!(255&~e));if(c){n.fillStyle="white";n.fillRect(0,0,a,r);n.drawImage(e,0,0)}const l=i.convertToBlob({type:"image/jpeg",quality:1}).then(e=>e.arrayBuffer()),h=Name.get("XObject"),u=Name.get("Image"),d=new Dict(t);d.set("Type",h);d.set("Subtype",u);d.set("BitsPerComponent",8);d.setIfName("ColorSpace","DeviceRGB");d.setIfName("Filter","DCTDecode");d.set("BBox",[0,0,a,r]);d.set("Width",a);d.set("Height",r);let f=null;if(c){const e=new Uint8Array(o.length);if(FeatureTest.isLittleEndian)for(let t=0,a=o.length;t>>24;else for(let t=0,a=o.length;t=0&&n<=1?n:null}}const ac={get r(){return shadow(this,"r",new Uint8Array([7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21]))},get k(){return shadow(this,"k",new Int32Array([-680876936,-389564586,606105819,-1044525330,-176418897,1200080426,-1473231341,-45705983,1770035416,-1958414417,-42063,-1990404162,1804603682,-40341101,-1502002290,1236535329,-165796510,-1069501632,643717713,-373897302,-701558691,38016083,-660478335,-405537848,568446438,-1019803690,-187363961,1163531501,-1444681467,-51403784,1735328473,-1926607734,-378558,-2022574463,1839030562,-35309556,-1530992060,1272893353,-155497632,-1094730640,681279174,-358537222,-722521979,76029189,-640364487,-421815835,530742520,-995338651,-198630844,1126891415,-1416354905,-57434055,1700485571,-1894986606,-1051523,-2054922799,1873313359,-30611744,-1560198380,1309151649,-145523070,-1120210379,718787259,-343485551]))}};function calculateMD5(e,t,a){let r=1732584193,i=-271733879,n=-1732584194,s=271733878;const o=a+72&-64,c=new Uint8Array(o);let l,h;for(l=0;l>5&255;c[l++]=a>>13&255;c[l++]=a>>21&255;c[l++]=a>>>29&255;l+=3;const d=new Int32Array(16),{k:f,r:g}=ac;for(l=0;l>>32-n)|0;a=r}r=r+a|0;i=i+o|0;n=n+u|0;s=s+p|0}return new Uint8Array([255&r,r>>8&255,r>>16&255,r>>>24&255,255&i,i>>8&255,i>>16&255,i>>>24&255,255&n,n>>8&255,n>>16&255,n>>>24&255,255&s,s>>8&255,s>>16&255,s>>>24&255])}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 a=t.firstChild;return"value"===a?.nodeName?t.children.map(e=>decodeString(e.textContent)):decodeString(t.textContent)}}class SingleIntersector{#Ee;minX=1/0;minY=1/0;maxX=-1/0;maxY=-1/0;#Pe=null;#Le=[];#_e=[];#Ue=-1;#je=!1;constructor(e){this.#Ee=e;const t=e.data.quadPoints;if(t){for(let e=0,a=t.length;e8&&(this.#Pe=t)}else[this.minX,this.minY,this.maxX,this.maxY]=e.data.rect}#Xe(e,t){if(this.minX>=e||this.maxX<=e||this.minY>=t||this.maxY<=t)return!1;const a=this.#Pe;if(!a)return!0;if(this.#Ue>=0){const r=this.#Ue;if(!(a[r]>=e||a[r+2]<=e||a[r+5]>=t||a[r+1]<=t))return!0;this.#Ue=-1}for(let r=0,i=a.length;r=e||a[r+2]<=e||a[r+5]>=t||a[r+1]<=t)){this.#Ue=r;return!0}return!1}addGlyph(e,t,a){if(!this.#Xe(e,t)){this.disableExtraChars();return!1}if(this.#_e.length>0){this.#Le.push(this.#_e.join(""));this.#_e.length=0}this.#Le.push(a);this.#je=!0;return!0}addExtraChar(e){this.#je&&this.#_e.push(e)}disableExtraChars(){if(this.#je){this.#je=!1;this.#_e.length=0}}setText(){this.#Ee.data.overlaidText=this.#Le.join("")}}const rc=64;class Intersector{#qe=[];#He=[];#We;#Ge;#ze;#$e;#Ve;#Ke;constructor(e){let t=1/0,a=1/0,r=-1/0,i=-1/0;const n=this.#qe;for(const s of e){if(!s.data.quadPoints&&!s.data.rect)continue;const e=new SingleIntersector(s);n.push(e);t=Math.min(t,e.minX);a=Math.min(a,e.minY);r=Math.max(r,e.maxX);i=Math.max(i,e.maxY)}this.#We=t;this.#ze=a;this.#Ge=r;this.#$e=i;this.#Ve=63/(r-t);this.#Ke=63/(i-a);for(const e of n){const t=this.#Je(e.minX,e.minY),a=this.#Je(e.maxX,e.maxY),r=(a-t)%rc,i=Math.floor((a-t)/rc);for(let a=t;a<=t+i*rc;a+=rc)for(let t=0;t<=r;t++){let r=this.#He[a+t];r||(this.#He[a+t]=r=[]);r.push(e)}}}#Je(e,t){return Math.floor((e-this.#We)*this.#Ve)+Math.floor((t-this.#ze)*this.#Ke)*rc}addGlyph(e,t,a,r){const i=e[4]+t/2,n=e[5]+a/2;if(ithis.#Ge||n>this.#$e)return;const s=this.#He[this.#Je(i,n)];if(s)for(const e of s)e.addGlyph(i,n,r)}addExtraChar(e){for(const t of this.#qe)t.addExtraChar(e)}setText(){for(const e of this.#qe)e.setText()}}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}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}}rotateRight(e){let t,a;if(32&e){a=this.low;t=this.high}else{t=this.low;a=this.high}e&=31;this.low=t>>>e|a<<32-e;this.high=a>>>e|t<<32-e}not(){this.high=~this.high;this.low=~this.low}add(e){const t=(this.low>>>0)+(e.low>>>0);let a=(this.high>>>0)+(e.high>>>0);t>4294967295&&(a+=1);this.low=0|t;this.high=0|a}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 ic={get k(){return shadow(this,"k",[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)])}};function ch(e,t,a,r,i){e.assign(t);e.and(a);i.assign(t);i.not();i.and(r);e.xor(i)}function maj(e,t,a,r,i){e.assign(t);e.and(a);i.assign(t);i.and(r);e.xor(i);i.assign(a);i.and(r);e.xor(i)}function sigma(e,t,a){e.assign(t);e.rotateRight(28);a.assign(t);a.rotateRight(34);e.xor(a);a.assign(t);a.rotateRight(39);e.xor(a)}function sigmaPrime(e,t,a){e.assign(t);e.rotateRight(14);a.assign(t);a.rotateRight(18);e.xor(a);a.assign(t);a.rotateRight(41);e.xor(a)}function littleSigma(e,t,a){e.assign(t);e.rotateRight(1);a.assign(t);a.rotateRight(8);e.xor(a);a.assign(t);a.shiftRight(7);e.xor(a)}function littleSigmaPrime(e,t,a){e.assign(t);e.rotateRight(19);a.assign(t);a.rotateRight(61);e.xor(a);a.assign(t);a.shiftRight(6);e.xor(a)}function calculateSHA512(e,t,a,r=!1){let i,n,s,o,c,l,h,u;if(r){i=new Word64(3418070365,3238371032);n=new Word64(1654270250,914150663);s=new Word64(2438529370,812702999);o=new Word64(355462360,4144912697);c=new Word64(1731405415,4290775857);l=new Word64(2394180231,1750603025);h=new Word64(3675008525,1694076839);u=new Word64(1203062813,3204075428)}else{i=new Word64(1779033703,4089235720);n=new Word64(3144134277,2227873595);s=new Word64(1013904242,4271175723);o=new Word64(2773480762,1595750129);c=new Word64(1359893119,2917565137);l=new Word64(2600822924,725511199);h=new Word64(528734635,4215389547);u=new Word64(1541459225,327033209)}const d=128*Math.ceil((a+17)/128),f=new Uint8Array(d);let g,p;for(g=0;g>>29&255;f[g++]=a>>21&255;f[g++]=a>>13&255;f[g++]=a>>5&255;f[g++]=a<<3&255;const b=new Array(80);for(g=0;g<80;g++)b[g]=new Word64(0,0);const{k:y}=ic;let w=new Word64(0,0),x=new Word64(0,0),S=new Word64(0,0),k=new Word64(0,0),C=new Word64(0,0),v=new Word64(0,0),F=new Word64(0,0),T=new Word64(0,0);const O=new Word64(0,0),M=new Word64(0,0),D=new Word64(0,0),R=new Word64(0,0);let N,E;for(g=0;g>>t|e<<32-t}function calculate_sha256_ch(e,t,a){return e&t^~e&a}function calculate_sha256_maj(e,t,a){return e&t^e&a^t&a}function calculate_sha256_sigma(e){return rotr(e,2)^rotr(e,13)^rotr(e,22)}function calculate_sha256_sigmaPrime(e){return rotr(e,6)^rotr(e,11)^rotr(e,25)}function calculate_sha256_littleSigma(e){return rotr(e,7)^rotr(e,18)^e>>>3}function calculate_sha256_littleSigmaPrime(e){return rotr(e,17)^rotr(e,19)^e>>>10}function calculateSHA256(e,t,a){let r=1779033703,i=3144134277,n=1013904242,s=2773480762,o=1359893119,c=2600822924,l=528734635,h=1541459225;const u=64*Math.ceil((a+9)/64),d=new Uint8Array(u);let f,g;for(f=0;f>>29&255;d[f++]=a>>21&255;d[f++]=a>>13&255;d[f++]=a>>5&255;d[f++]=a<<3&255;const m=new Uint32Array(64),{k:b}=nc;for(f=0;f>24&255,r>>16&255,r>>8&255,255&r,i>>24&255,i>>16&255,i>>8&255,255&i,n>>24&255,n>>16&255,n>>8&255,255&n,s>>24&255,s>>16&255,s>>8&255,255&s,o>>24&255,o>>16&255,o>>8&255,255&o,c>>24&255,c>>16&255,c>>8&255,255&c,l>>24&255,l>>16&255,l>>8&255,255&l,h>>24&255,h>>16&255,h>>8&255,255&h])}class DecryptStream extends DecodeStream{constructor(e,t,a){super(t);this.stream=e;this.dict=e.dict;this.decrypt=a;this.nextChunk=null;this.initialized=!1}readBlock(){let e;if(this.initialized)e=this.nextChunk;else{e=this.stream.getBytes(512);this.initialized=!0}if(!e?.length){this.eof=!0;return}this.nextChunk=this.stream.getBytes(512);const t=this.nextChunk?.length>0;e=(0,this.decrypt)(e,!t);const a=this.bufferLength,r=a+e.length;this.ensureBuffer(r).set(e,a);this.bufferLength=r}}class ARCFourCipher{constructor(e){this.a=0;this.b=0;const t=new Uint8Array(256),a=e.length;for(let e=0;e<256;++e)t[e]=e;for(let r=0,i=0;r<256;++r){const n=t[r];i=i+n+e[r%a]&255;t[r]=t[i];t[i]=n}this.s=t}encryptBlock(e){let t=this.a,a=this.b;const r=this.s,i=e.length,n=new Uint8Array(i);for(let s=0;st<128?t<<1:t<<1^27);constructor(){this.buffer=new Uint8Array(16);this.bufferPosition=0}_expandKey(e){unreachable("Cannot call `_expandKey` on the base class")}_decrypt(e,t){let a,r,i;const n=new Uint8Array(16);n.set(e);for(let e=0,a=this._keySize;e<16;++e,++a)n[e]^=t[a];for(let e=this._cyclesOfRepetition-1;e>=1;--e){a=n[13];n[13]=n[9];n[9]=n[5];n[5]=n[1];n[1]=a;a=n[14];r=n[10];n[14]=n[6];n[10]=n[2];n[6]=a;n[2]=r;a=n[15];r=n[11];i=n[7];n[15]=n[3];n[11]=a;n[7]=r;n[3]=i;for(let e=0;e<16;++e)n[e]=this._inv_s[n[e]];for(let a=0,r=16*e;a<16;++a,++r)n[a]^=t[r];for(let e=0;e<16;e+=4){const t=this._mix[n[e]],r=this._mix[n[e+1]],i=this._mix[n[e+2]],s=this._mix[n[e+3]];a=t^r>>>8^r<<24^i>>>16^i<<16^s>>>24^s<<8;n[e]=a>>>24&255;n[e+1]=a>>16&255;n[e+2]=a>>8&255;n[e+3]=255&a}}a=n[13];n[13]=n[9];n[9]=n[5];n[5]=n[1];n[1]=a;a=n[14];r=n[10];n[14]=n[6];n[10]=n[2];n[6]=a;n[2]=r;a=n[15];r=n[11];i=n[7];n[15]=n[3];n[11]=a;n[7]=r;n[3]=i;for(let e=0;e<16;++e){n[e]=this._inv_s[n[e]];n[e]^=t[e]}return n}_encrypt(e,t){const a=this._s;let r,i,n;const s=new Uint8Array(16);s.set(e);for(let e=0;e<16;++e)s[e]^=t[e];for(let e=1;e=r;--a)if(e[a]!==t){t=0;break}o-=t;n[n.length-1]=e.subarray(0,16-t)}}const c=new Uint8Array(o);for(let e=0,t=0,a=n.length;e=256&&(o=255&(27^o))}for(let t=0;t<4;++t){a[e]=r^=a[e-32];e++;a[e]=i^=a[e-32];e++;a[e]=n^=a[e-32];e++;a[e]=s^=a[e-32];e++}}return a}}class PDFBase{_hash(e,t,a){unreachable("Abstract method `_hash` called")}checkOwnerPassword(e,t,a,r){const i=new Uint8Array(e.length+56);i.set(e,0);i.set(t,e.length);i.set(a,e.length+t.length);return isArrayEqual(this._hash(e,i,a),r)}checkUserPassword(e,t,a){const r=new Uint8Array(e.length+8);r.set(e,0);r.set(t,e.length);return isArrayEqual(this._hash(e,r,[]),a)}getOwnerKey(e,t,a,r){const i=new Uint8Array(e.length+56);i.set(e,0);i.set(t,e.length);i.set(a,e.length+t.length);const n=this._hash(e,i,a);return new AES256Cipher(n).decryptBlock(r,!1,new Uint8Array(16))}getUserKey(e,t,a){const r=new Uint8Array(e.length+8);r.set(e,0);r.set(t,e.length);const i=this._hash(e,r,[]);return new AES256Cipher(i).decryptBlock(a,!1,new Uint8Array(16))}}class PDF17 extends PDFBase{_hash(e,t,a){return calculateSHA256(t,0,t.length)}}class PDF20 extends PDFBase{_hash(e,t,a){let r=calculateSHA256(t,0,t.length).subarray(0,32),i=[0],n=0;for(;n<64||i.at(-1)>n-32;){const t=e.length+r.length+a.length,s=new Uint8Array(t);let o=0;s.set(e,o);o+=e.length;s.set(r,o);o+=r.length;s.set(a,o);const c=new Uint8Array(64*t);for(let e=0,a=0;e<64;e++,a+=t)c.set(s,a);i=new AES128Cipher(r.subarray(0,16)).encrypt(c,r.subarray(16,32));const l=Math.sumPrecise(i.slice(0,16))%3;0===l?r=calculateSHA256(i,0,i.length):1===l?r=calculateSHA384(i,0,i.length):2===l&&(r=calculateSHA512(i,0,i.length));n++}return r.subarray(0,32)}}class CipherTransform{constructor(e,t){this.StringCipherConstructor=e;this.StreamCipherConstructor=t}createStream(e,t){const a=new this.StreamCipherConstructor;return new DecryptStream(e,t,function cipherTransformDecryptStream(e,t){return a.decryptBlock(e,t)})}decryptString(e){const t=new this.StringCipherConstructor;let a=stringToBytes(e);a=t.decryptBlock(a,!0);return bytesToString(a)}encryptString(e){const t=new this.StringCipherConstructor;if(t instanceof AESBaseCipher){const a=16-e.length%16;e+=String.fromCharCode(a).repeat(a);const r=new Uint8Array(16);crypto.getRandomValues(r);let i=stringToBytes(e);i=t.encrypt(i,r);const n=new Uint8Array(16+i.length);n.set(r);n.set(i,16);return bytesToString(n)}let a=stringToBytes(e);a=t.encrypt(a);return bytesToString(a)}}class CipherTransformFactory{static get _defaultPasswordBytes(){return shadow(this,"_defaultPasswordBytes",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]))}#Ye(e,t,a,r,i,n,s,o,c,l,h,u){if(t){const e=Math.min(127,t.length);t=t.subarray(0,e)}else t=[];const d=6===e?new PDF20:new PDF17;return d.checkUserPassword(t,o,s)?d.getUserKey(t,c,h):t.length&&d.checkOwnerPassword(t,r,n,a)?d.getOwnerKey(t,i,n,l):null}#Ze(e,t,a,r,i,n,s,o){const c=40+a.length+e.length,l=new Uint8Array(c);let h,u,d=0;if(t){u=Math.min(32,t.length);for(;d>8&255;l[d++]=i>>16&255;l[d++]=i>>>24&255;l.set(e,d);d+=e.length;if(n>=4&&!o){l.fill(255,d,d+4);d+=4}let f=calculateMD5(l,0,d);const g=s>>3;if(n>=3)for(h=0;h<50;++h)f=calculateMD5(f,0,g);const p=f.subarray(0,g);let m,b;if(n>=3){d=0;l.set(CipherTransformFactory._defaultPasswordBytes,d);d+=32;l.set(e,d);d+=e.length;m=new ARCFourCipher(p);b=m.encryptBlock(calculateMD5(l,0,d));u=p.length;const t=new Uint8Array(u);for(h=1;h<=19;++h){for(let e=0;er[t]===e)?p:null}#Qe(e,t,a,r){const i=new Uint8Array(32);let n=0;const s=Math.min(32,e.length);for(;n>3;if(a>=3)for(o=0;o<50;++o)c=calculateMD5(c,0,c.length);let h,u;if(a>=3){u=t;const e=new Uint8Array(l);for(o=19;o>=0;o--){for(let t=0;t>8&255;n[s++]=e>>16&255;n[s++]=255&t;n[s++]=t>>8&255;if(r){n[s++]=115;n[s++]=65;n[s++]=108;n[s++]=84}return calculateMD5(n,0,s).subarray(0,Math.min(i+5,16))}#tt(e,t,a,r,i){if(!(t instanceof Name))throw new FormatError("Invalid crypt filter name.");const n=this,s=e.get(t.name),o=s?.get("CFM");if(!o||"None"===o.name)return function(){return new NullCipher};if("V2"===o.name)return function(){return new ARCFourCipher(n.#et(a,r,i,!1))};if("AESV2"===o.name)return function(){return new AES128Cipher(n.#et(a,r,i,!0))};if("AESV3"===o.name)return function(){return new AES256Cipher(i)};throw new FormatError("Unknown crypto method")}constructor(e,t,a){const r=e.get("Filter");if(!isName(r,"Standard"))throw new FormatError("unknown encryption method");this.filterName=r.name;this.dict=e;const i=e.get("V");if(!Number.isInteger(i)||1!==i&&2!==i&&4!==i&&5!==i)throw new FormatError("unsupported encryption algorithm");this.algorithm=i;let n=e.get("Length");if(!n)if(i<=3)n=40;else{const t=e.get("CF"),a=e.get("StmF");if(t instanceof Dict&&a instanceof Name){t.suppressEncryption=!0;const e=t.get(a.name);n=e?.get("Length")||128;n<40&&(n<<=3)}}if(!Number.isInteger(n)||n<40||n%8!=0)throw new FormatError("invalid key length");const s=stringToBytes(e.get("O")),o=stringToBytes(e.get("U")),c=s.subarray(0,32),l=o.subarray(0,32),h=e.get("P"),u=e.get("R"),d=(4===i||5===i)&&!1!==e.get("EncryptMetadata");this.encryptMetadata=d;const f=stringToBytes(t);let g,p;if(a){if(6===u)try{a=utf8StringToString(a)}catch{warn("CipherTransformFactory: Unable to convert UTF8 encoded password.")}g=stringToBytes(a)}if(5!==i)p=this.#Ze(f,g,c,l,h,u,n,d);else{const t=s.subarray(32,40),a=s.subarray(40,48),r=o.subarray(0,48),i=o.subarray(32,40),n=o.subarray(40,48),h=stringToBytes(e.get("OE")),d=stringToBytes(e.get("UE")),f=stringToBytes(e.get("Perms"));p=this.#Ye(u,g,c,t,a,r,l,i,n,h,d,f)}if(!p){if(!a)throw new PasswordException("No password given",Yt);const e=this.#Qe(g,c,u,n);p=this.#Ze(f,e,c,l,h,u,n,d)}if(!p)throw new PasswordException("Incorrect Password",Zt);if(4===i&&p.length<16){this.encryptionKey=new Uint8Array(16);this.encryptionKey.set(p)}else this.encryptionKey=p;if(i>=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.#tt(this.cf,this.strf,e,t,this.encryptionKey),this.#tt(this.cf,this.stmf,e,t,this.encryptionKey));const a=this.#et(e,t,this.encryptionKey,!1),cipherConstructor=function(){return new ARCFourCipher(a)};return new CipherTransform(cipherConstructor,cipherConstructor)}}class XRef{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[s,o]=n;if(!Number.isInteger(s)||!Number.isInteger(o))throw new FormatError(`Invalid XRef range fields: ${s}, ${o}`);if(!Number.isInteger(a)||!Number.isInteger(r)||!Number.isInteger(i))throw new FormatError(`Invalid XRef entry fields length: ${s}, ${o}`);for(let n=t.entryNum;n=e.length);){a+=String.fromCharCode(r);r=e[t]}return a}function skipUntil(e,t,a){const r=a.length,i=e.length;let n=0;for(;t=r)break;t++;n++}return n}const e=/\b(endobj|\d+\s+\d+\s+obj|xref|trailer\s*<<)\b/g,t=/\b(startxref|\d+\s+\d+\s+obj)\b/g,a=/^(\d+)\s+(\d+)\s+obj\b/,r=new Uint8Array([116,114,97,105,108,101,114]),i=new Uint8Array([115,116,97,114,116,120,114,101,102]),n=new Uint8Array([47,88,82,101,102]);this.entries.length=0;this._cacheMap.clear();const s=this.stream;s.pos=0;const o=s.getBytes(),c=bytesToString(o),l=o.length;let h=s.start;const u=[],d=[];for(;h=l)break;f=o[h]}while(10!==f&&13!==f);continue}const g=readToken(o,h);let p;if(g.startsWith("xref")&&(4===g.length||/\s/.test(g[4]))){h+=skipUntil(o,h,r);u.push(h);h+=skipUntil(o,h,i)}else if(p=a.exec(g)){const t=0|p[1],a=0|p[2],r=h+g.length;let i,u=!1;if(this.entries[t]){if(this.entries[t].gen===a)try{new Parser({lexer:new Lexer(s.makeSubStream(r))}).getObj();u=!0}catch(e){e instanceof ParserEOFException?warn(`indexObjects -- checking object (${g}): "${e}".`):u=!0}}else u=!0;u&&(this.entries[t]={offset:h-s.start,gen:a,uncompressed:!0});e.lastIndex=r;const f=e.exec(c);if(f){i=e.lastIndex+1-h;if("endobj"!==f[1]){warn(`indexObjects: Found "${f[1]}" inside of another "obj", caused by missing "endobj" -- trying to recover.`);i-=f[1].length+1}}else i=l-h;const m=o.subarray(h,h+i),b=skipUntil(m,0,n);if(b0&&t[3]-t[1]>0)return t;warn(`Empty, or invalid, /${e} entry.`)}return null}get mediaBox(){return shadow(this,"mediaBox",this.#st("MediaBox")||sc)}get cropBox(){return shadow(this,"cropBox",this.#st("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 a=Util.intersect(e,t);if(a&&a[2]-a[0]>0&&a[3]-a[1]>0)return shadow(this,"view",a);warn("Empty /CropBox and /MediaBox intersection.")}return shadow(this,"view",t)}get rotate(){let e=this.#nt("Rotate")||0;e%90!=0?e=0:e>=360?e%=360:e<0&&(e=(e%360+360)%360);return shadow(this,"rotate",e)}#ot(e,t){if(!this.evaluatorOptions.ignoreErrors)throw e;warn(`getContentStream - ignoring sub-stream (${t}): "${e}".`)}async getContentStream(){const e=await this.pdfManager.ensure(this,"content");return e instanceof BaseStream?e:Array.isArray(e)?new StreamsSequenceStream(e,this.#ot.bind(this)):new NullStream}get xfaData(){return shadow(this,"xfaData",this.xfaFactory?{bbox:this.xfaFactory.getBoundingBox(this.pageIndex)}:null)}async#ct(e,t,a){const r=[];for(const i of e)if(i.id){const e=Ref.fromString(i.id);if(!e){warn(`A non-linked annotation cannot be modified: ${i.id}`);continue}if(i.deleted){t.put(e,e);if(i.popupRef){const e=Ref.fromString(i.popupRef);e&&t.put(e,e)}continue}if(i.popup?.deleted){const e=Ref.fromString(i.popupRef);e&&t.put(e,e)}a?.put(e);i.ref=e;r.push(this.xref.fetchAsync(e).then(e=>{e instanceof Dict&&(i.oldAnnotation=e.clone())},()=>{warn(`Cannot fetch \`oldAnnotation\` for: ${e}.`)}));delete i.id}await Promise.all(r)}async saveNewAnnotations(e,t,a,r,i){if(this.xfaFactory)throw new Error("XFA: Cannot save new annotations.");const n=this.#it(e),s=new RefSetCache,o=new RefSet;await this.#ct(a,s,o);const c=this.pageDict,l=this.annotations.filter(e=>!(e instanceof Ref&&s.has(e))),h=await AnnotationFactory.saveNewAnnotations(n,t,a,r,i);for(const{ref:e}of h.annotations)e instanceof Ref&&!o.has(e)&&l.push(e);const u=c.clone();u.set("Annots",l);i.put(this.ref,{data:u});for(const e of s)i.put(e,{data:null})}async save(e,t,a,r){const i=this.#it(e),n=await this._parsedAnnotations,s=[];for(const e of n)s.push(e.save(i,t,a,r).catch(function(e){warn(`save - ignoring annotation data during "${t.name}" task: "${e}".`);return null}));return Promise.all(s)}async loadResources(e){await(this.#rt??=this.pdfManager.ensure(this,"resources"));await ObjectLoader.load(this.resources,e,this.xref)}async#lt(e,t){const a=e?.get("Resources");if(!(a instanceof Dict&&a.size))return this.resources;await ObjectLoader.load(a,t,this.xref);return Dict.merge({xref:this.xref,dictArray:[a,this.resources],mergeSubDicts:!0})}async getOperatorList({handler:e,sink:t,task:a,intent:r,cacheKey:i,annotationStorage:c=null,modifiedIds:d=null}){const g=this.getContentStream(),p=this.loadResources(ga),m=this.#it(e),b=this.xfaFactory?null:getNewAnnotationsMap(c),y=b?.get(this.pageIndex);let w=Promise.resolve(null),x=null;if(y){const e=this.pdfManager.ensureDoc("annotationGlobals");let t;const r=new Set;for(const{bitmapId:e,bitmap:t}of y)!e||t||r.has(e)||r.add(e);const{isOffscreenCanvasSupported:i}=this.evaluatorOptions;if(r.size>0){const e=y.slice();for(const[t,a]of c)t.startsWith(f)&&a.bitmap&&r.has(a.bitmapId)&&e.push(a);t=AnnotationFactory.generateImages(e,this.xref,i)}else t=AnnotationFactory.generateImages(y,this.xref,i);x=new RefSet;w=Promise.all([e,this.#ct(y,x,null)]).then(([e])=>e?AnnotationFactory.printNewAnnotations(e,m,a,y,t):null)}const S=Promise.all([g,p]).then(async([n])=>{const s=await this.#lt(n.dict,ga),o=new OperatorList(r,t);e.send("StartRenderPage",{transparency:m.hasBlendModes(s,this.nonBlendModesSet),pageIndex:this.pageIndex,cacheKey:i});await m.getOperatorList({stream:n,task:a,resources:s,operatorList:o});return o});let[k,C,v]=await Promise.all([S,this._parsedAnnotations,w]);if(v){C=C.filter(e=>!(e.ref&&x.has(e.ref)));for(let e=0,t=v.length;ee.ref&&isRefsEqual(e.ref,a.refToReplace));if(r>=0){C.splice(r,1,a);v.splice(e--,1);t--}}}C=C.concat(v)}if(0===C.length||r&h){k.flush(!0);return{length:k.totalLength}}const F=!!(r&l),T=!!(r&u),O=!!(r&n),M=!!(r&s),D=!!(r&o),R=[];for(const e of C)(O||M&&e.mustBeViewed(c,F)&&e.mustBeViewedWhenEditing(T,d)||D&&e.mustBePrinted(c))&&R.push(e.getOperatorList(m,a,r,c).catch(function(e){warn(`getOperatorList - ignoring annotation data during "${a.name}" task: "${e}".`);return{opList:null,separateForm:!1,separateCanvas:!1}}));const N=await Promise.all(R);let E=!1,L=!1;for(const{opList:e,separateForm:t,separateCanvas:a}of N){k.addOpList(e);E||=t;L||=a}k.flush(!0,{form:E,canvas:L});return{length:k.totalLength}}async extractTextContent({handler:e,task:t,includeMarkedContent:a,disableNormalization:r,sink:i,intersector:n=null}){const s=this.getContentStream(),o=this.loadResources(pa),c=this.pdfManager.ensureCatalog("lang"),[l,,h]=await Promise.all([s,o,c]),u=await this.#lt(l.dict,pa);return this.#it(e).getTextContent({stream:l,task:t,resources:u,includeMarkedContent:a,disableNormalization:r,sink:i,viewBox:this.view,lang:h,intersector:n})}async getStructTree(){const e=await this.pdfManager.ensureCatalog("structTreeRoot");if(!e)return null;await this._parsedAnnotations;try{const t=await this.pdfManager.ensure(this,"_parseStructTree",[e]);return await this.pdfManager.ensure(t,"serializable")}catch(e){warn(`getStructTree: "${e}".`);return null}}_parseStructTree(e){const t=new StructTreePage(e,this.pageDict);t.parse(this.ref);return t}async getAnnotationsData(e,t,a){const r=await this._parsedAnnotations;if(0===r.length)return r;const i=[],c=[];let l;const h=!!(a&n),u=!!(a&s),d=!!(a&o),f=[];for(const a of r){const r=h||u&&a.viewable;(r||d&&a.printable)&&i.push(a.data);if(a.hasTextContent&&r){l??=this.#it(e);c.push(a.extractTextContent(l,t,[-1/0,-1/0,1/0,1/0]).catch(function(e){warn(`getAnnotationsData - ignoring textContent during "${t.name}" task: "${e}".`)}))}else a.overlaysTextContent&&r&&f.push(a)}if(f.length>0){const a=new Intersector(f);c.push(this.extractTextContent({handler:e,task:t,includeMarkedContent:!1,disableNormalization:!1,sink:null,viewBox:this.view,lang:null,intersector:a}).then(()=>{a.setText()}))}await Promise.all(c);return i}get annotations(){const e=this.#nt("Annots");return shadow(this,"annotations",Array.isArray(e)?e:[])}get _parsedAnnotations(){const e=this.pdfManager.ensure(this,"annotations").then(async e=>{if(0===e.length)return e;const[t,a]=await Promise.all([this.pdfManager.ensureDoc("annotationGlobals"),this.pdfManager.ensureDoc("fieldObjects")]);if(!t)return[];const r=a?.orphanFields,i=[];for(const a of e)i.push(AnnotationFactory.create(this.xref,a,t,this._localIdFactory,!1,r,null,this.ref).catch(function(e){warn(`_parsedAnnotations: "${e}".`);return null}));const n=[];let s,o;for(const e of await Promise.all(i))e&&(e instanceof WidgetAnnotation?(o||=[]).push(e):e instanceof PopupAnnotation?(s||=[]).push(e):n.push(e));o&&n.push(...o);s&&n.push(...s);return n});this.#at=!0;return shadow(this,"_parsedAnnotations",e)}get jsActions(){return shadow(this,"jsActions",collectActions(this.xref,this.pageDict,se))}async collectAnnotationsByType(e,t,a,r,i){const{pageIndex:n}=this;if(this.#at){const e=await this._parsedAnnotations;for(const{data:t}of e)if(!a||a.has(t.annotationType)){t.pageIndex=n;r.push(Promise.resolve(t))}return}const s=await this.pdfManager.ensure(this,"annotations");for(const o of s)r.push(AnnotationFactory.create(this.xref,o,i,this._localIdFactory,!1,null,a,this.ref).then(async a=>{if(!a)return null;a.data.pageIndex=n;if(a.hasTextContent&&a.viewable){const r=this.#it(e);await a.extractTextContent(r,t,[-1/0,-1/0,1/0,1/0])}return a.data}).catch(function(e){warn(`collectAnnotationsByType: "${e}".`);return null}))}}const oc=new Uint8Array([37,80,68,70,45]),cc=new Uint8Array([115,116,97,114,116,120,114,101,102]),lc=new Uint8Array([101,110,100,111,98,106]);function find(e,t,a=1024,r=!1){const i=t.length,n=e.peekBytes(a),s=n.length-i;if(s<=0)return!1;if(r){const a=i-1;let r=n.length-1;for(;r>=a;){let s=0;for(;s=i){e.pos+=r-a;return!0}r--}}else{let a=0;for(;a<=s;){let r=0;for(;r=i){e.pos+=a;return!0}a++}}return!1}class PDFDocument{#ht=new Map;#ut=null;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);const a={font:0};this._globalIdFactory=class{static getDocId(){return`g_${e.docId}`}static createFontId(){return"f"+ ++a.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,lc)){e.skip(6);let a=e.peekByte();for(;isWhiteSpace(a);){e.pos++;a=e.peekByte()}t=e.pos-e.start}}else{const a=1024,r=cc.length;let i=!1,n=e.end;for(;!i&&n>0;){n-=a-r;n<0&&(n=0);e.pos=n;i=find(e,cc,a,!0)}if(i){e.skip(9);let a;do{a=e.getByte()}while(isWhiteSpace(a));let r="";for(;a>=32&&a<=57;){r+=String.fromCharCode(a);a=e.getByte()}t=parseInt(r,10);isNaN(t)&&(t=0)}}return shadow(this,"startXRef",t)}checkHeader(){const e=this.stream;e.reset();if(!find(e,oc))return;e.moveStart();e.skip(oc.length);let t,a="";for(;(t=e.getByte())>32&&a.length<7;)a+=String.fromCharCode(t);ua.test(a)?this.#ut=a:warn(`Invalid PDF header version: ${a}`)}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)}#dt(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.#dt(e.get("Kids"),t)}const a=isName(e.get("FT"),"Sig"),r=e.get("Rect"),i=Array.isArray(r)&&r.every(e=>0===e);return a&&i})}get _xfaStreams(){const{acroForm:e}=this.catalog;if(!e)return null;const t=e.get("XFA"),a=new Map(["xdp:xdp","template","datasets","config","connectionSet","localeSet","stylesheet","/xdp:xdp"].map(e=>[e,null]));if(t instanceof BaseStream&&!t.isEmpty){a.set("xdp:xdp",t);return a}if(!Array.isArray(t)||0===t.length)return null;for(let e=0,r=t.length;el.handleSetFont(r,[Name.get(e),1],null,h,t,d,a,i).catch(e=>{warn(`loadXfaFonts: "${e}".`);return null}),f=[];for(const[e,t]of i){const a=t.get("FontDescriptor");if(!(a instanceof Dict))continue;let r=a.get("FontFamily");r=r.replaceAll(/[ ]+(\d)/g,"$1");const i={fontFamily:r,fontWeight:a.get("FontWeight"),italicAngle:-a.get("ItalicAngle")};validateCSSFont(i)&&f.push(parseFont(e,null,i))}await Promise.all(f);const g=this.xfaFactory.setFonts(u);if(!g)return;n.ignoreErrors=!0;f.length=0;u.length=0;const p=new Set;for(const e of g)getXfaFontName(`${e}-Regular`)||p.add(e);p.size&&g.push("PdfJS-Fallback");for(const e of g)if(!p.has(e))for(const t of[{name:"Regular",fontWeight:400,italicAngle:0},{name:"Bold",fontWeight:700,italicAngle:0},{name:"Italic",fontWeight:400,italicAngle:12},{name:"BoldItalic",fontWeight:700,italicAngle:12}]){const a=`${e}-${t.name}`;f.push(parseFont(a,getXfaFontDict(a),{fontFamily:e,fontWeight:t.fontWeight,italicAngle:t.italicAngle}))}await Promise.all(f);this.xfaFactory.appendFonts(u,p)}loadXfaResources(e,t){return Promise.all([this.#gt(e,t).catch(()=>{}),this.#ft()])}serializeXfaData(e){return this.xfaFactory?this.xfaFactory.serializeData(e):null}get version(){return this.catalog.version||this.#ut}get formInfo(){const e={hasFields:!1,hasAcroForm:!1,hasXfa:!1,hasSignatures:!1},{acroForm:t}=this.catalog;if(!t)return shadow(this,"formInfo",e);try{const a=t.get("Fields"),r=Array.isArray(a)&&a.length>0;e.hasFields=r;const i=t.get("XFA");e.hasXfa=Array.isArray(i)&&i.length>0||i instanceof BaseStream&&!i.isEmpty;const n=!!(1&t.get("SigFlags")),s=n&&this.#dt(a);e.hasAcroForm=r&&!s;e.hasSignatures=n}catch(e){if(e instanceof MissingDataException)throw e;warn(`Cannot fetch form information: "${e}".`)}return shadow(this,"formInfo",e)}get documentInfo(){const{catalog:e,formInfo:t,xref:a}=this,r={PDFFormatVersion:this.version,Language:e.lang,EncryptFilterName:a.encrypt?.filterName??null,IsLinearized:!!this.linearization,IsAcroFormPresent:t.hasAcroForm,IsXFAPresent:t.hasXfa,IsCollectionPresent:!!e.collection,IsSignaturesPresent:t.hasSignatures};let i;try{i=a.trailer.get("Info")}catch(e){if(e instanceof MissingDataException)throw e;info("The document information dictionary is invalid.")}if(!(i instanceof Dict))return shadow(this,"documentInfo",r);for(const[e,t]of i){switch(e){case"Title":case"Author":case"Subject":case"Keywords":case"Creator":case"Producer":case"CreationDate":case"ModDate":if("string"==typeof t){r[e]=stringToPDFString(t);continue}break;case"Trapped":if(t instanceof Name){r[e]=t;continue}break;default:let a;switch(typeof t){case"string":a=stringToPDFString(t);break;case"number":case"boolean":a=t;break;default:t instanceof Name&&(a=t)}if(void 0===a){warn(`Bad value, for custom key "${e}", in Info: ${t}.`);continue}r.Custom??=Object.create(null);r.Custom[e]=a;continue}warn(`Bad value, for key "${e}", in Info: ${t}.`)}return shadow(this,"documentInfo",r)}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 a,r;if(Array.isArray(t)&&validate(t[0])){a=stringToBytes(t[0]);t[1]!==t[0]&&validate(t[1])&&(r=stringToBytes(t[1]))}else a=calculateMD5(this.stream.getByteRange(0,1024),0,1024);return shadow(this,"fingerprints",[toHexUtil(a),r?toHexUtil(r):null])}async#pt(e){const{catalog:t,linearization:a,xref:r}=this,i=Ref.get(a.objectNumberFirst,0);try{const e=await r.fetchAsync(i);if(e instanceof Dict){let a=e.getRaw("Type");a instanceof Ref&&(a=await r.fetchAsync(a));if(isName(a,"Page")||!e.has("Type")&&!e.has("Kids")&&e.has("Contents")){t.pageKidsCountCache.has(i)||t.pageKidsCountCache.put(i,1);t.pageIndexCache.has(i)||t.pageIndexCache.put(i,0);return[e,i]}}throw new FormatError("The Linearization dictionary doesn't point to a valid Page dictionary.")}catch(a){warn(`_getLinearizationPage: "${a.message}".`);return t.getPageDict(e)}}getPage(e){const t=this.#ht.get(e);if(t)return t;const{catalog:a,linearization:r,xfaFactory:i}=this;let n;n=i?Promise.resolve([Dict.empty,null]):r?.pageFirst===e?this.#pt(e):a.getPageDict(e);n=n.then(([t,r])=>new Page({pdfManager:this.pdfManager,xref:this.xref,pageIndex:e,pageDict:t,ref:r,globalIdFactory:this._globalIdFactory,fontCache:a.fontCache,builtInCMapCache:a.builtInCMapCache,standardFontDataCache:a.standardFontDataCache,globalColorSpaceCache:a.globalColorSpaceCache,globalImageCache:a.globalImageCache,systemFontCache:a.systemFontCache,nonBlendModesSet:a.nonBlendModesSet,xfaFactory:i}));this.#ht.set(e,n);return n}async checkFirstPage(e=!1){if(!e)try{await this.getPage(0)}catch(e){if(e instanceof XRefEntryException){this.#ht.delete(0);await this.cleanup();throw new XRefParseException}}}async checkLastPage(e=!1){const{catalog:t,pdfManager:a}=this;t.setActualNumPages();let r;try{await Promise.all([a.ensureDoc("xfaFactory"),a.ensureDoc("linearization"),a.ensureCatalog("numPages")]);if(this.xfaFactory)return;r=this.linearization?this.linearization.numPages:t.numPages;if(!Number.isInteger(r))throw new FormatError("Page count is not an integer.");if(r<=1)return;await this.getPage(r-1)}catch(i){this.#ht.delete(r-1);await this.cleanup();if(i instanceof XRefEntryException&&!e)throw new XRefParseException;warn(`checkLastPage - invalid /Pages tree /Count: ${r}.`);let n;try{n=await t.getAllPageDicts(e)}catch(a){if(a instanceof XRefEntryException&&!e)throw new XRefParseException;t.setActualNumPages(1);return}for(const[e,[r,i]]of n){let n;if(r instanceof Error){n=Promise.reject(r);n.catch(()=>{})}else n=Promise.resolve(new Page({pdfManager:a,xref:this.xref,pageIndex:e,pageDict:r,ref:i,globalIdFactory:this._globalIdFactory,fontCache:t.fontCache,builtInCMapCache:t.builtInCMapCache,standardFontDataCache:t.standardFontDataCache,globalColorSpaceCache:this.globalColorSpaceCache,globalImageCache:t.globalImageCache,systemFontCache:t.systemFontCache,nonBlendModesSet:t.nonBlendModesSet,xfaFactory:null}));this.#ht.set(e,n)}t.setActualNumPages(n.size)}}async fontFallback(e,t){const{catalog:a,pdfManager:r}=this;for(const i of await Promise.all(a.fontCache))if(i.loadedName===e){i.fallback(t,r.evaluatorOptions);return}}async cleanup(e=!1){return this.catalog?this.catalog.cleanup(e):clearGlobalCaches()}async#mt(e,t,a,r,i,n,s){const{xref:o}=this;if(!(a instanceof Ref)||n.has(a))return;n.put(a);const c=await o.fetchAsync(a);if(!(c instanceof Dict))return;let l=await c.getAsync("Subtype");l=l instanceof Name?l.name:null;if("Link"===l)return;if(c.has("T")){const t=stringToPDFString(await c.getAsync("T"));e=""===e?t:`${e}.${t}`}else{let a=c;for(;;){a=a.getRaw("Parent")||t;if(a instanceof Ref){if(n.has(a))break;a=await o.fetchAsync(a)}if(!(a instanceof Dict))break;if(a.has("T")){const t=stringToPDFString(await a.getAsync("T"));e=""===e?t:`${e}.${t}`;break}}}t&&!c.has("Parent")&&isName(c.get("Subtype"),"Widget")&&s.put(a,t);r.has(e)||r.set(e,[]);r.get(e).push(AnnotationFactory.create(o,a,i,null,!0,s,null,null).then(e=>e?.getFieldObject()).catch(function(e){warn(`#collectFieldObjects: "${e}".`);return null}));if(!c.has("Kids"))return;const h=await c.getAsync("Kids");if(Array.isArray(h))for(const t of h)await this.#mt(e,a,t,r,i,n,s)}get fieldObjects(){return shadow(this,"fieldObjects",this.pdfManager.ensureDoc("formInfo").then(async e=>{if(!e.hasFields)return null;const t=await this.annotationGlobals;if(!t)return null;const{acroForm:a}=t,r=new RefSet,i=Object.create(null),n=new Map,s=new RefSetCache;for(const e of a.get("Fields"))await this.#mt("",null,e,n,t,r,s);const o=[];for(const[e,t]of n)o.push(Promise.all(t).then(t=>{(t=t.filter(e=>!!e)).length>0&&(i[e]=t)}));await Promise.all(o);return{allFields:objectSize(i)>0?i:null,orphanFields:s}}))}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?.allFields&&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 a of e)a instanceof Ref&&t.push(a.toString());return shadow(this,"calculationOrderIds",t.length?t:null)}get annotationGlobals(){return shadow(this,"annotationGlobals",AnnotationFactory.createGlobals(this.pdfManager))}}class BasePdfManager{constructor({docBaseUrl:e,docId:t,enableXfa:a,evaluatorOptions:r,handler:i,password:n}){this._docBaseUrl=function parseDocBaseUrl(e){if(e){const t=createValidAbsoluteUrl(e);if(t)return t.href;warn(`Invalid absolute docBaseUrl: "${e}".`)}return null}(e);this._docId=t;this._password=n;this.enableXfa=a;r.isOffscreenCanvasSupported&&=FeatureTest.isOffscreenCanvasSupported;r.isImageDecoderSupported&&=FeatureTest.isImageDecoderSupported;this.evaluatorOptions=Object.freeze(r);ImageResizer.setOptions(r);JpegStream.setOptions(r);OperatorList.setOptions(r);const s={...r,handler:i};JpxImage.setOptions(s);IccColorSpace.setOptions(s);CmykICCBasedCS.setOptions(s)}get docId(){return this._docId}get password(){return this._password}get docBaseUrl(){return this._docBaseUrl}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)}cleanup(e=!1){return this.pdfDocument.cleanup(e)}async ensure(e,t,a){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,a){const r=e[t];return"function"==typeof r?r.apply(e,a):r}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,a){try{const r=e[t];return"function"==typeof r?r.apply(e,a):r}catch(r){if(!(r instanceof MissingDataException))throw r;await this.requestRange(r.begin,r.end);return this.ensure(e,t,a)}}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 hc=1,uc=2,dc=1,fc=2,gc=3,pc=4,mc=5,bc=6,yc=7,wc=8;function onFn(){}function wrapReason(e){if(e instanceof AbortException||e instanceof InvalidPDFException||e instanceof PasswordException||e instanceof ResponseException||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"PasswordException":return new PasswordException(e.message,e.code);case"ResponseException":return new ResponseException(e.message,e.status,e.missing);case"UnknownErrorException":return new UnknownErrorException(e.message,e.details)}return new UnknownErrorException(e.message,e.toString())}class MessageHandler{#bt=new AbortController;constructor(e,t,a){this.sourceName=e;this.targetName=t;this.comObj=a;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);a.addEventListener("message",this.#yt.bind(this),{signal:this.#bt.signal})}#yt({data:e}){if(e.targetName!==this.sourceName)return;if(e.stream){this.#wt(e);return}if(e.callback){const t=e.callbackId,a=this.callbackCapabilities[t];if(!a)throw new Error(`Cannot resolve callback ${t}`);delete this.callbackCapabilities[t];if(e.callback===hc)a.resolve(e.data);else{if(e.callback!==uc)throw new Error("Unexpected callback case");a.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 a=this.sourceName,r=e.sourceName,i=this.comObj;Promise.try(t,e.data).then(function(t){i.postMessage({sourceName:a,targetName:r,callback:hc,callbackId:e.callbackId,data:t})},function(t){i.postMessage({sourceName:a,targetName:r,callback:uc,callbackId:e.callbackId,reason:wrapReason(t)})});return}e.streamId?this.#xt(e):t(e.data)}on(e,t){const a=this.actionHandler;if(a[e])throw new Error(`There is already an actionName called "${e}"`);a[e]=t}send(e,t,a){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},a)}sendWithPromise(e,t,a){const r=this.callbackId++,i=Promise.withResolvers();this.callbackCapabilities[r]=i;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:r,data:t},a)}catch(e){i.reject(e)}return i.promise}sendWithStream(e,t,a,r){const i=this.streamId++,n=this.sourceName,s=this.targetName,o=this.comObj;return new ReadableStream({start:a=>{const c=Promise.withResolvers();this.streamControllers[i]={controller:a,startCall:c,pullCall:null,cancelCall:null,isClosed:!1};o.postMessage({sourceName:n,targetName:s,action:e,streamId:i,data:t,desiredSize:a.desiredSize},r);return c.promise},pull:e=>{const t=Promise.withResolvers();this.streamControllers[i].pullCall=t;o.postMessage({sourceName:n,targetName:s,stream:bc,streamId:i,desiredSize:e.desiredSize});return t.promise},cancel:e=>{assert(e instanceof Error,"cancel must have a valid reason");const t=Promise.withResolvers();this.streamControllers[i].cancelCall=t;this.streamControllers[i].isClosed=!0;o.postMessage({sourceName:n,targetName:s,stream:dc,streamId:i,reason:wrapReason(e)});return t.promise}},a)}#xt(e){const t=e.streamId,a=this.sourceName,r=e.sourceName,i=this.comObj,n=this,s=this.actionHandler[e.action],o={enqueue(e,n=1,s){if(this.isCancelled)return;const o=this.desiredSize;this.desiredSize-=n;if(o>0&&this.desiredSize<=0){this.sinkCapability=Promise.withResolvers();this.ready=this.sinkCapability.promise}i.postMessage({sourceName:a,targetName:r,stream:pc,streamId:t,chunk:e},s)},close(){if(!this.isCancelled){this.isCancelled=!0;i.postMessage({sourceName:a,targetName:r,stream:gc,streamId:t});delete n.streamSinks[t]}},error(e){assert(e instanceof Error,"error must have a valid reason");if(!this.isCancelled){this.isCancelled=!0;i.postMessage({sourceName:a,targetName:r,stream:mc,streamId:t,reason:wrapReason(e)})}},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};o.sinkCapability.resolve();o.ready=o.sinkCapability.promise;this.streamSinks[t]=o;Promise.try(s,e.data,o).then(function(){i.postMessage({sourceName:a,targetName:r,stream:wc,streamId:t,success:!0})},function(e){i.postMessage({sourceName:a,targetName:r,stream:wc,streamId:t,reason:wrapReason(e)})})}#wt(e){const t=e.streamId,a=this.sourceName,r=e.sourceName,i=this.comObj,n=this.streamControllers[t],s=this.streamSinks[t];switch(e.stream){case wc:e.success?n.startCall.resolve():n.startCall.reject(wrapReason(e.reason));break;case yc:e.success?n.pullCall.resolve():n.pullCall.reject(wrapReason(e.reason));break;case bc:if(!s){i.postMessage({sourceName:a,targetName:r,stream:yc,streamId:t,success:!0});break}s.desiredSize<=0&&e.desiredSize>0&&s.sinkCapability.resolve();s.desiredSize=e.desiredSize;Promise.try(s.onPull||onFn).then(function(){i.postMessage({sourceName:a,targetName:r,stream:yc,streamId:t,success:!0})},function(e){i.postMessage({sourceName:a,targetName:r,stream:yc,streamId:t,reason:wrapReason(e)})});break;case pc:assert(n,"enqueue should have stream controller");if(n.isClosed)break;n.controller.enqueue(e.chunk);break;case gc:assert(n,"close should have stream controller");if(n.isClosed)break;n.isClosed=!0;n.controller.close();this.#St(n,t);break;case mc:assert(n,"error should have stream controller");n.controller.error(wrapReason(e.reason));this.#St(n,t);break;case fc:e.success?n.cancelCall.resolve():n.cancelCall.reject(wrapReason(e.reason));this.#St(n,t);break;case dc:if(!s)break;const o=wrapReason(e.reason);Promise.try(s.onCancel||onFn,o).then(function(){i.postMessage({sourceName:a,targetName:r,stream:fc,streamId:t,success:!0})},function(e){i.postMessage({sourceName:a,targetName:r,stream:fc,streamId:t,reason:wrapReason(e)})});s.sinkCapability.reject(o);s.isCancelled=!0;delete this.streamSinks[t];break;default:throw new Error("Unexpected stream case")}}async#St(e,t){await Promise.allSettled([e.startCall?.promise,e.pullCall?.promise,e.cancelCall?.promise]);delete this.streamControllers[t]}destroy(){this.#bt?.abort();this.#bt=null}}async function writeObject(e,t,a,{encrypt:r=null}){const i=r?.createCipherTransform(e.num,e.gen);a.push(`${e.num} ${e.gen} obj\n`);t instanceof Dict?await writeDict(t,a,i):t instanceof BaseStream?await writeStream(t,a,i):(Array.isArray(t)||ArrayBuffer.isView(t))&&await writeArray(t,a,i);a.push("\nendobj\n")}async function writeDict(e,t,a){t.push("<<");for(const r of e.getKeys()){t.push(` /${escapePDFName(r)} `);await writeValue(e.getRaw(r),t,a)}t.push(">>")}async function writeStream(e,t,a){let r=e.getBytes();const{dict:i}=e,[n,s]=await Promise.all([i.getAsync("Filter"),i.getAsync("DecodeParms")]),o=isName(Array.isArray(n)?await i.xref.fetchIfRefAsync(n[0]):n,"FlateDecode");if(r.length>=256||o)try{const e=new CompressionStream("deflate"),t=e.writable.getWriter();await t.ready;t.write(r).then(async()=>{await t.ready;await t.close()}).catch(()=>{});const a=await new Response(e.readable).arrayBuffer();r=new Uint8Array(a);let c,l;if(n){if(!o){c=Array.isArray(n)?[Name.get("FlateDecode"),...n]:[Name.get("FlateDecode"),n];s&&(l=Array.isArray(s)?[null,...s]:[null,s])}}else c=Name.get("FlateDecode");c&&i.set("Filter",c);l&&i.set("DecodeParms",l)}catch(e){info(`writeStream - cannot compress data: "${e}".`)}let c=bytesToString(r);a&&(c=a.encryptString(c));i.set("Length",c.length);await writeDict(i,t,a);t.push(" stream\n",c,"\nendstream")}async function writeArray(e,t,a){t.push("[");let r=!0;for(const i of e){r?r=!1:t.push(" ");await writeValue(i,t,a)}t.push("]")}async function writeValue(e,t,a){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,a);else if("string"==typeof e){a&&(e=a.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,a):e instanceof BaseStream?await writeStream(e,t,a):null===e?t.push("null"):warn(`Unhandled value in writer: ${typeof e}, please file a bug.`)}function writeInt(e,t,a,r){for(let i=t+a-1;i>a-1;i--){r[i]=255&e;e>>=8}return a+t}function writeString(e,t,a){const r=e.length;for(let i=0;i1&&(n=a.documentElement.searchNode([i.at(-1)],0));n?n.childNodes=Array.isArray(r)?r.map(e=>new SimpleDOMNode("value",e)):[new SimpleDOMNode("#text",r)]:warn(`Node not found for path: ${t}`)}const r=[];a.documentElement.dump(r);return r.join("")}(r.fetchIfRef(t).getString(),a)}const i=new StringStream(e);i.dict=new Dict(r);i.dict.setIfName("Type","EmbeddedFile");a.put(t,{data:i})}function getIndexes(e){const t=[];for(const{ref:a}of e)a.num===t.at(-2)+t.at(-1)?t[t.length-1]+=1:t.push(a.num,1);return t}function computeIDs(e,t,a){if(Array.isArray(t.fileIds)&&t.fileIds.length>0){const r=function computeMD5(e,t){const a=Math.floor(Date.now()/1e3),r=t.filename||"",i=[a.toString(),r,e.toString(),...t.infoMap.values()],n=Math.sumPrecise(i.map(e=>e.length)),s=new Uint8Array(n);let o=0;for(const e of i)o=writeString(e,o,s);return bytesToString(calculateMD5(s,0,s.length))}(e,t);a.set("ID",[t.fileIds[0],r])}}async function incrementalUpdate({originalData:e,xrefInfo:t,changes:a,xref:r=null,hasXfa:i=!1,xfaDatasetsRef:n=null,hasXfaDatasetsEntry:s=!1,needAppearances:o,acroFormRef:c=null,acroForm:l=null,xfaData:h=null,useXrefStream:u=!1}){await async function updateAcroform({xref:e,acroForm:t,acroFormRef:a,hasXfa:r,hasXfaDatasetsEntry:i,xfaDatasetsRef:n,needAppearances:s,changes:o}){!r||i||n||warn("XFA - Cannot save it");if(!s&&(!r||!n||i))return;const c=t.clone();if(r&&!i){const e=t.get("XFA").slice();e.splice(2,0,"datasets");e.splice(3,0,n);c.set("XFA",e)}s&&c.set("NeedAppearances",!0);o.put(a,{data:c})}({xref:r,acroForm:l,acroFormRef:c,hasXfa:i,hasXfaDatasetsEntry:s,xfaDatasetsRef:n,needAppearances:o,changes:a});i&&updateXFA({xfaData:h,xfaDatasetsRef:n,changes:a,xref:r});const d=function getTrailerDict(e,t,a){const r=new Dict(null);r.set("Prev",e.startXRef);const i=e.newRef;if(a){t.put(i,{data:""});r.set("Size",i.num+1);r.setIfName("Type","XRef")}else r.set("Size",i.num);null!==e.rootRef&&r.set("Root",e.rootRef);null!==e.infoRef&&r.set("Info",e.infoRef);null!==e.encryptRef&&r.set("Encrypt",e.encryptRef);return r}(t,a,u),f=[],g=await async function writeChanges(e,t,a=[]){const r=[];for(const[i,{data:n}]of e.items())if(null!==n&&"string"!=typeof n){await writeObject(i,n,a,t);r.push({ref:i,data:a.join("")});a.length=0}else r.push({ref:i,data:n});return r.sort((e,t)=>e.ref.num-t.ref.num)}(a,r,f);let p=e.length;const m=e.at(-1);if(10!==m&&13!==m){f.push("\n");p+=1}for(const{data:e}of g)null!==e&&f.push(e);await(u?async function getXRefStreamTable(e,t,a,r,i){const n=[];let s=0,o=0;for(const{ref:e,data:r}of a){let a;s=Math.max(s,t);if(null!==r){a=Math.min(e.gen,65535);n.push([1,t,a]);t+=r.length}else{a=Math.min(e.gen+1,65535);n.push([0,0,a])}o=Math.max(o,a)}r.set("Index",getIndexes(a));const c=[1,getSizeInBytes(s),getSizeInBytes(o)];r.set("W",c);computeIDs(t,e,r);const l=Math.sumPrecise(c),h=new Uint8Array(l*n.length),u=new Stream(h);u.dict=r;let d=0;for(const[e,t,a]of n){d=writeInt(e,c[0],d,h);d=writeInt(t,c[1],d,h);d=writeInt(a,c[2],d,h)}await writeObject(e.newRef,u,i,{});i.push("startxref\n",t.toString(),"\n%%EOF\n")}(t,p,g,d,f):async function getXRefTable(e,t,a,r,i){i.push("xref\n");const n=getIndexes(a);let s=0;for(const{ref:e,data:r}of a){if(e.num===n[s]){i.push(`${n[s]} ${n[s+1]}\n`);s+=2}if(null!==r){i.push(`${t.toString().padStart(10,"0")} ${Math.min(e.gen,65535).toString().padStart(5,"0")} n\r\n`);t+=r.length}else i.push(`0000000000 ${Math.min(e.gen+1,65535).toString().padStart(5,"0")} f\r\n`)}computeIDs(t,e,r);i.push("trailer\n");await writeDict(r,i);i.push("\nstartxref\n",t.toString(),"\n%%EOF\n")}(t,p,g,d,f));const b=e.length+Math.sumPrecise(f.map(e=>e.length)),y=new Uint8Array(b);y.set(e);let w=e.length;for(const e of f)w=writeString(e,w,y);return y}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 a=new PDFWorkerStreamRangeReader(e,t,this._msgHandler);this._rangeRequestReaders.push(a);return a}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,a){this._msgHandler=a;this.onProgress=null;const r=this._msgHandler.sendWithStream("GetRangeReader",{begin:e,end:t});this._reader=r.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&&!e&&"undefined"!=typeof self&&"function"==typeof self.postMessage&&"onmessage"in self&&this.initializeFromPort(self)}static setup(e,t){let a=!1;e.on("test",t=>{if(!a){a=!0;e.send("test",t instanceof Uint8Array)}});e.on("configure",e=>{!function setVerbosityLevel(e){Number.isInteger(e)&&(Qt=e)}(e.verbosity)});e.on("GetDocRequest",e=>this.createDocumentHandler(e,t))}static createDocumentHandler(e,t){let a,r=!1,i=null;const n=new Set,s=getVerbosityLevel(),{docId:o,apiVersion:c}=e,l="5.4.394";if(c!==l)throw new Error(`The API version "${c}" does not match the Worker version "${l}".`);const buildMsg=(e,t)=>`The \`${e}.prototype\` contains unexpected enumerable property "${t}", thus breaking e.g. \`for...in\` iteration of ${e}s.`;for(const e in{})throw new Error(buildMsg("Object",e));for(const e in[])throw new Error(buildMsg("Array",e));const h=o+"_worker";let u=new MessageHandler(h,o,t);function ensureNotTerminated(){if(r)throw new Error("Worker was terminated")}function startWorkerTask(e){n.add(e)}function finishWorkerTask(e){e.finish();n.delete(e)}async function loadDocument(e){await a.ensureDoc("checkHeader");await a.ensureDoc("parseStartXRef");await a.ensureDoc("parse",[e]);await a.ensureDoc("checkFirstPage",[e]);await a.ensureDoc("checkLastPage",[e]);const t=await a.ensureDoc("isPureXfa");if(t){const e=new WorkerTask("loadXfaResources");startWorkerTask(e);await a.ensureDoc("loadXfaResources",[u,e]);finishWorkerTask(e)}const[r,i]=await Promise.all([a.ensureDoc("numPages"),a.ensureDoc("fingerprints")]);return{numPages:r,fingerprints:i,htmlForXfa:t?await a.ensureDoc("htmlForXfa"):null}}function setupDoc(e){function onSuccess(e){ensureNotTerminated();u.send("GetDoc",{pdfInfo:e})}function onFailure(e){ensureNotTerminated();if(e instanceof PasswordException){const t=new WorkerTask(`PasswordException: response ${e.code}`);startWorkerTask(t);u.sendWithPromise("PasswordRequest",e).then(function({password:e}){finishWorkerTask(t);a.updatePassword(e);pdfManagerReady()}).catch(function(){finishWorkerTask(t);u.send("DocException",e)})}else u.send("DocException",wrapReason(e))}function pdfManagerReady(){ensureNotTerminated();loadDocument(!1).then(onSuccess,function(e){ensureNotTerminated();e instanceof XRefParseException?a.requestLoadedStream().then(function(){ensureNotTerminated();loadDocument(!0).then(onSuccess,onFailure)}):onFailure(e)})}ensureNotTerminated();(async function getPdfManager({data:e,password:t,disableAutoFetch:a,rangeChunkSize:r,length:n,docBaseUrl:s,enableXfa:c,evaluatorOptions:l}){const h={source:null,disableAutoFetch:a,docBaseUrl:s,docId:o,enableXfa:c,evaluatorOptions:l,handler:u,length:n,password:t,rangeChunkSize:r};if(e){h.source=e;return new LocalPdfManager(h)}const d=new PDFWorkerStream(u),f=d.getFullReader(),g=Promise.withResolvers();let p,m=[],b=0;f.headersReady.then(function(){if(f.isRangeSupported){h.source=d;h.length=f.contentLength;h.disableAutoFetch||=f.isStreamingSupported;p=new NetworkPdfManager(h);for(const e of m)p.sendProgressiveData(e);m=[];g.resolve(p);i=null}}).catch(function(e){g.reject(e);i=null});new Promise(function(e,t){const readChunk=function({value:e,done:a}){try{ensureNotTerminated();if(a){if(!p){const e=arrayBuffersToBytes(m);m=[];n&&e.length!==n&&warn("reported HTTP length is different from actual");h.source=e;p=new LocalPdfManager(h);g.resolve(p)}i=null;return}b+=e.byteLength;f.isStreamingSupported||u.send("DocProgress",{loaded:b,total:Math.max(b,f.contentLength||0)});p?p.sendProgressiveData(e):m.push(e);f.read().then(readChunk,t)}catch(e){t(e)}};f.read().then(readChunk,t)}).catch(function(e){g.reject(e);i=null});i=e=>{d.cancelAllRequests(e)};return g.promise})(e).then(function(e){if(r){e.terminate(new AbortException("Worker was terminated."));throw new Error("Worker was terminated")}a=e;a.requestLoadedStream(!0).then(e=>{u.send("DataLoaded",{length:e.bytes.byteLength})})}).then(pdfManagerReady,onFailure)}u.on("GetPage",function(e){return a.getPage(e.pageIndex).then(function(e){return Promise.all([a.ensure(e,"rotate"),a.ensure(e,"ref"),a.ensure(e,"userUnit"),a.ensure(e,"view")]).then(function([e,t,a,r]){return{rotate:e,ref:t,refStr:t?.toString()??null,userUnit:a,view:r}})})});u.on("GetPageIndex",function(e){const t=Ref.get(e.num,e.gen);return a.ensureCatalog("getPageIndex",[t])});u.on("GetDestinations",function(e){return a.ensureCatalog("destinations")});u.on("GetDestination",function(e){return a.ensureCatalog("getDestination",[e.id])});u.on("GetPageLabels",function(e){return a.ensureCatalog("pageLabels")});u.on("GetPageLayout",function(e){return a.ensureCatalog("pageLayout")});u.on("GetPageMode",function(e){return a.ensureCatalog("pageMode")});u.on("GetViewerPreferences",function(e){return a.ensureCatalog("viewerPreferences")});u.on("GetOpenAction",function(e){return a.ensureCatalog("openAction")});u.on("GetAttachments",function(e){return a.ensureCatalog("attachments")});u.on("GetDocJSActions",function(e){return a.ensureCatalog("jsActions")});u.on("GetPageJSActions",function({pageIndex:e}){return a.getPage(e).then(e=>a.ensure(e,"jsActions"))});u.on("GetAnnotationsByType",async function({types:e,pageIndexesToSkip:t}){const[r,i]=await Promise.all([a.ensureDoc("numPages"),a.ensureDoc("annotationGlobals")]);if(!i)return null;const n=[],s=[];let o=null;try{for(let c=0,l=r;ct&&t.collectAnnotationsByType(u,o,e,s,i)||[]))}await Promise.all(n);return(await Promise.all(s)).filter(e=>!!e)}finally{o&&finishWorkerTask(o)}});u.on("GetOutline",function(e){return a.ensureCatalog("documentOutline")});u.on("GetOptionalContentConfig",function(e){return a.ensureCatalog("optionalContentConfig")});u.on("GetPermissions",function(e){return a.ensureCatalog("permissions")});u.on("GetMetadata",function(e){return Promise.all([a.ensureDoc("documentInfo"),a.ensureCatalog("metadata")])});u.on("GetMarkInfo",function(e){return a.ensureCatalog("markInfo")});u.on("GetData",function(e){return a.requestLoadedStream().then(e=>e.bytes)});u.on("GetAnnotations",function({pageIndex:e,intent:t}){return a.getPage(e).then(function(a){const r=new WorkerTask(`GetAnnotations: page ${e}`);startWorkerTask(r);return a.getAnnotationsData(u,r,t).then(e=>{finishWorkerTask(r);return e},e=>{finishWorkerTask(r);throw e})})});u.on("GetFieldObjects",function(e){return a.ensureDoc("fieldObjects").then(e=>e?.allFields||null)});u.on("HasJSActions",function(e){return a.ensureDoc("hasJSActions")});u.on("GetCalculationOrderIds",function(e){return a.ensureDoc("calculationOrderIds")});u.on("SaveDocument",async function({isPureXfa:e,numPages:t,annotationStorage:r,filename:i}){const n=[a.requestLoadedStream(),a.ensureCatalog("acroForm"),a.ensureCatalog("acroFormRef"),a.ensureDoc("startXRef"),a.ensureDoc("xref"),a.ensureCatalog("structTreeRoot")],s=new RefSetCache,o=[],c=e?null:getNewAnnotationsMap(r),[l,h,d,f,g,p]=await Promise.all(n),m=g.trailer.getRaw("Root")||null;let b;if(c){p?await p.canUpdateStructTree({pdfManager:a,newAnnotationsByPage:c})&&(b=p):await StructTreeRoot.canCreateStructureTree({catalogRef:m,pdfManager:a,newAnnotationsByPage:c})&&(b=null);const e=AnnotationFactory.generateImages(r.values(),g,a.evaluatorOptions.isOffscreenCanvasSupported),t=void 0===b?o:[];for(const[r,i]of c)t.push(a.getPage(r).then(t=>{const a=new WorkerTask(`Save (editor): page ${r}`);startWorkerTask(a);return t.saveNewAnnotations(u,a,i,e,s).finally(function(){finishWorkerTask(a)})}));null===b?o.push(Promise.all(t).then(async()=>{await StructTreeRoot.createStructureTree({newAnnotationsByPage:c,xref:g,catalogRef:m,pdfManager:a,changes:s})})):b&&o.push(Promise.all(t).then(async()=>{await b.updateStructureTree({newAnnotationsByPage:c,pdfManager:a,changes:s})}))}if(e)o.push(a.ensureDoc("serializeXfaData",[r]));else for(let e=0;ee.needAppearances),S=h instanceof Dict&&h.get("XFA")||null;let k=null,C=!1;if(Array.isArray(S)){for(let e=0,t=S.length;e{g.resetNewTemporaryRef()})});u.on("GetOperatorList",function(e,t){const r=e.pageIndex;a.getPage(r).then(function(a){const i=new WorkerTask(`GetOperatorList: page ${r}`);startWorkerTask(i);const n=s>=ce?Date.now():0;a.getOperatorList({handler:u,sink:t,task:i,intent:e.intent,cacheKey:e.cacheKey,annotationStorage:e.annotationStorage,modifiedIds:e.modifiedIds}).then(function(e){finishWorkerTask(i);n&&info(`page=${r+1} - getOperatorList: time=${Date.now()-n}ms, len=${e.length}`);t.close()},function(e){finishWorkerTask(i);i.terminated||t.error(e)})})});u.on("GetTextContent",function(e,t){const{pageIndex:r,includeMarkedContent:i,disableNormalization:n}=e;a.getPage(r).then(function(e){const a=new WorkerTask("GetTextContent: page "+r);startWorkerTask(a);const o=s>=ce?Date.now():0;e.extractTextContent({handler:u,task:a,sink:t,includeMarkedContent:i,disableNormalization:n}).then(function(){finishWorkerTask(a);o&&info(`page=${r+1} - getTextContent: time=`+(Date.now()-o)+"ms");t.close()},function(e){finishWorkerTask(a);a.terminated||t.error(e)})})});u.on("GetStructTree",function(e){return a.getPage(e.pageIndex).then(e=>a.ensure(e,"getStructTree"))});u.on("FontFallback",function(e){return a.fontFallback(e.id,u)});u.on("Cleanup",function(e){return a.cleanup(!0)});u.on("Terminate",function(e){r=!0;const t=[];if(a){a.terminate(new AbortException("Worker was terminated."));const e=a.cleanup();t.push(e);a=null}else clearGlobalCaches();i?.(new AbortException("Worker was terminated."));for(const e of n){t.push(e.finished);e.terminate()}return Promise.all(t).then(function(){u.destroy();u=null})});u.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)}}globalThis.pdfjsWorker={WorkerMessageHandler};export{WorkerMessageHandler}; \ No newline at end of file + */ const e = !( + "object" != typeof process || + process + "" != "[object process]" || + process.versions.nw || + (process.versions.electron && process.type && "browser" !== process.type) + ), + t = [0.001, 0, 0, 0.001, 0, 0], + a = 1.35, + r = 0.35, + i = 0.25925925925925924, + n = 1, + s = 2, + o = 4, + c = 8, + l = 16, + h = 64, + u = 128, + d = 256, + f = "pdfjs_internal_editor_", + g = 3, + p = 9, + m = 13, + b = 15, + y = 101, + w = { + PRINT: 4, + MODIFY_CONTENTS: 8, + COPY: 16, + MODIFY_ANNOTATIONS: 32, + FILL_INTERACTIVE_FORMS: 256, + COPY_FOR_ACCESSIBILITY: 512, + ASSEMBLE: 1024, + PRINT_HIGH_QUALITY: 2048, + }, + x = 1, + S = 2, + k = 3, + C = 0, + v = 4, + F = 1, + T = 2, + O = 3, + M = { + TEXT: 1, + LINK: 2, + FREETEXT: 3, + LINE: 4, + SQUARE: 5, + CIRCLE: 6, + POLYGON: 7, + POLYLINE: 8, + HIGHLIGHT: 9, + UNDERLINE: 10, + SQUIGGLY: 11, + STRIKEOUT: 12, + STAMP: 13, + CARET: 14, + INK: 15, + POPUP: 16, + FILEATTACHMENT: 17, + SOUND: 18, + MOVIE: 19, + WIDGET: 20, + SCREEN: 21, + PRINTERMARK: 22, + TRAPNET: 23, + WATERMARK: 24, + THREED: 25, + REDACT: 26, + }, + D = "Group", + R = "R", + N = 1, + E = 2, + L = 4, + _ = 16, + U = 32, + j = 128, + X = 512, + q = 1, + H = 2, + W = 4096, + G = 8192, + z = 32768, + $ = 65536, + V = 131072, + K = 1048576, + J = 2097152, + Y = 8388608, + Z = 16777216, + Q = 1, + ee = 2, + te = 3, + ae = 4, + re = 5, + ie = { + 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", + }, + ne = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint", + }, + se = { O: "PageOpen", C: "PageClose" }, + oe = 1, + ce = 5, + le = 1, + he = 2, + ue = 3, + de = 4, + fe = 5, + ge = 6, + pe = 7, + me = 8, + be = 9, + ye = 10, + we = 11, + xe = 12, + Se = 13, + Ae = 14, + ke = 15, + Ce = 16, + ve = 17, + Fe = 18, + Ie = 19, + Te = 20, + Oe = 21, + Me = 22, + De = 23, + Be = 24, + Re = 25, + Ne = 26, + Ee = 27, + Pe = 28, + Le = 29, + _e = 30, + Ue = 31, + je = 32, + Xe = 33, + qe = 34, + He = 35, + We = 36, + Ge = 37, + ze = 38, + $e = 39, + Ve = 40, + Ke = 41, + Je = 42, + Ye = 43, + Ze = 44, + Qe = 45, + et = 46, + tt = 47, + at = 48, + rt = 49, + it = 50, + nt = 51, + st = 52, + ot = 53, + ct = 54, + lt = 55, + ht = 56, + ut = 57, + dt = 58, + ft = 59, + gt = 60, + pt = 61, + mt = 62, + bt = 63, + yt = 64, + wt = 65, + xt = 66, + St = 67, + At = 68, + kt = 69, + Ct = 70, + vt = 71, + Ft = 72, + It = 73, + Tt = 74, + Ot = 75, + Mt = 76, + Dt = 77, + Bt = 80, + Rt = 81, + Nt = 83, + Et = 84, + Pt = 85, + Lt = 86, + _t = 87, + Ut = 88, + jt = 89, + Xt = 90, + qt = 91, + Ht = 92, + Wt = 93, + Gt = 94, + zt = 0, + $t = 1, + Vt = 2, + Kt = 3, + Jt = 4, + Yt = 1, + Zt = 2; +let Qt = oe; +function getVerbosityLevel() { + return Qt; +} +function info(e) { + Qt >= ce && console.info(`Info: ${e}`); +} +function warn(e) { + Qt >= oe && console.warn(`Warning: ${e}`); +} +function unreachable(e) { + throw new Error(e); +} +function assert(e, t) { + e || unreachable(t); +} +function createValidAbsoluteUrl(e, t = null, a = null) { + if (!e) return null; + if (a && "string" == typeof e) { + if (a.addDefaultProtocol && e.startsWith("www.")) { + const t = e.match(/\./g); + t?.length >= 2 && (e = `http://${e}`); + } + if (a.tryConvertEncoding) + try { + e = stringToUTF8String(e); + } catch {} + } + const r = t ? URL.parse(e, t) : URL.parse(e); + return (function _isValidProtocol(e) { + switch (e?.protocol) { + case "http:": + case "https:": + case "ftp:": + case "mailto:": + case "tel:": + return !0; + default: + return !1; + } + })(r) + ? r + : null; +} +function shadow(e, t, a, r = !1) { + Object.defineProperty(e, t, { + value: a, + enumerable: !r, + configurable: !0, + writable: !1, + }); + return a; +} +const ea = (function BaseExceptionClosure() { + function BaseException(e, t) { + this.message = e; + this.name = t; + } + BaseException.prototype = new Error(); + BaseException.constructor = BaseException; + return BaseException; +})(); +class PasswordException extends ea { + constructor(e, t) { + super(e, "PasswordException"); + this.code = t; + } +} +class UnknownErrorException extends ea { + constructor(e, t) { + super(e, "UnknownErrorException"); + this.details = t; + } +} +class InvalidPDFException extends ea { + constructor(e) { + super(e, "InvalidPDFException"); + } +} +class ResponseException extends ea { + constructor(e, t, a) { + super(e, "ResponseException"); + this.status = t; + this.missing = a; + } +} +class FormatError extends ea { + constructor(e) { + super(e, "FormatError"); + } +} +class AbortException extends ea { + constructor(e) { + super(e, "AbortException"); + } +} +function bytesToString(e) { + ("object" == typeof e && void 0 !== e?.length) || + unreachable("Invalid argument for bytesToString"); + const t = e.length, + a = 8192; + if (t < a) return String.fromCharCode.apply(null, e); + const r = []; + for (let i = 0; i < t; i += a) { + const n = Math.min(i + a, t), + s = e.subarray(i, n); + r.push(String.fromCharCode.apply(null, s)); + } + return r.join(""); +} +function stringToBytes(e) { + "string" != typeof e && unreachable("Invalid argument for stringToBytes"); + const t = e.length, + a = new Uint8Array(t); + for (let r = 0; r < t; ++r) a[r] = 255 & e.charCodeAt(r); + return a; +} +function string32(e) { + return String.fromCharCode( + (e >> 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 isFloat16ArraySupported() { + return shadow( + this, + "isFloat16ArraySupported", + "undefined" != typeof Float16Array, + ); + } + static get isSanitizerSupported() { + return shadow( + this, + "isSanitizerSupported", + "undefined" != typeof Sanitizer, + ); + } + static get platform() { + const { platform: e, userAgent: t } = navigator; + return shadow(this, "platform", { + isAndroid: t.includes("Android"), + isLinux: e.includes("Linux"), + isMac: e.includes("Mac"), + isWindows: e.includes("Win"), + isFirefox: t.includes("Firefox"), + }); + } + static get isCSSRoundSupported() { + return shadow( + this, + "isCSSRoundSupported", + globalThis.CSS?.supports?.("width: round(1.5px, 1px)"), + ); + } +} +const ta = Array.from(Array(256).keys(), (e) => + e.toString(16).padStart(2, "0"), +); +class Util { + static makeHexColor(e, t, a) { + return `#${ta[e]}${ta[t]}${ta[a]}`; + } + static domMatrixToTransform(e) { + return [e.a, e.b, e.c, e.d, e.e, e.f]; + } + static scaleMinMax(e, t) { + let a; + if (e[0]) { + if (e[0] < 0) { + a = t[0]; + t[0] = t[2]; + t[2] = a; + } + t[0] *= e[0]; + t[2] *= e[0]; + if (e[3] < 0) { + a = t[1]; + t[1] = t[3]; + t[3] = a; + } + t[1] *= e[3]; + t[3] *= e[3]; + } else { + a = t[0]; + t[0] = t[1]; + t[1] = a; + a = t[2]; + t[2] = t[3]; + t[3] = a; + if (e[1] < 0) { + a = t[1]; + t[1] = t[3]; + t[3] = a; + } + t[1] *= e[1]; + t[3] *= e[1]; + if (e[2] < 0) { + a = t[0]; + t[0] = t[2]; + t[2] = a; + } + 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 multiplyByDOMMatrix(e, t) { + return [ + e[0] * t.a + e[2] * t.b, + e[1] * t.a + e[3] * t.b, + e[0] * t.c + e[2] * t.d, + e[1] * t.c + e[3] * t.d, + e[0] * t.e + e[2] * t.f + e[4], + e[1] * t.e + e[3] * t.f + e[5], + ]; + } + static applyTransform(e, t, a = 0) { + const r = e[a], + i = e[a + 1]; + e[a] = r * t[0] + i * t[2] + t[4]; + e[a + 1] = r * t[1] + i * t[3] + t[5]; + } + static applyTransformToBezier(e, t, a = 0) { + const r = t[0], + i = t[1], + n = t[2], + s = t[3], + o = t[4], + c = t[5]; + for (let t = 0; t < 6; t += 2) { + const l = e[a + t], + h = e[a + t + 1]; + e[a + t] = l * r + h * n + o; + e[a + t + 1] = l * i + h * s + c; + } + } + static applyInverseTransform(e, t) { + const a = e[0], + r = e[1], + i = t[0] * t[3] - t[1] * t[2]; + e[0] = (a * t[3] - r * t[2] + t[2] * t[5] - t[4] * t[3]) / i; + e[1] = (-a * t[1] + r * t[0] + t[4] * t[1] - t[5] * t[0]) / i; + } + static axialAlignedBoundingBox(e, t, a) { + const r = t[0], + i = t[1], + n = t[2], + s = t[3], + o = t[4], + c = t[5], + l = e[0], + h = e[1], + u = e[2], + d = e[3]; + let f = r * l + o, + g = f, + p = r * u + o, + m = p, + b = s * h + c, + y = b, + w = s * d + c, + x = w; + if (0 !== i || 0 !== n) { + const e = i * l, + t = i * u, + a = n * h, + r = n * d; + f += a; + m += a; + p += r; + g += r; + b += e; + x += e; + w += t; + y += t; + } + a[0] = Math.min(a[0], f, p, g, m); + a[1] = Math.min(a[1], b, w, y, x); + a[2] = Math.max(a[2], f, p, g, m); + a[3] = Math.max(a[3], b, w, y, x); + } + 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, t) { + const a = e[0], + r = e[1], + i = e[2], + n = e[3], + s = a ** 2 + r ** 2, + o = a * i + r * n, + c = i ** 2 + n ** 2, + l = (s + c) / 2, + h = Math.sqrt(l ** 2 - (s * c - o ** 2)); + t[0] = Math.sqrt(l + h || 1); + t[1] = Math.sqrt(l - h || 1); + } + 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 a = Math.max(Math.min(e[0], e[2]), Math.min(t[0], t[2])), + r = Math.min(Math.max(e[0], e[2]), Math.max(t[0], t[2])); + if (a > r) return null; + const i = Math.max(Math.min(e[1], e[3]), Math.min(t[1], t[3])), + n = Math.min(Math.max(e[1], e[3]), Math.max(t[1], t[3])); + return i > n ? null : [a, i, r, n]; + } + static pointBoundingBox(e, t, a) { + a[0] = Math.min(a[0], e); + a[1] = Math.min(a[1], t); + a[2] = Math.max(a[2], e); + a[3] = Math.max(a[3], t); + } + static rectBoundingBox(e, t, a, r, i) { + i[0] = Math.min(i[0], e, a); + i[1] = Math.min(i[1], t, r); + i[2] = Math.max(i[2], e, a); + i[3] = Math.max(i[3], t, r); + } + static #e(e, t, a, r, i, n, s, o, c, l) { + if (c <= 0 || c >= 1) return; + const h = 1 - c, + u = c * c, + d = u * c, + f = h * (h * (h * e + 3 * c * t) + 3 * u * a) + d * r, + g = h * (h * (h * i + 3 * c * n) + 3 * u * s) + d * o; + l[0] = Math.min(l[0], f); + l[1] = Math.min(l[1], g); + l[2] = Math.max(l[2], f); + l[3] = Math.max(l[3], g); + } + static #t(e, t, a, r, i, n, s, o, c, l, h, u) { + if (Math.abs(c) < 1e-12) { + Math.abs(l) >= 1e-12 && this.#e(e, t, a, r, i, n, s, o, -h / l, u); + return; + } + const d = l ** 2 - 4 * h * c; + if (d < 0) return; + const f = Math.sqrt(d), + g = 2 * c; + this.#e(e, t, a, r, i, n, s, o, (-l + f) / g, u); + this.#e(e, t, a, r, i, n, s, o, (-l - f) / g, u); + } + static bezierBoundingBox(e, t, a, r, i, n, s, o, c) { + c[0] = Math.min(c[0], e, s); + c[1] = Math.min(c[1], t, o); + c[2] = Math.max(c[2], e, s); + c[3] = Math.max(c[3], t, o); + this.#t( + e, + a, + i, + s, + t, + r, + n, + o, + 3 * (3 * (a - i) - e + s), + 6 * (e - 2 * a + i), + 3 * (a - e), + c, + ); + this.#t( + e, + a, + i, + s, + t, + r, + n, + o, + 3 * (3 * (r - n) - t + o), + 6 * (t - 2 * r + n), + 3 * (r - t), + c, + ); + } +} +const aa = [ + 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, t = !1) { + if (e[0] >= "ï") { + let a; + if ("þ" === e[0] && "ÿ" === e[1]) { + a = "utf-16be"; + e.length % 2 == 1 && (e = e.slice(0, -1)); + } else if ("ÿ" === e[0] && "þ" === e[1]) { + a = "utf-16le"; + e.length % 2 == 1 && (e = e.slice(0, -1)); + } else "ï" === e[0] && "»" === e[1] && "¿" === e[2] && (a = "utf-8"); + if (a) + try { + const r = new TextDecoder(a, { fatal: !0 }), + i = stringToBytes(e), + n = r.decode(i); + return t || !n.includes("") + ? n + : n.replaceAll(/\x1b[^\x1b]*(?:\x1b|$)/g, ""); + } catch (e) { + warn(`stringToPDFString: "${e}".`); + } + } + const a = []; + for (let r = 0, i = e.length; r < i; r++) { + const n = e.charCodeAt(r); + if (!t && 27 === n) { + for (; ++r < i && 27 !== e.charCodeAt(r); ); + continue; + } + const s = aa[n]; + a.push(s ? String.fromCharCode(s) : e.charAt(r)); + } + return a.join(""); +} +function stringToUTF8String(e) { + return decodeURIComponent(escape(e)); +} +function utf8StringToString(e) { + return unescape(encodeURIComponent(e)); +} +function isArrayEqual(e, t) { + if (e.length !== t.length) return !1; + for (let a = 0, r = e.length; a < r; a++) if (e[a] !== t[a]) return !1; + return !0; +} +function getModificationDate(e = new Date()) { + e instanceof Date || (e = new Date(e)); + return [ + e.getUTCFullYear().toString(), + (e.getUTCMonth() + 1).toString().padStart(2, "0"), + e.getUTCDate().toString().padStart(2, "0"), + e.getUTCHours().toString().padStart(2, "0"), + e.getUTCMinutes().toString().padStart(2, "0"), + e.getUTCSeconds().toString().padStart(2, "0"), + ].join(""); +} +let ra = null, + ia = null; +function MathClamp(e, t, a) { + return Math.min(Math.max(e, t), a); +} +function toHexUtil(e) { + return Uint8Array.prototype.toHex + ? e.toHex() + : Array.from(e, (e) => ta[e]).join(""); +} +"function" != typeof Promise.try && + (Promise.try = function (e, ...t) { + return new Promise((a) => { + a(e(...t)); + }); + }); +"function" != typeof Math.sumPrecise && + (Math.sumPrecise = function (e) { + return e.reduce((e, t) => e + t, 0); + }); +const na = Symbol("CIRCULAR_REF"), + sa = Symbol("EOF"); +let oa = Object.create(null), + ca = Object.create(null), + la = Object.create(null); +class Name { + constructor(e) { + this.name = e; + } + static get(e) { + return (ca[e] ||= new Name(e)); + } +} +class Cmd { + constructor(e) { + this.cmd = e; + } + static get(e) { + return (oa[e] ||= new Cmd(e)); + } +} +const ha = function nonSerializableClosure() { + return ha; +}; +class Dict { + constructor(e = null) { + this._map = new Map(); + this.xref = e; + this.objId = null; + this.suppressEncryption = !1; + this.__nonSerializable__ = ha; + } + assignXref(e) { + this.xref = e; + } + get size() { + return this._map.size; + } + get(e, t, a) { + let r = this._map.get(e); + if (void 0 === r && void 0 !== t) { + r = this._map.get(t); + void 0 === r && void 0 !== a && (r = this._map.get(a)); + } + return r instanceof Ref && this.xref + ? this.xref.fetch(r, this.suppressEncryption) + : r; + } + async getAsync(e, t, a) { + let r = this._map.get(e); + if (void 0 === r && void 0 !== t) { + r = this._map.get(t); + void 0 === r && void 0 !== a && (r = this._map.get(a)); + } + return r instanceof Ref && this.xref + ? this.xref.fetchAsync(r, this.suppressEncryption) + : r; + } + getArray(e, t, a) { + let r = this._map.get(e); + if (void 0 === r && void 0 !== t) { + r = this._map.get(t); + void 0 === r && void 0 !== a && (r = this._map.get(a)); + } + r instanceof Ref && + this.xref && + (r = this.xref.fetch(r, this.suppressEncryption)); + if (Array.isArray(r)) { + r = r.slice(); + for (let e = 0, t = r.length; e < t; e++) + r[e] instanceof Ref && + this.xref && + (r[e] = this.xref.fetch(r[e], this.suppressEncryption)); + } + return r; + } + getRaw(e) { + return this._map.get(e); + } + getKeys() { + return [...this._map.keys()]; + } + getRawValues() { + return [...this._map.values()]; + } + set(e, t) { + this._map.set(e, t); + } + setIfNotExists(e, t) { + this.has(e) || this.set(e, t); + } + setIfNumber(e, t) { + "number" == typeof t && this.set(e, t); + } + setIfArray(e, t) { + (Array.isArray(t) || ArrayBuffer.isView(t)) && this.set(e, t); + } + setIfDefined(e, t) { + null != t && this.set(e, t); + } + setIfName(e, t) { + "string" == typeof t + ? this.set(e, Name.get(t)) + : t instanceof Name && this.set(e, t); + } + has(e) { + return this._map.has(e); + } + *[Symbol.iterator]() { + for (const [e, t] of this._map) + yield [ + e, + t instanceof Ref && this.xref + ? this.xref.fetch(t, this.suppressEncryption) + : t, + ]; + } + static get empty() { + const e = new Dict(null); + e.set = (e, t) => { + unreachable("Should not call `set` on the empty dictionary."); + }; + return shadow(this, "empty", e); + } + static merge({ xref: e, dictArray: t, mergeSubDicts: a = !1 }) { + const r = new Dict(e), + i = new Map(); + for (const e of t) + if (e instanceof Dict) + for (const [t, r] of e._map) { + let e = i.get(t); + if (void 0 === e) { + e = []; + i.set(t, e); + } else if (!(a && r instanceof Dict)) continue; + e.push(r); + } + for (const [t, a] of i) { + if (1 === a.length || !(a[0] instanceof Dict)) { + r._map.set(t, a[0]); + continue; + } + const i = new Dict(e); + for (const e of a) + for (const [t, a] of e._map) i._map.has(t) || i._map.set(t, a); + i.size > 0 && r._map.set(t, i); + } + i.clear(); + return r.size > 0 ? r : 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) { + this._map.delete(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 = la[e]; + if (t) return t; + const a = /^(\d+)R(\d*)$/.exec(e); + return a && "0" !== a[1] + ? (la[e] = new Ref(parseInt(a[1]), a[2] ? parseInt(a[2]) : 0)) + : null; + } + static get(e, t) { + const a = 0 === t ? `${e}R` : `${e}R${t}`; + return (la[a] ||= 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 isAsyncDecoder() { + 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, a = null) { + unreachable("Abstract method `makeSubStream` called"); + } + getBaseStreams() { + return null; + } + getOriginalStream() { + return this.stream?.getOriginalStream() || this; + } +} +const ua = /^[1-9]\.\d$/, + da = 2 ** 31 - 1, + fa = [1, 0, 0, 1, 0, 0], + ga = [ + "ColorSpace", + "ExtGState", + "Font", + "Pattern", + "Properties", + "Shading", + "XObject", + ], + pa = ["ExtGState", "Font", "Properties", "XObject"]; +function getLookupTableFactory(e) { + let t; + return function () { + if (e) { + t = Object.create(null); + e(t); + e = null; + } + return t; + }; +} +class MissingDataException extends ea { + constructor(e, t) { + super(`Missing data [${e}, ${t})`, "MissingDataException"); + this.begin = e; + this.end = t; + } +} +class ParserEOFException extends ea { + constructor(e) { + super(e, "ParserEOFException"); + } +} +class XRefEntryException extends ea { + constructor(e) { + super(e, "XRefEntryException"); + } +} +class XRefParseException extends ea { + 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 a = 0; + for (let r = 0; r < t; r++) a += e[r].byteLength; + const r = new Uint8Array(a); + let i = 0; + for (let a = 0; a < t; a++) { + const t = new Uint8Array(e[a]); + r.set(t, i); + i += t.byteLength; + } + return r; +} +async function fetchBinaryData(e) { + const t = await fetch(e); + if (!t.ok) + throw new Error(`Failed to fetch file "${e}" with "${t.statusText}".`); + return new Uint8Array(await t.arrayBuffer()); +} +function getInheritableProperty({ + dict: e, + key: t, + getArray: a = !1, + stopWhenFound: r = !0, +}) { + let i; + const n = new RefSet(); + for (; e instanceof Dict && (!e.objId || !n.has(e.objId)); ) { + e.objId && n.put(e.objId); + const s = a ? e.getArray(t) : e.get(t); + if (void 0 !== s) { + if (r) return s; + (i ||= []).push(s); + } + e = e.get("Parent"); + } + return i; +} +const ma = [ + "", + "C", + "CC", + "CCC", + "CD", + "D", + "DC", + "DCC", + "DCCC", + "CM", + "", + "X", + "XX", + "XXX", + "XL", + "L", + "LX", + "LXX", + "LXXX", + "XC", + "", + "I", + "II", + "III", + "IV", + "V", + "VI", + "VII", + "VIII", + "IX", +]; +function toRomanNumerals(e, t = !1) { + assert( + Number.isInteger(e) && e > 0, + "The number should be a positive integer.", + ); + const a = + "M".repeat((e / 1e3) | 0) + + ma[((e % 1e3) / 100) | 0] + + ma[10 + (((e % 100) / 10) | 0)] + + ma[20 + (e % 10)]; + return t ? a.toLowerCase() : a; +} +function log2(e) { + return e > 0 ? Math.ceil(Math.log2(e)) : 0; +} +function readInt8(e, t) { + return (e[t] << 24) >> 24; +} +function readInt16(e, t) { + return ((e[t] << 24) | (e[t + 1] << 16)) >> 16; +} +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) && + !(e instanceof BigInt64Array || e instanceof BigUint64Array) && + (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 a = e.match(t); + return a ? { name: a[1], pos: parseInt(a[2], 10) } : { name: e, pos: 0 }; + }); +} +function escapePDFName(e) { + const t = []; + let a = 0; + for (let r = 0, i = e.length; r < i; r++) { + const i = e.charCodeAt(r); + if ( + i < 33 || + i > 126 || + 35 === i || + 40 === i || + 41 === i || + 60 === i || + 62 === i || + 91 === i || + 93 === i || + 123 === i || + 125 === i || + 47 === i || + 37 === i + ) { + a < r && t.push(e.substring(a, r)); + t.push(`#${i.toString(16)}`); + a = r + 1; + } + } + if (0 === t.length) return e; + a < e.length && t.push(e.substring(a, e.length)); + return t.join(""); +} +function escapeString(e) { + return e.replaceAll(/([()\\\n\r])/g, (e) => + "\n" === e ? "\\n" : "\r" === e ? "\\r" : `\\${e}`, + ); +} +function _collectJS(e, t, a, r) { + if (!e) return; + let i = null; + if (e instanceof Ref) { + if (r.has(e)) return; + i = e; + r.put(i); + e = t.fetch(e); + } + if (Array.isArray(e)) for (const i of e) _collectJS(i, t, a, r); + else if (e instanceof Dict) { + if (isName(e.get("S"), "JavaScript")) { + const t = e.get("JS"); + let r; + t instanceof BaseStream + ? (r = t.getString()) + : "string" == typeof t && (r = t); + r &&= stringToPDFString(r, !0).replaceAll("\0", ""); + r && a.push(r.trim()); + } + _collectJS(e.getRaw("Next"), t, a, r); + } + i && r.remove(i); +} +function collectActions(e, t, a) { + const r = Object.create(null), + i = getInheritableProperty({ dict: t, key: "AA", stopWhenFound: !1 }); + if (i) + for (let t = i.length - 1; t >= 0; t--) { + const n = i[t]; + if (n instanceof Dict) + for (const t of n.getKeys()) { + const i = a[t]; + if (!i) continue; + const s = []; + _collectJS(n.getRaw(t), e, s, new RefSet()); + s.length > 0 && (r[i] = s); + } + } + if (t.has("A")) { + const a = []; + _collectJS(t.get("A"), e, a, new RefSet()); + a.length > 0 && (r.Action = a); + } + return objectSize(r) > 0 ? r : null; +} +const ba = { 60: "<", 62: ">", 38: "&", 34: """, 39: "'" }; +function* codePointIter(e) { + for (let t = 0, a = e.length; t < a; t++) { + const a = e.codePointAt(t); + a > 55295 && (a < 57344 || a > 65533) && t++; + yield a; + } +} +function encodeToXmlString(e) { + const t = []; + let a = 0; + for (let r = 0, i = e.length; r < i; r++) { + const i = e.codePointAt(r); + if (32 <= i && i <= 126) { + const n = ba[i]; + if (n) { + a < r && t.push(e.substring(a, r)); + t.push(n); + a = r + 1; + } + } else { + a < r && t.push(e.substring(a, r)); + t.push(`&#x${i.toString(16).toUpperCase()};`); + i > 55295 && (i < 57344 || i > 65533) && r++; + a = r + 1; + } + } + if (0 === t.length) return e; + a < e.length && t.push(e.substring(a, e.length)); + return t.join(""); +} +function validateFontName(e, t = !1) { + const a = /^("|').*("|')$/.exec(e); + if (a && a[1] === a[2]) { + if (new RegExp(`[^\\\\]${a[1]}`).test(e.slice(1, -1))) { + t && warn(`FontFamily contains unescaped ${a[1]}: ${e}.`); + return !1; + } + } else + for (const a of e.split(/[ \t]+/)) + if (/^(\d|(-(\d|-)))/.test(a) || !/^[\w-\\]+$/.test(a)) { + t && warn(`FontFamily contains invalid : ${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: a, fontWeight: r, italicAngle: i } = e; + if (!validateFontName(a, !0)) return !1; + const n = r ? r.toString() : ""; + e.fontWeight = t.has(n) ? n : "400"; + const s = parseFloat(i); + e.italicAngle = isNaN(s) || s < -90 || s > 90 ? "14" : i.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 [a, r] of e) { + if (!a.startsWith(f)) continue; + let e = t.get(r.pageIndex); + if (!e) { + e = []; + t.set(r.pageIndex, e); + } + e.push(r); + } + return t.size > 0 ? t : null; +} +function stringToAsciiOrUTF16BE(e) { + return null == e || + (function isAscii(e) { + if ("string" != typeof e) return !1; + return !e || /^[\x00-\x7F]*$/.test(e); + })(e) + ? e + : stringToUTF16String(e, !0); +} +function stringToUTF16HexString(e) { + const t = []; + for (let a = 0, r = e.length; a < r; a++) { + const r = e.charCodeAt(a); + t.push(ta[(r >> 8) & 255], ta[255 & r]); + } + return t.join(""); +} +function stringToUTF16String(e, t = !1) { + const a = []; + t && a.push("þÿ"); + for (let t = 0, r = e.length; t < r; t++) { + const r = e.charCodeAt(t); + a.push(String.fromCharCode((r >> 8) & 255), String.fromCharCode(255 & r)); + } + return a.join(""); +} +function getRotationMatrix(e, t, a) { + switch (e) { + case 90: + return [0, 1, -1, 0, t, 0]; + case 180: + return [-1, 0, 0, -1, t, a]; + case 270: + return [0, -1, 1, 0, 0, a]; + default: + throw new Error("Invalid rotation"); + } +} +function getSizeInBytes(e) { + return Math.ceil(Math.ceil(Math.log2(1 + e)) / 8); +} +class QCMS { + static #a = null; + static _memory = null; + static _mustAddAlpha = !1; + static _destBuffer = null; + static _destOffset = 0; + static _destLength = 0; + static _cssColor = ""; + static _makeHexColor = null; + static get _memoryArray() { + const e = this.#a; + return e?.byteLength ? e : (this.#a = new Uint8Array(this._memory.buffer)); + } +} +let ya; +const wa = + "undefined" != typeof TextDecoder + ? new TextDecoder("utf-8", { ignoreBOM: !0, fatal: !0 }) + : { + decode: () => { + throw Error("TextDecoder not available"); + }, + }; +"undefined" != typeof TextDecoder && wa.decode(); +let xa = null; +function getUint8ArrayMemory0() { + (null !== xa && 0 !== xa.byteLength) || + (xa = new Uint8Array(ya.memory.buffer)); + return xa; +} +let Sa = 0; +function passArray8ToWasm0(e, t) { + const a = t(1 * e.length, 1) >>> 0; + getUint8ArrayMemory0().set(e, a / 1); + Sa = e.length; + return a; +} +const Aa = Object.freeze({ + RGB8: 0, + 0: "RGB8", + RGBA8: 1, + 1: "RGBA8", + BGRA8: 2, + 2: "BGRA8", + Gray8: 3, + 3: "Gray8", + GrayA8: 4, + 4: "GrayA8", + CMYK: 5, + 5: "CMYK", + }), + ka = Object.freeze({ + Perceptual: 0, + 0: "Perceptual", + RelativeColorimetric: 1, + 1: "RelativeColorimetric", + Saturation: 2, + 2: "Saturation", + AbsoluteColorimetric: 3, + 3: "AbsoluteColorimetric", + }); +function __wbg_get_imports() { + const e = { wbg: {} }; + e.wbg.__wbg_copyresult_b08ee7d273f295dd = function (e, t) { + !(function copy_result(e, t) { + const { + _mustAddAlpha: a, + _destBuffer: r, + _destOffset: i, + _destLength: n, + _memoryArray: s, + } = QCMS; + if (t !== n) + if (a) + for (let a = e, n = e + t, o = i; a < n; a += 3, o += 4) { + r[o] = s[a]; + r[o + 1] = s[a + 1]; + r[o + 2] = s[a + 2]; + r[o + 3] = 255; + } + else + for (let a = e, n = e + t, o = i; a < n; a += 3, o += 4) { + r[o] = s[a]; + r[o + 1] = s[a + 1]; + r[o + 2] = s[a + 2]; + } + else r.set(s.subarray(e, e + t), i); + })(e >>> 0, t >>> 0); + }; + e.wbg.__wbg_copyrgb_d60ce17bb05d9b67 = function (e) { + !(function copy_rgb(e) { + const { _destBuffer: t, _destOffset: a, _memoryArray: r } = QCMS; + t[a] = r[e]; + t[a + 1] = r[e + 1]; + t[a + 2] = r[e + 2]; + })(e >>> 0); + }; + e.wbg.__wbg_makecssRGB_893bf0cd9fdb302d = function (e) { + !(function make_cssRGB(e) { + const { _memoryArray: t } = QCMS; + QCMS._cssColor = QCMS._makeHexColor(t[e], t[e + 1], t[e + 2]); + })(e >>> 0); + }; + e.wbg.__wbindgen_init_externref_table = function () { + const e = ya.__wbindgen_export_0, + t = e.grow(4); + e.set(0, void 0); + e.set(t + 0, void 0); + e.set(t + 1, null); + e.set(t + 2, !0); + e.set(t + 3, !1); + }; + e.wbg.__wbindgen_throw = function (e, t) { + throw new Error( + (function getStringFromWasm0(e, t) { + e >>>= 0; + return wa.decode(getUint8ArrayMemory0().subarray(e, e + t)); + })(e, t), + ); + }; + return e; +} +function __wbg_finalize_init(e, t) { + ya = e.exports; + __wbg_init.__wbindgen_wasm_module = t; + xa = null; + ya.__wbindgen_start(); + return ya; +} +async function __wbg_init(e) { + if (void 0 !== ya) return ya; + void 0 !== e && + (Object.getPrototypeOf(e) === Object.prototype + ? ({ module_or_path: e } = e) + : console.warn( + "using deprecated parameters for the initialization function; pass a single object instead", + )); + const t = __wbg_get_imports(); + ("string" == typeof e || + ("function" == typeof Request && e instanceof Request) || + ("function" == typeof URL && e instanceof URL)) && + (e = fetch(e)); + const { instance: a, module: r } = await (async function __wbg_load(e, t) { + if ("function" == typeof Response && e instanceof Response) { + if ("function" == typeof WebAssembly.instantiateStreaming) + try { + return await WebAssembly.instantiateStreaming(e, t); + } catch (t) { + if ("application/wasm" == e.headers.get("Content-Type")) throw t; + console.warn( + "`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", + t, + ); + } + const a = await e.arrayBuffer(); + return await WebAssembly.instantiate(a, t); + } + { + const a = await WebAssembly.instantiate(e, t); + return a instanceof WebAssembly.Instance ? { instance: a, module: e } : a; + } + })(await e, t); + return __wbg_finalize_init(a, r); +} +class ColorSpace { + static #r = new Uint8ClampedArray(3); + constructor(e, t) { + this.name = e; + this.numComps = t; + } + getRgb(e, t, a = new Uint8ClampedArray(3)) { + this.getRgbItem(e, t, a, 0); + return a; + } + getRgbHex(e, t) { + const a = this.getRgb(e, t, ColorSpace.#r); + return Util.makeHexColor(a[0], a[1], a[2]); + } + getRgbItem(e, t, a, r) { + unreachable("Should not call ColorSpace.getRgbItem"); + } + getRgbBuffer(e, t, a, r, i, n, s) { + 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, a, r, i, n, s, o, c) { + const l = t * a; + let h = null; + const u = 1 << s, + d = a !== i || t !== r; + if (this.isPassthrough(s)) h = o; + else if ( + 1 === this.numComps && + l > u && + "DeviceGray" !== this.name && + "DeviceRGB" !== this.name + ) { + const t = s <= 8 ? new Uint8Array(u) : new Uint16Array(u); + for (let e = 0; e < u; e++) t[e] = e; + const a = new Uint8ClampedArray(3 * u); + this.getRgbBuffer(t, 0, u, a, 0, s, 0); + if (d) { + h = new Uint8Array(3 * l); + let e = 0; + for (let t = 0; t < l; ++t) { + const r = 3 * o[t]; + h[e++] = a[r]; + h[e++] = a[r + 1]; + h[e++] = a[r + 2]; + } + } else { + let t = 0; + for (let r = 0; r < l; ++r) { + const i = 3 * o[r]; + e[t++] = a[i]; + e[t++] = a[i + 1]; + e[t++] = a[i + 2]; + t += c; + } + } + } else if (d) { + h = new Uint8ClampedArray(3 * l); + this.getRgbBuffer(o, 0, l, h, 0, s, 0); + } else this.getRgbBuffer(o, 0, r * n, e, 0, s, c); + if (h) + if (d) + !(function resizeRgbImage(e, t, a, r, i, n, s) { + s = 1 !== s ? 0 : s; + const o = a / i, + c = r / n; + let l, + h = 0; + const u = new Uint16Array(i), + d = 3 * a; + for (let e = 0; e < i; e++) u[e] = 3 * Math.floor(e * o); + for (let a = 0; a < n; a++) { + const r = Math.floor(a * c) * d; + for (let a = 0; a < i; a++) { + l = r + u[a]; + t[h++] = e[l++]; + t[h++] = e[l++]; + t[h++] = e[l++]; + h += s; + } + } + })(h, e, t, a, r, i, c); + else { + let t = 0, + a = 0; + for (let i = 0, s = r * n; i < s; i++) { + e[t++] = h[a++]; + e[t++] = h[a++]; + e[t++] = h[a++]; + t += c; + } + } + } + get usesZeroToOneRange() { + return shadow(this, "usesZeroToOneRange", !0); + } + static isDefaultDecode(e, t) { + if (!Array.isArray(e)) return !0; + if (2 * t !== e.length) { + warn("The decode map is not the correct length"); + return !0; + } + for (let t = 0, a = e.length; t < a; t += 2) + if (0 !== e[t] || 1 !== e[t + 1]) return !1; + return !0; + } +} +class AlternateCS extends ColorSpace { + constructor(e, t, a) { + super("Alternate", e); + this.base = t; + this.tintFn = a; + this.tmpBuf = new Float32Array(t.numComps); + } + getRgbItem(e, t, a, r) { + const i = this.tmpBuf; + this.tintFn(e, t, i, 0); + this.base.getRgbItem(i, 0, a, r); + } + getRgbBuffer(e, t, a, r, i, n, s) { + const o = this.tintFn, + c = this.base, + l = 1 / ((1 << n) - 1), + h = c.numComps, + u = c.usesZeroToOneRange, + d = (c.isPassthrough(8) || !u) && 0 === s; + let f = d ? i : 0; + const g = d ? r : new Uint8ClampedArray(h * a), + p = this.numComps, + m = new Float32Array(p), + b = new Float32Array(h); + let y, w; + for (y = 0; y < a; y++) { + for (w = 0; w < p; w++) m[w] = e[t++] * l; + o(m, 0, b, 0); + if (u) for (w = 0; w < h; w++) g[f++] = 255 * b[w]; + else { + c.getRgbItem(b, 0, g, f); + f += h; + } + } + d || c.getRgbBuffer(g, 0, a, r, i, 8, s); + } + getOutputLength(e, t) { + return this.base.getOutputLength( + (e * this.base.numComps) / this.numComps, + t, + ); + } +} +class PatternCS extends ColorSpace { + constructor(e) { + super("Pattern", null); + this.base = e; + } + isDefaultDecode(e, t) { + unreachable("Should not call PatternCS.isDefaultDecode"); + } +} +class IndexedCS extends ColorSpace { + constructor(e, t, a) { + super("Indexed", 1); + this.base = e; + this.highVal = t; + const r = e.numComps * (t + 1); + this.lookup = new Uint8Array(r); + if (a instanceof BaseStream) { + const e = a.getBytes(r); + this.lookup.set(e); + } else { + if ("string" != typeof a) + throw new FormatError(`IndexedCS - unrecognized lookup table: ${a}`); + for (let e = 0; e < r; ++e) this.lookup[e] = 255 & a.charCodeAt(e); + } + } + getRgbItem(e, t, a, r) { + const { base: i, highVal: n, lookup: s } = this, + o = MathClamp(Math.round(e[t]), 0, n) * i.numComps; + i.getRgbBuffer(s, o, 1, a, r, 8, 0); + } + getRgbBuffer(e, t, a, r, i, n, s) { + const { base: o, highVal: c, lookup: l } = this, + { numComps: h } = o, + u = o.getOutputLength(h, s); + for (let n = 0; n < a; ++n) { + const a = MathClamp(Math.round(e[t++]), 0, c) * h; + o.getRgbBuffer(l, a, 1, r, i, 8, s); + i += u; + } + } + getOutputLength(e, t) { + return this.base.getOutputLength(e * this.base.numComps, t); + } + isDefaultDecode(e, t) { + if (!Array.isArray(e)) return !0; + if (2 !== e.length) { + warn("Decode map length is not correct"); + return !0; + } + if (!Number.isInteger(t) || t < 1) { + warn("Bits per component is not correct"); + return !0; + } + return 0 === e[0] && e[1] === (1 << t) - 1; + } +} +class DeviceGrayCS extends ColorSpace { + constructor() { + super("DeviceGray", 1); + } + getRgbItem(e, t, a, r) { + const i = 255 * e[t]; + a[r] = a[r + 1] = a[r + 2] = i; + } + getRgbBuffer(e, t, a, r, i, n, s) { + const o = 255 / ((1 << n) - 1); + let c = t, + l = i; + for (let t = 0; t < a; ++t) { + const t = o * e[c++]; + r[l++] = t; + r[l++] = t; + r[l++] = t; + l += s; + } + } + getOutputLength(e, t) { + return e * (3 + t); + } +} +class DeviceRgbCS extends ColorSpace { + constructor() { + super("DeviceRGB", 3); + } + getRgbItem(e, t, a, r) { + a[r] = 255 * e[t]; + a[r + 1] = 255 * e[t + 1]; + a[r + 2] = 255 * e[t + 2]; + } + getRgbBuffer(e, t, a, r, i, n, s) { + if (8 === n && 0 === s) { + r.set(e.subarray(t, t + 3 * a), i); + return; + } + const o = 255 / ((1 << n) - 1); + let c = t, + l = i; + for (let t = 0; t < a; ++t) { + r[l++] = o * e[c++]; + r[l++] = o * e[c++]; + r[l++] = o * e[c++]; + l += s; + } + } + getOutputLength(e, t) { + return ((e * (3 + t)) / 3) | 0; + } + isPassthrough(e) { + return 8 === e; + } +} +class DeviceRgbaCS extends ColorSpace { + constructor() { + super("DeviceRGBA", 4); + } + getOutputLength(e, t) { + return 4 * e; + } + isPassthrough(e) { + return 8 === e; + } + fillRgb(e, t, a, r, i, n, s, o, c) { + a !== i || t !== r + ? (function resizeRgbaImage(e, t, a, r, i, n, s) { + const o = a / i, + c = r / n; + let l = 0; + const h = new Uint16Array(i); + if (1 === s) { + for (let e = 0; e < i; e++) h[e] = Math.floor(e * o); + const r = new Uint32Array(e.buffer), + s = new Uint32Array(t.buffer), + u = FeatureTest.isLittleEndian ? 16777215 : 4294967040; + for (let e = 0; e < n; e++) { + const t = r.subarray(Math.floor(e * c) * a); + for (let e = 0; e < i; e++) s[l++] |= t[h[e]] & u; + } + } else { + const r = 4, + s = a * r; + for (let e = 0; e < i; e++) h[e] = Math.floor(e * o) * r; + for (let a = 0; a < n; a++) { + const r = e.subarray(Math.floor(a * c) * s); + for (let e = 0; e < i; e++) { + const a = h[e]; + t[l++] = r[a]; + t[l++] = r[a + 1]; + t[l++] = r[a + 2]; + } + } + } + })(o, e, t, a, r, i, c) + : (function copyRgbaImage(e, t, a) { + if (1 === a) { + const a = new Uint32Array(e.buffer), + r = new Uint32Array(t.buffer), + i = FeatureTest.isLittleEndian ? 16777215 : 4294967040; + for (let e = 0, t = a.length; e < t; e++) r[e] |= a[e] & i; + } else { + let a = 0; + for (let r = 0, i = e.length; r < i; r += 4) { + t[a++] = e[r]; + t[a++] = e[r + 1]; + t[a++] = e[r + 2]; + } + } + })(o, e, c); + } +} +class DeviceCmykCS extends ColorSpace { + constructor() { + super("DeviceCMYK", 4); + } + #i(e, t, a, r, i) { + const n = e[t] * a, + s = e[t + 1] * a, + o = e[t + 2] * a, + c = e[t + 3] * a; + r[i] = + 255 + + n * + (-4.387332384609988 * n + + 54.48615194189176 * s + + 18.82290502165302 * o + + 212.25662451639585 * c - + 285.2331026137004) + + s * + (1.7149763477362134 * s - + 5.6096736904047315 * o + + -17.873870861415444 * c - + 5.497006427196366) + + o * + (-2.5217340131683033 * o - 21.248923337353073 * c + 17.5119270841813) + + c * (-21.86122147463605 * c - 189.48180835922747); + r[i + 1] = + 255 + + n * + (8.841041422036149 * n + + 60.118027045597366 * s + + 6.871425592049007 * o + + 31.159100130055922 * c - + 79.2970844816548) + + s * + (-15.310361306967817 * s + + 17.575251261109482 * o + + 131.35250912493976 * c - + 190.9453302588951) + + o * (4.444339102852739 * o + 9.8632861493405 * c - 24.86741582555878) + + c * (-20.737325471181034 * c - 187.80453709719578); + r[i + 2] = + 255 + + n * + (0.8842522430003296 * n + + 8.078677503112928 * s + + 30.89978309703729 * o - + 0.23883238689178934 * c - + 14.183576799673286) + + s * + (10.49593273432072 * s + + 63.02378494754052 * o + + 50.606957656360734 * c - + 112.23884253719248) + + o * + (0.03296041114873217 * o + + 115.60384449646641 * c - + 193.58209356861505) + + c * (-22.33816807309886 * c - 180.12613974708367); + } + getRgbItem(e, t, a, r) { + this.#i(e, t, 1, a, r); + } + getRgbBuffer(e, t, a, r, i, n, s) { + const o = 1 / ((1 << n) - 1); + for (let n = 0; n < a; n++) { + this.#i(e, t, o, r, i); + t += 4; + i += 3 + s; + } + } + getOutputLength(e, t) { + return ((e / 4) * (3 + t)) | 0; + } +} +class CalGrayCS extends ColorSpace { + constructor(e, t, a) { + super("CalGray", 1); + if (!e) + throw new FormatError( + "WhitePoint missing - required for color space CalGray", + ); + [this.XW, this.YW, this.ZW] = e; + [this.XB, this.YB, this.ZB] = t || [0, 0, 0]; + this.G = a || 1; + if (this.XW < 0 || this.ZW < 0 || 1 !== this.YW) + throw new FormatError( + `Invalid WhitePoint components for ${this.name}, no fallback available`, + ); + if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { + info(`Invalid BlackPoint for ${this.name}, falling back to default.`); + this.XB = this.YB = this.ZB = 0; + } + (0 === this.XB && 0 === this.YB && 0 === this.ZB) || + warn( + `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ZB: ${this.ZB}, only default values are supported.`, + ); + if (this.G < 1) { + info( + `Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`, + ); + this.G = 1; + } + } + #i(e, t, a, r, i) { + const n = (e[t] * i) ** this.G, + s = this.YW * n, + o = Math.max(295.8 * s ** 0.3333333333333333 - 40.8, 0); + a[r] = o; + a[r + 1] = o; + a[r + 2] = o; + } + getRgbItem(e, t, a, r) { + this.#i(e, t, a, r, 1); + } + getRgbBuffer(e, t, a, r, i, n, s) { + const o = 1 / ((1 << n) - 1); + for (let n = 0; n < a; ++n) { + this.#i(e, t, r, i, o); + t += 1; + i += 3 + s; + } + } + getOutputLength(e, t) { + return e * (3 + t); + } +} +class CalRGBCS extends ColorSpace { + static #n = new Float32Array([ + 0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296, + ]); + static #s = new Float32Array([ + 0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, + -0.0085287, 0.0400428, 0.9684867, + ]); + static #o = new Float32Array([ + 3.2404542, -1.5371385, -0.4985314, -0.969266, 1.8760108, 0.041556, + 0.0556434, -0.2040259, 1.0572252, + ]); + static #c = new Float32Array([1, 1, 1]); + static #l = new Float32Array(3); + static #h = new Float32Array(3); + static #u = new Float32Array(3); + static #d = (24 / 116) ** 3 / 8; + constructor(e, t, a, r) { + super("CalRGB", 3); + if (!e) + throw new FormatError( + "WhitePoint missing - required for color space CalRGB", + ); + const [i, n, s] = (this.whitePoint = e), + [o, c, l] = (this.blackPoint = t || new Float32Array(3)); + [this.GR, this.GG, this.GB] = a || new Float32Array([1, 1, 1]); + [ + this.MXA, + this.MYA, + this.MZA, + this.MXB, + this.MYB, + this.MZB, + this.MXC, + this.MYC, + this.MZC, + ] = r || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); + if (i < 0 || s < 0 || 1 !== n) + throw new FormatError( + `Invalid WhitePoint components for ${this.name}, no fallback available`, + ); + if (o < 0 || c < 0 || l < 0) { + info( + `Invalid BlackPoint for ${this.name} [${o}, ${c}, ${l}], falling back to default.`, + ); + this.blackPoint = new Float32Array(3); + } + if (this.GR < 0 || this.GG < 0 || this.GB < 0) { + info( + `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ${this.name}, falling back to default.`, + ); + this.GR = this.GG = this.GB = 1; + } + } + #f(e, t, a) { + a[0] = e[0] * t[0] + e[1] * t[1] + e[2] * t[2]; + a[1] = e[3] * t[0] + e[4] * t[1] + e[5] * t[2]; + a[2] = e[6] * t[0] + e[7] * t[1] + e[8] * t[2]; + } + #g(e, t, a) { + a[0] = (1 * t[0]) / e[0]; + a[1] = (1 * t[1]) / e[1]; + a[2] = (1 * t[2]) / e[2]; + } + #p(e, t, a) { + a[0] = (0.95047 * t[0]) / e[0]; + a[1] = (1 * t[1]) / e[1]; + a[2] = (1.08883 * t[2]) / e[2]; + } + #m(e) { + return e <= 0.0031308 + ? MathClamp(12.92 * e, 0, 1) + : e >= 0.99554525 + ? 1 + : MathClamp(1.055 * e ** (1 / 2.4) - 0.055, 0, 1); + } + #b(e) { + return e < 0 + ? -this.#b(-e) + : e > 8 + ? ((e + 16) / 116) ** 3 + : e * CalRGBCS.#d; + } + #y(e, t, a) { + if (0 === e[0] && 0 === e[1] && 0 === e[2]) { + a[0] = t[0]; + a[1] = t[1]; + a[2] = t[2]; + return; + } + const r = this.#b(0), + i = (1 - r) / (1 - this.#b(e[0])), + n = 1 - i, + s = (1 - r) / (1 - this.#b(e[1])), + o = 1 - s, + c = (1 - r) / (1 - this.#b(e[2])), + l = 1 - c; + a[0] = t[0] * i + n; + a[1] = t[1] * s + o; + a[2] = t[2] * c + l; + } + #w(e, t, a) { + if (1 === e[0] && 1 === e[2]) { + a[0] = t[0]; + a[1] = t[1]; + a[2] = t[2]; + return; + } + const r = a; + this.#f(CalRGBCS.#n, t, r); + const i = CalRGBCS.#l; + this.#g(e, r, i); + this.#f(CalRGBCS.#s, i, a); + } + #x(e, t, a) { + const r = a; + this.#f(CalRGBCS.#n, t, r); + const i = CalRGBCS.#l; + this.#p(e, r, i); + this.#f(CalRGBCS.#s, i, a); + } + #i(e, t, a, r, i) { + const n = MathClamp(e[t] * i, 0, 1), + s = MathClamp(e[t + 1] * i, 0, 1), + o = MathClamp(e[t + 2] * i, 0, 1), + c = 1 === n ? 1 : n ** this.GR, + l = 1 === s ? 1 : s ** this.GG, + h = 1 === o ? 1 : o ** this.GB, + u = this.MXA * c + this.MXB * l + this.MXC * h, + d = this.MYA * c + this.MYB * l + this.MYC * h, + f = this.MZA * c + this.MZB * l + this.MZC * h, + g = CalRGBCS.#h; + g[0] = u; + g[1] = d; + g[2] = f; + const p = CalRGBCS.#u; + this.#w(this.whitePoint, g, p); + const m = CalRGBCS.#h; + this.#y(this.blackPoint, p, m); + const b = CalRGBCS.#u; + this.#x(CalRGBCS.#c, m, b); + const y = CalRGBCS.#h; + this.#f(CalRGBCS.#o, b, y); + a[r] = 255 * this.#m(y[0]); + a[r + 1] = 255 * this.#m(y[1]); + a[r + 2] = 255 * this.#m(y[2]); + } + getRgbItem(e, t, a, r) { + this.#i(e, t, a, r, 1); + } + getRgbBuffer(e, t, a, r, i, n, s) { + const o = 1 / ((1 << n) - 1); + for (let n = 0; n < a; ++n) { + this.#i(e, t, r, i, o); + t += 3; + i += 3 + s; + } + } + getOutputLength(e, t) { + return ((e * (3 + t)) / 3) | 0; + } +} +class LabCS extends ColorSpace { + constructor(e, t, a) { + super("Lab", 3); + if (!e) + throw new FormatError( + "WhitePoint missing - required for color space Lab", + ); + [this.XW, this.YW, this.ZW] = e; + [this.amin, this.amax, this.bmin, this.bmax] = a || [-100, 100, -100, 100]; + [this.XB, this.YB, this.ZB] = t || [0, 0, 0]; + if (this.XW < 0 || this.ZW < 0 || 1 !== this.YW) + throw new FormatError( + "Invalid WhitePoint components, no fallback available", + ); + if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { + info("Invalid BlackPoint, falling back to default"); + this.XB = this.YB = this.ZB = 0; + } + if (this.amin > 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; + } + } + #S(e) { + return e >= 6 / 29 ? e ** 3 : (108 / 841) * (e - 4 / 29); + } + #A(e, t, a, r) { + return a + (e * (r - a)) / t; + } + #i(e, t, a, r, i) { + let n = e[t], + s = e[t + 1], + o = e[t + 2]; + if (!1 !== a) { + n = this.#A(n, a, 0, 100); + s = this.#A(s, a, this.amin, this.amax); + o = this.#A(o, a, this.bmin, this.bmax); + } + s > this.amax ? (s = this.amax) : s < this.amin && (s = this.amin); + o > this.bmax ? (o = this.bmax) : o < this.bmin && (o = this.bmin); + const c = (n + 16) / 116, + l = c + s / 500, + h = c - o / 200, + u = this.XW * this.#S(l), + d = this.YW * this.#S(c), + f = this.ZW * this.#S(h); + let g, p, m; + if (this.ZW < 1) { + g = 3.1339 * u + -1.617 * d + -0.4906 * f; + p = -0.9785 * u + 1.916 * d + 0.0333 * f; + m = 0.072 * u + -0.229 * d + 1.4057 * f; + } else { + g = 3.2406 * u + -1.5372 * d + -0.4986 * f; + p = -0.9689 * u + 1.8758 * d + 0.0415 * f; + m = 0.0557 * u + -0.204 * d + 1.057 * f; + } + r[i] = 255 * Math.sqrt(g); + r[i + 1] = 255 * Math.sqrt(p); + r[i + 2] = 255 * Math.sqrt(m); + } + getRgbItem(e, t, a, r) { + this.#i(e, t, !1, a, r); + } + getRgbBuffer(e, t, a, r, i, n, s) { + const o = (1 << n) - 1; + for (let n = 0; n < a; n++) { + this.#i(e, t, o, r, i); + t += 3; + i += 3 + s; + } + } + getOutputLength(e, t) { + return ((e * (3 + t)) / 3) | 0; + } + isDefaultDecode(e, t) { + return !0; + } + get usesZeroToOneRange() { + return shadow(this, "usesZeroToOneRange", !1); + } +} +function fetchSync(e) { + const t = new XMLHttpRequest(); + t.open("GET", e, !1); + t.responseType = "arraybuffer"; + t.send(null); + return t.response; +} +class IccColorSpace extends ColorSpace { + #k; + #C; + static #v = !0; + static #F = null; + static #I = null; + constructor(e, t, a) { + if (!IccColorSpace.isUsable) throw new Error("No ICC color space support"); + super(t, a); + let r; + switch (a) { + case 1: + r = Aa.Gray8; + this.#C = (e, t, a) => + (function qcms_convert_one(e, t, a) { + ya.qcms_convert_one(e, t, a); + })(this.#k, 255 * e[t], a); + break; + case 3: + r = Aa.RGB8; + this.#C = (e, t, a) => + (function qcms_convert_three(e, t, a, r, i) { + ya.qcms_convert_three(e, t, a, r, i); + })(this.#k, 255 * e[t], 255 * e[t + 1], 255 * e[t + 2], a); + break; + case 4: + r = Aa.CMYK; + this.#C = (e, t, a) => + (function qcms_convert_four(e, t, a, r, i, n) { + ya.qcms_convert_four(e, t, a, r, i, n); + })( + this.#k, + 255 * e[t], + 255 * e[t + 1], + 255 * e[t + 2], + 255 * e[t + 3], + a, + ); + break; + default: + throw new Error(`Unsupported number of components: ${a}`); + } + this.#k = (function qcms_transformer_from_memory(e, t, a) { + const r = passArray8ToWasm0(e, ya.__wbindgen_malloc), + i = Sa; + return ya.qcms_transformer_from_memory(r, i, t, a) >>> 0; + })(e, r, ka.Perceptual); + if (!this.#k) throw new Error("Failed to create ICC color space"); + IccColorSpace.#I ||= new FinalizationRegistry((e) => { + !(function qcms_drop_transformer(e) { + ya.qcms_drop_transformer(e); + })(e); + }); + IccColorSpace.#I.register(this, this.#k); + } + getRgbHex(e, t) { + this.#C(e, t, !0); + return QCMS._cssColor; + } + getRgbItem(e, t, a, r) { + QCMS._destBuffer = a; + QCMS._destOffset = r; + QCMS._destLength = 3; + this.#C(e, t, !1); + QCMS._destBuffer = null; + } + getRgbBuffer(e, t, a, r, i, n, s) { + e = e.subarray(t, t + a * this.numComps); + if (8 !== n) { + const t = 255 / ((1 << n) - 1); + for (let a = 0, r = e.length; a < r; a++) e[a] *= t; + } + QCMS._mustAddAlpha = s && r.buffer === e.buffer; + QCMS._destBuffer = r; + QCMS._destOffset = i; + QCMS._destLength = a * (3 + s); + !(function qcms_convert_array(e, t) { + const a = passArray8ToWasm0(t, ya.__wbindgen_malloc), + r = Sa; + ya.qcms_convert_array(e, a, r); + })(this.#k, e); + QCMS._mustAddAlpha = !1; + QCMS._destBuffer = null; + } + getOutputLength(e, t) { + return ((e / this.numComps) * (3 + t)) | 0; + } + static setOptions({ useWasm: e, useWorkerFetch: t, wasmUrl: a }) { + if (t) { + this.#v = e; + this.#F = a; + } else this.#v = !1; + } + static get isUsable() { + let e = !1; + if (this.#v) + if (this.#F) + try { + this._module = (function initSync(e) { + if (void 0 !== ya) return ya; + void 0 !== e && + (Object.getPrototypeOf(e) === Object.prototype + ? ({ module: e } = e) + : console.warn( + "using deprecated parameters for `initSync()`; pass a single object instead", + )); + const t = __wbg_get_imports(); + e instanceof WebAssembly.Module || (e = new WebAssembly.Module(e)); + return __wbg_finalize_init(new WebAssembly.Instance(e, t), e); + })({ module: fetchSync(`${this.#F}qcms_bg.wasm`) }); + e = !!this._module; + QCMS._memory = this._module.memory; + QCMS._makeHexColor = Util.makeHexColor; + } catch (e) { + warn(`ICCBased color space: "${e}".`); + } + else + warn("No ICC color space support due to missing `wasmUrl` API option"); + return shadow(this, "isUsable", e); + } +} +class CmykICCBasedCS extends IccColorSpace { + static #T; + constructor() { + super( + new Uint8Array( + fetchSync(`${CmykICCBasedCS.#T}CGATS001Compat-v2-micro.icc`), + ), + "DeviceCMYK", + 4, + ); + } + static setOptions({ iccUrl: e }) { + this.#T = e; + } + static get isUsable() { + let e = !1; + IccColorSpace.isUsable && + (this.#T + ? (e = !0) + : warn( + "No CMYK ICC profile support due to missing `iccUrl` API option", + )); + return shadow(this, "isUsable", e); + } +} +class Stream extends BaseStream { + constructor(e, t, a, r) { + super(); + this.bytes = e instanceof Uint8Array ? e : new Uint8Array(e); + this.start = t || 0; + this.pos = this.start; + this.end = t + a || this.bytes.length; + this.dict = r; + } + 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, + a = this.pos, + r = this.end; + if (!e) return t.subarray(a, r); + let i = a + e; + i > r && (i = r); + this.pos = i; + return t.subarray(a, i); + } + 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, a = null) { + return new Stream(this.bytes.buffer, e, t, a); + } +} +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, a) { + super(new Uint8Array(e), 0, e, null); + this.chunkSize = t; + this._loadedChunks = new Set(); + this.numChunks = Math.ceil(e / t); + this.manager = a; + this.progressiveDataLength = 0; + this.lastSuccessfulEnsureByteChunk = -1; + } + getMissingChunks() { + const e = []; + for (let t = 0, a = this.numChunks; t < a; ++t) + this._loadedChunks.has(t) || e.push(t); + return e; + } + get numChunksLoaded() { + return this._loadedChunks.size; + } + get isDataLoaded() { + return this.numChunksLoaded === this.numChunks; + } + onReceiveData(e, t) { + const a = this.chunkSize; + if (e % a !== 0) throw new Error(`Bad begin offset: ${e}`); + const r = e + t.byteLength; + if (r % a !== 0 && r !== this.bytes.length) + throw new Error(`Bad end offset: ${r}`); + this.bytes.set(new Uint8Array(t), e); + const i = Math.floor(e / a), + n = Math.floor((r - 1) / a) + 1; + for (let e = i; e < n; ++e) this._loadedChunks.add(e); + } + onReceiveProgressiveData(e) { + let t = this.progressiveDataLength; + const a = Math.floor(t / this.chunkSize); + this.bytes.set(new Uint8Array(e), t); + t += e.byteLength; + this.progressiveDataLength = t; + const r = t >= this.end ? this.numChunks : Math.floor(t / this.chunkSize); + for (let e = a; e < r; ++e) this._loadedChunks.add(e); + } + ensureByte(e) { + if (e < this.progressiveDataLength) return; + const t = Math.floor(e / this.chunkSize); + if (!(t > this.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 a = Math.floor(e / this.chunkSize); + if (a > this.numChunks) return; + const r = Math.min( + Math.floor((t - 1) / this.chunkSize) + 1, + this.numChunks, + ); + for (let i = a; i < r; ++i) + if (!this._loadedChunks.has(i)) throw new MissingDataException(e, t); + } + nextEmptyChunk(e) { + const t = this.numChunks; + for (let a = 0; a < t; ++a) { + const r = (e + a) % t; + if (!this._loadedChunks.has(r)) return r; + } + return null; + } + hasChunk(e) { + return this._loadedChunks.has(e); + } + getByte() { + const e = this.pos; + if (e >= this.end) return -1; + e >= this.progressiveDataLength && this.ensureByte(e); + return this.bytes[this.pos++]; + } + getBytes(e) { + const t = this.bytes, + a = this.pos, + r = this.end; + if (!e) { + r > this.progressiveDataLength && this.ensureRange(a, r); + return t.subarray(a, r); + } + let i = a + e; + i > r && (i = r); + i > this.progressiveDataLength && this.ensureRange(a, i); + this.pos = i; + return t.subarray(a, i); + } + 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, a = 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), + a = Math.floor((this.end - 1) / e) + 1, + r = []; + for (let e = t; e < a; ++e) this._loadedChunks.has(e) || r.push(e); + return r; + }; + Object.defineProperty(ChunkedStreamSubstream.prototype, "isDataLoaded", { + get() { + return ( + this.numChunksLoaded === this.numChunks || + 0 === this.getMissingChunks().length + ); + }, + configurable: !0, + }); + const r = new ChunkedStreamSubstream(); + r.pos = r.start = e; + r.end = e + t || this.end; + r.dict = a; + return r; + } + getBaseStreams() { + return [this]; + } +} +class ChunkedStreamManager { + constructor(e, t) { + this.length = t.length; + this.chunkSize = t.rangeChunkSize; + this.stream = new ChunkedStream(this.length, this.chunkSize, this); + this.pdfNetworkStream = e; + this.disableAutoFetch = t.disableAutoFetch; + this.msgHandler = t.msgHandler; + this.currRequestId = 0; + this._chunksNeededByRequest = new Map(); + this._requestsByChunk = new Map(); + this._promisesByRequest = new Map(); + this.progressiveDataLength = 0; + this.aborted = !1; + this._loadedStreamCapability = Promise.withResolvers(); + } + sendRequest(e, t) { + const a = this.pdfNetworkStream.getRangeReader(e, t); + a.isStreamingSupported || (a.onProgress = this.onProgress.bind(this)); + let r = [], + i = 0; + return new Promise((e, t) => { + const readChunk = ({ value: n, done: s }) => { + try { + if (s) { + const t = arrayBuffersToBytes(r); + r = null; + e(t); + return; + } + i += n.byteLength; + a.isStreamingSupported && this.onProgress({ loaded: i }); + r.push(n); + a.read().then(readChunk, t); + } catch (e) { + t(e); + } + }; + a.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++, + a = new Set(); + this._chunksNeededByRequest.set(t, a); + for (const t of e) this.stream.hasChunk(t) || a.add(t); + if (0 === a.size) return Promise.resolve(); + const r = Promise.withResolvers(); + this._promisesByRequest.set(t, r); + const i = []; + for (const e of a) { + let a = this._requestsByChunk.get(e); + if (!a) { + a = []; + this._requestsByChunk.set(e, a); + i.push(e); + } + a.push(t); + } + if (i.length > 0) { + const e = this.groupChunks(i); + for (const t of e) { + const e = t.beginChunk * this.chunkSize, + a = Math.min(t.endChunk * this.chunkSize, this.length); + this.sendRequest(e, a).catch(r.reject); + } + } + return r.promise.catch((e) => { + if (!this.aborted) throw e; + }); + } + getStream() { + return this.stream; + } + requestRange(e, t) { + t = Math.min(t, this.length); + const a = this.getBeginChunk(e), + r = this.getEndChunk(t), + i = []; + for (let e = a; e < r; ++e) i.push(e); + return this._requestChunks(i); + } + requestRanges(e = []) { + const t = []; + for (const a of e) { + const e = this.getBeginChunk(a.begin), + r = this.getEndChunk(a.end); + for (let a = e; a < r; ++a) t.includes(a) || t.push(a); + } + t.sort((e, t) => e - t); + return this._requestChunks(t); + } + groupChunks(e) { + const t = []; + let a = -1, + r = -1; + for (let i = 0, n = e.length; i < n; ++i) { + const n = e[i]; + a < 0 && (a = n); + if (r >= 0 && r + 1 !== n) { + t.push({ beginChunk: a, endChunk: r + 1 }); + a = n; + } + i + 1 === e.length && t.push({ beginChunk: a, endChunk: n + 1 }); + r = n; + } + 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, + a = void 0 === e.begin, + r = a ? this.progressiveDataLength : e.begin, + i = r + t.byteLength, + n = Math.floor(r / this.chunkSize), + s = + i < this.length + ? Math.floor(i / this.chunkSize) + : Math.ceil(i / this.chunkSize); + if (a) { + this.stream.onReceiveProgressiveData(t); + this.progressiveDataLength = i; + } else this.stream.onReceiveData(r, t); + this.stream.isDataLoaded && + this._loadedStreamCapability.resolve(this.stream); + const o = []; + for (let e = n; e < s; ++e) { + const t = this._requestsByChunk.get(e); + if (t) { + this._requestsByChunk.delete(e); + for (const a of t) { + const t = this._chunksNeededByRequest.get(a); + t.has(e) && t.delete(e); + t.size > 0 || o.push(a); + } + } + } + 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(s); + Number.isInteger(e) && this._requestChunks([e]); + } + for (const e of o) { + 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); + } +} +function convertToRGBA(e) { + switch (e.kind) { + case F: + return convertBlackAndWhiteToRGBA(e); + case T: + return (function convertRGBToRGBA({ + src: e, + srcPos: t = 0, + dest: a, + destPos: r = 0, + width: i, + height: n, + }) { + let s = 0; + const o = i * n * 3, + c = o >> 2, + l = new Uint32Array(e.buffer, t, c); + if (FeatureTest.isLittleEndian) { + for (; s < c - 2; s += 3, r += 4) { + const e = l[s], + t = l[s + 1], + i = l[s + 2]; + a[r] = 4278190080 | e; + a[r + 1] = (e >>> 24) | (t << 8) | 4278190080; + a[r + 2] = (t >>> 16) | (i << 16) | 4278190080; + a[r + 3] = (i >>> 8) | 4278190080; + } + for (let i = 4 * s, n = t + o; i < n; i += 3) + a[r++] = e[i] | (e[i + 1] << 8) | (e[i + 2] << 16) | 4278190080; + } else { + for (; s < c - 2; s += 3, r += 4) { + const e = l[s], + t = l[s + 1], + i = l[s + 2]; + a[r] = 255 | e; + a[r + 1] = (e << 24) | (t >>> 8) | 255; + a[r + 2] = (t << 16) | (i >>> 16) | 255; + a[r + 3] = (i << 8) | 255; + } + for (let i = 4 * s, n = t + o; i < n; i += 3) + a[r++] = (e[i] << 24) | (e[i + 1] << 16) | (e[i + 2] << 8) | 255; + } + return { srcPos: t + o, destPos: r }; + })(e); + } + return null; +} +function convertBlackAndWhiteToRGBA({ + src: e, + srcPos: t = 0, + dest: a, + width: r, + height: i, + nonBlackColor: n = 4294967295, + inverseDecode: s = !1, +}) { + const o = FeatureTest.isLittleEndian ? 4278190080 : 255, + [c, l] = s ? [n, o] : [o, n], + h = r >> 3, + u = 7 & r, + d = e.length; + a = new Uint32Array(a.buffer); + let f = 0; + for (let r = 0; r < i; r++) { + for (const r = t + h; t < r; t++) { + const r = t < d ? e[t] : 255; + a[f++] = 128 & r ? l : c; + a[f++] = 64 & r ? l : c; + a[f++] = 32 & r ? l : c; + a[f++] = 16 & r ? l : c; + a[f++] = 8 & r ? l : c; + a[f++] = 4 & r ? l : c; + a[f++] = 2 & r ? l : c; + a[f++] = 1 & r ? l : c; + } + if (0 === u) continue; + const r = t < d ? e[t++] : 255; + for (let e = 0; e < u; e++) a[f++] = r & (1 << (7 - e)) ? l : c; + } + return { srcPos: t, destPos: f }; +} +class ImageResizer { + static #O = 2048; + static #M = FeatureTest.isImageDecoderSupported; + constructor(e, t) { + this._imgData = e; + this._isMask = t; + } + static get canUseImageDecoder() { + return shadow( + this, + "canUseImageDecoder", + this.#M ? ImageDecoder.isTypeSupported("image/bmp") : Promise.resolve(!1), + ); + } + static needsToBeResized(e, t) { + if (e <= this.#O && t <= this.#O) return !1; + const { MAX_DIM: a } = this; + if (e > a || t > a) return !0; + const r = e * t; + if (this._hasMaxArea) return r > this.MAX_AREA; + if (r < this.#O ** 2) return !1; + if (this._areGoodDims(e, t)) { + this.#O = Math.max(this.#O, Math.floor(Math.sqrt(e * t))); + return !1; + } + this.#O = this._guessMax(this.#O, a, 128, 0); + return r > (this.MAX_AREA = this.#O ** 2); + } + static getReducePowerForJPX(e, t, a) { + const r = e * t, + i = 2 ** 30 / (4 * a); + if (!this.needsToBeResized(e, t)) + return r > i ? Math.ceil(Math.log2(r / i)) : 0; + const { MAX_DIM: n, MAX_AREA: s } = this, + o = Math.max(e / n, t / n, Math.sqrt(r / Math.min(i, s))); + return Math.ceil(Math.log2(o)); + } + 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.#O, 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.#M = t; + } + static _areGoodDims(e, t) { + try { + const a = new OffscreenCanvas(e, t), + r = a.getContext("2d"); + r.fillRect(0, 0, 1, 1); + const i = r.getImageData(0, 0, 1, 1).data[3]; + a.width = a.height = 1; + return 0 !== i; + } catch { + return !1; + } + } + static _guessMax(e, t, a, r) { + for (; e + a + 1 < t; ) { + const a = Math.floor((e + t) / 2), + i = r || a; + this._areGoodDims(a, i) ? (e = a) : (t = a); + } + return e; + } + static async createImage(e, t = !1) { + return new ImageResizer(e, t)._createImage(); + } + async _createImage() { + const { _imgData: e } = this, + { width: t, height: a } = e; + if (t * a * 4 > da) { + const e = this.#D(); + if (e) return e; + } + const r = this._encodeBMP(); + let i, n; + if (await ImageResizer.canUseImageDecoder) { + i = new ImageDecoder({ + data: r, + type: "image/bmp", + preferAnimation: !1, + transfer: [r.buffer], + }); + n = i + .decode() + .catch((e) => { + warn(`BMP image decoding failed: ${e}`); + return createImageBitmap( + new Blob([this._encodeBMP().buffer], { type: "image/bmp" }), + ); + }) + .finally(() => { + i.close(); + }); + } else n = createImageBitmap(new Blob([r.buffer], { type: "image/bmp" })); + const { MAX_AREA: s, MAX_DIM: o } = ImageResizer, + c = Math.max(t / o, a / o, Math.sqrt((t * a) / s)), + l = Math.max(c, 2), + h = Math.round(10 * (c + 1.25)) / 10 / l, + u = Math.floor(Math.log2(h)), + d = new Array(u + 2).fill(2); + d[0] = l; + d.splice(-1, 1, h / (1 << u)); + let f = t, + g = a; + const p = await n; + let m = p.image || p; + for (const e of d) { + const t = f, + a = g; + f = Math.floor(f / e) - 1; + g = Math.floor(g / e) - 1; + const r = new OffscreenCanvas(f, g); + r.getContext("2d").drawImage(m, 0, 0, t, a, 0, 0, f, g); + m.close(); + m = r.transferToImageBitmap(); + } + e.data = null; + e.bitmap = m; + e.width = f; + e.height = g; + return e; + } + #D() { + const { _imgData: e } = this, + { data: t, width: a, height: r, kind: i } = e, + n = a * r * 4, + s = Math.ceil(Math.log2(n / da)), + o = a >> s, + c = r >> s; + let l, + h = r; + try { + l = new Uint8Array(n); + } catch { + let e = Math.floor(Math.log2(n + 1)); + for (;;) + try { + l = new Uint8Array(2 ** e - 1); + break; + } catch { + e -= 1; + } + h = Math.floor((2 ** e - 1) / (4 * a)); + const t = a * h * 4; + t < l.length && (l = new Uint8Array(t)); + } + const u = new Uint32Array(l.buffer), + d = new Uint32Array(o * c); + let f = 0, + g = 0; + const p = Math.ceil(r / h), + m = r % h === 0 ? r : r % h; + for (let e = 0; e < p; e++) { + const r = e < p - 1 ? h : m; + ({ srcPos: f } = convertToRGBA({ + kind: i, + src: t, + dest: u, + width: a, + height: r, + inverseDecode: this._isMask, + srcPos: f, + })); + for (let e = 0, t = r >> s; e < t; e++) { + const t = u.subarray((e << s) * a); + for (let e = 0; e < o; e++) d[g++] = t[e << s]; + } + } + if (ImageResizer.needsToBeResized(o, c)) { + e.data = d; + e.width = o; + e.height = c; + e.kind = O; + return null; + } + const b = new OffscreenCanvas(o, c); + b.getContext("2d", { willReadFrequently: !0 }).putImageData( + new ImageData(new Uint8ClampedArray(d.buffer), o, c), + 0, + 0, + ); + e.data = null; + e.bitmap = b.transferToImageBitmap(); + e.width = o; + e.height = c; + return e; + } + _encodeBMP() { + const { width: e, height: t, kind: a } = this._imgData; + let r, + i = this._imgData.data, + n = new Uint8Array(0), + s = n, + o = 0; + switch (a) { + case F: { + r = 1; + n = new Uint8Array( + this._isMask + ? [255, 255, 255, 255, 0, 0, 0, 0] + : [0, 0, 0, 0, 255, 255, 255, 255], + ); + const a = (e + 7) >> 3, + s = (a + 3) & -4; + if (a !== s) { + const e = new Uint8Array(s * t); + let r = 0; + for (let n = 0, o = t * a; n < o; n += a, r += s) + e.set(i.subarray(n, n + a), r); + i = e; + } + break; + } + case T: + r = 24; + if (3 & e) { + const a = 3 * e, + r = (a + 3) & -4, + n = r - a, + s = new Uint8Array(r * t); + let o = 0; + for (let e = 0, r = t * a; e < r; e += a) { + const t = i.subarray(e, e + a); + for (let e = 0; e < a; e += 3) { + s[o++] = t[e + 2]; + s[o++] = t[e + 1]; + s[o++] = t[e]; + } + o += n; + } + i = s; + } else + for (let e = 0, t = i.length; e < t; e += 3) { + const t = i[e]; + i[e] = i[e + 2]; + i[e + 2] = t; + } + break; + case O: + r = 32; + o = 3; + s = new Uint8Array(68); + const a = new DataView(s.buffer); + if (FeatureTest.isLittleEndian) { + a.setUint32(0, 255, !0); + a.setUint32(4, 65280, !0); + a.setUint32(8, 16711680, !0); + a.setUint32(12, 4278190080, !0); + } else { + a.setUint32(0, 4278190080, !0); + a.setUint32(4, 16711680, !0); + a.setUint32(8, 65280, !0); + a.setUint32(12, 255, !0); + } + break; + default: + throw new Error("invalid format"); + } + let c = 0; + const l = 40 + s.length, + h = 14 + l + n.length + i.length, + u = new Uint8Array(h), + d = new DataView(u.buffer); + d.setUint16(c, 19778, !0); + c += 2; + d.setUint32(c, h, !0); + c += 4; + d.setUint32(c, 0, !0); + c += 4; + d.setUint32(c, 14 + l + n.length, !0); + c += 4; + d.setUint32(c, l, !0); + c += 4; + d.setInt32(c, e, !0); + c += 4; + d.setInt32(c, -t, !0); + c += 4; + d.setUint16(c, 1, !0); + c += 2; + d.setUint16(c, r, !0); + c += 2; + d.setUint32(c, o, !0); + c += 4; + d.setUint32(c, 0, !0); + c += 4; + d.setInt32(c, 0, !0); + c += 4; + d.setInt32(c, 0, !0); + c += 4; + d.setUint32(c, n.length / 4, !0); + c += 4; + d.setUint32(c, 0, !0); + c += 4; + u.set(s, c); + c += s.length; + u.set(n, c); + c += n.length; + u.set(i, c); + return u; + } +} +const Ca = new Uint8Array(0); +class DecodeStream extends BaseStream { + constructor(e) { + super(); + this._rawMinBufferLength = e || 0; + this.pos = 0; + this.bufferLength = 0; + this.eof = !1; + this.buffer = Ca; + this.minBufferLength = 512; + if (e) for (; this.minBufferLength < e; ) this.minBufferLength *= 2; + } + get isEmpty() { + for (; !this.eof && 0 === this.bufferLength; ) this.readBlock(); + return 0 === this.bufferLength; + } + ensureBuffer(e) { + const t = this.buffer; + if (e <= t.byteLength) return t; + let a = this.minBufferLength; + for (; a < e; ) a *= 2; + const r = new Uint8Array(a); + r.set(t); + return (this.buffer = r); + } + getByte() { + const e = this.pos; + for (; this.bufferLength <= e; ) { + if (this.eof) return -1; + this.readBlock(); + } + return this.buffer[this.pos++]; + } + getBytes(e, t = null) { + const a = this.pos; + let r; + if (e) { + this.ensureBuffer(a + e); + r = a + e; + for (; !this.eof && this.bufferLength < r; ) this.readBlock(t); + const i = this.bufferLength; + r > i && (r = i); + } else { + for (; !this.eof; ) this.readBlock(t); + r = this.bufferLength; + } + this.pos = r; + return this.buffer.subarray(a, r); + } + async getImageData(e, t) { + if (!this.canAsyncDecodeImageFromBuffer) + return this.isAsyncDecoder + ? this.decodeImage(null, t) + : this.getBytes(e, t); + const a = await this.stream.asyncGetBytes(); + return this.decodeImage(a, t); + } + reset() { + this.pos = 0; + } + makeSubStream(e, t, a = null) { + if (void 0 === t) for (; !this.eof; ) this.readBlock(); + else { + const a = e + t; + for (; this.bufferLength <= a && !this.eof; ) this.readBlock(); + } + return new Stream(this.buffer, e, t, a); + } + getBaseStreams() { + return this.stream ? this.stream.getBaseStreams() : null; + } +} +class StreamsSequenceStream extends DecodeStream { + constructor(e, t = null) { + e = e.filter((e) => e instanceof BaseStream); + let a = 0; + for (const t of e) + a += t instanceof DecodeStream ? t._rawMinBufferLength : t.length; + super(a); + this.streams = e; + this._onError = t; + } + readBlock() { + const e = this.streams; + if (0 === e.length) { + this.eof = !0; + return; + } + const t = e.shift(); + let a; + try { + a = t.getBytes(); + } catch (e) { + if (this._onError) { + this._onError(e, t.dict?.objId); + return; + } + throw e; + } + const r = this.bufferLength, + i = r + a.length; + this.ensureBuffer(i).set(a, r); + this.bufferLength = i; + } + getBaseStreams() { + const e = []; + for (const t of this.streams) { + const a = t.getBaseStreams(); + a && e.push(...a); + } + return e.length > 0 ? e : null; + } +} +class ColorSpaceUtils { + static parse({ + cs: e, + xref: t, + resources: a = null, + pdfFunctionFactory: r, + globalColorSpaceCache: i, + localColorSpaceCache: n, + asyncIfNotCached: s = !1, + }) { + const o = { + xref: t, + resources: a, + pdfFunctionFactory: r, + globalColorSpaceCache: i, + localColorSpaceCache: n, + }; + let c, l, h; + if (e instanceof Ref) { + l = e; + const a = i.getByRef(l) || n.getByRef(l); + if (a) return a; + e = t.fetch(e); + } + if (e instanceof Name) { + c = e.name; + const t = n.getByName(c); + if (t) return t; + } + try { + h = this.#B(e, o); + } catch (e) { + if (s && !(e instanceof MissingDataException)) return Promise.reject(e); + throw e; + } + if (c || l) { + n.set(c, l, h); + l && i.set(null, l, h); + } + return s ? Promise.resolve(h) : h; + } + static #R(e, t) { + const { globalColorSpaceCache: a } = t; + let r; + if (e instanceof Ref) { + r = e; + const t = a.getByRef(r); + if (t) return t; + } + const i = this.#B(e, t); + r && a.set(null, r, i); + return i; + } + static #B(e, t) { + const { + xref: a, + resources: r, + pdfFunctionFactory: i, + globalColorSpaceCache: n, + } = t; + if ((e = a.fetchIfRef(e)) instanceof Name) + switch (e.name) { + case "G": + case "DeviceGray": + return this.gray; + case "RGB": + case "DeviceRGB": + return this.rgb; + case "DeviceRGBA": + return this.rgba; + case "CMYK": + case "DeviceCMYK": + return this.cmyk; + case "Pattern": + return new PatternCS(null); + default: + if (r instanceof Dict) { + const a = r.get("ColorSpace"); + if (a instanceof Dict) { + const r = a.get(e.name); + if (r) { + if (r instanceof Name) return this.#B(r, t); + e = r; + break; + } + } + } + warn(`Unrecognized ColorSpace: ${e.name}`); + return this.gray; + } + if (Array.isArray(e)) { + const r = a.fetchIfRef(e[0]).name; + let s, o, c, l, h, u; + switch (r) { + case "G": + case "DeviceGray": + return this.gray; + case "RGB": + case "DeviceRGB": + return this.rgb; + case "CMYK": + case "DeviceCMYK": + return this.cmyk; + case "CalGray": + s = a.fetchIfRef(e[1]); + l = s.getArray("WhitePoint"); + h = s.getArray("BlackPoint"); + u = s.get("Gamma"); + return new CalGrayCS(l, h, u); + case "CalRGB": + s = a.fetchIfRef(e[1]); + l = s.getArray("WhitePoint"); + h = s.getArray("BlackPoint"); + u = s.getArray("Gamma"); + const d = s.getArray("Matrix"); + return new CalRGBCS(l, h, u, d); + case "ICCBased": + const f = e[1] instanceof Ref; + if (f) { + const t = n.getByRef(e[1]); + if (t) return t; + } + const g = a.fetchIfRef(e[1]), + p = g.dict; + o = p.get("N"); + if (IccColorSpace.isUsable) + try { + const t = new IccColorSpace(g.getBytes(), "ICCBased", o); + f && n.set(null, e[1], t); + return t; + } catch (t) { + if (t instanceof MissingDataException) throw t; + warn(`ICCBased color space (${e[1]}): "${t}".`); + } + const m = p.getRaw("Alternate"); + if (m) { + const e = this.#R(m, t); + if (e.numComps === o) return e; + warn("ICCBased color space: Ignoring incorrect /Alternate entry."); + } + if (1 === o) return this.gray; + if (3 === o) return this.rgb; + if (4 === o) return this.cmyk; + break; + case "Pattern": + c = e[1] || null; + c && (c = this.#R(c, t)); + return new PatternCS(c); + case "I": + case "Indexed": + c = this.#R(e[1], t); + const b = MathClamp(a.fetchIfRef(e[2]), 0, 255), + y = a.fetchIfRef(e[3]); + return new IndexedCS(c, b, y); + case "Separation": + case "DeviceN": + const w = a.fetchIfRef(e[1]); + o = Array.isArray(w) ? w.length : 1; + c = this.#R(e[2], t); + const x = i.create(e[3]); + return new AlternateCS(o, c, x); + case "Lab": + s = a.fetchIfRef(e[1]); + l = s.getArray("WhitePoint"); + h = s.getArray("BlackPoint"); + const S = s.getArray("Range"); + return new LabCS(l, h, S); + default: + warn(`Unimplemented ColorSpace object: ${r}`); + return this.gray; + } + } + warn(`Unrecognized ColorSpace object: ${e}`); + return this.gray; + } + static get gray() { + return shadow(this, "gray", new DeviceGrayCS()); + } + static get rgb() { + return shadow(this, "rgb", new DeviceRgbCS()); + } + static get rgba() { + return shadow(this, "rgba", new DeviceRgbaCS()); + } + static get cmyk() { + if (CmykICCBasedCS.isUsable) + try { + return shadow(this, "cmyk", new CmykICCBasedCS()); + } catch { + warn("CMYK fallback: DeviceCMYK"); + } + return shadow(this, "cmyk", new DeviceCmykCS()); + } +} +class JpegError extends ea { + constructor(e) { + super(e, "JpegError"); + } +} +class DNLMarkerError extends ea { + constructor(e, t) { + super(e, "DNLMarkerError"); + this.scanLines = t; + } +} +class EOIMarkerError extends ea { + constructor(e) { + super(e, "EOIMarkerError"); + } +} +const va = new Uint8Array([ + 0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, + 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, + 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, + 54, 47, 55, 62, 63, + ]), + Fa = 4017, + Ia = 799, + Ta = 3406, + Oa = 2276, + Ma = 1567, + Da = 3784, + Ba = 5793, + Ra = 2896; +function buildHuffmanTable(e, t) { + let a, + r, + i = 0, + n = 16; + for (; n > 0 && !e[n - 1]; ) n--; + const s = [{ children: [], index: 0 }]; + let o, + c = s[0]; + for (a = 0; a < n; a++) { + for (r = 0; r < e[a]; r++) { + c = s.pop(); + c.children[c.index] = t[i]; + for (; c.index > 0; ) c = s.pop(); + c.index++; + s.push(c); + for (; s.length <= a; ) { + s.push((o = { children: [], index: 0 })); + c.children[c.index] = o.children; + c = o; + } + i++; + } + if (a + 1 < n) { + s.push((o = { children: [], index: 0 })); + c.children[c.index] = o.children; + c = o; + } + } + return s[0].children; +} +function getBlockBufferOffset(e, t, a) { + return 64 * ((e.blocksPerLine + 1) * t + a); +} +function decodeScan(e, t, a, r, i, n, s, o, c, l = !1) { + const h = a.mcusPerLine, + u = a.progressive, + d = t; + let f = 0, + g = 0; + function readBit() { + if (g > 0) { + g--; + return (f >> g) & 1; + } + f = e[t++]; + if (255 === f) { + const r = e[t++]; + if (r) { + if (220 === r && l) { + const r = readUint16(e, (t += 2)); + t += 2; + if (r > 0 && r !== a.scanLines) + throw new DNLMarkerError( + "Found DNL marker (0xFFDC) while parsing scan data", + r, + ); + } else if (217 === r) { + if (l) { + const e = y * (8 === a.precision ? 8 : 0); + if (e > 0 && Math.round(a.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 ${((f << 8) | r).toString(16)}`); + } + } + g = 7; + return f >>> 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 << (e - 1) ? t : t + (-1 << e) + 1; + } + let p = 0; + let m, + b = 0; + let y = 0; + function decodeMcu(e, t, a, r, i) { + const n = a % h; + y = ((a / h) | 0) * e.v + r; + const s = n * e.h + i; + t(e, getBlockBufferOffset(e, y, s)); + } + function decodeBlock(e, t, a) { + y = (a / e.blocksPerLine) | 0; + const r = a % e.blocksPerLine; + t(e, getBlockBufferOffset(e, y, r)); + } + const w = r.length; + let x, S, k, C, v, F; + F = u + ? 0 === n + ? 0 === o + ? function decodeDCFirst(e, t) { + const a = decodeHuffman(e.huffmanTableDC), + r = 0 === a ? 0 : receiveAndExtend(a) << c; + e.blockData[t] = e.pred += r; + } + : function decodeDCSuccessive(e, t) { + e.blockData[t] |= readBit() << c; + } + : 0 === o + ? function decodeACFirst(e, t) { + if (p > 0) { + p--; + return; + } + let a = n; + const r = s; + for (; a <= r; ) { + const r = decodeHuffman(e.huffmanTableAC), + i = 15 & r, + n = r >> 4; + if (0 === i) { + if (n < 15) { + p = receive(n) + (1 << n) - 1; + break; + } + a += 16; + continue; + } + a += n; + const s = va[a]; + e.blockData[t + s] = receiveAndExtend(i) * (1 << c); + a++; + } + } + : function decodeACSuccessive(e, t) { + let a = n; + const r = s; + let i, + o, + l = 0; + for (; a <= r; ) { + const r = t + va[a], + n = e.blockData[r] < 0 ? -1 : 1; + switch (b) { + case 0: + o = decodeHuffman(e.huffmanTableAC); + i = 15 & o; + l = o >> 4; + if (0 === i) + if (l < 15) { + p = receive(l) + (1 << l); + b = 4; + } else { + l = 16; + b = 1; + } + else { + if (1 !== i) throw new JpegError("invalid ACn encoding"); + m = receiveAndExtend(i); + b = l ? 2 : 3; + } + continue; + case 1: + case 2: + if (e.blockData[r]) e.blockData[r] += n * (readBit() << c); + else { + l--; + 0 === l && (b = 2 === b ? 3 : 0); + } + break; + case 3: + if (e.blockData[r]) e.blockData[r] += n * (readBit() << c); + else { + e.blockData[r] = m << c; + b = 0; + } + break; + case 4: + e.blockData[r] && (e.blockData[r] += n * (readBit() << c)); + } + a++; + } + if (4 === b) { + p--; + 0 === p && (b = 0); + } + } + : function decodeBaseline(e, t) { + const a = decodeHuffman(e.huffmanTableDC), + r = 0 === a ? 0 : receiveAndExtend(a); + e.blockData[t] = e.pred += r; + let i = 1; + for (; i < 64; ) { + const a = decodeHuffman(e.huffmanTableAC), + r = 15 & a, + n = a >> 4; + if (0 === r) { + if (n < 15) break; + i += 16; + continue; + } + i += n; + const s = va[i]; + e.blockData[t + s] = receiveAndExtend(r); + i++; + } + }; + let T, + O = 0; + const M = + 1 === w ? r[0].blocksPerLine * r[0].blocksPerColumn : h * a.mcusPerColumn; + let D, R; + for (; O <= M; ) { + const a = i ? Math.min(M - O, i) : M; + if (a > 0) { + for (S = 0; S < w; S++) r[S].pred = 0; + p = 0; + if (1 === w) { + x = r[0]; + for (v = 0; v < a; v++) { + decodeBlock(x, F, O); + O++; + } + } else + for (v = 0; v < a; v++) { + for (S = 0; S < w; S++) { + x = r[S]; + D = x.h; + R = x.v; + for (k = 0; k < R; k++) + for (C = 0; C < D; C++) decodeMcu(x, F, O, k, C); + } + O++; + } + } + g = 0; + T = findNextFileMarker(e, t); + if (!T) break; + if (T.invalid) { + warn( + `decodeScan - ${a > 0 ? "unexpected" : "excessive"} MCU data, current marker is: ${T.invalid}`, + ); + t = T.offset; + } + if (!(T.marker >= 65488 && T.marker <= 65495)) break; + t += 2; + } + return t - d; +} +function quantizeAndInverse(e, t, a) { + const r = e.quantizationTable, + i = e.blockData; + let n, s, o, c, l, h, u, d, f, g, p, m, b, y, w, x, S; + if (!r) throw new JpegError("missing required Quantization Table."); + for (let e = 0; e < 64; e += 8) { + f = i[t + e]; + g = i[t + e + 1]; + p = i[t + e + 2]; + m = i[t + e + 3]; + b = i[t + e + 4]; + y = i[t + e + 5]; + w = i[t + e + 6]; + x = i[t + e + 7]; + f *= r[e]; + if (0 !== (g | p | m | b | y | w | x)) { + g *= r[e + 1]; + p *= r[e + 2]; + m *= r[e + 3]; + b *= r[e + 4]; + y *= r[e + 5]; + w *= r[e + 6]; + x *= r[e + 7]; + n = (Ba * f + 128) >> 8; + s = (Ba * b + 128) >> 8; + o = p; + c = w; + l = (Ra * (g - x) + 128) >> 8; + d = (Ra * (g + x) + 128) >> 8; + h = m << 4; + u = y << 4; + n = (n + s + 1) >> 1; + s = n - s; + S = (o * Da + c * Ma + 128) >> 8; + o = (o * Ma - c * Da + 128) >> 8; + c = S; + l = (l + u + 1) >> 1; + u = l - u; + d = (d + h + 1) >> 1; + h = d - h; + n = (n + c + 1) >> 1; + c = n - c; + s = (s + o + 1) >> 1; + o = s - o; + S = (l * Oa + d * Ta + 2048) >> 12; + l = (l * Ta - d * Oa + 2048) >> 12; + d = S; + S = (h * Ia + u * Fa + 2048) >> 12; + h = (h * Fa - u * Ia + 2048) >> 12; + u = S; + a[e] = n + d; + a[e + 7] = n - d; + a[e + 1] = s + u; + a[e + 6] = s - u; + a[e + 2] = o + h; + a[e + 5] = o - h; + a[e + 3] = c + l; + a[e + 4] = c - l; + } else { + S = (Ba * f + 512) >> 10; + a[e] = S; + a[e + 1] = S; + a[e + 2] = S; + a[e + 3] = S; + a[e + 4] = S; + a[e + 5] = S; + a[e + 6] = S; + a[e + 7] = S; + } + } + for (let e = 0; e < 8; ++e) { + f = a[e]; + g = a[e + 8]; + p = a[e + 16]; + m = a[e + 24]; + b = a[e + 32]; + y = a[e + 40]; + w = a[e + 48]; + x = a[e + 56]; + if (0 !== (g | p | m | b | y | w | x)) { + n = (Ba * f + 2048) >> 12; + s = (Ba * b + 2048) >> 12; + o = p; + c = w; + l = (Ra * (g - x) + 2048) >> 12; + d = (Ra * (g + x) + 2048) >> 12; + h = m; + u = y; + n = 4112 + ((n + s + 1) >> 1); + s = n - s; + S = (o * Da + c * Ma + 2048) >> 12; + o = (o * Ma - c * Da + 2048) >> 12; + c = S; + l = (l + u + 1) >> 1; + u = l - u; + d = (d + h + 1) >> 1; + h = d - h; + n = (n + c + 1) >> 1; + c = n - c; + s = (s + o + 1) >> 1; + o = s - o; + S = (l * Oa + d * Ta + 2048) >> 12; + l = (l * Ta - d * Oa + 2048) >> 12; + d = S; + S = (h * Ia + u * Fa + 2048) >> 12; + h = (h * Fa - u * Ia + 2048) >> 12; + u = S; + f = n + d; + x = n - d; + g = s + u; + w = s - u; + p = o + h; + y = o - h; + m = c + l; + b = c - l; + f < 16 ? (f = 0) : f >= 4080 ? (f = 255) : (f >>= 4); + g < 16 ? (g = 0) : g >= 4080 ? (g = 255) : (g >>= 4); + p < 16 ? (p = 0) : p >= 4080 ? (p = 255) : (p >>= 4); + m < 16 ? (m = 0) : m >= 4080 ? (m = 255) : (m >>= 4); + b < 16 ? (b = 0) : b >= 4080 ? (b = 255) : (b >>= 4); + y < 16 ? (y = 0) : y >= 4080 ? (y = 255) : (y >>= 4); + w < 16 ? (w = 0) : w >= 4080 ? (w = 255) : (w >>= 4); + x < 16 ? (x = 0) : x >= 4080 ? (x = 255) : (x >>= 4); + i[t + e] = f; + i[t + e + 8] = g; + i[t + e + 16] = p; + i[t + e + 24] = m; + i[t + e + 32] = b; + i[t + e + 40] = y; + i[t + e + 48] = w; + i[t + e + 56] = x; + } else { + S = (Ba * f + 8192) >> 14; + S = S < -2040 ? 0 : S >= 2024 ? 255 : (S + 2056) >> 4; + i[t + e] = S; + i[t + e + 8] = S; + i[t + e + 16] = S; + i[t + e + 24] = S; + i[t + e + 32] = S; + i[t + e + 40] = S; + i[t + e + 48] = S; + i[t + e + 56] = S; + } + } +} +function buildComponentData(e, t) { + const a = t.blocksPerLine, + r = t.blocksPerColumn, + i = new Int16Array(64); + for (let e = 0; e < r; e++) + for (let r = 0; r < a; r++) { + quantizeAndInverse(t, getBlockBufferOffset(t, e, r), i); + } + return t.blockData; +} +function findNextFileMarker(e, t, a = t) { + const r = e.length - 1; + let i = a < t ? a : t; + if (t >= r) return null; + const n = readUint16(e, t); + if (n >= 65472 && n <= 65534) return { invalid: null, marker: n, offset: t }; + let s = readUint16(e, i); + for (; !(s >= 65472 && s <= 65534); ) { + if (++i >= r) return null; + s = readUint16(e, i); + } + return { invalid: n.toString(16), marker: s, offset: i }; +} +function prepareComponents(e) { + const t = Math.ceil(e.samplesPerLine / 8 / e.maxH), + a = Math.ceil(e.scanLines / 8 / e.maxV); + for (const r of e.components) { + const i = Math.ceil((Math.ceil(e.samplesPerLine / 8) * r.h) / e.maxH), + n = Math.ceil((Math.ceil(e.scanLines / 8) * r.v) / e.maxV), + s = t * r.h, + o = 64 * (a * r.v) * (s + 1); + r.blockData = new Int16Array(o); + r.blocksPerLine = i; + r.blocksPerColumn = n; + } + e.mcusPerLine = t; + e.mcusPerColumn = a; +} +function readDataBlock(e, t) { + const a = readUint16(e, t); + let r = (t += 2) + a - 2; + const i = findNextFileMarker(e, r, t); + if (i?.invalid) { + warn("readDataBlock - incorrect length, current marker is: " + i.invalid); + r = i.offset; + } + const n = e.subarray(t, r); + return { appData: n, oldOffset: t, newOffset: t + n.length }; +} +function skipData(e, t) { + const a = readUint16(e, t), + r = (t += 2) + a - 2, + i = findNextFileMarker(e, r, t); + return i?.invalid ? i.offset : r; +} +class JpegImage { + constructor({ decodeTransform: e = null, colorTransform: t = -1 } = {}) { + this._decodeTransform = e; + this._colorTransform = t; + } + static canUseImageDecoder(e, t = -1) { + let a = null, + r = 0, + i = null, + n = readUint16(e, r); + r += 2; + if (65496 !== n) throw new JpegError("SOI not found"); + n = readUint16(e, r); + r += 2; + e: for (; 65497 !== n; ) { + switch (n) { + case 65505: + const { + appData: t, + oldOffset: s, + newOffset: o, + } = readDataBlock(e, r); + r = o; + if ( + 69 === t[0] && + 120 === t[1] && + 105 === t[2] && + 102 === t[3] && + 0 === t[4] && + 0 === t[5] + ) { + if (a) throw new JpegError("Duplicate EXIF-blocks found."); + a = { exifStart: s + 6, exifEnd: o }; + } + n = readUint16(e, r); + r += 2; + continue; + case 65472: + case 65473: + case 65474: + i = e[r + 7]; + break e; + case 65535: + 255 !== e[r] && r--; + } + r = skipData(e, r); + n = readUint16(e, r); + r += 2; + } + return 4 === i || (3 === i && 0 === t) ? null : a || {}; + } + parse(e, { dnlScanLines: t = null } = {}) { + let a, + r, + i = 0, + n = null, + s = null, + o = 0; + const c = [], + l = [], + h = []; + let u = readUint16(e, i); + i += 2; + if (65496 !== u) throw new JpegError("SOI not found"); + u = readUint16(e, i); + i += 2; + e: for (; 65497 !== u; ) { + let d, f, g; + switch (u) { + 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: p, newOffset: m } = readDataBlock(e, i); + i = m; + 65504 === u && + 74 === p[0] && + 70 === p[1] && + 73 === p[2] && + 70 === p[3] && + 0 === p[4] && + (n = { + version: { major: p[5], minor: p[6] }, + densityUnits: p[7], + xDensity: (p[8] << 8) | p[9], + yDensity: (p[10] << 8) | p[11], + thumbWidth: p[12], + thumbHeight: p[13], + thumbData: p.subarray(14, 14 + 3 * p[12] * p[13]), + }); + 65518 === u && + 65 === p[0] && + 100 === p[1] && + 111 === p[2] && + 98 === p[3] && + 101 === p[4] && + (s = { + version: (p[5] << 8) | p[6], + flags0: (p[7] << 8) | p[8], + flags1: (p[9] << 8) | p[10], + transformCode: p[11], + }); + break; + case 65499: + const b = readUint16(e, i); + i += 2; + const y = b + i - 2; + let w; + for (; i < y; ) { + const t = e[i++], + a = new Uint16Array(64); + if (t >> 4) { + if (t >> 4 != 1) throw new JpegError("DQT - invalid table spec"); + for (f = 0; f < 64; f++) { + w = va[f]; + a[w] = readUint16(e, i); + i += 2; + } + } else + for (f = 0; f < 64; f++) { + w = va[f]; + a[w] = e[i++]; + } + c[15 & t] = a; + } + break; + case 65472: + case 65473: + case 65474: + if (a) throw new JpegError("Only single frame JPEGs supported"); + i += 2; + a = {}; + a.extended = 65473 === u; + a.progressive = 65474 === u; + a.precision = e[i++]; + const x = readUint16(e, i); + i += 2; + a.scanLines = t || x; + a.samplesPerLine = readUint16(e, i); + i += 2; + a.components = []; + a.componentIds = {}; + const S = e[i++]; + let k = 0, + C = 0; + for (d = 0; d < S; d++) { + const t = e[i], + r = e[i + 1] >> 4, + n = 15 & e[i + 1]; + k < r && (k = r); + C < n && (C = n); + const s = e[i + 2]; + g = a.components.push({ + h: r, + v: n, + quantizationId: s, + quantizationTable: null, + }); + a.componentIds[t] = g - 1; + i += 3; + } + a.maxH = k; + a.maxV = C; + prepareComponents(a); + break; + case 65476: + const v = readUint16(e, i); + i += 2; + for (d = 2; d < v; ) { + const t = e[i++], + a = new Uint8Array(16); + let r = 0; + for (f = 0; f < 16; f++, i++) r += a[f] = e[i]; + const n = new Uint8Array(r); + for (f = 0; f < r; f++, i++) n[f] = e[i]; + d += 17 + r; + (t >> 4 ? l : h)[15 & t] = buildHuffmanTable(a, n); + } + break; + case 65501: + i += 2; + r = readUint16(e, i); + i += 2; + break; + case 65498: + const F = 1 === ++o && !t; + i += 2; + const T = e[i++], + O = []; + for (d = 0; d < T; d++) { + const t = e[i++], + r = a.componentIds[t], + n = a.components[r]; + n.index = t; + const s = e[i++]; + n.huffmanTableDC = h[s >> 4]; + n.huffmanTableAC = l[15 & s]; + O.push(n); + } + const M = e[i++], + D = e[i++], + R = e[i++]; + try { + i += decodeScan(e, i, a, O, r, M, D, R >> 4, 15 & R, F); + } 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 e; + } + throw t; + } + break; + case 65500: + i += 4; + break; + case 65535: + 255 !== e[i] && i--; + break; + default: + const N = findNextFileMarker(e, i - 2, i - 3); + if (N?.invalid) { + warn( + "JpegImage.parse - unexpected data, current marker is: " + + N.invalid, + ); + i = N.offset; + break; + } + if (!N || i >= e.length - 1) { + warn( + "JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).", + ); + break e; + } + throw new JpegError( + "JpegImage.parse - unknown marker: " + u.toString(16), + ); + } + u = readUint16(e, i); + i += 2; + } + if (!a) throw new JpegError("JpegImage.parse - no frame data found."); + this.width = a.samplesPerLine; + this.height = a.scanLines; + this.jfif = n; + this.adobe = s; + this.components = []; + for (const e of a.components) { + const t = c[e.quantizationId]; + t && (e.quantizationTable = t); + this.components.push({ + index: e.index, + output: buildComponentData(0, e), + scaleX: e.h / a.maxH, + scaleY: e.v / a.maxV, + blocksPerLine: e.blocksPerLine, + blocksPerColumn: e.blocksPerColumn, + }); + } + this.numComponents = this.components.length; + } + _getLinearizedBlockData(e, t, a = !1) { + const r = this.width / e, + i = this.height / t; + let n, + s, + o, + c, + l, + h, + u, + d, + f, + g, + p, + m = 0; + const b = this.components.length, + y = e * t * b, + w = new Uint8ClampedArray(y), + x = new Uint32Array(e), + S = 4294967288; + let k; + for (u = 0; u < b; u++) { + n = this.components[u]; + s = n.scaleX * r; + o = n.scaleY * i; + m = u; + p = n.output; + c = (n.blocksPerLine + 1) << 3; + if (s !== k) { + for (l = 0; l < e; l++) { + d = 0 | (l * s); + x[l] = ((d & S) << 3) | (7 & d); + } + k = s; + } + for (h = 0; h < t; h++) { + d = 0 | (h * o); + g = (c * (d & S)) | ((7 & d) << 3); + for (l = 0; l < e; l++) { + w[m] = p[g + x[l]]; + m += b; + } + } + } + let C = this._decodeTransform; + a || + 4 !== b || + C || + (C = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255])); + if (C) + for (u = 0; u < y; ) + for (d = 0, f = 0; d < b; d++, u++, f += 2) + w[u] = ((w[u] * C[f]) >> 8) + C[f + 1]; + return w; + } + 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, a, r; + for (let i = 0, n = e.length; i < n; i += 3) { + t = e[i]; + a = e[i + 1]; + r = e[i + 2]; + e[i] = t - 179.456 + 1.402 * r; + e[i + 1] = t + 135.459 - 0.344 * a - 0.714 * r; + e[i + 2] = t - 226.816 + 1.772 * a; + } + return e; + } + _convertYccToRgba(e, t) { + for (let a = 0, r = 0, i = e.length; a < i; a += 3, r += 4) { + const i = e[a], + n = e[a + 1], + s = e[a + 2]; + t[r] = i - 179.456 + 1.402 * s; + t[r + 1] = i + 135.459 - 0.344 * n - 0.714 * s; + t[r + 2] = i - 226.816 + 1.772 * n; + t[r + 3] = 255; + } + return t; + } + _convertYcckToRgb(e) { + this._convertYcckToCmyk(e); + return this._convertCmykToRgb(e); + } + _convertYcckToRgba(e) { + this._convertYcckToCmyk(e); + return this._convertCmykToRgba(e); + } + _convertYcckToCmyk(e) { + let t, a, r; + for (let i = 0, n = e.length; i < n; i += 4) { + t = e[i]; + a = e[i + 1]; + r = e[i + 2]; + e[i] = 434.456 - t - 1.402 * r; + e[i + 1] = 119.541 - t + 0.344 * a + 0.714 * r; + e[i + 2] = 481.816 - t - 1.772 * a; + } + return e; + } + _convertCmykToRgb(e) { + const t = e.length / 4; + ColorSpaceUtils.cmyk.getRgbBuffer(e, 0, t, e, 0, 8, 0); + return e.subarray(0, 3 * t); + } + _convertCmykToRgba(e) { + ColorSpaceUtils.cmyk.getRgbBuffer(e, 0, e.length / 4, e, 0, 8, 1); + if (ColorSpaceUtils.cmyk instanceof DeviceCmykCS) + for (let t = 3, a = e.length; t < a; t += 4) e[t] = 255; + return e; + } + getData({ + width: e, + height: t, + forceRGBA: a = !1, + forceRGB: r = !1, + isSourcePDF: i = !1, + }) { + if (this.numComponents > 4) throw new JpegError("Unsupported color mode"); + const n = this._getLinearizedBlockData(e, t, i); + if (1 === this.numComponents && (a || r)) { + const e = n.length * (a ? 4 : 3), + t = new Uint8ClampedArray(e); + let r = 0; + if (a) + !(function grayToRGBA(e, t) { + if (FeatureTest.isLittleEndian) + for (let a = 0, r = e.length; a < r; a++) + t[a] = (65793 * e[a]) | 4278190080; + else + for (let a = 0, r = e.length; a < r; a++) + t[a] = (16843008 * e[a]) | 255; + })(n, new Uint32Array(t.buffer)); + else + for (const e of n) { + t[r++] = e; + t[r++] = e; + t[r++] = e; + } + return t; + } + if (3 === this.numComponents && this._isColorConversionNeeded) { + if (a) { + const e = new Uint8ClampedArray((n.length / 3) * 4); + return this._convertYccToRgba(n, e); + } + return this._convertYccToRgb(n); + } + if (4 === this.numComponents) { + if (this._isColorConversionNeeded) + return a + ? this._convertYcckToRgba(n) + : r + ? this._convertYcckToRgb(n) + : this._convertYcckToCmyk(n); + if (a) return this._convertCmykToRgba(n); + if (r) return this._convertCmykToRgb(n); + } + return n; + } +} +class JpegStream extends DecodeStream { + static #M = FeatureTest.isImageDecoderSupported; + constructor(e, t, a) { + super(t); + this.stream = e; + this.dict = e.dict; + this.maybeLength = t; + this.params = a; + } + static get canUseImageDecoder() { + return shadow( + this, + "canUseImageDecoder", + this.#M + ? ImageDecoder.isTypeSupported("image/jpeg") + : Promise.resolve(!1), + ); + } + static setOptions({ isImageDecoderSupported: e = !1 }) { + this.#M = e; + } + get bytes() { + return shadow(this, "bytes", this.stream.getBytes(this.maybeLength)); + } + ensureBuffer(e) {} + readBlock() { + this.decodeImage(); + } + get jpegOptions() { + const e = { decodeTransform: void 0, colorTransform: void 0 }, + t = this.dict.getArray("D", "Decode"); + if ((this.forceRGBA || this.forceRGB) && Array.isArray(t)) { + const a = this.dict.get("BPC", "BitsPerComponent") || 8, + r = t.length, + i = new Int32Array(r); + let n = !1; + const s = (1 << a) - 1; + for (let e = 0; e < r; e += 2) { + i[e] = (256 * (t[e + 1] - t[e])) | 0; + i[e + 1] = (t[e] * s) | 0; + (256 === i[e] && 0 === i[e + 1]) || (n = !0); + } + n && (e.decodeTransform = i); + } + if (this.params instanceof Dict) { + const t = this.params.get("ColorTransform"); + Number.isInteger(t) && (e.colorTransform = t); + } + return shadow(this, "jpegOptions", e); + } + #N(e) { + for (let t = 0, a = e.length - 1; t < a; t++) + if (255 === e[t] && 216 === e[t + 1]) { + t > 0 && (e = e.subarray(t)); + break; + } + return e; + } + decodeImage(e) { + if (this.eof) return this.buffer; + e = this.#N(e || this.bytes); + const t = new JpegImage(this.jpegOptions); + t.parse(e); + const a = t.getData({ + width: this.drawWidth, + height: this.drawHeight, + forceRGBA: this.forceRGBA, + forceRGB: this.forceRGB, + isSourcePDF: !0, + }); + this.buffer = a; + this.bufferLength = a.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 a = + (this.canAsyncDecodeImageFromBuffer && + (await this.stream.asyncGetBytes())) || + this.bytes; + if (!a) return null; + let r = this.#N(a); + const i = JpegImage.canUseImageDecoder(r, e.colorTransform); + if (!i) return null; + if (i.exifStart) { + r = r.slice(); + r.fill(0, i.exifStart, i.exifEnd); + } + t = new ImageDecoder({ + data: r, + type: "image/jpeg", + preferAnimation: !1, + }); + return (await t.decode()).image; + } catch (e) { + warn(`getTransferableImage - failed: "${e}".`); + return null; + } finally { + t?.close(); + } + } +} +const Na = async function OpenJPEG(e = {}) { + var t = e, + a = "./this.program", + quit_ = (e, t) => { + throw t; + }, + r = import.meta.url; + try { + new URL(".", r).href; + } catch {} + 0; + var i, + n, + s, + o, + c, + l, + h, + u, + d = console.log.bind(console), + f = console.error.bind(console), + g = !1, + p = !1; + function updateMemoryViews() { + var e = o.buffer; + c = new Int8Array(e); + new Int16Array(e); + l = new Uint8Array(e); + new Uint16Array(e); + h = new Int32Array(e); + u = new Uint32Array(e); + new Float32Array(e); + new Float64Array(e); + new BigInt64Array(e); + new BigUint64Array(e); + } + class ExitStatus { + name = "ExitStatus"; + constructor(e) { + this.message = `Program terminated with exit(${e})`; + this.status = e; + } + } + var m, + callRuntimeCallbacks = (e) => { + for (; e.length > 0; ) e.shift()(t); + }, + b = [], + addOnPostRun = (e) => b.push(e), + y = [], + addOnPreRun = (e) => y.push(e), + w = !0, + x = 0, + S = {}, + handleException = (e) => { + if (e instanceof ExitStatus || "unwind" == e) return i; + quit_(0, e); + }, + keepRuntimeAlive = () => w || x > 0, + _proc_exit = (e) => { + i = e; + if (!keepRuntimeAlive()) { + t.onExit?.(e); + g = !0; + } + quit_(0, new ExitStatus(e)); + }, + _exit = (e, t) => { + i = e; + _proc_exit(e); + }, + callUserCallback = (e) => { + if (!g) + try { + e(); + (() => { + if (!keepRuntimeAlive()) + try { + _exit(i); + } catch (e) { + handleException(e); + } + })(); + } catch (e) { + handleException(e); + } + }, + alignMemory = (e, t) => Math.ceil(e / t) * t, + growMemory = (e) => { + var t = ((e - o.buffer.byteLength + 65535) / 65536) | 0; + try { + o.grow(t); + updateMemoryViews(); + return 1; + } catch (e) {} + }, + k = {}, + getEnvStrings = () => { + if (!getEnvStrings.strings) { + var e = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: + ( + ("object" == typeof navigator && navigator.language) || + "C" + ).replace("-", "_") + ".UTF-8", + _: a || "./this.program", + }; + for (var t in k) void 0 === k[t] ? delete e[t] : (e[t] = k[t]); + var r = []; + for (var t in e) r.push(`${t}=${e[t]}`); + getEnvStrings.strings = r; + } + return getEnvStrings.strings; + }, + stringToUTF8 = (e, t, a) => + ((e, t, a, r) => { + if (!(r > 0)) return 0; + for (var i = a, n = a + r - 1, s = 0; s < e.length; ++s) { + var o = e.codePointAt(s); + if (o <= 127) { + if (a >= n) break; + t[a++] = o; + } else if (o <= 2047) { + if (a + 1 >= n) break; + t[a++] = 192 | (o >> 6); + t[a++] = 128 | (63 & o); + } else if (o <= 65535) { + if (a + 2 >= n) break; + t[a++] = 224 | (o >> 12); + t[a++] = 128 | ((o >> 6) & 63); + t[a++] = 128 | (63 & o); + } else { + if (a + 3 >= n) break; + t[a++] = 240 | (o >> 18); + t[a++] = 128 | ((o >> 12) & 63); + t[a++] = 128 | ((o >> 6) & 63); + t[a++] = 128 | (63 & o); + s++; + } + } + t[a] = 0; + return a - i; + })(e, l, t, a), + lengthBytesUTF8 = (e) => { + for (var t = 0, a = 0; a < e.length; ++a) { + var r = e.charCodeAt(a); + if (r <= 127) t++; + else if (r <= 2047) t += 2; + else if (r >= 55296 && r <= 57343) { + t += 4; + ++a; + } else t += 3; + } + return t; + }, + C = [null, [], []], + v = "undefined" != typeof TextDecoder ? new TextDecoder() : void 0, + UTF8ArrayToString = (e, t = 0, a, r) => { + var i = ((e, t, a, r) => { + var i = t + a; + if (r) return i; + for (; e[t] && !(t >= i); ) ++t; + return t; + })(e, t, a, r); + if (i - t > 16 && e.buffer && v) return v.decode(e.subarray(t, i)); + for (var n = ""; t < i; ) { + var s = e[t++]; + if (128 & s) { + var o = 63 & e[t++]; + if (192 != (224 & s)) { + var c = 63 & e[t++]; + if ( + (s = + 224 == (240 & s) + ? ((15 & s) << 12) | (o << 6) | c + : ((7 & s) << 18) | (o << 12) | (c << 6) | (63 & e[t++])) < + 65536 + ) + n += String.fromCharCode(s); + else { + var l = s - 65536; + n += String.fromCharCode(55296 | (l >> 10), 56320 | (1023 & l)); + } + } else n += String.fromCharCode(((31 & s) << 6) | o); + } else n += String.fromCharCode(s); + } + return n; + }, + printChar = (e, t) => { + var a = C[e]; + if (0 === t || 10 === t) { + (1 === e ? d : f)(UTF8ArrayToString(a)); + a.length = 0; + } else a.push(t); + }, + UTF8ToString = (e, t, a) => (e ? UTF8ArrayToString(l, e, t, a) : ""); + t.noExitRuntime && (w = t.noExitRuntime); + t.print && (d = t.print); + t.printErr && (f = t.printErr); + t.wasmBinary && t.wasmBinary; + t.arguments && t.arguments; + t.thisProgram && (a = t.thisProgram); + if (t.preInit) { + "function" == typeof t.preInit && (t.preInit = [t.preInit]); + for (; t.preInit.length > 0; ) t.preInit.shift()(); + } + t.writeArrayToMemory = (e, t) => { + c.set(e, t); + }; + var F, + T = { + k: () => + (function abort(e) { + t.onAbort?.(e); + f((e = "Aborted(" + e + ")")); + g = !0; + e += ". Build with -sASSERTIONS for more info."; + var a = new WebAssembly.RuntimeError(e); + s?.(a); + throw a; + })(""), + j: () => { + w = !1; + x = 0; + }, + l: (e, t) => { + if (S[e]) { + clearTimeout(S[e].id); + delete S[e]; + } + if (!t) return 0; + var a = setTimeout(() => { + delete S[e]; + callUserCallback(() => m(e, performance.now())); + }, t); + S[e] = { id: a, timeout_ms: t }; + return 0; + }, + f: function _copy_pixels_1(e, a) { + e >>= 2; + const r = (t.imageData = new Uint8ClampedArray(a)), + i = h.subarray(e, e + a); + r.set(i); + }, + e: function _copy_pixels_3(e, a, r, i) { + e >>= 2; + a >>= 2; + r >>= 2; + const n = (t.imageData = new Uint8ClampedArray(3 * i)), + s = h.subarray(e, e + i), + o = h.subarray(a, a + i), + c = h.subarray(r, r + i); + for (let e = 0; e < i; e++) { + n[3 * e] = s[e]; + n[3 * e + 1] = o[e]; + n[3 * e + 2] = c[e]; + } + }, + d: function _copy_pixels_4(e, a, r, i, n) { + e >>= 2; + a >>= 2; + r >>= 2; + i >>= 2; + const s = (t.imageData = new Uint8ClampedArray(4 * n)), + o = h.subarray(e, e + n), + c = h.subarray(a, a + n), + l = h.subarray(r, r + n), + u = h.subarray(i, i + n); + for (let e = 0; e < n; e++) { + s[4 * e] = o[e]; + s[4 * e + 1] = c[e]; + s[4 * e + 2] = l[e]; + s[4 * e + 3] = u[e]; + } + }, + m: (e) => { + var t = l.length, + a = 2147483648; + if ((e >>>= 0) > a) return !1; + for (var r = 1; r <= 4; r *= 2) { + var i = t * (1 + 0.2 / r); + i = Math.min(i, e + 100663296); + var n = Math.min(a, alignMemory(Math.max(e, i), 65536)); + if (growMemory(n)) return !0; + } + return !1; + }, + o: (e, t) => { + var a = 0, + r = 0; + for (var i of getEnvStrings()) { + var n = t + a; + u[(e + r) >> 2] = n; + a += stringToUTF8(i, n, 1 / 0) + 1; + r += 4; + } + return 0; + }, + p: (e, t) => { + var a = getEnvStrings(); + u[e >> 2] = a.length; + var r = 0; + for (var i of a) r += lengthBytesUTF8(i) + 1; + u[t >> 2] = r; + return 0; + }, + n: function _fd_seek(e, t, a, r) { + t = + (i = t) < -9007199254740992 || i > 9007199254740992 ? NaN : Number(i); + var i; + return 70; + }, + b: (e, t, a, r) => { + for (var i = 0, n = 0; n < a; n++) { + var s = u[t >> 2], + o = u[(t + 4) >> 2]; + t += 8; + for (var c = 0; c < o; c++) printChar(e, l[s + c]); + i += o; + } + u[r >> 2] = i; + return 0; + }, + q: function _gray_to_rgba(e, a) { + e >>= 2; + const r = (t.imageData = new Uint8ClampedArray(4 * a)), + i = h.subarray(e, e + a); + for (let e = 0; e < a; e++) { + r[4 * e] = r[4 * e + 1] = r[4 * e + 2] = i[e]; + r[4 * e + 3] = 255; + } + }, + h: function _graya_to_rgba(e, a, r) { + e >>= 2; + a >>= 2; + const i = (t.imageData = new Uint8ClampedArray(4 * r)), + n = h.subarray(e, e + r), + s = h.subarray(a, a + r); + for (let e = 0; e < r; e++) { + i[4 * e] = i[4 * e + 1] = i[4 * e + 2] = n[e]; + i[4 * e + 3] = s[e]; + } + }, + c: function _jsPrintWarning(e) { + const a = UTF8ToString(e); + (t.warn || console.warn)(`OpenJPEG: ${a}`); + }, + i: _proc_exit, + g: function _rgb_to_rgba(e, a, r, i) { + e >>= 2; + a >>= 2; + r >>= 2; + const n = (t.imageData = new Uint8ClampedArray(4 * i)), + s = h.subarray(e, e + i), + o = h.subarray(a, a + i), + c = h.subarray(r, r + i); + for (let e = 0; e < i; e++) { + n[4 * e] = s[e]; + n[4 * e + 1] = o[e]; + n[4 * e + 2] = c[e]; + n[4 * e + 3] = 255; + } + }, + a: function _storeErrorMessage(e) { + const a = UTF8ToString(e); + t.errorMessages ? (t.errorMessages += "\n" + a) : (t.errorMessages = a); + }, + }; + F = await (async function createWasm() { + function receiveInstance(e, a) { + F = e.exports; + o = F.r; + updateMemoryViews(); + !(function assignWasmExports(e) { + t._malloc = e.t; + t._free = e.u; + t._jp2_decode = e.v; + m = e.w; + })(F); + return F; + } + var e = (function getWasmImports() { + return { a: T }; + })(); + return new Promise((a, r) => { + t.instantiateWasm(e, (e, t) => { + a(receiveInstance(e)); + }); + }); + })(); + !(function run() { + !(function preRun() { + if (t.preRun) { + "function" == typeof t.preRun && (t.preRun = [t.preRun]); + for (; t.preRun.length; ) addOnPreRun(t.preRun.shift()); + } + callRuntimeCallbacks(y); + })(); + function doRun() { + t.calledRun = !0; + if (!g) { + !(function initRuntime() { + p = !0; + F.s(); + })(); + n?.(t); + t.onRuntimeInitialized?.(); + !(function postRun() { + if (t.postRun) { + "function" == typeof t.postRun && (t.postRun = [t.postRun]); + for (; t.postRun.length; ) addOnPostRun(t.postRun.shift()); + } + callRuntimeCallbacks(b); + })(); + } + } + if (t.setStatus) { + t.setStatus("Running..."); + setTimeout(() => { + setTimeout(() => t.setStatus(""), 1); + doRun(); + }, 1); + } else doRun(); + })(); + return p + ? t + : new Promise((e, t) => { + n = e; + s = t; + }); +}; +class JpxError extends ea { + constructor(e) { + super(e, "JpxError"); + } +} +class JpxImage { + static #E = null; + static #P = null; + static #L = null; + static #v = !0; + static #_ = !0; + static #F = null; + static setOptions({ handler: e, useWasm: t, useWorkerFetch: a, wasmUrl: r }) { + this.#v = t; + this.#_ = a; + this.#F = r; + a || (this.#P = e); + } + static async #U(e) { + const t = `${this.#F}openjpeg_nowasm_fallback.js`; + let a = null; + try { + a = ( + await import( + /*webpackIgnore: true*/ + /*@vite-ignore*/ + t + ) + ).default(); + } catch (e) { + warn(`JpxImage#getJsModule: ${e}`); + } + e(a); + } + static async #j(e, t, a) { + const r = "openjpeg.wasm"; + try { + this.#E || + (this.#_ + ? (this.#E = await fetchBinaryData(`${this.#F}${r}`)) + : (this.#E = await this.#P.sendWithPromise("FetchBinaryData", { + type: "wasmFactory", + filename: r, + }))); + return a((await WebAssembly.instantiate(this.#E, t)).instance); + } catch (t) { + warn(`JpxImage#instantiateWasm: ${t}`); + this.#U(e); + return null; + } finally { + this.#P = null; + } + } + static async decode( + e, + { + numComponents: t = 4, + isIndexedColormap: a = !1, + smaskInData: r = !1, + reducePower: i = 0, + } = {}, + ) { + if (!this.#L) { + const { promise: e, resolve: t } = Promise.withResolvers(), + a = [e]; + this.#v + ? a.push(Na({ warn, instantiateWasm: this.#j.bind(this, t) })) + : this.#U(t); + this.#L = Promise.race(a); + } + const n = await this.#L; + if (!n) throw new JpxError("OpenJPEG failed to initialize"); + let s; + try { + const o = e.length; + s = n._malloc(o); + n.writeArrayToMemory(e, s); + if (n._jp2_decode(s, o, t > 0 ? t : 0, !!a, !!r, i)) { + const { errorMessages: e } = n; + if (e) { + delete n.errorMessages; + throw new JpxError(e); + } + throw new JpxError("Unknown error"); + } + const { imageData: c } = n; + n.imageData = null; + return c; + } finally { + s && n._free(s); + } + } + static cleanup() { + this.#L = null; + } + static parseImageProperties(e) { + let t = e.getByte(); + for (; t >= 0; ) { + const a = t; + t = e.getByte(); + if (65361 === ((a << 8) | t)) { + e.skip(4); + const t = e.getInt32() >>> 0, + a = e.getInt32() >>> 0, + r = e.getInt32() >>> 0, + i = e.getInt32() >>> 0; + e.skip(16); + return { + width: t - r, + height: a - i, + bitsPerComponent: 8, + componentsCount: e.getUint16(), + }; + } + } + throw new JpxError("No size marker found in JPX stream"); + } +} +function addState(e, t, a, r, i) { + let n = e; + for (let e = 0, a = t.length - 1; e < a; e++) { + const a = t[e]; + n = n[a] ||= []; + } + n[t.at(-1)] = { checkFn: a, iterateFn: r, processFn: i }; +} +const Ea = []; +addState( + Ea, + [ye, xe, Lt, we], + null, + function iterateInlineImageGroup(e, t) { + const a = e.fnArray, + r = (t - (e.iCurr - 3)) % 4; + switch (r) { + case 0: + return a[t] === ye; + case 1: + return a[t] === xe; + case 2: + return a[t] === Lt; + case 3: + return a[t] === we; + } + throw new Error(`iterateInlineImageGroup - invalid pos: ${r}`); + }, + function foundInlineImageGroup(e, t) { + const a = e.fnArray, + r = e.argsArray, + i = e.iCurr, + n = i - 3, + s = i - 2, + o = i - 1, + c = Math.min(Math.floor((t - n) / 4), 200); + if (c < 10) return t - ((t - n) % 4); + let l = 0; + const h = []; + let u = 0, + d = 1, + f = 1; + for (let e = 0; e < c; e++) { + const t = r[s + (e << 2)], + a = r[o + (e << 2)][0]; + if (d + a.width > 1e3) { + l = Math.max(l, d); + f += u + 2; + d = 0; + u = 0; + } + h.push({ transform: t, x: d, y: f, w: a.width, h: a.height }); + d += a.width + 2; + u = Math.max(u, a.height); + } + const g = Math.max(l, d) + 1, + p = f + u + 1, + m = new Uint8Array(g * p * 4), + b = g << 2; + for (let e = 0; e < c; e++) { + const t = r[o + (e << 2)][0].data, + a = h[e].w << 2; + let i = 0, + n = (h[e].x + h[e].y * g) << 2; + m.set(t.subarray(0, a), n - b); + for (let r = 0, s = h[e].h; r < s; r++) { + m.set(t.subarray(i, i + a), n); + i += a; + n += b; + } + m.set(t.subarray(i - a, i), n); + for (; n >= 0; ) { + t[n - 4] = t[n]; + t[n - 3] = t[n + 1]; + t[n - 2] = t[n + 2]; + t[n - 1] = t[n + 3]; + t[n + a] = t[n + a - 4]; + t[n + a + 1] = t[n + a - 3]; + t[n + a + 2] = t[n + a - 2]; + t[n + a + 3] = t[n + a - 1]; + n -= b; + } + } + const y = { width: g, height: p }; + if (e.isOffscreenCanvasSupported) { + const e = new OffscreenCanvas(g, p); + e.getContext("2d").putImageData( + new ImageData(new Uint8ClampedArray(m.buffer), g, p), + 0, + 0, + ); + y.bitmap = e.transferToImageBitmap(); + y.data = null; + } else { + y.kind = O; + y.data = m; + } + a.splice(n, 4 * c, _t); + r.splice(n, 4 * c, [y, h]); + return n + 1; + }, +); +addState( + Ea, + [ye, xe, Nt, we], + null, + function iterateImageMaskGroup(e, t) { + const a = e.fnArray, + r = (t - (e.iCurr - 3)) % 4; + switch (r) { + case 0: + return a[t] === ye; + case 1: + return a[t] === xe; + case 2: + return a[t] === Nt; + case 3: + return a[t] === we; + } + throw new Error(`iterateImageMaskGroup - invalid pos: ${r}`); + }, + function foundImageMaskGroup(e, t) { + const a = e.fnArray, + r = e.argsArray, + i = e.iCurr, + n = i - 3, + s = i - 2, + o = i - 1; + let c = Math.floor((t - n) / 4); + if (c < 10) return t - ((t - n) % 4); + let l, + h, + u = !1; + const d = r[o][0], + f = r[s][0], + g = r[s][1], + p = r[s][2], + m = r[s][3]; + if (g === p) { + u = !0; + l = s + 4; + let e = o + 4; + for (let t = 1; t < c; t++, l += 4, e += 4) { + h = r[l]; + if ( + r[e][0] !== d || + h[0] !== f || + h[1] !== g || + h[2] !== p || + h[3] !== m + ) { + t < 10 ? (u = !1) : (c = t); + break; + } + } + } + if (u) { + c = Math.min(c, 1e3); + const e = new Float32Array(2 * c); + l = s; + for (let t = 0; t < c; t++, l += 4) { + h = r[l]; + e[t << 1] = h[4]; + e[1 + (t << 1)] = h[5]; + } + a.splice(n, 4 * c, jt); + r.splice(n, 4 * c, [d, f, g, p, m, e]); + } else { + c = Math.min(c, 100); + const e = []; + for (let t = 0; t < c; t++) { + h = r[s + (t << 2)]; + const a = r[o + (t << 2)][0]; + e.push({ + data: a.data, + width: a.width, + height: a.height, + interpolate: a.interpolate, + count: a.count, + transform: h, + }); + } + a.splice(n, 4 * c, Et); + r.splice(n, 4 * c, [e]); + } + return n + 1; + }, +); +addState( + Ea, + [ye, xe, Pt, we], + function (e) { + const t = e.argsArray, + a = e.iCurr - 2; + return 0 === t[a][1] && 0 === t[a][2]; + }, + function iterateImageGroup(e, t) { + const a = e.fnArray, + r = e.argsArray, + i = (t - (e.iCurr - 3)) % 4; + switch (i) { + case 0: + return a[t] === ye; + case 1: + if (a[t] !== xe) return !1; + const i = e.iCurr - 2, + n = r[i][0], + s = r[i][3]; + return r[t][0] === n && 0 === r[t][1] && 0 === r[t][2] && r[t][3] === s; + case 2: + if (a[t] !== Pt) return !1; + const o = r[e.iCurr - 1][0]; + return r[t][0] === o; + case 3: + return a[t] === we; + } + throw new Error(`iterateImageGroup - invalid pos: ${i}`); + }, + function (e, t) { + const a = e.fnArray, + r = e.argsArray, + i = e.iCurr, + n = i - 3, + s = i - 2, + o = r[i - 1][0], + c = r[s][0], + l = r[s][3], + h = Math.min(Math.floor((t - n) / 4), 1e3); + if (h < 3) return t - ((t - n) % 4); + const u = new Float32Array(2 * h); + let d = s; + for (let e = 0; e < h; e++, d += 4) { + const t = r[d]; + u[e << 1] = t[4]; + u[1 + (e << 1)] = t[5]; + } + const f = [o, c, l, u]; + a.splice(n, 4 * h, Ut); + r.splice(n, 4 * h, f); + return n + 1; + }, +); +addState( + Ea, + [Ue, Ge, Je, Ze, je], + null, + function iterateShowTextGroup(e, t) { + const a = e.fnArray, + r = e.argsArray, + i = (t - (e.iCurr - 4)) % 5; + switch (i) { + case 0: + return a[t] === Ue; + case 1: + return a[t] === Ge; + case 2: + return a[t] === Je; + case 3: + if (a[t] !== Ze) return !1; + const i = e.iCurr - 3, + n = r[i][0], + s = r[i][1]; + return r[t][0] === n && r[t][1] === s; + case 4: + return a[t] === je; + } + throw new Error(`iterateShowTextGroup - invalid pos: ${i}`); + }, + function (e, t) { + const a = e.fnArray, + r = e.argsArray, + i = e.iCurr, + n = i - 4, + s = i - 3, + o = i - 2, + c = i - 1, + l = i, + h = r[s][0], + u = r[s][1]; + let d = Math.min(Math.floor((t - n) / 5), 1e3); + if (d < 3) return t - ((t - n) % 5); + let f = n; + if ( + n >= 4 && + a[n - 4] === a[s] && + a[n - 3] === a[o] && + a[n - 2] === a[c] && + a[n - 1] === a[l] && + r[n - 4][0] === h && + r[n - 4][1] === u + ) { + d++; + f -= 5; + } + let g = f + 4; + for (let e = 1; e < d; e++) { + a.splice(g, 3); + r.splice(g, 3); + g += 2; + } + return g + 1; + }, +); +addState( + Ea, + [ye, xe, qt, we], + (e) => { + const t = e.argsArray, + a = t[e.iCurr - 1][0]; + if (a !== Te && a !== Oe && a !== Be && a !== Re && a !== Ne && a !== Ee) + return !0; + const r = t[e.iCurr - 2]; + return 1 === r[0] && 0 === r[1] && 0 === r[2] && 1 === r[3]; + }, + () => !1, + (e, t) => { + const { fnArray: a, argsArray: r } = e, + i = e.iCurr, + n = i - 3, + s = i - 2, + o = r[i - 1], + c = r[s], + [, [l], h] = o; + if (h) { + Util.scaleMinMax(c, h); + for (let e = 0, t = l.length; e < t; ) + switch (l[e++]) { + case zt: + case $t: + Util.applyTransform(l, c, e); + e += 2; + break; + case Vt: + Util.applyTransformToBezier(l, c, e); + e += 6; + } + } + a.splice(n, 4, qt); + r.splice(n, 4, o); + return n + 1; + }, +); +class NullOptimizer { + constructor(e) { + this.queue = e; + } + _optimize() {} + push(e, t) { + this.queue.fnArray.push(e); + this.queue.argsArray.push(t); + this._optimize(); + } + flush() {} + reset() {} +} +class QueueOptimizer extends NullOptimizer { + constructor(e) { + super(e); + this.state = null; + this.context = { + iCurr: 0, + fnArray: e.fnArray, + argsArray: e.argsArray, + isOffscreenCanvasSupported: OperatorList.isOffscreenCanvasSupported, + }; + this.match = null; + this.lastProcessed = 0; + } + _optimize() { + const e = this.queue.fnArray; + let t = this.lastProcessed, + a = e.length, + r = this.state, + i = this.match; + if (!r && !i && t + 1 === a && !Ea[e[t]]) { + this.lastProcessed = a; + return; + } + const n = this.context; + for (; t < a; ) { + if (i) { + if ((0, i.iterateFn)(n, t)) { + t++; + continue; + } + t = (0, i.processFn)(n, t + 1); + a = e.length; + i = null; + r = null; + if (t >= a) break; + } + r = (r || Ea)[e[t]]; + if (r && !Array.isArray(r)) { + n.iCurr = t; + t++; + if (!r.checkFn || (0, r.checkFn)(n)) { + i = r; + r = null; + } else r = null; + } else t++; + } + this.state = r; + this.match = i; + 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; + static isOffscreenCanvasSupported = !1; + constructor(e = 0, t) { + this._streamSink = t; + this.fnArray = []; + this.argsArray = []; + this.optimizer = + !t || e & d ? new NullOptimizer(this) : new QueueOptimizer(this); + this.dependencies = new Set(); + this._totalLength = 0; + this.weight = 0; + this._resolved = t ? null : Promise.resolve(); + } + static setOptions({ isOffscreenCanvasSupported: e }) { + this.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 === we || e === je))) && + this.flush(); + } + addImageOps(e, t, a, r = !1) { + if (r) { + this.addOp(ye); + this.addOp(be, [[["SMask", !1]]]); + } + void 0 !== a && this.addOp(Ct, ["OC", a]); + this.addOp(e, t); + void 0 !== a && this.addOp(vt, []); + r && this.addOp(we); + } + addDependency(e) { + if (!this.dependencies.has(e)) { + this.dependencies.add(e); + this.addOp(le, [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, a = e.length; t < a; t++) + this.addOp(e.fnArray[t], e.argsArray[t]); + } else warn('addOpList - ignoring invalid "opList" parameter.'); + } + getIR() { + return { + fnArray: this.fnArray, + argsArray: this.argsArray, + length: this.length, + }; + } + get _transfers() { + const e = [], + { fnArray: t, argsArray: a, length: r } = this; + for (let i = 0; i < r; i++) + switch (t[i]) { + case Lt: + case _t: + case Nt: { + const { bitmap: t, data: r } = a[i][0]; + (t || r?.buffer) && e.push(t || r.buffer); + break; + } + case qt: { + const [, [t], r] = a[i]; + t && e.push(t.buffer, r.buffer); + break; + } + case Tt: + const [t, r] = a[i]; + t && e.push(t.buffer); + r && e.push(r.buffer); + break; + case Je: + e.push(a[i][0].buffer); + } + return e; + } + flush(e = !1, t = null) { + this.optimizer.flush(); + const a = this.length; + this._totalLength += a; + this._streamSink.enqueue( + { + fnArray: this.fnArray, + argsArray: this.argsArray, + lastChunk: e, + separateAnnots: t, + length: a, + }, + 1, + this._transfers, + ); + this.dependencies.clear(); + this.fnArray.length = 0; + this.argsArray.length = 0; + this.weight = 0; + this.optimizer.reset(); + } +} +function hexToInt(e, t) { + let a = 0; + for (let r = 0; r <= t; r++) a = (a << 8) | e[r]; + return a >>> 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, a) { + let r = 0; + for (let i = a; i >= 0; i--) { + r += e[i] + t[i]; + e[i] = 255 & r; + r >>= 8; + } +} +function incHex(e, t) { + let a = 1; + for (let r = t; r >= 0 && a > 0; r--) { + a += e[r]; + e[r] = 255 & a; + a >>= 8; + } +} +const Pa = 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 a = this.readByte(); + if (a < 0) throw new FormatError("unexpected EOF in bcmap"); + e = !(128 & a); + t = (t << 7) | (127 & a); + } 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 a; + const r = this.tmpBuf; + let i = 0; + do { + const e = this.readByte(); + if (e < 0) throw new FormatError("unexpected EOF in bcmap"); + a = !(128 & e); + r[i++] = 127 & e; + } while (!a); + let n = t, + s = 0, + o = 0; + for (; n >= 0; ) { + for (; o < 8 && r.length > 0; ) { + s |= r[--i] << o; + o += 7; + } + e[n] = 255 & s; + n--; + s >>= 8; + o -= 8; + } + } + readHexSigned(e, t) { + this.readHexNumber(e, t); + const a = 1 & e[t] ? 255 : 0; + let r = 0; + for (let i = 0; i <= t; i++) { + r = ((1 & r) << 8) | e[i]; + e[i] = (r >> 1) ^ a; + } + } + readString() { + const e = this.readNumber(), + t = new Array(e); + for (let a = 0; a < e; a++) t[a] = this.readNumber(); + return String.fromCharCode(...t); + } +} +class BinaryCMapReader { + async process(e, t, a) { + const r = new BinaryCMapStream(e), + i = r.readByte(); + t.vertical = !!(1 & i); + let n = null; + const s = new Uint8Array(Pa), + o = new Uint8Array(Pa), + c = new Uint8Array(Pa), + l = new Uint8Array(Pa), + h = new Uint8Array(Pa); + let u, d; + for (; (d = r.readByte()) >= 0; ) { + const e = d >> 5; + if (7 === e) { + switch (31 & d) { + case 0: + r.readString(); + break; + case 1: + n = r.readString(); + } + continue; + } + const a = !!(16 & d), + i = 15 & d; + if (i + 1 > Pa) + throw new Error("BinaryCMapReader.process: Invalid dataSize."); + const f = 1, + g = r.readNumber(); + switch (e) { + case 0: + r.readHex(s, i); + r.readHexNumber(o, i); + addHex(o, s, i); + t.addCodespaceRange(i + 1, hexToInt(s, i), hexToInt(o, i)); + for (let e = 1; e < g; e++) { + incHex(o, i); + r.readHexNumber(s, i); + addHex(s, o, i); + r.readHexNumber(o, i); + addHex(o, s, i); + t.addCodespaceRange(i + 1, hexToInt(s, i), hexToInt(o, i)); + } + break; + case 1: + r.readHex(s, i); + r.readHexNumber(o, i); + addHex(o, s, i); + r.readNumber(); + for (let e = 1; e < g; e++) { + incHex(o, i); + r.readHexNumber(s, i); + addHex(s, o, i); + r.readHexNumber(o, i); + addHex(o, s, i); + r.readNumber(); + } + break; + case 2: + r.readHex(c, i); + u = r.readNumber(); + t.mapOne(hexToInt(c, i), u); + for (let e = 1; e < g; e++) { + incHex(c, i); + if (!a) { + r.readHexNumber(h, i); + addHex(c, h, i); + } + u = r.readSigned() + (u + 1); + t.mapOne(hexToInt(c, i), u); + } + break; + case 3: + r.readHex(s, i); + r.readHexNumber(o, i); + addHex(o, s, i); + u = r.readNumber(); + t.mapCidRange(hexToInt(s, i), hexToInt(o, i), u); + for (let e = 1; e < g; e++) { + incHex(o, i); + if (a) s.set(o); + else { + r.readHexNumber(s, i); + addHex(s, o, i); + } + r.readHexNumber(o, i); + addHex(o, s, i); + u = r.readNumber(); + t.mapCidRange(hexToInt(s, i), hexToInt(o, i), u); + } + break; + case 4: + r.readHex(c, f); + r.readHex(l, i); + t.mapOne(hexToInt(c, f), hexToStr(l, i)); + for (let e = 1; e < g; e++) { + incHex(c, f); + if (!a) { + r.readHexNumber(h, f); + addHex(c, h, f); + } + incHex(l, i); + r.readHexSigned(h, i); + addHex(l, h, i); + t.mapOne(hexToInt(c, f), hexToStr(l, i)); + } + break; + case 5: + r.readHex(s, f); + r.readHexNumber(o, f); + addHex(o, s, f); + r.readHex(l, i); + t.mapBfRange(hexToInt(s, f), hexToInt(o, f), hexToStr(l, i)); + for (let e = 1; e < g; e++) { + incHex(o, f); + if (a) s.set(o); + else { + r.readHexNumber(s, f); + addHex(s, o, f); + } + r.readHexNumber(o, f); + addHex(o, s, f); + r.readHex(l, i); + t.mapBfRange(hexToInt(s, f), hexToInt(o, f), hexToStr(l, i)); + } + break; + default: + throw new Error(`BinaryCMapReader.process - unknown type: ${e}`); + } + } + return n ? a(n) : t; + } +} +class Ascii85Stream extends DecodeStream { + constructor(e, t) { + t && (t *= 0.8); + super(t); + this.stream = e; + this.dict = e.dict; + this.input = new Uint8Array(5); + } + readBlock() { + const e = this.stream; + let t = e.getByte(); + for (; isWhiteSpace(t); ) t = e.getByte(); + if (-1 === t || 126 === t) { + this.eof = !0; + return; + } + const a = this.bufferLength; + let r, i; + if (122 === t) { + r = this.ensureBuffer(a + 4); + for (i = 0; i < 4; ++i) r[a + i] = 0; + this.bufferLength += 4; + } else { + const n = this.input; + n[0] = t; + for (i = 1; i < 5; ++i) { + t = e.getByte(); + for (; isWhiteSpace(t); ) t = e.getByte(); + n[i] = t; + if (-1 === t || 126 === t) break; + } + r = this.ensureBuffer(a + i - 1); + this.bufferLength += i - 1; + if (i < 5) { + for (; i < 5; ++i) n[i] = 117; + this.eof = !0; + } + let s = 0; + for (i = 0; i < 5; ++i) s = 85 * s + (n[i] - 33); + for (i = 3; i >= 0; --i) { + r[a + i] = 255 & s; + s >>= 8; + } + } + } +} +class AsciiHexStream extends DecodeStream { + constructor(e, t) { + t && (t *= 0.5); + super(t); + this.stream = e; + this.dict = e.dict; + this.firstDigit = -1; + } + readBlock() { + const e = this.stream.getBytes(8e3); + if (!e.length) { + this.eof = !0; + return; + } + const t = (e.length + 1) >> 1, + a = this.ensureBuffer(this.bufferLength + t); + let r = this.bufferLength, + i = 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 (i < 0) i = e; + else { + a[r++] = (i << 4) | e; + i = -1; + } + } + if (i >= 0 && this.eof) { + a[r++] = i << 4; + i = -1; + } + this.firstDigit = i; + this.bufferLength = r; + } +} +const La = -1, + _a = [ + [-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], + ], + Ua = [ + [-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], + ], + ja = [ + [-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], + ], + Xa = [ + [-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], + ], + qa = [ + [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], + ], + Ha = [ + [-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 a; + for (; 0 === (a = this._lookBits(12)); ) this._eatBits(1); + 1 === a && 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, + a = this.columns; + let r, i, n, s, o; + if (0 === this.outputBits) { + this.rowsDone && (this.eof = !0); + if (this.eof) return -1; + this.err = !1; + let n, o, c; + if (this.nextLine2D) { + for (s = 0; t[s] < a; ++s) e[s] = t[s]; + e[s++] = a; + e[s] = a; + t[0] = 0; + this.codingPos = 0; + r = 0; + i = 0; + for (; t[this.codingPos] < a; ) { + n = this._getTwoDimCode(); + switch (n) { + case 0: + this._addPixels(e[r + 1], i); + e[r + 1] < a && (r += 2); + break; + case 1: + n = o = 0; + if (i) { + do { + n += c = this._getBlackCode(); + } while (c >= 64); + do { + o += c = this._getWhiteCode(); + } while (c >= 64); + } else { + do { + n += c = this._getWhiteCode(); + } while (c >= 64); + do { + o += c = this._getBlackCode(); + } while (c >= 64); + } + this._addPixels(t[this.codingPos] + n, i); + t[this.codingPos] < a && + this._addPixels(t[this.codingPos] + o, 1 ^ i); + for (; e[r] <= t[this.codingPos] && e[r] < a; ) r += 2; + break; + case 7: + this._addPixels(e[r] + 3, i); + i ^= 1; + if (t[this.codingPos] < a) { + ++r; + for (; e[r] <= t[this.codingPos] && e[r] < a; ) r += 2; + } + break; + case 5: + this._addPixels(e[r] + 2, i); + i ^= 1; + if (t[this.codingPos] < a) { + ++r; + for (; e[r] <= t[this.codingPos] && e[r] < a; ) r += 2; + } + break; + case 3: + this._addPixels(e[r] + 1, i); + i ^= 1; + if (t[this.codingPos] < a) { + ++r; + for (; e[r] <= t[this.codingPos] && e[r] < a; ) r += 2; + } + break; + case 2: + this._addPixels(e[r], i); + i ^= 1; + if (t[this.codingPos] < a) { + ++r; + for (; e[r] <= t[this.codingPos] && e[r] < a; ) r += 2; + } + break; + case 8: + this._addPixelsNeg(e[r] - 3, i); + i ^= 1; + if (t[this.codingPos] < a) { + r > 0 ? --r : ++r; + for (; e[r] <= t[this.codingPos] && e[r] < a; ) r += 2; + } + break; + case 6: + this._addPixelsNeg(e[r] - 2, i); + i ^= 1; + if (t[this.codingPos] < a) { + r > 0 ? --r : ++r; + for (; e[r] <= t[this.codingPos] && e[r] < a; ) r += 2; + } + break; + case 4: + this._addPixelsNeg(e[r] - 1, i); + i ^= 1; + if (t[this.codingPos] < a) { + r > 0 ? --r : ++r; + for (; e[r] <= t[this.codingPos] && e[r] < a; ) r += 2; + } + break; + case La: + this._addPixels(a, 0); + this.eof = !0; + break; + default: + info("bad 2d code"); + this._addPixels(a, 0); + this.err = !0; + } + } + } else { + t[0] = 0; + this.codingPos = 0; + i = 0; + for (; t[this.codingPos] < a; ) { + n = 0; + if (i) + do { + n += c = this._getBlackCode(); + } while (c >= 64); + else + do { + n += c = this._getWhiteCode(); + } while (c >= 64); + this._addPixels(t[this.codingPos] + n, i); + i ^= 1; + } + } + let l = !1; + this.byteAlign && (this.inputBits &= -8); + if (this.eoblock || this.row !== this.rows - 1) { + n = this._lookBits(12); + if (this.eoline) + for (; n !== La && 1 !== n; ) { + this._eatBits(1); + n = this._lookBits(12); + } + else + for (; 0 === n; ) { + this._eatBits(1); + n = this._lookBits(12); + } + if (1 === n) { + this._eatBits(12); + l = !0; + } else n === La && (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 && l && this.byteAlign) { + n = this._lookBits(12); + if (1 === n) { + this._eatBits(12); + if (this.encoding > 0) { + this._lookBits(1); + this._eatBits(1); + } + if (this.encoding >= 0) + for (s = 0; s < 4; ++s) { + n = this._lookBits(12); + 1 !== n && info("bad rtc code: " + n); + this._eatBits(12); + if (this.encoding > 0) { + this._lookBits(1); + this._eatBits(1); + } + } + this.eof = !0; + } + } else if (this.err && this.eoline) { + for (;;) { + n = this._lookBits(13); + if (n === La) { + this.eof = !0; + return -1; + } + if (n >> 1 == 1) break; + this._eatBits(1); + } + this._eatBits(12); + if (this.encoding > 0) { + this._eatBits(1); + this.nextLine2D = !(1 & n); + } + } + this.outputBits = + t[0] > 0 ? t[(this.codingPos = 0)] : t[(this.codingPos = 1)]; + this.row++; + } + if (this.outputBits >= 8) { + o = 1 & this.codingPos ? 0 : 255; + this.outputBits -= 8; + if (0 === this.outputBits && t[this.codingPos] < a) { + this.codingPos++; + this.outputBits = t[this.codingPos] - t[this.codingPos - 1]; + } + } else { + n = 8; + o = 0; + do { + if ("number" != typeof this.outputBits) + throw new FormatError( + 'Invalid /CCITTFaxDecode data, "outputBits" must be a number.', + ); + if (this.outputBits > n) { + o <<= n; + 1 & this.codingPos || (o |= 255 >> (8 - n)); + this.outputBits -= n; + n = 0; + } else { + o <<= this.outputBits; + 1 & this.codingPos || (o |= 255 >> (8 - this.outputBits)); + n -= this.outputBits; + this.outputBits = 0; + if (t[this.codingPos] < a) { + this.codingPos++; + this.outputBits = t[this.codingPos] - t[this.codingPos - 1]; + } else if (n > 0) { + o <<= n; + n = 0; + } + } + } while (n); + } + this.black && (o ^= 255); + return o; + } + _addPixels(e, t) { + const a = this.codingLine; + let r = this.codingPos; + if (e > a[r]) { + if (e > this.columns) { + info("row is wrong length"); + this.err = !0; + e = this.columns; + } + (1 & r) ^ t && ++r; + a[r] = e; + } + this.codingPos = r; + } + _addPixelsNeg(e, t) { + const a = this.codingLine; + let r = this.codingPos; + if (e > a[r]) { + if (e > this.columns) { + info("row is wrong length"); + this.err = !0; + e = this.columns; + } + (1 & r) ^ t && ++r; + a[r] = e; + } else if (e < a[r]) { + if (e < 0) { + info("invalid code"); + this.err = !0; + e = 0; + } + for (; r > 0 && e < a[r - 1]; ) --r; + a[r] = e; + } + this.codingPos = r; + } + _findTableCode(e, t, a, r) { + const i = r || 0; + for (let r = e; r <= t; ++r) { + let e = this._lookBits(r); + if (e === La) return [!0, 1, !1]; + r < t && (e <<= t - r); + if (!i || e >= i) { + const t = a[e - i]; + if (t[0] === r) { + this._eatBits(r); + return [!0, t[1], !0]; + } + } + } + return [!1, 0, !1]; + } + _getTwoDimCode() { + let e, + t = 0; + if (this.eoblock) { + t = this._lookBits(7); + e = _a[t]; + if (e?.[0] > 0) { + this._eatBits(e[0]); + return e[1]; + } + } else { + const e = this._findTableCode(1, 7, _a); + if (e[0] && e[2]) return e[1]; + } + info("Bad two dim code"); + return La; + } + _getWhiteCode() { + let e, + t = 0; + if (this.eoblock) { + t = this._lookBits(12); + if (t === La) return 1; + e = t >> 5 ? ja[t >> 3] : Ua[t]; + if (e[0] > 0) { + this._eatBits(e[0]); + return e[1]; + } + } else { + let e = this._findTableCode(1, 9, ja); + if (e[0]) return e[1]; + e = this._findTableCode(11, 12, Ua); + 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 === La) return 1; + t = + e >> 7 ? (!(e >> 9) && e >> 7 ? qa[(e >> 1) - 64] : Ha[e >> 7]) : Xa[e]; + if (t[0] > 0) { + this._eatBits(t[0]); + return t[1]; + } + } else { + let e = this._findTableCode(2, 6, Ha); + if (e[0]) return e[1]; + e = this._findTableCode(7, 12, qa, 64); + if (e[0]) return e[1]; + e = this._findTableCode(10, 13, Xa); + if (e[0]) return e[1]; + } + info("bad black code"); + this._eatBits(1); + return 1; + } + _lookBits(e) { + let t; + for (; this.inputBits < e; ) { + if (-1 === (t = this.source.next())) + return 0 === this.inputBits + ? La + : (this.inputBuf << (e - this.inputBits)) & (65535 >> (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, a) { + super(t); + this.stream = e; + this.dict = e.dict; + a instanceof Dict || (a = Dict.empty); + const r = { next: () => e.getByte() }; + this.ccittFaxDecoder = new CCITTFaxDecoder(r, { + K: a.get("K"), + EndOfLine: a.get("EndOfLine"), + EncodedByteAlign: a.get("EncodedByteAlign"), + Columns: a.get("Columns"), + Rows: a.get("Rows"), + EndOfBlock: a.get("EndOfBlock"), + BlackIs1: a.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 Wa = new Int32Array([ + 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15, + ]), + Ga = 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, + ]), + za = 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, + ]), + $a = [ + 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, + ], + Va = [ + 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.stream = e; + this.dict = e.dict; + const a = e.getByte(), + r = e.getByte(); + if (-1 === a || -1 === r) + throw new FormatError(`Invalid header in flate stream: ${a}, ${r}`); + if (8 != (15 & a)) + throw new FormatError( + `Unknown compression method in flate stream: ${a}, ${r}`, + ); + if (((a << 8) + r) % 31 != 0) + throw new FormatError(`Bad FCHECK in flate stream: ${a}, ${r}`); + if (32 & r) + throw new FormatError(`FDICT bit set in flate stream: ${a}, ${r}`); + this.codeSize = 0; + this.codeBuf = 0; + } + async getImageData(e, t) { + const a = await this.asyncGetBytes(); + return a ? (a.length <= e ? a : a.subarray(0, e)) : this.getBytes(e); + } + async asyncGetBytes() { + this.stream.reset(); + const e = this.stream.getBytes(); + try { + const { readable: t, writable: a } = new DecompressionStream("deflate"), + r = a.getWriter(); + await r.ready; + r.write(e) + .then(async () => { + await r.ready; + await r.close(); + }) + .catch(() => {}); + const i = []; + let n = 0; + for await (const e of t) { + i.push(e); + n += e.byteLength; + } + const s = new Uint8Array(n); + let o = 0; + for (const e of i) { + s.set(e, o); + o += e.byteLength; + } + return s; + } catch { + this.stream = new Stream(e, 2, e.length, this.stream.dict); + this.reset(); + return null; + } + } + get isAsync() { + return !0; + } + getBits(e) { + const t = this.stream; + let a, + r = this.codeSize, + i = this.codeBuf; + for (; r < e; ) { + if (-1 === (a = t.getByte())) + throw new FormatError("Bad encoding in flate stream"); + i |= a << r; + r += 8; + } + a = i & ((1 << e) - 1); + this.codeBuf = i >> e; + this.codeSize = r -= e; + return a; + } + getCode(e) { + const t = this.stream, + a = e[0], + r = e[1]; + let i, + n = this.codeSize, + s = this.codeBuf; + for (; n < r && -1 !== (i = t.getByte()); ) { + s |= i << n; + n += 8; + } + const o = a[s & ((1 << r) - 1)], + c = o >> 16, + l = 65535 & o; + if (c < 1 || n < c) throw new FormatError("Bad encoding in flate stream"); + this.codeBuf = s >> c; + this.codeSize = n - c; + return l; + } + generateHuffmanTable(e) { + const t = e.length; + let a, + r = 0; + for (a = 0; a < t; ++a) e[a] > r && (r = e[a]); + const i = 1 << r, + n = new Int32Array(i); + for (let s = 1, o = 0, c = 2; s <= r; ++s, o <<= 1, c <<= 1) + for (let r = 0; r < t; ++r) + if (e[r] === s) { + let e = 0, + t = o; + for (a = 0; a < s; ++a) { + e = (e << 1) | (1 & t); + t >>= 1; + } + for (a = e; a < i; a += c) n[a] = (s << 16) | r; + ++o; + } + return [n, r]; + } + #X(e) { + info(e); + this.eof = !0; + } + readBlock() { + let e, t, a; + const r = this.stream; + try { + t = this.getBits(3); + } catch (e) { + this.#X(e.message); + return; + } + 1 & t && (this.eof = !0); + t >>= 1; + if (0 === t) { + let t; + if (-1 === (t = r.getByte())) { + this.#X("Bad block header in flate stream"); + return; + } + let a = t; + if (-1 === (t = r.getByte())) { + this.#X("Bad block header in flate stream"); + return; + } + a |= t << 8; + if (-1 === (t = r.getByte())) { + this.#X("Bad block header in flate stream"); + return; + } + let i = t; + if (-1 === (t = r.getByte())) { + this.#X("Bad block header in flate stream"); + return; + } + i |= t << 8; + if (i !== (65535 & ~a) && (0 !== a || 0 !== i)) + throw new FormatError("Bad uncompressed block length in flate stream"); + this.codeBuf = 0; + this.codeSize = 0; + const n = this.bufferLength, + s = n + a; + e = this.ensureBuffer(s); + this.bufferLength = s; + if (0 === a) -1 === r.peekByte() && (this.eof = !0); + else { + const t = r.getBytes(a); + e.set(t, n); + t.length < a && (this.eof = !0); + } + return; + } + let i, n; + if (1 === t) { + i = $a; + n = Va; + } else { + if (2 !== t) throw new FormatError("Unknown block type in flate stream"); + { + const e = this.getBits(5) + 257, + t = this.getBits(5) + 1, + r = this.getBits(4) + 4, + s = new Uint8Array(Wa.length); + let o; + for (o = 0; o < r; ++o) s[Wa[o]] = this.getBits(3); + const c = this.generateHuffmanTable(s); + a = 0; + o = 0; + const l = e + t, + h = new Uint8Array(l); + let u, d, f; + for (; o < l; ) { + const e = this.getCode(c); + if (16 === e) { + u = 2; + d = 3; + f = a; + } else if (17 === e) { + u = 3; + d = 3; + f = a = 0; + } else { + if (18 !== e) { + h[o++] = a = e; + continue; + } + u = 7; + d = 11; + f = a = 0; + } + let t = this.getBits(u) + d; + for (; t-- > 0; ) h[o++] = f; + } + i = this.generateHuffmanTable(h.subarray(0, e)); + n = this.generateHuffmanTable(h.subarray(e, l)); + } + } + e = this.buffer; + let s = e ? e.length : 0, + o = this.bufferLength; + for (;;) { + let t = this.getCode(i); + if (t < 256) { + if (o + 1 >= s) { + e = this.ensureBuffer(o + 1); + s = e.length; + } + e[o++] = t; + continue; + } + if (256 === t) { + this.bufferLength = o; + return; + } + t -= 257; + t = Ga[t]; + let r = t >> 16; + r > 0 && (r = this.getBits(r)); + a = (65535 & t) + r; + t = this.getCode(n); + t = za[t]; + r = t >> 16; + r > 0 && (r = this.getBits(r)); + const c = (65535 & t) + r; + if (o + a >= s) { + e = this.ensureBuffer(o + a); + s = e.length; + } + for (let t = 0; t < a; ++t, ++o) e[o] = e[o - c]; + } + } +} +const Ka = [ + { qe: 22017, nmps: 1, nlps: 1, switchFlag: 1 }, + { qe: 13313, nmps: 2, nlps: 6, switchFlag: 0 }, + { qe: 6145, nmps: 3, nlps: 9, switchFlag: 0 }, + { qe: 2753, nmps: 4, nlps: 12, switchFlag: 0 }, + { qe: 1313, nmps: 5, nlps: 29, switchFlag: 0 }, + { qe: 545, nmps: 38, nlps: 33, switchFlag: 0 }, + { qe: 22017, nmps: 7, nlps: 6, switchFlag: 1 }, + { qe: 21505, nmps: 8, nlps: 14, switchFlag: 0 }, + { qe: 18433, nmps: 9, nlps: 14, switchFlag: 0 }, + { qe: 14337, nmps: 10, nlps: 14, switchFlag: 0 }, + { qe: 12289, nmps: 11, nlps: 17, switchFlag: 0 }, + { qe: 9217, nmps: 12, nlps: 18, switchFlag: 0 }, + { qe: 7169, nmps: 13, nlps: 20, switchFlag: 0 }, + { qe: 5633, nmps: 29, nlps: 21, switchFlag: 0 }, + { qe: 22017, nmps: 15, nlps: 14, switchFlag: 1 }, + { qe: 21505, nmps: 16, nlps: 14, switchFlag: 0 }, + { qe: 20737, nmps: 17, nlps: 15, switchFlag: 0 }, + { qe: 18433, nmps: 18, nlps: 16, switchFlag: 0 }, + { qe: 14337, nmps: 19, nlps: 17, switchFlag: 0 }, + { qe: 13313, nmps: 20, nlps: 18, switchFlag: 0 }, + { qe: 12289, nmps: 21, nlps: 19, switchFlag: 0 }, + { qe: 10241, nmps: 22, nlps: 19, switchFlag: 0 }, + { qe: 9217, nmps: 23, nlps: 20, switchFlag: 0 }, + { qe: 8705, nmps: 24, nlps: 21, switchFlag: 0 }, + { qe: 7169, nmps: 25, nlps: 22, switchFlag: 0 }, + { qe: 6145, nmps: 26, nlps: 23, switchFlag: 0 }, + { qe: 5633, nmps: 27, nlps: 24, switchFlag: 0 }, + { qe: 5121, nmps: 28, nlps: 25, switchFlag: 0 }, + { qe: 4609, nmps: 29, nlps: 26, switchFlag: 0 }, + { qe: 4353, nmps: 30, nlps: 27, switchFlag: 0 }, + { qe: 2753, nmps: 31, nlps: 28, switchFlag: 0 }, + { qe: 2497, nmps: 32, nlps: 29, switchFlag: 0 }, + { qe: 2209, nmps: 33, nlps: 30, switchFlag: 0 }, + { qe: 1313, nmps: 34, nlps: 31, switchFlag: 0 }, + { qe: 1089, nmps: 35, nlps: 32, switchFlag: 0 }, + { qe: 673, nmps: 36, nlps: 33, switchFlag: 0 }, + { qe: 545, nmps: 37, nlps: 34, switchFlag: 0 }, + { qe: 321, nmps: 38, nlps: 35, switchFlag: 0 }, + { qe: 273, nmps: 39, nlps: 36, switchFlag: 0 }, + { qe: 133, nmps: 40, nlps: 37, switchFlag: 0 }, + { qe: 73, nmps: 41, nlps: 38, switchFlag: 0 }, + { qe: 37, nmps: 42, nlps: 39, switchFlag: 0 }, + { qe: 21, nmps: 43, nlps: 40, switchFlag: 0 }, + { qe: 9, nmps: 44, nlps: 41, switchFlag: 0 }, + { qe: 5, nmps: 45, nlps: 42, switchFlag: 0 }, + { qe: 1, nmps: 45, nlps: 43, switchFlag: 0 }, + { qe: 22017, nmps: 46, nlps: 46, switchFlag: 0 }, +]; +class ArithmeticDecoder { + constructor(e, t, a) { + this.data = e; + this.bp = t; + this.dataEnd = a; + this.chigh = e[t]; + this.clow = 0; + this.byteIn(); + this.chigh = ((this.chigh << 7) & 65535) | ((this.clow >> 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 += t < this.dataEnd ? e[t] << 8 : 65280; + this.ct = 8; + this.bp = t; + } + if (this.clow > 65535) { + this.chigh += this.clow >> 16; + this.clow &= 65535; + } + } + readBit(e, t) { + let a = e[t] >> 1, + r = 1 & e[t]; + const i = Ka[a], + n = i.qe; + let s, + o = this.a - n; + if (this.chigh < n) + if (o < n) { + o = n; + s = r; + a = i.nmps; + } else { + o = n; + s = 1 ^ r; + 1 === i.switchFlag && (r = s); + a = i.nlps; + } + else { + this.chigh -= n; + if (32768 & o) { + this.a = o; + return r; + } + if (o < n) { + s = 1 ^ r; + 1 === i.switchFlag && (r = s); + a = i.nlps; + } else { + s = r; + a = i.nmps; + } + } + do { + 0 === this.ct && this.byteIn(); + o <<= 1; + this.chigh = ((this.chigh << 1) & 65535) | ((this.clow >> 15) & 1); + this.clow = (this.clow << 1) & 65535; + this.ct--; + } while (!(32768 & o)); + this.a = o; + e[t] = (a << 1) | r; + return s; + } +} +class Jbig2Error extends ea { + 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, a) { + this.data = e; + this.start = t; + this.end = a; + } + 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, a) { + const r = e.getContexts(t); + let i = 1; + function readBits(e) { + let t = 0; + for (let n = 0; n < e; n++) { + const e = a.readBit(r, i); + i = i < 256 ? (i << 1) | e : (511 & ((i << 1) | e)) | 256; + t = (t << 1) | e; + } + return t >>> 0; + } + const n = readBits(1), + s = 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 o; + 0 === n ? (o = s) : s > 0 && (o = -s); + return o >= -2147483648 && o <= da ? o : null; +} +function decodeIAID(e, t, a) { + const r = e.getContexts("IAID"); + let i = 1; + for (let e = 0; e < a; e++) { + i = (i << 1) | t.readBit(r, i); + } + return a < 31 ? i & ((1 << a) - 1) : 2147483647 & i; +} +const Ja = [ + "SymbolDictionary", + null, + null, + null, + "IntermediateTextRegion", + null, + "ImmediateTextRegion", + "ImmediateLosslessTextRegion", + null, + null, + null, + null, + null, + null, + null, + null, + "PatternDictionary", + null, + null, + null, + "IntermediateHalftoneRegion", + null, + "ImmediateHalftoneRegion", + "ImmediateLosslessHalftoneRegion", + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + "IntermediateGenericRegion", + null, + "ImmediateGenericRegion", + "ImmediateLosslessGenericRegion", + "IntermediateGenericRefinementRegion", + null, + "ImmediateGenericRefinementRegion", + "ImmediateLosslessGenericRefinementRegion", + null, + null, + null, + null, + "PageInformation", + "EndOfPage", + "EndOfStripe", + "EndOfFile", + "Profiles", + "Tables", + null, + null, + null, + null, + null, + null, + null, + null, + "Extension", + ], + Ya = [ + [ + { x: -1, y: -2 }, + { x: 0, y: -2 }, + { x: 1, y: -2 }, + { x: -2, y: -1 }, + { x: -1, y: -1 }, + { x: 0, y: -1 }, + { x: 1, y: -1 }, + { x: 2, y: -1 }, + { x: -4, y: 0 }, + { x: -3, y: 0 }, + { x: -2, y: 0 }, + { x: -1, y: 0 }, + ], + [ + { x: -1, y: -2 }, + { x: 0, y: -2 }, + { x: 1, y: -2 }, + { x: 2, y: -2 }, + { x: -2, y: -1 }, + { x: -1, y: -1 }, + { x: 0, y: -1 }, + { x: 1, y: -1 }, + { x: 2, y: -1 }, + { x: -3, y: 0 }, + { x: -2, y: 0 }, + { x: -1, y: 0 }, + ], + [ + { x: -1, y: -2 }, + { x: 0, y: -2 }, + { x: 1, y: -2 }, + { x: -2, y: -1 }, + { x: -1, y: -1 }, + { x: 0, y: -1 }, + { x: 1, y: -1 }, + { x: -2, y: 0 }, + { x: -1, y: 0 }, + ], + [ + { x: -3, y: -1 }, + { x: -2, y: -1 }, + { x: -1, y: -1 }, + { x: 0, y: -1 }, + { x: 1, y: -1 }, + { x: -4, y: 0 }, + { x: -3, y: 0 }, + { x: -2, y: 0 }, + { x: -1, y: 0 }, + ], + ], + Za = [ + { + coding: [ + { x: 0, y: -1 }, + { x: 1, y: -1 }, + { x: -1, y: 0 }, + ], + reference: [ + { x: 0, y: -1 }, + { x: 1, y: -1 }, + { x: -1, y: 0 }, + { x: 0, y: 0 }, + { x: 1, y: 0 }, + { x: -1, y: 1 }, + { x: 0, y: 1 }, + { x: 1, y: 1 }, + ], + }, + { + coding: [ + { x: -1, y: -1 }, + { x: 0, y: -1 }, + { x: 1, y: -1 }, + { x: -1, y: 0 }, + ], + reference: [ + { x: 0, y: -1 }, + { x: -1, y: 0 }, + { x: 0, y: 0 }, + { x: 1, y: 0 }, + { x: 0, y: 1 }, + { x: 1, y: 1 }, + ], + }, + ], + Qa = [39717, 1941, 229, 405], + er = [32, 8]; +function decodeBitmap(e, t, a, r, i, n, s, o) { + if (e) { + return decodeMMRBitmap(new Reader(o.data, o.start, o.end), t, a, !1); + } + if ( + 0 === r && + !n && + !i && + 4 === s.length && + 3 === s[0].x && + -1 === s[0].y && + -3 === s[1].x && + -1 === s[1].y && + 2 === s[2].x && + -2 === s[2].y && + -2 === s[3].x && + -2 === s[3].y + ) + return (function decodeBitmapTemplate0(e, t, a) { + const r = a.decoder, + i = a.contextCache.getContexts("GB"), + n = []; + let s, o, c, l, h, u, d; + for (o = 0; o < t; o++) { + h = n[o] = new Uint8Array(e); + u = o < 1 ? h : n[o - 1]; + d = o < 2 ? h : n[o - 2]; + s = + (d[0] << 13) | + (d[1] << 12) | + (d[2] << 11) | + (u[0] << 7) | + (u[1] << 6) | + (u[2] << 5) | + (u[3] << 4); + for (c = 0; c < e; c++) { + h[c] = l = r.readBit(i, s); + s = + ((31735 & s) << 1) | + (c + 3 < e ? d[c + 3] << 11 : 0) | + (c + 4 < e ? u[c + 4] << 4 : 0) | + l; + } + } + return n; + })(t, a, o); + const c = !!n, + l = Ya[r].concat(s); + l.sort((e, t) => e.y - t.y || e.x - t.x); + const h = l.length, + u = new Int8Array(h), + d = new Int8Array(h), + f = []; + let g, + p, + m = 0, + b = 0, + y = 0, + w = 0; + for (p = 0; p < h; p++) { + u[p] = l[p].x; + d[p] = l[p].y; + b = Math.min(b, l[p].x); + y = Math.max(y, l[p].x); + w = Math.min(w, l[p].y); + p < h - 1 && l[p].y === l[p + 1].y && l[p].x === l[p + 1].x - 1 + ? (m |= 1 << (h - 1 - p)) + : f.push(p); + } + const x = f.length, + S = new Int8Array(x), + k = new Int8Array(x), + C = new Uint16Array(x); + for (g = 0; g < x; g++) { + p = f[g]; + S[g] = l[p].x; + k[g] = l[p].y; + C[g] = 1 << (h - 1 - p); + } + const v = -b, + F = -w, + T = t - y, + O = Qa[r]; + let M = new Uint8Array(t); + const D = [], + R = o.decoder, + N = o.contextCache.getContexts("GB"); + let E, + L, + _, + U, + j, + X = 0, + q = 0; + for (let e = 0; e < a; e++) { + if (i) { + X ^= R.readBit(N, O); + if (X) { + D.push(M); + continue; + } + } + M = new Uint8Array(M); + D.push(M); + for (E = 0; E < t; E++) { + if (c && n[e][E]) { + M[E] = 0; + continue; + } + if (E >= v && E < T && e >= F) { + q = (q << 1) & m; + for (p = 0; p < x; p++) { + L = e + k[p]; + _ = E + S[p]; + U = D[L][_]; + if (U) { + U = C[p]; + q |= U; + } + } + } else { + q = 0; + j = h - 1; + for (p = 0; p < h; p++, j--) { + _ = E + u[p]; + if (_ >= 0 && _ < t) { + L = e + d[p]; + if (L >= 0) { + U = D[L][_]; + U && (q |= U << j); + } + } + } + } + const a = R.readBit(N, q); + M[E] = a; + } + } + return D; +} +function decodeRefinement(e, t, a, r, i, n, s, o, c) { + let l = Za[a].coding; + 0 === a && (l = l.concat([o[0]])); + const h = l.length, + u = new Int32Array(h), + d = new Int32Array(h); + let f; + for (f = 0; f < h; f++) { + u[f] = l[f].x; + d[f] = l[f].y; + } + let g = Za[a].reference; + 0 === a && (g = g.concat([o[1]])); + const p = g.length, + m = new Int32Array(p), + b = new Int32Array(p); + for (f = 0; f < p; f++) { + m[f] = g[f].x; + b[f] = g[f].y; + } + const y = r[0].length, + w = r.length, + x = er[a], + S = [], + k = c.decoder, + C = c.contextCache.getContexts("GR"); + let v = 0; + for (let a = 0; a < t; a++) { + if (s) { + v ^= k.readBit(C, x); + if (v) throw new Jbig2Error("prediction is not supported"); + } + const t = new Uint8Array(e); + S.push(t); + for (let s = 0; s < e; s++) { + let o, + c, + l = 0; + for (f = 0; f < h; f++) { + o = a + d[f]; + c = s + u[f]; + o < 0 || c < 0 || c >= e ? (l <<= 1) : (l = (l << 1) | S[o][c]); + } + for (f = 0; f < p; f++) { + o = a + b[f] - n; + c = s + m[f] - i; + o < 0 || o >= w || c < 0 || c >= y + ? (l <<= 1) + : (l = (l << 1) | r[o][c]); + } + const g = k.readBit(C, l); + t[s] = g; + } + } + return S; +} +function decodeTextRegion( + e, + t, + a, + r, + i, + n, + s, + o, + c, + l, + h, + u, + d, + f, + g, + p, + m, + b, + y, +) { + if (e && t) throw new Jbig2Error("refinement with Huffman is not supported"); + const w = []; + let x, S; + for (x = 0; x < r; x++) { + S = new Uint8Array(a); + i && S.fill(i); + w.push(S); + } + const k = m.decoder, + C = m.contextCache; + let v = e ? -f.tableDeltaT.decode(y) : -decodeInteger(C, "IADT", k), + F = 0; + x = 0; + for (; x < n; ) { + v += e ? f.tableDeltaT.decode(y) : decodeInteger(C, "IADT", k); + F += e ? f.tableFirstS.decode(y) : decodeInteger(C, "IAFS", k); + let r = F; + for (;;) { + let i = 0; + s > 1 && (i = e ? y.readBits(b) : decodeInteger(C, "IAIT", k)); + const n = s * v + i, + F = e ? f.symbolIDTable.decode(y) : decodeIAID(C, k, c), + T = t && (e ? y.readBit() : decodeInteger(C, "IARI", k)); + let O = o[F], + M = O[0].length, + D = O.length; + if (T) { + const e = decodeInteger(C, "IARDW", k), + t = decodeInteger(C, "IARDH", k); + M += e; + D += t; + O = decodeRefinement( + M, + D, + g, + O, + (e >> 1) + decodeInteger(C, "IARDX", k), + (t >> 1) + decodeInteger(C, "IARDY", k), + !1, + p, + m, + ); + } + let R = 0; + l + ? 1 & u + ? (R = D - 1) + : (r += D - 1) + : u > 1 + ? (r += M - 1) + : (R = M - 1); + const N = n - (1 & u ? 0 : D - 1), + E = r - (2 & u ? M - 1 : 0); + let L, _, U; + if (l) + for (L = 0; L < D; L++) { + S = w[E + L]; + if (!S) continue; + U = O[L]; + const e = Math.min(a - N, M); + switch (d) { + case 0: + for (_ = 0; _ < e; _++) S[N + _] |= U[_]; + break; + case 2: + for (_ = 0; _ < e; _++) S[N + _] ^= U[_]; + break; + default: + throw new Jbig2Error(`operator ${d} is not supported`); + } + } + else + for (_ = 0; _ < D; _++) { + S = w[N + _]; + if (S) { + U = O[_]; + switch (d) { + case 0: + for (L = 0; L < M; L++) S[E + L] |= U[L]; + break; + case 2: + for (L = 0; L < M; L++) S[E + L] ^= U[L]; + break; + default: + throw new Jbig2Error(`operator ${d} is not supported`); + } + } + } + x++; + const j = e ? f.tableDeltaS.decode(y) : decodeInteger(C, "IADS", k); + if (null === j) break; + r += R + j + h; + } + } + return w; +} +function readSegmentHeader(e, t) { + const a = {}; + a.number = readUint32(e, t); + const r = e[t + 4], + i = 63 & r; + if (!Ja[i]) throw new Jbig2Error("invalid segment type: " + i); + a.type = i; + a.typeName = Ja[i]; + a.deferredNonRetain = !!(128 & r); + const n = !!(64 & r), + s = e[t + 5]; + let o = (s >> 5) & 7; + const c = [31 & s]; + let l = t + 6; + if (7 === s) { + o = 536870911 & readUint32(e, l - 1); + l += 3; + let t = (o + 7) >> 3; + c[0] = e[l++]; + for (; --t > 0; ) c.push(e[l++]); + } else if (5 === s || 6 === s) + throw new Jbig2Error("invalid referred-to flags"); + a.retainBits = c; + let h = 4; + a.number <= 256 ? (h = 1) : a.number <= 65536 && (h = 2); + const u = []; + let d, f; + for (d = 0; d < o; d++) { + let t; + t = 1 === h ? e[l] : 2 === h ? readUint16(e, l) : readUint32(e, l); + u.push(t); + l += h; + } + a.referredTo = u; + if (n) { + a.pageAssociation = readUint32(e, l); + l += 4; + } else a.pageAssociation = e[l++]; + a.length = readUint32(e, l); + l += 4; + if (4294967295 === a.length) { + if (38 !== i) throw new Jbig2Error("invalid unknown segment length"); + { + const t = readRegionSegmentInformation(e, l), + r = !!(1 & e[l + tr]), + i = 6, + n = new Uint8Array(i); + if (!r) { + n[0] = 255; + n[1] = 172; + } + n[2] = (t.height >>> 24) & 255; + n[3] = (t.height >> 16) & 255; + n[4] = (t.height >> 8) & 255; + n[5] = 255 & t.height; + for (d = l, f = e.length; d < f; d++) { + let t = 0; + for (; t < i && n[t] === e[d + t]; ) t++; + if (t === i) { + a.length = d + i; + break; + } + } + if (4294967295 === a.length) + throw new Jbig2Error("segment end was not found"); + } + } + a.headerEnd = l; + return a; +} +function readSegments(e, t, a, r) { + const i = []; + let n = a; + for (; n < r; ) { + const a = readSegmentHeader(t, n); + n = a.headerEnd; + const r = { header: a, data: t }; + if (!e.randomAccess) { + r.start = n; + n += a.length; + r.end = n; + } + i.push(r); + if (51 === a.type) break; + } + if (e.randomAccess) + for (let e = 0, t = i.length; e < t; e++) { + i[e].start = n; + n += i[e].header.length; + i[e].end = n; + } + return i; +} +function readRegionSegmentInformation(e, t) { + return { + width: readUint32(e, t), + height: readUint32(e, t + 4), + x: readUint32(e, t + 8), + y: readUint32(e, t + 12), + combinationOperator: 7 & e[t + 16], + }; +} +const tr = 17; +function processSegment(e, t) { + const a = e.header, + r = e.data, + i = e.end; + let n, + s, + o, + c, + l = e.start; + switch (a.type) { + case 0: + const e = {}, + t = readUint16(r, l); + e.huffman = !!(1 & t); + e.refinement = !!(2 & t); + e.huffmanDHSelector = (t >> 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; + l += 2; + if (!e.huffman) { + c = 0 === e.template ? 4 : 1; + s = []; + for (o = 0; o < c; o++) { + s.push({ x: readInt8(r, l), y: readInt8(r, l + 1) }); + l += 2; + } + e.at = s; + } + if (e.refinement && !e.refinementTemplate) { + s = []; + for (o = 0; o < 2; o++) { + s.push({ x: readInt8(r, l), y: readInt8(r, l + 1) }); + l += 2; + } + e.refinementAt = s; + } + e.numberOfExportedSymbols = readUint32(r, l); + l += 4; + e.numberOfNewSymbols = readUint32(r, l); + l += 4; + n = [e, a.number, a.referredTo, r, l, i]; + break; + case 6: + case 7: + const h = {}; + h.info = readRegionSegmentInformation(r, l); + l += tr; + const u = readUint16(r, l); + l += 2; + h.huffman = !!(1 & u); + h.refinement = !!(2 & u); + h.logStripSize = (u >> 2) & 3; + h.stripSize = 1 << h.logStripSize; + h.referenceCorner = (u >> 4) & 3; + h.transposed = !!(64 & u); + h.combinationOperator = (u >> 7) & 3; + h.defaultPixelValue = (u >> 9) & 1; + h.dsOffset = (u << 17) >> 27; + h.refinementTemplate = (u >> 15) & 1; + if (h.huffman) { + const e = readUint16(r, l); + l += 2; + h.huffmanFS = 3 & e; + h.huffmanDS = (e >> 2) & 3; + h.huffmanDT = (e >> 4) & 3; + h.huffmanRefinementDW = (e >> 6) & 3; + h.huffmanRefinementDH = (e >> 8) & 3; + h.huffmanRefinementDX = (e >> 10) & 3; + h.huffmanRefinementDY = (e >> 12) & 3; + h.huffmanRefinementSizeSelector = !!(16384 & e); + } + if (h.refinement && !h.refinementTemplate) { + s = []; + for (o = 0; o < 2; o++) { + s.push({ x: readInt8(r, l), y: readInt8(r, l + 1) }); + l += 2; + } + h.refinementAt = s; + } + h.numberOfSymbolInstances = readUint32(r, l); + l += 4; + n = [h, a.referredTo, r, l, i]; + break; + case 16: + const d = {}, + f = r[l++]; + d.mmr = !!(1 & f); + d.template = (f >> 1) & 3; + d.patternWidth = r[l++]; + d.patternHeight = r[l++]; + d.maxPatternIndex = readUint32(r, l); + l += 4; + n = [d, a.number, r, l, i]; + break; + case 22: + case 23: + const g = {}; + g.info = readRegionSegmentInformation(r, l); + l += tr; + const p = r[l++]; + g.mmr = !!(1 & p); + g.template = (p >> 1) & 3; + g.enableSkip = !!(8 & p); + g.combinationOperator = (p >> 4) & 7; + g.defaultPixelValue = (p >> 7) & 1; + g.gridWidth = readUint32(r, l); + l += 4; + g.gridHeight = readUint32(r, l); + l += 4; + g.gridOffsetX = 4294967295 & readUint32(r, l); + l += 4; + g.gridOffsetY = 4294967295 & readUint32(r, l); + l += 4; + g.gridVectorX = readUint16(r, l); + l += 2; + g.gridVectorY = readUint16(r, l); + l += 2; + n = [g, a.referredTo, r, l, i]; + break; + case 38: + case 39: + const m = {}; + m.info = readRegionSegmentInformation(r, l); + l += tr; + const b = r[l++]; + m.mmr = !!(1 & b); + m.template = (b >> 1) & 3; + m.prediction = !!(8 & b); + if (!m.mmr) { + c = 0 === m.template ? 4 : 1; + s = []; + for (o = 0; o < c; o++) { + s.push({ x: readInt8(r, l), y: readInt8(r, l + 1) }); + l += 2; + } + m.at = s; + } + n = [m, r, l, i]; + break; + case 48: + const y = { + width: readUint32(r, l), + height: readUint32(r, l + 4), + resolutionX: readUint32(r, l + 8), + resolutionY: readUint32(r, l + 12), + }; + 4294967295 === y.height && delete y.height; + const w = r[l + 16]; + readUint16(r, l + 17); + y.lossless = !!(1 & w); + y.refinement = !!(2 & w); + y.defaultPixelValue = (w >> 2) & 1; + y.combinationOperator = (w >> 3) & 3; + y.requiresBuffer = !!(32 & w); + y.combinationOperatorOverride = !!(64 & w); + n = [y]; + break; + case 49: + case 50: + case 51: + case 62: + break; + case 53: + n = [a.number, r, l, i]; + break; + default: + throw new Jbig2Error( + `segment type ${a.typeName}(${a.type}) is not implemented`, + ); + } + const h = "on" + a.typeName; + h in t && t[h].apply(t, n); +} +function processSegments(e, t) { + for (let a = 0, r = e.length; a < r; a++) processSegment(e[a], t); +} +class SimpleSegmentVisitor { + onPageInformation(e) { + this.currentPageInfo = e; + const t = (e.width + 7) >> 3, + a = new Uint8ClampedArray(t * e.height); + e.defaultPixelValue && a.fill(255); + this.buffer = a; + } + drawBitmap(e, t) { + const a = this.currentPageInfo, + r = e.width, + i = e.height, + n = (a.width + 7) >> 3, + s = a.combinationOperatorOverride + ? e.combinationOperator + : a.combinationOperator, + o = this.buffer, + c = 128 >> (7 & e.x); + let l, + h, + u, + d, + f = e.y * n + (e.x >> 3); + switch (s) { + case 0: + for (l = 0; l < i; l++) { + u = c; + d = f; + for (h = 0; h < r; h++) { + t[l][h] && (o[d] |= u); + u >>= 1; + if (!u) { + u = 128; + d++; + } + } + f += n; + } + break; + case 2: + for (l = 0; l < i; l++) { + u = c; + d = f; + for (h = 0; h < r; h++) { + t[l][h] && (o[d] ^= u); + u >>= 1; + if (!u) { + u = 128; + d++; + } + } + f += n; + } + break; + default: + throw new Jbig2Error(`operator ${s} is not supported`); + } + } + onImmediateGenericRegion(e, t, a, r) { + const i = e.info, + n = new DecodingContext(t, a, r), + s = decodeBitmap( + e.mmr, + i.width, + i.height, + e.template, + e.prediction, + null, + e.at, + n, + ); + this.drawBitmap(i, s); + } + onImmediateLosslessGenericRegion() { + this.onImmediateGenericRegion(...arguments); + } + onSymbolDictionary(e, t, a, r, i, n) { + let s, o; + if (e.huffman) { + s = (function getSymbolDictionaryHuffmanTables(e, t, a) { + let r, + i, + n, + s, + o = 0; + switch (e.huffmanDHSelector) { + case 0: + case 1: + r = getStandardTable(e.huffmanDHSelector + 4); + break; + case 3: + r = getCustomHuffmanTable(o, t, a); + o++; + break; + default: + throw new Jbig2Error("invalid Huffman DH selector"); + } + switch (e.huffmanDWSelector) { + case 0: + case 1: + i = getStandardTable(e.huffmanDWSelector + 2); + break; + case 3: + i = getCustomHuffmanTable(o, t, a); + o++; + break; + default: + throw new Jbig2Error("invalid Huffman DW selector"); + } + if (e.bitmapSizeSelector) { + n = getCustomHuffmanTable(o, t, a); + o++; + } else n = getStandardTable(1); + s = e.aggregationInstancesSelector + ? getCustomHuffmanTable(o, t, a) + : getStandardTable(1); + return { + tableDeltaHeight: r, + tableDeltaWidth: i, + tableBitmapSize: n, + tableAggregateInstances: s, + }; + })(e, a, this.customTables); + o = new Reader(r, i, n); + } + let c = this.symbols; + c || (this.symbols = c = {}); + const l = []; + for (const e of a) { + const t = c[e]; + t && l.push(...t); + } + const h = new DecodingContext(r, i, n); + c[t] = (function decodeSymbolDictionary( + e, + t, + a, + r, + i, + n, + s, + o, + c, + l, + h, + u, + ) { + if (e && t) + throw new Jbig2Error("symbol refinement with Huffman is not supported"); + const d = []; + let f = 0, + g = log2(a.length + r); + const p = h.decoder, + m = h.contextCache; + let b, y; + if (e) { + b = getStandardTable(1); + y = []; + g = Math.max(g, 1); + } + for (; d.length < r; ) { + f += e ? n.tableDeltaHeight.decode(u) : decodeInteger(m, "IADH", p); + let r = 0, + i = 0; + const b = e ? y.length : 0; + for (;;) { + const b = e + ? n.tableDeltaWidth.decode(u) + : decodeInteger(m, "IADW", p); + if (null === b) break; + r += b; + i += r; + let w; + if (t) { + const i = decodeInteger(m, "IAAI", p); + if (i > 1) + w = decodeTextRegion( + e, + t, + r, + f, + 0, + i, + 1, + a.concat(d), + g, + 0, + 0, + 1, + 0, + n, + c, + l, + h, + 0, + u, + ); + else { + const e = decodeIAID(m, p, g), + t = decodeInteger(m, "IARDX", p), + i = decodeInteger(m, "IARDY", p); + w = decodeRefinement( + r, + f, + c, + e < a.length ? a[e] : d[e - a.length], + t, + i, + !1, + l, + h, + ); + } + d.push(w); + } else if (e) y.push(r); + else { + w = decodeBitmap(!1, r, f, s, !1, null, o, h); + d.push(w); + } + } + if (e && !t) { + const e = n.tableBitmapSize.decode(u); + u.byteAlign(); + let t; + if (0 === e) t = readUncompressedBitmap(u, i, f); + else { + const a = u.end, + r = u.position + e; + u.end = r; + t = decodeMMRBitmap(u, i, f, !1); + u.end = a; + u.position = r; + } + const a = y.length; + if (b === a - 1) d.push(t); + else { + let e, + r, + i, + n, + s, + o = 0; + for (e = b; e < a; e++) { + n = y[e]; + i = o + n; + s = []; + for (r = 0; r < f; r++) s.push(t[r].subarray(o, i)); + d.push(s); + o = i; + } + } + } + } + const w = [], + x = []; + let S, + k, + C = !1; + const v = a.length + r; + for (; x.length < v; ) { + let t = e ? b.decode(u) : decodeInteger(m, "IAEX", p); + for (; t--; ) x.push(C); + C = !C; + } + for (S = 0, k = a.length; S < k; S++) x[S] && w.push(a[S]); + for (let e = 0; e < r; S++, e++) x[S] && w.push(d[e]); + return w; + })( + e.huffman, + e.refinement, + l, + e.numberOfNewSymbols, + e.numberOfExportedSymbols, + s, + e.template, + e.at, + e.refinementTemplate, + e.refinementAt, + h, + o, + ); + } + onImmediateTextRegion(e, t, a, r, i) { + const n = e.info; + let s, o; + const c = this.symbols, + l = []; + for (const e of t) { + const t = c[e]; + t && l.push(...t); + } + const h = log2(l.length); + if (e.huffman) { + o = new Reader(a, r, i); + s = (function getTextRegionHuffmanTables(e, t, a, r, i) { + const n = []; + for (let e = 0; e <= 34; e++) { + const t = i.readBits(4); + n.push(new HuffmanLine([e, t, 0, 0])); + } + const s = new HuffmanTable(n, !1); + n.length = 0; + for (let e = 0; e < r; ) { + const t = s.decode(i); + if (t >= 32) { + let a, r, s; + switch (t) { + case 32: + if (0 === e) + throw new Jbig2Error("no previous value in symbol ID table"); + r = i.readBits(2) + 3; + a = n[e - 1].prefixLength; + break; + case 33: + r = i.readBits(3) + 3; + a = 0; + break; + case 34: + r = i.readBits(7) + 11; + a = 0; + break; + default: + throw new Jbig2Error("invalid code length in symbol ID table"); + } + for (s = 0; s < r; s++) { + n.push(new HuffmanLine([e, a, 0, 0])); + e++; + } + } else { + n.push(new HuffmanLine([e, t, 0, 0])); + e++; + } + } + i.byteAlign(); + const o = new HuffmanTable(n, !1); + let c, + l, + h, + u = 0; + switch (e.huffmanFS) { + case 0: + case 1: + c = getStandardTable(e.huffmanFS + 6); + break; + case 3: + c = getCustomHuffmanTable(u, t, a); + u++; + break; + default: + throw new Jbig2Error("invalid Huffman FS selector"); + } + switch (e.huffmanDS) { + case 0: + case 1: + case 2: + l = getStandardTable(e.huffmanDS + 8); + break; + case 3: + l = getCustomHuffmanTable(u, t, a); + u++; + break; + default: + throw new Jbig2Error("invalid Huffman DS selector"); + } + switch (e.huffmanDT) { + case 0: + case 1: + case 2: + h = getStandardTable(e.huffmanDT + 11); + break; + case 3: + h = getCustomHuffmanTable(u, t, a); + u++; + break; + default: + throw new Jbig2Error("invalid Huffman DT selector"); + } + if (e.refinement) + throw new Jbig2Error("refinement with Huffman is not supported"); + return { + symbolIDTable: o, + tableFirstS: c, + tableDeltaS: l, + tableDeltaT: h, + }; + })(e, t, this.customTables, l.length, o); + } + const u = new DecodingContext(a, r, i), + d = decodeTextRegion( + e.huffman, + e.refinement, + n.width, + n.height, + e.defaultPixelValue, + e.numberOfSymbolInstances, + e.stripSize, + l, + h, + e.transposed, + e.dsOffset, + e.referenceCorner, + e.combinationOperator, + s, + e.refinementTemplate, + e.refinementAt, + u, + e.logStripSize, + o, + ); + this.drawBitmap(n, d); + } + onImmediateLosslessTextRegion() { + this.onImmediateTextRegion(...arguments); + } + onPatternDictionary(e, t, a, r, i) { + let n = this.patterns; + n || (this.patterns = n = {}); + const s = new DecodingContext(a, r, i); + n[t] = (function decodePatternDictionary(e, t, a, r, i, n) { + const s = []; + if (!e) { + s.push({ x: -t, y: 0 }); + 0 === i && s.push({ x: -3, y: -1 }, { x: 2, y: -2 }, { x: -2, y: -2 }); + } + const o = decodeBitmap(e, (r + 1) * t, a, i, !1, null, s, n), + c = []; + for (let e = 0; e <= r; e++) { + const r = [], + i = t * e, + n = i + t; + for (let e = 0; e < a; e++) r.push(o[e].subarray(i, n)); + c.push(r); + } + return c; + })( + e.mmr, + e.patternWidth, + e.patternHeight, + e.maxPatternIndex, + e.template, + s, + ); + } + onImmediateHalftoneRegion(e, t, a, r, i) { + const n = this.patterns[t[0]], + s = e.info, + o = new DecodingContext(a, r, i), + c = (function decodeHalftoneRegion( + e, + t, + a, + r, + i, + n, + s, + o, + c, + l, + h, + u, + d, + f, + g, + ) { + if (s) throw new Jbig2Error("skip is not supported"); + if (0 !== o) + throw new Jbig2Error( + `operator "${o}" is not supported in halftone region`, + ); + const p = []; + let m, b, y; + for (m = 0; m < i; m++) { + y = new Uint8Array(r); + n && y.fill(n); + p.push(y); + } + const w = t.length, + x = t[0], + S = x[0].length, + k = x.length, + C = log2(w), + v = []; + if (!e) { + v.push({ x: a <= 1 ? 3 : 2, y: -1 }); + 0 === a && + v.push({ x: -3, y: -1 }, { x: 2, y: -2 }, { x: -2, y: -2 }); + } + const F = []; + let T, O, M, D, R, N, E, L, _, U, j; + e && (T = new Reader(g.data, g.start, g.end)); + for (m = C - 1; m >= 0; m--) { + O = e + ? decodeMMRBitmap(T, c, l, !0) + : decodeBitmap(!1, c, l, a, !1, null, v, g); + F[m] = O; + } + for (M = 0; M < l; M++) + for (D = 0; D < c; D++) { + R = 0; + N = 0; + for (b = C - 1; b >= 0; b--) { + R ^= F[b][M][D]; + N |= R << b; + } + E = t[N]; + L = (h + M * f + D * d) >> 8; + _ = (u + M * d - D * f) >> 8; + if (L >= 0 && L + S <= r && _ >= 0 && _ + k <= i) + for (m = 0; m < k; m++) { + j = p[_ + m]; + U = E[m]; + for (b = 0; b < S; b++) j[L + b] |= U[b]; + } + else { + let e, t; + for (m = 0; m < k; m++) { + t = _ + m; + if (!(t < 0 || t >= i)) { + j = p[t]; + U = E[m]; + for (b = 0; b < S; b++) { + e = L + b; + e >= 0 && e < r && (j[e] |= U[b]); + } + } + } + } + } + return p; + })( + e.mmr, + n, + e.template, + s.width, + s.height, + e.defaultPixelValue, + e.enableSkip, + e.combinationOperator, + e.gridWidth, + e.gridHeight, + e.gridOffsetX, + e.gridOffsetY, + e.gridVectorX, + e.gridVectorY, + o, + ); + this.drawBitmap(s, c); + } + onImmediateLosslessHalftoneRegion() { + this.onImmediateHalftoneRegion(...arguments); + } + onTables(e, t, a, r) { + let i = this.customTables; + i || (this.customTables = i = {}); + i[e] = (function decodeTablesSegment(e, t, a) { + const r = e[t], + i = 4294967295 & readUint32(e, t + 1), + n = 4294967295 & readUint32(e, t + 5), + s = new Reader(e, t + 9, a), + o = 1 + ((r >> 1) & 7), + c = 1 + ((r >> 4) & 7), + l = []; + let h, + u, + d = i; + do { + h = s.readBits(o); + u = s.readBits(c); + l.push(new HuffmanLine([d, h, u, 0])); + d += 1 << u; + } while (d < n); + h = s.readBits(o); + l.push(new HuffmanLine([i - 1, h, 32, 0, "lower"])); + h = s.readBits(o); + l.push(new HuffmanLine([n, h, 32, 0])); + if (1 & r) { + h = s.readBits(o); + l.push(new HuffmanLine([h, 0])); + } + return new HuffmanTable(l, !1); + })(t, a, r); + } +} +class HuffmanLine { + constructor(e) { + if (2 === e.length) { + this.isOOB = !0; + this.rangeLow = 0; + this.prefixLength = e[0]; + this.rangeLength = 0; + this.prefixCode = e[1]; + this.isLowerRange = !1; + } else { + this.isOOB = !1; + this.rangeLow = e[0]; + this.prefixLength = e[1]; + this.rangeLength = e[2]; + this.prefixCode = e[3]; + this.isLowerRange = "lower" === e[4]; + } + } +} +class HuffmanTreeNode { + constructor(e) { + this.children = []; + if (e) { + this.isLeaf = !0; + this.rangeLength = e.rangeLength; + this.rangeLow = e.rangeLow; + this.isLowerRange = e.isLowerRange; + this.isOOB = e.isOOB; + } else this.isLeaf = !1; + } + buildTree(e, t) { + const a = (e.prefixCode >> t) & 1; + if (t <= 0) this.children[a] = new HuffmanTreeNode(e); + else { + let r = this.children[a]; + r || (this.children[a] = r = new HuffmanTreeNode(null)); + r.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, a = e.length; t < a; t++) { + const a = e[t]; + a.prefixLength > 0 && this.rootNode.buildTree(a, a.prefixLength - 1); + } + } + decode(e) { + return this.rootNode.decodeNode(e); + } + assignPrefixCodes(e) { + const t = e.length; + let a = 0; + for (let r = 0; r < t; r++) a = Math.max(a, e[r].prefixLength); + const r = new Uint32Array(a + 1); + for (let a = 0; a < t; a++) r[e[a].prefixLength]++; + let i, + n, + s, + o = 1, + c = 0; + r[0] = 0; + for (; o <= a; ) { + c = (c + r[o - 1]) << 1; + i = c; + n = 0; + for (; n < t; ) { + s = e[n]; + if (s.prefixLength === o) { + s.prefixCode = i; + i++; + } + n++; + } + o++; + } + } +} +const ar = {}; +function getStandardTable(e) { + let t, + a = ar[e]; + if (a) return a; + switch (e) { + case 1: + t = [ + [0, 1, 4, 0], + [16, 2, 8, 2], + [272, 3, 16, 6], + [65808, 3, 32, 7], + ]; + break; + case 2: + t = [ + [0, 1, 0, 0], + [1, 2, 0, 2], + [2, 3, 0, 6], + [3, 4, 3, 14], + [11, 5, 6, 30], + [75, 6, 32, 62], + [6, 63], + ]; + break; + case 3: + t = [ + [-256, 8, 8, 254], + [0, 1, 0, 0], + [1, 2, 0, 2], + [2, 3, 0, 6], + [3, 4, 3, 14], + [11, 5, 6, 30], + [-257, 8, 32, 255, "lower"], + [75, 7, 32, 126], + [6, 62], + ]; + break; + case 4: + t = [ + [1, 1, 0, 0], + [2, 2, 0, 2], + [3, 3, 0, 6], + [4, 4, 3, 14], + [12, 5, 6, 30], + [76, 5, 32, 31], + ]; + break; + case 5: + t = [ + [-255, 7, 8, 126], + [1, 1, 0, 0], + [2, 2, 0, 2], + [3, 3, 0, 6], + [4, 4, 3, 14], + [12, 5, 6, 30], + [-256, 7, 32, 127, "lower"], + [76, 6, 32, 62], + ]; + break; + case 6: + t = [ + [-2048, 5, 10, 28], + [-1024, 4, 9, 8], + [-512, 4, 8, 9], + [-256, 4, 7, 10], + [-128, 5, 6, 29], + [-64, 5, 5, 30], + [-32, 4, 5, 11], + [0, 2, 7, 0], + [128, 3, 7, 2], + [256, 3, 8, 3], + [512, 4, 9, 12], + [1024, 4, 10, 13], + [-2049, 6, 32, 62, "lower"], + [2048, 6, 32, 63], + ]; + break; + case 7: + t = [ + [-1024, 4, 9, 8], + [-512, 3, 8, 0], + [-256, 4, 7, 9], + [-128, 5, 6, 26], + [-64, 5, 5, 27], + [-32, 4, 5, 10], + [0, 4, 5, 11], + [32, 5, 5, 28], + [64, 5, 6, 29], + [128, 4, 7, 12], + [256, 3, 8, 1], + [512, 3, 9, 2], + [1024, 3, 10, 3], + [-1025, 5, 32, 30, "lower"], + [2048, 5, 32, 31], + ]; + break; + case 8: + t = [ + [-15, 8, 3, 252], + [-7, 9, 1, 508], + [-5, 8, 1, 253], + [-3, 9, 0, 509], + [-2, 7, 0, 124], + [-1, 4, 0, 10], + [0, 2, 1, 0], + [2, 5, 0, 26], + [3, 6, 0, 58], + [4, 3, 4, 4], + [20, 6, 1, 59], + [22, 4, 4, 11], + [38, 4, 5, 12], + [70, 5, 6, 27], + [134, 5, 7, 28], + [262, 6, 7, 60], + [390, 7, 8, 125], + [646, 6, 10, 61], + [-16, 9, 32, 510, "lower"], + [1670, 9, 32, 511], + [2, 1], + ]; + break; + case 9: + t = [ + [-31, 8, 4, 252], + [-15, 9, 2, 508], + [-11, 8, 2, 253], + [-7, 9, 1, 509], + [-5, 7, 1, 124], + [-3, 4, 1, 10], + [-1, 3, 1, 2], + [1, 3, 1, 3], + [3, 5, 1, 26], + [5, 6, 1, 58], + [7, 3, 5, 4], + [39, 6, 2, 59], + [43, 4, 5, 11], + [75, 4, 6, 12], + [139, 5, 7, 27], + [267, 5, 8, 28], + [523, 6, 8, 60], + [779, 7, 9, 125], + [1291, 6, 11, 61], + [-32, 9, 32, 510, "lower"], + [3339, 9, 32, 511], + [2, 0], + ]; + break; + case 10: + t = [ + [-21, 7, 4, 122], + [-5, 8, 0, 252], + [-4, 7, 0, 123], + [-3, 5, 0, 24], + [-2, 2, 2, 0], + [2, 5, 0, 25], + [3, 6, 0, 54], + [4, 7, 0, 124], + [5, 8, 0, 253], + [6, 2, 6, 1], + [70, 5, 5, 26], + [102, 6, 5, 55], + [134, 6, 6, 56], + [198, 6, 7, 57], + [326, 6, 8, 58], + [582, 6, 9, 59], + [1094, 6, 10, 60], + [2118, 7, 11, 125], + [-22, 8, 32, 254, "lower"], + [4166, 8, 32, 255], + [2, 2], + ]; + break; + case 11: + t = [ + [1, 1, 0, 0], + [2, 2, 1, 2], + [4, 4, 0, 12], + [5, 4, 1, 13], + [7, 5, 1, 28], + [9, 5, 2, 29], + [13, 6, 2, 60], + [17, 7, 2, 122], + [21, 7, 3, 123], + [29, 7, 4, 124], + [45, 7, 5, 125], + [77, 7, 6, 126], + [141, 7, 32, 127], + ]; + break; + case 12: + t = [ + [1, 1, 0, 0], + [2, 2, 0, 2], + [3, 3, 1, 6], + [5, 5, 0, 28], + [6, 5, 1, 29], + [8, 6, 1, 60], + [10, 7, 0, 122], + [11, 7, 1, 123], + [13, 7, 2, 124], + [17, 7, 3, 125], + [25, 7, 4, 126], + [41, 8, 5, 254], + [73, 8, 32, 255], + ]; + break; + case 13: + t = [ + [1, 1, 0, 0], + [2, 3, 0, 4], + [3, 4, 0, 12], + [4, 5, 0, 28], + [5, 4, 1, 13], + [7, 3, 3, 5], + [15, 6, 1, 58], + [17, 6, 2, 59], + [21, 6, 3, 60], + [29, 6, 4, 61], + [45, 6, 5, 62], + [77, 7, 6, 126], + [141, 7, 32, 127], + ]; + break; + case 14: + t = [ + [-2, 3, 0, 4], + [-1, 3, 0, 5], + [0, 1, 0, 0], + [1, 3, 0, 6], + [2, 3, 0, 7], + ]; + break; + case 15: + t = [ + [-24, 7, 4, 124], + [-8, 6, 2, 60], + [-4, 5, 1, 28], + [-2, 4, 0, 12], + [-1, 3, 0, 4], + [0, 1, 0, 0], + [1, 3, 0, 5], + [2, 4, 0, 13], + [3, 5, 1, 29], + [5, 6, 2, 61], + [9, 7, 4, 125], + [-25, 7, 32, 126, "lower"], + [25, 7, 32, 127], + ]; + break; + default: + throw new Jbig2Error(`standard table B.${e} does not exist`); + } + for (let e = 0, a = t.length; e < a; e++) t[e] = new HuffmanLine(t[e]); + a = new HuffmanTable(t, !0); + ar[e] = a; + return a; +} +class Reader { + constructor(e, t, a) { + this.data = e; + this.start = t; + this.end = a; + this.position = t; + this.shift = -1; + this.currentByte = 0; + } + readBit() { + if (this.shift < 0) { + if (this.position >= 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, + a = 0; + for (t = e - 1; t >= 0; t--) a |= this.readBit() << t; + return a; + } + byteAlign() { + this.shift = -1; + } + next() { + return this.position >= this.end ? -1 : this.data[this.position++]; + } +} +function getCustomHuffmanTable(e, t, a) { + let r = 0; + for (let i = 0, n = t.length; i < n; i++) { + const n = a[t[i]]; + if (n) { + if (e === r) return n; + r++; + } + } + throw new Jbig2Error("can't find custom Huffman table"); +} +function readUncompressedBitmap(e, t, a) { + const r = []; + for (let i = 0; i < a; i++) { + const a = new Uint8Array(t); + r.push(a); + for (let r = 0; r < t; r++) a[r] = e.readBit(); + e.byteAlign(); + } + return r; +} +function decodeMMRBitmap(e, t, a, r) { + const i = new CCITTFaxDecoder(e, { + K: -1, + Columns: t, + Rows: a, + BlackIs1: !0, + EndOfBlock: r, + }), + n = []; + let s, + o = !1; + for (let e = 0; e < a; e++) { + const e = new Uint8Array(t); + n.push(e); + let a = -1; + for (let r = 0; r < t; r++) { + if (a < 0) { + s = i.readNextChar(); + if (-1 === s) { + s = 0; + o = !0; + } + a = 7; + } + e[r] = (s >> a) & 1; + a--; + } + } + if (r && !o) { + const e = 5; + for (let t = 0; t < e && -1 !== i.readNextChar(); t++); + } + return n; +} +class Jbig2Image { + parseChunks(e) { + return (function parseJbig2Chunks(e) { + const t = new SimpleSegmentVisitor(); + for (let a = 0, r = e.length; a < r; a++) { + const r = e[a]; + processSegments(readSegments({}, r.data, r.start, r.end), t); + } + return t.buffer; + })(e); + } + parse(e) { + throw new Error("Not implemented: Jbig2Image.parse"); + } +} +class Jbig2Stream extends DecodeStream { + constructor(e, t, a) { + super(t); + this.stream = e; + this.dict = e.dict; + this.maybeLength = t; + this.params = a; + } + get bytes() { + return shadow(this, "bytes", this.stream.getBytes(this.maybeLength)); + } + ensureBuffer(e) {} + readBlock() { + this.decodeImage(); + } + decodeImage(e) { + if (this.eof) return this.buffer; + e ||= this.bytes; + const t = new Jbig2Image(), + a = []; + if (this.params instanceof Dict) { + const e = this.params.get("JBIG2Globals"); + if (e instanceof BaseStream) { + const t = e.getBytes(); + a.push({ data: t, start: 0, end: t.length }); + } + } + a.push({ data: e, start: 0, end: e.length }); + const r = t.parseChunks(a), + i = r.length; + for (let e = 0; e < i; e++) r[e] ^= 255; + this.buffer = r; + this.bufferLength = i; + this.eof = !0; + return this.buffer; + } + get canAsyncDecodeImageFromBuffer() { + return this.stream.isAsync; + } +} +class JpxStream extends DecodeStream { + constructor(e, t, a) { + super(t); + this.stream = e; + this.dict = e.dict; + this.maybeLength = t; + this.params = a; + } + get bytes() { + return shadow(this, "bytes", this.stream.getBytes(this.maybeLength)); + } + ensureBuffer(e) {} + readBlock(e) { + unreachable("JpxStream.readBlock"); + } + get isAsyncDecoder() { + return !0; + } + async decodeImage(e, t) { + if (this.eof) return this.buffer; + e ||= this.bytes; + this.buffer = await 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, a) { + super(t); + this.stream = e; + this.dict = e.dict; + this.cachedData = 0; + this.bitsCached = 0; + const r = 4096, + i = { + earlyChange: a, + codeLength: 9, + nextCode: 258, + dictionaryValues: new Uint8Array(r), + dictionaryLengths: new Uint16Array(r), + dictionaryPrevCodes: new Uint16Array(r), + currentSequence: new Uint8Array(r), + currentSequenceLength: 0, + }; + for (let e = 0; e < 256; ++e) { + i.dictionaryValues[e] = e; + i.dictionaryLengths[e] = 1; + } + this.lzwState = i; + } + readBits(e) { + let t = this.bitsCached, + a = this.cachedData; + for (; t < e; ) { + const e = this.stream.getByte(); + if (-1 === e) { + this.eof = !0; + return null; + } + a = (a << 8) | e; + t += 8; + } + this.bitsCached = t -= e; + this.cachedData = a; + this.lastCode = null; + return (a >>> t) & ((1 << e) - 1); + } + readBlock() { + let e, + t, + a, + r = 1024; + const i = this.lzwState; + if (!i) return; + const n = i.earlyChange; + let s = i.nextCode; + const o = i.dictionaryValues, + c = i.dictionaryLengths, + l = i.dictionaryPrevCodes; + let h = i.codeLength, + u = i.prevCode; + const d = i.currentSequence; + let f = i.currentSequenceLength, + g = 0, + p = this.bufferLength, + m = this.ensureBuffer(this.bufferLength + r); + for (e = 0; e < 512; e++) { + const e = this.readBits(h), + i = f > 0; + if (e < 256) { + d[0] = e; + f = 1; + } else { + if (!(e >= 258)) { + if (256 === e) { + h = 9; + s = 258; + f = 0; + continue; + } + this.eof = !0; + delete this.lzwState; + break; + } + if (e < s) { + f = c[e]; + for (t = f - 1, a = e; t >= 0; t--) { + d[t] = o[a]; + a = l[a]; + } + } else d[f++] = d[0]; + } + if (i) { + l[s] = u; + c[s] = c[u] + 1; + o[s] = d[0]; + s++; + h = + (s + n) & (s + n - 1) + ? h + : 0 | Math.min(Math.log(s + n) / 0.6931471805599453 + 1, 12); + } + u = e; + g += f; + if (r < g) { + do { + r += 512; + } while (r < g); + m = this.ensureBuffer(this.bufferLength + r); + } + for (t = 0; t < f; t++) m[p++] = d[t]; + } + i.nextCode = s; + i.codeLength = h; + i.prevCode = u; + i.currentSequenceLength = f; + this.bufferLength = p; + } +} +class PredictorStream extends DecodeStream { + constructor(e, t, a) { + super(t); + if (!(a instanceof Dict)) return e; + const r = (this.predictor = a.get("Predictor") || 1); + if (r <= 1) return e; + if (2 !== r && (r < 10 || r > 15)) + throw new FormatError(`Unsupported predictor: ${r}`); + this.readBlock = 2 === r ? this.readBlockTiff : this.readBlockPng; + this.stream = e; + this.dict = e.dict; + const i = (this.colors = a.get("Colors") || 1), + n = (this.bits = a.get("BPC", "BitsPerComponent") || 8), + s = (this.columns = a.get("Columns") || 1); + this.pixBytes = (i * n + 7) >> 3; + this.rowBytes = (s * i * n + 7) >> 3; + return this; + } + readBlockTiff() { + const e = this.rowBytes, + t = this.bufferLength, + a = this.ensureBuffer(t + e), + r = this.bits, + i = this.colors, + n = this.stream.getBytes(e); + this.eof = !n.length; + if (this.eof) return; + let s, + o = 0, + c = 0, + l = 0, + h = 0, + u = t; + if (1 === r && 1 === i) + for (s = 0; s < e; ++s) { + let e = n[s] ^ o; + e ^= e >> 1; + e ^= e >> 2; + e ^= e >> 4; + o = (1 & e) << 7; + a[u++] = e; + } + else if (8 === r) { + for (s = 0; s < i; ++s) a[u++] = n[s]; + for (; s < e; ++s) { + a[u] = a[u - i] + n[s]; + u++; + } + } else if (16 === r) { + const t = 2 * i; + for (s = 0; s < t; ++s) a[u++] = n[s]; + for (; s < e; s += 2) { + const e = + ((255 & n[s]) << 8) + + (255 & n[s + 1]) + + ((255 & a[u - t]) << 8) + + (255 & a[u - t + 1]); + a[u++] = (e >> 8) & 255; + a[u++] = 255 & e; + } + } else { + const e = new Uint8Array(i + 1), + u = (1 << r) - 1; + let d = 0, + f = t; + const g = this.columns; + for (s = 0; s < g; ++s) + for (let t = 0; t < i; ++t) { + if (l < r) { + o = (o << 8) | (255 & n[d++]); + l += 8; + } + e[t] = (e[t] + (o >> (l - r))) & u; + l -= r; + c = (c << r) | e[t]; + h += r; + if (h >= 8) { + a[f++] = (c >> (h - 8)) & 255; + h -= 8; + } + } + h > 0 && (a[f++] = (c << (8 - h)) + (o & ((1 << (8 - h)) - 1))); + } + this.bufferLength += e; + } + readBlockPng() { + const e = this.rowBytes, + t = this.pixBytes, + a = this.stream.getByte(), + r = this.stream.getBytes(e); + this.eof = !r.length; + if (this.eof) return; + const i = this.bufferLength, + n = this.ensureBuffer(i + e); + let s = n.subarray(i - e, i); + 0 === s.length && (s = new Uint8Array(e)); + let o, + c, + l, + h = i; + switch (a) { + case 0: + for (o = 0; o < e; ++o) n[h++] = r[o]; + break; + case 1: + for (o = 0; o < t; ++o) n[h++] = r[o]; + for (; o < e; ++o) { + n[h] = (n[h - t] + r[o]) & 255; + h++; + } + break; + case 2: + for (o = 0; o < e; ++o) n[h++] = (s[o] + r[o]) & 255; + break; + case 3: + for (o = 0; o < t; ++o) n[h++] = (s[o] >> 1) + r[o]; + for (; o < e; ++o) { + n[h] = (((s[o] + n[h - t]) >> 1) + r[o]) & 255; + h++; + } + break; + case 4: + for (o = 0; o < t; ++o) { + c = s[o]; + l = r[o]; + n[h++] = c + l; + } + for (; o < e; ++o) { + c = s[o]; + const e = s[o - t], + a = n[h - t], + i = a + c - e; + let u = i - a; + u < 0 && (u = -u); + let d = i - c; + d < 0 && (d = -d); + let f = i - e; + f < 0 && (f = -f); + l = r[o]; + n[h++] = u <= d && u <= f ? a + l : d <= f ? c + l : e + l; + } + break; + default: + throw new FormatError(`Unsupported predictor: ${a}`); + } + this.bufferLength += e; + } +} +class RunLengthStream extends DecodeStream { + constructor(e, t) { + super(t); + this.stream = e; + this.dict = e.dict; + } + readBlock() { + const e = this.stream.getBytes(2); + if (!e || e.length < 2 || 128 === e[0]) { + this.eof = !0; + return; + } + let t, + a = this.bufferLength, + r = e[0]; + if (r < 128) { + t = this.ensureBuffer(a + r + 1); + t[a++] = e[1]; + if (r > 0) { + const e = this.stream.getBytes(r); + t.set(e, a); + a += r; + } + } else { + r = 257 - r; + t = this.ensureBuffer(a + r + 1); + t.fill(e[1], a, a + r); + a += r; + } + this.bufferLength = a; + } +} +class Parser { + constructor({ + lexer: e, + xref: t, + allowStreams: a = !1, + recoveryMode: r = !1, + }) { + this.lexer = e; + this.xref = t; + this.allowStreams = a; + this.recoveryMode = r; + this.imageCache = Object.create(null); + this._imageId = 0; + this.refill(); + } + refill() { + this.buf1 = this.lexer.getObj(); + this.buf2 = this.lexer.getObj(); + } + shift() { + if (this.buf2 instanceof Cmd && "ID" === this.buf2.cmd) { + this.buf1 = this.buf2; + this.buf2 = null; + } else { + this.buf1 = this.buf2; + this.buf2 = this.lexer.getObj(); + } + } + tryShift() { + try { + this.shift(); + return !0; + } catch (e) { + if (e instanceof MissingDataException) throw e; + return !1; + } + } + getObj(e = null) { + const t = this.buf1; + this.shift(); + if (t instanceof Cmd) + switch (t.cmd) { + case "BI": + return this.makeInlineImage(e); + case "[": + const a = []; + for (; !isCmd(this.buf1, "]") && this.buf1 !== sa; ) + a.push(this.getObj(e)); + if (this.buf1 === sa) { + if (this.recoveryMode) return a; + throw new ParserEOFException("End of file inside array."); + } + this.shift(); + return a; + case "<<": + const r = new Dict(this.xref); + for (; !isCmd(this.buf1, ">>") && this.buf1 !== sa; ) { + 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 === sa) break; + r.set(t, this.getObj(e)); + } + if (this.buf1 === sa) { + if (this.recoveryMode) return r; + throw new ParserEOFException("End of file inside dictionary."); + } + if (isCmd(this.buf2, "stream")) + return this.allowStreams ? this.makeStream(r, e) : r; + this.shift(); + return r; + 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, + a = e.pos; + let r, + i, + n = 0; + for (; -1 !== (r = e.getByte()); ) + if (0 === n) n = 69 === r ? 1 : 0; + else if (1 === n) n = 73 === r ? 2 : 0; + else if (32 === r || 10 === r || 13 === r) { + i = e.pos; + const a = e.peekBytes(15), + s = a.length; + if (0 === s) break; + for (let e = 0; e < s; e++) { + r = a[e]; + if ( + (0 !== r || 0 === a[e + 1]) && + 10 !== r && + 13 !== r && + (r < 32 || r > 127) + ) { + n = 0; + break; + } + } + if (2 !== n) continue; + if (!t) { + warn( + "findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.", + ); + continue; + } + const o = new Lexer(new Stream(e.peekBytes(75)), t); + o._hexStringWarn = () => {}; + let c = 0; + for (;;) { + const e = o.getObj(); + if (e === sa) { + n = 0; + break; + } + if (e instanceof Cmd) { + const a = t[e.cmd]; + if (!a) { + n = 0; + break; + } + if (a.variableArgs ? c <= a.numArgs : c === a.numArgs) break; + c = 0; + continue; + } + c++; + } + if (2 === n) break; + } else n = 0; + if (-1 === r) { + warn( + "findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker", + ); + if (i) { + warn('... trying to recover by using the last "EI" occurrence.'); + e.skip(-(e.pos - i)); + } + } + let s = 4; + e.skip(-s); + r = e.peekByte(); + e.skip(s); + isWhiteSpace(r) || s--; + return e.pos - s - a; + } + findDCTDecodeInlineStreamEnd(e) { + const t = e.pos; + let a, + r, + i = !1; + for (; -1 !== (a = e.getByte()); ) + if (255 === a) { + switch (e.getByte()) { + case 0: + break; + case 255: + e.skip(-1); + break; + case 217: + i = !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: + r = e.getUint16(); + r > 2 ? e.skip(r - 2) : e.skip(-2); + } + if (i) break; + } + const n = e.pos - t; + if (-1 === a) { + warn( + "Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead.", + ); + e.skip(-n); + return this.findDefaultInlineStreamEnd(e); + } + this.inlineStreamSkipEI(e); + return n; + } + findASCII85DecodeInlineStreamEnd(e) { + const t = e.pos; + let a; + for (; -1 !== (a = e.getByte()); ) + if (126 === a) { + const t = e.pos; + a = e.peekByte(); + for (; isWhiteSpace(a); ) { + e.skip(); + a = e.peekByte(); + } + if (62 === a) { + e.skip(); + break; + } + if (e.pos > t) { + const t = e.peekBytes(2); + if (69 === t[0] && 73 === t[1]) break; + } + } + const r = e.pos - t; + if (-1 === a) { + warn( + "Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead.", + ); + e.skip(-r); + return this.findDefaultInlineStreamEnd(e); + } + this.inlineStreamSkipEI(e); + return r; + } + findASCIIHexDecodeInlineStreamEnd(e) { + const t = e.pos; + let a; + for (; -1 !== (a = e.getByte()) && 62 !== a; ); + const r = e.pos - t; + if (-1 === a) { + warn( + "Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead.", + ); + e.skip(-r); + return this.findDefaultInlineStreamEnd(e); + } + this.inlineStreamSkipEI(e); + return r; + } + inlineStreamSkipEI(e) { + let t, + a = 0; + for (; -1 !== (t = e.getByte()); ) + if (0 === a) a = 69 === t ? 1 : 0; + else if (1 === a) a = 73 === t ? 2 : 0; + else if (2 === a) break; + } + makeInlineImage(e) { + const t = this.lexer, + a = t.stream, + r = Object.create(null); + let i; + for (; !isCmd(this.buf1, "ID") && this.buf1 !== sa; ) { + 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 === sa) break; + r[t] = this.getObj(e); + } + -1 !== t.beginInlineImagePos && (i = a.pos - t.beginInlineImagePos); + const n = this.xref.fetchIfRef(r.F || r.Filter); + let s; + if (n instanceof Name) s = n.name; + else if (Array.isArray(n)) { + const e = this.xref.fetchIfRef(n[0]); + e instanceof Name && (s = e.name); + } + const o = a.pos; + let c, l; + switch (s) { + case "DCT": + case "DCTDecode": + c = this.findDCTDecodeInlineStreamEnd(a); + break; + case "A85": + case "ASCII85Decode": + c = this.findASCII85DecodeInlineStreamEnd(a); + break; + case "AHx": + case "ASCIIHexDecode": + c = this.findASCIIHexDecodeInlineStreamEnd(a); + break; + default: + c = this.findDefaultInlineStreamEnd(a); + } + if (c < 1e3 && i > 0) { + const e = a.pos; + a.pos = t.beginInlineImagePos; + l = (function getInlineImageCacheKey(e) { + const t = [], + a = e.length; + let r = 0; + for (; r < a - 1; ) t.push((e[r++] << 8) | e[r++]); + r < a && t.push(e[r]); + return a + "_" + String.fromCharCode.apply(null, t); + })(a.getBytes(i + c)); + a.pos = e; + const r = this.imageCache[l]; + if (void 0 !== r) { + this.buf2 = Cmd.get("EI"); + this.shift(); + r.reset(); + return r; + } + } + const h = new Dict(this.xref); + for (const e in r) h.set(e, r[e]); + let u = a.makeSubStream(o, c, h); + e && (u = e.createStream(u, c)); + u = this.filter(u, h, c); + u.dict = h; + if (void 0 !== l) { + u.cacheKey = "inline_img_" + ++this._imageId; + this.imageCache[l] = u; + } + this.buf2 = Cmd.get("EI"); + this.shift(); + return u; + } + #q(e) { + const { stream: t } = this.lexer; + t.pos = e; + const a = new Uint8Array([101, 110, 100]), + r = a.length, + i = [ + new Uint8Array([115, 116, 114, 101, 97, 109]), + new Uint8Array([115, 116, 101, 97, 109]), + new Uint8Array([115, 116, 114, 101, 97]), + ], + n = 9 - r; + for (; t.pos < t.end; ) { + const s = t.peekBytes(2048), + o = s.length - 9; + if (o <= 0) break; + let c = 0; + for (; c < o; ) { + let o = 0; + for (; o < r && s[c + o] === a[o]; ) o++; + if (o >= r) { + let r = !1; + for (const e of i) { + const t = e.length; + let i = 0; + for (; i < t && s[c + o + i] === e[i]; ) i++; + if (i >= n) { + r = !0; + break; + } + if (i >= t) { + if (isWhiteSpace(s[c + o + i])) { + info( + `Found "${bytesToString([...a, ...e])}" when searching for endstream command.`, + ); + r = !0; + } + break; + } + } + if (r) { + t.pos += c; + return t.pos - e; + } + } + c++; + } + t.pos += o; + } + return -1; + } + makeStream(e, t) { + const a = this.lexer; + let r = a.stream; + a.skipToNextLine(); + const i = r.pos - 1; + let n = e.get("Length"); + if (!Number.isInteger(n)) { + info(`Bad length "${n && n.toString()}" in stream.`); + n = 0; + } + r.pos = i + n; + a.nextChar(); + if (this.tryShift() && isCmd(this.buf2, "endstream")) this.shift(); + else { + n = this.#q(i); + if (n < 0) throw new FormatError("Missing endstream command."); + a.nextChar(); + this.shift(); + this.shift(); + } + this.shift(); + r = r.makeSubStream(i, n, e); + t && (r = t.createStream(r, n)); + r = this.filter(r, e, n); + r.dict = e; + return r; + } + filter(e, t, a) { + let r = t.get("F", "Filter"), + i = t.get("DP", "DecodeParms"); + if (r instanceof Name) { + Array.isArray(i) && + warn("/DecodeParms should not be an Array, when /Filter is a Name."); + return this.makeFilter(e, r.name, a, i); + } + let n = a; + if (Array.isArray(r)) { + const t = r, + a = i; + for (let s = 0, o = t.length; s < o; ++s) { + r = this.xref.fetchIfRef(t[s]); + if (!(r instanceof Name)) + throw new FormatError(`Bad filter name "${r}"`); + i = null; + Array.isArray(a) && s in a && (i = this.xref.fetchIfRef(a[s])); + e = this.makeFilter(e, r.name, n, i); + n = null; + } + } + return e; + } + makeFilter(e, t, a, r) { + if (0 === a) { + warn(`Empty "${t}" stream.`); + return new NullStream(); + } + try { + switch (t) { + case "Fl": + case "FlateDecode": + return r + ? new PredictorStream(new FlateStream(e, a), a, r) + : new FlateStream(e, a); + case "LZW": + case "LZWDecode": + let t = 1; + if (r) { + r.has("EarlyChange") && (t = r.get("EarlyChange")); + return new PredictorStream(new LZWStream(e, a, t), a, r); + } + return new LZWStream(e, a, t); + case "DCT": + case "DCTDecode": + return new JpegStream(e, a, r); + case "JPX": + case "JPXDecode": + return new JpxStream(e, a, r); + case "A85": + case "ASCII85Decode": + return new Ascii85Stream(e, a); + case "AHx": + case "ASCIIHexDecode": + return new AsciiHexStream(e, a); + case "CCF": + case "CCITTFaxDecode": + return new CCITTFaxStream(e, a, r); + case "RL": + case "RunLengthDecode": + return new RunLengthStream(e, a); + case "JBIG2Decode": + return new Jbig2Stream(e, a, r); + } + warn(`Filter "${t}" is not supported.`); + return e; + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn(`Invalid stream: "${e}"`); + return new NullStream(); + } + } +} +const rr = [ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 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, 2, 0, 2, 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, 2, 0, 2, 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, 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, +]; +function toHexDigit(e) { + return e >= 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, + a = 0, + r = 1; + if (45 === e) { + r = -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) { + a = 10; + e = this.nextChar(); + } + if (e < 48 || e > 57) { + const t = `Invalid number: ${String.fromCharCode(e)} (charCode ${e})`; + if (isWhiteSpace(e) || 40 === e || 60 === e || -1 === e) { + info(`Lexer.getNumber - "${t}".`); + return 0; + } + throw new FormatError(t); + } + let i = e - 48, + n = 0, + s = 1; + for (; (e = this.nextChar()) >= 0; ) + if (e >= 48 && e <= 57) { + const r = e - 48; + if (t) n = 10 * n + r; + else { + 0 !== a && (a *= 10); + i = 10 * i + r; + } + } else if (46 === e) { + if (0 !== a) break; + a = 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) { + s = 45 === e ? -1 : 1; + this.nextChar(); + } else if (e < 48 || e > 57) break; + t = !0; + } + 0 !== a && (i /= a); + t && (i *= 10 ** (s * n)); + return r * i; + } + getString() { + let e = 1, + t = !1; + const a = this.strBuf; + a.length = 0; + let r = this.nextChar(); + for (;;) { + let i = !1; + switch (0 | r) { + case -1: + warn("Unterminated string"); + t = !0; + break; + case 40: + ++e; + a.push("("); + break; + case 41: + if (0 === --e) { + this.nextChar(); + t = !0; + } else a.push(")"); + break; + case 92: + r = this.nextChar(); + switch (r) { + case -1: + warn("Unterminated string"); + t = !0; + break; + case 110: + a.push("\n"); + break; + case 114: + a.push("\r"); + break; + case 116: + a.push("\t"); + break; + case 98: + a.push("\b"); + break; + case 102: + a.push("\f"); + break; + case 92: + case 40: + case 41: + a.push(String.fromCharCode(r)); + break; + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + let e = 15 & r; + r = this.nextChar(); + i = !0; + if (r >= 48 && r <= 55) { + e = (e << 3) + (15 & r); + r = this.nextChar(); + if (r >= 48 && r <= 55) { + i = !1; + e = (e << 3) + (15 & r); + } + } + a.push(String.fromCharCode(e)); + break; + case 13: + 10 === this.peekChar() && this.nextChar(); + break; + case 10: + break; + default: + a.push(String.fromCharCode(r)); + } + break; + default: + a.push(String.fromCharCode(r)); + } + if (t) break; + i || (r = this.nextChar()); + } + return a.join(""); + } + getName() { + let e, t; + const a = this.strBuf; + a.length = 0; + for (; (e = this.nextChar()) >= 0 && !rr[e]; ) + if (35 === e) { + e = this.nextChar(); + if (rr[e]) { + warn( + "Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number.", + ); + a.push("#"); + break; + } + const r = toHexDigit(e); + if (-1 !== r) { + t = e; + e = this.nextChar(); + const i = toHexDigit(e); + if (-1 === i) { + warn( + `Lexer_getName: Illegal digit (${String.fromCharCode(e)}) in hexadecimal number.`, + ); + a.push("#", String.fromCharCode(t)); + if (rr[e]) break; + a.push(String.fromCharCode(e)); + continue; + } + a.push(String.fromCharCode((r << 4) | i)); + } else a.push("#", String.fromCharCode(e)); + } else a.push(String.fromCharCode(e)); + a.length > 127 && + warn(`Name token is longer than allowed by the spec: ${a.length}`); + return Name.get(a.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, + a = -1, + r = -1; + this._hexStringNumWarn = 0; + for (;;) { + if (t < 0) { + warn("Unterminated hex string"); + break; + } + if (62 === t) { + this.nextChar(); + break; + } + if (1 !== rr[t]) { + r = toHexDigit(t); + if (-1 === r) this._hexStringWarn(t); + else if (-1 === a) a = r; + else { + e.push(String.fromCharCode((a << 4) | r)); + a = -1; + } + t = this.nextChar(); + } else t = this.nextChar(); + } + -1 !== a && e.push(String.fromCharCode(a << 4)); + return e.join(""); + } + getObj() { + let e = !1, + t = this.currentChar; + for (;;) { + if (t < 0) return sa; + if (e) (10 !== t && 13 !== t) || (e = !1); + else if (37 === t) e = !0; + else if (1 !== rr[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 a = String.fromCharCode(t); + if (t < 32 || t > 127) { + const e = this.peekChar(); + if (e >= 32 && e <= 127) { + this.nextChar(); + return Cmd.get(a); + } + } + const r = this.knownCommands; + let i = void 0 !== r?.[a]; + for (; (t = this.nextChar()) >= 0 && !rr[t]; ) { + const e = a + String.fromCharCode(t); + if (i && void 0 === r[e]) break; + if (128 === a.length) + throw new FormatError(`Command token too long: ${a.length}`); + a = e; + i = void 0 !== r?.[a]; + } + if ("true" === a) return !0; + if ("false" === a) return !1; + if ("null" === a) return null; + "BI" === a && (this.beginInlineImagePos = this.stream.pos); + return Cmd.get(a); + } + 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, a = !1) { + const r = e.get(t); + if (Number.isInteger(r) && (a ? r >= 0 : r > 0)) return r; + throw new Error( + `The "${t}" parameter in the linearization dictionary is invalid.`, + ); + } + const t = new Parser({ lexer: new Lexer(e), xref: null }), + a = t.getObj(), + r = t.getObj(), + i = t.getObj(), + n = t.getObj(); + let s, o; + if ( + !( + Number.isInteger(a) && + Number.isInteger(r) && + isCmd(i, "obj") && + n instanceof Dict && + "number" == typeof (s = n.get("Linearized")) && + s > 0 + ) + ) + return null; + if ((o = getInt(n, "L")) !== e.length) + throw new Error( + 'The "L" parameter in the linearization dictionary does not equal the stream length.', + ); + return { + length: o, + hints: (function getHints(e) { + const t = e.get("H"); + let a; + if (Array.isArray(t) && (2 === (a = t.length) || 4 === a)) { + for (let e = 0; e < a; e++) { + const a = t[e]; + if (!(Number.isInteger(a) && a > 0)) + throw new Error( + `Hint (${e}) in the linearization dictionary is invalid.`, + ); + } + return t; + } + throw new Error( + "Hint array in the linearization dictionary is invalid.", + ); + })(n), + objectNumberFirst: getInt(n, "O"), + endFirst: getInt(n, "E"), + numPages: getInt(n, "N"), + mainXRefEntriesOffset: getInt(n, "T"), + pageFirst: n.has("P") ? getInt(n, "P", !0) : 0, + }; + } +} +const ir = [ + "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", + ], + nr = 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, a) { + this.codespaceRanges[e - 1].push(t, a); + this.numCodespaceRanges++; + } + mapCidRange(e, t, a) { + if (t - e > nr) + throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE."); + for (; e <= t; ) this._map[e++] = a++; + } + mapBfRange(e, t, a) { + if (t - e > nr) + throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE."); + const r = a.length - 1; + for (; e <= t; ) { + this._map[e++] = a; + const t = a.charCodeAt(r) + 1; + t > 255 + ? (a = + a.substring(0, r - 1) + + String.fromCharCode(a.charCodeAt(r - 1) + 1) + + "\0") + : (a = a.substring(0, r) + String.fromCharCode(t)); + } + } + mapBfRangeToArray(e, t, a) { + if (t - e > nr) + throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE."); + const r = a.length; + let i = 0; + for (; e <= t && i < r; ) { + this._map[e] = a[i++]; + ++e; + } + } + mapOne(e, t) { + this._map[e] = t; + } + lookup(e) { + return this._map[e]; + } + contains(e) { + return void 0 !== this._map[e]; + } + forEach(e) { + const t = this._map, + a = t.length; + if (a <= 65536) for (let r = 0; r < a; r++) void 0 !== t[r] && e(r, t[r]); + else for (const a in t) e(a, t[a]); + } + charCodeOf(e) { + const t = this._map; + if (t.length <= 65536) return t.indexOf(e); + for (const a in t) if (t[a] === e) return 0 | a; + return -1; + } + getMap() { + return this._map; + } + readCharCode(e, t, a) { + let r = 0; + const i = this.codespaceRanges; + for (let n = 0, s = i.length; n < s; n++) { + r = ((r << 8) | e.charCodeAt(t + n)) >>> 0; + const s = i[n]; + for (let e = 0, t = s.length; e < t; ) { + const t = s[e++], + i = s[e++]; + if (r >= t && r <= i) { + a.charcode = r; + a.length = n + 1; + return; + } + } + } + a.charcode = 0; + a.length = 1; + } + getCharCodeLength(e) { + const t = this.codespaceRanges; + for (let a = 0, r = t.length; a < r; a++) { + const r = t[a]; + for (let t = 0, i = r.length; t < i; ) { + const i = r[t++], + n = r[t++]; + if (e >= i && e <= n) return a + 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, a) { + unreachable("should not call mapCidRange"); + } + mapBfRange(e, t, a) { + unreachable("should not call mapBfRange"); + } + mapBfRangeToArray(e, t, a) { + 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 a = 0; a < e.length; a++) t = (t << 8) | e.charCodeAt(a); + return t >>> 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 a = t.getObj(); + if (a === sa) break; + if (isCmd(a, "endbfchar")) return; + expectString(a); + const r = strToInt(a); + a = t.getObj(); + expectString(a); + const i = a; + e.mapOne(r, i); + } +} +function parseBfRange(e, t) { + for (;;) { + let a = t.getObj(); + if (a === sa) break; + if (isCmd(a, "endbfrange")) return; + expectString(a); + const r = strToInt(a); + a = t.getObj(); + expectString(a); + const i = strToInt(a); + a = t.getObj(); + if (Number.isInteger(a) || "string" == typeof a) { + const t = Number.isInteger(a) ? String.fromCharCode(a) : a; + e.mapBfRange(r, i, t); + } else { + if (!isCmd(a, "[")) break; + { + a = t.getObj(); + const n = []; + for (; !isCmd(a, "]") && a !== sa; ) { + n.push(a); + a = t.getObj(); + } + e.mapBfRangeToArray(r, i, n); + } + } + } + throw new FormatError("Invalid bf range."); +} +function parseCidChar(e, t) { + for (;;) { + let a = t.getObj(); + if (a === sa) break; + if (isCmd(a, "endcidchar")) return; + expectString(a); + const r = strToInt(a); + a = t.getObj(); + expectInt(a); + const i = a; + e.mapOne(r, i); + } +} +function parseCidRange(e, t) { + for (;;) { + let a = t.getObj(); + if (a === sa) break; + if (isCmd(a, "endcidrange")) return; + expectString(a); + const r = strToInt(a); + a = t.getObj(); + expectString(a); + const i = strToInt(a); + a = t.getObj(); + expectInt(a); + const n = a; + e.mapCidRange(r, i, n); + } +} +function parseCodespaceRange(e, t) { + for (;;) { + let a = t.getObj(); + if (a === sa) break; + if (isCmd(a, "endcodespacerange")) return; + if ("string" != typeof a) break; + const r = strToInt(a); + a = t.getObj(); + if ("string" != typeof a) break; + const i = strToInt(a); + e.addCodespaceRange(a.length, r, i); + } + throw new FormatError("Invalid codespace range."); +} +function parseWMode(e, t) { + const a = t.getObj(); + Number.isInteger(a) && (e.vertical = !!a); +} +function parseCMapName(e, t) { + const a = t.getObj(); + a instanceof Name && (e.name = a.name); +} +async function parseCMap(e, t, a, r) { + let i, n; + e: for (;;) + try { + const a = t.getObj(); + if (a === sa) break; + if (a instanceof Name) { + "WMode" === a.name + ? parseWMode(e, t) + : "CMapName" === a.name && parseCMapName(e, t); + i = a; + } else if (a instanceof Cmd) + switch (a.cmd) { + case "endcmap": + break e; + case "usecmap": + i instanceof Name && (n = i.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; + } + !r && n && (r = n); + return r ? extendCMap(e, a, r) : e; +} +async function extendCMap(e, t, a) { + e.useCMap = await createBuiltInCMap(a, t); + if (0 === e.numCodespaceRanges) { + const t = e.useCMap.codespaceRanges; + for (let a = 0; a < t.length; a++) e.codespaceRanges[a] = t[a].slice(); + e.numCodespaceRanges = e.useCMap.numCodespaceRanges; + } + e.useCMap.forEach(function (t, a) { + e.contains(t) || e.mapOne(t, a); + }); + return e; +} +async function createBuiltInCMap(e, t) { + if ("Identity-H" === e) return new IdentityCMap(!1, 2); + if ("Identity-V" === e) return new IdentityCMap(!0, 2); + if (!ir.includes(e)) throw new Error("Unknown CMap name: " + e); + if (!t) throw new Error("Built-in CMap parameters are not provided."); + const { cMapData: a, isCompressed: r } = await t(e), + i = new CMap(!0); + if (r) + return new BinaryCMapReader().process(a, i, (e) => extendCMap(i, t, e)); + const n = new Lexer(new Stream(a)); + return parseCMap(i, n, t, null); +} +class CMapFactory { + static async create({ encoding: e, fetchBuiltInCMap: t, useCMap: a }) { + if (e instanceof Name) return createBuiltInCMap(e.name, t); + if (e instanceof BaseStream) { + const r = await parseCMap(new CMap(), new Lexer(e), t, a); + return r.isIdentityCMap ? createBuiltInCMap(r.name, t) : r; + } + throw new Error("Encoding required."); + } +} +const sr = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "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", + ], + or = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "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", + "", + "", + "", + "", + ], + cr = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "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", + ], + lr = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "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", + "", + "", + "", + "", + ], + hr = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "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", + ], + ur = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "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", + "", + ], + dr = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "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 hr; + case "StandardEncoding": + return lr; + case "MacRomanEncoding": + return cr; + case "SymbolSetEncoding": + return ur; + case "ZapfDingbatsEncoding": + return dr; + case "ExpertEncoding": + return sr; + case "MacExpertEncoding": + return or; + default: + return null; + } +} +const fr = getLookupTableFactory(function (e) { + e.A = 65; + e.AE = 198; + e.AEacute = 508; + e.AEmacron = 482; + e.AEsmall = 63462; + e.Aacute = 193; + e.Aacutesmall = 63457; + e.Abreve = 258; + e.Abreveacute = 7854; + e.Abrevecyrillic = 1232; + e.Abrevedotbelow = 7862; + e.Abrevegrave = 7856; + e.Abrevehookabove = 7858; + e.Abrevetilde = 7860; + e.Acaron = 461; + e.Acircle = 9398; + e.Acircumflex = 194; + e.Acircumflexacute = 7844; + e.Acircumflexdotbelow = 7852; + e.Acircumflexgrave = 7846; + e.Acircumflexhookabove = 7848; + e.Acircumflexsmall = 63458; + e.Acircumflextilde = 7850; + e.Acute = 63177; + e.Acutesmall = 63412; + e.Acyrillic = 1040; + e.Adblgrave = 512; + e.Adieresis = 196; + e.Adieresiscyrillic = 1234; + e.Adieresismacron = 478; + e.Adieresissmall = 63460; + e.Adotbelow = 7840; + e.Adotmacron = 480; + e.Agrave = 192; + e.Agravesmall = 63456; + e.Ahookabove = 7842; + e.Aiecyrillic = 1236; + e.Ainvertedbreve = 514; + e.Alpha = 913; + e.Alphatonos = 902; + e.Amacron = 256; + e.Amonospace = 65313; + e.Aogonek = 260; + e.Aring = 197; + e.Aringacute = 506; + e.Aringbelow = 7680; + e.Aringsmall = 63461; + e.Asmall = 63329; + e.Atilde = 195; + e.Atildesmall = 63459; + e.Aybarmenian = 1329; + e.B = 66; + e.Bcircle = 9399; + e.Bdotaccent = 7682; + e.Bdotbelow = 7684; + e.Becyrillic = 1041; + e.Benarmenian = 1330; + e.Beta = 914; + e.Bhook = 385; + e.Blinebelow = 7686; + e.Bmonospace = 65314; + e.Brevesmall = 63220; + e.Bsmall = 63330; + e.Btopbar = 386; + e.C = 67; + e.Caarmenian = 1342; + e.Cacute = 262; + e.Caron = 63178; + e.Caronsmall = 63221; + e.Ccaron = 268; + e.Ccedilla = 199; + e.Ccedillaacute = 7688; + e.Ccedillasmall = 63463; + e.Ccircle = 9400; + e.Ccircumflex = 264; + e.Cdot = 266; + e.Cdotaccent = 266; + e.Cedillasmall = 63416; + e.Chaarmenian = 1353; + e.Cheabkhasiancyrillic = 1212; + e.Checyrillic = 1063; + e.Chedescenderabkhasiancyrillic = 1214; + e.Chedescendercyrillic = 1206; + e.Chedieresiscyrillic = 1268; + e.Cheharmenian = 1347; + e.Chekhakassiancyrillic = 1227; + e.Cheverticalstrokecyrillic = 1208; + e.Chi = 935; + e.Chook = 391; + e.Circumflexsmall = 63222; + e.Cmonospace = 65315; + e.Coarmenian = 1361; + e.Csmall = 63331; + e.D = 68; + e.DZ = 497; + e.DZcaron = 452; + e.Daarmenian = 1332; + e.Dafrican = 393; + e.Dcaron = 270; + e.Dcedilla = 7696; + e.Dcircle = 9401; + e.Dcircumflexbelow = 7698; + e.Dcroat = 272; + e.Ddotaccent = 7690; + e.Ddotbelow = 7692; + e.Decyrillic = 1044; + e.Deicoptic = 1006; + e.Delta = 8710; + e.Deltagreek = 916; + e.Dhook = 394; + e.Dieresis = 63179; + e.DieresisAcute = 63180; + e.DieresisGrave = 63181; + e.Dieresissmall = 63400; + e.Digammagreek = 988; + e.Djecyrillic = 1026; + e.Dlinebelow = 7694; + e.Dmonospace = 65316; + e.Dotaccentsmall = 63223; + e.Dslash = 272; + e.Dsmall = 63332; + e.Dtopbar = 395; + e.Dz = 498; + e.Dzcaron = 453; + e.Dzeabkhasiancyrillic = 1248; + e.Dzecyrillic = 1029; + e.Dzhecyrillic = 1039; + e.E = 69; + e.Eacute = 201; + e.Eacutesmall = 63465; + e.Ebreve = 276; + e.Ecaron = 282; + e.Ecedillabreve = 7708; + e.Echarmenian = 1333; + e.Ecircle = 9402; + e.Ecircumflex = 202; + e.Ecircumflexacute = 7870; + e.Ecircumflexbelow = 7704; + e.Ecircumflexdotbelow = 7878; + e.Ecircumflexgrave = 7872; + e.Ecircumflexhookabove = 7874; + e.Ecircumflexsmall = 63466; + e.Ecircumflextilde = 7876; + e.Ecyrillic = 1028; + e.Edblgrave = 516; + e.Edieresis = 203; + e.Edieresissmall = 63467; + e.Edot = 278; + e.Edotaccent = 278; + e.Edotbelow = 7864; + e.Efcyrillic = 1060; + e.Egrave = 200; + e.Egravesmall = 63464; + e.Eharmenian = 1335; + e.Ehookabove = 7866; + e.Eightroman = 8551; + e.Einvertedbreve = 518; + e.Eiotifiedcyrillic = 1124; + e.Elcyrillic = 1051; + e.Elevenroman = 8554; + e.Emacron = 274; + e.Emacronacute = 7702; + e.Emacrongrave = 7700; + e.Emcyrillic = 1052; + e.Emonospace = 65317; + e.Encyrillic = 1053; + e.Endescendercyrillic = 1186; + e.Eng = 330; + e.Enghecyrillic = 1188; + e.Enhookcyrillic = 1223; + e.Eogonek = 280; + e.Eopen = 400; + e.Epsilon = 917; + e.Epsilontonos = 904; + e.Ercyrillic = 1056; + e.Ereversed = 398; + e.Ereversedcyrillic = 1069; + e.Escyrillic = 1057; + e.Esdescendercyrillic = 1194; + e.Esh = 425; + e.Esmall = 63333; + e.Eta = 919; + e.Etarmenian = 1336; + e.Etatonos = 905; + e.Eth = 208; + e.Ethsmall = 63472; + e.Etilde = 7868; + e.Etildebelow = 7706; + e.Euro = 8364; + e.Ezh = 439; + e.Ezhcaron = 494; + e.Ezhreversed = 440; + e.F = 70; + e.Fcircle = 9403; + e.Fdotaccent = 7710; + e.Feharmenian = 1366; + e.Feicoptic = 996; + e.Fhook = 401; + e.Fitacyrillic = 1138; + e.Fiveroman = 8548; + e.Fmonospace = 65318; + e.Fourroman = 8547; + e.Fsmall = 63334; + e.G = 71; + e.GBsquare = 13191; + e.Gacute = 500; + e.Gamma = 915; + e.Gammaafrican = 404; + e.Gangiacoptic = 1002; + e.Gbreve = 286; + e.Gcaron = 486; + e.Gcedilla = 290; + e.Gcircle = 9404; + e.Gcircumflex = 284; + e.Gcommaaccent = 290; + e.Gdot = 288; + e.Gdotaccent = 288; + e.Gecyrillic = 1043; + e.Ghadarmenian = 1346; + e.Ghemiddlehookcyrillic = 1172; + e.Ghestrokecyrillic = 1170; + e.Gheupturncyrillic = 1168; + e.Ghook = 403; + e.Gimarmenian = 1331; + e.Gjecyrillic = 1027; + e.Gmacron = 7712; + e.Gmonospace = 65319; + e.Grave = 63182; + e.Gravesmall = 63328; + e.Gsmall = 63335; + e.Gsmallhook = 667; + e.Gstroke = 484; + e.H = 72; + e.H18533 = 9679; + e.H18543 = 9642; + e.H18551 = 9643; + e.H22073 = 9633; + e.HPsquare = 13259; + e.Haabkhasiancyrillic = 1192; + e.Hadescendercyrillic = 1202; + e.Hardsigncyrillic = 1066; + e.Hbar = 294; + e.Hbrevebelow = 7722; + e.Hcedilla = 7720; + e.Hcircle = 9405; + e.Hcircumflex = 292; + e.Hdieresis = 7718; + e.Hdotaccent = 7714; + e.Hdotbelow = 7716; + e.Hmonospace = 65320; + e.Hoarmenian = 1344; + e.Horicoptic = 1e3; + e.Hsmall = 63336; + e.Hungarumlaut = 63183; + e.Hungarumlautsmall = 63224; + e.Hzsquare = 13200; + e.I = 73; + e.IAcyrillic = 1071; + e.IJ = 306; + e.IUcyrillic = 1070; + e.Iacute = 205; + e.Iacutesmall = 63469; + e.Ibreve = 300; + e.Icaron = 463; + e.Icircle = 9406; + e.Icircumflex = 206; + e.Icircumflexsmall = 63470; + e.Icyrillic = 1030; + e.Idblgrave = 520; + e.Idieresis = 207; + e.Idieresisacute = 7726; + e.Idieresiscyrillic = 1252; + e.Idieresissmall = 63471; + e.Idot = 304; + e.Idotaccent = 304; + e.Idotbelow = 7882; + e.Iebrevecyrillic = 1238; + e.Iecyrillic = 1045; + e.Ifraktur = 8465; + e.Igrave = 204; + e.Igravesmall = 63468; + e.Ihookabove = 7880; + e.Iicyrillic = 1048; + e.Iinvertedbreve = 522; + e.Iishortcyrillic = 1049; + e.Imacron = 298; + e.Imacroncyrillic = 1250; + e.Imonospace = 65321; + e.Iniarmenian = 1339; + e.Iocyrillic = 1025; + e.Iogonek = 302; + e.Iota = 921; + e.Iotaafrican = 406; + e.Iotadieresis = 938; + e.Iotatonos = 906; + e.Ismall = 63337; + e.Istroke = 407; + e.Itilde = 296; + e.Itildebelow = 7724; + e.Izhitsacyrillic = 1140; + e.Izhitsadblgravecyrillic = 1142; + e.J = 74; + e.Jaarmenian = 1345; + e.Jcircle = 9407; + e.Jcircumflex = 308; + e.Jecyrillic = 1032; + e.Jheharmenian = 1355; + e.Jmonospace = 65322; + e.Jsmall = 63338; + e.K = 75; + e.KBsquare = 13189; + e.KKsquare = 13261; + e.Kabashkircyrillic = 1184; + e.Kacute = 7728; + e.Kacyrillic = 1050; + e.Kadescendercyrillic = 1178; + e.Kahookcyrillic = 1219; + e.Kappa = 922; + e.Kastrokecyrillic = 1182; + e.Kaverticalstrokecyrillic = 1180; + e.Kcaron = 488; + e.Kcedilla = 310; + e.Kcircle = 9408; + e.Kcommaaccent = 310; + e.Kdotbelow = 7730; + e.Keharmenian = 1364; + e.Kenarmenian = 1343; + e.Khacyrillic = 1061; + e.Kheicoptic = 998; + e.Khook = 408; + e.Kjecyrillic = 1036; + e.Klinebelow = 7732; + e.Kmonospace = 65323; + e.Koppacyrillic = 1152; + e.Koppagreek = 990; + e.Ksicyrillic = 1134; + e.Ksmall = 63339; + e.L = 76; + e.LJ = 455; + e.LL = 63167; + e.Lacute = 313; + e.Lambda = 923; + e.Lcaron = 317; + e.Lcedilla = 315; + e.Lcircle = 9409; + e.Lcircumflexbelow = 7740; + e.Lcommaaccent = 315; + e.Ldot = 319; + e.Ldotaccent = 319; + e.Ldotbelow = 7734; + e.Ldotbelowmacron = 7736; + e.Liwnarmenian = 1340; + e.Lj = 456; + e.Ljecyrillic = 1033; + e.Llinebelow = 7738; + e.Lmonospace = 65324; + e.Lslash = 321; + e.Lslashsmall = 63225; + e.Lsmall = 63340; + e.M = 77; + e.MBsquare = 13190; + e.Macron = 63184; + e.Macronsmall = 63407; + e.Macute = 7742; + e.Mcircle = 9410; + e.Mdotaccent = 7744; + e.Mdotbelow = 7746; + e.Menarmenian = 1348; + e.Mmonospace = 65325; + e.Msmall = 63341; + e.Mturned = 412; + e.Mu = 924; + e.N = 78; + e.NJ = 458; + e.Nacute = 323; + e.Ncaron = 327; + e.Ncedilla = 325; + e.Ncircle = 9411; + e.Ncircumflexbelow = 7754; + e.Ncommaaccent = 325; + e.Ndotaccent = 7748; + e.Ndotbelow = 7750; + e.Nhookleft = 413; + e.Nineroman = 8552; + e.Nj = 459; + e.Njecyrillic = 1034; + e.Nlinebelow = 7752; + e.Nmonospace = 65326; + e.Nowarmenian = 1350; + e.Nsmall = 63342; + e.Ntilde = 209; + e.Ntildesmall = 63473; + e.Nu = 925; + e.O = 79; + e.OE = 338; + e.OEsmall = 63226; + e.Oacute = 211; + e.Oacutesmall = 63475; + e.Obarredcyrillic = 1256; + e.Obarreddieresiscyrillic = 1258; + e.Obreve = 334; + e.Ocaron = 465; + e.Ocenteredtilde = 415; + e.Ocircle = 9412; + e.Ocircumflex = 212; + e.Ocircumflexacute = 7888; + e.Ocircumflexdotbelow = 7896; + e.Ocircumflexgrave = 7890; + e.Ocircumflexhookabove = 7892; + e.Ocircumflexsmall = 63476; + e.Ocircumflextilde = 7894; + e.Ocyrillic = 1054; + e.Odblacute = 336; + e.Odblgrave = 524; + e.Odieresis = 214; + e.Odieresiscyrillic = 1254; + e.Odieresissmall = 63478; + e.Odotbelow = 7884; + e.Ogoneksmall = 63227; + e.Ograve = 210; + e.Ogravesmall = 63474; + e.Oharmenian = 1365; + e.Ohm = 8486; + e.Ohookabove = 7886; + e.Ohorn = 416; + e.Ohornacute = 7898; + e.Ohorndotbelow = 7906; + e.Ohorngrave = 7900; + e.Ohornhookabove = 7902; + e.Ohorntilde = 7904; + e.Ohungarumlaut = 336; + e.Oi = 418; + e.Oinvertedbreve = 526; + e.Omacron = 332; + e.Omacronacute = 7762; + e.Omacrongrave = 7760; + e.Omega = 8486; + e.Omegacyrillic = 1120; + e.Omegagreek = 937; + e.Omegaroundcyrillic = 1146; + e.Omegatitlocyrillic = 1148; + e.Omegatonos = 911; + e.Omicron = 927; + e.Omicrontonos = 908; + e.Omonospace = 65327; + e.Oneroman = 8544; + e.Oogonek = 490; + e.Oogonekmacron = 492; + e.Oopen = 390; + e.Oslash = 216; + e.Oslashacute = 510; + e.Oslashsmall = 63480; + e.Osmall = 63343; + e.Ostrokeacute = 510; + e.Otcyrillic = 1150; + e.Otilde = 213; + e.Otildeacute = 7756; + e.Otildedieresis = 7758; + e.Otildesmall = 63477; + e.P = 80; + e.Pacute = 7764; + e.Pcircle = 9413; + e.Pdotaccent = 7766; + e.Pecyrillic = 1055; + e.Peharmenian = 1354; + e.Pemiddlehookcyrillic = 1190; + e.Phi = 934; + e.Phook = 420; + e.Pi = 928; + e.Piwrarmenian = 1363; + e.Pmonospace = 65328; + e.Psi = 936; + e.Psicyrillic = 1136; + e.Psmall = 63344; + e.Q = 81; + e.Qcircle = 9414; + e.Qmonospace = 65329; + e.Qsmall = 63345; + e.R = 82; + e.Raarmenian = 1356; + e.Racute = 340; + e.Rcaron = 344; + e.Rcedilla = 342; + e.Rcircle = 9415; + e.Rcommaaccent = 342; + e.Rdblgrave = 528; + e.Rdotaccent = 7768; + e.Rdotbelow = 7770; + e.Rdotbelowmacron = 7772; + e.Reharmenian = 1360; + e.Rfraktur = 8476; + e.Rho = 929; + e.Ringsmall = 63228; + e.Rinvertedbreve = 530; + e.Rlinebelow = 7774; + e.Rmonospace = 65330; + e.Rsmall = 63346; + e.Rsmallinverted = 641; + e.Rsmallinvertedsuperior = 694; + e.S = 83; + e.SF010000 = 9484; + e.SF020000 = 9492; + e.SF030000 = 9488; + e.SF040000 = 9496; + e.SF050000 = 9532; + e.SF060000 = 9516; + e.SF070000 = 9524; + e.SF080000 = 9500; + e.SF090000 = 9508; + e.SF100000 = 9472; + e.SF110000 = 9474; + e.SF190000 = 9569; + e.SF200000 = 9570; + e.SF210000 = 9558; + e.SF220000 = 9557; + e.SF230000 = 9571; + e.SF240000 = 9553; + e.SF250000 = 9559; + e.SF260000 = 9565; + e.SF270000 = 9564; + e.SF280000 = 9563; + e.SF360000 = 9566; + e.SF370000 = 9567; + e.SF380000 = 9562; + e.SF390000 = 9556; + e.SF400000 = 9577; + e.SF410000 = 9574; + e.SF420000 = 9568; + e.SF430000 = 9552; + e.SF440000 = 9580; + e.SF450000 = 9575; + e.SF460000 = 9576; + e.SF470000 = 9572; + e.SF480000 = 9573; + e.SF490000 = 9561; + e.SF500000 = 9560; + e.SF510000 = 9554; + e.SF520000 = 9555; + e.SF530000 = 9579; + e.SF540000 = 9578; + e.Sacute = 346; + e.Sacutedotaccent = 7780; + e.Sampigreek = 992; + e.Scaron = 352; + e.Scarondotaccent = 7782; + e.Scaronsmall = 63229; + e.Scedilla = 350; + e.Schwa = 399; + e.Schwacyrillic = 1240; + e.Schwadieresiscyrillic = 1242; + e.Scircle = 9416; + e.Scircumflex = 348; + e.Scommaaccent = 536; + e.Sdotaccent = 7776; + e.Sdotbelow = 7778; + e.Sdotbelowdotaccent = 7784; + e.Seharmenian = 1357; + e.Sevenroman = 8550; + e.Shaarmenian = 1351; + e.Shacyrillic = 1064; + e.Shchacyrillic = 1065; + e.Sheicoptic = 994; + e.Shhacyrillic = 1210; + e.Shimacoptic = 1004; + e.Sigma = 931; + e.Sixroman = 8549; + e.Smonospace = 65331; + e.Softsigncyrillic = 1068; + e.Ssmall = 63347; + e.Stigmagreek = 986; + e.T = 84; + e.Tau = 932; + e.Tbar = 358; + e.Tcaron = 356; + e.Tcedilla = 354; + e.Tcircle = 9417; + e.Tcircumflexbelow = 7792; + e.Tcommaaccent = 354; + e.Tdotaccent = 7786; + e.Tdotbelow = 7788; + e.Tecyrillic = 1058; + e.Tedescendercyrillic = 1196; + e.Tenroman = 8553; + e.Tetsecyrillic = 1204; + e.Theta = 920; + e.Thook = 428; + e.Thorn = 222; + e.Thornsmall = 63486; + e.Threeroman = 8546; + e.Tildesmall = 63230; + e.Tiwnarmenian = 1359; + e.Tlinebelow = 7790; + e.Tmonospace = 65332; + e.Toarmenian = 1337; + e.Tonefive = 444; + e.Tonesix = 388; + e.Tonetwo = 423; + e.Tretroflexhook = 430; + e.Tsecyrillic = 1062; + e.Tshecyrillic = 1035; + e.Tsmall = 63348; + e.Twelveroman = 8555; + e.Tworoman = 8545; + e.U = 85; + e.Uacute = 218; + e.Uacutesmall = 63482; + e.Ubreve = 364; + e.Ucaron = 467; + e.Ucircle = 9418; + e.Ucircumflex = 219; + e.Ucircumflexbelow = 7798; + e.Ucircumflexsmall = 63483; + e.Ucyrillic = 1059; + e.Udblacute = 368; + e.Udblgrave = 532; + e.Udieresis = 220; + e.Udieresisacute = 471; + e.Udieresisbelow = 7794; + e.Udieresiscaron = 473; + e.Udieresiscyrillic = 1264; + e.Udieresisgrave = 475; + e.Udieresismacron = 469; + e.Udieresissmall = 63484; + e.Udotbelow = 7908; + e.Ugrave = 217; + e.Ugravesmall = 63481; + e.Uhookabove = 7910; + e.Uhorn = 431; + e.Uhornacute = 7912; + e.Uhorndotbelow = 7920; + e.Uhorngrave = 7914; + e.Uhornhookabove = 7916; + e.Uhorntilde = 7918; + e.Uhungarumlaut = 368; + e.Uhungarumlautcyrillic = 1266; + e.Uinvertedbreve = 534; + e.Ukcyrillic = 1144; + e.Umacron = 362; + e.Umacroncyrillic = 1262; + e.Umacrondieresis = 7802; + e.Umonospace = 65333; + e.Uogonek = 370; + e.Upsilon = 933; + e.Upsilon1 = 978; + e.Upsilonacutehooksymbolgreek = 979; + e.Upsilonafrican = 433; + e.Upsilondieresis = 939; + e.Upsilondieresishooksymbolgreek = 980; + e.Upsilonhooksymbol = 978; + e.Upsilontonos = 910; + e.Uring = 366; + e.Ushortcyrillic = 1038; + e.Usmall = 63349; + e.Ustraightcyrillic = 1198; + e.Ustraightstrokecyrillic = 1200; + e.Utilde = 360; + e.Utildeacute = 7800; + e.Utildebelow = 7796; + e.V = 86; + e.Vcircle = 9419; + e.Vdotbelow = 7806; + e.Vecyrillic = 1042; + e.Vewarmenian = 1358; + e.Vhook = 434; + e.Vmonospace = 65334; + e.Voarmenian = 1352; + e.Vsmall = 63350; + e.Vtilde = 7804; + e.W = 87; + e.Wacute = 7810; + e.Wcircle = 9420; + e.Wcircumflex = 372; + e.Wdieresis = 7812; + e.Wdotaccent = 7814; + e.Wdotbelow = 7816; + e.Wgrave = 7808; + e.Wmonospace = 65335; + e.Wsmall = 63351; + e.X = 88; + e.Xcircle = 9421; + e.Xdieresis = 7820; + e.Xdotaccent = 7818; + e.Xeharmenian = 1341; + e.Xi = 926; + e.Xmonospace = 65336; + e.Xsmall = 63352; + e.Y = 89; + e.Yacute = 221; + e.Yacutesmall = 63485; + e.Yatcyrillic = 1122; + e.Ycircle = 9422; + e.Ycircumflex = 374; + e.Ydieresis = 376; + e.Ydieresissmall = 63487; + e.Ydotaccent = 7822; + e.Ydotbelow = 7924; + e.Yericyrillic = 1067; + e.Yerudieresiscyrillic = 1272; + e.Ygrave = 7922; + e.Yhook = 435; + e.Yhookabove = 7926; + e.Yiarmenian = 1349; + e.Yicyrillic = 1031; + e.Yiwnarmenian = 1362; + e.Ymonospace = 65337; + e.Ysmall = 63353; + e.Ytilde = 7928; + e.Yusbigcyrillic = 1130; + e.Yusbigiotifiedcyrillic = 1132; + e.Yuslittlecyrillic = 1126; + e.Yuslittleiotifiedcyrillic = 1128; + e.Z = 90; + e.Zaarmenian = 1334; + e.Zacute = 377; + e.Zcaron = 381; + e.Zcaronsmall = 63231; + e.Zcircle = 9423; + e.Zcircumflex = 7824; + e.Zdot = 379; + e.Zdotaccent = 379; + e.Zdotbelow = 7826; + e.Zecyrillic = 1047; + e.Zedescendercyrillic = 1176; + e.Zedieresiscyrillic = 1246; + e.Zeta = 918; + e.Zhearmenian = 1338; + e.Zhebrevecyrillic = 1217; + e.Zhecyrillic = 1046; + e.Zhedescendercyrillic = 1174; + e.Zhedieresiscyrillic = 1244; + e.Zlinebelow = 7828; + e.Zmonospace = 65338; + e.Zsmall = 63354; + e.Zstroke = 437; + e.a = 97; + e.aabengali = 2438; + e.aacute = 225; + e.aadeva = 2310; + e.aagujarati = 2694; + e.aagurmukhi = 2566; + e.aamatragurmukhi = 2622; + e.aarusquare = 13059; + e.aavowelsignbengali = 2494; + e.aavowelsigndeva = 2366; + e.aavowelsigngujarati = 2750; + e.abbreviationmarkarmenian = 1375; + e.abbreviationsigndeva = 2416; + e.abengali = 2437; + e.abopomofo = 12570; + e.abreve = 259; + e.abreveacute = 7855; + e.abrevecyrillic = 1233; + e.abrevedotbelow = 7863; + e.abrevegrave = 7857; + e.abrevehookabove = 7859; + e.abrevetilde = 7861; + e.acaron = 462; + e.acircle = 9424; + e.acircumflex = 226; + e.acircumflexacute = 7845; + e.acircumflexdotbelow = 7853; + e.acircumflexgrave = 7847; + e.acircumflexhookabove = 7849; + e.acircumflextilde = 7851; + e.acute = 180; + e.acutebelowcmb = 791; + e.acutecmb = 769; + e.acutecomb = 769; + e.acutedeva = 2388; + e.acutelowmod = 719; + e.acutetonecmb = 833; + e.acyrillic = 1072; + e.adblgrave = 513; + e.addakgurmukhi = 2673; + e.adeva = 2309; + e.adieresis = 228; + e.adieresiscyrillic = 1235; + e.adieresismacron = 479; + e.adotbelow = 7841; + e.adotmacron = 481; + e.ae = 230; + e.aeacute = 509; + e.aekorean = 12624; + e.aemacron = 483; + e.afii00208 = 8213; + e.afii08941 = 8356; + e.afii10017 = 1040; + e.afii10018 = 1041; + e.afii10019 = 1042; + e.afii10020 = 1043; + e.afii10021 = 1044; + e.afii10022 = 1045; + e.afii10023 = 1025; + e.afii10024 = 1046; + e.afii10025 = 1047; + e.afii10026 = 1048; + e.afii10027 = 1049; + e.afii10028 = 1050; + e.afii10029 = 1051; + e.afii10030 = 1052; + e.afii10031 = 1053; + e.afii10032 = 1054; + e.afii10033 = 1055; + e.afii10034 = 1056; + e.afii10035 = 1057; + e.afii10036 = 1058; + e.afii10037 = 1059; + e.afii10038 = 1060; + e.afii10039 = 1061; + e.afii10040 = 1062; + e.afii10041 = 1063; + e.afii10042 = 1064; + e.afii10043 = 1065; + e.afii10044 = 1066; + e.afii10045 = 1067; + e.afii10046 = 1068; + e.afii10047 = 1069; + e.afii10048 = 1070; + e.afii10049 = 1071; + e.afii10050 = 1168; + e.afii10051 = 1026; + e.afii10052 = 1027; + e.afii10053 = 1028; + e.afii10054 = 1029; + e.afii10055 = 1030; + e.afii10056 = 1031; + e.afii10057 = 1032; + e.afii10058 = 1033; + e.afii10059 = 1034; + e.afii10060 = 1035; + e.afii10061 = 1036; + e.afii10062 = 1038; + e.afii10063 = 63172; + e.afii10064 = 63173; + e.afii10065 = 1072; + e.afii10066 = 1073; + e.afii10067 = 1074; + e.afii10068 = 1075; + e.afii10069 = 1076; + e.afii10070 = 1077; + e.afii10071 = 1105; + e.afii10072 = 1078; + e.afii10073 = 1079; + e.afii10074 = 1080; + e.afii10075 = 1081; + e.afii10076 = 1082; + e.afii10077 = 1083; + e.afii10078 = 1084; + e.afii10079 = 1085; + e.afii10080 = 1086; + e.afii10081 = 1087; + e.afii10082 = 1088; + e.afii10083 = 1089; + e.afii10084 = 1090; + e.afii10085 = 1091; + e.afii10086 = 1092; + e.afii10087 = 1093; + e.afii10088 = 1094; + e.afii10089 = 1095; + e.afii10090 = 1096; + e.afii10091 = 1097; + e.afii10092 = 1098; + e.afii10093 = 1099; + e.afii10094 = 1100; + e.afii10095 = 1101; + e.afii10096 = 1102; + e.afii10097 = 1103; + e.afii10098 = 1169; + e.afii10099 = 1106; + e.afii10100 = 1107; + e.afii10101 = 1108; + e.afii10102 = 1109; + e.afii10103 = 1110; + e.afii10104 = 1111; + e.afii10105 = 1112; + e.afii10106 = 1113; + e.afii10107 = 1114; + e.afii10108 = 1115; + e.afii10109 = 1116; + e.afii10110 = 1118; + e.afii10145 = 1039; + e.afii10146 = 1122; + e.afii10147 = 1138; + e.afii10148 = 1140; + e.afii10192 = 63174; + e.afii10193 = 1119; + e.afii10194 = 1123; + e.afii10195 = 1139; + e.afii10196 = 1141; + e.afii10831 = 63175; + e.afii10832 = 63176; + e.afii10846 = 1241; + e.afii299 = 8206; + e.afii300 = 8207; + e.afii301 = 8205; + e.afii57381 = 1642; + e.afii57388 = 1548; + e.afii57392 = 1632; + e.afii57393 = 1633; + e.afii57394 = 1634; + e.afii57395 = 1635; + e.afii57396 = 1636; + e.afii57397 = 1637; + e.afii57398 = 1638; + e.afii57399 = 1639; + e.afii57400 = 1640; + e.afii57401 = 1641; + e.afii57403 = 1563; + e.afii57407 = 1567; + e.afii57409 = 1569; + e.afii57410 = 1570; + e.afii57411 = 1571; + e.afii57412 = 1572; + e.afii57413 = 1573; + e.afii57414 = 1574; + e.afii57415 = 1575; + e.afii57416 = 1576; + e.afii57417 = 1577; + e.afii57418 = 1578; + e.afii57419 = 1579; + e.afii57420 = 1580; + e.afii57421 = 1581; + e.afii57422 = 1582; + e.afii57423 = 1583; + e.afii57424 = 1584; + e.afii57425 = 1585; + e.afii57426 = 1586; + e.afii57427 = 1587; + e.afii57428 = 1588; + e.afii57429 = 1589; + e.afii57430 = 1590; + e.afii57431 = 1591; + e.afii57432 = 1592; + e.afii57433 = 1593; + e.afii57434 = 1594; + e.afii57440 = 1600; + e.afii57441 = 1601; + e.afii57442 = 1602; + e.afii57443 = 1603; + e.afii57444 = 1604; + e.afii57445 = 1605; + e.afii57446 = 1606; + e.afii57448 = 1608; + e.afii57449 = 1609; + e.afii57450 = 1610; + e.afii57451 = 1611; + e.afii57452 = 1612; + e.afii57453 = 1613; + e.afii57454 = 1614; + e.afii57455 = 1615; + e.afii57456 = 1616; + e.afii57457 = 1617; + e.afii57458 = 1618; + e.afii57470 = 1607; + e.afii57505 = 1700; + e.afii57506 = 1662; + e.afii57507 = 1670; + e.afii57508 = 1688; + e.afii57509 = 1711; + e.afii57511 = 1657; + e.afii57512 = 1672; + e.afii57513 = 1681; + e.afii57514 = 1722; + e.afii57519 = 1746; + e.afii57534 = 1749; + e.afii57636 = 8362; + e.afii57645 = 1470; + e.afii57658 = 1475; + e.afii57664 = 1488; + e.afii57665 = 1489; + e.afii57666 = 1490; + e.afii57667 = 1491; + e.afii57668 = 1492; + e.afii57669 = 1493; + e.afii57670 = 1494; + e.afii57671 = 1495; + e.afii57672 = 1496; + e.afii57673 = 1497; + e.afii57674 = 1498; + e.afii57675 = 1499; + e.afii57676 = 1500; + e.afii57677 = 1501; + e.afii57678 = 1502; + e.afii57679 = 1503; + e.afii57680 = 1504; + e.afii57681 = 1505; + e.afii57682 = 1506; + e.afii57683 = 1507; + e.afii57684 = 1508; + e.afii57685 = 1509; + e.afii57686 = 1510; + e.afii57687 = 1511; + e.afii57688 = 1512; + e.afii57689 = 1513; + e.afii57690 = 1514; + e.afii57694 = 64298; + e.afii57695 = 64299; + e.afii57700 = 64331; + e.afii57705 = 64287; + e.afii57716 = 1520; + e.afii57717 = 1521; + e.afii57718 = 1522; + e.afii57723 = 64309; + e.afii57793 = 1460; + e.afii57794 = 1461; + e.afii57795 = 1462; + e.afii57796 = 1467; + e.afii57797 = 1464; + e.afii57798 = 1463; + e.afii57799 = 1456; + e.afii57800 = 1458; + e.afii57801 = 1457; + e.afii57802 = 1459; + e.afii57803 = 1474; + e.afii57804 = 1473; + e.afii57806 = 1465; + e.afii57807 = 1468; + e.afii57839 = 1469; + e.afii57841 = 1471; + e.afii57842 = 1472; + e.afii57929 = 700; + e.afii61248 = 8453; + e.afii61289 = 8467; + e.afii61352 = 8470; + e.afii61573 = 8236; + e.afii61574 = 8237; + e.afii61575 = 8238; + e.afii61664 = 8204; + e.afii63167 = 1645; + e.afii64937 = 701; + e.agrave = 224; + e.agujarati = 2693; + e.agurmukhi = 2565; + e.ahiragana = 12354; + e.ahookabove = 7843; + e.aibengali = 2448; + e.aibopomofo = 12574; + e.aideva = 2320; + e.aiecyrillic = 1237; + e.aigujarati = 2704; + e.aigurmukhi = 2576; + e.aimatragurmukhi = 2632; + e.ainarabic = 1593; + e.ainfinalarabic = 65226; + e.aininitialarabic = 65227; + e.ainmedialarabic = 65228; + e.ainvertedbreve = 515; + e.aivowelsignbengali = 2504; + e.aivowelsigndeva = 2376; + e.aivowelsigngujarati = 2760; + e.akatakana = 12450; + e.akatakanahalfwidth = 65393; + e.akorean = 12623; + e.alef = 1488; + e.alefarabic = 1575; + e.alefdageshhebrew = 64304; + e.aleffinalarabic = 65166; + e.alefhamzaabovearabic = 1571; + e.alefhamzaabovefinalarabic = 65156; + e.alefhamzabelowarabic = 1573; + e.alefhamzabelowfinalarabic = 65160; + e.alefhebrew = 1488; + e.aleflamedhebrew = 64335; + e.alefmaddaabovearabic = 1570; + e.alefmaddaabovefinalarabic = 65154; + e.alefmaksuraarabic = 1609; + e.alefmaksurafinalarabic = 65264; + e.alefmaksurainitialarabic = 65267; + e.alefmaksuramedialarabic = 65268; + e.alefpatahhebrew = 64302; + e.alefqamatshebrew = 64303; + e.aleph = 8501; + e.allequal = 8780; + e.alpha = 945; + e.alphatonos = 940; + e.amacron = 257; + e.amonospace = 65345; + e.ampersand = 38; + e.ampersandmonospace = 65286; + e.ampersandsmall = 63270; + e.amsquare = 13250; + e.anbopomofo = 12578; + e.angbopomofo = 12580; + e.angbracketleft = 12296; + e.angbracketright = 12297; + e.angkhankhuthai = 3674; + e.angle = 8736; + e.anglebracketleft = 12296; + e.anglebracketleftvertical = 65087; + e.anglebracketright = 12297; + e.anglebracketrightvertical = 65088; + e.angleleft = 9001; + e.angleright = 9002; + e.angstrom = 8491; + e.anoteleia = 903; + e.anudattadeva = 2386; + e.anusvarabengali = 2434; + e.anusvaradeva = 2306; + e.anusvaragujarati = 2690; + e.aogonek = 261; + e.apaatosquare = 13056; + e.aparen = 9372; + e.apostrophearmenian = 1370; + e.apostrophemod = 700; + e.apple = 63743; + e.approaches = 8784; + e.approxequal = 8776; + e.approxequalorimage = 8786; + e.approximatelyequal = 8773; + e.araeaekorean = 12686; + e.araeakorean = 12685; + e.arc = 8978; + e.arighthalfring = 7834; + e.aring = 229; + e.aringacute = 507; + e.aringbelow = 7681; + e.arrowboth = 8596; + e.arrowdashdown = 8675; + e.arrowdashleft = 8672; + e.arrowdashright = 8674; + e.arrowdashup = 8673; + e.arrowdblboth = 8660; + e.arrowdbldown = 8659; + e.arrowdblleft = 8656; + e.arrowdblright = 8658; + e.arrowdblup = 8657; + e.arrowdown = 8595; + e.arrowdownleft = 8601; + e.arrowdownright = 8600; + e.arrowdownwhite = 8681; + e.arrowheaddownmod = 709; + e.arrowheadleftmod = 706; + e.arrowheadrightmod = 707; + e.arrowheadupmod = 708; + e.arrowhorizex = 63719; + e.arrowleft = 8592; + e.arrowleftdbl = 8656; + e.arrowleftdblstroke = 8653; + e.arrowleftoverright = 8646; + e.arrowleftwhite = 8678; + e.arrowright = 8594; + e.arrowrightdblstroke = 8655; + e.arrowrightheavy = 10142; + e.arrowrightoverleft = 8644; + e.arrowrightwhite = 8680; + e.arrowtableft = 8676; + e.arrowtabright = 8677; + e.arrowup = 8593; + e.arrowupdn = 8597; + e.arrowupdnbse = 8616; + e.arrowupdownbase = 8616; + e.arrowupleft = 8598; + e.arrowupleftofdown = 8645; + e.arrowupright = 8599; + e.arrowupwhite = 8679; + e.arrowvertex = 63718; + e.asciicircum = 94; + e.asciicircummonospace = 65342; + e.asciitilde = 126; + e.asciitildemonospace = 65374; + e.ascript = 593; + e.ascriptturned = 594; + e.asmallhiragana = 12353; + e.asmallkatakana = 12449; + e.asmallkatakanahalfwidth = 65383; + e.asterisk = 42; + e.asteriskaltonearabic = 1645; + e.asteriskarabic = 1645; + e.asteriskmath = 8727; + e.asteriskmonospace = 65290; + e.asterisksmall = 65121; + e.asterism = 8258; + e.asuperior = 63209; + e.asymptoticallyequal = 8771; + e.at = 64; + e.atilde = 227; + e.atmonospace = 65312; + e.atsmall = 65131; + e.aturned = 592; + e.aubengali = 2452; + e.aubopomofo = 12576; + e.audeva = 2324; + e.augujarati = 2708; + e.augurmukhi = 2580; + e.aulengthmarkbengali = 2519; + e.aumatragurmukhi = 2636; + e.auvowelsignbengali = 2508; + e.auvowelsigndeva = 2380; + e.auvowelsigngujarati = 2764; + e.avagrahadeva = 2365; + e.aybarmenian = 1377; + e.ayin = 1506; + e.ayinaltonehebrew = 64288; + e.ayinhebrew = 1506; + e.b = 98; + e.babengali = 2476; + e.backslash = 92; + e.backslashmonospace = 65340; + e.badeva = 2348; + e.bagujarati = 2732; + e.bagurmukhi = 2604; + e.bahiragana = 12400; + e.bahtthai = 3647; + e.bakatakana = 12496; + e.bar = 124; + e.barmonospace = 65372; + e.bbopomofo = 12549; + e.bcircle = 9425; + e.bdotaccent = 7683; + e.bdotbelow = 7685; + e.beamedsixteenthnotes = 9836; + e.because = 8757; + e.becyrillic = 1073; + e.beharabic = 1576; + e.behfinalarabic = 65168; + e.behinitialarabic = 65169; + e.behiragana = 12409; + e.behmedialarabic = 65170; + e.behmeeminitialarabic = 64671; + e.behmeemisolatedarabic = 64520; + e.behnoonfinalarabic = 64621; + e.bekatakana = 12505; + e.benarmenian = 1378; + e.bet = 1489; + e.beta = 946; + e.betasymbolgreek = 976; + e.betdagesh = 64305; + e.betdageshhebrew = 64305; + e.bethebrew = 1489; + e.betrafehebrew = 64332; + e.bhabengali = 2477; + e.bhadeva = 2349; + e.bhagujarati = 2733; + e.bhagurmukhi = 2605; + e.bhook = 595; + e.bihiragana = 12403; + e.bikatakana = 12499; + e.bilabialclick = 664; + e.bindigurmukhi = 2562; + e.birusquare = 13105; + e.blackcircle = 9679; + e.blackdiamond = 9670; + e.blackdownpointingtriangle = 9660; + e.blackleftpointingpointer = 9668; + e.blackleftpointingtriangle = 9664; + e.blacklenticularbracketleft = 12304; + e.blacklenticularbracketleftvertical = 65083; + e.blacklenticularbracketright = 12305; + e.blacklenticularbracketrightvertical = 65084; + e.blacklowerlefttriangle = 9699; + e.blacklowerrighttriangle = 9698; + e.blackrectangle = 9644; + e.blackrightpointingpointer = 9658; + e.blackrightpointingtriangle = 9654; + e.blacksmallsquare = 9642; + e.blacksmilingface = 9787; + e.blacksquare = 9632; + e.blackstar = 9733; + e.blackupperlefttriangle = 9700; + e.blackupperrighttriangle = 9701; + e.blackuppointingsmalltriangle = 9652; + e.blackuppointingtriangle = 9650; + e.blank = 9251; + e.blinebelow = 7687; + e.block = 9608; + e.bmonospace = 65346; + e.bobaimaithai = 3610; + e.bohiragana = 12412; + e.bokatakana = 12508; + e.bparen = 9373; + e.bqsquare = 13251; + e.braceex = 63732; + e.braceleft = 123; + e.braceleftbt = 63731; + e.braceleftmid = 63730; + e.braceleftmonospace = 65371; + e.braceleftsmall = 65115; + e.bracelefttp = 63729; + e.braceleftvertical = 65079; + e.braceright = 125; + e.bracerightbt = 63742; + e.bracerightmid = 63741; + e.bracerightmonospace = 65373; + e.bracerightsmall = 65116; + e.bracerighttp = 63740; + e.bracerightvertical = 65080; + e.bracketleft = 91; + e.bracketleftbt = 63728; + e.bracketleftex = 63727; + e.bracketleftmonospace = 65339; + e.bracketlefttp = 63726; + e.bracketright = 93; + e.bracketrightbt = 63739; + e.bracketrightex = 63738; + e.bracketrightmonospace = 65341; + e.bracketrighttp = 63737; + e.breve = 728; + e.brevebelowcmb = 814; + e.brevecmb = 774; + e.breveinvertedbelowcmb = 815; + e.breveinvertedcmb = 785; + e.breveinverteddoublecmb = 865; + e.bridgebelowcmb = 810; + e.bridgeinvertedbelowcmb = 826; + e.brokenbar = 166; + e.bstroke = 384; + e.bsuperior = 63210; + e.btopbar = 387; + e.buhiragana = 12406; + e.bukatakana = 12502; + e.bullet = 8226; + e.bulletinverse = 9688; + e.bulletoperator = 8729; + e.bullseye = 9678; + e.c = 99; + e.caarmenian = 1390; + e.cabengali = 2458; + e.cacute = 263; + e.cadeva = 2330; + e.cagujarati = 2714; + e.cagurmukhi = 2586; + e.calsquare = 13192; + e.candrabindubengali = 2433; + e.candrabinducmb = 784; + e.candrabindudeva = 2305; + e.candrabindugujarati = 2689; + e.capslock = 8682; + e.careof = 8453; + e.caron = 711; + e.caronbelowcmb = 812; + e.caroncmb = 780; + e.carriagereturn = 8629; + e.cbopomofo = 12568; + e.ccaron = 269; + e.ccedilla = 231; + e.ccedillaacute = 7689; + e.ccircle = 9426; + e.ccircumflex = 265; + e.ccurl = 597; + e.cdot = 267; + e.cdotaccent = 267; + e.cdsquare = 13253; + e.cedilla = 184; + e.cedillacmb = 807; + e.cent = 162; + e.centigrade = 8451; + e.centinferior = 63199; + e.centmonospace = 65504; + e.centoldstyle = 63394; + e.centsuperior = 63200; + e.chaarmenian = 1401; + e.chabengali = 2459; + e.chadeva = 2331; + e.chagujarati = 2715; + e.chagurmukhi = 2587; + e.chbopomofo = 12564; + e.cheabkhasiancyrillic = 1213; + e.checkmark = 10003; + e.checyrillic = 1095; + e.chedescenderabkhasiancyrillic = 1215; + e.chedescendercyrillic = 1207; + e.chedieresiscyrillic = 1269; + e.cheharmenian = 1395; + e.chekhakassiancyrillic = 1228; + e.cheverticalstrokecyrillic = 1209; + e.chi = 967; + e.chieuchacirclekorean = 12919; + e.chieuchaparenkorean = 12823; + e.chieuchcirclekorean = 12905; + e.chieuchkorean = 12618; + e.chieuchparenkorean = 12809; + e.chochangthai = 3594; + e.chochanthai = 3592; + e.chochingthai = 3593; + e.chochoethai = 3596; + e.chook = 392; + e.cieucacirclekorean = 12918; + e.cieucaparenkorean = 12822; + e.cieuccirclekorean = 12904; + e.cieuckorean = 12616; + e.cieucparenkorean = 12808; + e.cieucuparenkorean = 12828; + e.circle = 9675; + e.circlecopyrt = 169; + e.circlemultiply = 8855; + e.circleot = 8857; + e.circleplus = 8853; + e.circlepostalmark = 12342; + e.circlewithlefthalfblack = 9680; + e.circlewithrighthalfblack = 9681; + e.circumflex = 710; + e.circumflexbelowcmb = 813; + e.circumflexcmb = 770; + e.clear = 8999; + e.clickalveolar = 450; + e.clickdental = 448; + e.clicklateral = 449; + e.clickretroflex = 451; + e.club = 9827; + e.clubsuitblack = 9827; + e.clubsuitwhite = 9831; + e.cmcubedsquare = 13220; + e.cmonospace = 65347; + e.cmsquaredsquare = 13216; + e.coarmenian = 1409; + e.colon = 58; + e.colonmonetary = 8353; + e.colonmonospace = 65306; + e.colonsign = 8353; + e.colonsmall = 65109; + e.colontriangularhalfmod = 721; + e.colontriangularmod = 720; + e.comma = 44; + e.commaabovecmb = 787; + e.commaaboverightcmb = 789; + e.commaaccent = 63171; + e.commaarabic = 1548; + e.commaarmenian = 1373; + e.commainferior = 63201; + e.commamonospace = 65292; + e.commareversedabovecmb = 788; + e.commareversedmod = 701; + e.commasmall = 65104; + e.commasuperior = 63202; + e.commaturnedabovecmb = 786; + e.commaturnedmod = 699; + e.compass = 9788; + e.congruent = 8773; + e.contourintegral = 8750; + e.control = 8963; + e.controlACK = 6; + e.controlBEL = 7; + e.controlBS = 8; + e.controlCAN = 24; + e.controlCR = 13; + e.controlDC1 = 17; + e.controlDC2 = 18; + e.controlDC3 = 19; + e.controlDC4 = 20; + e.controlDEL = 127; + e.controlDLE = 16; + e.controlEM = 25; + e.controlENQ = 5; + e.controlEOT = 4; + e.controlESC = 27; + e.controlETB = 23; + e.controlETX = 3; + e.controlFF = 12; + e.controlFS = 28; + e.controlGS = 29; + e.controlHT = 9; + e.controlLF = 10; + e.controlNAK = 21; + e.controlNULL = 0; + e.controlRS = 30; + e.controlSI = 15; + e.controlSO = 14; + e.controlSOT = 2; + e.controlSTX = 1; + e.controlSUB = 26; + e.controlSYN = 22; + e.controlUS = 31; + e.controlVT = 11; + e.copyright = 169; + e.copyrightsans = 63721; + e.copyrightserif = 63193; + e.cornerbracketleft = 12300; + e.cornerbracketlefthalfwidth = 65378; + e.cornerbracketleftvertical = 65089; + e.cornerbracketright = 12301; + e.cornerbracketrighthalfwidth = 65379; + e.cornerbracketrightvertical = 65090; + e.corporationsquare = 13183; + e.cosquare = 13255; + e.coverkgsquare = 13254; + e.cparen = 9374; + e.cruzeiro = 8354; + e.cstretched = 663; + e.curlyand = 8911; + e.curlyor = 8910; + e.currency = 164; + e.cyrBreve = 63185; + e.cyrFlex = 63186; + e.cyrbreve = 63188; + e.cyrflex = 63189; + e.d = 100; + e.daarmenian = 1380; + e.dabengali = 2470; + e.dadarabic = 1590; + e.dadeva = 2342; + e.dadfinalarabic = 65214; + e.dadinitialarabic = 65215; + e.dadmedialarabic = 65216; + e.dagesh = 1468; + e.dageshhebrew = 1468; + e.dagger = 8224; + e.daggerdbl = 8225; + e.dagujarati = 2726; + e.dagurmukhi = 2598; + e.dahiragana = 12384; + e.dakatakana = 12480; + e.dalarabic = 1583; + e.dalet = 1491; + e.daletdagesh = 64307; + e.daletdageshhebrew = 64307; + e.dalethebrew = 1491; + e.dalfinalarabic = 65194; + e.dammaarabic = 1615; + e.dammalowarabic = 1615; + e.dammatanaltonearabic = 1612; + e.dammatanarabic = 1612; + e.danda = 2404; + e.dargahebrew = 1447; + e.dargalefthebrew = 1447; + e.dasiapneumatacyrilliccmb = 1157; + e.dblGrave = 63187; + e.dblanglebracketleft = 12298; + e.dblanglebracketleftvertical = 65085; + e.dblanglebracketright = 12299; + e.dblanglebracketrightvertical = 65086; + e.dblarchinvertedbelowcmb = 811; + e.dblarrowleft = 8660; + e.dblarrowright = 8658; + e.dbldanda = 2405; + e.dblgrave = 63190; + e.dblgravecmb = 783; + e.dblintegral = 8748; + e.dbllowline = 8215; + e.dbllowlinecmb = 819; + e.dbloverlinecmb = 831; + e.dblprimemod = 698; + e.dblverticalbar = 8214; + e.dblverticallineabovecmb = 782; + e.dbopomofo = 12553; + e.dbsquare = 13256; + e.dcaron = 271; + e.dcedilla = 7697; + e.dcircle = 9427; + e.dcircumflexbelow = 7699; + e.dcroat = 273; + e.ddabengali = 2465; + e.ddadeva = 2337; + e.ddagujarati = 2721; + e.ddagurmukhi = 2593; + e.ddalarabic = 1672; + e.ddalfinalarabic = 64393; + e.dddhadeva = 2396; + e.ddhabengali = 2466; + e.ddhadeva = 2338; + e.ddhagujarati = 2722; + e.ddhagurmukhi = 2594; + e.ddotaccent = 7691; + e.ddotbelow = 7693; + e.decimalseparatorarabic = 1643; + e.decimalseparatorpersian = 1643; + e.decyrillic = 1076; + e.degree = 176; + e.dehihebrew = 1453; + e.dehiragana = 12391; + e.deicoptic = 1007; + e.dekatakana = 12487; + e.deleteleft = 9003; + e.deleteright = 8998; + e.delta = 948; + e.deltaturned = 397; + e.denominatorminusonenumeratorbengali = 2552; + e.dezh = 676; + e.dhabengali = 2471; + e.dhadeva = 2343; + e.dhagujarati = 2727; + e.dhagurmukhi = 2599; + e.dhook = 599; + e.dialytikatonos = 901; + e.dialytikatonoscmb = 836; + e.diamond = 9830; + e.diamondsuitwhite = 9826; + e.dieresis = 168; + e.dieresisacute = 63191; + e.dieresisbelowcmb = 804; + e.dieresiscmb = 776; + e.dieresisgrave = 63192; + e.dieresistonos = 901; + e.dihiragana = 12386; + e.dikatakana = 12482; + e.dittomark = 12291; + e.divide = 247; + e.divides = 8739; + e.divisionslash = 8725; + e.djecyrillic = 1106; + e.dkshade = 9619; + e.dlinebelow = 7695; + e.dlsquare = 13207; + e.dmacron = 273; + e.dmonospace = 65348; + e.dnblock = 9604; + e.dochadathai = 3598; + e.dodekthai = 3604; + e.dohiragana = 12393; + e.dokatakana = 12489; + e.dollar = 36; + e.dollarinferior = 63203; + e.dollarmonospace = 65284; + e.dollaroldstyle = 63268; + e.dollarsmall = 65129; + e.dollarsuperior = 63204; + e.dong = 8363; + e.dorusquare = 13094; + e.dotaccent = 729; + e.dotaccentcmb = 775; + e.dotbelowcmb = 803; + e.dotbelowcomb = 803; + e.dotkatakana = 12539; + e.dotlessi = 305; + e.dotlessj = 63166; + e.dotlessjstrokehook = 644; + e.dotmath = 8901; + e.dottedcircle = 9676; + e.doubleyodpatah = 64287; + e.doubleyodpatahhebrew = 64287; + e.downtackbelowcmb = 798; + e.downtackmod = 725; + e.dparen = 9375; + e.dsuperior = 63211; + e.dtail = 598; + e.dtopbar = 396; + e.duhiragana = 12389; + e.dukatakana = 12485; + e.dz = 499; + e.dzaltone = 675; + e.dzcaron = 454; + e.dzcurl = 677; + e.dzeabkhasiancyrillic = 1249; + e.dzecyrillic = 1109; + e.dzhecyrillic = 1119; + e.e = 101; + e.eacute = 233; + e.earth = 9793; + e.ebengali = 2447; + e.ebopomofo = 12572; + e.ebreve = 277; + e.ecandradeva = 2317; + e.ecandragujarati = 2701; + e.ecandravowelsigndeva = 2373; + e.ecandravowelsigngujarati = 2757; + e.ecaron = 283; + e.ecedillabreve = 7709; + e.echarmenian = 1381; + e.echyiwnarmenian = 1415; + e.ecircle = 9428; + e.ecircumflex = 234; + e.ecircumflexacute = 7871; + e.ecircumflexbelow = 7705; + e.ecircumflexdotbelow = 7879; + e.ecircumflexgrave = 7873; + e.ecircumflexhookabove = 7875; + e.ecircumflextilde = 7877; + e.ecyrillic = 1108; + e.edblgrave = 517; + e.edeva = 2319; + e.edieresis = 235; + e.edot = 279; + e.edotaccent = 279; + e.edotbelow = 7865; + e.eegurmukhi = 2575; + e.eematragurmukhi = 2631; + e.efcyrillic = 1092; + e.egrave = 232; + e.egujarati = 2703; + e.eharmenian = 1383; + e.ehbopomofo = 12573; + e.ehiragana = 12360; + e.ehookabove = 7867; + e.eibopomofo = 12575; + e.eight = 56; + e.eightarabic = 1640; + e.eightbengali = 2542; + e.eightcircle = 9319; + e.eightcircleinversesansserif = 10129; + e.eightdeva = 2414; + e.eighteencircle = 9329; + e.eighteenparen = 9349; + e.eighteenperiod = 9369; + e.eightgujarati = 2798; + e.eightgurmukhi = 2670; + e.eighthackarabic = 1640; + e.eighthangzhou = 12328; + e.eighthnotebeamed = 9835; + e.eightideographicparen = 12839; + e.eightinferior = 8328; + e.eightmonospace = 65304; + e.eightoldstyle = 63288; + e.eightparen = 9339; + e.eightperiod = 9359; + e.eightpersian = 1784; + e.eightroman = 8567; + e.eightsuperior = 8312; + e.eightthai = 3672; + e.einvertedbreve = 519; + e.eiotifiedcyrillic = 1125; + e.ekatakana = 12456; + e.ekatakanahalfwidth = 65396; + e.ekonkargurmukhi = 2676; + e.ekorean = 12628; + e.elcyrillic = 1083; + e.element = 8712; + e.elevencircle = 9322; + e.elevenparen = 9342; + e.elevenperiod = 9362; + e.elevenroman = 8570; + e.ellipsis = 8230; + e.ellipsisvertical = 8942; + e.emacron = 275; + e.emacronacute = 7703; + e.emacrongrave = 7701; + e.emcyrillic = 1084; + e.emdash = 8212; + e.emdashvertical = 65073; + e.emonospace = 65349; + e.emphasismarkarmenian = 1371; + e.emptyset = 8709; + e.enbopomofo = 12579; + e.encyrillic = 1085; + e.endash = 8211; + e.endashvertical = 65074; + e.endescendercyrillic = 1187; + e.eng = 331; + e.engbopomofo = 12581; + e.enghecyrillic = 1189; + e.enhookcyrillic = 1224; + e.enspace = 8194; + e.eogonek = 281; + e.eokorean = 12627; + e.eopen = 603; + e.eopenclosed = 666; + e.eopenreversed = 604; + e.eopenreversedclosed = 606; + e.eopenreversedhook = 605; + e.eparen = 9376; + e.epsilon = 949; + e.epsilontonos = 941; + e.equal = 61; + e.equalmonospace = 65309; + e.equalsmall = 65126; + e.equalsuperior = 8316; + e.equivalence = 8801; + e.erbopomofo = 12582; + e.ercyrillic = 1088; + e.ereversed = 600; + e.ereversedcyrillic = 1101; + e.escyrillic = 1089; + e.esdescendercyrillic = 1195; + e.esh = 643; + e.eshcurl = 646; + e.eshortdeva = 2318; + e.eshortvowelsigndeva = 2374; + e.eshreversedloop = 426; + e.eshsquatreversed = 645; + e.esmallhiragana = 12359; + e.esmallkatakana = 12455; + e.esmallkatakanahalfwidth = 65386; + e.estimated = 8494; + e.esuperior = 63212; + e.eta = 951; + e.etarmenian = 1384; + e.etatonos = 942; + e.eth = 240; + e.etilde = 7869; + e.etildebelow = 7707; + e.etnahtafoukhhebrew = 1425; + e.etnahtafoukhlefthebrew = 1425; + e.etnahtahebrew = 1425; + e.etnahtalefthebrew = 1425; + e.eturned = 477; + e.eukorean = 12641; + e.euro = 8364; + e.evowelsignbengali = 2503; + e.evowelsigndeva = 2375; + e.evowelsigngujarati = 2759; + e.exclam = 33; + e.exclamarmenian = 1372; + e.exclamdbl = 8252; + e.exclamdown = 161; + e.exclamdownsmall = 63393; + e.exclammonospace = 65281; + e.exclamsmall = 63265; + e.existential = 8707; + e.ezh = 658; + e.ezhcaron = 495; + e.ezhcurl = 659; + e.ezhreversed = 441; + e.ezhtail = 442; + e.f = 102; + e.fadeva = 2398; + e.fagurmukhi = 2654; + e.fahrenheit = 8457; + e.fathaarabic = 1614; + e.fathalowarabic = 1614; + e.fathatanarabic = 1611; + e.fbopomofo = 12552; + e.fcircle = 9429; + e.fdotaccent = 7711; + e.feharabic = 1601; + e.feharmenian = 1414; + e.fehfinalarabic = 65234; + e.fehinitialarabic = 65235; + e.fehmedialarabic = 65236; + e.feicoptic = 997; + e.female = 9792; + e.ff = 64256; + e.f_f = 64256; + e.ffi = 64259; + e.f_f_i = 64259; + e.ffl = 64260; + e.f_f_l = 64260; + e.fi = 64257; + e.f_i = 64257; + e.fifteencircle = 9326; + e.fifteenparen = 9346; + e.fifteenperiod = 9366; + e.figuredash = 8210; + e.filledbox = 9632; + e.filledrect = 9644; + e.finalkaf = 1498; + e.finalkafdagesh = 64314; + e.finalkafdageshhebrew = 64314; + e.finalkafhebrew = 1498; + e.finalmem = 1501; + e.finalmemhebrew = 1501; + e.finalnun = 1503; + e.finalnunhebrew = 1503; + e.finalpe = 1507; + e.finalpehebrew = 1507; + e.finaltsadi = 1509; + e.finaltsadihebrew = 1509; + e.firsttonechinese = 713; + e.fisheye = 9673; + e.fitacyrillic = 1139; + e.five = 53; + e.fivearabic = 1637; + e.fivebengali = 2539; + e.fivecircle = 9316; + e.fivecircleinversesansserif = 10126; + e.fivedeva = 2411; + e.fiveeighths = 8541; + e.fivegujarati = 2795; + e.fivegurmukhi = 2667; + e.fivehackarabic = 1637; + e.fivehangzhou = 12325; + e.fiveideographicparen = 12836; + e.fiveinferior = 8325; + e.fivemonospace = 65301; + e.fiveoldstyle = 63285; + e.fiveparen = 9336; + e.fiveperiod = 9356; + e.fivepersian = 1781; + e.fiveroman = 8564; + e.fivesuperior = 8309; + e.fivethai = 3669; + e.fl = 64258; + e.f_l = 64258; + e.florin = 402; + e.fmonospace = 65350; + e.fmsquare = 13209; + e.fofanthai = 3615; + e.fofathai = 3613; + e.fongmanthai = 3663; + e.forall = 8704; + e.four = 52; + e.fourarabic = 1636; + e.fourbengali = 2538; + e.fourcircle = 9315; + e.fourcircleinversesansserif = 10125; + e.fourdeva = 2410; + e.fourgujarati = 2794; + e.fourgurmukhi = 2666; + e.fourhackarabic = 1636; + e.fourhangzhou = 12324; + e.fourideographicparen = 12835; + e.fourinferior = 8324; + e.fourmonospace = 65300; + e.fournumeratorbengali = 2551; + e.fouroldstyle = 63284; + e.fourparen = 9335; + e.fourperiod = 9355; + e.fourpersian = 1780; + e.fourroman = 8563; + e.foursuperior = 8308; + e.fourteencircle = 9325; + e.fourteenparen = 9345; + e.fourteenperiod = 9365; + e.fourthai = 3668; + e.fourthtonechinese = 715; + e.fparen = 9377; + e.fraction = 8260; + e.franc = 8355; + e.g = 103; + e.gabengali = 2455; + e.gacute = 501; + e.gadeva = 2327; + e.gafarabic = 1711; + e.gaffinalarabic = 64403; + e.gafinitialarabic = 64404; + e.gafmedialarabic = 64405; + e.gagujarati = 2711; + e.gagurmukhi = 2583; + e.gahiragana = 12364; + e.gakatakana = 12460; + e.gamma = 947; + e.gammalatinsmall = 611; + e.gammasuperior = 736; + e.gangiacoptic = 1003; + e.gbopomofo = 12557; + e.gbreve = 287; + e.gcaron = 487; + e.gcedilla = 291; + e.gcircle = 9430; + e.gcircumflex = 285; + e.gcommaaccent = 291; + e.gdot = 289; + e.gdotaccent = 289; + e.gecyrillic = 1075; + e.gehiragana = 12370; + e.gekatakana = 12466; + e.geometricallyequal = 8785; + e.gereshaccenthebrew = 1436; + e.gereshhebrew = 1523; + e.gereshmuqdamhebrew = 1437; + e.germandbls = 223; + e.gershayimaccenthebrew = 1438; + e.gershayimhebrew = 1524; + e.getamark = 12307; + e.ghabengali = 2456; + e.ghadarmenian = 1394; + e.ghadeva = 2328; + e.ghagujarati = 2712; + e.ghagurmukhi = 2584; + e.ghainarabic = 1594; + e.ghainfinalarabic = 65230; + e.ghaininitialarabic = 65231; + e.ghainmedialarabic = 65232; + e.ghemiddlehookcyrillic = 1173; + e.ghestrokecyrillic = 1171; + e.gheupturncyrillic = 1169; + e.ghhadeva = 2394; + e.ghhagurmukhi = 2650; + e.ghook = 608; + e.ghzsquare = 13203; + e.gihiragana = 12366; + e.gikatakana = 12462; + e.gimarmenian = 1379; + e.gimel = 1490; + e.gimeldagesh = 64306; + e.gimeldageshhebrew = 64306; + e.gimelhebrew = 1490; + e.gjecyrillic = 1107; + e.glottalinvertedstroke = 446; + e.glottalstop = 660; + e.glottalstopinverted = 662; + e.glottalstopmod = 704; + e.glottalstopreversed = 661; + e.glottalstopreversedmod = 705; + e.glottalstopreversedsuperior = 740; + e.glottalstopstroke = 673; + e.glottalstopstrokereversed = 674; + e.gmacron = 7713; + e.gmonospace = 65351; + e.gohiragana = 12372; + e.gokatakana = 12468; + e.gparen = 9378; + e.gpasquare = 13228; + e.gradient = 8711; + e.grave = 96; + e.gravebelowcmb = 790; + e.gravecmb = 768; + e.gravecomb = 768; + e.gravedeva = 2387; + e.gravelowmod = 718; + e.gravemonospace = 65344; + e.gravetonecmb = 832; + e.greater = 62; + e.greaterequal = 8805; + e.greaterequalorless = 8923; + e.greatermonospace = 65310; + e.greaterorequivalent = 8819; + e.greaterorless = 8823; + e.greateroverequal = 8807; + e.greatersmall = 65125; + e.gscript = 609; + e.gstroke = 485; + e.guhiragana = 12368; + e.guillemotleft = 171; + e.guillemotright = 187; + e.guilsinglleft = 8249; + e.guilsinglright = 8250; + e.gukatakana = 12464; + e.guramusquare = 13080; + e.gysquare = 13257; + e.h = 104; + e.haabkhasiancyrillic = 1193; + e.haaltonearabic = 1729; + e.habengali = 2489; + e.hadescendercyrillic = 1203; + e.hadeva = 2361; + e.hagujarati = 2745; + e.hagurmukhi = 2617; + e.haharabic = 1581; + e.hahfinalarabic = 65186; + e.hahinitialarabic = 65187; + e.hahiragana = 12399; + e.hahmedialarabic = 65188; + e.haitusquare = 13098; + e.hakatakana = 12495; + e.hakatakanahalfwidth = 65418; + e.halantgurmukhi = 2637; + e.hamzaarabic = 1569; + e.hamzalowarabic = 1569; + e.hangulfiller = 12644; + e.hardsigncyrillic = 1098; + e.harpoonleftbarbup = 8636; + e.harpoonrightbarbup = 8640; + e.hasquare = 13258; + e.hatafpatah = 1458; + e.hatafpatah16 = 1458; + e.hatafpatah23 = 1458; + e.hatafpatah2f = 1458; + e.hatafpatahhebrew = 1458; + e.hatafpatahnarrowhebrew = 1458; + e.hatafpatahquarterhebrew = 1458; + e.hatafpatahwidehebrew = 1458; + e.hatafqamats = 1459; + e.hatafqamats1b = 1459; + e.hatafqamats28 = 1459; + e.hatafqamats34 = 1459; + e.hatafqamatshebrew = 1459; + e.hatafqamatsnarrowhebrew = 1459; + e.hatafqamatsquarterhebrew = 1459; + e.hatafqamatswidehebrew = 1459; + e.hatafsegol = 1457; + e.hatafsegol17 = 1457; + e.hatafsegol24 = 1457; + e.hatafsegol30 = 1457; + e.hatafsegolhebrew = 1457; + e.hatafsegolnarrowhebrew = 1457; + e.hatafsegolquarterhebrew = 1457; + e.hatafsegolwidehebrew = 1457; + e.hbar = 295; + e.hbopomofo = 12559; + e.hbrevebelow = 7723; + e.hcedilla = 7721; + e.hcircle = 9431; + e.hcircumflex = 293; + e.hdieresis = 7719; + e.hdotaccent = 7715; + e.hdotbelow = 7717; + e.he = 1492; + e.heart = 9829; + e.heartsuitblack = 9829; + e.heartsuitwhite = 9825; + e.hedagesh = 64308; + e.hedageshhebrew = 64308; + e.hehaltonearabic = 1729; + e.heharabic = 1607; + e.hehebrew = 1492; + e.hehfinalaltonearabic = 64423; + e.hehfinalalttwoarabic = 65258; + e.hehfinalarabic = 65258; + e.hehhamzaabovefinalarabic = 64421; + e.hehhamzaaboveisolatedarabic = 64420; + e.hehinitialaltonearabic = 64424; + e.hehinitialarabic = 65259; + e.hehiragana = 12408; + e.hehmedialaltonearabic = 64425; + e.hehmedialarabic = 65260; + e.heiseierasquare = 13179; + e.hekatakana = 12504; + e.hekatakanahalfwidth = 65421; + e.hekutaarusquare = 13110; + e.henghook = 615; + e.herutusquare = 13113; + e.het = 1495; + e.hethebrew = 1495; + e.hhook = 614; + e.hhooksuperior = 689; + e.hieuhacirclekorean = 12923; + e.hieuhaparenkorean = 12827; + e.hieuhcirclekorean = 12909; + e.hieuhkorean = 12622; + e.hieuhparenkorean = 12813; + e.hihiragana = 12402; + e.hikatakana = 12498; + e.hikatakanahalfwidth = 65419; + e.hiriq = 1460; + e.hiriq14 = 1460; + e.hiriq21 = 1460; + e.hiriq2d = 1460; + e.hiriqhebrew = 1460; + e.hiriqnarrowhebrew = 1460; + e.hiriqquarterhebrew = 1460; + e.hiriqwidehebrew = 1460; + e.hlinebelow = 7830; + e.hmonospace = 65352; + e.hoarmenian = 1392; + e.hohipthai = 3627; + e.hohiragana = 12411; + e.hokatakana = 12507; + e.hokatakanahalfwidth = 65422; + e.holam = 1465; + e.holam19 = 1465; + e.holam26 = 1465; + e.holam32 = 1465; + e.holamhebrew = 1465; + e.holamnarrowhebrew = 1465; + e.holamquarterhebrew = 1465; + e.holamwidehebrew = 1465; + e.honokhukthai = 3630; + e.hookabovecomb = 777; + e.hookcmb = 777; + e.hookpalatalizedbelowcmb = 801; + e.hookretroflexbelowcmb = 802; + e.hoonsquare = 13122; + e.horicoptic = 1001; + e.horizontalbar = 8213; + e.horncmb = 795; + e.hotsprings = 9832; + e.house = 8962; + e.hparen = 9379; + e.hsuperior = 688; + e.hturned = 613; + e.huhiragana = 12405; + e.huiitosquare = 13107; + e.hukatakana = 12501; + e.hukatakanahalfwidth = 65420; + e.hungarumlaut = 733; + e.hungarumlautcmb = 779; + e.hv = 405; + e.hyphen = 45; + e.hypheninferior = 63205; + e.hyphenmonospace = 65293; + e.hyphensmall = 65123; + e.hyphensuperior = 63206; + e.hyphentwo = 8208; + e.i = 105; + e.iacute = 237; + e.iacyrillic = 1103; + e.ibengali = 2439; + e.ibopomofo = 12583; + e.ibreve = 301; + e.icaron = 464; + e.icircle = 9432; + e.icircumflex = 238; + e.icyrillic = 1110; + e.idblgrave = 521; + e.ideographearthcircle = 12943; + e.ideographfirecircle = 12939; + e.ideographicallianceparen = 12863; + e.ideographiccallparen = 12858; + e.ideographiccentrecircle = 12965; + e.ideographicclose = 12294; + e.ideographiccomma = 12289; + e.ideographiccommaleft = 65380; + e.ideographiccongratulationparen = 12855; + e.ideographiccorrectcircle = 12963; + e.ideographicearthparen = 12847; + e.ideographicenterpriseparen = 12861; + e.ideographicexcellentcircle = 12957; + e.ideographicfestivalparen = 12864; + e.ideographicfinancialcircle = 12950; + e.ideographicfinancialparen = 12854; + e.ideographicfireparen = 12843; + e.ideographichaveparen = 12850; + e.ideographichighcircle = 12964; + e.ideographiciterationmark = 12293; + e.ideographiclaborcircle = 12952; + e.ideographiclaborparen = 12856; + e.ideographicleftcircle = 12967; + e.ideographiclowcircle = 12966; + e.ideographicmedicinecircle = 12969; + e.ideographicmetalparen = 12846; + e.ideographicmoonparen = 12842; + e.ideographicnameparen = 12852; + e.ideographicperiod = 12290; + e.ideographicprintcircle = 12958; + e.ideographicreachparen = 12867; + e.ideographicrepresentparen = 12857; + e.ideographicresourceparen = 12862; + e.ideographicrightcircle = 12968; + e.ideographicsecretcircle = 12953; + e.ideographicselfparen = 12866; + e.ideographicsocietyparen = 12851; + e.ideographicspace = 12288; + e.ideographicspecialparen = 12853; + e.ideographicstockparen = 12849; + e.ideographicstudyparen = 12859; + e.ideographicsunparen = 12848; + e.ideographicsuperviseparen = 12860; + e.ideographicwaterparen = 12844; + e.ideographicwoodparen = 12845; + e.ideographiczero = 12295; + e.ideographmetalcircle = 12942; + e.ideographmooncircle = 12938; + e.ideographnamecircle = 12948; + e.ideographsuncircle = 12944; + e.ideographwatercircle = 12940; + e.ideographwoodcircle = 12941; + e.ideva = 2311; + e.idieresis = 239; + e.idieresisacute = 7727; + e.idieresiscyrillic = 1253; + e.idotbelow = 7883; + e.iebrevecyrillic = 1239; + e.iecyrillic = 1077; + e.ieungacirclekorean = 12917; + e.ieungaparenkorean = 12821; + e.ieungcirclekorean = 12903; + e.ieungkorean = 12615; + e.ieungparenkorean = 12807; + e.igrave = 236; + e.igujarati = 2695; + e.igurmukhi = 2567; + e.ihiragana = 12356; + e.ihookabove = 7881; + e.iibengali = 2440; + e.iicyrillic = 1080; + e.iideva = 2312; + e.iigujarati = 2696; + e.iigurmukhi = 2568; + e.iimatragurmukhi = 2624; + e.iinvertedbreve = 523; + e.iishortcyrillic = 1081; + e.iivowelsignbengali = 2496; + e.iivowelsigndeva = 2368; + e.iivowelsigngujarati = 2752; + e.ij = 307; + e.ikatakana = 12452; + e.ikatakanahalfwidth = 65394; + e.ikorean = 12643; + e.ilde = 732; + e.iluyhebrew = 1452; + e.imacron = 299; + e.imacroncyrillic = 1251; + e.imageorapproximatelyequal = 8787; + e.imatragurmukhi = 2623; + e.imonospace = 65353; + e.increment = 8710; + e.infinity = 8734; + e.iniarmenian = 1387; + e.integral = 8747; + e.integralbottom = 8993; + e.integralbt = 8993; + e.integralex = 63733; + e.integraltop = 8992; + e.integraltp = 8992; + e.intersection = 8745; + e.intisquare = 13061; + e.invbullet = 9688; + e.invcircle = 9689; + e.invsmileface = 9787; + e.iocyrillic = 1105; + e.iogonek = 303; + e.iota = 953; + e.iotadieresis = 970; + e.iotadieresistonos = 912; + e.iotalatin = 617; + e.iotatonos = 943; + e.iparen = 9380; + e.irigurmukhi = 2674; + e.ismallhiragana = 12355; + e.ismallkatakana = 12451; + e.ismallkatakanahalfwidth = 65384; + e.issharbengali = 2554; + e.istroke = 616; + e.isuperior = 63213; + e.iterationhiragana = 12445; + e.iterationkatakana = 12541; + e.itilde = 297; + e.itildebelow = 7725; + e.iubopomofo = 12585; + e.iucyrillic = 1102; + e.ivowelsignbengali = 2495; + e.ivowelsigndeva = 2367; + e.ivowelsigngujarati = 2751; + e.izhitsacyrillic = 1141; + e.izhitsadblgravecyrillic = 1143; + e.j = 106; + e.jaarmenian = 1393; + e.jabengali = 2460; + e.jadeva = 2332; + e.jagujarati = 2716; + e.jagurmukhi = 2588; + e.jbopomofo = 12560; + e.jcaron = 496; + e.jcircle = 9433; + e.jcircumflex = 309; + e.jcrossedtail = 669; + e.jdotlessstroke = 607; + e.jecyrillic = 1112; + e.jeemarabic = 1580; + e.jeemfinalarabic = 65182; + e.jeeminitialarabic = 65183; + e.jeemmedialarabic = 65184; + e.jeharabic = 1688; + e.jehfinalarabic = 64395; + e.jhabengali = 2461; + e.jhadeva = 2333; + e.jhagujarati = 2717; + e.jhagurmukhi = 2589; + e.jheharmenian = 1403; + e.jis = 12292; + e.jmonospace = 65354; + e.jparen = 9381; + e.jsuperior = 690; + e.k = 107; + e.kabashkircyrillic = 1185; + e.kabengali = 2453; + e.kacute = 7729; + e.kacyrillic = 1082; + e.kadescendercyrillic = 1179; + e.kadeva = 2325; + e.kaf = 1499; + e.kafarabic = 1603; + e.kafdagesh = 64315; + e.kafdageshhebrew = 64315; + e.kaffinalarabic = 65242; + e.kafhebrew = 1499; + e.kafinitialarabic = 65243; + e.kafmedialarabic = 65244; + e.kafrafehebrew = 64333; + e.kagujarati = 2709; + e.kagurmukhi = 2581; + e.kahiragana = 12363; + e.kahookcyrillic = 1220; + e.kakatakana = 12459; + e.kakatakanahalfwidth = 65398; + e.kappa = 954; + e.kappasymbolgreek = 1008; + e.kapyeounmieumkorean = 12657; + e.kapyeounphieuphkorean = 12676; + e.kapyeounpieupkorean = 12664; + e.kapyeounssangpieupkorean = 12665; + e.karoriisquare = 13069; + e.kashidaautoarabic = 1600; + e.kashidaautonosidebearingarabic = 1600; + e.kasmallkatakana = 12533; + e.kasquare = 13188; + e.kasraarabic = 1616; + e.kasratanarabic = 1613; + e.kastrokecyrillic = 1183; + e.katahiraprolongmarkhalfwidth = 65392; + e.kaverticalstrokecyrillic = 1181; + e.kbopomofo = 12558; + e.kcalsquare = 13193; + e.kcaron = 489; + e.kcedilla = 311; + e.kcircle = 9434; + e.kcommaaccent = 311; + e.kdotbelow = 7731; + e.keharmenian = 1412; + e.kehiragana = 12369; + e.kekatakana = 12465; + e.kekatakanahalfwidth = 65401; + e.kenarmenian = 1391; + e.kesmallkatakana = 12534; + e.kgreenlandic = 312; + e.khabengali = 2454; + e.khacyrillic = 1093; + e.khadeva = 2326; + e.khagujarati = 2710; + e.khagurmukhi = 2582; + e.khaharabic = 1582; + e.khahfinalarabic = 65190; + e.khahinitialarabic = 65191; + e.khahmedialarabic = 65192; + e.kheicoptic = 999; + e.khhadeva = 2393; + e.khhagurmukhi = 2649; + e.khieukhacirclekorean = 12920; + e.khieukhaparenkorean = 12824; + e.khieukhcirclekorean = 12906; + e.khieukhkorean = 12619; + e.khieukhparenkorean = 12810; + e.khokhaithai = 3586; + e.khokhonthai = 3589; + e.khokhuatthai = 3587; + e.khokhwaithai = 3588; + e.khomutthai = 3675; + e.khook = 409; + e.khorakhangthai = 3590; + e.khzsquare = 13201; + e.kihiragana = 12365; + e.kikatakana = 12461; + e.kikatakanahalfwidth = 65399; + e.kiroguramusquare = 13077; + e.kiromeetorusquare = 13078; + e.kirosquare = 13076; + e.kiyeokacirclekorean = 12910; + e.kiyeokaparenkorean = 12814; + e.kiyeokcirclekorean = 12896; + e.kiyeokkorean = 12593; + e.kiyeokparenkorean = 12800; + e.kiyeoksioskorean = 12595; + e.kjecyrillic = 1116; + e.klinebelow = 7733; + e.klsquare = 13208; + e.kmcubedsquare = 13222; + e.kmonospace = 65355; + e.kmsquaredsquare = 13218; + e.kohiragana = 12371; + e.kohmsquare = 13248; + e.kokaithai = 3585; + e.kokatakana = 12467; + e.kokatakanahalfwidth = 65402; + e.kooposquare = 13086; + e.koppacyrillic = 1153; + e.koreanstandardsymbol = 12927; + e.koroniscmb = 835; + e.kparen = 9382; + e.kpasquare = 13226; + e.ksicyrillic = 1135; + e.ktsquare = 13263; + e.kturned = 670; + e.kuhiragana = 12367; + e.kukatakana = 12463; + e.kukatakanahalfwidth = 65400; + e.kvsquare = 13240; + e.kwsquare = 13246; + e.l = 108; + e.labengali = 2482; + e.lacute = 314; + e.ladeva = 2354; + e.lagujarati = 2738; + e.lagurmukhi = 2610; + e.lakkhangyaothai = 3653; + e.lamaleffinalarabic = 65276; + e.lamalefhamzaabovefinalarabic = 65272; + e.lamalefhamzaaboveisolatedarabic = 65271; + e.lamalefhamzabelowfinalarabic = 65274; + e.lamalefhamzabelowisolatedarabic = 65273; + e.lamalefisolatedarabic = 65275; + e.lamalefmaddaabovefinalarabic = 65270; + e.lamalefmaddaaboveisolatedarabic = 65269; + e.lamarabic = 1604; + e.lambda = 955; + e.lambdastroke = 411; + e.lamed = 1500; + e.lameddagesh = 64316; + e.lameddageshhebrew = 64316; + e.lamedhebrew = 1500; + e.lamfinalarabic = 65246; + e.lamhahinitialarabic = 64714; + e.laminitialarabic = 65247; + e.lamjeeminitialarabic = 64713; + e.lamkhahinitialarabic = 64715; + e.lamlamhehisolatedarabic = 65010; + e.lammedialarabic = 65248; + e.lammeemhahinitialarabic = 64904; + e.lammeeminitialarabic = 64716; + e.largecircle = 9711; + e.lbar = 410; + e.lbelt = 620; + e.lbopomofo = 12556; + e.lcaron = 318; + e.lcedilla = 316; + e.lcircle = 9435; + e.lcircumflexbelow = 7741; + e.lcommaaccent = 316; + e.ldot = 320; + e.ldotaccent = 320; + e.ldotbelow = 7735; + e.ldotbelowmacron = 7737; + e.leftangleabovecmb = 794; + e.lefttackbelowcmb = 792; + e.less = 60; + e.lessequal = 8804; + e.lessequalorgreater = 8922; + e.lessmonospace = 65308; + e.lessorequivalent = 8818; + e.lessorgreater = 8822; + e.lessoverequal = 8806; + e.lesssmall = 65124; + e.lezh = 622; + e.lfblock = 9612; + e.lhookretroflex = 621; + e.lira = 8356; + e.liwnarmenian = 1388; + e.lj = 457; + e.ljecyrillic = 1113; + e.ll = 63168; + e.lladeva = 2355; + e.llagujarati = 2739; + e.llinebelow = 7739; + e.llladeva = 2356; + e.llvocalicbengali = 2529; + e.llvocalicdeva = 2401; + e.llvocalicvowelsignbengali = 2531; + e.llvocalicvowelsigndeva = 2403; + e.lmiddletilde = 619; + e.lmonospace = 65356; + e.lmsquare = 13264; + e.lochulathai = 3628; + e.logicaland = 8743; + e.logicalnot = 172; + e.logicalnotreversed = 8976; + e.logicalor = 8744; + e.lolingthai = 3621; + e.longs = 383; + e.lowlinecenterline = 65102; + e.lowlinecmb = 818; + e.lowlinedashed = 65101; + e.lozenge = 9674; + e.lparen = 9383; + e.lslash = 322; + e.lsquare = 8467; + e.lsuperior = 63214; + e.ltshade = 9617; + e.luthai = 3622; + e.lvocalicbengali = 2444; + e.lvocalicdeva = 2316; + e.lvocalicvowelsignbengali = 2530; + e.lvocalicvowelsigndeva = 2402; + e.lxsquare = 13267; + e.m = 109; + e.mabengali = 2478; + e.macron = 175; + e.macronbelowcmb = 817; + e.macroncmb = 772; + e.macronlowmod = 717; + e.macronmonospace = 65507; + e.macute = 7743; + e.madeva = 2350; + e.magujarati = 2734; + e.magurmukhi = 2606; + e.mahapakhhebrew = 1444; + e.mahapakhlefthebrew = 1444; + e.mahiragana = 12414; + e.maichattawalowleftthai = 63637; + e.maichattawalowrightthai = 63636; + e.maichattawathai = 3659; + e.maichattawaupperleftthai = 63635; + e.maieklowleftthai = 63628; + e.maieklowrightthai = 63627; + e.maiekthai = 3656; + e.maiekupperleftthai = 63626; + e.maihanakatleftthai = 63620; + e.maihanakatthai = 3633; + e.maitaikhuleftthai = 63625; + e.maitaikhuthai = 3655; + e.maitholowleftthai = 63631; + e.maitholowrightthai = 63630; + e.maithothai = 3657; + e.maithoupperleftthai = 63629; + e.maitrilowleftthai = 63634; + e.maitrilowrightthai = 63633; + e.maitrithai = 3658; + e.maitriupperleftthai = 63632; + e.maiyamokthai = 3654; + e.makatakana = 12510; + e.makatakanahalfwidth = 65423; + e.male = 9794; + e.mansyonsquare = 13127; + e.maqafhebrew = 1470; + e.mars = 9794; + e.masoracirclehebrew = 1455; + e.masquare = 13187; + e.mbopomofo = 12551; + e.mbsquare = 13268; + e.mcircle = 9436; + e.mcubedsquare = 13221; + e.mdotaccent = 7745; + e.mdotbelow = 7747; + e.meemarabic = 1605; + e.meemfinalarabic = 65250; + e.meeminitialarabic = 65251; + e.meemmedialarabic = 65252; + e.meemmeeminitialarabic = 64721; + e.meemmeemisolatedarabic = 64584; + e.meetorusquare = 13133; + e.mehiragana = 12417; + e.meizierasquare = 13182; + e.mekatakana = 12513; + e.mekatakanahalfwidth = 65426; + e.mem = 1502; + e.memdagesh = 64318; + e.memdageshhebrew = 64318; + e.memhebrew = 1502; + e.menarmenian = 1396; + e.merkhahebrew = 1445; + e.merkhakefulahebrew = 1446; + e.merkhakefulalefthebrew = 1446; + e.merkhalefthebrew = 1445; + e.mhook = 625; + e.mhzsquare = 13202; + e.middledotkatakanahalfwidth = 65381; + e.middot = 183; + e.mieumacirclekorean = 12914; + e.mieumaparenkorean = 12818; + e.mieumcirclekorean = 12900; + e.mieumkorean = 12609; + e.mieumpansioskorean = 12656; + e.mieumparenkorean = 12804; + e.mieumpieupkorean = 12654; + e.mieumsioskorean = 12655; + e.mihiragana = 12415; + e.mikatakana = 12511; + e.mikatakanahalfwidth = 65424; + e.minus = 8722; + e.minusbelowcmb = 800; + e.minuscircle = 8854; + e.minusmod = 727; + e.minusplus = 8723; + e.minute = 8242; + e.miribaarusquare = 13130; + e.mirisquare = 13129; + e.mlonglegturned = 624; + e.mlsquare = 13206; + e.mmcubedsquare = 13219; + e.mmonospace = 65357; + e.mmsquaredsquare = 13215; + e.mohiragana = 12418; + e.mohmsquare = 13249; + e.mokatakana = 12514; + e.mokatakanahalfwidth = 65427; + e.molsquare = 13270; + e.momathai = 3617; + e.moverssquare = 13223; + e.moverssquaredsquare = 13224; + e.mparen = 9384; + e.mpasquare = 13227; + e.mssquare = 13235; + e.msuperior = 63215; + e.mturned = 623; + e.mu = 181; + e.mu1 = 181; + e.muasquare = 13186; + e.muchgreater = 8811; + e.muchless = 8810; + e.mufsquare = 13196; + e.mugreek = 956; + e.mugsquare = 13197; + e.muhiragana = 12416; + e.mukatakana = 12512; + e.mukatakanahalfwidth = 65425; + e.mulsquare = 13205; + e.multiply = 215; + e.mumsquare = 13211; + e.munahhebrew = 1443; + e.munahlefthebrew = 1443; + e.musicalnote = 9834; + e.musicalnotedbl = 9835; + e.musicflatsign = 9837; + e.musicsharpsign = 9839; + e.mussquare = 13234; + e.muvsquare = 13238; + e.muwsquare = 13244; + e.mvmegasquare = 13241; + e.mvsquare = 13239; + e.mwmegasquare = 13247; + e.mwsquare = 13245; + e.n = 110; + e.nabengali = 2472; + e.nabla = 8711; + e.nacute = 324; + e.nadeva = 2344; + e.nagujarati = 2728; + e.nagurmukhi = 2600; + e.nahiragana = 12394; + e.nakatakana = 12490; + e.nakatakanahalfwidth = 65413; + e.napostrophe = 329; + e.nasquare = 13185; + e.nbopomofo = 12555; + e.nbspace = 160; + e.ncaron = 328; + e.ncedilla = 326; + e.ncircle = 9437; + e.ncircumflexbelow = 7755; + e.ncommaaccent = 326; + e.ndotaccent = 7749; + e.ndotbelow = 7751; + e.nehiragana = 12397; + e.nekatakana = 12493; + e.nekatakanahalfwidth = 65416; + e.newsheqelsign = 8362; + e.nfsquare = 13195; + e.ngabengali = 2457; + e.ngadeva = 2329; + e.ngagujarati = 2713; + e.ngagurmukhi = 2585; + e.ngonguthai = 3591; + e.nhiragana = 12435; + e.nhookleft = 626; + e.nhookretroflex = 627; + e.nieunacirclekorean = 12911; + e.nieunaparenkorean = 12815; + e.nieuncieuckorean = 12597; + e.nieuncirclekorean = 12897; + e.nieunhieuhkorean = 12598; + e.nieunkorean = 12596; + e.nieunpansioskorean = 12648; + e.nieunparenkorean = 12801; + e.nieunsioskorean = 12647; + e.nieuntikeutkorean = 12646; + e.nihiragana = 12395; + e.nikatakana = 12491; + e.nikatakanahalfwidth = 65414; + e.nikhahitleftthai = 63641; + e.nikhahitthai = 3661; + e.nine = 57; + e.ninearabic = 1641; + e.ninebengali = 2543; + e.ninecircle = 9320; + e.ninecircleinversesansserif = 10130; + e.ninedeva = 2415; + e.ninegujarati = 2799; + e.ninegurmukhi = 2671; + e.ninehackarabic = 1641; + e.ninehangzhou = 12329; + e.nineideographicparen = 12840; + e.nineinferior = 8329; + e.ninemonospace = 65305; + e.nineoldstyle = 63289; + e.nineparen = 9340; + e.nineperiod = 9360; + e.ninepersian = 1785; + e.nineroman = 8568; + e.ninesuperior = 8313; + e.nineteencircle = 9330; + e.nineteenparen = 9350; + e.nineteenperiod = 9370; + e.ninethai = 3673; + e.nj = 460; + e.njecyrillic = 1114; + e.nkatakana = 12531; + e.nkatakanahalfwidth = 65437; + e.nlegrightlong = 414; + e.nlinebelow = 7753; + e.nmonospace = 65358; + e.nmsquare = 13210; + e.nnabengali = 2467; + e.nnadeva = 2339; + e.nnagujarati = 2723; + e.nnagurmukhi = 2595; + e.nnnadeva = 2345; + e.nohiragana = 12398; + e.nokatakana = 12494; + e.nokatakanahalfwidth = 65417; + e.nonbreakingspace = 160; + e.nonenthai = 3603; + e.nonuthai = 3609; + e.noonarabic = 1606; + e.noonfinalarabic = 65254; + e.noonghunnaarabic = 1722; + e.noonghunnafinalarabic = 64415; + e.nooninitialarabic = 65255; + e.noonjeeminitialarabic = 64722; + e.noonjeemisolatedarabic = 64587; + e.noonmedialarabic = 65256; + e.noonmeeminitialarabic = 64725; + e.noonmeemisolatedarabic = 64590; + e.noonnoonfinalarabic = 64653; + e.notcontains = 8716; + e.notelement = 8713; + e.notelementof = 8713; + e.notequal = 8800; + e.notgreater = 8815; + e.notgreaternorequal = 8817; + e.notgreaternorless = 8825; + e.notidentical = 8802; + e.notless = 8814; + e.notlessnorequal = 8816; + e.notparallel = 8742; + e.notprecedes = 8832; + e.notsubset = 8836; + e.notsucceeds = 8833; + e.notsuperset = 8837; + e.nowarmenian = 1398; + e.nparen = 9385; + e.nssquare = 13233; + e.nsuperior = 8319; + e.ntilde = 241; + e.nu = 957; + e.nuhiragana = 12396; + e.nukatakana = 12492; + e.nukatakanahalfwidth = 65415; + e.nuktabengali = 2492; + e.nuktadeva = 2364; + e.nuktagujarati = 2748; + e.nuktagurmukhi = 2620; + e.numbersign = 35; + e.numbersignmonospace = 65283; + e.numbersignsmall = 65119; + e.numeralsigngreek = 884; + e.numeralsignlowergreek = 885; + e.numero = 8470; + e.nun = 1504; + e.nundagesh = 64320; + e.nundageshhebrew = 64320; + e.nunhebrew = 1504; + e.nvsquare = 13237; + e.nwsquare = 13243; + e.nyabengali = 2462; + e.nyadeva = 2334; + e.nyagujarati = 2718; + e.nyagurmukhi = 2590; + e.o = 111; + e.oacute = 243; + e.oangthai = 3629; + e.obarred = 629; + e.obarredcyrillic = 1257; + e.obarreddieresiscyrillic = 1259; + e.obengali = 2451; + e.obopomofo = 12571; + e.obreve = 335; + e.ocandradeva = 2321; + e.ocandragujarati = 2705; + e.ocandravowelsigndeva = 2377; + e.ocandravowelsigngujarati = 2761; + e.ocaron = 466; + e.ocircle = 9438; + e.ocircumflex = 244; + e.ocircumflexacute = 7889; + e.ocircumflexdotbelow = 7897; + e.ocircumflexgrave = 7891; + e.ocircumflexhookabove = 7893; + e.ocircumflextilde = 7895; + e.ocyrillic = 1086; + e.odblacute = 337; + e.odblgrave = 525; + e.odeva = 2323; + e.odieresis = 246; + e.odieresiscyrillic = 1255; + e.odotbelow = 7885; + e.oe = 339; + e.oekorean = 12634; + e.ogonek = 731; + e.ogonekcmb = 808; + e.ograve = 242; + e.ogujarati = 2707; + e.oharmenian = 1413; + e.ohiragana = 12362; + e.ohookabove = 7887; + e.ohorn = 417; + e.ohornacute = 7899; + e.ohorndotbelow = 7907; + e.ohorngrave = 7901; + e.ohornhookabove = 7903; + e.ohorntilde = 7905; + e.ohungarumlaut = 337; + e.oi = 419; + e.oinvertedbreve = 527; + e.okatakana = 12458; + e.okatakanahalfwidth = 65397; + e.okorean = 12631; + e.olehebrew = 1451; + e.omacron = 333; + e.omacronacute = 7763; + e.omacrongrave = 7761; + e.omdeva = 2384; + e.omega = 969; + e.omega1 = 982; + e.omegacyrillic = 1121; + e.omegalatinclosed = 631; + e.omegaroundcyrillic = 1147; + e.omegatitlocyrillic = 1149; + e.omegatonos = 974; + e.omgujarati = 2768; + e.omicron = 959; + e.omicrontonos = 972; + e.omonospace = 65359; + e.one = 49; + e.onearabic = 1633; + e.onebengali = 2535; + e.onecircle = 9312; + e.onecircleinversesansserif = 10122; + e.onedeva = 2407; + e.onedotenleader = 8228; + e.oneeighth = 8539; + e.onefitted = 63196; + e.onegujarati = 2791; + e.onegurmukhi = 2663; + e.onehackarabic = 1633; + e.onehalf = 189; + e.onehangzhou = 12321; + e.oneideographicparen = 12832; + e.oneinferior = 8321; + e.onemonospace = 65297; + e.onenumeratorbengali = 2548; + e.oneoldstyle = 63281; + e.oneparen = 9332; + e.oneperiod = 9352; + e.onepersian = 1777; + e.onequarter = 188; + e.oneroman = 8560; + e.onesuperior = 185; + e.onethai = 3665; + e.onethird = 8531; + e.oogonek = 491; + e.oogonekmacron = 493; + e.oogurmukhi = 2579; + e.oomatragurmukhi = 2635; + e.oopen = 596; + e.oparen = 9386; + e.openbullet = 9702; + e.option = 8997; + e.ordfeminine = 170; + e.ordmasculine = 186; + e.orthogonal = 8735; + e.oshortdeva = 2322; + e.oshortvowelsigndeva = 2378; + e.oslash = 248; + e.oslashacute = 511; + e.osmallhiragana = 12361; + e.osmallkatakana = 12457; + e.osmallkatakanahalfwidth = 65387; + e.ostrokeacute = 511; + e.osuperior = 63216; + e.otcyrillic = 1151; + e.otilde = 245; + e.otildeacute = 7757; + e.otildedieresis = 7759; + e.oubopomofo = 12577; + e.overline = 8254; + e.overlinecenterline = 65098; + e.overlinecmb = 773; + e.overlinedashed = 65097; + e.overlinedblwavy = 65100; + e.overlinewavy = 65099; + e.overscore = 175; + e.ovowelsignbengali = 2507; + e.ovowelsigndeva = 2379; + e.ovowelsigngujarati = 2763; + e.p = 112; + e.paampssquare = 13184; + e.paasentosquare = 13099; + e.pabengali = 2474; + e.pacute = 7765; + e.padeva = 2346; + e.pagedown = 8671; + e.pageup = 8670; + e.pagujarati = 2730; + e.pagurmukhi = 2602; + e.pahiragana = 12401; + e.paiyannoithai = 3631; + e.pakatakana = 12497; + e.palatalizationcyrilliccmb = 1156; + e.palochkacyrillic = 1216; + e.pansioskorean = 12671; + e.paragraph = 182; + e.parallel = 8741; + e.parenleft = 40; + e.parenleftaltonearabic = 64830; + e.parenleftbt = 63725; + e.parenleftex = 63724; + e.parenleftinferior = 8333; + e.parenleftmonospace = 65288; + e.parenleftsmall = 65113; + e.parenleftsuperior = 8317; + e.parenlefttp = 63723; + e.parenleftvertical = 65077; + e.parenright = 41; + e.parenrightaltonearabic = 64831; + e.parenrightbt = 63736; + e.parenrightex = 63735; + e.parenrightinferior = 8334; + e.parenrightmonospace = 65289; + e.parenrightsmall = 65114; + e.parenrightsuperior = 8318; + e.parenrighttp = 63734; + e.parenrightvertical = 65078; + e.partialdiff = 8706; + e.paseqhebrew = 1472; + e.pashtahebrew = 1433; + e.pasquare = 13225; + e.patah = 1463; + e.patah11 = 1463; + e.patah1d = 1463; + e.patah2a = 1463; + e.patahhebrew = 1463; + e.patahnarrowhebrew = 1463; + e.patahquarterhebrew = 1463; + e.patahwidehebrew = 1463; + e.pazerhebrew = 1441; + e.pbopomofo = 12550; + e.pcircle = 9439; + e.pdotaccent = 7767; + e.pe = 1508; + e.pecyrillic = 1087; + e.pedagesh = 64324; + e.pedageshhebrew = 64324; + e.peezisquare = 13115; + e.pefinaldageshhebrew = 64323; + e.peharabic = 1662; + e.peharmenian = 1402; + e.pehebrew = 1508; + e.pehfinalarabic = 64343; + e.pehinitialarabic = 64344; + e.pehiragana = 12410; + e.pehmedialarabic = 64345; + e.pekatakana = 12506; + e.pemiddlehookcyrillic = 1191; + e.perafehebrew = 64334; + e.percent = 37; + e.percentarabic = 1642; + e.percentmonospace = 65285; + e.percentsmall = 65130; + e.period = 46; + e.periodarmenian = 1417; + e.periodcentered = 183; + e.periodhalfwidth = 65377; + e.periodinferior = 63207; + e.periodmonospace = 65294; + e.periodsmall = 65106; + e.periodsuperior = 63208; + e.perispomenigreekcmb = 834; + e.perpendicular = 8869; + e.perthousand = 8240; + e.peseta = 8359; + e.pfsquare = 13194; + e.phabengali = 2475; + e.phadeva = 2347; + e.phagujarati = 2731; + e.phagurmukhi = 2603; + e.phi = 966; + e.phi1 = 981; + e.phieuphacirclekorean = 12922; + e.phieuphaparenkorean = 12826; + e.phieuphcirclekorean = 12908; + e.phieuphkorean = 12621; + e.phieuphparenkorean = 12812; + e.philatin = 632; + e.phinthuthai = 3642; + e.phisymbolgreek = 981; + e.phook = 421; + e.phophanthai = 3614; + e.phophungthai = 3612; + e.phosamphaothai = 3616; + e.pi = 960; + e.pieupacirclekorean = 12915; + e.pieupaparenkorean = 12819; + e.pieupcieuckorean = 12662; + e.pieupcirclekorean = 12901; + e.pieupkiyeokkorean = 12658; + e.pieupkorean = 12610; + e.pieupparenkorean = 12805; + e.pieupsioskiyeokkorean = 12660; + e.pieupsioskorean = 12612; + e.pieupsiostikeutkorean = 12661; + e.pieupthieuthkorean = 12663; + e.pieuptikeutkorean = 12659; + e.pihiragana = 12404; + e.pikatakana = 12500; + e.pisymbolgreek = 982; + e.piwrarmenian = 1411; + e.planckover2pi = 8463; + e.planckover2pi1 = 8463; + e.plus = 43; + e.plusbelowcmb = 799; + e.pluscircle = 8853; + e.plusminus = 177; + e.plusmod = 726; + e.plusmonospace = 65291; + e.plussmall = 65122; + e.plussuperior = 8314; + e.pmonospace = 65360; + e.pmsquare = 13272; + e.pohiragana = 12413; + e.pointingindexdownwhite = 9759; + e.pointingindexleftwhite = 9756; + e.pointingindexrightwhite = 9758; + e.pointingindexupwhite = 9757; + e.pokatakana = 12509; + e.poplathai = 3611; + e.postalmark = 12306; + e.postalmarkface = 12320; + e.pparen = 9387; + e.precedes = 8826; + e.prescription = 8478; + e.primemod = 697; + e.primereversed = 8245; + e.product = 8719; + e.projective = 8965; + e.prolongedkana = 12540; + e.propellor = 8984; + e.propersubset = 8834; + e.propersuperset = 8835; + e.proportion = 8759; + e.proportional = 8733; + e.psi = 968; + e.psicyrillic = 1137; + e.psilipneumatacyrilliccmb = 1158; + e.pssquare = 13232; + e.puhiragana = 12407; + e.pukatakana = 12503; + e.pvsquare = 13236; + e.pwsquare = 13242; + e.q = 113; + e.qadeva = 2392; + e.qadmahebrew = 1448; + e.qafarabic = 1602; + e.qaffinalarabic = 65238; + e.qafinitialarabic = 65239; + e.qafmedialarabic = 65240; + e.qamats = 1464; + e.qamats10 = 1464; + e.qamats1a = 1464; + e.qamats1c = 1464; + e.qamats27 = 1464; + e.qamats29 = 1464; + e.qamats33 = 1464; + e.qamatsde = 1464; + e.qamatshebrew = 1464; + e.qamatsnarrowhebrew = 1464; + e.qamatsqatanhebrew = 1464; + e.qamatsqatannarrowhebrew = 1464; + e.qamatsqatanquarterhebrew = 1464; + e.qamatsqatanwidehebrew = 1464; + e.qamatsquarterhebrew = 1464; + e.qamatswidehebrew = 1464; + e.qarneyparahebrew = 1439; + e.qbopomofo = 12561; + e.qcircle = 9440; + e.qhook = 672; + e.qmonospace = 65361; + e.qof = 1511; + e.qofdagesh = 64327; + e.qofdageshhebrew = 64327; + e.qofhebrew = 1511; + e.qparen = 9388; + e.quarternote = 9833; + e.qubuts = 1467; + e.qubuts18 = 1467; + e.qubuts25 = 1467; + e.qubuts31 = 1467; + e.qubutshebrew = 1467; + e.qubutsnarrowhebrew = 1467; + e.qubutsquarterhebrew = 1467; + e.qubutswidehebrew = 1467; + e.question = 63; + e.questionarabic = 1567; + e.questionarmenian = 1374; + e.questiondown = 191; + e.questiondownsmall = 63423; + e.questiongreek = 894; + e.questionmonospace = 65311; + e.questionsmall = 63295; + e.quotedbl = 34; + e.quotedblbase = 8222; + e.quotedblleft = 8220; + e.quotedblmonospace = 65282; + e.quotedblprime = 12318; + e.quotedblprimereversed = 12317; + e.quotedblright = 8221; + e.quoteleft = 8216; + e.quoteleftreversed = 8219; + e.quotereversed = 8219; + e.quoteright = 8217; + e.quoterightn = 329; + e.quotesinglbase = 8218; + e.quotesingle = 39; + e.quotesinglemonospace = 65287; + e.r = 114; + e.raarmenian = 1404; + e.rabengali = 2480; + e.racute = 341; + e.radeva = 2352; + e.radical = 8730; + e.radicalex = 63717; + e.radoverssquare = 13230; + e.radoverssquaredsquare = 13231; + e.radsquare = 13229; + e.rafe = 1471; + e.rafehebrew = 1471; + e.ragujarati = 2736; + e.ragurmukhi = 2608; + e.rahiragana = 12425; + e.rakatakana = 12521; + e.rakatakanahalfwidth = 65431; + e.ralowerdiagonalbengali = 2545; + e.ramiddlediagonalbengali = 2544; + e.ramshorn = 612; + e.ratio = 8758; + e.rbopomofo = 12566; + e.rcaron = 345; + e.rcedilla = 343; + e.rcircle = 9441; + e.rcommaaccent = 343; + e.rdblgrave = 529; + e.rdotaccent = 7769; + e.rdotbelow = 7771; + e.rdotbelowmacron = 7773; + e.referencemark = 8251; + e.reflexsubset = 8838; + e.reflexsuperset = 8839; + e.registered = 174; + e.registersans = 63720; + e.registerserif = 63194; + e.reharabic = 1585; + e.reharmenian = 1408; + e.rehfinalarabic = 65198; + e.rehiragana = 12428; + e.rekatakana = 12524; + e.rekatakanahalfwidth = 65434; + e.resh = 1512; + e.reshdageshhebrew = 64328; + e.reshhebrew = 1512; + e.reversedtilde = 8765; + e.reviahebrew = 1431; + e.reviamugrashhebrew = 1431; + e.revlogicalnot = 8976; + e.rfishhook = 638; + e.rfishhookreversed = 639; + e.rhabengali = 2525; + e.rhadeva = 2397; + e.rho = 961; + e.rhook = 637; + e.rhookturned = 635; + e.rhookturnedsuperior = 693; + e.rhosymbolgreek = 1009; + e.rhotichookmod = 734; + e.rieulacirclekorean = 12913; + e.rieulaparenkorean = 12817; + e.rieulcirclekorean = 12899; + e.rieulhieuhkorean = 12608; + e.rieulkiyeokkorean = 12602; + e.rieulkiyeoksioskorean = 12649; + e.rieulkorean = 12601; + e.rieulmieumkorean = 12603; + e.rieulpansioskorean = 12652; + e.rieulparenkorean = 12803; + e.rieulphieuphkorean = 12607; + e.rieulpieupkorean = 12604; + e.rieulpieupsioskorean = 12651; + e.rieulsioskorean = 12605; + e.rieulthieuthkorean = 12606; + e.rieultikeutkorean = 12650; + e.rieulyeorinhieuhkorean = 12653; + e.rightangle = 8735; + e.righttackbelowcmb = 793; + e.righttriangle = 8895; + e.rihiragana = 12426; + e.rikatakana = 12522; + e.rikatakanahalfwidth = 65432; + e.ring = 730; + e.ringbelowcmb = 805; + e.ringcmb = 778; + e.ringhalfleft = 703; + e.ringhalfleftarmenian = 1369; + e.ringhalfleftbelowcmb = 796; + e.ringhalfleftcentered = 723; + e.ringhalfright = 702; + e.ringhalfrightbelowcmb = 825; + e.ringhalfrightcentered = 722; + e.rinvertedbreve = 531; + e.rittorusquare = 13137; + e.rlinebelow = 7775; + e.rlongleg = 636; + e.rlonglegturned = 634; + e.rmonospace = 65362; + e.rohiragana = 12429; + e.rokatakana = 12525; + e.rokatakanahalfwidth = 65435; + e.roruathai = 3619; + e.rparen = 9389; + e.rrabengali = 2524; + e.rradeva = 2353; + e.rragurmukhi = 2652; + e.rreharabic = 1681; + e.rrehfinalarabic = 64397; + e.rrvocalicbengali = 2528; + e.rrvocalicdeva = 2400; + e.rrvocalicgujarati = 2784; + e.rrvocalicvowelsignbengali = 2500; + e.rrvocalicvowelsigndeva = 2372; + e.rrvocalicvowelsigngujarati = 2756; + e.rsuperior = 63217; + e.rtblock = 9616; + e.rturned = 633; + e.rturnedsuperior = 692; + e.ruhiragana = 12427; + e.rukatakana = 12523; + e.rukatakanahalfwidth = 65433; + e.rupeemarkbengali = 2546; + e.rupeesignbengali = 2547; + e.rupiah = 63197; + e.ruthai = 3620; + e.rvocalicbengali = 2443; + e.rvocalicdeva = 2315; + e.rvocalicgujarati = 2699; + e.rvocalicvowelsignbengali = 2499; + e.rvocalicvowelsigndeva = 2371; + e.rvocalicvowelsigngujarati = 2755; + e.s = 115; + e.sabengali = 2488; + e.sacute = 347; + e.sacutedotaccent = 7781; + e.sadarabic = 1589; + e.sadeva = 2360; + e.sadfinalarabic = 65210; + e.sadinitialarabic = 65211; + e.sadmedialarabic = 65212; + e.sagujarati = 2744; + e.sagurmukhi = 2616; + e.sahiragana = 12373; + e.sakatakana = 12469; + e.sakatakanahalfwidth = 65403; + e.sallallahoualayhewasallamarabic = 65018; + e.samekh = 1505; + e.samekhdagesh = 64321; + e.samekhdageshhebrew = 64321; + e.samekhhebrew = 1505; + e.saraaathai = 3634; + e.saraaethai = 3649; + e.saraaimaimalaithai = 3652; + e.saraaimaimuanthai = 3651; + e.saraamthai = 3635; + e.saraathai = 3632; + e.saraethai = 3648; + e.saraiileftthai = 63622; + e.saraiithai = 3637; + e.saraileftthai = 63621; + e.saraithai = 3636; + e.saraothai = 3650; + e.saraueeleftthai = 63624; + e.saraueethai = 3639; + e.saraueleftthai = 63623; + e.sarauethai = 3638; + e.sarauthai = 3640; + e.sarauuthai = 3641; + e.sbopomofo = 12569; + e.scaron = 353; + e.scarondotaccent = 7783; + e.scedilla = 351; + e.schwa = 601; + e.schwacyrillic = 1241; + e.schwadieresiscyrillic = 1243; + e.schwahook = 602; + e.scircle = 9442; + e.scircumflex = 349; + e.scommaaccent = 537; + e.sdotaccent = 7777; + e.sdotbelow = 7779; + e.sdotbelowdotaccent = 7785; + e.seagullbelowcmb = 828; + e.second = 8243; + e.secondtonechinese = 714; + e.section = 167; + e.seenarabic = 1587; + e.seenfinalarabic = 65202; + e.seeninitialarabic = 65203; + e.seenmedialarabic = 65204; + e.segol = 1462; + e.segol13 = 1462; + e.segol1f = 1462; + e.segol2c = 1462; + e.segolhebrew = 1462; + e.segolnarrowhebrew = 1462; + e.segolquarterhebrew = 1462; + e.segoltahebrew = 1426; + e.segolwidehebrew = 1462; + e.seharmenian = 1405; + e.sehiragana = 12379; + e.sekatakana = 12475; + e.sekatakanahalfwidth = 65406; + e.semicolon = 59; + e.semicolonarabic = 1563; + e.semicolonmonospace = 65307; + e.semicolonsmall = 65108; + e.semivoicedmarkkana = 12444; + e.semivoicedmarkkanahalfwidth = 65439; + e.sentisquare = 13090; + e.sentosquare = 13091; + e.seven = 55; + e.sevenarabic = 1639; + e.sevenbengali = 2541; + e.sevencircle = 9318; + e.sevencircleinversesansserif = 10128; + e.sevendeva = 2413; + e.seveneighths = 8542; + e.sevengujarati = 2797; + e.sevengurmukhi = 2669; + e.sevenhackarabic = 1639; + e.sevenhangzhou = 12327; + e.sevenideographicparen = 12838; + e.seveninferior = 8327; + e.sevenmonospace = 65303; + e.sevenoldstyle = 63287; + e.sevenparen = 9338; + e.sevenperiod = 9358; + e.sevenpersian = 1783; + e.sevenroman = 8566; + e.sevensuperior = 8311; + e.seventeencircle = 9328; + e.seventeenparen = 9348; + e.seventeenperiod = 9368; + e.seventhai = 3671; + e.sfthyphen = 173; + e.shaarmenian = 1399; + e.shabengali = 2486; + e.shacyrillic = 1096; + e.shaddaarabic = 1617; + e.shaddadammaarabic = 64609; + e.shaddadammatanarabic = 64606; + e.shaddafathaarabic = 64608; + e.shaddakasraarabic = 64610; + e.shaddakasratanarabic = 64607; + e.shade = 9618; + e.shadedark = 9619; + e.shadelight = 9617; + e.shademedium = 9618; + e.shadeva = 2358; + e.shagujarati = 2742; + e.shagurmukhi = 2614; + e.shalshelethebrew = 1427; + e.shbopomofo = 12565; + e.shchacyrillic = 1097; + e.sheenarabic = 1588; + e.sheenfinalarabic = 65206; + e.sheeninitialarabic = 65207; + e.sheenmedialarabic = 65208; + e.sheicoptic = 995; + e.sheqel = 8362; + e.sheqelhebrew = 8362; + e.sheva = 1456; + e.sheva115 = 1456; + e.sheva15 = 1456; + e.sheva22 = 1456; + e.sheva2e = 1456; + e.shevahebrew = 1456; + e.shevanarrowhebrew = 1456; + e.shevaquarterhebrew = 1456; + e.shevawidehebrew = 1456; + e.shhacyrillic = 1211; + e.shimacoptic = 1005; + e.shin = 1513; + e.shindagesh = 64329; + e.shindageshhebrew = 64329; + e.shindageshshindot = 64300; + e.shindageshshindothebrew = 64300; + e.shindageshsindot = 64301; + e.shindageshsindothebrew = 64301; + e.shindothebrew = 1473; + e.shinhebrew = 1513; + e.shinshindot = 64298; + e.shinshindothebrew = 64298; + e.shinsindot = 64299; + e.shinsindothebrew = 64299; + e.shook = 642; + e.sigma = 963; + e.sigma1 = 962; + e.sigmafinal = 962; + e.sigmalunatesymbolgreek = 1010; + e.sihiragana = 12375; + e.sikatakana = 12471; + e.sikatakanahalfwidth = 65404; + e.siluqhebrew = 1469; + e.siluqlefthebrew = 1469; + e.similar = 8764; + e.sindothebrew = 1474; + e.siosacirclekorean = 12916; + e.siosaparenkorean = 12820; + e.sioscieuckorean = 12670; + e.sioscirclekorean = 12902; + e.sioskiyeokkorean = 12666; + e.sioskorean = 12613; + e.siosnieunkorean = 12667; + e.siosparenkorean = 12806; + e.siospieupkorean = 12669; + e.siostikeutkorean = 12668; + e.six = 54; + e.sixarabic = 1638; + e.sixbengali = 2540; + e.sixcircle = 9317; + e.sixcircleinversesansserif = 10127; + e.sixdeva = 2412; + e.sixgujarati = 2796; + e.sixgurmukhi = 2668; + e.sixhackarabic = 1638; + e.sixhangzhou = 12326; + e.sixideographicparen = 12837; + e.sixinferior = 8326; + e.sixmonospace = 65302; + e.sixoldstyle = 63286; + e.sixparen = 9337; + e.sixperiod = 9357; + e.sixpersian = 1782; + e.sixroman = 8565; + e.sixsuperior = 8310; + e.sixteencircle = 9327; + e.sixteencurrencydenominatorbengali = 2553; + e.sixteenparen = 9347; + e.sixteenperiod = 9367; + e.sixthai = 3670; + e.slash = 47; + e.slashmonospace = 65295; + e.slong = 383; + e.slongdotaccent = 7835; + e.smileface = 9786; + e.smonospace = 65363; + e.sofpasuqhebrew = 1475; + e.softhyphen = 173; + e.softsigncyrillic = 1100; + e.sohiragana = 12381; + e.sokatakana = 12477; + e.sokatakanahalfwidth = 65407; + e.soliduslongoverlaycmb = 824; + e.solidusshortoverlaycmb = 823; + e.sorusithai = 3625; + e.sosalathai = 3624; + e.sosothai = 3595; + e.sosuathai = 3626; + e.space = 32; + e.spacehackarabic = 32; + e.spade = 9824; + e.spadesuitblack = 9824; + e.spadesuitwhite = 9828; + e.sparen = 9390; + e.squarebelowcmb = 827; + e.squarecc = 13252; + e.squarecm = 13213; + e.squarediagonalcrosshatchfill = 9641; + e.squarehorizontalfill = 9636; + e.squarekg = 13199; + e.squarekm = 13214; + e.squarekmcapital = 13262; + e.squareln = 13265; + e.squarelog = 13266; + e.squaremg = 13198; + e.squaremil = 13269; + e.squaremm = 13212; + e.squaremsquared = 13217; + e.squareorthogonalcrosshatchfill = 9638; + e.squareupperlefttolowerrightfill = 9639; + e.squareupperrighttolowerleftfill = 9640; + e.squareverticalfill = 9637; + e.squarewhitewithsmallblack = 9635; + e.srsquare = 13275; + e.ssabengali = 2487; + e.ssadeva = 2359; + e.ssagujarati = 2743; + e.ssangcieuckorean = 12617; + e.ssanghieuhkorean = 12677; + e.ssangieungkorean = 12672; + e.ssangkiyeokkorean = 12594; + e.ssangnieunkorean = 12645; + e.ssangpieupkorean = 12611; + e.ssangsioskorean = 12614; + e.ssangtikeutkorean = 12600; + e.ssuperior = 63218; + e.sterling = 163; + e.sterlingmonospace = 65505; + e.strokelongoverlaycmb = 822; + e.strokeshortoverlaycmb = 821; + e.subset = 8834; + e.subsetnotequal = 8842; + e.subsetorequal = 8838; + e.succeeds = 8827; + e.suchthat = 8715; + e.suhiragana = 12377; + e.sukatakana = 12473; + e.sukatakanahalfwidth = 65405; + e.sukunarabic = 1618; + e.summation = 8721; + e.sun = 9788; + e.superset = 8835; + e.supersetnotequal = 8843; + e.supersetorequal = 8839; + e.svsquare = 13276; + e.syouwaerasquare = 13180; + e.t = 116; + e.tabengali = 2468; + e.tackdown = 8868; + e.tackleft = 8867; + e.tadeva = 2340; + e.tagujarati = 2724; + e.tagurmukhi = 2596; + e.taharabic = 1591; + e.tahfinalarabic = 65218; + e.tahinitialarabic = 65219; + e.tahiragana = 12383; + e.tahmedialarabic = 65220; + e.taisyouerasquare = 13181; + e.takatakana = 12479; + e.takatakanahalfwidth = 65408; + e.tatweelarabic = 1600; + e.tau = 964; + e.tav = 1514; + e.tavdages = 64330; + e.tavdagesh = 64330; + e.tavdageshhebrew = 64330; + e.tavhebrew = 1514; + e.tbar = 359; + e.tbopomofo = 12554; + e.tcaron = 357; + e.tccurl = 680; + e.tcedilla = 355; + e.tcheharabic = 1670; + e.tchehfinalarabic = 64379; + e.tchehinitialarabic = 64380; + e.tchehmedialarabic = 64381; + e.tcircle = 9443; + e.tcircumflexbelow = 7793; + e.tcommaaccent = 355; + e.tdieresis = 7831; + e.tdotaccent = 7787; + e.tdotbelow = 7789; + e.tecyrillic = 1090; + e.tedescendercyrillic = 1197; + e.teharabic = 1578; + e.tehfinalarabic = 65174; + e.tehhahinitialarabic = 64674; + e.tehhahisolatedarabic = 64524; + e.tehinitialarabic = 65175; + e.tehiragana = 12390; + e.tehjeeminitialarabic = 64673; + e.tehjeemisolatedarabic = 64523; + e.tehmarbutaarabic = 1577; + e.tehmarbutafinalarabic = 65172; + e.tehmedialarabic = 65176; + e.tehmeeminitialarabic = 64676; + e.tehmeemisolatedarabic = 64526; + e.tehnoonfinalarabic = 64627; + e.tekatakana = 12486; + e.tekatakanahalfwidth = 65411; + e.telephone = 8481; + e.telephoneblack = 9742; + e.telishagedolahebrew = 1440; + e.telishaqetanahebrew = 1449; + e.tencircle = 9321; + e.tenideographicparen = 12841; + e.tenparen = 9341; + e.tenperiod = 9361; + e.tenroman = 8569; + e.tesh = 679; + e.tet = 1496; + e.tetdagesh = 64312; + e.tetdageshhebrew = 64312; + e.tethebrew = 1496; + e.tetsecyrillic = 1205; + e.tevirhebrew = 1435; + e.tevirlefthebrew = 1435; + e.thabengali = 2469; + e.thadeva = 2341; + e.thagujarati = 2725; + e.thagurmukhi = 2597; + e.thalarabic = 1584; + e.thalfinalarabic = 65196; + e.thanthakhatlowleftthai = 63640; + e.thanthakhatlowrightthai = 63639; + e.thanthakhatthai = 3660; + e.thanthakhatupperleftthai = 63638; + e.theharabic = 1579; + e.thehfinalarabic = 65178; + e.thehinitialarabic = 65179; + e.thehmedialarabic = 65180; + e.thereexists = 8707; + e.therefore = 8756; + e.theta = 952; + e.theta1 = 977; + e.thetasymbolgreek = 977; + e.thieuthacirclekorean = 12921; + e.thieuthaparenkorean = 12825; + e.thieuthcirclekorean = 12907; + e.thieuthkorean = 12620; + e.thieuthparenkorean = 12811; + e.thirteencircle = 9324; + e.thirteenparen = 9344; + e.thirteenperiod = 9364; + e.thonangmonthothai = 3601; + e.thook = 429; + e.thophuthaothai = 3602; + e.thorn = 254; + e.thothahanthai = 3607; + e.thothanthai = 3600; + e.thothongthai = 3608; + e.thothungthai = 3606; + e.thousandcyrillic = 1154; + e.thousandsseparatorarabic = 1644; + e.thousandsseparatorpersian = 1644; + e.three = 51; + e.threearabic = 1635; + e.threebengali = 2537; + e.threecircle = 9314; + e.threecircleinversesansserif = 10124; + e.threedeva = 2409; + e.threeeighths = 8540; + e.threegujarati = 2793; + e.threegurmukhi = 2665; + e.threehackarabic = 1635; + e.threehangzhou = 12323; + e.threeideographicparen = 12834; + e.threeinferior = 8323; + e.threemonospace = 65299; + e.threenumeratorbengali = 2550; + e.threeoldstyle = 63283; + e.threeparen = 9334; + e.threeperiod = 9354; + e.threepersian = 1779; + e.threequarters = 190; + e.threequartersemdash = 63198; + e.threeroman = 8562; + e.threesuperior = 179; + e.threethai = 3667; + e.thzsquare = 13204; + e.tihiragana = 12385; + e.tikatakana = 12481; + e.tikatakanahalfwidth = 65409; + e.tikeutacirclekorean = 12912; + e.tikeutaparenkorean = 12816; + e.tikeutcirclekorean = 12898; + e.tikeutkorean = 12599; + e.tikeutparenkorean = 12802; + e.tilde = 732; + e.tildebelowcmb = 816; + e.tildecmb = 771; + e.tildecomb = 771; + e.tildedoublecmb = 864; + e.tildeoperator = 8764; + e.tildeoverlaycmb = 820; + e.tildeverticalcmb = 830; + e.timescircle = 8855; + e.tipehahebrew = 1430; + e.tipehalefthebrew = 1430; + e.tippigurmukhi = 2672; + e.titlocyrilliccmb = 1155; + e.tiwnarmenian = 1407; + e.tlinebelow = 7791; + e.tmonospace = 65364; + e.toarmenian = 1385; + e.tohiragana = 12392; + e.tokatakana = 12488; + e.tokatakanahalfwidth = 65412; + e.tonebarextrahighmod = 741; + e.tonebarextralowmod = 745; + e.tonebarhighmod = 742; + e.tonebarlowmod = 744; + e.tonebarmidmod = 743; + e.tonefive = 445; + e.tonesix = 389; + e.tonetwo = 424; + e.tonos = 900; + e.tonsquare = 13095; + e.topatakthai = 3599; + e.tortoiseshellbracketleft = 12308; + e.tortoiseshellbracketleftsmall = 65117; + e.tortoiseshellbracketleftvertical = 65081; + e.tortoiseshellbracketright = 12309; + e.tortoiseshellbracketrightsmall = 65118; + e.tortoiseshellbracketrightvertical = 65082; + e.totaothai = 3605; + e.tpalatalhook = 427; + e.tparen = 9391; + e.trademark = 8482; + e.trademarksans = 63722; + e.trademarkserif = 63195; + e.tretroflexhook = 648; + e.triagdn = 9660; + e.triaglf = 9668; + e.triagrt = 9658; + e.triagup = 9650; + e.ts = 678; + e.tsadi = 1510; + e.tsadidagesh = 64326; + e.tsadidageshhebrew = 64326; + e.tsadihebrew = 1510; + e.tsecyrillic = 1094; + e.tsere = 1461; + e.tsere12 = 1461; + e.tsere1e = 1461; + e.tsere2b = 1461; + e.tserehebrew = 1461; + e.tserenarrowhebrew = 1461; + e.tserequarterhebrew = 1461; + e.tserewidehebrew = 1461; + e.tshecyrillic = 1115; + e.tsuperior = 63219; + e.ttabengali = 2463; + e.ttadeva = 2335; + e.ttagujarati = 2719; + e.ttagurmukhi = 2591; + e.tteharabic = 1657; + e.ttehfinalarabic = 64359; + e.ttehinitialarabic = 64360; + e.ttehmedialarabic = 64361; + e.tthabengali = 2464; + e.tthadeva = 2336; + e.tthagujarati = 2720; + e.tthagurmukhi = 2592; + e.tturned = 647; + e.tuhiragana = 12388; + e.tukatakana = 12484; + e.tukatakanahalfwidth = 65410; + e.tusmallhiragana = 12387; + e.tusmallkatakana = 12483; + e.tusmallkatakanahalfwidth = 65391; + e.twelvecircle = 9323; + e.twelveparen = 9343; + e.twelveperiod = 9363; + e.twelveroman = 8571; + e.twentycircle = 9331; + e.twentyhangzhou = 21316; + e.twentyparen = 9351; + e.twentyperiod = 9371; + e.two = 50; + e.twoarabic = 1634; + e.twobengali = 2536; + e.twocircle = 9313; + e.twocircleinversesansserif = 10123; + e.twodeva = 2408; + e.twodotenleader = 8229; + e.twodotleader = 8229; + e.twodotleadervertical = 65072; + e.twogujarati = 2792; + e.twogurmukhi = 2664; + e.twohackarabic = 1634; + e.twohangzhou = 12322; + e.twoideographicparen = 12833; + e.twoinferior = 8322; + e.twomonospace = 65298; + e.twonumeratorbengali = 2549; + e.twooldstyle = 63282; + e.twoparen = 9333; + e.twoperiod = 9353; + e.twopersian = 1778; + e.tworoman = 8561; + e.twostroke = 443; + e.twosuperior = 178; + e.twothai = 3666; + e.twothirds = 8532; + e.u = 117; + e.uacute = 250; + e.ubar = 649; + e.ubengali = 2441; + e.ubopomofo = 12584; + e.ubreve = 365; + e.ucaron = 468; + e.ucircle = 9444; + e.ucircumflex = 251; + e.ucircumflexbelow = 7799; + e.ucyrillic = 1091; + e.udattadeva = 2385; + e.udblacute = 369; + e.udblgrave = 533; + e.udeva = 2313; + e.udieresis = 252; + e.udieresisacute = 472; + e.udieresisbelow = 7795; + e.udieresiscaron = 474; + e.udieresiscyrillic = 1265; + e.udieresisgrave = 476; + e.udieresismacron = 470; + e.udotbelow = 7909; + e.ugrave = 249; + e.ugujarati = 2697; + e.ugurmukhi = 2569; + e.uhiragana = 12358; + e.uhookabove = 7911; + e.uhorn = 432; + e.uhornacute = 7913; + e.uhorndotbelow = 7921; + e.uhorngrave = 7915; + e.uhornhookabove = 7917; + e.uhorntilde = 7919; + e.uhungarumlaut = 369; + e.uhungarumlautcyrillic = 1267; + e.uinvertedbreve = 535; + e.ukatakana = 12454; + e.ukatakanahalfwidth = 65395; + e.ukcyrillic = 1145; + e.ukorean = 12636; + e.umacron = 363; + e.umacroncyrillic = 1263; + e.umacrondieresis = 7803; + e.umatragurmukhi = 2625; + e.umonospace = 65365; + e.underscore = 95; + e.underscoredbl = 8215; + e.underscoremonospace = 65343; + e.underscorevertical = 65075; + e.underscorewavy = 65103; + e.union = 8746; + e.universal = 8704; + e.uogonek = 371; + e.uparen = 9392; + e.upblock = 9600; + e.upperdothebrew = 1476; + e.upsilon = 965; + e.upsilondieresis = 971; + e.upsilondieresistonos = 944; + e.upsilonlatin = 650; + e.upsilontonos = 973; + e.uptackbelowcmb = 797; + e.uptackmod = 724; + e.uragurmukhi = 2675; + e.uring = 367; + e.ushortcyrillic = 1118; + e.usmallhiragana = 12357; + e.usmallkatakana = 12453; + e.usmallkatakanahalfwidth = 65385; + e.ustraightcyrillic = 1199; + e.ustraightstrokecyrillic = 1201; + e.utilde = 361; + e.utildeacute = 7801; + e.utildebelow = 7797; + e.uubengali = 2442; + e.uudeva = 2314; + e.uugujarati = 2698; + e.uugurmukhi = 2570; + e.uumatragurmukhi = 2626; + e.uuvowelsignbengali = 2498; + e.uuvowelsigndeva = 2370; + e.uuvowelsigngujarati = 2754; + e.uvowelsignbengali = 2497; + e.uvowelsigndeva = 2369; + e.uvowelsigngujarati = 2753; + e.v = 118; + e.vadeva = 2357; + e.vagujarati = 2741; + e.vagurmukhi = 2613; + e.vakatakana = 12535; + e.vav = 1493; + e.vavdagesh = 64309; + e.vavdagesh65 = 64309; + e.vavdageshhebrew = 64309; + e.vavhebrew = 1493; + e.vavholam = 64331; + e.vavholamhebrew = 64331; + e.vavvavhebrew = 1520; + e.vavyodhebrew = 1521; + e.vcircle = 9445; + e.vdotbelow = 7807; + e.vecyrillic = 1074; + e.veharabic = 1700; + e.vehfinalarabic = 64363; + e.vehinitialarabic = 64364; + e.vehmedialarabic = 64365; + e.vekatakana = 12537; + e.venus = 9792; + e.verticalbar = 124; + e.verticallineabovecmb = 781; + e.verticallinebelowcmb = 809; + e.verticallinelowmod = 716; + e.verticallinemod = 712; + e.vewarmenian = 1406; + e.vhook = 651; + e.vikatakana = 12536; + e.viramabengali = 2509; + e.viramadeva = 2381; + e.viramagujarati = 2765; + e.visargabengali = 2435; + e.visargadeva = 2307; + e.visargagujarati = 2691; + e.vmonospace = 65366; + e.voarmenian = 1400; + e.voicediterationhiragana = 12446; + e.voicediterationkatakana = 12542; + e.voicedmarkkana = 12443; + e.voicedmarkkanahalfwidth = 65438; + e.vokatakana = 12538; + e.vparen = 9393; + e.vtilde = 7805; + e.vturned = 652; + e.vuhiragana = 12436; + e.vukatakana = 12532; + e.w = 119; + e.wacute = 7811; + e.waekorean = 12633; + e.wahiragana = 12431; + e.wakatakana = 12527; + e.wakatakanahalfwidth = 65436; + e.wakorean = 12632; + e.wasmallhiragana = 12430; + e.wasmallkatakana = 12526; + e.wattosquare = 13143; + e.wavedash = 12316; + e.wavyunderscorevertical = 65076; + e.wawarabic = 1608; + e.wawfinalarabic = 65262; + e.wawhamzaabovearabic = 1572; + e.wawhamzaabovefinalarabic = 65158; + e.wbsquare = 13277; + e.wcircle = 9446; + e.wcircumflex = 373; + e.wdieresis = 7813; + e.wdotaccent = 7815; + e.wdotbelow = 7817; + e.wehiragana = 12433; + e.weierstrass = 8472; + e.wekatakana = 12529; + e.wekorean = 12638; + e.weokorean = 12637; + e.wgrave = 7809; + e.whitebullet = 9702; + e.whitecircle = 9675; + e.whitecircleinverse = 9689; + e.whitecornerbracketleft = 12302; + e.whitecornerbracketleftvertical = 65091; + e.whitecornerbracketright = 12303; + e.whitecornerbracketrightvertical = 65092; + e.whitediamond = 9671; + e.whitediamondcontainingblacksmalldiamond = 9672; + e.whitedownpointingsmalltriangle = 9663; + e.whitedownpointingtriangle = 9661; + e.whiteleftpointingsmalltriangle = 9667; + e.whiteleftpointingtriangle = 9665; + e.whitelenticularbracketleft = 12310; + e.whitelenticularbracketright = 12311; + e.whiterightpointingsmalltriangle = 9657; + e.whiterightpointingtriangle = 9655; + e.whitesmallsquare = 9643; + e.whitesmilingface = 9786; + e.whitesquare = 9633; + e.whitestar = 9734; + e.whitetelephone = 9743; + e.whitetortoiseshellbracketleft = 12312; + e.whitetortoiseshellbracketright = 12313; + e.whiteuppointingsmalltriangle = 9653; + e.whiteuppointingtriangle = 9651; + e.wihiragana = 12432; + e.wikatakana = 12528; + e.wikorean = 12639; + e.wmonospace = 65367; + e.wohiragana = 12434; + e.wokatakana = 12530; + e.wokatakanahalfwidth = 65382; + e.won = 8361; + e.wonmonospace = 65510; + e.wowaenthai = 3623; + e.wparen = 9394; + e.wring = 7832; + e.wsuperior = 695; + e.wturned = 653; + e.wynn = 447; + e.x = 120; + e.xabovecmb = 829; + e.xbopomofo = 12562; + e.xcircle = 9447; + e.xdieresis = 7821; + e.xdotaccent = 7819; + e.xeharmenian = 1389; + e.xi = 958; + e.xmonospace = 65368; + e.xparen = 9395; + e.xsuperior = 739; + e.y = 121; + e.yaadosquare = 13134; + e.yabengali = 2479; + e.yacute = 253; + e.yadeva = 2351; + e.yaekorean = 12626; + e.yagujarati = 2735; + e.yagurmukhi = 2607; + e.yahiragana = 12420; + e.yakatakana = 12516; + e.yakatakanahalfwidth = 65428; + e.yakorean = 12625; + e.yamakkanthai = 3662; + e.yasmallhiragana = 12419; + e.yasmallkatakana = 12515; + e.yasmallkatakanahalfwidth = 65388; + e.yatcyrillic = 1123; + e.ycircle = 9448; + e.ycircumflex = 375; + e.ydieresis = 255; + e.ydotaccent = 7823; + e.ydotbelow = 7925; + e.yeharabic = 1610; + e.yehbarreearabic = 1746; + e.yehbarreefinalarabic = 64431; + e.yehfinalarabic = 65266; + e.yehhamzaabovearabic = 1574; + e.yehhamzaabovefinalarabic = 65162; + e.yehhamzaaboveinitialarabic = 65163; + e.yehhamzaabovemedialarabic = 65164; + e.yehinitialarabic = 65267; + e.yehmedialarabic = 65268; + e.yehmeeminitialarabic = 64733; + e.yehmeemisolatedarabic = 64600; + e.yehnoonfinalarabic = 64660; + e.yehthreedotsbelowarabic = 1745; + e.yekorean = 12630; + e.yen = 165; + e.yenmonospace = 65509; + e.yeokorean = 12629; + e.yeorinhieuhkorean = 12678; + e.yerahbenyomohebrew = 1450; + e.yerahbenyomolefthebrew = 1450; + e.yericyrillic = 1099; + e.yerudieresiscyrillic = 1273; + e.yesieungkorean = 12673; + e.yesieungpansioskorean = 12675; + e.yesieungsioskorean = 12674; + e.yetivhebrew = 1434; + e.ygrave = 7923; + e.yhook = 436; + e.yhookabove = 7927; + e.yiarmenian = 1397; + e.yicyrillic = 1111; + e.yikorean = 12642; + e.yinyang = 9775; + e.yiwnarmenian = 1410; + e.ymonospace = 65369; + e.yod = 1497; + e.yoddagesh = 64313; + e.yoddageshhebrew = 64313; + e.yodhebrew = 1497; + e.yodyodhebrew = 1522; + e.yodyodpatahhebrew = 64287; + e.yohiragana = 12424; + e.yoikorean = 12681; + e.yokatakana = 12520; + e.yokatakanahalfwidth = 65430; + e.yokorean = 12635; + e.yosmallhiragana = 12423; + e.yosmallkatakana = 12519; + e.yosmallkatakanahalfwidth = 65390; + e.yotgreek = 1011; + e.yoyaekorean = 12680; + e.yoyakorean = 12679; + e.yoyakthai = 3618; + e.yoyingthai = 3597; + e.yparen = 9396; + e.ypogegrammeni = 890; + e.ypogegrammenigreekcmb = 837; + e.yr = 422; + e.yring = 7833; + e.ysuperior = 696; + e.ytilde = 7929; + e.yturned = 654; + e.yuhiragana = 12422; + e.yuikorean = 12684; + e.yukatakana = 12518; + e.yukatakanahalfwidth = 65429; + e.yukorean = 12640; + e.yusbigcyrillic = 1131; + e.yusbigiotifiedcyrillic = 1133; + e.yuslittlecyrillic = 1127; + e.yuslittleiotifiedcyrillic = 1129; + e.yusmallhiragana = 12421; + e.yusmallkatakana = 12517; + e.yusmallkatakanahalfwidth = 65389; + e.yuyekorean = 12683; + e.yuyeokorean = 12682; + e.yyabengali = 2527; + e.yyadeva = 2399; + e.z = 122; + e.zaarmenian = 1382; + e.zacute = 378; + e.zadeva = 2395; + e.zagurmukhi = 2651; + e.zaharabic = 1592; + e.zahfinalarabic = 65222; + e.zahinitialarabic = 65223; + e.zahiragana = 12374; + e.zahmedialarabic = 65224; + e.zainarabic = 1586; + e.zainfinalarabic = 65200; + e.zakatakana = 12470; + e.zaqefgadolhebrew = 1429; + e.zaqefqatanhebrew = 1428; + e.zarqahebrew = 1432; + e.zayin = 1494; + e.zayindagesh = 64310; + e.zayindageshhebrew = 64310; + e.zayinhebrew = 1494; + e.zbopomofo = 12567; + e.zcaron = 382; + e.zcircle = 9449; + e.zcircumflex = 7825; + e.zcurl = 657; + e.zdot = 380; + e.zdotaccent = 380; + e.zdotbelow = 7827; + e.zecyrillic = 1079; + e.zedescendercyrillic = 1177; + e.zedieresiscyrillic = 1247; + e.zehiragana = 12380; + e.zekatakana = 12476; + e.zero = 48; + e.zeroarabic = 1632; + e.zerobengali = 2534; + e.zerodeva = 2406; + e.zerogujarati = 2790; + e.zerogurmukhi = 2662; + e.zerohackarabic = 1632; + e.zeroinferior = 8320; + e.zeromonospace = 65296; + e.zerooldstyle = 63280; + e.zeropersian = 1776; + e.zerosuperior = 8304; + e.zerothai = 3664; + e.zerowidthjoiner = 65279; + e.zerowidthnonjoiner = 8204; + e.zerowidthspace = 8203; + e.zeta = 950; + e.zhbopomofo = 12563; + e.zhearmenian = 1386; + e.zhebrevecyrillic = 1218; + e.zhecyrillic = 1078; + e.zhedescendercyrillic = 1175; + e.zhedieresiscyrillic = 1245; + e.zihiragana = 12376; + e.zikatakana = 12472; + e.zinorhebrew = 1454; + e.zlinebelow = 7829; + e.zmonospace = 65370; + e.zohiragana = 12382; + e.zokatakana = 12478; + e.zparen = 9397; + e.zretroflexhook = 656; + e.zstroke = 438; + e.zuhiragana = 12378; + e.zukatakana = 12474; + e[".notdef"] = 0; + e.angbracketleftbig = 9001; + e.angbracketleftBig = 9001; + e.angbracketleftbigg = 9001; + e.angbracketleftBigg = 9001; + e.angbracketrightBig = 9002; + e.angbracketrightbig = 9002; + e.angbracketrightBigg = 9002; + e.angbracketrightbigg = 9002; + e.arrowhookleft = 8618; + e.arrowhookright = 8617; + e.arrowlefttophalf = 8636; + e.arrowleftbothalf = 8637; + e.arrownortheast = 8599; + e.arrownorthwest = 8598; + e.arrowrighttophalf = 8640; + e.arrowrightbothalf = 8641; + e.arrowsoutheast = 8600; + e.arrowsouthwest = 8601; + e.backslashbig = 8726; + e.backslashBig = 8726; + e.backslashBigg = 8726; + e.backslashbigg = 8726; + e.bardbl = 8214; + e.bracehtipdownleft = 65079; + e.bracehtipdownright = 65079; + e.bracehtipupleft = 65080; + e.bracehtipupright = 65080; + e.braceleftBig = 123; + e.braceleftbig = 123; + e.braceleftbigg = 123; + e.braceleftBigg = 123; + e.bracerightBig = 125; + e.bracerightbig = 125; + e.bracerightbigg = 125; + e.bracerightBigg = 125; + e.bracketleftbig = 91; + e.bracketleftBig = 91; + e.bracketleftbigg = 91; + e.bracketleftBigg = 91; + e.bracketrightBig = 93; + e.bracketrightbig = 93; + e.bracketrightbigg = 93; + e.bracketrightBigg = 93; + e.ceilingleftbig = 8968; + e.ceilingleftBig = 8968; + e.ceilingleftBigg = 8968; + e.ceilingleftbigg = 8968; + e.ceilingrightbig = 8969; + e.ceilingrightBig = 8969; + e.ceilingrightbigg = 8969; + e.ceilingrightBigg = 8969; + e.circledotdisplay = 8857; + e.circledottext = 8857; + e.circlemultiplydisplay = 8855; + e.circlemultiplytext = 8855; + e.circleplusdisplay = 8853; + e.circleplustext = 8853; + e.contintegraldisplay = 8750; + e.contintegraltext = 8750; + e.coproductdisplay = 8720; + e.coproducttext = 8720; + e.floorleftBig = 8970; + e.floorleftbig = 8970; + e.floorleftbigg = 8970; + e.floorleftBigg = 8970; + e.floorrightbig = 8971; + e.floorrightBig = 8971; + e.floorrightBigg = 8971; + e.floorrightbigg = 8971; + e.hatwide = 770; + e.hatwider = 770; + e.hatwidest = 770; + e.intercal = 7488; + e.integraldisplay = 8747; + e.integraltext = 8747; + e.intersectiondisplay = 8898; + e.intersectiontext = 8898; + e.logicalanddisplay = 8743; + e.logicalandtext = 8743; + e.logicalordisplay = 8744; + e.logicalortext = 8744; + e.parenleftBig = 40; + e.parenleftbig = 40; + e.parenleftBigg = 40; + e.parenleftbigg = 40; + e.parenrightBig = 41; + e.parenrightbig = 41; + e.parenrightBigg = 41; + e.parenrightbigg = 41; + e.prime = 8242; + e.productdisplay = 8719; + e.producttext = 8719; + e.radicalbig = 8730; + e.radicalBig = 8730; + e.radicalBigg = 8730; + e.radicalbigg = 8730; + e.radicalbt = 8730; + e.radicaltp = 8730; + e.radicalvertex = 8730; + e.slashbig = 47; + e.slashBig = 47; + e.slashBigg = 47; + e.slashbigg = 47; + e.summationdisplay = 8721; + e.summationtext = 8721; + e.tildewide = 732; + e.tildewider = 732; + e.tildewidest = 732; + e.uniondisplay = 8899; + e.unionmultidisplay = 8846; + e.unionmultitext = 8846; + e.unionsqdisplay = 8852; + e.unionsqtext = 8852; + e.uniontext = 8899; + e.vextenddouble = 8741; + e.vextendsingle = 8739; + }), + gr = getLookupTableFactory(function (e) { + e.space = 32; + e.a1 = 9985; + e.a2 = 9986; + e.a202 = 9987; + e.a3 = 9988; + e.a4 = 9742; + e.a5 = 9990; + e.a119 = 9991; + e.a118 = 9992; + e.a117 = 9993; + e.a11 = 9755; + e.a12 = 9758; + e.a13 = 9996; + e.a14 = 9997; + e.a15 = 9998; + e.a16 = 9999; + e.a105 = 1e4; + e.a17 = 10001; + e.a18 = 10002; + e.a19 = 10003; + e.a20 = 10004; + e.a21 = 10005; + e.a22 = 10006; + e.a23 = 10007; + e.a24 = 10008; + e.a25 = 10009; + e.a26 = 10010; + e.a27 = 10011; + e.a28 = 10012; + e.a6 = 10013; + e.a7 = 10014; + e.a8 = 10015; + e.a9 = 10016; + e.a10 = 10017; + e.a29 = 10018; + e.a30 = 10019; + e.a31 = 10020; + e.a32 = 10021; + e.a33 = 10022; + e.a34 = 10023; + e.a35 = 9733; + e.a36 = 10025; + e.a37 = 10026; + e.a38 = 10027; + e.a39 = 10028; + e.a40 = 10029; + e.a41 = 10030; + e.a42 = 10031; + e.a43 = 10032; + e.a44 = 10033; + e.a45 = 10034; + e.a46 = 10035; + e.a47 = 10036; + e.a48 = 10037; + e.a49 = 10038; + e.a50 = 10039; + e.a51 = 10040; + e.a52 = 10041; + e.a53 = 10042; + e.a54 = 10043; + e.a55 = 10044; + e.a56 = 10045; + e.a57 = 10046; + e.a58 = 10047; + e.a59 = 10048; + e.a60 = 10049; + e.a61 = 10050; + e.a62 = 10051; + e.a63 = 10052; + e.a64 = 10053; + e.a65 = 10054; + e.a66 = 10055; + e.a67 = 10056; + e.a68 = 10057; + e.a69 = 10058; + e.a70 = 10059; + e.a71 = 9679; + e.a72 = 10061; + e.a73 = 9632; + e.a74 = 10063; + e.a203 = 10064; + e.a75 = 10065; + e.a204 = 10066; + e.a76 = 9650; + e.a77 = 9660; + e.a78 = 9670; + e.a79 = 10070; + e.a81 = 9687; + e.a82 = 10072; + e.a83 = 10073; + e.a84 = 10074; + e.a97 = 10075; + e.a98 = 10076; + e.a99 = 10077; + e.a100 = 10078; + e.a101 = 10081; + e.a102 = 10082; + e.a103 = 10083; + e.a104 = 10084; + e.a106 = 10085; + e.a107 = 10086; + e.a108 = 10087; + e.a112 = 9827; + e.a111 = 9830; + e.a110 = 9829; + e.a109 = 9824; + e.a120 = 9312; + e.a121 = 9313; + e.a122 = 9314; + e.a123 = 9315; + e.a124 = 9316; + e.a125 = 9317; + e.a126 = 9318; + e.a127 = 9319; + e.a128 = 9320; + e.a129 = 9321; + e.a130 = 10102; + e.a131 = 10103; + e.a132 = 10104; + e.a133 = 10105; + e.a134 = 10106; + e.a135 = 10107; + e.a136 = 10108; + e.a137 = 10109; + e.a138 = 10110; + e.a139 = 10111; + e.a140 = 10112; + e.a141 = 10113; + e.a142 = 10114; + e.a143 = 10115; + e.a144 = 10116; + e.a145 = 10117; + e.a146 = 10118; + e.a147 = 10119; + e.a148 = 10120; + e.a149 = 10121; + e.a150 = 10122; + e.a151 = 10123; + e.a152 = 10124; + e.a153 = 10125; + e.a154 = 10126; + e.a155 = 10127; + e.a156 = 10128; + e.a157 = 10129; + e.a158 = 10130; + e.a159 = 10131; + e.a160 = 10132; + e.a161 = 8594; + e.a163 = 8596; + e.a164 = 8597; + e.a196 = 10136; + e.a165 = 10137; + e.a192 = 10138; + e.a166 = 10139; + e.a167 = 10140; + e.a168 = 10141; + e.a169 = 10142; + e.a170 = 10143; + e.a171 = 10144; + e.a172 = 10145; + e.a173 = 10146; + e.a162 = 10147; + e.a174 = 10148; + e.a175 = 10149; + e.a176 = 10150; + e.a177 = 10151; + e.a178 = 10152; + e.a179 = 10153; + e.a193 = 10154; + e.a180 = 10155; + e.a199 = 10156; + e.a181 = 10157; + e.a200 = 10158; + e.a182 = 10159; + e.a201 = 10161; + e.a183 = 10162; + e.a184 = 10163; + e.a197 = 10164; + e.a185 = 10165; + e.a194 = 10166; + e.a198 = 10167; + e.a186 = 10168; + e.a195 = 10169; + e.a187 = 10170; + e.a188 = 10171; + e.a189 = 10172; + e.a190 = 10173; + e.a191 = 10174; + e.a89 = 10088; + e.a90 = 10089; + e.a93 = 10090; + e.a94 = 10091; + e.a91 = 10092; + e.a92 = 10093; + e.a205 = 10094; + e.a85 = 10095; + e.a206 = 10096; + e.a86 = 10097; + e.a87 = 10098; + e.a88 = 10099; + e.a95 = 10100; + e.a96 = 10101; + e[".notdef"] = 0; + }), + pr = getLookupTableFactory(function (e) { + e[63721] = 169; + e[63193] = 169; + e[63720] = 174; + e[63194] = 174; + e[63722] = 8482; + e[63195] = 8482; + e[63729] = 9127; + e[63730] = 9128; + e[63731] = 9129; + e[63740] = 9131; + e[63741] = 9132; + e[63742] = 9133; + e[63726] = 9121; + e[63727] = 9122; + e[63728] = 9123; + e[63737] = 9124; + e[63738] = 9125; + e[63739] = 9126; + e[63723] = 9115; + e[63724] = 9116; + e[63725] = 9117; + e[63734] = 9118; + e[63735] = 9119; + e[63736] = 9120; + }); +function getUnicodeForGlyph(e, t) { + let a = t[e]; + if (void 0 !== a) return a; + if (!e) return -1; + if ("u" === e[0]) { + const t = e.length; + let r; + if (7 === t && "n" === e[1] && "i" === e[2]) r = e.substring(3); + else { + if (!(t >= 5 && t <= 7)) return -1; + r = e.substring(1); + } + if (r === r.toUpperCase()) { + a = parseInt(r, 16); + if (a >= 0) return a; + } + } + return -1; +} +const mr = [ + [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 a = mr[t]; + for (let r = 0, i = a.length; r < i; r += 2) + if (e >= a[r] && e <= a[r + 1]) return t; + } + for (let t = 0, a = mr.length; t < a; t++) { + const a = mr[t]; + for (let r = 0, i = a.length; r < i; r += 2) + if (e >= a[r] && e <= a[r + 1]) return t; + } + return -1; +} +const br = new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$", "u"), + yr = new Map(); +const wr = !0, + xr = 1, + Sr = 2, + Ar = 4, + kr = 32, + Cr = [ + ".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 a = getUnicodeForGlyph(e, t); + if (-1 !== a) for (const e in t) if (t[e] === a) return e; + info("Unable to recover a standard glyph name for: " + e); + return e; +} +function type1FontGlyphMapping(e, t, a) { + const r = Object.create(null); + let i, n, s; + const o = !!(e.flags & Ar); + if (e.isInternalFont) { + s = t; + for (n = 0; n < s.length; n++) { + i = a.indexOf(s[n]); + r[n] = i >= 0 ? i : 0; + } + } else if (e.baseEncodingName) { + s = getEncoding(e.baseEncodingName); + for (n = 0; n < s.length; n++) { + i = a.indexOf(s[n]); + r[n] = i >= 0 ? i : 0; + } + } else if (o) for (n in t) r[n] = t[n]; + else { + s = lr; + for (n = 0; n < s.length; n++) { + i = a.indexOf(s[n]); + r[n] = i >= 0 ? i : 0; + } + } + const c = e.differences; + let l; + if (c) + for (n in c) { + const e = c[n]; + i = a.indexOf(e); + if (-1 === i) { + l || (l = fr()); + const t = recoverGlyphName(e, l); + t !== e && (i = a.indexOf(t)); + } + r[n] = i >= 0 ? i : 0; + } + return r; +} +function normalizeFontName(e) { + return e.replaceAll(/[,_]/g, "-").replaceAll(/\s/g, ""); +} +const vr = 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; +}); +const Fr = [ + ".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", + ], + Ir = [ + ".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", + ], + Tr = [ + ".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", + ], + Or = [ + ".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", + ], + Mr = 391, + Dr = [ + 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 }, + ], + Rr = [ + 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, a) { + this.bytes = e.getBytes(); + this.properties = t; + this.seacAnalysisEnabled = !!a; + } + parse() { + const e = this.properties, + t = new CFF(); + this.cff = t; + const a = this.parseHeader(), + r = this.parseIndex(a.endPos), + i = this.parseIndex(r.endPos), + n = this.parseIndex(i.endPos), + s = this.parseIndex(n.endPos), + o = this.parseDict(i.obj.get(0)), + c = this.createDict(CFFTopDict, o, t.strings); + t.header = a.obj; + t.names = this.parseNameIndex(r.obj); + t.strings = this.parseStringIndex(n.obj); + t.topDict = c; + t.globalSubrIndex = s.obj; + this.parsePrivateDict(t.topDict); + t.isCIDFont = c.hasName("ROS"); + const l = c.getByName("CharStrings"), + h = this.parseIndex(l).obj, + u = c.getByName("FontMatrix"); + u && (e.fontMatrix = u); + const d = c.getByName("FontBBox"); + if (d) { + e.ascent = Math.max(d[3], d[1]); + e.descent = Math.min(d[1], d[3]); + e.ascentScaled = !0; + } + let f, g; + if (t.isCIDFont) { + const e = this.parseIndex(c.getByName("FDArray")).obj; + for (let a = 0, r = e.count; a < r; ++a) { + const r = e.get(a), + i = this.createDict(CFFTopDict, this.parseDict(r), t.strings); + this.parsePrivateDict(i); + t.fdArray.push(i); + } + g = null; + f = this.parseCharsets(c.getByName("charset"), h.count, t.strings, !0); + t.fdSelect = this.parseFDSelect(c.getByName("FDSelect"), h.count); + } else { + f = this.parseCharsets(c.getByName("charset"), h.count, t.strings, !1); + g = this.parseEncoding(c.getByName("Encoding"), e, t.strings, f.charset); + } + t.charset = f; + t.encoding = g; + const p = this.parseCharStrings({ + charStrings: h, + localSubrIndex: c.privateDict.subrsIndex, + globalSubrIndex: s.obj, + fdSelect: t.fdSelect, + fdArray: t.fdArray, + privateDict: c.privateDict, + }); + t.charStrings = p.charStrings; + t.seacs = p.seacs; + t.widths = p.widths; + return t; + } + parseHeader() { + let e = this.bytes; + const t = e.length; + let a = 0; + for (; a < t && 1 !== e[a]; ) ++a; + if (a >= t) throw new FormatError("Invalid CFF header"); + if (0 !== a) { + info("cff data is shifted"); + e = e.subarray(a); + this.bytes = e; + } + const r = e[0], + i = e[1], + n = e[2], + s = e[3]; + return { obj: new CFFHeader(r, i, n, s), endPos: n }; + } + parseDict(e) { + let t = 0; + function parseOperand() { + let a = e[t++]; + if (30 === a) + return (function parseFloatOperand() { + let a = ""; + const r = 15, + i = [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + ".", + "E", + "E-", + null, + "-", + ], + n = e.length; + for (; t < n; ) { + const n = e[t++], + s = n >> 4, + o = 15 & n; + if (s === r) break; + a += i[s]; + if (o === r) break; + a += i[o]; + } + return parseFloat(a); + })(); + if (28 === a) { + a = readInt16(e, t); + t += 2; + return a; + } + if (29 === a) { + a = e[t++]; + a = (a << 8) | e[t++]; + a = (a << 8) | e[t++]; + a = (a << 8) | e[t++]; + return a; + } + if (a >= 32 && a <= 246) return a - 139; + if (a >= 247 && a <= 250) return 256 * (a - 247) + e[t++] + 108; + if (a >= 251 && a <= 254) return -256 * (a - 251) - e[t++] - 108; + warn('CFFParser_parseDict: "' + a + '" is a reserved command.'); + return NaN; + } + let a = []; + const r = []; + t = 0; + const i = e.length; + for (; t < i; ) { + let i = e[t]; + if (i <= 21) { + 12 === i && (i = (i << 8) | e[++t]); + r.push([i, a]); + a = []; + ++t; + } else a.push(parseOperand()); + } + return r; + } + parseIndex(e) { + const t = new CFFIndex(), + a = this.bytes, + r = (a[e++] << 8) | a[e++], + i = []; + let n, + s, + o = e; + if (0 !== r) { + const t = a[e++], + c = e + (r + 1) * t - 1; + for (n = 0, s = r + 1; n < s; ++n) { + let r = 0; + for (let i = 0; i < t; ++i) { + r <<= 8; + r += a[e++]; + } + i.push(c + r); + } + o = i[r]; + } + for (n = 0, s = i.length - 1; n < s; ++n) { + const e = i[n], + r = i[n + 1]; + t.add(a.subarray(e, r)); + } + return { obj: t, endPos: o }; + } + parseNameIndex(e) { + const t = []; + for (let a = 0, r = e.count; a < r; ++a) { + const r = e.get(a); + t.push(bytesToString(r)); + } + return t; + } + parseStringIndex(e) { + const t = new CFFStrings(); + for (let a = 0, r = e.count; a < r; ++a) { + const r = e.get(a); + t.add(bytesToString(r)); + } + return t; + } + createDict(e, t, a) { + const r = new e(a); + for (const [e, a] of t) r.setByKey(e, a); + return r; + } + parseCharString(e, t, a, r) { + if (!t || e.callDepth > 10) return !1; + let i = e.stackSize; + const n = e.stack; + let s = t.length; + for (let o = 0; o < s; ) { + const c = t[o++]; + let l = null; + if (12 === c) { + const e = t[o++]; + if (0 === e) { + t[o - 2] = 139; + t[o - 1] = 22; + i = 0; + } else l = Rr[e]; + } else if (28 === c) { + n[i] = readInt16(t, o); + o += 2; + i++; + } else if (14 === c) { + if (i >= 4) { + i -= 4; + if (this.seacAnalysisEnabled) { + e.seac = n.slice(i, i + 4); + return !1; + } + } + l = Dr[c]; + } else if (c >= 32 && c <= 246) { + n[i] = c - 139; + i++; + } else if (c >= 247 && c <= 254) { + n[i] = + c < 251 + ? ((c - 247) << 8) + t[o] + 108 + : -((c - 251) << 8) - t[o] - 108; + o++; + i++; + } else if (255 === c) { + n[i] = + ((t[o] << 24) | (t[o + 1] << 16) | (t[o + 2] << 8) | t[o + 3]) / + 65536; + o += 4; + i++; + } else if (19 === c || 20 === c) { + e.hints += i >> 1; + if (0 === e.hints) { + t.copyWithin(o - 1, o, -1); + o -= 1; + s -= 1; + continue; + } + o += (e.hints + 7) >> 3; + i %= 2; + l = Dr[c]; + } else { + if (10 === c || 29 === c) { + const t = 10 === c ? a : r; + if (!t) { + l = Dr[c]; + warn("Missing subrsIndex for " + l.id); + return !1; + } + let s = 32768; + t.count < 1240 ? (s = 107) : t.count < 33900 && (s = 1131); + const o = n[--i] + s; + if (o < 0 || o >= t.count || isNaN(o)) { + l = Dr[c]; + warn("Out of bounds subrIndex for " + l.id); + return !1; + } + e.stackSize = i; + e.callDepth++; + if (!this.parseCharString(e, t.get(o), a, r)) return !1; + e.callDepth--; + i = e.stackSize; + continue; + } + if (11 === c) { + e.stackSize = i; + return !0; + } + if (0 === c && o === t.length) { + t[o - 1] = 14; + l = Dr[14]; + } else { + if (9 === c) { + t.copyWithin(o - 1, o, -1); + o -= 1; + s -= 1; + continue; + } + l = Dr[c]; + } + } + if (l) { + if (l.stem) { + e.hints += i >> 1; + if (3 === c || 23 === c) e.hasVStems = !0; + else if (e.hasVStems && (1 === c || 18 === c)) { + warn("CFF stem hints are in wrong order"); + t[o - 1] = 1 === c ? 3 : 23; + } + } + if ("min" in l && !e.undefStack && i < l.min) { + warn( + "Not enough parameters for " + + l.id + + "; actual: " + + i + + ", expected: " + + l.min, + ); + if (0 === i) { + t[o - 1] = 14; + return !0; + } + return !1; + } + if (e.firstStackClearing && l.stackClearing) { + e.firstStackClearing = !1; + i -= l.min; + i >= 2 && l.stem + ? (i %= 2) + : i > 1 && + warn("Found too many parameters for stack-clearing command"); + i > 0 && (e.width = n[i - 1]); + } + if ("stackDelta" in l) { + "stackFn" in l && l.stackFn(n, i); + i += l.stackDelta; + } else if (l.stackClearing) i = 0; + else if (l.resetStack) { + i = 0; + e.undefStack = !1; + } else if (l.undefStack) { + i = 0; + e.undefStack = !0; + e.firstStackClearing = !1; + } + } + } + s < t.length && t.fill(14, s); + e.stackSize = i; + return !0; + } + parseCharStrings({ + charStrings: e, + localSubrIndex: t, + globalSubrIndex: a, + fdSelect: r, + fdArray: i, + privateDict: n, + }) { + const s = [], + o = [], + c = e.count; + for (let l = 0; l < c; l++) { + const c = e.get(l), + h = { + callDepth: 0, + stackSize: 0, + stack: [], + undefStack: !0, + hints: 0, + firstStackClearing: !0, + seac: null, + width: null, + hasVStems: !1, + }; + let u = !0, + d = null, + f = n; + if (r && i.length) { + const e = r.getFDIndex(l); + if (-1 === e) { + warn("Glyph index is not in fd select."); + u = !1; + } + if (e >= i.length) { + warn("Invalid fd index for glyph index."); + u = !1; + } + if (u) { + f = i[e].privateDict; + d = f.subrsIndex; + } + } else t && (d = t); + u && (u = this.parseCharString(h, c, d, a)); + if (null !== h.width) { + const e = f.getByName("nominalWidthX"); + o[l] = e + h.width; + } else { + const e = f.getByName("defaultWidthX"); + o[l] = e; + } + null !== h.seac && (s[l] = h.seac); + u || e.set(l, new Uint8Array([14])); + } + return { charStrings: e, seacs: s, widths: o }; + } + 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 a = t[0], + r = t[1]; + if (0 === a || r >= this.bytes.length) { + this.emptyPrivateDictionary(e); + return; + } + const i = r + a, + n = this.bytes.subarray(r, i), + s = this.parseDict(n), + o = this.createDict(CFFPrivateDict, s, e.strings); + e.privateDict = o; + 0 === o.getByName("ExpansionFactor") && + o.setByName("ExpansionFactor", 0.06); + if (!o.getByName("Subrs")) return; + const c = o.getByName("Subrs"), + l = r + c; + if (0 === c || l >= this.bytes.length) { + this.emptyPrivateDictionary(e); + return; + } + const h = this.parseIndex(l); + o.subrsIndex = h.obj; + } + parseCharsets(e, t, a, r) { + if (0 === e) return new CFFCharset(!0, Pr.ISO_ADOBE, Fr); + if (1 === e) return new CFFCharset(!0, Pr.EXPERT, Ir); + if (2 === e) return new CFFCharset(!0, Pr.EXPERT_SUBSET, Tr); + const i = this.bytes, + n = e, + s = i[e++], + o = [r ? 0 : ".notdef"]; + let c, l, h; + t -= 1; + switch (s) { + case 0: + for (h = 0; h < t; h++) { + c = (i[e++] << 8) | i[e++]; + o.push(r ? c : a.get(c)); + } + break; + case 1: + for (; o.length <= t; ) { + c = (i[e++] << 8) | i[e++]; + l = i[e++]; + for (h = 0; h <= l; h++) o.push(r ? c++ : a.get(c++)); + } + break; + case 2: + for (; o.length <= t; ) { + c = (i[e++] << 8) | i[e++]; + l = (i[e++] << 8) | i[e++]; + for (h = 0; h <= l; h++) o.push(r ? c++ : a.get(c++)); + } + break; + default: + throw new FormatError("Unknown charset format"); + } + const u = e, + d = i.subarray(n, u); + return new CFFCharset(!1, s, o, d); + } + parseEncoding(e, t, a, r) { + const i = Object.create(null), + n = this.bytes; + let s, + o, + c, + l = !1, + h = null; + if (0 === e || 1 === e) { + l = !0; + s = e; + const t = e ? sr : lr; + for (o = 0, c = r.length; o < c; o++) { + const e = t.indexOf(r[o]); + -1 !== e && (i[e] = o); + } + } else { + const t = e; + s = n[e++]; + switch (127 & s) { + case 0: + const t = n[e++]; + for (o = 1; o <= t; o++) i[n[e++]] = o; + break; + case 1: + const a = n[e++]; + let r = 1; + for (o = 0; o < a; o++) { + const t = n[e++], + a = n[e++]; + for (let e = t; e <= t + a; e++) i[e] = r++; + } + break; + default: + throw new FormatError(`Unknown encoding format: ${s} in CFF`); + } + const c = e; + if (128 & s) { + n[t] &= 127; + !(function readSupplement() { + const t = n[e++]; + for (o = 0; o < t; o++) { + const t = n[e++], + s = (n[e++] << 8) + (255 & n[e++]); + i[t] = r.indexOf(a.get(s)); + } + })(); + } + h = n.subarray(t, c); + } + s &= 127; + return new CFFEncoding(l, s, i, h); + } + parseFDSelect(e, t) { + const a = this.bytes, + r = a[e++], + i = []; + let n; + switch (r) { + case 0: + for (n = 0; n < t; ++n) { + const t = a[e++]; + i.push(t); + } + break; + case 3: + const s = (a[e++] << 8) | a[e++]; + for (n = 0; n < s; ++n) { + let t = (a[e++] << 8) | a[e++]; + if (0 === n && 0 !== t) { + warn( + "parseFDSelect: The first range must have a first GID of 0 -- trying to recover.", + ); + t = 0; + } + const r = a[e++], + s = (a[e] << 8) | a[e + 1]; + for (let e = t; e < s; ++e) i.push(r); + } + e += 2; + break; + default: + throw new FormatError(`parseFDSelect: Unknown format "${r}".`); + } + if (i.length !== t) + throw new FormatError("parseFDSelect: Invalid font data."); + return new CFFFDSelect(r, i); + } +} +class CFF { + constructor() { + this.header = null; + this.names = []; + this.topDict = null; + this.strings = new CFFStrings(); + this.globalSubrIndex = null; + this.encoding = null; + this.charset = null; + this.charStrings = null; + this.fdArray = []; + this.fdSelect = null; + this.isCIDFont = !1; + } + duplicateFirstGlyph() { + if (this.charStrings.count >= 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, a, r) { + this.major = e; + this.minor = t; + this.hdrSize = a; + this.offSize = r; + } +} +class CFFStrings { + constructor() { + this.strings = []; + } + get(e) { + return e >= 0 && e <= 390 + ? Or[e] + : e - Mr <= this.strings.length + ? this.strings[e - Mr] + : Or[0]; + } + getSID(e) { + let t = Or.indexOf(e); + if (-1 !== t) return t; + t = this.strings.indexOf(e); + return -1 !== t ? t + Mr : -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 a of t) + if (isNaN(a)) { + warn(`Invalid CFFDict value: "${t}" for key "${e}".`); + return !0; + } + const a = this.types[e]; + ("num" !== a && "sid" !== a && "offset" !== a) || (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 a of e) { + const e = Array.isArray(a[0]) ? (a[0][0] << 8) + a[0][1] : a[0]; + t.keyToNameMap[e] = a[1]; + t.nameToKeyMap[a[1]] = e; + t.types[e] = a[2]; + t.defaults[e] = a[3]; + t.opcodes[e] = Array.isArray(a[0]) ? a[0] : [a[0]]; + t.order.push(e); + } + return t; + } +} +const Nr = [ + [[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"], + [0.001, 0, 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(Nr)); + } + constructor(e) { + super(CFFTopDict.tables, e); + this.privateDict = null; + } +} +const Er = [ + [6, "BlueValues", "delta", null], + [7, "OtherBlues", "delta", null], + [8, "FamilyBlues", "delta", null], + [9, "FamilyOtherBlues", "delta", null], + [[12, 9], "BlueScale", "num", 0.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", 0.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(Er)); + } + constructor(e) { + super(CFFPrivateDict.tables, e); + this.subrsIndex = null; + } +} +const Pr = { ISO_ADOBE: 0, EXPERT: 1, EXPERT_SUBSET: 2 }; +class CFFCharset { + constructor(e, t, a, r) { + this.predefined = e; + this.format = t; + this.charset = a; + this.raw = r; + } +} +class CFFEncoding { + constructor(e, t, a, r) { + this.predefined = e; + this.format = t; + this.encoding = a; + this.raw = r; + } +} +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, a) { + if (!(e in this.offsets)) + throw new FormatError(`Not tracking location of ${e}`); + const r = a.data, + i = this.offsets[e]; + for (let e = 0, a = t.length; e < a; ++e) { + const a = 5 * e + i, + n = a + 1, + s = a + 2, + o = a + 3, + c = a + 4; + if (29 !== r[a] || 0 !== r[n] || 0 !== r[s] || 0 !== r[o] || 0 !== r[c]) + throw new FormatError("writing to an offset that is not empty"); + const l = t[e]; + r[a] = 29; + r[n] = (l >> 24) & 255; + r[s] = (l >> 16) & 255; + r[o] = (l >> 8) & 255; + r[c] = 255 & l; + } + } +} +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; + }, + }, + a = this.compileHeader(e.header); + t.add(a); + const r = this.compileNameIndex(e.names); + t.add(r); + if (e.isCIDFont && e.topDict.hasName("FontMatrix")) { + const t = e.topDict.getByName("FontMatrix"); + e.topDict.removeByName("FontMatrix"); + for (const a of e.fdArray) { + let e = t.slice(0); + a.hasName("FontMatrix") && + (e = Util.transform(e, a.getByName("FontMatrix"))); + a.setByName("FontMatrix", e); + } + } + const i = e.topDict.getByName("XUID"); + i?.length > 16 && e.topDict.removeByName("XUID"); + e.topDict.setByName("charset", 0); + let n = this.compileTopDicts([e.topDict], t.length, e.isCIDFont); + t.add(n.output); + const s = n.trackers[0], + o = this.compileStringIndex(e.strings.strings); + t.add(o); + const c = this.compileIndex(e.globalSubrIndex); + t.add(c); + if (e.encoding && e.topDict.hasName("Encoding")) + if (e.encoding.predefined) + s.setEntryLocation("Encoding", [e.encoding.format], t); + else { + const a = this.compileEncoding(e.encoding); + s.setEntryLocation("Encoding", [t.length], t); + t.add(a); + } + const l = this.compileCharset( + e.charset, + e.charStrings.count, + e.strings, + e.isCIDFont, + ); + s.setEntryLocation("charset", [t.length], t); + t.add(l); + const h = this.compileCharStrings(e.charStrings); + s.setEntryLocation("CharStrings", [t.length], t); + t.add(h); + if (e.isCIDFont) { + s.setEntryLocation("FDSelect", [t.length], t); + const a = this.compileFDSelect(e.fdSelect); + t.add(a); + n = this.compileTopDicts(e.fdArray, t.length, !0); + s.setEntryLocation("FDArray", [t.length], t); + t.add(n.output); + const r = n.trackers; + this.compilePrivateDicts(e.fdArray, r, t); + } + this.compilePrivateDicts([e.topDict], [s], 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 a = CFFCompiler.EncodeFloatRegExp.exec(t); + if (a) { + const r = parseFloat("1e" + ((a[2] ? +a[2] : 0) + a[1].length)); + t = (Math.round(e * r) / r).toString(); + } + let r, + i, + n = ""; + for (r = 0, i = t.length; r < i; ++r) { + const e = t[r]; + n += + "e" === e + ? "-" === t[++r] + ? "c" + : "b" + : "." === e + ? "a" + : "-" === e + ? "e" + : e; + } + n += 1 & n.length ? "f" : "ff"; + const s = [30]; + for (r = 0, i = n.length; r < i; r += 2) + s.push(parseInt(n.substring(r, r + 2), 16)); + return s; + } + encodeInteger(e) { + let t; + t = + e >= -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 a of e) { + const e = Math.min(a.length, 127); + let r = new Array(e); + for (let t = 0; t < e; t++) { + let e = a[t]; + (e < "!" || + e > "~" || + "[" === e || + "]" === e || + "(" === e || + ")" === e || + "{" === e || + "}" === e || + "<" === e || + ">" === e || + "/" === e || + "%" === e) && + (e = "_"); + r[t] = e; + } + r = r.join(""); + "" === r && (r = "Bad_Font_Name"); + t.add(stringToBytes(r)); + } + return this.compileIndex(t); + } + compileTopDicts(e, t, a) { + const r = []; + let i = new CFFIndex(); + for (const n of e) { + if (a) { + n.removeByName("CIDFontVersion"); + n.removeByName("CIDFontRevision"); + n.removeByName("CIDFontType"); + n.removeByName("CIDCount"); + n.removeByName("UIDBase"); + } + const e = new CFFOffsetTracker(), + s = this.compileDict(n, e); + r.push(e); + i.add(s); + e.offset(t); + } + i = this.compileIndex(i, r); + return { trackers: r, output: i }; + } + compilePrivateDicts(e, t, a) { + for (let r = 0, i = e.length; r < i; ++r) { + const i = e[r], + n = i.privateDict; + if (!n || !i.hasName("Private")) + throw new FormatError("There must be a private dictionary."); + const s = new CFFOffsetTracker(), + o = this.compileDict(n, s); + let c = a.length; + s.offset(c); + o.length || (c = 0); + t[r].setEntryLocation("Private", [o.length, c], a); + a.add(o); + if (n.subrsIndex && n.hasName("Subrs")) { + const e = this.compileIndex(n.subrsIndex); + s.setEntryLocation("Subrs", [o.length], a); + a.add(e); + } + } + } + compileDict(e, t) { + const a = []; + for (const r of e.order) { + if (!(r in e.values)) continue; + let i = e.values[r], + n = e.types[r]; + Array.isArray(n) || (n = [n]); + Array.isArray(i) || (i = [i]); + if (0 !== i.length) { + for (let s = 0, o = n.length; s < o; ++s) { + const o = n[s], + c = i[s]; + switch (o) { + case "num": + case "sid": + a.push(...this.encodeNumber(c)); + break; + case "offset": + const n = e.keyToNameMap[r]; + t.isTracking(n) || t.track(n, a.length); + a.push(29, 0, 0, 0, 0); + break; + case "array": + case "delta": + a.push(...this.encodeNumber(c)); + for (let e = 1, t = i.length; e < t; ++e) + a.push(...this.encodeNumber(i[e])); + break; + default: + throw new FormatError(`Unknown data type of ${o}`); + } + } + a.push(...e.opcodes[r]); + } + } + return a; + } + compileStringIndex(e) { + const t = new CFFIndex(); + for (const a of e) t.add(stringToBytes(a)); + return this.compileIndex(t); + } + compileCharStrings(e) { + const t = new CFFIndex(); + for (let a = 0; a < e.count; a++) { + const r = e.get(a); + 0 !== r.length ? t.add(r) : t.add(new Uint8Array([139, 14])); + } + return this.compileIndex(t); + } + compileCharset(e, t, a, r) { + let i; + const n = t - 1; + if (r) { + const e = n - 1; + i = new Uint8Array([2, 0, 1, (e >> 8) & 255, 255 & e]); + } else { + i = new Uint8Array(1 + 2 * n); + i[0] = 0; + let t = 0; + const r = e.charset.length; + let s = !1; + for (let n = 1; n < i.length; n += 2) { + let o = 0; + if (t < r) { + const r = e.charset[t++]; + o = a.getSID(r); + if (-1 === o) { + o = 0; + if (!s) { + s = !0; + warn(`Couldn't find ${r} in CFF strings`); + } + } + } + i[n] = (o >> 8) & 255; + i[n + 1] = 255 & o; + } + } + return this.compileTypedArray(i); + } + compileEncoding(e) { + return this.compileTypedArray(e.raw); + } + compileFDSelect(e) { + const t = e.format; + let a, r; + switch (t) { + case 0: + a = new Uint8Array(1 + e.fdSelect.length); + a[0] = t; + for (r = 0; r < e.fdSelect.length; r++) a[r + 1] = e.fdSelect[r]; + break; + case 3: + const i = 0; + let n = e.fdSelect[0]; + const s = [t, 0, 0, (i >> 8) & 255, 255 & i, n]; + for (r = 1; r < e.fdSelect.length; r++) { + const t = e.fdSelect[r]; + if (t !== n) { + s.push((r >> 8) & 255, 255 & r, t); + n = t; + } + } + const o = (s.length - 3) / 3; + s[1] = (o >> 8) & 255; + s[2] = 255 & o; + s.push((r >> 8) & 255, 255 & r); + a = new Uint8Array(s); + } + return this.compileTypedArray(a); + } + compileTypedArray(e) { + return Array.from(e); + } + compileIndex(e, t = []) { + const a = e.objects, + r = a.length; + if (0 === r) return [0, 0]; + const i = [(r >> 8) & 255, 255 & r]; + let n, + s, + o = 1; + for (n = 0; n < r; ++n) o += a[n].length; + s = o < 256 ? 1 : o < 65536 ? 2 : o < 16777216 ? 3 : 4; + i.push(s); + let c = 1; + for (n = 0; n < r + 1; n++) { + 1 === s + ? i.push(255 & c) + : 2 === s + ? i.push((c >> 8) & 255, 255 & c) + : 3 === s + ? i.push((c >> 16) & 255, (c >> 8) & 255, 255 & c) + : i.push( + (c >>> 24) & 255, + (c >> 16) & 255, + (c >> 8) & 255, + 255 & c, + ); + a[n] && (c += a[n].length); + } + for (n = 0; n < r; n++) { + t[n] && t[n].offset(i.length); + i.push(...a[n]); + } + return i; + } +} +const Lr = 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"; + }), + _r = 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"; + }), + Ur = 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"; + }), + jr = 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; + }), + Xr = getLookupTableFactory(function (e) { + e.Dingbats = !0; + e.Symbol = !0; + e.ZapfDingbats = !0; + e.Wingdings = !0; + e["Wingdings-Bold"] = !0; + e["Wingdings-Regular"] = !0; + }), + qr = 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[570] = 1040; + e[571] = 1041; + e[572] = 1042; + e[573] = 1043; + e[574] = 1044; + e[575] = 1045; + e[576] = 1046; + e[577] = 1047; + e[578] = 1048; + e[579] = 1049; + e[580] = 1050; + e[581] = 1051; + e[582] = 1052; + e[583] = 1053; + e[584] = 1054; + e[585] = 1055; + e[586] = 1056; + e[587] = 1057; + e[588] = 1058; + e[589] = 1059; + e[590] = 1060; + e[591] = 1061; + e[592] = 1062; + e[593] = 1063; + e[594] = 1064; + e[595] = 1065; + e[596] = 1066; + e[597] = 1067; + e[598] = 1068; + e[599] = 1069; + e[600] = 1070; + 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; + }), + Hr = getLookupTableFactory(function (e) { + e[227] = 322; + e[264] = 261; + e[291] = 346; + }), + Wr = 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[940] = 163; + 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 Lr()[t]; +} +function isKnownFontName(e) { + const t = normalizeFontName(e); + return !!(Lr()[t] || Ur()[t] || jr()[t] || Xr()[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 a in t) if (t[a] === e) return 0 | a; + 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, a = this.lastChar; t <= a; 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 a = new CFFParser(e, t, wr); + this.cff = a.parse(); + this.cff.duplicateFirstGlyph(); + const r = new CFFCompiler(this.cff); + this.seacs = this.cff.seacs; + try { + this.data = r.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: a, cMap: r } = t, + i = e.charset.charset; + let n, s; + if (t.composite) { + let t, o; + if (a?.length > 0) { + t = Object.create(null); + for (let e = 0, r = a.length; e < r; e++) { + const r = a[e]; + void 0 !== r && (t[r] = e); + } + } + n = Object.create(null); + if (e.isCIDFont) + for (s = 0; s < i.length; s++) { + const e = i[s]; + o = r.charCodeOf(e); + void 0 !== t?.[o] && (o = t[o]); + n[o] = s; + } + else + for (s = 0; s < e.charStrings.count; s++) { + o = r.charCodeOf(s); + n[o] = s; + } + return n; + } + let o = e.encoding ? e.encoding.encoding : null; + t.isInternalFont && (o = t.defaultEncoding); + n = type1FontGlyphMapping(t, o, i); + return n; + } + hasGlyphId(e) { + return this.cff.hasGlyphId(e); + } + _createBuiltInEncoding() { + const { charset: e, encoding: t } = this.cff; + if (!e || !t) return; + const a = e.charset, + r = t.encoding, + i = []; + for (const e in r) { + const t = r[e]; + if (t >= 0) { + const r = a[t]; + r && (i[e] = r); + } + } + i.length > 0 && (this.properties.builtInEncoding = i); + } +} +function getFloat214(e, t) { + return readInt16(e, t) / 16384; +} +function getSubroutineBias(e) { + const t = e.length; + let a = 32768; + t < 1240 ? (a = 107) : t < 33900 && (a = 1131); + return a; +} +function parseCmap(e, t, a) { + const r = + 1 === readUint16(e, t + 2) ? readUint32(e, t + 8) : readUint32(e, t + 16), + i = readUint16(e, t + r); + let n, s, o; + if (4 === i) { + readUint16(e, t + r + 2); + const a = readUint16(e, t + r + 6) >> 1; + s = t + r + 14; + n = []; + for (o = 0; o < a; o++, s += 2) n[o] = { end: readUint16(e, s) }; + s += 2; + for (o = 0; o < a; o++, s += 2) n[o].start = readUint16(e, s); + for (o = 0; o < a; o++, s += 2) n[o].idDelta = readUint16(e, s); + for (o = 0; o < a; o++, s += 2) { + let t = readUint16(e, s); + if (0 !== t) { + n[o].ids = []; + for (let a = 0, r = n[o].end - n[o].start + 1; a < r; a++) { + n[o].ids[a] = readUint16(e, s + t); + t += 2; + } + } + } + return n; + } + if (12 === i) { + const a = readUint32(e, t + r + 12); + s = t + r + 16; + n = []; + for (o = 0; o < a; o++) { + t = readUint32(e, s); + n.push({ + start: t, + end: readUint32(e, s + 4), + idDelta: readUint32(e, s + 8) - t, + }); + s += 12; + } + return n; + } + throw new FormatError(`unsupported cmap: ${i}`); +} +function parseCff(e, t, a, r) { + const i = new CFFParser(new Stream(e, t, a - t), {}, r).parse(); + return { + glyphs: i.charStrings.objects, + subrs: i.topDict.privateDict?.subrsIndex?.objects, + gsubrs: i.globalSubrIndex?.objects, + isCFFCIDFont: i.isCIDFont, + fdSelect: i.fdSelect, + fdArray: i.fdArray, + }; +} +function lookupCmap(e, t) { + const a = t.codePointAt(0); + let r = 0, + i = 0, + n = e.length - 1; + for (; i < n; ) { + const t = (i + n + 1) >> 1; + a < e[t].start ? (n = t - 1) : (i = t); + } + e[i].start <= a && + a <= e[i].end && + (r = (e[i].idDelta + (e[i].ids ? e[i].ids[a - e[i].start] : a)) & 65535); + return { charCode: a, glyphId: r }; +} +function compileGlyf(e, t, a) { + function moveTo(e, a) { + s && t.add($t, s); + s = [e, a]; + t.add(zt, [e, a]); + } + function lineTo(e, a) { + t.add($t, [e, a]); + } + function quadraticCurveTo(e, a, r, i) { + t.add(Kt, [e, a, r, i]); + } + let r = 0; + const i = readInt16(e, r); + let n, + s = null, + o = 0, + c = 0; + r += 10; + if (i < 0) + do { + n = readUint16(e, r); + const i = readUint16(e, r + 2); + r += 4; + let s, l; + if (1 & n) { + if (2 & n) { + s = readInt16(e, r); + l = readInt16(e, r + 2); + } else { + s = readUint16(e, r); + l = readUint16(e, r + 2); + } + r += 4; + } else if (2 & n) { + s = readInt8(e, r++); + l = readInt8(e, r++); + } else { + s = e[r++]; + l = e[r++]; + } + if (2 & n) { + o = s; + c = l; + } else { + o = 0; + c = 0; + } + let h = 1, + u = 1, + d = 0, + f = 0; + if (8 & n) { + h = u = getFloat214(e, r); + r += 2; + } else if (64 & n) { + h = getFloat214(e, r); + u = getFloat214(e, r + 2); + r += 4; + } else if (128 & n) { + h = getFloat214(e, r); + d = getFloat214(e, r + 2); + f = getFloat214(e, r + 4); + u = getFloat214(e, r + 6); + r += 8; + } + const g = a.glyphs[i]; + if (g) { + t.save(); + t.transform([h, d, f, u, o, c]); + compileGlyf(g, t, a); + t.restore(); + } + } while (32 & n); + else { + const t = []; + let a, s; + for (a = 0; a < i; a++) { + t.push(readUint16(e, r)); + r += 2; + } + r += 2 + readUint16(e, r); + const l = t.at(-1) + 1, + h = []; + for (; h.length < l; ) { + n = e[r++]; + let t = 1; + 8 & n && (t += e[r++]); + for (; t-- > 0; ) h.push({ flags: n }); + } + for (a = 0; a < l; a++) { + switch (18 & h[a].flags) { + case 0: + o += readInt16(e, r); + r += 2; + break; + case 2: + o -= e[r++]; + break; + case 18: + o += e[r++]; + } + h[a].x = o; + } + for (a = 0; a < l; a++) { + switch (36 & h[a].flags) { + case 0: + c += readInt16(e, r); + r += 2; + break; + case 4: + c -= e[r++]; + break; + case 36: + c += e[r++]; + } + h[a].y = c; + } + let u = 0; + for (r = 0; r < i; r++) { + const e = t[r], + i = h.slice(u, e + 1); + if (1 & i[0].flags) i.push(i[0]); + else if (1 & i.at(-1).flags) i.unshift(i.at(-1)); + else { + const e = { + flags: 1, + x: (i[0].x + i.at(-1).x) / 2, + y: (i[0].y + i.at(-1).y) / 2, + }; + i.unshift(e); + i.push(e); + } + moveTo(i[0].x, i[0].y); + for (a = 1, s = i.length; a < s; a++) + if (1 & i[a].flags) lineTo(i[a].x, i[a].y); + else if (1 & i[a + 1].flags) { + quadraticCurveTo(i[a].x, i[a].y, i[a + 1].x, i[a + 1].y); + a++; + } else + quadraticCurveTo( + i[a].x, + i[a].y, + (i[a].x + i[a + 1].x) / 2, + (i[a].y + i[a + 1].y) / 2, + ); + u = e + 1; + } + } +} +function compileCharString(e, t, a, r) { + function moveTo(e, a) { + c && t.add($t, c); + c = [e, a]; + t.add(zt, [e, a]); + } + function lineTo(e, a) { + t.add($t, [e, a]); + } + function bezierCurveTo(e, a, r, i, n, s) { + t.add(Vt, [e, a, r, i, n, s]); + } + const i = []; + let n = 0, + s = 0, + o = 0, + c = null; + !(function parse(e) { + let c = 0; + for (; c < e.length; ) { + let l, + h, + u, + d, + f, + g, + p, + m, + b, + y = !1, + w = e[c++]; + switch (w) { + case 1: + case 3: + case 18: + case 23: + o += i.length >> 1; + y = !0; + break; + case 4: + s += i.pop(); + moveTo(n, s); + y = !0; + break; + case 5: + for (; i.length > 0; ) { + n += i.shift(); + s += i.shift(); + lineTo(n, s); + } + break; + case 6: + for (; i.length > 0; ) { + n += i.shift(); + lineTo(n, s); + if (0 === i.length) break; + s += i.shift(); + lineTo(n, s); + } + break; + case 7: + for (; i.length > 0; ) { + s += i.shift(); + lineTo(n, s); + if (0 === i.length) break; + n += i.shift(); + lineTo(n, s); + } + break; + case 8: + for (; i.length > 0; ) { + l = n + i.shift(); + u = s + i.shift(); + h = l + i.shift(); + d = u + i.shift(); + n = h + i.shift(); + s = d + i.shift(); + bezierCurveTo(l, u, h, d, n, s); + } + break; + case 10: + m = i.pop(); + b = null; + if (a.isCFFCIDFont) { + const e = a.fdSelect.getFDIndex(r); + if (e >= 0 && e < a.fdArray.length) { + const t = a.fdArray[e]; + let r; + t.privateDict?.subrsIndex && + (r = t.privateDict.subrsIndex.objects); + if (r) { + m += getSubroutineBias(r); + b = r[m]; + } + } else warn("Invalid fd index for glyph index."); + } else b = a.subrs[m + a.subrsBias]; + b && parse(b); + break; + case 11: + return; + case 12: + w = e[c++]; + switch (w) { + case 34: + l = n + i.shift(); + h = l + i.shift(); + f = s + i.shift(); + n = h + i.shift(); + bezierCurveTo(l, s, h, f, n, f); + l = n + i.shift(); + h = l + i.shift(); + n = h + i.shift(); + bezierCurveTo(l, f, h, s, n, s); + break; + case 35: + l = n + i.shift(); + u = s + i.shift(); + h = l + i.shift(); + d = u + i.shift(); + n = h + i.shift(); + s = d + i.shift(); + bezierCurveTo(l, u, h, d, n, s); + l = n + i.shift(); + u = s + i.shift(); + h = l + i.shift(); + d = u + i.shift(); + n = h + i.shift(); + s = d + i.shift(); + bezierCurveTo(l, u, h, d, n, s); + i.pop(); + break; + case 36: + l = n + i.shift(); + f = s + i.shift(); + h = l + i.shift(); + g = f + i.shift(); + n = h + i.shift(); + bezierCurveTo(l, f, h, g, n, g); + l = n + i.shift(); + h = l + i.shift(); + p = g + i.shift(); + n = h + i.shift(); + bezierCurveTo(l, g, h, p, n, s); + break; + case 37: + const e = n, + t = s; + l = n + i.shift(); + u = s + i.shift(); + h = l + i.shift(); + d = u + i.shift(); + n = h + i.shift(); + s = d + i.shift(); + bezierCurveTo(l, u, h, d, n, s); + l = n + i.shift(); + u = s + i.shift(); + h = l + i.shift(); + d = u + i.shift(); + n = h; + s = d; + Math.abs(n - e) > Math.abs(s - t) + ? (n += i.shift()) + : (s += i.shift()); + bezierCurveTo(l, u, h, d, n, s); + break; + default: + throw new FormatError(`unknown operator: 12 ${w}`); + } + break; + case 14: + if (i.length >= 4) { + const e = i.pop(), + r = i.pop(); + s = i.pop(); + n = i.pop(); + t.save(); + t.translate(n, s); + let o = lookupCmap( + a.cmap, + String.fromCharCode(a.glyphNameMap[lr[e]]), + ); + compileCharString(a.glyphs[o.glyphId], t, a, o.glyphId); + t.restore(); + o = lookupCmap(a.cmap, String.fromCharCode(a.glyphNameMap[lr[r]])); + compileCharString(a.glyphs[o.glyphId], t, a, o.glyphId); + } + return; + case 19: + case 20: + o += i.length >> 1; + c += (o + 7) >> 3; + y = !0; + break; + case 21: + s += i.pop(); + n += i.pop(); + moveTo(n, s); + y = !0; + break; + case 22: + n += i.pop(); + moveTo(n, s); + y = !0; + break; + case 24: + for (; i.length > 2; ) { + l = n + i.shift(); + u = s + i.shift(); + h = l + i.shift(); + d = u + i.shift(); + n = h + i.shift(); + s = d + i.shift(); + bezierCurveTo(l, u, h, d, n, s); + } + n += i.shift(); + s += i.shift(); + lineTo(n, s); + break; + case 25: + for (; i.length > 6; ) { + n += i.shift(); + s += i.shift(); + lineTo(n, s); + } + l = n + i.shift(); + u = s + i.shift(); + h = l + i.shift(); + d = u + i.shift(); + n = h + i.shift(); + s = d + i.shift(); + bezierCurveTo(l, u, h, d, n, s); + break; + case 26: + i.length % 2 && (n += i.shift()); + for (; i.length > 0; ) { + l = n; + u = s + i.shift(); + h = l + i.shift(); + d = u + i.shift(); + n = h; + s = d + i.shift(); + bezierCurveTo(l, u, h, d, n, s); + } + break; + case 27: + i.length % 2 && (s += i.shift()); + for (; i.length > 0; ) { + l = n + i.shift(); + u = s; + h = l + i.shift(); + d = u + i.shift(); + n = h + i.shift(); + s = d; + bezierCurveTo(l, u, h, d, n, s); + } + break; + case 28: + i.push(readInt16(e, c)); + c += 2; + break; + case 29: + m = i.pop() + a.gsubrsBias; + b = a.gsubrs[m]; + b && parse(b); + break; + case 30: + for (; i.length > 0; ) { + l = n; + u = s + i.shift(); + h = l + i.shift(); + d = u + i.shift(); + n = h + i.shift(); + s = d + (1 === i.length ? i.shift() : 0); + bezierCurveTo(l, u, h, d, n, s); + if (0 === i.length) break; + l = n + i.shift(); + u = s; + h = l + i.shift(); + d = u + i.shift(); + s = d + i.shift(); + n = h + (1 === i.length ? i.shift() : 0); + bezierCurveTo(l, u, h, d, n, s); + } + break; + case 31: + for (; i.length > 0; ) { + l = n + i.shift(); + u = s; + h = l + i.shift(); + d = u + i.shift(); + s = d + i.shift(); + n = h + (1 === i.length ? i.shift() : 0); + bezierCurveTo(l, u, h, d, n, s); + if (0 === i.length) break; + l = n; + u = s + i.shift(); + h = l + i.shift(); + d = u + i.shift(); + n = h + i.shift(); + s = d + (1 === i.length ? i.shift() : 0); + bezierCurveTo(l, u, h, d, n, s); + } + break; + default: + if (w < 32) throw new FormatError(`unknown operator: ${w}`); + if (w < 247) i.push(w - 139); + else if (w < 251) i.push(256 * (w - 247) + e[c++] + 108); + else if (w < 255) i.push(256 * -(w - 251) - e[c++] - 108); + else { + i.push( + ((e[c] << 24) | (e[c + 1] << 16) | (e[c + 2] << 8) | e[c + 3]) / + 65536, + ); + c += 4; + } + } + y && (i.length = 0); + } + })(e); +} +class Commands { + cmds = []; + transformStack = []; + currentTransform = [1, 0, 0, 1, 0, 0]; + add(e, t) { + if (t) { + const { currentTransform: a } = this; + for (let e = 0, r = t.length; e < r; e += 2) Util.applyTransform(t, a, e); + this.cmds.push(e, ...t); + } else this.cmds.push(e); + } + transform(e) { + this.currentTransform = Util.transform(this.currentTransform, e); + } + translate(e, t) { + this.transform([1, 0, 0, 1, e, t]); + } + save() { + this.transformStack.push(this.currentTransform.slice()); + } + restore() { + this.currentTransform = this.transformStack.pop() || [1, 0, 0, 1, 0, 0]; + } + getPath() { + return new ( + FeatureTest.isFloat16ArraySupported ? Float16Array : Float32Array + )(this.cmds); + } +} +class CompiledFont { + constructor(e) { + this.fontMatrix = e; + this.compiledGlyphs = Object.create(null); + this.compiledCharCodeToGlyphId = Object.create(null); + } + getPathJs(e) { + const { charCode: t, glyphId: a } = lookupCmap(this.cmap, e); + let r, + i = this.compiledGlyphs[a]; + if (void 0 === i) { + try { + i = this.compileGlyph(this.glyphs[a], a); + } catch (e) { + i = ""; + r = e; + } + this.compiledGlyphs[a] = i; + } + this.compiledCharCodeToGlyphId[t] ??= a; + if (r) throw r; + return i; + } + compileGlyph(e, a) { + if (!e?.length || 14 === e[0]) return ""; + let r = this.fontMatrix; + if (this.isCFFCIDFont) { + const e = this.fdSelect.getFDIndex(a); + if (e >= 0 && e < this.fdArray.length) { + r = this.fdArray[e].getByName("FontMatrix") || t; + } else warn("Invalid fd index for glyph index."); + } + assert(isNumberArray(r, 6), "Expected a valid fontMatrix."); + const i = new Commands(); + i.transform(r.slice()); + this.compileGlyphImpl(e, i, a); + i.add(Jt); + return i.getPath(); + } + compileGlyphImpl() { + unreachable("Children classes should implement this."); + } + hasBuiltPath(e) { + const { charCode: t, glyphId: a } = lookupCmap(this.cmap, e); + return ( + void 0 !== this.compiledGlyphs[a] && + void 0 !== this.compiledCharCodeToGlyphId[t] + ); + } +} +class TrueTypeCompiled extends CompiledFont { + constructor(e, t, a) { + super(a || [488e-6, 0, 0, 488e-6, 0, 0]); + this.glyphs = e; + this.cmap = t; + } + compileGlyphImpl(e, t) { + compileGlyf(e, t, this); + } +} +class Type2Compiled extends CompiledFont { + constructor(e, t, a) { + super(a || [0.001, 0, 0, 0.001, 0, 0]); + this.glyphs = e.glyphs; + this.gsubrs = e.gsubrs || []; + this.subrs = e.subrs || []; + this.cmap = t; + this.glyphNameMap = fr(); + this.gsubrsBias = getSubroutineBias(this.gsubrs); + this.subrsBias = getSubroutineBias(this.subrs); + this.isCFFCIDFont = e.isCFFCIDFont; + this.fdSelect = e.fdSelect; + this.fdArray = e.fdArray; + } + compileGlyphImpl(e, t, a) { + compileCharString(e, t, this, a); + } +} +class FontRendererFactory { + static create(e, t) { + const a = new Uint8Array(e.data); + let r, i, n, s, o, c; + const l = readUint16(a, 4); + for (let e = 0, h = 12; e < l; e++, h += 16) { + const e = bytesToString(a.subarray(h, h + 4)), + l = readUint32(a, h + 8), + u = readUint32(a, h + 12); + switch (e) { + case "cmap": + r = parseCmap(a, l); + break; + case "glyf": + i = a.subarray(l, l + u); + break; + case "loca": + n = a.subarray(l, l + u); + break; + case "head": + c = readUint16(a, l + 18); + o = readUint16(a, l + 50); + break; + case "CFF ": + s = parseCff(a, l, l + u, t); + } + } + if (i) { + const t = c ? [1 / c, 0, 0, 1 / c, 0, 0] : e.fontMatrix; + return new TrueTypeCompiled( + (function parseGlyfTable(e, t, a) { + let r, i; + if (a) { + r = 4; + i = readUint32; + } else { + r = 2; + i = (e, t) => 2 * readUint16(e, t); + } + const n = []; + let s = i(t, 0); + for (let a = r; a < t.length; a += r) { + const r = i(t, a); + n.push(e.subarray(s, r)); + s = r; + } + return n; + })(i, n, o), + r, + t, + ); + } + return new Type2Compiled(s, r, e.fontMatrix); + } +} +const Gr = getLookupTableFactory(function (e) { + e.Courier = 600; + e["Courier-Bold"] = 600; + e["Courier-BoldOblique"] = 600; + e["Courier-Oblique"] = 600; + e.Helvetica = getLookupTableFactory(function (e) { + e.space = 278; + e.exclam = 278; + e.quotedbl = 355; + e.numbersign = 556; + e.dollar = 556; + e.percent = 889; + e.ampersand = 667; + e.quoteright = 222; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 389; + e.plus = 584; + e.comma = 278; + e.hyphen = 333; + e.period = 278; + e.slash = 278; + e.zero = 556; + e.one = 556; + e.two = 556; + e.three = 556; + e.four = 556; + e.five = 556; + e.six = 556; + e.seven = 556; + e.eight = 556; + e.nine = 556; + e.colon = 278; + e.semicolon = 278; + e.less = 584; + e.equal = 584; + e.greater = 584; + e.question = 556; + e.at = 1015; + e.A = 667; + e.B = 667; + e.C = 722; + e.D = 722; + e.E = 667; + e.F = 611; + e.G = 778; + e.H = 722; + e.I = 278; + e.J = 500; + e.K = 667; + e.L = 556; + e.M = 833; + e.N = 722; + e.O = 778; + e.P = 667; + e.Q = 778; + e.R = 722; + e.S = 667; + e.T = 611; + e.U = 722; + e.V = 667; + e.W = 944; + e.X = 667; + e.Y = 667; + e.Z = 611; + e.bracketleft = 278; + e.backslash = 278; + e.bracketright = 278; + e.asciicircum = 469; + e.underscore = 556; + e.quoteleft = 222; + e.a = 556; + e.b = 556; + e.c = 500; + e.d = 556; + e.e = 556; + e.f = 278; + e.g = 556; + e.h = 556; + e.i = 222; + e.j = 222; + e.k = 500; + e.l = 222; + e.m = 833; + e.n = 556; + e.o = 556; + e.p = 556; + e.q = 556; + e.r = 333; + e.s = 500; + e.t = 278; + e.u = 556; + e.v = 500; + e.w = 722; + e.x = 500; + e.y = 500; + e.z = 500; + e.braceleft = 334; + e.bar = 260; + e.braceright = 334; + e.asciitilde = 584; + e.exclamdown = 333; + e.cent = 556; + e.sterling = 556; + e.fraction = 167; + e.yen = 556; + e.florin = 556; + e.section = 556; + e.currency = 556; + e.quotesingle = 191; + e.quotedblleft = 333; + e.guillemotleft = 556; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 500; + e.fl = 500; + e.endash = 556; + e.dagger = 556; + e.daggerdbl = 556; + e.periodcentered = 278; + e.paragraph = 537; + e.bullet = 350; + e.quotesinglbase = 222; + e.quotedblbase = 333; + e.quotedblright = 333; + e.guillemotright = 556; + e.ellipsis = 1e3; + e.perthousand = 1e3; + e.questiondown = 611; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 1e3; + e.AE = 1e3; + e.ordfeminine = 370; + e.Lslash = 556; + e.Oslash = 778; + e.OE = 1e3; + e.ordmasculine = 365; + e.ae = 889; + e.dotlessi = 278; + e.lslash = 222; + e.oslash = 611; + e.oe = 944; + e.germandbls = 611; + e.Idieresis = 278; + e.eacute = 556; + e.abreve = 556; + e.uhungarumlaut = 556; + e.ecaron = 556; + e.Ydieresis = 667; + e.divide = 584; + e.Yacute = 667; + e.Acircumflex = 667; + e.aacute = 556; + e.Ucircumflex = 722; + e.yacute = 500; + e.scommaaccent = 500; + e.ecircumflex = 556; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 556; + e.Uacute = 722; + e.uogonek = 556; + e.Edieresis = 667; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 737; + e.Emacron = 667; + e.ccaron = 500; + e.aring = 556; + e.Ncommaaccent = 722; + e.lacute = 222; + e.agrave = 556; + e.Tcommaaccent = 611; + e.Cacute = 722; + e.atilde = 556; + e.Edotaccent = 667; + e.scaron = 500; + e.scedilla = 500; + e.iacute = 278; + e.lozenge = 471; + e.Rcaron = 722; + e.Gcommaaccent = 778; + e.ucircumflex = 556; + e.acircumflex = 556; + e.Amacron = 667; + e.rcaron = 333; + e.ccedilla = 500; + e.Zdotaccent = 611; + e.Thorn = 667; + e.Omacron = 778; + e.Racute = 722; + e.Sacute = 667; + e.dcaron = 643; + e.Umacron = 722; + e.uring = 556; + e.threesuperior = 333; + e.Ograve = 778; + e.Agrave = 667; + e.Abreve = 667; + e.multiply = 584; + e.uacute = 556; + e.Tcaron = 611; + e.partialdiff = 476; + e.ydieresis = 500; + e.Nacute = 722; + e.icircumflex = 278; + e.Ecircumflex = 667; + e.adieresis = 556; + e.edieresis = 556; + e.cacute = 500; + e.nacute = 556; + e.umacron = 556; + e.Ncaron = 722; + e.Iacute = 278; + e.plusminus = 584; + e.brokenbar = 260; + e.registered = 737; + e.Gbreve = 778; + e.Idotaccent = 278; + e.summation = 600; + e.Egrave = 667; + e.racute = 333; + e.omacron = 556; + e.Zacute = 611; + e.Zcaron = 611; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 722; + e.lcommaaccent = 222; + e.tcaron = 317; + e.eogonek = 556; + e.Uogonek = 722; + e.Aacute = 667; + e.Adieresis = 667; + e.egrave = 556; + e.zacute = 500; + e.iogonek = 222; + e.Oacute = 778; + e.oacute = 556; + e.amacron = 556; + e.sacute = 500; + e.idieresis = 278; + e.Ocircumflex = 778; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 556; + e.twosuperior = 333; + e.Odieresis = 778; + e.mu = 556; + e.igrave = 278; + e.ohungarumlaut = 556; + e.Eogonek = 667; + e.dcroat = 556; + e.threequarters = 834; + e.Scedilla = 667; + e.lcaron = 299; + e.Kcommaaccent = 667; + e.Lacute = 556; + e.trademark = 1e3; + e.edotaccent = 556; + e.Igrave = 278; + e.Imacron = 278; + e.Lcaron = 556; + e.onehalf = 834; + e.lessequal = 549; + e.ocircumflex = 556; + e.ntilde = 556; + e.Uhungarumlaut = 722; + e.Eacute = 667; + e.emacron = 556; + e.gbreve = 556; + e.onequarter = 834; + e.Scaron = 667; + e.Scommaaccent = 667; + e.Ohungarumlaut = 778; + e.degree = 400; + e.ograve = 556; + e.Ccaron = 722; + e.ugrave = 556; + e.radical = 453; + e.Dcaron = 722; + e.rcommaaccent = 333; + e.Ntilde = 722; + e.otilde = 556; + e.Rcommaaccent = 722; + e.Lcommaaccent = 556; + e.Atilde = 667; + e.Aogonek = 667; + e.Aring = 667; + e.Otilde = 778; + e.zdotaccent = 500; + e.Ecaron = 667; + e.Iogonek = 278; + e.kcommaaccent = 500; + e.minus = 584; + e.Icircumflex = 278; + e.ncaron = 556; + e.tcommaaccent = 278; + e.logicalnot = 584; + e.odieresis = 556; + e.udieresis = 556; + e.notequal = 549; + e.gcommaaccent = 556; + e.eth = 556; + e.zcaron = 500; + e.ncommaaccent = 556; + e.onesuperior = 333; + e.imacron = 278; + e.Euro = 556; + }); + e["Helvetica-Bold"] = getLookupTableFactory(function (e) { + e.space = 278; + e.exclam = 333; + e.quotedbl = 474; + e.numbersign = 556; + e.dollar = 556; + e.percent = 889; + e.ampersand = 722; + e.quoteright = 278; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 389; + e.plus = 584; + e.comma = 278; + e.hyphen = 333; + e.period = 278; + e.slash = 278; + e.zero = 556; + e.one = 556; + e.two = 556; + e.three = 556; + e.four = 556; + e.five = 556; + e.six = 556; + e.seven = 556; + e.eight = 556; + e.nine = 556; + e.colon = 333; + e.semicolon = 333; + e.less = 584; + e.equal = 584; + e.greater = 584; + e.question = 611; + e.at = 975; + e.A = 722; + e.B = 722; + e.C = 722; + e.D = 722; + e.E = 667; + e.F = 611; + e.G = 778; + e.H = 722; + e.I = 278; + e.J = 556; + e.K = 722; + e.L = 611; + e.M = 833; + e.N = 722; + e.O = 778; + e.P = 667; + e.Q = 778; + e.R = 722; + e.S = 667; + e.T = 611; + e.U = 722; + e.V = 667; + e.W = 944; + e.X = 667; + e.Y = 667; + e.Z = 611; + e.bracketleft = 333; + e.backslash = 278; + e.bracketright = 333; + e.asciicircum = 584; + e.underscore = 556; + e.quoteleft = 278; + e.a = 556; + e.b = 611; + e.c = 556; + e.d = 611; + e.e = 556; + e.f = 333; + e.g = 611; + e.h = 611; + e.i = 278; + e.j = 278; + e.k = 556; + e.l = 278; + e.m = 889; + e.n = 611; + e.o = 611; + e.p = 611; + e.q = 611; + e.r = 389; + e.s = 556; + e.t = 333; + e.u = 611; + e.v = 556; + e.w = 778; + e.x = 556; + e.y = 556; + e.z = 500; + e.braceleft = 389; + e.bar = 280; + e.braceright = 389; + e.asciitilde = 584; + e.exclamdown = 333; + e.cent = 556; + e.sterling = 556; + e.fraction = 167; + e.yen = 556; + e.florin = 556; + e.section = 556; + e.currency = 556; + e.quotesingle = 238; + e.quotedblleft = 500; + e.guillemotleft = 556; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 611; + e.fl = 611; + e.endash = 556; + e.dagger = 556; + e.daggerdbl = 556; + e.periodcentered = 278; + e.paragraph = 556; + e.bullet = 350; + e.quotesinglbase = 278; + e.quotedblbase = 500; + e.quotedblright = 500; + e.guillemotright = 556; + e.ellipsis = 1e3; + e.perthousand = 1e3; + e.questiondown = 611; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 1e3; + e.AE = 1e3; + e.ordfeminine = 370; + e.Lslash = 611; + e.Oslash = 778; + e.OE = 1e3; + e.ordmasculine = 365; + e.ae = 889; + e.dotlessi = 278; + e.lslash = 278; + e.oslash = 611; + e.oe = 944; + e.germandbls = 611; + e.Idieresis = 278; + e.eacute = 556; + e.abreve = 556; + e.uhungarumlaut = 611; + e.ecaron = 556; + e.Ydieresis = 667; + e.divide = 584; + e.Yacute = 667; + e.Acircumflex = 722; + e.aacute = 556; + e.Ucircumflex = 722; + e.yacute = 556; + e.scommaaccent = 556; + e.ecircumflex = 556; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 556; + e.Uacute = 722; + e.uogonek = 611; + e.Edieresis = 667; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 737; + e.Emacron = 667; + e.ccaron = 556; + e.aring = 556; + e.Ncommaaccent = 722; + e.lacute = 278; + e.agrave = 556; + e.Tcommaaccent = 611; + e.Cacute = 722; + e.atilde = 556; + e.Edotaccent = 667; + e.scaron = 556; + e.scedilla = 556; + e.iacute = 278; + e.lozenge = 494; + e.Rcaron = 722; + e.Gcommaaccent = 778; + e.ucircumflex = 611; + e.acircumflex = 556; + e.Amacron = 722; + e.rcaron = 389; + e.ccedilla = 556; + e.Zdotaccent = 611; + e.Thorn = 667; + e.Omacron = 778; + e.Racute = 722; + e.Sacute = 667; + e.dcaron = 743; + e.Umacron = 722; + e.uring = 611; + e.threesuperior = 333; + e.Ograve = 778; + e.Agrave = 722; + e.Abreve = 722; + e.multiply = 584; + e.uacute = 611; + e.Tcaron = 611; + e.partialdiff = 494; + e.ydieresis = 556; + e.Nacute = 722; + e.icircumflex = 278; + e.Ecircumflex = 667; + e.adieresis = 556; + e.edieresis = 556; + e.cacute = 556; + e.nacute = 611; + e.umacron = 611; + e.Ncaron = 722; + e.Iacute = 278; + e.plusminus = 584; + e.brokenbar = 280; + e.registered = 737; + e.Gbreve = 778; + e.Idotaccent = 278; + e.summation = 600; + e.Egrave = 667; + e.racute = 389; + e.omacron = 611; + e.Zacute = 611; + e.Zcaron = 611; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 722; + e.lcommaaccent = 278; + e.tcaron = 389; + e.eogonek = 556; + e.Uogonek = 722; + e.Aacute = 722; + e.Adieresis = 722; + e.egrave = 556; + e.zacute = 500; + e.iogonek = 278; + e.Oacute = 778; + e.oacute = 611; + e.amacron = 556; + e.sacute = 556; + e.idieresis = 278; + e.Ocircumflex = 778; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 611; + e.twosuperior = 333; + e.Odieresis = 778; + e.mu = 611; + e.igrave = 278; + e.ohungarumlaut = 611; + e.Eogonek = 667; + e.dcroat = 611; + e.threequarters = 834; + e.Scedilla = 667; + e.lcaron = 400; + e.Kcommaaccent = 722; + e.Lacute = 611; + e.trademark = 1e3; + e.edotaccent = 556; + e.Igrave = 278; + e.Imacron = 278; + e.Lcaron = 611; + e.onehalf = 834; + e.lessequal = 549; + e.ocircumflex = 611; + e.ntilde = 611; + e.Uhungarumlaut = 722; + e.Eacute = 667; + e.emacron = 556; + e.gbreve = 611; + e.onequarter = 834; + e.Scaron = 667; + e.Scommaaccent = 667; + e.Ohungarumlaut = 778; + e.degree = 400; + e.ograve = 611; + e.Ccaron = 722; + e.ugrave = 611; + e.radical = 549; + e.Dcaron = 722; + e.rcommaaccent = 389; + e.Ntilde = 722; + e.otilde = 611; + e.Rcommaaccent = 722; + e.Lcommaaccent = 611; + e.Atilde = 722; + e.Aogonek = 722; + e.Aring = 722; + e.Otilde = 778; + e.zdotaccent = 500; + e.Ecaron = 667; + e.Iogonek = 278; + e.kcommaaccent = 556; + e.minus = 584; + e.Icircumflex = 278; + e.ncaron = 611; + e.tcommaaccent = 333; + e.logicalnot = 584; + e.odieresis = 611; + e.udieresis = 611; + e.notequal = 549; + e.gcommaaccent = 611; + e.eth = 611; + e.zcaron = 500; + e.ncommaaccent = 611; + e.onesuperior = 333; + e.imacron = 278; + e.Euro = 556; + }); + e["Helvetica-BoldOblique"] = getLookupTableFactory(function (e) { + e.space = 278; + e.exclam = 333; + e.quotedbl = 474; + e.numbersign = 556; + e.dollar = 556; + e.percent = 889; + e.ampersand = 722; + e.quoteright = 278; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 389; + e.plus = 584; + e.comma = 278; + e.hyphen = 333; + e.period = 278; + e.slash = 278; + e.zero = 556; + e.one = 556; + e.two = 556; + e.three = 556; + e.four = 556; + e.five = 556; + e.six = 556; + e.seven = 556; + e.eight = 556; + e.nine = 556; + e.colon = 333; + e.semicolon = 333; + e.less = 584; + e.equal = 584; + e.greater = 584; + e.question = 611; + e.at = 975; + e.A = 722; + e.B = 722; + e.C = 722; + e.D = 722; + e.E = 667; + e.F = 611; + e.G = 778; + e.H = 722; + e.I = 278; + e.J = 556; + e.K = 722; + e.L = 611; + e.M = 833; + e.N = 722; + e.O = 778; + e.P = 667; + e.Q = 778; + e.R = 722; + e.S = 667; + e.T = 611; + e.U = 722; + e.V = 667; + e.W = 944; + e.X = 667; + e.Y = 667; + e.Z = 611; + e.bracketleft = 333; + e.backslash = 278; + e.bracketright = 333; + e.asciicircum = 584; + e.underscore = 556; + e.quoteleft = 278; + e.a = 556; + e.b = 611; + e.c = 556; + e.d = 611; + e.e = 556; + e.f = 333; + e.g = 611; + e.h = 611; + e.i = 278; + e.j = 278; + e.k = 556; + e.l = 278; + e.m = 889; + e.n = 611; + e.o = 611; + e.p = 611; + e.q = 611; + e.r = 389; + e.s = 556; + e.t = 333; + e.u = 611; + e.v = 556; + e.w = 778; + e.x = 556; + e.y = 556; + e.z = 500; + e.braceleft = 389; + e.bar = 280; + e.braceright = 389; + e.asciitilde = 584; + e.exclamdown = 333; + e.cent = 556; + e.sterling = 556; + e.fraction = 167; + e.yen = 556; + e.florin = 556; + e.section = 556; + e.currency = 556; + e.quotesingle = 238; + e.quotedblleft = 500; + e.guillemotleft = 556; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 611; + e.fl = 611; + e.endash = 556; + e.dagger = 556; + e.daggerdbl = 556; + e.periodcentered = 278; + e.paragraph = 556; + e.bullet = 350; + e.quotesinglbase = 278; + e.quotedblbase = 500; + e.quotedblright = 500; + e.guillemotright = 556; + e.ellipsis = 1e3; + e.perthousand = 1e3; + e.questiondown = 611; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 1e3; + e.AE = 1e3; + e.ordfeminine = 370; + e.Lslash = 611; + e.Oslash = 778; + e.OE = 1e3; + e.ordmasculine = 365; + e.ae = 889; + e.dotlessi = 278; + e.lslash = 278; + e.oslash = 611; + e.oe = 944; + e.germandbls = 611; + e.Idieresis = 278; + e.eacute = 556; + e.abreve = 556; + e.uhungarumlaut = 611; + e.ecaron = 556; + e.Ydieresis = 667; + e.divide = 584; + e.Yacute = 667; + e.Acircumflex = 722; + e.aacute = 556; + e.Ucircumflex = 722; + e.yacute = 556; + e.scommaaccent = 556; + e.ecircumflex = 556; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 556; + e.Uacute = 722; + e.uogonek = 611; + e.Edieresis = 667; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 737; + e.Emacron = 667; + e.ccaron = 556; + e.aring = 556; + e.Ncommaaccent = 722; + e.lacute = 278; + e.agrave = 556; + e.Tcommaaccent = 611; + e.Cacute = 722; + e.atilde = 556; + e.Edotaccent = 667; + e.scaron = 556; + e.scedilla = 556; + e.iacute = 278; + e.lozenge = 494; + e.Rcaron = 722; + e.Gcommaaccent = 778; + e.ucircumflex = 611; + e.acircumflex = 556; + e.Amacron = 722; + e.rcaron = 389; + e.ccedilla = 556; + e.Zdotaccent = 611; + e.Thorn = 667; + e.Omacron = 778; + e.Racute = 722; + e.Sacute = 667; + e.dcaron = 743; + e.Umacron = 722; + e.uring = 611; + e.threesuperior = 333; + e.Ograve = 778; + e.Agrave = 722; + e.Abreve = 722; + e.multiply = 584; + e.uacute = 611; + e.Tcaron = 611; + e.partialdiff = 494; + e.ydieresis = 556; + e.Nacute = 722; + e.icircumflex = 278; + e.Ecircumflex = 667; + e.adieresis = 556; + e.edieresis = 556; + e.cacute = 556; + e.nacute = 611; + e.umacron = 611; + e.Ncaron = 722; + e.Iacute = 278; + e.plusminus = 584; + e.brokenbar = 280; + e.registered = 737; + e.Gbreve = 778; + e.Idotaccent = 278; + e.summation = 600; + e.Egrave = 667; + e.racute = 389; + e.omacron = 611; + e.Zacute = 611; + e.Zcaron = 611; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 722; + e.lcommaaccent = 278; + e.tcaron = 389; + e.eogonek = 556; + e.Uogonek = 722; + e.Aacute = 722; + e.Adieresis = 722; + e.egrave = 556; + e.zacute = 500; + e.iogonek = 278; + e.Oacute = 778; + e.oacute = 611; + e.amacron = 556; + e.sacute = 556; + e.idieresis = 278; + e.Ocircumflex = 778; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 611; + e.twosuperior = 333; + e.Odieresis = 778; + e.mu = 611; + e.igrave = 278; + e.ohungarumlaut = 611; + e.Eogonek = 667; + e.dcroat = 611; + e.threequarters = 834; + e.Scedilla = 667; + e.lcaron = 400; + e.Kcommaaccent = 722; + e.Lacute = 611; + e.trademark = 1e3; + e.edotaccent = 556; + e.Igrave = 278; + e.Imacron = 278; + e.Lcaron = 611; + e.onehalf = 834; + e.lessequal = 549; + e.ocircumflex = 611; + e.ntilde = 611; + e.Uhungarumlaut = 722; + e.Eacute = 667; + e.emacron = 556; + e.gbreve = 611; + e.onequarter = 834; + e.Scaron = 667; + e.Scommaaccent = 667; + e.Ohungarumlaut = 778; + e.degree = 400; + e.ograve = 611; + e.Ccaron = 722; + e.ugrave = 611; + e.radical = 549; + e.Dcaron = 722; + e.rcommaaccent = 389; + e.Ntilde = 722; + e.otilde = 611; + e.Rcommaaccent = 722; + e.Lcommaaccent = 611; + e.Atilde = 722; + e.Aogonek = 722; + e.Aring = 722; + e.Otilde = 778; + e.zdotaccent = 500; + e.Ecaron = 667; + e.Iogonek = 278; + e.kcommaaccent = 556; + e.minus = 584; + e.Icircumflex = 278; + e.ncaron = 611; + e.tcommaaccent = 333; + e.logicalnot = 584; + e.odieresis = 611; + e.udieresis = 611; + e.notequal = 549; + e.gcommaaccent = 611; + e.eth = 611; + e.zcaron = 500; + e.ncommaaccent = 611; + e.onesuperior = 333; + e.imacron = 278; + e.Euro = 556; + }); + e["Helvetica-Oblique"] = getLookupTableFactory(function (e) { + e.space = 278; + e.exclam = 278; + e.quotedbl = 355; + e.numbersign = 556; + e.dollar = 556; + e.percent = 889; + e.ampersand = 667; + e.quoteright = 222; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 389; + e.plus = 584; + e.comma = 278; + e.hyphen = 333; + e.period = 278; + e.slash = 278; + e.zero = 556; + e.one = 556; + e.two = 556; + e.three = 556; + e.four = 556; + e.five = 556; + e.six = 556; + e.seven = 556; + e.eight = 556; + e.nine = 556; + e.colon = 278; + e.semicolon = 278; + e.less = 584; + e.equal = 584; + e.greater = 584; + e.question = 556; + e.at = 1015; + e.A = 667; + e.B = 667; + e.C = 722; + e.D = 722; + e.E = 667; + e.F = 611; + e.G = 778; + e.H = 722; + e.I = 278; + e.J = 500; + e.K = 667; + e.L = 556; + e.M = 833; + e.N = 722; + e.O = 778; + e.P = 667; + e.Q = 778; + e.R = 722; + e.S = 667; + e.T = 611; + e.U = 722; + e.V = 667; + e.W = 944; + e.X = 667; + e.Y = 667; + e.Z = 611; + e.bracketleft = 278; + e.backslash = 278; + e.bracketright = 278; + e.asciicircum = 469; + e.underscore = 556; + e.quoteleft = 222; + e.a = 556; + e.b = 556; + e.c = 500; + e.d = 556; + e.e = 556; + e.f = 278; + e.g = 556; + e.h = 556; + e.i = 222; + e.j = 222; + e.k = 500; + e.l = 222; + e.m = 833; + e.n = 556; + e.o = 556; + e.p = 556; + e.q = 556; + e.r = 333; + e.s = 500; + e.t = 278; + e.u = 556; + e.v = 500; + e.w = 722; + e.x = 500; + e.y = 500; + e.z = 500; + e.braceleft = 334; + e.bar = 260; + e.braceright = 334; + e.asciitilde = 584; + e.exclamdown = 333; + e.cent = 556; + e.sterling = 556; + e.fraction = 167; + e.yen = 556; + e.florin = 556; + e.section = 556; + e.currency = 556; + e.quotesingle = 191; + e.quotedblleft = 333; + e.guillemotleft = 556; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 500; + e.fl = 500; + e.endash = 556; + e.dagger = 556; + e.daggerdbl = 556; + e.periodcentered = 278; + e.paragraph = 537; + e.bullet = 350; + e.quotesinglbase = 222; + e.quotedblbase = 333; + e.quotedblright = 333; + e.guillemotright = 556; + e.ellipsis = 1e3; + e.perthousand = 1e3; + e.questiondown = 611; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 1e3; + e.AE = 1e3; + e.ordfeminine = 370; + e.Lslash = 556; + e.Oslash = 778; + e.OE = 1e3; + e.ordmasculine = 365; + e.ae = 889; + e.dotlessi = 278; + e.lslash = 222; + e.oslash = 611; + e.oe = 944; + e.germandbls = 611; + e.Idieresis = 278; + e.eacute = 556; + e.abreve = 556; + e.uhungarumlaut = 556; + e.ecaron = 556; + e.Ydieresis = 667; + e.divide = 584; + e.Yacute = 667; + e.Acircumflex = 667; + e.aacute = 556; + e.Ucircumflex = 722; + e.yacute = 500; + e.scommaaccent = 500; + e.ecircumflex = 556; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 556; + e.Uacute = 722; + e.uogonek = 556; + e.Edieresis = 667; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 737; + e.Emacron = 667; + e.ccaron = 500; + e.aring = 556; + e.Ncommaaccent = 722; + e.lacute = 222; + e.agrave = 556; + e.Tcommaaccent = 611; + e.Cacute = 722; + e.atilde = 556; + e.Edotaccent = 667; + e.scaron = 500; + e.scedilla = 500; + e.iacute = 278; + e.lozenge = 471; + e.Rcaron = 722; + e.Gcommaaccent = 778; + e.ucircumflex = 556; + e.acircumflex = 556; + e.Amacron = 667; + e.rcaron = 333; + e.ccedilla = 500; + e.Zdotaccent = 611; + e.Thorn = 667; + e.Omacron = 778; + e.Racute = 722; + e.Sacute = 667; + e.dcaron = 643; + e.Umacron = 722; + e.uring = 556; + e.threesuperior = 333; + e.Ograve = 778; + e.Agrave = 667; + e.Abreve = 667; + e.multiply = 584; + e.uacute = 556; + e.Tcaron = 611; + e.partialdiff = 476; + e.ydieresis = 500; + e.Nacute = 722; + e.icircumflex = 278; + e.Ecircumflex = 667; + e.adieresis = 556; + e.edieresis = 556; + e.cacute = 500; + e.nacute = 556; + e.umacron = 556; + e.Ncaron = 722; + e.Iacute = 278; + e.plusminus = 584; + e.brokenbar = 260; + e.registered = 737; + e.Gbreve = 778; + e.Idotaccent = 278; + e.summation = 600; + e.Egrave = 667; + e.racute = 333; + e.omacron = 556; + e.Zacute = 611; + e.Zcaron = 611; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 722; + e.lcommaaccent = 222; + e.tcaron = 317; + e.eogonek = 556; + e.Uogonek = 722; + e.Aacute = 667; + e.Adieresis = 667; + e.egrave = 556; + e.zacute = 500; + e.iogonek = 222; + e.Oacute = 778; + e.oacute = 556; + e.amacron = 556; + e.sacute = 500; + e.idieresis = 278; + e.Ocircumflex = 778; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 556; + e.twosuperior = 333; + e.Odieresis = 778; + e.mu = 556; + e.igrave = 278; + e.ohungarumlaut = 556; + e.Eogonek = 667; + e.dcroat = 556; + e.threequarters = 834; + e.Scedilla = 667; + e.lcaron = 299; + e.Kcommaaccent = 667; + e.Lacute = 556; + e.trademark = 1e3; + e.edotaccent = 556; + e.Igrave = 278; + e.Imacron = 278; + e.Lcaron = 556; + e.onehalf = 834; + e.lessequal = 549; + e.ocircumflex = 556; + e.ntilde = 556; + e.Uhungarumlaut = 722; + e.Eacute = 667; + e.emacron = 556; + e.gbreve = 556; + e.onequarter = 834; + e.Scaron = 667; + e.Scommaaccent = 667; + e.Ohungarumlaut = 778; + e.degree = 400; + e.ograve = 556; + e.Ccaron = 722; + e.ugrave = 556; + e.radical = 453; + e.Dcaron = 722; + e.rcommaaccent = 333; + e.Ntilde = 722; + e.otilde = 556; + e.Rcommaaccent = 722; + e.Lcommaaccent = 556; + e.Atilde = 667; + e.Aogonek = 667; + e.Aring = 667; + e.Otilde = 778; + e.zdotaccent = 500; + e.Ecaron = 667; + e.Iogonek = 278; + e.kcommaaccent = 500; + e.minus = 584; + e.Icircumflex = 278; + e.ncaron = 556; + e.tcommaaccent = 278; + e.logicalnot = 584; + e.odieresis = 556; + e.udieresis = 556; + e.notequal = 549; + e.gcommaaccent = 556; + e.eth = 556; + e.zcaron = 500; + e.ncommaaccent = 556; + e.onesuperior = 333; + e.imacron = 278; + e.Euro = 556; + }); + e.Symbol = getLookupTableFactory(function (e) { + e.space = 250; + e.exclam = 333; + e.universal = 713; + e.numbersign = 500; + e.existential = 549; + e.percent = 833; + e.ampersand = 778; + e.suchthat = 439; + e.parenleft = 333; + e.parenright = 333; + e.asteriskmath = 500; + e.plus = 549; + e.comma = 250; + e.minus = 549; + e.period = 250; + e.slash = 278; + e.zero = 500; + e.one = 500; + e.two = 500; + e.three = 500; + e.four = 500; + e.five = 500; + e.six = 500; + e.seven = 500; + e.eight = 500; + e.nine = 500; + e.colon = 278; + e.semicolon = 278; + e.less = 549; + e.equal = 549; + e.greater = 549; + e.question = 444; + e.congruent = 549; + e.Alpha = 722; + e.Beta = 667; + e.Chi = 722; + e.Delta = 612; + e.Epsilon = 611; + e.Phi = 763; + e.Gamma = 603; + e.Eta = 722; + e.Iota = 333; + e.theta1 = 631; + e.Kappa = 722; + e.Lambda = 686; + e.Mu = 889; + e.Nu = 722; + e.Omicron = 722; + e.Pi = 768; + e.Theta = 741; + e.Rho = 556; + e.Sigma = 592; + e.Tau = 611; + e.Upsilon = 690; + e.sigma1 = 439; + e.Omega = 768; + e.Xi = 645; + e.Psi = 795; + e.Zeta = 611; + e.bracketleft = 333; + e.therefore = 863; + e.bracketright = 333; + e.perpendicular = 658; + e.underscore = 500; + e.radicalex = 500; + e.alpha = 631; + e.beta = 549; + e.chi = 549; + e.delta = 494; + e.epsilon = 439; + e.phi = 521; + e.gamma = 411; + e.eta = 603; + e.iota = 329; + e.phi1 = 603; + e.kappa = 549; + e.lambda = 549; + e.mu = 576; + e.nu = 521; + e.omicron = 549; + e.pi = 549; + e.theta = 521; + e.rho = 549; + e.sigma = 603; + e.tau = 439; + e.upsilon = 576; + e.omega1 = 713; + e.omega = 686; + e.xi = 493; + e.psi = 686; + e.zeta = 494; + e.braceleft = 480; + e.bar = 200; + e.braceright = 480; + e.similar = 549; + e.Euro = 750; + e.Upsilon1 = 620; + e.minute = 247; + e.lessequal = 549; + e.fraction = 167; + e.infinity = 713; + e.florin = 500; + e.club = 753; + e.diamond = 753; + e.heart = 753; + e.spade = 753; + e.arrowboth = 1042; + e.arrowleft = 987; + e.arrowup = 603; + e.arrowright = 987; + e.arrowdown = 603; + e.degree = 400; + e.plusminus = 549; + e.second = 411; + e.greaterequal = 549; + e.multiply = 549; + e.proportional = 713; + e.partialdiff = 494; + e.bullet = 460; + e.divide = 549; + e.notequal = 549; + e.equivalence = 549; + e.approxequal = 549; + e.ellipsis = 1e3; + e.arrowvertex = 603; + e.arrowhorizex = 1e3; + e.carriagereturn = 658; + e.aleph = 823; + e.Ifraktur = 686; + e.Rfraktur = 795; + e.weierstrass = 987; + e.circlemultiply = 768; + e.circleplus = 768; + e.emptyset = 823; + e.intersection = 768; + e.union = 768; + e.propersuperset = 713; + e.reflexsuperset = 713; + e.notsubset = 713; + e.propersubset = 713; + e.reflexsubset = 713; + e.element = 713; + e.notelement = 713; + e.angle = 768; + e.gradient = 713; + e.registerserif = 790; + e.copyrightserif = 790; + e.trademarkserif = 890; + e.product = 823; + e.radical = 549; + e.dotmath = 250; + e.logicalnot = 713; + e.logicaland = 603; + e.logicalor = 603; + e.arrowdblboth = 1042; + e.arrowdblleft = 987; + e.arrowdblup = 603; + e.arrowdblright = 987; + e.arrowdbldown = 603; + e.lozenge = 494; + e.angleleft = 329; + e.registersans = 790; + e.copyrightsans = 790; + e.trademarksans = 786; + e.summation = 713; + e.parenlefttp = 384; + e.parenleftex = 384; + e.parenleftbt = 384; + e.bracketlefttp = 384; + e.bracketleftex = 384; + e.bracketleftbt = 384; + e.bracelefttp = 494; + e.braceleftmid = 494; + e.braceleftbt = 494; + e.braceex = 494; + e.angleright = 329; + e.integral = 274; + e.integraltp = 686; + e.integralex = 686; + e.integralbt = 686; + e.parenrighttp = 384; + e.parenrightex = 384; + e.parenrightbt = 384; + e.bracketrighttp = 384; + e.bracketrightex = 384; + e.bracketrightbt = 384; + e.bracerighttp = 494; + e.bracerightmid = 494; + e.bracerightbt = 494; + e.apple = 790; + }); + e["Times-Roman"] = getLookupTableFactory(function (e) { + e.space = 250; + e.exclam = 333; + e.quotedbl = 408; + e.numbersign = 500; + e.dollar = 500; + e.percent = 833; + e.ampersand = 778; + e.quoteright = 333; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 500; + e.plus = 564; + e.comma = 250; + e.hyphen = 333; + e.period = 250; + e.slash = 278; + e.zero = 500; + e.one = 500; + e.two = 500; + e.three = 500; + e.four = 500; + e.five = 500; + e.six = 500; + e.seven = 500; + e.eight = 500; + e.nine = 500; + e.colon = 278; + e.semicolon = 278; + e.less = 564; + e.equal = 564; + e.greater = 564; + e.question = 444; + e.at = 921; + e.A = 722; + e.B = 667; + e.C = 667; + e.D = 722; + e.E = 611; + e.F = 556; + e.G = 722; + e.H = 722; + e.I = 333; + e.J = 389; + e.K = 722; + e.L = 611; + e.M = 889; + e.N = 722; + e.O = 722; + e.P = 556; + e.Q = 722; + e.R = 667; + e.S = 556; + e.T = 611; + e.U = 722; + e.V = 722; + e.W = 944; + e.X = 722; + e.Y = 722; + e.Z = 611; + e.bracketleft = 333; + e.backslash = 278; + e.bracketright = 333; + e.asciicircum = 469; + e.underscore = 500; + e.quoteleft = 333; + e.a = 444; + e.b = 500; + e.c = 444; + e.d = 500; + e.e = 444; + e.f = 333; + e.g = 500; + e.h = 500; + e.i = 278; + e.j = 278; + e.k = 500; + e.l = 278; + e.m = 778; + e.n = 500; + e.o = 500; + e.p = 500; + e.q = 500; + e.r = 333; + e.s = 389; + e.t = 278; + e.u = 500; + e.v = 500; + e.w = 722; + e.x = 500; + e.y = 500; + e.z = 444; + e.braceleft = 480; + e.bar = 200; + e.braceright = 480; + e.asciitilde = 541; + e.exclamdown = 333; + e.cent = 500; + e.sterling = 500; + e.fraction = 167; + e.yen = 500; + e.florin = 500; + e.section = 500; + e.currency = 500; + e.quotesingle = 180; + e.quotedblleft = 444; + e.guillemotleft = 500; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 556; + e.fl = 556; + e.endash = 500; + e.dagger = 500; + e.daggerdbl = 500; + e.periodcentered = 250; + e.paragraph = 453; + e.bullet = 350; + e.quotesinglbase = 333; + e.quotedblbase = 444; + e.quotedblright = 444; + e.guillemotright = 500; + e.ellipsis = 1e3; + e.perthousand = 1e3; + e.questiondown = 444; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 1e3; + e.AE = 889; + e.ordfeminine = 276; + e.Lslash = 611; + e.Oslash = 722; + e.OE = 889; + e.ordmasculine = 310; + e.ae = 667; + e.dotlessi = 278; + e.lslash = 278; + e.oslash = 500; + e.oe = 722; + e.germandbls = 500; + e.Idieresis = 333; + e.eacute = 444; + e.abreve = 444; + e.uhungarumlaut = 500; + e.ecaron = 444; + e.Ydieresis = 722; + e.divide = 564; + e.Yacute = 722; + e.Acircumflex = 722; + e.aacute = 444; + e.Ucircumflex = 722; + e.yacute = 500; + e.scommaaccent = 389; + e.ecircumflex = 444; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 444; + e.Uacute = 722; + e.uogonek = 500; + e.Edieresis = 611; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 760; + e.Emacron = 611; + e.ccaron = 444; + e.aring = 444; + e.Ncommaaccent = 722; + e.lacute = 278; + e.agrave = 444; + e.Tcommaaccent = 611; + e.Cacute = 667; + e.atilde = 444; + e.Edotaccent = 611; + e.scaron = 389; + e.scedilla = 389; + e.iacute = 278; + e.lozenge = 471; + e.Rcaron = 667; + e.Gcommaaccent = 722; + e.ucircumflex = 500; + e.acircumflex = 444; + e.Amacron = 722; + e.rcaron = 333; + e.ccedilla = 444; + e.Zdotaccent = 611; + e.Thorn = 556; + e.Omacron = 722; + e.Racute = 667; + e.Sacute = 556; + e.dcaron = 588; + e.Umacron = 722; + e.uring = 500; + e.threesuperior = 300; + e.Ograve = 722; + e.Agrave = 722; + e.Abreve = 722; + e.multiply = 564; + e.uacute = 500; + e.Tcaron = 611; + e.partialdiff = 476; + e.ydieresis = 500; + e.Nacute = 722; + e.icircumflex = 278; + e.Ecircumflex = 611; + e.adieresis = 444; + e.edieresis = 444; + e.cacute = 444; + e.nacute = 500; + e.umacron = 500; + e.Ncaron = 722; + e.Iacute = 333; + e.plusminus = 564; + e.brokenbar = 200; + e.registered = 760; + e.Gbreve = 722; + e.Idotaccent = 333; + e.summation = 600; + e.Egrave = 611; + e.racute = 333; + e.omacron = 500; + e.Zacute = 611; + e.Zcaron = 611; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 667; + e.lcommaaccent = 278; + e.tcaron = 326; + e.eogonek = 444; + e.Uogonek = 722; + e.Aacute = 722; + e.Adieresis = 722; + e.egrave = 444; + e.zacute = 444; + e.iogonek = 278; + e.Oacute = 722; + e.oacute = 500; + e.amacron = 444; + e.sacute = 389; + e.idieresis = 278; + e.Ocircumflex = 722; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 500; + e.twosuperior = 300; + e.Odieresis = 722; + e.mu = 500; + e.igrave = 278; + e.ohungarumlaut = 500; + e.Eogonek = 611; + e.dcroat = 500; + e.threequarters = 750; + e.Scedilla = 556; + e.lcaron = 344; + e.Kcommaaccent = 722; + e.Lacute = 611; + e.trademark = 980; + e.edotaccent = 444; + e.Igrave = 333; + e.Imacron = 333; + e.Lcaron = 611; + e.onehalf = 750; + e.lessequal = 549; + e.ocircumflex = 500; + e.ntilde = 500; + e.Uhungarumlaut = 722; + e.Eacute = 611; + e.emacron = 444; + e.gbreve = 500; + e.onequarter = 750; + e.Scaron = 556; + e.Scommaaccent = 556; + e.Ohungarumlaut = 722; + e.degree = 400; + e.ograve = 500; + e.Ccaron = 667; + e.ugrave = 500; + e.radical = 453; + e.Dcaron = 722; + e.rcommaaccent = 333; + e.Ntilde = 722; + e.otilde = 500; + e.Rcommaaccent = 667; + e.Lcommaaccent = 611; + e.Atilde = 722; + e.Aogonek = 722; + e.Aring = 722; + e.Otilde = 722; + e.zdotaccent = 444; + e.Ecaron = 611; + e.Iogonek = 333; + e.kcommaaccent = 500; + e.minus = 564; + e.Icircumflex = 333; + e.ncaron = 500; + e.tcommaaccent = 278; + e.logicalnot = 564; + e.odieresis = 500; + e.udieresis = 500; + e.notequal = 549; + e.gcommaaccent = 500; + e.eth = 500; + e.zcaron = 444; + e.ncommaaccent = 500; + e.onesuperior = 300; + e.imacron = 278; + e.Euro = 500; + }); + e["Times-Bold"] = getLookupTableFactory(function (e) { + e.space = 250; + e.exclam = 333; + e.quotedbl = 555; + e.numbersign = 500; + e.dollar = 500; + e.percent = 1e3; + e.ampersand = 833; + e.quoteright = 333; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 500; + e.plus = 570; + e.comma = 250; + e.hyphen = 333; + e.period = 250; + e.slash = 278; + e.zero = 500; + e.one = 500; + e.two = 500; + e.three = 500; + e.four = 500; + e.five = 500; + e.six = 500; + e.seven = 500; + e.eight = 500; + e.nine = 500; + e.colon = 333; + e.semicolon = 333; + e.less = 570; + e.equal = 570; + e.greater = 570; + e.question = 500; + e.at = 930; + e.A = 722; + e.B = 667; + e.C = 722; + e.D = 722; + e.E = 667; + e.F = 611; + e.G = 778; + e.H = 778; + e.I = 389; + e.J = 500; + e.K = 778; + e.L = 667; + e.M = 944; + e.N = 722; + e.O = 778; + e.P = 611; + e.Q = 778; + e.R = 722; + e.S = 556; + e.T = 667; + e.U = 722; + e.V = 722; + e.W = 1e3; + e.X = 722; + e.Y = 722; + e.Z = 667; + e.bracketleft = 333; + e.backslash = 278; + e.bracketright = 333; + e.asciicircum = 581; + e.underscore = 500; + e.quoteleft = 333; + e.a = 500; + e.b = 556; + e.c = 444; + e.d = 556; + e.e = 444; + e.f = 333; + e.g = 500; + e.h = 556; + e.i = 278; + e.j = 333; + e.k = 556; + e.l = 278; + e.m = 833; + e.n = 556; + e.o = 500; + e.p = 556; + e.q = 556; + e.r = 444; + e.s = 389; + e.t = 333; + e.u = 556; + e.v = 500; + e.w = 722; + e.x = 500; + e.y = 500; + e.z = 444; + e.braceleft = 394; + e.bar = 220; + e.braceright = 394; + e.asciitilde = 520; + e.exclamdown = 333; + e.cent = 500; + e.sterling = 500; + e.fraction = 167; + e.yen = 500; + e.florin = 500; + e.section = 500; + e.currency = 500; + e.quotesingle = 278; + e.quotedblleft = 500; + e.guillemotleft = 500; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 556; + e.fl = 556; + e.endash = 500; + e.dagger = 500; + e.daggerdbl = 500; + e.periodcentered = 250; + e.paragraph = 540; + e.bullet = 350; + e.quotesinglbase = 333; + e.quotedblbase = 500; + e.quotedblright = 500; + e.guillemotright = 500; + e.ellipsis = 1e3; + e.perthousand = 1e3; + e.questiondown = 500; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 1e3; + e.AE = 1e3; + e.ordfeminine = 300; + e.Lslash = 667; + e.Oslash = 778; + e.OE = 1e3; + e.ordmasculine = 330; + e.ae = 722; + e.dotlessi = 278; + e.lslash = 278; + e.oslash = 500; + e.oe = 722; + e.germandbls = 556; + e.Idieresis = 389; + e.eacute = 444; + e.abreve = 500; + e.uhungarumlaut = 556; + e.ecaron = 444; + e.Ydieresis = 722; + e.divide = 570; + e.Yacute = 722; + e.Acircumflex = 722; + e.aacute = 500; + e.Ucircumflex = 722; + e.yacute = 500; + e.scommaaccent = 389; + e.ecircumflex = 444; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 500; + e.Uacute = 722; + e.uogonek = 556; + e.Edieresis = 667; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 747; + e.Emacron = 667; + e.ccaron = 444; + e.aring = 500; + e.Ncommaaccent = 722; + e.lacute = 278; + e.agrave = 500; + e.Tcommaaccent = 667; + e.Cacute = 722; + e.atilde = 500; + e.Edotaccent = 667; + e.scaron = 389; + e.scedilla = 389; + e.iacute = 278; + e.lozenge = 494; + e.Rcaron = 722; + e.Gcommaaccent = 778; + e.ucircumflex = 556; + e.acircumflex = 500; + e.Amacron = 722; + e.rcaron = 444; + e.ccedilla = 444; + e.Zdotaccent = 667; + e.Thorn = 611; + e.Omacron = 778; + e.Racute = 722; + e.Sacute = 556; + e.dcaron = 672; + e.Umacron = 722; + e.uring = 556; + e.threesuperior = 300; + e.Ograve = 778; + e.Agrave = 722; + e.Abreve = 722; + e.multiply = 570; + e.uacute = 556; + e.Tcaron = 667; + e.partialdiff = 494; + e.ydieresis = 500; + e.Nacute = 722; + e.icircumflex = 278; + e.Ecircumflex = 667; + e.adieresis = 500; + e.edieresis = 444; + e.cacute = 444; + e.nacute = 556; + e.umacron = 556; + e.Ncaron = 722; + e.Iacute = 389; + e.plusminus = 570; + e.brokenbar = 220; + e.registered = 747; + e.Gbreve = 778; + e.Idotaccent = 389; + e.summation = 600; + e.Egrave = 667; + e.racute = 444; + e.omacron = 500; + e.Zacute = 667; + e.Zcaron = 667; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 722; + e.lcommaaccent = 278; + e.tcaron = 416; + e.eogonek = 444; + e.Uogonek = 722; + e.Aacute = 722; + e.Adieresis = 722; + e.egrave = 444; + e.zacute = 444; + e.iogonek = 278; + e.Oacute = 778; + e.oacute = 500; + e.amacron = 500; + e.sacute = 389; + e.idieresis = 278; + e.Ocircumflex = 778; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 556; + e.twosuperior = 300; + e.Odieresis = 778; + e.mu = 556; + e.igrave = 278; + e.ohungarumlaut = 500; + e.Eogonek = 667; + e.dcroat = 556; + e.threequarters = 750; + e.Scedilla = 556; + e.lcaron = 394; + e.Kcommaaccent = 778; + e.Lacute = 667; + e.trademark = 1e3; + e.edotaccent = 444; + e.Igrave = 389; + e.Imacron = 389; + e.Lcaron = 667; + e.onehalf = 750; + e.lessequal = 549; + e.ocircumflex = 500; + e.ntilde = 556; + e.Uhungarumlaut = 722; + e.Eacute = 667; + e.emacron = 444; + e.gbreve = 500; + e.onequarter = 750; + e.Scaron = 556; + e.Scommaaccent = 556; + e.Ohungarumlaut = 778; + e.degree = 400; + e.ograve = 500; + e.Ccaron = 722; + e.ugrave = 556; + e.radical = 549; + e.Dcaron = 722; + e.rcommaaccent = 444; + e.Ntilde = 722; + e.otilde = 500; + e.Rcommaaccent = 722; + e.Lcommaaccent = 667; + e.Atilde = 722; + e.Aogonek = 722; + e.Aring = 722; + e.Otilde = 778; + e.zdotaccent = 444; + e.Ecaron = 667; + e.Iogonek = 389; + e.kcommaaccent = 556; + e.minus = 570; + e.Icircumflex = 389; + e.ncaron = 556; + e.tcommaaccent = 333; + e.logicalnot = 570; + e.odieresis = 500; + e.udieresis = 556; + e.notequal = 549; + e.gcommaaccent = 500; + e.eth = 500; + e.zcaron = 444; + e.ncommaaccent = 556; + e.onesuperior = 300; + e.imacron = 278; + e.Euro = 500; + }); + e["Times-BoldItalic"] = getLookupTableFactory(function (e) { + e.space = 250; + e.exclam = 389; + e.quotedbl = 555; + e.numbersign = 500; + e.dollar = 500; + e.percent = 833; + e.ampersand = 778; + e.quoteright = 333; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 500; + e.plus = 570; + e.comma = 250; + e.hyphen = 333; + e.period = 250; + e.slash = 278; + e.zero = 500; + e.one = 500; + e.two = 500; + e.three = 500; + e.four = 500; + e.five = 500; + e.six = 500; + e.seven = 500; + e.eight = 500; + e.nine = 500; + e.colon = 333; + e.semicolon = 333; + e.less = 570; + e.equal = 570; + e.greater = 570; + e.question = 500; + e.at = 832; + e.A = 667; + e.B = 667; + e.C = 667; + e.D = 722; + e.E = 667; + e.F = 667; + e.G = 722; + e.H = 778; + e.I = 389; + e.J = 500; + e.K = 667; + e.L = 611; + e.M = 889; + e.N = 722; + e.O = 722; + e.P = 611; + e.Q = 722; + e.R = 667; + e.S = 556; + e.T = 611; + e.U = 722; + e.V = 667; + e.W = 889; + e.X = 667; + e.Y = 611; + e.Z = 611; + e.bracketleft = 333; + e.backslash = 278; + e.bracketright = 333; + e.asciicircum = 570; + e.underscore = 500; + e.quoteleft = 333; + e.a = 500; + e.b = 500; + e.c = 444; + e.d = 500; + e.e = 444; + e.f = 333; + e.g = 500; + e.h = 556; + e.i = 278; + e.j = 278; + e.k = 500; + e.l = 278; + e.m = 778; + e.n = 556; + e.o = 500; + e.p = 500; + e.q = 500; + e.r = 389; + e.s = 389; + e.t = 278; + e.u = 556; + e.v = 444; + e.w = 667; + e.x = 500; + e.y = 444; + e.z = 389; + e.braceleft = 348; + e.bar = 220; + e.braceright = 348; + e.asciitilde = 570; + e.exclamdown = 389; + e.cent = 500; + e.sterling = 500; + e.fraction = 167; + e.yen = 500; + e.florin = 500; + e.section = 500; + e.currency = 500; + e.quotesingle = 278; + e.quotedblleft = 500; + e.guillemotleft = 500; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 556; + e.fl = 556; + e.endash = 500; + e.dagger = 500; + e.daggerdbl = 500; + e.periodcentered = 250; + e.paragraph = 500; + e.bullet = 350; + e.quotesinglbase = 333; + e.quotedblbase = 500; + e.quotedblright = 500; + e.guillemotright = 500; + e.ellipsis = 1e3; + e.perthousand = 1e3; + e.questiondown = 500; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 1e3; + e.AE = 944; + e.ordfeminine = 266; + e.Lslash = 611; + e.Oslash = 722; + e.OE = 944; + e.ordmasculine = 300; + e.ae = 722; + e.dotlessi = 278; + e.lslash = 278; + e.oslash = 500; + e.oe = 722; + e.germandbls = 500; + e.Idieresis = 389; + e.eacute = 444; + e.abreve = 500; + e.uhungarumlaut = 556; + e.ecaron = 444; + e.Ydieresis = 611; + e.divide = 570; + e.Yacute = 611; + e.Acircumflex = 667; + e.aacute = 500; + e.Ucircumflex = 722; + e.yacute = 444; + e.scommaaccent = 389; + e.ecircumflex = 444; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 500; + e.Uacute = 722; + e.uogonek = 556; + e.Edieresis = 667; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 747; + e.Emacron = 667; + e.ccaron = 444; + e.aring = 500; + e.Ncommaaccent = 722; + e.lacute = 278; + e.agrave = 500; + e.Tcommaaccent = 611; + e.Cacute = 667; + e.atilde = 500; + e.Edotaccent = 667; + e.scaron = 389; + e.scedilla = 389; + e.iacute = 278; + e.lozenge = 494; + e.Rcaron = 667; + e.Gcommaaccent = 722; + e.ucircumflex = 556; + e.acircumflex = 500; + e.Amacron = 667; + e.rcaron = 389; + e.ccedilla = 444; + e.Zdotaccent = 611; + e.Thorn = 611; + e.Omacron = 722; + e.Racute = 667; + e.Sacute = 556; + e.dcaron = 608; + e.Umacron = 722; + e.uring = 556; + e.threesuperior = 300; + e.Ograve = 722; + e.Agrave = 667; + e.Abreve = 667; + e.multiply = 570; + e.uacute = 556; + e.Tcaron = 611; + e.partialdiff = 494; + e.ydieresis = 444; + e.Nacute = 722; + e.icircumflex = 278; + e.Ecircumflex = 667; + e.adieresis = 500; + e.edieresis = 444; + e.cacute = 444; + e.nacute = 556; + e.umacron = 556; + e.Ncaron = 722; + e.Iacute = 389; + e.plusminus = 570; + e.brokenbar = 220; + e.registered = 747; + e.Gbreve = 722; + e.Idotaccent = 389; + e.summation = 600; + e.Egrave = 667; + e.racute = 389; + e.omacron = 500; + e.Zacute = 611; + e.Zcaron = 611; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 667; + e.lcommaaccent = 278; + e.tcaron = 366; + e.eogonek = 444; + e.Uogonek = 722; + e.Aacute = 667; + e.Adieresis = 667; + e.egrave = 444; + e.zacute = 389; + e.iogonek = 278; + e.Oacute = 722; + e.oacute = 500; + e.amacron = 500; + e.sacute = 389; + e.idieresis = 278; + e.Ocircumflex = 722; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 500; + e.twosuperior = 300; + e.Odieresis = 722; + e.mu = 576; + e.igrave = 278; + e.ohungarumlaut = 500; + e.Eogonek = 667; + e.dcroat = 500; + e.threequarters = 750; + e.Scedilla = 556; + e.lcaron = 382; + e.Kcommaaccent = 667; + e.Lacute = 611; + e.trademark = 1e3; + e.edotaccent = 444; + e.Igrave = 389; + e.Imacron = 389; + e.Lcaron = 611; + e.onehalf = 750; + e.lessequal = 549; + e.ocircumflex = 500; + e.ntilde = 556; + e.Uhungarumlaut = 722; + e.Eacute = 667; + e.emacron = 444; + e.gbreve = 500; + e.onequarter = 750; + e.Scaron = 556; + e.Scommaaccent = 556; + e.Ohungarumlaut = 722; + e.degree = 400; + e.ograve = 500; + e.Ccaron = 667; + e.ugrave = 556; + e.radical = 549; + e.Dcaron = 722; + e.rcommaaccent = 389; + e.Ntilde = 722; + e.otilde = 500; + e.Rcommaaccent = 667; + e.Lcommaaccent = 611; + e.Atilde = 667; + e.Aogonek = 667; + e.Aring = 667; + e.Otilde = 722; + e.zdotaccent = 389; + e.Ecaron = 667; + e.Iogonek = 389; + e.kcommaaccent = 500; + e.minus = 606; + e.Icircumflex = 389; + e.ncaron = 556; + e.tcommaaccent = 278; + e.logicalnot = 606; + e.odieresis = 500; + e.udieresis = 556; + e.notequal = 549; + e.gcommaaccent = 500; + e.eth = 500; + e.zcaron = 389; + e.ncommaaccent = 556; + e.onesuperior = 300; + e.imacron = 278; + e.Euro = 500; + }); + e["Times-Italic"] = getLookupTableFactory(function (e) { + e.space = 250; + e.exclam = 333; + e.quotedbl = 420; + e.numbersign = 500; + e.dollar = 500; + e.percent = 833; + e.ampersand = 778; + e.quoteright = 333; + e.parenleft = 333; + e.parenright = 333; + e.asterisk = 500; + e.plus = 675; + e.comma = 250; + e.hyphen = 333; + e.period = 250; + e.slash = 278; + e.zero = 500; + e.one = 500; + e.two = 500; + e.three = 500; + e.four = 500; + e.five = 500; + e.six = 500; + e.seven = 500; + e.eight = 500; + e.nine = 500; + e.colon = 333; + e.semicolon = 333; + e.less = 675; + e.equal = 675; + e.greater = 675; + e.question = 500; + e.at = 920; + e.A = 611; + e.B = 611; + e.C = 667; + e.D = 722; + e.E = 611; + e.F = 611; + e.G = 722; + e.H = 722; + e.I = 333; + e.J = 444; + e.K = 667; + e.L = 556; + e.M = 833; + e.N = 667; + e.O = 722; + e.P = 611; + e.Q = 722; + e.R = 611; + e.S = 500; + e.T = 556; + e.U = 722; + e.V = 611; + e.W = 833; + e.X = 611; + e.Y = 556; + e.Z = 556; + e.bracketleft = 389; + e.backslash = 278; + e.bracketright = 389; + e.asciicircum = 422; + e.underscore = 500; + e.quoteleft = 333; + e.a = 500; + e.b = 500; + e.c = 444; + e.d = 500; + e.e = 444; + e.f = 278; + e.g = 500; + e.h = 500; + e.i = 278; + e.j = 278; + e.k = 444; + e.l = 278; + e.m = 722; + e.n = 500; + e.o = 500; + e.p = 500; + e.q = 500; + e.r = 389; + e.s = 389; + e.t = 278; + e.u = 500; + e.v = 444; + e.w = 667; + e.x = 444; + e.y = 444; + e.z = 389; + e.braceleft = 400; + e.bar = 275; + e.braceright = 400; + e.asciitilde = 541; + e.exclamdown = 389; + e.cent = 500; + e.sterling = 500; + e.fraction = 167; + e.yen = 500; + e.florin = 500; + e.section = 500; + e.currency = 500; + e.quotesingle = 214; + e.quotedblleft = 556; + e.guillemotleft = 500; + e.guilsinglleft = 333; + e.guilsinglright = 333; + e.fi = 500; + e.fl = 500; + e.endash = 500; + e.dagger = 500; + e.daggerdbl = 500; + e.periodcentered = 250; + e.paragraph = 523; + e.bullet = 350; + e.quotesinglbase = 333; + e.quotedblbase = 556; + e.quotedblright = 556; + e.guillemotright = 500; + e.ellipsis = 889; + e.perthousand = 1e3; + e.questiondown = 500; + e.grave = 333; + e.acute = 333; + e.circumflex = 333; + e.tilde = 333; + e.macron = 333; + e.breve = 333; + e.dotaccent = 333; + e.dieresis = 333; + e.ring = 333; + e.cedilla = 333; + e.hungarumlaut = 333; + e.ogonek = 333; + e.caron = 333; + e.emdash = 889; + e.AE = 889; + e.ordfeminine = 276; + e.Lslash = 556; + e.Oslash = 722; + e.OE = 944; + e.ordmasculine = 310; + e.ae = 667; + e.dotlessi = 278; + e.lslash = 278; + e.oslash = 500; + e.oe = 667; + e.germandbls = 500; + e.Idieresis = 333; + e.eacute = 444; + e.abreve = 500; + e.uhungarumlaut = 500; + e.ecaron = 444; + e.Ydieresis = 556; + e.divide = 675; + e.Yacute = 556; + e.Acircumflex = 611; + e.aacute = 500; + e.Ucircumflex = 722; + e.yacute = 444; + e.scommaaccent = 389; + e.ecircumflex = 444; + e.Uring = 722; + e.Udieresis = 722; + e.aogonek = 500; + e.Uacute = 722; + e.uogonek = 500; + e.Edieresis = 611; + e.Dcroat = 722; + e.commaaccent = 250; + e.copyright = 760; + e.Emacron = 611; + e.ccaron = 444; + e.aring = 500; + e.Ncommaaccent = 667; + e.lacute = 278; + e.agrave = 500; + e.Tcommaaccent = 556; + e.Cacute = 667; + e.atilde = 500; + e.Edotaccent = 611; + e.scaron = 389; + e.scedilla = 389; + e.iacute = 278; + e.lozenge = 471; + e.Rcaron = 611; + e.Gcommaaccent = 722; + e.ucircumflex = 500; + e.acircumflex = 500; + e.Amacron = 611; + e.rcaron = 389; + e.ccedilla = 444; + e.Zdotaccent = 556; + e.Thorn = 611; + e.Omacron = 722; + e.Racute = 611; + e.Sacute = 500; + e.dcaron = 544; + e.Umacron = 722; + e.uring = 500; + e.threesuperior = 300; + e.Ograve = 722; + e.Agrave = 611; + e.Abreve = 611; + e.multiply = 675; + e.uacute = 500; + e.Tcaron = 556; + e.partialdiff = 476; + e.ydieresis = 444; + e.Nacute = 667; + e.icircumflex = 278; + e.Ecircumflex = 611; + e.adieresis = 500; + e.edieresis = 444; + e.cacute = 444; + e.nacute = 500; + e.umacron = 500; + e.Ncaron = 667; + e.Iacute = 333; + e.plusminus = 675; + e.brokenbar = 275; + e.registered = 760; + e.Gbreve = 722; + e.Idotaccent = 333; + e.summation = 600; + e.Egrave = 611; + e.racute = 389; + e.omacron = 500; + e.Zacute = 556; + e.Zcaron = 556; + e.greaterequal = 549; + e.Eth = 722; + e.Ccedilla = 667; + e.lcommaaccent = 278; + e.tcaron = 300; + e.eogonek = 444; + e.Uogonek = 722; + e.Aacute = 611; + e.Adieresis = 611; + e.egrave = 444; + e.zacute = 389; + e.iogonek = 278; + e.Oacute = 722; + e.oacute = 500; + e.amacron = 500; + e.sacute = 389; + e.idieresis = 278; + e.Ocircumflex = 722; + e.Ugrave = 722; + e.Delta = 612; + e.thorn = 500; + e.twosuperior = 300; + e.Odieresis = 722; + e.mu = 500; + e.igrave = 278; + e.ohungarumlaut = 500; + e.Eogonek = 611; + e.dcroat = 500; + e.threequarters = 750; + e.Scedilla = 500; + e.lcaron = 300; + e.Kcommaaccent = 667; + e.Lacute = 556; + e.trademark = 980; + e.edotaccent = 444; + e.Igrave = 333; + e.Imacron = 333; + e.Lcaron = 611; + e.onehalf = 750; + e.lessequal = 549; + e.ocircumflex = 500; + e.ntilde = 500; + e.Uhungarumlaut = 722; + e.Eacute = 611; + e.emacron = 444; + e.gbreve = 500; + e.onequarter = 750; + e.Scaron = 500; + e.Scommaaccent = 500; + e.Ohungarumlaut = 722; + e.degree = 400; + e.ograve = 500; + e.Ccaron = 667; + e.ugrave = 500; + e.radical = 453; + e.Dcaron = 722; + e.rcommaaccent = 389; + e.Ntilde = 667; + e.otilde = 500; + e.Rcommaaccent = 611; + e.Lcommaaccent = 556; + e.Atilde = 611; + e.Aogonek = 611; + e.Aring = 611; + e.Otilde = 722; + e.zdotaccent = 389; + e.Ecaron = 611; + e.Iogonek = 333; + e.kcommaaccent = 444; + e.minus = 675; + e.Icircumflex = 333; + e.ncaron = 500; + e.tcommaaccent = 278; + e.logicalnot = 675; + e.odieresis = 500; + e.udieresis = 500; + e.notequal = 549; + e.gcommaaccent = 500; + e.eth = 500; + e.zcaron = 389; + e.ncommaaccent = 500; + e.onesuperior = 300; + e.imacron = 278; + e.Euro = 500; + }); + e.ZapfDingbats = getLookupTableFactory(function (e) { + e.space = 278; + e.a1 = 974; + e.a2 = 961; + e.a202 = 974; + e.a3 = 980; + e.a4 = 719; + e.a5 = 789; + e.a119 = 790; + e.a118 = 791; + e.a117 = 690; + e.a11 = 960; + e.a12 = 939; + e.a13 = 549; + e.a14 = 855; + e.a15 = 911; + e.a16 = 933; + e.a105 = 911; + e.a17 = 945; + e.a18 = 974; + e.a19 = 755; + e.a20 = 846; + e.a21 = 762; + e.a22 = 761; + e.a23 = 571; + e.a24 = 677; + e.a25 = 763; + e.a26 = 760; + e.a27 = 759; + e.a28 = 754; + e.a6 = 494; + e.a7 = 552; + e.a8 = 537; + e.a9 = 577; + e.a10 = 692; + e.a29 = 786; + e.a30 = 788; + e.a31 = 788; + e.a32 = 790; + e.a33 = 793; + e.a34 = 794; + e.a35 = 816; + e.a36 = 823; + e.a37 = 789; + e.a38 = 841; + e.a39 = 823; + e.a40 = 833; + e.a41 = 816; + e.a42 = 831; + e.a43 = 923; + e.a44 = 744; + e.a45 = 723; + e.a46 = 749; + e.a47 = 790; + e.a48 = 792; + e.a49 = 695; + e.a50 = 776; + e.a51 = 768; + e.a52 = 792; + e.a53 = 759; + e.a54 = 707; + e.a55 = 708; + e.a56 = 682; + e.a57 = 701; + e.a58 = 826; + e.a59 = 815; + e.a60 = 789; + e.a61 = 789; + e.a62 = 707; + e.a63 = 687; + e.a64 = 696; + e.a65 = 689; + e.a66 = 786; + e.a67 = 787; + e.a68 = 713; + e.a69 = 791; + e.a70 = 785; + e.a71 = 791; + e.a72 = 873; + e.a73 = 761; + e.a74 = 762; + e.a203 = 762; + e.a75 = 759; + e.a204 = 759; + e.a76 = 892; + e.a77 = 892; + e.a78 = 788; + e.a79 = 784; + e.a81 = 438; + e.a82 = 138; + e.a83 = 277; + e.a84 = 415; + e.a97 = 392; + e.a98 = 392; + e.a99 = 668; + e.a100 = 668; + e.a89 = 390; + e.a90 = 390; + e.a93 = 317; + e.a94 = 317; + e.a91 = 276; + e.a92 = 276; + e.a205 = 509; + e.a85 = 509; + e.a206 = 410; + e.a86 = 410; + e.a87 = 234; + e.a88 = 234; + e.a95 = 334; + e.a96 = 334; + e.a101 = 732; + e.a102 = 544; + e.a103 = 544; + e.a104 = 910; + e.a106 = 667; + e.a107 = 760; + e.a108 = 760; + e.a112 = 776; + e.a111 = 595; + e.a110 = 694; + e.a109 = 626; + e.a120 = 788; + e.a121 = 788; + e.a122 = 788; + e.a123 = 788; + e.a124 = 788; + e.a125 = 788; + e.a126 = 788; + e.a127 = 788; + e.a128 = 788; + e.a129 = 788; + e.a130 = 788; + e.a131 = 788; + e.a132 = 788; + e.a133 = 788; + e.a134 = 788; + e.a135 = 788; + e.a136 = 788; + e.a137 = 788; + e.a138 = 788; + e.a139 = 788; + e.a140 = 788; + e.a141 = 788; + e.a142 = 788; + e.a143 = 788; + e.a144 = 788; + e.a145 = 788; + e.a146 = 788; + e.a147 = 788; + e.a148 = 788; + e.a149 = 788; + e.a150 = 788; + e.a151 = 788; + e.a152 = 788; + e.a153 = 788; + e.a154 = 788; + e.a155 = 788; + e.a156 = 788; + e.a157 = 788; + e.a158 = 788; + e.a159 = 788; + e.a160 = 894; + e.a161 = 838; + e.a163 = 1016; + e.a164 = 458; + e.a196 = 748; + e.a165 = 924; + e.a192 = 748; + e.a166 = 918; + e.a167 = 927; + e.a168 = 928; + e.a169 = 928; + e.a170 = 834; + e.a171 = 873; + e.a172 = 828; + e.a173 = 924; + e.a162 = 924; + e.a174 = 917; + e.a175 = 930; + e.a176 = 931; + e.a177 = 463; + e.a178 = 883; + e.a179 = 836; + e.a193 = 836; + e.a180 = 867; + e.a199 = 867; + e.a181 = 696; + e.a200 = 696; + e.a182 = 874; + e.a201 = 874; + e.a183 = 760; + e.a184 = 946; + e.a197 = 771; + e.a185 = 865; + e.a194 = 771; + e.a198 = 888; + e.a186 = 967; + e.a195 = 888; + e.a187 = 831; + e.a188 = 873; + e.a189 = 927; + e.a190 = 970; + e.a191 = 918; + }); + }), + zr = getLookupTableFactory(function (e) { + e.Courier = { ascent: 629, descent: -157, capHeight: 562, xHeight: -426 }; + e["Courier-Bold"] = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: 439, + }; + e["Courier-Oblique"] = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: 426, + }; + e["Courier-BoldOblique"] = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: 426, + }; + e.Helvetica = { ascent: 718, descent: -207, capHeight: 718, xHeight: 523 }; + e["Helvetica-Bold"] = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 532, + }; + e["Helvetica-Oblique"] = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 523, + }; + e["Helvetica-BoldOblique"] = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 532, + }; + e["Times-Roman"] = { + ascent: 683, + descent: -217, + capHeight: 662, + xHeight: 450, + }; + e["Times-Bold"] = { + ascent: 683, + descent: -217, + capHeight: 676, + xHeight: 461, + }; + e["Times-Italic"] = { + ascent: 683, + descent: -217, + capHeight: 653, + xHeight: 441, + }; + e["Times-BoldItalic"] = { + ascent: 683, + descent: -217, + capHeight: 669, + xHeight: 462, + }; + e.Symbol = { + ascent: Math.NaN, + descent: Math.NaN, + capHeight: Math.NaN, + xHeight: Math.NaN, + }; + e.ZapfDingbats = { + ascent: Math.NaN, + descent: Math.NaN, + capHeight: Math.NaN, + xHeight: Math.NaN, + }; + }); +class GlyfTable { + constructor({ + glyfTable: e, + isGlyphLocationsLong: t, + locaTable: a, + numGlyphs: r, + }) { + this.glyphs = []; + const i = new DataView(a.buffer, a.byteOffset, a.byteLength), + n = new DataView(e.buffer, e.byteOffset, e.byteLength), + s = t ? 4 : 2; + let o = t ? i.getUint32(0) : 2 * i.getUint16(0), + c = 0; + for (let e = 0; e < r; e++) { + c += s; + const e = t ? i.getUint32(c) : 2 * i.getUint16(c); + if (e === o) { + this.glyphs.push(new Glyph({})); + continue; + } + const a = Glyph.parse(o, n); + this.glyphs.push(a); + o = e; + } + } + getSize() { + return Math.sumPrecise(this.glyphs.map((e) => (e.getSize() + 3) & -4)); + } + write() { + const e = this.getSize(), + t = new DataView(new ArrayBuffer(e)), + a = e > 131070, + r = a ? 4 : 2, + i = new DataView(new ArrayBuffer((this.glyphs.length + 1) * r)); + a ? i.setUint32(0, 0) : i.setUint16(0, 0); + let n = 0, + s = 0; + for (const e of this.glyphs) { + n += e.write(n, t); + n = (n + 3) & -4; + s += r; + a ? i.setUint32(s, n) : i.setUint16(s, n >> 1); + } + return { + isLocationLong: a, + loca: new Uint8Array(i.buffer), + glyf: new Uint8Array(t.buffer), + }; + } + scale(e) { + for (let t = 0, a = this.glyphs.length; t < a; t++) + this.glyphs[t].scale(e[t]); + } +} +class Glyph { + constructor({ header: e = null, simple: t = null, composites: a = null }) { + this.header = e; + this.simple = t; + this.composites = a; + } + static parse(e, t) { + const [a, r] = GlyphHeader.parse(e, t); + e += a; + if (r.numberOfContours < 0) { + const a = []; + for (;;) { + const [r, i] = CompositeGlyph.parse(e, t); + e += r; + a.push(i); + if (!(32 & i.flags)) break; + } + return new Glyph({ header: r, composites: a }); + } + const i = SimpleGlyph.parse(e, t, r.numberOfContours); + return new Glyph({ header: r, simple: i }); + } + getSize() { + if (!this.header) return 0; + const e = this.simple + ? this.simple.getSize() + : Math.sumPrecise(this.composites.map((e) => e.getSize())); + return this.header.getSize() + e; + } + write(e, t) { + if (!this.header) return 0; + const a = e; + e += this.header.write(e, t); + if (this.simple) e += this.simple.write(e, t); + else for (const a of this.composites) e += a.write(e, t); + return e - a; + } + 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 a of this.composites) a.scale(t, e); + } +} +class GlyphHeader { + constructor({ numberOfContours: e, xMin: t, yMin: a, xMax: r, yMax: i }) { + this.numberOfContours = e; + this.xMin = t; + this.yMin = a; + this.xMax = r; + this.yMax = i; + } + 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: a }) { + this.xCoordinates = t; + this.yCoordinates = a; + this.flags = e; + } +} +class SimpleGlyph { + constructor({ contours: e, instructions: t }) { + this.contours = e; + this.instructions = t; + } + static parse(e, t, a) { + const r = []; + for (let i = 0; i < a; i++) { + const a = t.getUint16(e); + e += 2; + r.push(a); + } + const i = r[a - 1] + 1, + n = t.getUint16(e); + e += 2; + const s = new Uint8Array(t).slice(e, e + n); + e += n; + const o = []; + for (let a = 0; a < i; e++, a++) { + let r = t.getUint8(e); + o.push(r); + if (8 & r) { + const i = t.getUint8(++e); + r ^= 8; + for (let e = 0; e < i; e++) o.push(r); + a += i; + } + } + const c = []; + let l = [], + h = [], + u = []; + const d = []; + let f = 0, + g = 0; + for (let a = 0; a < i; a++) { + const i = o[a]; + if (2 & i) { + const a = t.getUint8(e++); + g += 16 & i ? a : -a; + l.push(g); + } else if (16 & i) l.push(g); + else { + g += t.getInt16(e); + e += 2; + l.push(g); + } + if (r[f] === a) { + f++; + c.push(l); + l = []; + } + } + g = 0; + f = 0; + for (let a = 0; a < i; a++) { + const i = o[a]; + if (4 & i) { + const a = t.getUint8(e++); + g += 32 & i ? a : -a; + h.push(g); + } else if (32 & i) h.push(g); + else { + g += t.getInt16(e); + e += 2; + h.push(g); + } + u.push((1 & i) | (64 & i)); + if (r[f] === a) { + l = c[f]; + f++; + d.push(new Contour({ flags: u, xCoordinates: l, yCoordinates: h })); + h = []; + u = []; + } + } + return new SimpleGlyph({ contours: d, instructions: s }); + } + getSize() { + let e = 2 * this.contours.length + 2 + this.instructions.length, + t = 0, + a = 0; + for (const r of this.contours) { + e += r.flags.length; + for (let i = 0, n = r.xCoordinates.length; i < n; i++) { + const n = r.xCoordinates[i], + s = r.yCoordinates[i]; + let o = Math.abs(n - t); + o > 255 ? (e += 2) : o > 0 && (e += 1); + t = n; + o = Math.abs(s - a); + o > 255 ? (e += 2) : o > 0 && (e += 1); + a = s; + } + } + return e; + } + write(e, t) { + const a = e, + r = [], + i = [], + n = []; + let s = 0, + o = 0; + for (const a of this.contours) { + for (let e = 0, t = a.xCoordinates.length; e < t; e++) { + let t = a.flags[e]; + const c = a.xCoordinates[e]; + let l = c - s; + if (0 === l) { + t |= 16; + r.push(0); + } else { + const e = Math.abs(l); + if (e <= 255) { + t |= l >= 0 ? 18 : 2; + r.push(e); + } else r.push(l); + } + s = c; + const h = a.yCoordinates[e]; + l = h - o; + if (0 === l) { + t |= 32; + i.push(0); + } else { + const e = Math.abs(l); + if (e <= 255) { + t |= l >= 0 ? 36 : 4; + i.push(e); + } else i.push(l); + } + o = h; + n.push(t); + } + t.setUint16(e, r.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 a of n) t.setUint8(e++, a); + for (let a = 0, i = r.length; a < i; a++) { + const i = r[a], + s = n[a]; + if (2 & s) t.setUint8(e++, i); + else if (!(16 & s)) { + t.setInt16(e, i); + e += 2; + } + } + for (let a = 0, r = i.length; a < r; a++) { + const r = i[a], + s = n[a]; + if (4 & s) t.setUint8(e++, r); + else if (!(32 & s)) { + t.setInt16(e, r); + e += 2; + } + } + return e - a; + } + scale(e, t) { + for (const a of this.contours) + if (0 !== a.xCoordinates.length) + for (let r = 0, i = a.xCoordinates.length; r < i; r++) + a.xCoordinates[r] = Math.round(e + (a.xCoordinates[r] - e) * t); + } +} +class CompositeGlyph { + constructor({ + flags: e, + glyphIndex: t, + argument1: a, + argument2: r, + transf: i, + instructions: n, + }) { + this.flags = e; + this.glyphIndex = t; + this.argument1 = a; + this.argument2 = r; + this.transf = i; + this.instructions = n; + } + static parse(e, t) { + const a = e, + r = []; + let i = t.getUint16(e); + const n = t.getUint16(e + 2); + e += 4; + let s, o; + if (1 & i) { + if (2 & i) { + s = t.getInt16(e); + o = t.getInt16(e + 2); + } else { + s = t.getUint16(e); + o = t.getUint16(e + 2); + } + e += 4; + i ^= 1; + } else { + if (2 & i) { + s = t.getInt8(e); + o = t.getInt8(e + 1); + } else { + s = t.getUint8(e); + o = t.getUint8(e + 1); + } + e += 2; + } + if (8 & i) { + r.push(t.getUint16(e)); + e += 2; + } else if (64 & i) { + r.push(t.getUint16(e), t.getUint16(e + 2)); + e += 4; + } else if (128 & i) { + r.push( + t.getUint16(e), + t.getUint16(e + 2), + t.getUint16(e + 4), + t.getUint16(e + 6), + ); + e += 8; + } + let c = null; + if (256 & i) { + const a = t.getUint16(e); + e += 2; + c = new Uint8Array(t).slice(e, e + a); + e += a; + } + return [ + e - a, + new CompositeGlyph({ + flags: i, + glyphIndex: n, + argument1: s, + argument2: o, + transf: r, + instructions: c, + }), + ]; + } + getSize() { + let e = 4 + 2 * this.transf.length; + 256 & this.flags && (e += 2 + this.instructions.length); + e += 2; + 2 & this.flags + ? (this.argument1 >= -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 a = 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 - a; + } + scale(e, t) {} +} +function writeInt16(e, t, a) { + e[t] = (a >> 8) & 255; + e[t + 1] = 255 & a; +} +function writeInt32(e, t, a) { + e[t] = (a >> 24) & 255; + e[t + 1] = (a >> 16) & 255; + e[t + 2] = (a >> 8) & 255; + e[t + 3] = 255 & a; +} +function writeData(e, t, a) { + if (a instanceof Uint8Array) e.set(a, t); + else if ("string" == typeof a) + for (let r = 0, i = a.length; r < i; r++) e[t++] = 255 & a.charCodeAt(r); + else for (const r of a) e[t++] = 255 & r; +} +class OpenTypeFileBuilder { + constructor(e) { + this.sfnt = e; + this.tables = Object.create(null); + } + static getSearchParams(e, t) { + let a = 1, + r = 0; + for (; (a ^ e) > a; ) { + a <<= 1; + r++; + } + const i = a * t; + return { range: i, entry: r, rangeShift: t * e - i }; + } + toArray() { + let e = this.sfnt; + const t = this.tables, + a = Object.keys(t); + a.sort(); + const r = a.length; + let i, + n, + s, + o, + c, + l = 12 + 16 * r; + const h = [l]; + for (i = 0; i < r; i++) { + o = t[a[i]]; + l += ((o.length + 3) & -4) >>> 0; + h.push(l); + } + const u = new Uint8Array(l); + for (i = 0; i < r; i++) { + o = t[a[i]]; + writeData(u, h[i], o); + } + "true" === e && (e = string32(65536)); + u[0] = 255 & e.charCodeAt(0); + u[1] = 255 & e.charCodeAt(1); + u[2] = 255 & e.charCodeAt(2); + u[3] = 255 & e.charCodeAt(3); + writeInt16(u, 4, r); + const d = OpenTypeFileBuilder.getSearchParams(r, 16); + writeInt16(u, 6, d.range); + writeInt16(u, 8, d.entry); + writeInt16(u, 10, d.rangeShift); + l = 12; + for (i = 0; i < r; i++) { + c = a[i]; + u[l] = 255 & c.charCodeAt(0); + u[l + 1] = 255 & c.charCodeAt(1); + u[l + 2] = 255 & c.charCodeAt(2); + u[l + 3] = 255 & c.charCodeAt(3); + let e = 0; + for (n = h[i], s = h[i + 1]; n < s; n += 4) { + e = (e + readUint32(u, n)) >>> 0; + } + writeInt32(u, l + 4, e); + writeInt32(u, l + 8, h[i]); + writeInt32(u, l + 12, t[c].length); + l += 16; + } + return u; + } + addTable(e, t) { + if (e in this.tables) throw new Error("Table " + e + " already exists"); + this.tables[e] = t; + } +} +const $r = [4], + Vr = [5], + Kr = [6], + Jr = [7], + Yr = [8], + Zr = [12, 35], + Qr = [14], + ei = [21], + ti = [22], + ai = [30], + ri = [31]; +class Type1CharString { + constructor() { + this.width = 0; + this.lsb = 0; + this.flexing = !1; + this.output = []; + this.stack = []; + } + convert(e, t, a) { + const r = e.length; + let i, + n, + s, + o = !1; + for (let c = 0; c < r; c++) { + let r = e[c]; + if (r < 32) { + 12 === r && (r = (r << 8) + e[++c]); + switch (r) { + case 1: + case 3: + case 9: + case 3072: + case 3073: + case 3074: + case 3105: + this.stack = []; + break; + case 4: + if (this.flexing) { + if (this.stack.length < 1) { + o = !0; + break; + } + const e = this.stack.pop(); + this.stack.push(0, e); + break; + } + o = this.executeCommand(1, $r); + break; + case 5: + o = this.executeCommand(2, Vr); + break; + case 6: + o = this.executeCommand(1, Kr); + break; + case 7: + o = this.executeCommand(1, Jr); + break; + case 8: + o = this.executeCommand(6, Yr); + break; + case 10: + if (this.stack.length < 1) { + o = !0; + break; + } + s = this.stack.pop(); + if (!t[s]) { + o = !0; + break; + } + o = this.convert(t[s], t, a); + break; + case 11: + return o; + case 13: + if (this.stack.length < 2) { + o = !0; + break; + } + i = this.stack.pop(); + n = this.stack.pop(); + this.lsb = n; + this.width = i; + this.stack.push(i, n); + o = this.executeCommand(2, ti); + break; + case 14: + this.output.push(Qr[0]); + break; + case 21: + if (this.flexing) break; + o = this.executeCommand(2, ei); + break; + case 22: + if (this.flexing) { + this.stack.push(0); + break; + } + o = this.executeCommand(1, ti); + break; + case 30: + o = this.executeCommand(4, ai); + break; + case 31: + o = this.executeCommand(4, ri); + break; + case 3078: + if (a) { + const e = this.stack.at(-5); + this.seac = this.stack.splice(-4, 4); + this.seac[0] += this.lsb - e; + o = this.executeCommand(0, Qr); + } else o = this.executeCommand(4, Qr); + break; + case 3079: + if (this.stack.length < 4) { + o = !0; + break; + } + this.stack.pop(); + i = this.stack.pop(); + const e = this.stack.pop(); + n = this.stack.pop(); + this.lsb = n; + this.width = i; + this.stack.push(i, n, e); + o = this.executeCommand(3, ei); + break; + case 3084: + if (this.stack.length < 2) { + o = !0; + break; + } + const c = this.stack.pop(), + l = this.stack.pop(); + this.stack.push(l / c); + break; + case 3088: + if (this.stack.length < 2) { + o = !0; + break; + } + s = this.stack.pop(); + const h = this.stack.pop(); + if (0 === s && 3 === h) { + const e = this.stack.splice(-17, 17); + this.stack.push( + e[2] + e[0], + e[3] + e[1], + e[4], + e[5], + e[6], + e[7], + e[8], + e[9], + e[10], + e[11], + e[12], + e[13], + e[14], + ); + o = this.executeCommand(13, Zr, !0); + this.flexing = !1; + this.stack.push(e[15], e[16]); + } else 1 === s && 0 === h && (this.flexing = !0); + break; + case 3089: + break; + default: + warn('Unknown type 1 charstring command of "' + r + '"'); + } + if (o) break; + } else { + r <= 246 + ? (r -= 139) + : (r = + r <= 250 + ? 256 * (r - 247) + e[++c] + 108 + : r <= 254 + ? -256 * (r - 251) - e[++c] - 108 + : ((255 & e[++c]) << 24) | + ((255 & e[++c]) << 16) | + ((255 & e[++c]) << 8) | + (255 & e[++c])); + this.stack.push(r); + } + } + return o; + } + executeCommand(e, t, a) { + const r = this.stack.length; + if (e > r) return !0; + const i = r - e; + for (let e = i; e < r; e++) { + let t = this.stack[e]; + if (Number.isInteger(t)) this.output.push(28, (t >> 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); + a ? this.stack.splice(i, 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, a) { + if (a >= e.length) return new Uint8Array(0); + let r, + i, + n = 0 | t; + for (r = 0; r < a; r++) n = (52845 * (e[r] + n) + 22719) & 65535; + const s = e.length - a, + o = new Uint8Array(s); + for (r = a, i = 0; i < s; r++, i++) { + const t = e[r]; + o[i] = t ^ (n >> 8); + n = (52845 * (t + n) + 22719) & 65535; + } + return o; +} +function isSpecial(e) { + return ( + 47 === e || + 91 === e || + 93 === e || + 123 === e || + 125 === e || + 40 === e || + 41 === e + ); +} +class Type1Parser { + constructor(e, t, a) { + if (t) { + const t = e.getBytes(), + a = !( + (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( + a + ? decrypt(t, 55665, 4) + : (function decryptAscii(e, t, a) { + let r = 0 | t; + const i = e.length, + n = new Uint8Array(i >>> 1); + let s, o; + for (s = 0, o = 0; s < i; s++) { + const t = e[s]; + if (!isHexDigit(t)) continue; + s++; + let a; + for (; s < i && !isHexDigit((a = e[s])); ) s++; + if (s < i) { + const e = parseInt(String.fromCharCode(t, a), 16); + n[o++] = e ^ (r >> 8); + r = (52845 * (e + r) + 22719) & 65535; + } + } + return n.slice(a, o); + })(t, 55665, 4), + ); + } + this.seacAnalysisEnabled = !!a; + 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 a = ""; + do { + a += String.fromCharCode(t); + t = this.nextChar(); + } while (t >= 0 && !isWhiteSpace(t) && !isSpecial(t)); + return a; + } + readCharStrings(e, t) { + return -1 === t ? e : decrypt(e, 4330, t); + } + extractFontProgram(e) { + const t = this.stream, + a = [], + r = [], + i = Object.create(null); + i.lenIV = 4; + const n = { subrs: [], charstrings: [], properties: { privateData: i } }; + let s, o, c, l; + for (; null !== (s = this.getToken()); ) + if ("/" === s) { + s = this.getToken(); + switch (s) { + case "CharStrings": + this.getToken(); + this.getToken(); + this.getToken(); + this.getToken(); + for (;;) { + s = this.getToken(); + if (null === s || "end" === s) break; + if ("/" !== s) continue; + const e = this.getToken(); + o = this.readInt(); + this.getToken(); + c = o > 0 ? t.getBytes(o) : new Uint8Array(0); + l = n.properties.privateData.lenIV; + const a = this.readCharStrings(c, l); + this.nextChar(); + s = this.getToken(); + "noaccess" === s ? this.getToken() : "/" === s && this.prevChar(); + r.push({ glyph: e, encoded: a }); + } + break; + case "Subrs": + this.readInt(); + this.getToken(); + for (; "dup" === this.getToken(); ) { + const e = this.readInt(); + o = this.readInt(); + this.getToken(); + c = o > 0 ? t.getBytes(o) : new Uint8Array(0); + l = n.properties.privateData.lenIV; + const r = this.readCharStrings(c, l); + this.nextChar(); + s = this.getToken(); + "noaccess" === s && this.getToken(); + a[e] = r; + } + break; + case "BlueValues": + case "OtherBlues": + case "FamilyBlues": + case "FamilyOtherBlues": + const e = this.readNumberArray(); + (e.length > 0 && e.length, 0); + break; + case "StemSnapH": + case "StemSnapV": + n.properties.privateData[s] = this.readNumberArray(); + break; + case "StdHW": + case "StdVW": + n.properties.privateData[s] = this.readNumberArray()[0]; + break; + case "BlueShift": + case "lenIV": + case "BlueFuzz": + case "BlueScale": + case "LanguageGroup": + n.properties.privateData[s] = this.readNumber(); + break; + case "ExpansionFactor": + n.properties.privateData[s] = this.readNumber() || 0.06; + break; + case "ForceBold": + n.properties.privateData[s] = this.readBoolean(); + } + } + for (const { encoded: t, glyph: i } of r) { + const r = new Type1CharString(), + s = r.convert(t, a, this.seacAnalysisEnabled); + let o = r.output; + s && (o = [14]); + const c = { + glyphName: i, + charstring: o, + width: r.width, + lsb: r.lsb, + seac: r.seac, + }; + ".notdef" === i ? n.charstrings.unshift(c) : n.charstrings.push(c); + if (e.builtInEncoding) { + const t = e.builtInEncoding.indexOf(i); + t > -1 && + void 0 === e.widths[t] && + t >= e.firstChar && + t <= e.lastChar && + (e.widths[t] = r.width); + } + } + return n; + } + extractFontHeader(e) { + let t; + for (; null !== (t = this.getToken()); ) + if ("/" === t) { + t = this.getToken(); + switch (t) { + case "FontMatrix": + const a = this.readNumberArray(); + e.fontMatrix = a; + break; + case "Encoding": + const r = this.getToken(); + let i; + if (/^\d+$/.test(r)) { + i = []; + const e = 0 | parseInt(r, 10); + this.getToken(); + for (let a = 0; a < e; a++) { + t = this.getToken(); + for (; "dup" !== t && "def" !== t; ) { + t = this.getToken(); + if (null === t) return; + } + if ("def" === t) break; + const e = this.readInt(); + this.getToken(); + const a = this.getToken(); + i[e] = a; + this.getToken(); + } + } else i = getEncoding(r); + e.builtInEncoding = i; + break; + case "FontBBox": + const n = this.readNumberArray(); + e.ascent = Math.max(n[3], n[1]); + e.descent = Math.min(n[1], n[3]); + e.ascentScaled = !0; + } + } + } +} +function findBlock(e, t, a) { + const r = e.length, + i = t.length, + n = r - i; + let s = a, + o = !1; + for (; s < n; ) { + let a = 0; + for (; a < i && e[s + a] === t[a]; ) a++; + if (a >= i) { + s += a; + for (; s < r && isWhiteSpace(e[s]); ) s++; + o = !0; + break; + } + s++; + } + return { found: o, length: s }; +} +class Type1Font { + constructor(e, t, a) { + let r = a.length1, + i = a.length2, + n = t.peekBytes(6); + const s = 128 === n[0] && 1 === n[1]; + if (s) { + t.skip(6); + r = (n[5] << 24) | (n[4] << 16) | (n[3] << 8) | n[2]; + } + const o = (function getHeaderBlock(e, t) { + const a = [101, 101, 120, 101, 99], + r = e.pos; + let i, n, s, o; + try { + i = e.getBytes(t); + n = i.length; + } catch {} + if (n === t) { + s = findBlock(i, a, t - 2 * a.length); + if (s.found && s.length === t) + return { stream: new Stream(i), length: t }; + } + warn('Invalid "Length1" property in Type1 font -- trying to recover.'); + e.pos = r; + for (;;) { + s = findBlock(e.peekBytes(2048), a, 0); + if (0 === s.length) break; + e.pos += s.length; + if (s.found) { + o = e.pos - r; + break; + } + } + e.pos = r; + if (o) return { stream: new Stream(e.getBytes(o)), length: o }; + warn( + 'Unable to recover "Length1" property in Type1 font -- using as is.', + ); + return { stream: new Stream(e.getBytes(t)), length: t }; + })(t, r); + new Type1Parser(o.stream, !1, wr).extractFontHeader(a); + if (s) { + n = t.getBytes(6); + i = (n[5] << 24) | (n[4] << 16) | (n[3] << 8) | n[2]; + } + const c = (function getEexecBlock(e, t) { + const a = e.getBytes(); + if (0 === a.length) + throw new FormatError("getEexecBlock - no font program found."); + return { stream: new Stream(a), length: a.length }; + })(t), + l = new Type1Parser(c.stream, !0, wr).extractFontProgram(a); + for (const e in l.properties) a[e] = l.properties[e]; + const h = l.charstrings, + u = this.getType2Charstrings(h), + d = this.getType2Subrs(l.subrs); + this.charstrings = h; + this.data = this.wrap(e, u, this.charstrings, d, a); + this.seacs = this.getSeacs(l.charstrings); + } + get numGlyphs() { + return this.charstrings.length + 1; + } + getCharset() { + const e = [".notdef"]; + for (const { glyphName: t } of this.charstrings) e.push(t); + return e; + } + getGlyphMapping(e) { + const t = this.charstrings; + if (e.composite) { + const a = Object.create(null); + for (let r = 0, i = t.length; r < i; r++) { + a[e.cMap.charCodeOf(r)] = r + 1; + } + return a; + } + const a = [".notdef"]; + let r, i; + for (i = 0; i < t.length; i++) a.push(t[i].glyphName); + const n = e.builtInEncoding; + if (n) { + r = Object.create(null); + for (const e in n) { + i = a.indexOf(n[e]); + i >= 0 && (r[e] = i); + } + } + return type1FontGlyphMapping(e, r, a); + } + 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 a = 0, r = e.length; a < r; a++) { + const r = e[a]; + r.seac && (t[a + 1] = r.seac); + } + return t; + } + getType2Charstrings(e) { + const t = []; + for (const a of e) t.push(a.charstring); + return t; + } + getType2Subrs(e) { + let t = 0; + const a = e.length; + t = a < 1133 ? 107 : a < 33769 ? 1131 : 32768; + const r = []; + let i; + for (i = 0; i < t; i++) r.push([11]); + for (i = 0; i < a; i++) r.push(e[i]); + return r; + } + wrap(e, t, a, r, i) { + const n = new CFF(); + n.header = new CFFHeader(1, 0, 4, 4); + n.names = [e]; + const s = new CFFTopDict(); + s.setByName("version", 391); + s.setByName("Notice", 392); + s.setByName("FullName", 393); + s.setByName("FamilyName", 394); + s.setByName("Weight", 395); + s.setByName("Encoding", null); + s.setByName("FontMatrix", i.fontMatrix); + s.setByName("FontBBox", i.bbox); + s.setByName("charset", null); + s.setByName("CharStrings", null); + s.setByName("Private", null); + n.topDict = s; + const o = new CFFStrings(); + o.add("Version 0.11"); + o.add("See original notice"); + o.add(e); + o.add(e); + o.add("Medium"); + n.strings = o; + n.globalSubrIndex = new CFFIndex(); + const c = t.length, + l = [".notdef"]; + let h, u; + for (h = 0; h < c; h++) { + const e = a[h].glyphName; + -1 === Or.indexOf(e) && o.add(e); + l.push(e); + } + n.charset = new CFFCharset(!1, 0, l); + const d = new CFFIndex(); + d.add([139, 14]); + for (h = 0; h < c; h++) d.add(t[h]); + n.charStrings = d; + const f = new CFFPrivateDict(); + f.setByName("Subrs", null); + const g = [ + "BlueValues", + "OtherBlues", + "FamilyBlues", + "FamilyOtherBlues", + "StemSnapH", + "StemSnapV", + "BlueShift", + "BlueFuzz", + "BlueScale", + "LanguageGroup", + "ExpansionFactor", + "ForceBold", + "StdHW", + "StdVW", + ]; + for (h = 0, u = g.length; h < u; h++) { + const e = g[h]; + if (!(e in i.privateData)) continue; + const t = i.privateData[e]; + if (Array.isArray(t)) + for (let e = t.length - 1; e > 0; e--) t[e] -= t[e - 1]; + f.setByName(e, t); + } + n.topDict.privateDict = f; + const p = new CFFIndex(); + for (h = 0, u = r.length; h < u; h++) p.add(r[h]); + f.subrsIndex = p; + return new CFFCompiler(n).compile(); + } +} +const ii = [ + [57344, 63743], + [1048576, 1114109], + ], + ni = 1e3, + si = [ + "ascent", + "bbox", + "black", + "bold", + "charProcOperatorList", + "cssFontInfo", + "data", + "defaultVMetrics", + "defaultWidth", + "descent", + "disableFontFace", + "fallbackName", + "fontExtraProperties", + "fontMatrix", + "isInvalidPDFjsFont", + "isType3Font", + "italic", + "loadedName", + "mimetype", + "missingFile", + "name", + "remeasure", + "systemFontInfo", + "vertical", + ], + oi = [ + "cMap", + "composite", + "defaultEncoding", + "differences", + "isMonospace", + "isSerifFont", + "isSymbolicFont", + "seacMap", + "subtype", + "toFontChar", + "toUnicode", + "type", + "vmetrics", + "widths", + ]; +function adjustWidths(e) { + if (!e.fontMatrix) return; + if (e.fontMatrix[0] === t[0]) return; + const a = 0.001 / e.fontMatrix[0], + r = e.widths; + for (const e in r) r[e] *= a; + e.defaultWidth *= a; +} +function amendFallbackToUnicode(e) { + if (!e.fallbackToUnicode) return; + if (e.toUnicode instanceof IdentityToUnicodeMap) return; + const t = []; + for (const a in e.fallbackToUnicode) + e.toUnicode.has(a) || (t[a] = e.fallbackToUnicode[a]); + t.length > 0 && e.toUnicode.amend(t); +} +class fonts_Glyph { + constructor(e, t, a, r, i, n, s, o, c) { + this.originalCharCode = e; + this.fontChar = t; + this.unicode = a; + this.accent = r; + this.width = i; + this.vmetric = n; + this.operatorListId = s; + this.isSpace = o; + this.isInFont = c; + } + get category() { + return shadow( + this, + "category", + (function getCharUnicodeCategory(e) { + const t = yr.get(e); + if (t) return t; + const a = e.match(br), + r = { + isWhitespace: !!a?.[1], + isZeroWidthDiacritic: !!a?.[2], + isInvisibleFormatMark: !!a?.[3], + }; + yr.set(e, r); + return r; + })(this.unicode), + !0, + ); + } +} +function int16(e, t) { + return (e << 8) + t; +} +function writeSignedInt16(e, t, a) { + e[t + 1] = a; + e[t] = a >>> 8; +} +function signedInt16(e, t) { + const a = (e << 8) + t; + return 32768 & a ? a - 65536 : a; +} +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: a, composite: r }) { + let i, n; + if ( + (function isTrueTypeFile(e) { + const t = e.peekBytes(4); + return 65536 === readUint32(t, 0) || "true" === bytesToString(t); + })(e) || + isTrueTypeCollectionFile(e) + ) + i = r ? "CIDFontType2" : "TrueType"; + else if ( + (function isOpenTypeFile(e) { + return "OTTO" === bytesToString(e.peekBytes(4)); + })(e) + ) + i = r ? "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) + ) + i = r ? "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 (r) { + i = "CIDFontType0"; + n = "CIDFontType0C"; + } else { + i = "MMType1" === t ? "MMType1" : "Type1"; + n = "Type1C"; + } + else { + warn("getFontFileType: Unable to detect correct font file Type/Subtype."); + i = t; + n = a; + } + return [i, n]; +} +function applyStandardFontGlyphMap(e, t) { + for (const a in t) e[+a] = t[a]; +} +function buildToFontChar(e, t, a) { + const r = []; + let i; + for (let a = 0, n = e.length; a < n; a++) { + i = getUnicodeForGlyph(e[a], t); + -1 !== i && (r[a] = i); + } + for (const e in a) { + i = getUnicodeForGlyph(a[e], t); + -1 !== i && (r[+e] = i); + } + return r; +} +function isMacNameRecord(e) { + return 1 === e.platform && 0 === e.encoding && 0 === e.language; +} +function isWinNameRecord(e) { + return 3 === e.platform && 1 === e.encoding && 1033 === e.language; +} +function convertCidString(e, t, a = !1) { + switch (t.length) { + case 1: + return t.charCodeAt(0); + case 2: + return (t.charCodeAt(0) << 8) | t.charCodeAt(1); + } + const r = `Unsupported CID string (charCode ${e}): "${t}".`; + if (a) throw new FormatError(r); + warn(r); + return t; +} +function adjustMapping(e, t, a, r) { + const i = Object.create(null), + n = new Map(), + s = [], + o = new Set(); + let c = 0; + let l = ii[c][0], + h = ii[c][1]; + const isInPrivateArea = (e) => + (ii[0][0] <= e && e <= ii[0][1]) || (ii[1][0] <= e && e <= ii[1][1]); + let u = null; + for (const d in e) { + let f = e[d]; + if (!t(f)) continue; + if (l > h) { + c++; + if (c >= ii.length) { + warn("Ran out of space in font private use area."); + break; + } + l = ii[c][0]; + h = ii[c][1]; + } + const g = l++; + 0 === f && (f = a); + let p = r.get(d); + if ("string" == typeof p) + if (1 === p.length) p = p.codePointAt(0); + else { + if (!u) { + u = new Map(); + for (let e = 64256; e <= 64335; e++) { + const t = String.fromCharCode(e).normalize("NFKD"); + t.length > 1 && u.set(t, e); + } + } + p = u.get(p) || p.codePointAt(0); + } + if (p && !isInPrivateArea(p) && !o.has(f)) { + n.set(p, f); + o.add(f); + } + i[g] = f; + s[d] = g; + } + return { + toFontChar: s, + charCodeToGlyphId: i, + toUnicodeExtraMap: n, + nextAvailableFontCharCode: l, + }; +} +function createCmapTable(e, t, a) { + const r = (function getRanges(e, t, a) { + const r = []; + for (const t in e) + e[t] >= a || r.push({ fontCharCode: 0 | t, glyphId: e[t] }); + if (t) + for (const [e, i] of t) + i >= a || r.push({ fontCharCode: e, glyphId: i }); + 0 === r.length && r.push({ fontCharCode: 0, glyphId: 0 }); + r.sort((e, t) => e.fontCharCode - t.fontCharCode); + const i = [], + n = r.length; + for (let e = 0; e < n; ) { + const t = r[e].fontCharCode, + a = [r[e].glyphId]; + ++e; + let s = t; + for (; e < n && s + 1 === r[e].fontCharCode; ) { + a.push(r[e].glyphId); + ++s; + ++e; + if (65535 === s) break; + } + i.push([t, s, a]); + } + return i; + })(e, t, a), + i = r.at(-1)[1] > 65535 ? 2 : 1; + let n, + s, + o, + c, + l = "\0\0" + string16(i) + "\0\0" + string32(4 + 8 * i); + for (n = r.length - 1; n >= 0 && !(r[n][0] <= 65535); --n); + const h = n + 1; + r[n][0] < 65535 && 65535 === r[n][1] && (r[n][1] = 65534); + const u = r[n][1] < 65535 ? 1 : 0, + d = h + u, + f = OpenTypeFileBuilder.getSearchParams(d, 2); + let g, + p, + m, + b, + y = "", + w = "", + x = "", + S = "", + k = "", + C = 0; + for (n = 0, s = h; n < s; n++) { + g = r[n]; + p = g[0]; + m = g[1]; + y += string16(p); + w += string16(m); + b = g[2]; + let e = !0; + for (o = 1, c = b.length; o < c; ++o) + if (b[o] !== b[o - 1] + 1) { + e = !1; + break; + } + if (e) { + x += string16((b[0] - p) & 65535); + S += string16(0); + } else { + const e = 2 * (d - n) + 2 * C; + C += m - p + 1; + x += string16(0); + S += string16(e); + for (o = 0, c = b.length; o < c; ++o) k += string16(b[o]); + } + } + if (u > 0) { + w += "ÿÿ"; + y += "ÿÿ"; + x += "\0"; + S += "\0\0"; + } + const v = + "\0\0" + + string16(2 * d) + + string16(f.range) + + string16(f.entry) + + string16(f.rangeShift) + + w + + "\0\0" + + y + + x + + S + + k; + let F = "", + T = ""; + if (i > 1) { + l += "\0\0\n" + string32(4 + 8 * i + 4 + v.length); + F = ""; + for (n = 0, s = r.length; n < s; n++) { + g = r[n]; + p = g[0]; + b = g[2]; + let e = b[0]; + for (o = 1, c = b.length; o < c; ++o) + if (b[o] !== b[o - 1] + 1) { + m = g[0] + o - 1; + F += string32(p) + string32(m) + string32(e); + p = m + 1; + e = b[o]; + } + F += string32(p) + string32(g[1]) + string32(e); + } + T = + "\0\f\0\0" + + string32(F.length + 16) + + "\0\0\0\0" + + string32(F.length / 12); + } + return l + "\0" + string16(v.length + 4) + v + T + F; +} +function createOS2Table(e, t, a) { + a ||= { unitsPerEm: 0, yMax: 0, yMin: 0, ascent: 0, descent: 0 }; + let r = 0, + i = 0, + n = 0, + s = 0, + o = null, + c = 0, + l = -1; + if (t) { + for (let e in t) { + e |= 0; + (o > e || !o) && (o = e); + c < e && (c = e); + l = getUnicodeRangeFor(e, l); + if (l < 32) r |= 1 << l; + else if (l < 64) i |= 1 << (l - 32); + else if (l < 96) n |= 1 << (l - 64); + else { + if (!(l < 123)) + throw new FormatError( + "Unicode ranges Bits > 123 are reserved for internal usage", + ); + s |= 1 << (l - 96); + } + } + c > 65535 && (c = 65535); + } else { + o = 0; + c = 255; + } + const h = e.bbox || [0, 0, 0, 0], + u = + a.unitsPerEm || + (e.fontMatrix + ? 1 / Math.max(...e.fontMatrix.slice(0, 4).map(Math.abs)) + : 1e3), + d = e.ascentScaled ? 1 : u / ni, + f = a.ascent || Math.round(d * (e.ascent || h[3])); + let g = a.descent || Math.round(d * (e.descent || h[1])); + g > 0 && e.descent > 0 && h[1] < 0 && (g = -g); + const p = a.yMax || f, + m = -a.yMin || -g; + 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(r) + + string32(i) + + string32(n) + + string32(s) + + "*21*" + + string16(e.italicAngle ? 1 : 0) + + string16(o || e.firstChar) + + string16(c || e.lastChar) + + string16(f) + + string16(g) + + "\0d" + + string16(p) + + string16(m) + + "\0\0\0\0\0\0\0\0" + + string16(e.xHeight) + + string16(e.capHeight) + + string16(0) + + string16(o || 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 a = [ + 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", + ], + r = []; + let i, n, s, o, c; + for (i = 0, n = a.length; i < n; i++) { + c = t[1][i] || a[i]; + const e = []; + for (s = 0, o = c.length; s < o; s++) e.push(string16(c.charCodeAt(s))); + r.push(e.join("")); + } + const l = [a, r], + h = ["\0", "\0"], + u = ["\0\0", "\0"], + d = ["\0\0", "\t"], + f = a.length * h.length; + let g = "\0\0" + string16(f) + string16(12 * f + 6), + p = 0; + for (i = 0, n = h.length; i < n; i++) { + const e = l[i]; + for (s = 0, o = e.length; s < o; s++) { + c = e[s]; + g += h[i] + u[i] + d[i] + string16(s) + string16(c.length) + string16(p); + p += c.length; + } + } + g += a.join("") + r.join(""); + return g; +} +class Font { + constructor(e, t, a, r) { + this.name = e; + this.psName = null; + this.mimetype = null; + this.disableFontFace = r.disableFontFace; + this.fontExtraProperties = r.fontExtraProperties; + this.loadedName = a.loadedName; + this.isType3Font = a.isType3Font; + this.missingFile = !1; + this.cssFontInfo = a.cssFontInfo; + this._charsCache = Object.create(null); + this._glyphCache = Object.create(null); + let i = !!(a.flags & Sr); + if (!i && !a.isSimulatedFlags) { + const t = Lr(), + a = Ur(), + r = jr(); + for (const n of e.split("+")) { + let e = n.replaceAll(/[,_]/g, "-"); + e = t[e] || a[e] || e; + e = e.split("-", 1)[0]; + if (r[e]) { + i = !0; + break; + } + } + } + this.isSerifFont = i; + this.isSymbolicFont = !!(a.flags & Ar); + this.isMonospace = !!(a.flags & xr); + let { type: n, subtype: s } = a; + this.type = n; + this.subtype = s; + this.systemFontInfo = a.systemFontInfo; + const o = e.match(/^InvalidPDFjsFont_(.*)_\d+$/); + this.isInvalidPDFjsFont = !!o; + this.isInvalidPDFjsFont + ? (this.fallbackName = o[1]) + : this.isMonospace + ? (this.fallbackName = "monospace") + : this.isSerifFont + ? (this.fallbackName = "serif") + : (this.fallbackName = "sans-serif"); + if (this.systemFontInfo?.guessFallback) { + this.systemFontInfo.guessFallback = !1; + this.systemFontInfo.css += `,${this.fallbackName}`; + } + this.differences = a.differences; + this.widths = a.widths; + this.defaultWidth = a.defaultWidth; + this.composite = a.composite; + this.cMap = a.cMap; + this.capHeight = a.capHeight / ni; + this.ascent = a.ascent / ni; + this.descent = a.descent / ni; + this.lineHeight = this.ascent - this.descent; + this.fontMatrix = a.fontMatrix; + this.bbox = a.bbox; + this.defaultEncoding = a.defaultEncoding; + this.toUnicode = a.toUnicode; + this.toFontChar = []; + if ("Type3" === a.type) { + for (let e = 0; e < 256; e++) + this.toFontChar[e] = this.differences[e] || a.defaultEncoding[e]; + return; + } + this.cidEncoding = a.cidEncoding || ""; + this.vertical = !!a.vertical; + if (this.vertical) { + this.vmetrics = a.vmetrics; + this.defaultVMetrics = a.defaultVMetrics; + } + if (!t || t.isEmpty) { + t && warn('Font file is empty in "' + e + '" (' + this.loadedName + ")"); + this.fallbackToSystemFont(a); + return; + } + [n, s] = getFontFileType(t, a); + (n === this.type && s === this.subtype) || + info( + `Inconsistent font file Type/SubType, expected: ${this.type}/${this.subtype} but found: ${n}/${s}.`, + ); + let c; + try { + switch (n) { + case "MMType1": + info("MMType1 font (" + e + "), falling back to Type1."); + case "Type1": + case "CIDFontType0": + this.mimetype = "font/opentype"; + const r = + "Type1C" === s || "CIDFontType0C" === s + ? new CFFFont(t, a) + : new Type1Font(e, t, a); + adjustWidths(a); + c = this.convert(e, r, a); + break; + case "OpenType": + case "TrueType": + case "CIDFontType2": + this.mimetype = "font/opentype"; + c = this.checkAndRepair(e, t, a); + adjustWidths(a); + this.isOpenType && (n = "OpenType"); + break; + default: + throw new FormatError(`Font ${n} is not supported`); + } + } catch (e) { + warn(e); + this.fallbackToSystemFont(a); + return; + } + amendFallbackToUnicode(a); + this.data = c; + this.type = n; + this.subtype = s; + this.fontMatrix = a.fontMatrix; + this.widths = a.widths; + this.defaultWidth = a.defaultWidth; + this.toUnicode = a.toUnicode; + this.seacMap = a.seacMap; + } + get renderer() { + return shadow(this, "renderer", FontRendererFactory.create(this, wr)); + } + exportData() { + const e = Object.create(null); + for (const t of si) { + const a = this[t]; + void 0 !== a && (e[t] = a); + } + if (!this.fontExtraProperties) return { data: e }; + const t = Object.create(null); + for (const e of oi) { + const a = this[e]; + void 0 !== a && (t[e] = a); + } + return { data: e, extra: t }; + } + fallbackToSystemFont(e) { + this.missingFile = !0; + const { name: t, type: a } = this; + let r = normalizeFontName(t); + const i = Lr(), + n = Ur(), + s = !!i[r], + o = !(!n[r] || !i[n[r]]); + r = i[r] || n[r] || r; + const c = zr()[r]; + if (c) { + isNaN(this.ascent) && (this.ascent = c.ascent / ni); + isNaN(this.descent) && (this.descent = c.descent / ni); + isNaN(this.capHeight) && (this.capHeight = c.capHeight / ni); + } + this.bold = /bold/gi.test(r); + this.italic = /oblique|italic/gi.test(r); + this.black = /Black/g.test(t); + const l = /Narrow/g.test(t); + this.remeasure = (!s || l) && Object.keys(this.widths).length > 0; + if ( + (s || o) && + "CIDFontType2" === a && + this.cidEncoding.startsWith("Identity-") + ) { + const a = e.cidToGidMap, + r = []; + applyStandardFontGlyphMap(r, qr()); + /Arial-?Black/i.test(t) + ? applyStandardFontGlyphMap(r, Hr()) + : /Calibri/i.test(t) && applyStandardFontGlyphMap(r, Wr()); + if (a) { + for (const e in r) { + const t = r[e]; + void 0 !== a[t] && (r[+e] = a[t]); + } + a.length !== this.toUnicode.length && + e.hasIncludedToUnicodeMap && + this.toUnicode instanceof IdentityToUnicodeMap && + this.toUnicode.forEach(function (e, t) { + const i = r[e]; + void 0 === a[i] && (r[+e] = t); + }); + } + this.toUnicode instanceof IdentityToUnicodeMap || + this.toUnicode.forEach(function (e, t) { + r[+e] = t; + }); + this.toFontChar = r; + this.toUnicode = new ToUnicodeMap(r); + } else if (/Symbol/i.test(r)) + this.toFontChar = buildToFontChar(ur, fr(), this.differences); + else if (/Dingbats/i.test(r)) + this.toFontChar = buildToFontChar(dr, gr(), this.differences); + else if (s || o) { + const e = buildToFontChar(this.defaultEncoding, fr(), this.differences); + "CIDFontType2" !== a || + this.cidEncoding.startsWith("Identity-") || + this.toUnicode instanceof IdentityToUnicodeMap || + this.toUnicode.forEach(function (t, a) { + e[+t] = a; + }); + this.toFontChar = e; + } else { + const e = fr(), + a = []; + this.toUnicode.forEach((t, r) => { + if (!this.composite) { + const a = getUnicodeForGlyph( + this.differences[t] || this.defaultEncoding[t], + e, + ); + -1 !== a && (r = a); + } + a[+t] = r; + }); + this.composite && + this.toUnicode instanceof IdentityToUnicodeMap && + /Tahoma|Verdana/i.test(t) && + applyStandardFontGlyphMap(a, qr()); + this.toFontChar = a; + } + amendFallbackToUnicode(e); + this.loadedName = r.split("-", 1)[0]; + } + checkAndRepair(e, t, a) { + const r = [ + "OS/2", + "cmap", + "head", + "hhea", + "hmtx", + "maxp", + "name", + "post", + "loca", + "glyf", + "fpgm", + "prep", + "cvt ", + "CFF ", + ]; + function readTables(e, t) { + const a = Object.create(null); + a["OS/2"] = null; + a.cmap = null; + a.head = null; + a.hhea = null; + a.hmtx = null; + a.maxp = null; + a.name = null; + a.post = null; + for (let i = 0; i < t; i++) { + const t = readTableEntry(e); + r.includes(t.tag) && 0 !== t.length && (a[t.tag] = t); + } + return a; + } + function readTableEntry(e) { + const t = e.getString(4), + a = e.getInt32() >>> 0, + r = e.getInt32() >>> 0, + i = e.getInt32() >>> 0, + n = e.pos; + e.pos = e.start || 0; + e.skip(r); + const s = e.getBytes(i); + e.pos = n; + if ("head" === t) { + s[8] = s[9] = s[10] = s[11] = 0; + s[17] |= 32; + } + return { tag: t, checksum: a, length: i, offset: r, data: s }; + } + function readOpenTypeHeader(e) { + return { + version: e.getString(4), + numTables: e.getUint16(), + searchRange: e.getUint16(), + entrySelector: e.getUint16(), + rangeShift: e.getUint16(), + }; + } + function sanitizeGlyph(e, t, a, r, i, n) { + const s = { length: 0, sizeOfInstructions: 0 }; + if (t < 0 || t >= e.length || a > e.length || a - t <= 12) return s; + const o = e.subarray(t, a), + c = signedInt16(o[2], o[3]), + l = signedInt16(o[4], o[5]), + h = signedInt16(o[6], o[7]), + u = signedInt16(o[8], o[9]); + if (c > h) { + writeSignedInt16(o, 2, h); + writeSignedInt16(o, 6, c); + } + if (l > u) { + writeSignedInt16(o, 4, u); + writeSignedInt16(o, 8, l); + } + const d = signedInt16(o[0], o[1]); + if (d < 0) { + if (d < -1) return s; + r.set(o, i); + s.length = o.length; + return s; + } + let f, + g = 10, + p = 0; + for (f = 0; f < d; f++) { + p = ((o[g] << 8) | o[g + 1]) + 1; + g += 2; + } + const m = g, + b = (o[g] << 8) | o[g + 1]; + s.sizeOfInstructions = b; + g += 2 + b; + const y = g; + let w = 0; + for (f = 0; f < p; f++) { + const e = o[g++]; + 192 & e && (o[g - 1] = 63 & e); + let t = 2; + 2 & e ? (t = 1) : 16 & e && (t = 0); + let a = 2; + 4 & e ? (a = 1) : 32 & e && (a = 0); + const r = t + a; + w += r; + if (8 & e) { + const e = o[g++]; + 0 === e && (o[g - 1] ^= 8); + f += e; + w += e * r; + } + } + if (0 === w) return s; + let x = g + w; + if (x > o.length) return s; + if (!n && b > 0) { + r.set(o.subarray(0, m), i); + r.set([0, 0], i + m); + r.set(o.subarray(y, x), i + m + 2); + x -= b; + o.length - x > 3 && (x = (x + 3) & -4); + s.length = x; + return s; + } + if (o.length - x > 3) { + x = (x + 3) & -4; + r.set(o.subarray(0, x), i); + s.length = x; + return s; + } + r.set(o, i); + s.length = o.length; + return s; + } + function readNameTable(e) { + const a = (t.start || 0) + e.offset; + t.pos = a; + const r = [[], []], + i = [], + n = e.length, + s = a + n; + if (0 !== t.getUint16() || n < 6) return [r, i]; + const o = t.getUint16(), + c = t.getUint16(); + let l, h; + for (l = 0; l < o && t.pos + 12 <= s; l++) { + const e = { + platform: t.getUint16(), + encoding: t.getUint16(), + language: t.getUint16(), + name: t.getUint16(), + length: t.getUint16(), + offset: t.getUint16(), + }; + (isMacNameRecord(e) || isWinNameRecord(e)) && i.push(e); + } + for (l = 0, h = i.length; l < h; l++) { + const e = i[l]; + if (e.length <= 0) continue; + const n = a + c + e.offset; + if (n + e.length > s) continue; + t.pos = n; + const o = e.name; + if (e.encoding) { + let a = ""; + for (let r = 0, i = e.length; r < i; r += 2) + a += String.fromCharCode(t.getUint16()); + r[1][o] = a; + } else r[0][o] = t.getString(e.length); + } + return [r, i]; + } + const i = [ + 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, + -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, + -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, + -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, + -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, + -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, + 0, -1, -1, -1, -2, + ]; + function sanitizeTTProgram(e, t) { + let a, + r, + n, + s, + o, + c = e.data, + l = 0, + h = 0, + u = 0; + const d = [], + f = [], + g = []; + let p = t.tooComplexToFollowFunctions, + m = !1, + b = 0, + y = 0; + for (let e = c.length; l < e; ) { + const e = c[l++]; + if (64 === e) { + r = c[l++]; + if (m || y) l += r; + else for (a = 0; a < r; a++) d.push(c[l++]); + } else if (65 === e) { + r = c[l++]; + if (m || y) l += 2 * r; + else + for (a = 0; a < r; a++) { + n = c[l++]; + d.push((n << 8) | c[l++]); + } + } else if (176 == (248 & e)) { + r = e - 176 + 1; + if (m || y) l += r; + else for (a = 0; a < r; a++) d.push(c[l++]); + } else if (184 == (248 & e)) { + r = e - 184 + 1; + if (m || y) l += 2 * r; + else + for (a = 0; a < r; a++) { + n = c[l++]; + d.push(signedInt16(n, c[l++])); + } + } else if (43 !== e || p) + if (44 !== e || p) { + if (45 === e) + if (m) { + m = !1; + h = l; + } else { + o = f.pop(); + if (!o) { + warn("TT: ENDF bad stack"); + t.hintsValid = !1; + return; + } + s = g.pop(); + c = o.data; + l = o.i; + t.functionsStackDeltas[s] = d.length - o.stackTop; + } + else if (137 === e) { + if (m || y) { + warn("TT: nested IDEFs not allowed"); + p = !0; + } + m = !0; + u = l; + } else if (88 === e) ++b; + else if (27 === e) y = b; + else if (89 === e) { + y === b && (y = 0); + --b; + } else if (28 === e && !m && !y) { + const e = d.at(-1); + e > 0 && (l += e - 1); + } + } else { + if (m || y) { + warn("TT: nested FDEFs not allowed"); + p = !0; + } + m = !0; + u = l; + s = d.pop(); + t.functionsDefined[s] = { data: c, i: l }; + } + else if (!m && !y) { + s = d.at(-1); + if (isNaN(s)) info("TT: CALL empty stack (or invalid entry)."); + else { + t.functionsUsed[s] = !0; + if (s in t.functionsStackDeltas) { + const e = d.length + t.functionsStackDeltas[s]; + if (e < 0) { + warn("TT: CALL invalid functions stack delta."); + t.hintsValid = !1; + return; + } + d.length = e; + } else if (s in t.functionsDefined && !g.includes(s)) { + f.push({ data: c, i: l, stackTop: d.length - 1 }); + g.push(s); + o = t.functionsDefined[s]; + if (!o) { + warn("TT: CALL non-existent function"); + t.hintsValid = !1; + return; + } + c = o.data; + l = o.i; + } + } + } + if (!m && !y) { + let t = 0; + e <= 142 + ? (t = i[e]) + : e >= 192 && e <= 223 + ? (t = -1) + : e >= 224 && (t = -2); + if (e >= 113 && e <= 117) { + r = d.pop(); + isNaN(r) || (t = 2 * -r); + } + for (; t < 0 && d.length > 0; ) { + d.pop(); + t++; + } + for (; t > 0; ) { + d.push(NaN); + t--; + } + } + } + t.tooComplexToFollowFunctions = p; + const w = [c]; + l > c.length && w.push(new Uint8Array(l - c.length)); + if (u > h) { + warn("TT: complementing a missing function tail"); + w.push(new Uint8Array([34, 45])); + } + !(function foldTTTable(e, t) { + if (t.length > 1) { + let a, + r, + i = 0; + for (a = 0, r = t.length; a < r; a++) i += t[a].length; + i = (i + 3) & -4; + const n = new Uint8Array(i); + let s = 0; + for (a = 0, r = t.length; a < r; a++) { + n.set(t[a], s); + s += t[a].length; + } + e.data = n; + e.length = i; + } + })(e, w); + } + let n, s, o, c; + if ( + isTrueTypeCollectionFile((t = new Stream(new Uint8Array(t.getBytes())))) + ) { + const e = (function readTrueTypeCollectionData(e, t) { + const { numFonts: a, offsetTable: r } = + (function readTrueTypeCollectionHeader(e) { + const t = e.getString(4); + assert("ttcf" === t, "Must be a TrueType Collection font."); + const a = e.getUint16(), + r = e.getUint16(), + i = e.getInt32() >>> 0, + n = []; + for (let t = 0; t < i; t++) n.push(e.getInt32() >>> 0); + const s = { + ttcTag: t, + majorVersion: a, + minorVersion: r, + numFonts: i, + offsetTable: n, + }; + switch (a) { + case 1: + return s; + case 2: + s.dsigTag = e.getInt32() >>> 0; + s.dsigLength = e.getInt32() >>> 0; + s.dsigOffset = e.getInt32() >>> 0; + return s; + } + throw new FormatError( + `Invalid TrueType Collection majorVersion: ${a}.`, + ); + })(e), + i = t.split("+"); + let n; + for (let s = 0; s < a; s++) { + e.pos = (e.start || 0) + r[s]; + const a = readOpenTypeHeader(e), + o = readTables(e, a.numTables); + if (!o.name) + throw new FormatError( + 'TrueType Collection font must contain a "name" table.', + ); + const [c] = readNameTable(o.name); + for (let e = 0, r = c.length; e < r; e++) + for (let r = 0, s = c[e].length; r < s; r++) { + const s = c[e][r]?.replaceAll(/\s/g, ""); + if (s) { + if (s === t) return { header: a, tables: o }; + if (!(i.length < 2)) + for (const e of i) + s === e && (n = { name: e, header: a, tables: o }); + } + } + } + if (n) { + warn( + `TrueType Collection does not contain "${t}" font, falling back to "${n.name}" font instead.`, + ); + return { header: n.header, tables: n.tables }; + } + throw new FormatError( + `TrueType Collection does not contain "${t}" font.`, + ); + })(t, this.name); + n = e.header; + s = e.tables; + } else { + n = readOpenTypeHeader(t); + s = readTables(t, n.numTables); + } + const l = !s["CFF "]; + if (l) { + if (!s.loca) throw new FormatError('Required "loca" table is not found'); + if (!s.glyf) { + warn('Required "glyf" table is not found -- trying to recover.'); + s.glyf = { tag: "glyf", data: new Uint8Array(0) }; + } + this.isOpenType = !1; + } else { + const t = + a.composite && + (a.cidToGidMap?.length > 0 || !(a.cMap instanceof IdentityCMap)); + if ( + ("OTTO" === n.version && !t) || + !s.head || + !s.hhea || + !s.maxp || + !s.post + ) { + c = new Stream(s["CFF "].data); + o = new CFFFont(c, a); + return this.convert(e, o, a); + } + delete s.glyf; + delete s.loca; + delete s.fpgm; + delete s.prep; + delete s["cvt "]; + this.isOpenType = !0; + } + if (!s.maxp) throw new FormatError('Required "maxp" table is not found'); + t.pos = (t.start || 0) + s.maxp.offset; + let h = t.getInt32(); + const u = t.getUint16(); + if (65536 !== h && 20480 !== h) { + if (6 === s.maxp.length) h = 20480; + else { + if (!(s.maxp.length >= 32)) + throw new FormatError('"maxp" table has a wrong version number'); + h = 65536; + } + !(function writeUint32(e, t, a) { + e[t + 3] = 255 & a; + e[t + 2] = a >>> 8; + e[t + 1] = a >>> 16; + e[t] = a >>> 24; + })(s.maxp.data, 0, h); + } + if (a.scaleFactors?.length === u && l) { + const { scaleFactors: e } = a, + t = int16(s.head.data[50], s.head.data[51]), + r = new GlyfTable({ + glyfTable: s.glyf.data, + isGlyphLocationsLong: t, + locaTable: s.loca.data, + numGlyphs: u, + }); + r.scale(e); + const { glyf: i, loca: n, isLocationLong: o } = r.write(); + s.glyf.data = i; + s.loca.data = n; + if (o !== !!t) { + s.head.data[50] = 0; + s.head.data[51] = o ? 1 : 0; + } + const c = s.hmtx.data; + for (let t = 0; t < u; t++) { + const a = 4 * t, + r = Math.round(e[t] * int16(c[a], c[a + 1])); + c[a] = (r >> 8) & 255; + c[a + 1] = 255 & r; + writeSignedInt16( + c, + a + 2, + Math.round(e[t] * signedInt16(c[a + 2], c[a + 3])), + ); + } + } + let d = u + 1, + f = !0; + if (d > 65535) { + f = !1; + d = u; + warn("Not enough space in glyfs to duplicate first glyph."); + } + let g = 0, + p = 0; + if (h >= 65536 && s.maxp.length >= 32) { + t.pos += 8; + if (t.getUint16() > 2) { + s.maxp.data[14] = 0; + s.maxp.data[15] = 2; + } + t.pos += 4; + g = t.getUint16(); + t.pos += 4; + p = t.getUint16(); + } + s.maxp.data[4] = d >> 8; + s.maxp.data[5] = 255 & d; + const m = (function sanitizeTTPrograms(e, t, a, r) { + const i = { + functionsDefined: [], + functionsUsed: [], + functionsStackDeltas: [], + tooComplexToFollowFunctions: !1, + hintsValid: !0, + }; + e && sanitizeTTProgram(e, i); + t && sanitizeTTProgram(t, i); + 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 a = 0, r = e.functionsUsed.length; a < r; a++) { + if (a > t) { + warn("TT: invalid function id: " + a); + e.hintsValid = !1; + return; + } + if (e.functionsUsed[a] && !e.functionsDefined[a]) { + warn("TT: undefined function: " + a); + e.hintsValid = !1; + return; + } + } + })(i, r); + if (a && 1 & a.length) { + const e = new Uint8Array(a.length + 1); + e.set(a.data); + a.data = e; + } + return i.hintsValid; + })(s.fpgm, s.prep, s["cvt "], g); + if (!m) { + delete s.fpgm; + delete s.prep; + delete s["cvt "]; + } + !(function sanitizeMetrics(e, t, a, r, i, n) { + if (!t) { + a && (a.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 s = e.getUint16(); + e.pos += 8; + e.pos += 2; + let o = e.getUint16(); + if (0 !== s) { + if (!(2 & int16(r.data[44], r.data[45]))) { + t.data[22] = 0; + t.data[23] = 0; + } + } + if (o > i) { + info( + `The numOfMetrics (${o}) should not be greater than the numGlyphs (${i}).`, + ); + o = i; + t.data[34] = (65280 & o) >> 8; + t.data[35] = 255 & o; + } + const c = i - o - ((a.length - 4 * o) >> 1); + if (c > 0) { + const e = new Uint8Array(a.length + 2 * c); + e.set(a.data); + if (n) { + e[a.length] = a.data[2]; + e[a.length + 1] = a.data[3]; + } + a.data = e; + } + })(t, s.hhea, s.hmtx, s.head, d, f); + if (!s.head) throw new FormatError('Required "head" table is not found'); + !(function sanitizeHead(e, t, a) { + const r = e.data, + i = (function int32(e, t, a, r) { + return (e << 24) + (t << 16) + (a << 8) + r; + })(r[0], r[1], r[2], r[3]); + if (i >> 16 != 1) { + info("Attempting to fix invalid version in head table: " + i); + r[0] = 0; + r[1] = 1; + r[2] = 0; + r[3] = 0; + } + const n = int16(r[50], r[51]); + if (n < 0 || n > 1) { + info("Attempting to fix invalid indexToLocFormat in head table: " + n); + const e = t + 1; + if (a === e << 1) { + r[50] = 0; + r[51] = 0; + } else { + if (a !== e << 2) + throw new FormatError("Could not fix indexToLocFormat: " + n); + r[50] = 0; + r[51] = 1; + } + } + })(s.head, u, l ? s.loca.length : 0); + let b = Object.create(null); + if (l) { + const e = int16(s.head.data[50], s.head.data[51]), + t = (function sanitizeGlyphLocations(e, t, a, r, i, n, s) { + let o, c, l; + if (r) { + o = 4; + c = function fontItemDecodeLong(e, t) { + return ( + (e[t] << 24) | (e[t + 1] << 16) | (e[t + 2] << 8) | e[t + 3] + ); + }; + l = function fontItemEncodeLong(e, t, a) { + e[t] = (a >>> 24) & 255; + e[t + 1] = (a >> 16) & 255; + e[t + 2] = (a >> 8) & 255; + e[t + 3] = 255 & a; + }; + } else { + o = 2; + c = function fontItemDecode(e, t) { + return (e[t] << 9) | (e[t + 1] << 1); + }; + l = function fontItemEncode(e, t, a) { + e[t] = (a >> 9) & 255; + e[t + 1] = (a >> 1) & 255; + }; + } + const h = n ? a + 1 : a, + u = o * (1 + h), + d = new Uint8Array(u); + d.set(e.data.subarray(0, u)); + e.data = d; + const f = t.data, + g = f.length, + p = new Uint8Array(g); + let m, b; + const y = []; + for (m = 0, b = 0; m < a + 1; m++, b += o) { + let e = c(d, b); + e > g && (e = g); + y.push({ index: m, offset: e, endOffset: 0 }); + } + y.sort((e, t) => e.offset - t.offset); + for (m = 0; m < a; m++) y[m].endOffset = y[m + 1].offset; + y.sort((e, t) => e.index - t.index); + for (m = 0; m < a; m++) { + const { offset: e, endOffset: t } = y[m]; + if (0 !== e || 0 !== t) break; + const a = y[m + 1].offset; + if (0 !== a) { + y[m].endOffset = a; + break; + } + } + const w = y.at(-2); + 0 !== w.offset && 0 === w.endOffset && (w.endOffset = g); + const x = Object.create(null); + let S = 0; + l(d, 0, S); + for (m = 0, b = o; m < a; m++, b += o) { + const e = sanitizeGlyph(f, y[m].offset, y[m].endOffset, p, S, i), + t = e.length; + 0 === t && (x[m] = !0); + e.sizeOfInstructions > s && (s = e.sizeOfInstructions); + S += t; + l(d, b, S); + } + if (0 === S) { + const e = new Uint8Array([ + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, + ]); + for (m = 0, b = o; m < h; m++, b += o) l(d, b, e.length); + t.data = e; + } else if (n) { + const a = c(d, o); + if (p.length > a + S) t.data = p.subarray(0, a + S); + else { + t.data = new Uint8Array(a + S); + t.data.set(p.subarray(0, S)); + } + t.data.set(p.subarray(0, a), S); + l(e.data, d.length - o, S + a); + } else t.data = p.subarray(0, S); + return { missingGlyphs: x, maxSizeOfInstructions: s }; + })(s.loca, s.glyf, u, e, m, f, p); + b = t.missingGlyphs; + if (h >= 65536 && s.maxp.length >= 32) { + s.maxp.data[26] = t.maxSizeOfInstructions >> 8; + s.maxp.data[27] = 255 & t.maxSizeOfInstructions; + } + } + if (!s.hhea) throw new FormatError('Required "hhea" table is not found'); + if (0 === s.hhea.data[10] && 0 === s.hhea.data[11]) { + s.hhea.data[10] = 255; + s.hhea.data[11] = 255; + } + const y = { + unitsPerEm: int16(s.head.data[18], s.head.data[19]), + yMax: signedInt16(s.head.data[42], s.head.data[43]), + yMin: signedInt16(s.head.data[38], s.head.data[39]), + ascent: signedInt16(s.hhea.data[4], s.hhea.data[5]), + descent: signedInt16(s.hhea.data[6], s.hhea.data[7]), + lineGap: signedInt16(s.hhea.data[8], s.hhea.data[9]), + }; + this.ascent = y.ascent / y.unitsPerEm; + this.descent = y.descent / y.unitsPerEm; + this.lineGap = y.lineGap / y.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; + s.post && + (function readPostScriptTable(e, a, r) { + const i = (t.start || 0) + e.offset; + t.pos = i; + const n = i + e.length, + s = t.getInt32(); + t.skip(28); + let o, + c, + l = !0; + switch (s) { + case 65536: + o = Cr; + break; + case 131072: + const e = t.getUint16(); + if (e !== r) { + l = !1; + break; + } + const i = []; + for (c = 0; c < e; ++c) { + const e = t.getUint16(); + if (e >= 32768) { + l = !1; + break; + } + i.push(e); + } + if (!l) break; + const h = [], + u = []; + for (; t.pos < n; ) { + const e = t.getByte(); + u.length = e; + for (c = 0; c < e; ++c) u[c] = String.fromCharCode(t.getByte()); + h.push(u.join("")); + } + o = []; + for (c = 0; c < e; ++c) { + const e = i[c]; + e < 258 ? o.push(Cr[e]) : o.push(h[e - 258]); + } + break; + case 196608: + break; + default: + warn("Unknown/unsupported post table version " + s); + l = !1; + a.defaultEncoding && (o = a.defaultEncoding); + } + a.glyphNames = o; + return l; + })(s.post, a, u); + s.post = { tag: "post", data: createPostTable(a) }; + const w = Object.create(null); + function hasGlyph(e) { + return !b[e]; + } + if (a.composite) { + const e = a.cidToGidMap || [], + t = 0 === e.length; + a.cMap.forEach(function (a, r) { + "string" == typeof r && (r = convertCidString(a, r, !0)); + if (r > 65535) throw new FormatError("Max size of CID is 65,535"); + let i = -1; + t ? (i = r) : void 0 !== e[r] && (i = e[r]); + i >= 0 && i < u && hasGlyph(i) && (w[a] = i); + }); + } else { + const e = (function readCmapTable(e, t, a, r) { + if (!e) { + warn("No cmap table available."); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: !1, + }; + } + let i, + n = (t.start || 0) + e.offset; + t.pos = n; + t.skip(2); + const s = t.getUint16(); + let o, + c = !1; + for (let e = 0; e < s; e++) { + const i = t.getUint16(), + n = t.getUint16(), + l = t.getInt32() >>> 0; + let h = !1; + if (o?.platformId !== i || o?.encodingId !== n) { + if (0 !== i || (0 !== n && 1 !== n && 3 !== n)) + if (1 === i && 0 === n) h = !0; + else if (3 !== i || 1 !== n || (!r && o)) { + if (a && 3 === i && 0 === n) { + h = !0; + let a = !0; + if (e < s - 1) { + const e = t.peekBytes(2); + int16(e[0], e[1]) < i && (a = !1); + } + a && (c = !0); + } + } else { + h = !0; + a || (c = !0); + } + else h = !0; + h && (o = { platformId: i, encodingId: n, offset: l }); + if (c) break; + } + } + o && (t.pos = n + o.offset); + if (!o || -1 === t.peekByte()) { + warn("Could not find a preferred cmap table."); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: !1, + }; + } + const l = t.getUint16(); + let h = !1; + const u = []; + let d, f; + if (0 === l) { + t.skip(4); + for (d = 0; d < 256; d++) { + const e = t.getByte(); + e && u.push({ charCode: d, glyphId: e }); + } + h = !0; + } else if (2 === l) { + t.skip(4); + const e = []; + let a = 0; + for (let r = 0; r < 256; r++) { + const r = t.getUint16() >> 3; + e.push(r); + a = Math.max(r, a); + } + const r = []; + for (let e = 0; e <= a; e++) + r.push({ + firstCode: t.getUint16(), + entryCount: t.getUint16(), + idDelta: signedInt16(t.getByte(), t.getByte()), + idRangePos: t.pos + t.getUint16(), + }); + for (let a = 0; a < 256; a++) + if (0 === e[a]) { + t.pos = r[0].idRangePos + 2 * a; + f = t.getUint16(); + u.push({ charCode: a, glyphId: f }); + } else { + const i = r[e[a]]; + for (d = 0; d < i.entryCount; d++) { + const e = (a << 8) + d + i.firstCode; + t.pos = i.idRangePos + 2 * d; + f = t.getUint16(); + 0 !== f && (f = (f + i.idDelta) % 65536); + u.push({ charCode: e, glyphId: f }); + } + } + } else if (4 === l) { + t.skip(4); + const e = t.getUint16() >> 1; + t.skip(6); + const a = []; + let r; + for (r = 0; r < e; r++) a.push({ end: t.getUint16() }); + t.skip(2); + for (r = 0; r < e; r++) a[r].start = t.getUint16(); + for (r = 0; r < e; r++) a[r].delta = t.getUint16(); + let s, + o = 0; + for (r = 0; r < e; r++) { + i = a[r]; + const n = t.getUint16(); + if (n) { + s = (n >> 1) - (e - r); + i.offsetIndex = s; + o = Math.max(o, s + i.end - i.start + 1); + } else i.offsetIndex = -1; + } + const c = []; + for (d = 0; d < o; d++) c.push(t.getUint16()); + for (r = 0; r < e; r++) { + i = a[r]; + n = i.start; + const e = i.end, + t = i.delta; + s = i.offsetIndex; + for (d = n; d <= e; d++) + if (65535 !== d) { + f = s < 0 ? d : c[s + d - n]; + f = (f + t) & 65535; + u.push({ charCode: d, glyphId: f }); + } + } + } else if (6 === l) { + t.skip(4); + const e = t.getUint16(), + a = t.getUint16(); + for (d = 0; d < a; d++) { + f = t.getUint16(); + const a = e + d; + u.push({ charCode: a, glyphId: f }); + } + } else { + if (12 !== l) { + warn("cmap table has unsupported format: " + l); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: !1, + }; + } + { + t.skip(10); + const e = t.getInt32() >>> 0; + for (d = 0; d < e; d++) { + const e = t.getInt32() >>> 0, + a = t.getInt32() >>> 0; + let r = t.getInt32() >>> 0; + for (let t = e; t <= a; t++) + u.push({ charCode: t, glyphId: r++ }); + } + } + } + u.sort((e, t) => e.charCode - t.charCode); + const g = [], + p = new Set(); + for (const e of u) { + const { charCode: t } = e; + if (!p.has(t)) { + p.add(t); + g.push(e); + } + } + return { + platformId: o.platformId, + encodingId: o.encodingId, + mappings: g, + hasShortCmap: h, + }; + })(s.cmap, t, this.isSymbolicFont, a.hasEncoding), + r = e.platformId, + i = e.encodingId, + n = e.mappings; + let o = [], + c = !1; + !a.hasEncoding || + ("MacRomanEncoding" !== a.baseEncodingName && + "WinAnsiEncoding" !== a.baseEncodingName) || + (o = getEncoding(a.baseEncodingName)); + if ( + a.hasEncoding && + !this.isSymbolicFont && + ((3 === r && 1 === i) || (1 === r && 0 === i)) + ) { + const e = fr(); + for (let t = 0; t < 256; t++) { + let s; + s = + void 0 !== this.differences[t] + ? this.differences[t] + : o.length && "" !== o[t] + ? o[t] + : lr[t]; + if (!s) continue; + const c = recoverGlyphName(s, e); + let l; + 3 === r && 1 === i + ? (l = e[c]) + : 1 === r && 0 === i && (l = cr.indexOf(c)); + if (void 0 === l) { + if ( + !a.glyphNames && + a.hasIncludedToUnicodeMap && + !(this.toUnicode instanceof IdentityToUnicodeMap) + ) { + const e = this.toUnicode.get(t); + e && (l = e.codePointAt(0)); + } + if (void 0 === l) continue; + } + for (const e of n) + if (e.charCode === l) { + w[t] = e.glyphId; + break; + } + } + } else if (0 === r) { + for (const e of n) w[e.charCode] = e.glyphId; + c = !0; + } else if (3 === r && 0 === i) + for (const e of n) { + let t = e.charCode; + t >= 61440 && t <= 61695 && (t &= 255); + w[t] = e.glyphId; + } + else for (const e of n) w[e.charCode] = e.glyphId; + if (a.glyphNames && (o.length || this.differences.length)) + for (let e = 0; e < 256; ++e) { + if (!c && void 0 !== w[e]) continue; + const t = this.differences[e] || o[e]; + if (!t) continue; + const r = a.glyphNames.indexOf(t); + r > 0 && hasGlyph(r) && (w[e] = r); + } + } + 0 === w.length && (w[0] = 0); + let x = d - 1; + f || (x = 0); + if (!a.cssFontInfo) { + const e = adjustMapping(w, hasGlyph, x, this.toUnicode); + this.toFontChar = e.toFontChar; + s.cmap = { + tag: "cmap", + data: createCmapTable(e.charCodeToGlyphId, e.toUnicodeExtraMap, d), + }; + (s["OS/2"] && + (function validateOS2Table(e, t) { + t.pos = (t.start || 0) + e.offset; + const a = t.getUint16(); + t.skip(60); + const r = t.getUint16(); + if (a < 4 && 768 & r) 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; + })(s["OS/2"], t)) || + (s["OS/2"] = { + tag: "OS/2", + data: createOS2Table(a, e.charCodeToGlyphId, y), + }); + } + if (!l) + try { + c = new Stream(s["CFF "].data); + o = new CFFParser(c, a, wr).parse(); + o.duplicateFirstGlyph(); + const e = new CFFCompiler(o); + s["CFF "].data = e.compile(); + } catch { + warn("Failed to compile font " + a.loadedName); + } + if (s.name) { + const [t, r] = readNameTable(s.name); + s.name.data = createNameTable(e, t); + this.psName = t[0][6] || null; + a.composite || + (function adjustTrueTypeToUnicode(e, t, a) { + if (e.isInternalFont) return; + if (e.hasIncludedToUnicodeMap) return; + if (e.hasEncoding) return; + if (e.toUnicode instanceof IdentityToUnicodeMap) return; + if (!t) return; + if (0 === a.length) return; + if (e.defaultEncoding === hr) return; + for (const e of a) if (!isWinNameRecord(e)) return; + const r = hr, + i = [], + n = fr(); + for (const e in r) { + const t = r[e]; + if ("" === t) continue; + const a = n[t]; + void 0 !== a && (i[e] = String.fromCharCode(a)); + } + i.length > 0 && e.toUnicode.amend(i); + })(a, this.isSymbolicFont, r); + } else s.name = { tag: "name", data: createNameTable(this.name) }; + const S = new OpenTypeFileBuilder(n.version); + for (const e in s) S.addTable(e, s[e].data); + return S.toArray(); + } + convert(e, a, r) { + r.fixedPitch = !1; + r.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 a = [], + r = fr(); + for (const i in t) { + if ( + e.hasEncoding && + (e.baseEncodingName || void 0 !== e.differences[i]) + ) + continue; + const n = getUnicodeForGlyph(t[i], r); + -1 !== n && (a[i] = String.fromCharCode(n)); + } + a.length > 0 && e.toUnicode.amend(a); + })(r, r.builtInEncoding); + let i = 1; + a instanceof CFFFont && (i = a.numGlyphs - 1); + const n = a.getGlyphMapping(r); + let s = null, + o = n, + c = null; + if (!r.cssFontInfo) { + s = adjustMapping(n, a.hasGlyphId.bind(a), i, this.toUnicode); + this.toFontChar = s.toFontChar; + o = s.charCodeToGlyphId; + c = s.toUnicodeExtraMap; + } + const l = a.numGlyphs; + function getCharCodes(e, t) { + let a = null; + for (const r in e) t === e[r] && (a ||= []).push(0 | r); + return a; + } + function createCharCode(e, t) { + for (const a in e) if (t === e[a]) return 0 | a; + s.charCodeToGlyphId[s.nextAvailableFontCharCode] = t; + return s.nextAvailableFontCharCode++; + } + const h = a.seacs; + if (s && h?.length) { + const e = r.fontMatrix || t, + i = a.getCharset(), + o = Object.create(null); + for (let t in h) { + t |= 0; + const a = h[t], + r = lr[a[2]], + c = lr[a[3]], + l = i.indexOf(r), + u = i.indexOf(c); + if (l < 0 || u < 0) continue; + const d = { + x: a[0] * e[0] + a[1] * e[2] + e[4], + y: a[0] * e[1] + a[1] * e[3] + e[5], + }, + f = getCharCodes(n, t); + if (f) + for (const e of f) { + const t = s.charCodeToGlyphId, + a = createCharCode(t, l), + r = createCharCode(t, u); + o[e] = { + baseFontCharCode: a, + accentFontCharCode: r, + accentOffset: d, + }; + } + } + r.seacMap = o; + } + const u = r.fontMatrix + ? 1 / Math.max(...r.fontMatrix.slice(0, 4).map(Math.abs)) + : 1e3, + d = new OpenTypeFileBuilder("OTTO"); + d.addTable("CFF ", a.data); + d.addTable("OS/2", createOS2Table(r, o)); + d.addTable("cmap", createCmapTable(o, c, l)); + d.addTable( + "head", + "\0\0\0\0\0\0\0\0\0\0_<õ\0\0" + + safeString16(u) + + "\0\0\0\0ž\v~'\0\0\0\0ž\v~'\0\0" + + safeString16(r.descent) + + "ÿ" + + safeString16(r.ascent) + + string16(r.italicAngle ? 2 : 0) + + "\0\0\0\0\0\0\0", + ); + d.addTable( + "hhea", + "\0\0\0" + + safeString16(r.ascent) + + safeString16(r.descent) + + "\0\0ÿÿ\0\0\0\0\0\0" + + safeString16(r.capHeight) + + safeString16(Math.tan(r.italicAngle) * r.xHeight) + + "\0\0\0\0\0\0\0\0\0\0\0\0" + + string16(l), + ); + d.addTable( + "hmtx", + (function fontFieldsHmtx() { + const e = a.charstrings, + t = a.cff ? a.cff.widths : null; + let r = "\0\0\0\0"; + for (let a = 1, i = l; a < i; a++) { + let i = 0; + if (e) { + const t = e[a - 1]; + i = "width" in t ? t.width : 0; + } else t && (i = Math.ceil(t[a] || 0)); + r += string16(i) + string16(0); + } + return r; + })(), + ); + d.addTable("maxp", "\0\0P\0" + string16(l)); + d.addTable("name", createNameTable(e)); + d.addTable("post", createPostTable(r)); + return d.toArray(); + } + get _spaceWidth() { + const e = ["space", "minus", "one", "i", "I"]; + let t; + for (const a of e) { + if (a in this.widths) { + t = this.widths[a]; + break; + } + const e = fr()[a]; + let r = 0; + if (this.composite && this.cMap.contains(e)) { + r = this.cMap.lookup(e); + "string" == typeof r && (r = convertCidString(e, r)); + } + !r && this.toUnicode && (r = this.toUnicode.charCodeOf(e)); + r <= 0 && (r = e); + t = this.widths[r]; + if (t) break; + } + return shadow(this, "_spaceWidth", t || this.defaultWidth); + } + _charToGlyph(e, t = !1) { + let a, + r, + i, + n = this._glyphCache[e]; + if (n?.isSpace === t) return n; + let s = e; + if (this.cMap?.contains(e)) { + s = this.cMap.lookup(e); + "string" == typeof s && (s = convertCidString(e, s)); + } + r = this.widths[s]; + "number" != typeof r && (r = this.defaultWidth); + const o = this.vmetrics?.[s]; + let c = this.toUnicode.get(e) || e; + "number" == typeof c && (c = String.fromCharCode(c)); + let l = void 0 !== this.toFontChar[e]; + a = this.toFontChar[e] || e; + if (this.missingFile) { + const t = this.differences[e] || this.defaultEncoding[e]; + if ((".notdef" === t || "" === t) && "Type1" === this.type) { + a = 32; + if ("" === t) { + r ||= this._spaceWidth; + c = String.fromCharCode(a); + } + } + a = (function mapSpecialUnicodeValues(e) { + return e >= 65520 && e <= 65535 + ? 0 + : e >= 62976 && e <= 63743 + ? pr()[e] || e + : 173 === e + ? 45 + : e; + })(a); + } + this.isType3Font && (i = a); + let h = null; + if (this.seacMap?.[e]) { + l = !0; + const t = this.seacMap[e]; + a = t.baseFontCharCode; + h = { + fontChar: String.fromCodePoint(t.accentFontCharCode), + offset: t.accentOffset, + }; + } + let u = ""; + "number" == typeof a && + (a <= 1114111 + ? (u = String.fromCodePoint(a)) + : warn(`charToGlyph - invalid fontCharCode: ${a}`)); + if (this.missingFile && this.vertical && 1 === u.length) { + const e = vr()[u.charCodeAt(0)]; + e && (u = c = String.fromCharCode(e)); + } + n = new fonts_Glyph(e, u, c, h, r, o, i, t, l); + return (this._glyphCache[e] = n); + } + charsToGlyphs(e) { + let t = this._charsCache[e]; + if (t) return t; + t = []; + if (this.cMap) { + const a = Object.create(null), + r = e.length; + let i = 0; + for (; i < r; ) { + this.cMap.readCharCode(e, i, a); + const { charcode: r, length: n } = a; + i += n; + const s = this._charToGlyph(r, 1 === n && 32 === e.charCodeAt(i - 1)); + t.push(s); + } + } else + for (let a = 0, r = e.length; a < r; ++a) { + const r = e.charCodeAt(a), + i = this._charToGlyph(r, 32 === r); + t.push(i); + } + return (this._charsCache[e] = t); + } + getCharPositions(e) { + const t = []; + if (this.cMap) { + const a = Object.create(null); + let r = 0; + for (; r < e.length; ) { + this.cMap.readCharCode(e, r, a); + const i = a.length; + t.push([r, r + i]); + r += i; + } + } else for (let a = 0, r = e.length; a < r; ++a) t.push([a, a + 1]); + return t; + } + get glyphCacheValues() { + return Object.values(this._glyphCache); + } + encodeString(e) { + const t = [], + a = [], + hasCurrentBufErrors = () => t.length % 2 == 1, + r = + this.toUnicode instanceof IdentityToUnicodeMap + ? (e) => this.toUnicode.charCodeOf(e) + : (e) => this.toUnicode.charCodeOf(String.fromCodePoint(e)); + for (let i = 0, n = e.length; i < n; i++) { + const n = e.codePointAt(i); + n > 55295 && (n < 57344 || n > 65533) && i++; + if (this.toUnicode) { + const e = r(n); + if (-1 !== e) { + if (hasCurrentBufErrors()) { + t.push(a.join("")); + a.length = 0; + } + for ( + let t = (this.cMap ? this.cMap.getCharCodeLength(e) : 1) - 1; + t >= 0; + t-- + ) + a.push(String.fromCharCode((e >> (8 * t)) & 255)); + continue; + } + } + if (!hasCurrentBufErrors()) { + t.push(a.join("")); + a.length = 0; + } + a.push(String.fromCodePoint(n)); + } + t.push(a.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() { + return { error: this.error }; + } +} +class CssFontInfo { + #E; + #H; + #W; + static strings = ["fontFamily", "fontWeight", "italicAngle"]; + static write(e) { + const t = new TextEncoder(), + a = {}; + let r = 0; + for (const i of CssFontInfo.strings) { + const n = t.encode(e[i]); + a[i] = n; + r += 4 + n.length; + } + const i = new ArrayBuffer(r), + n = new Uint8Array(i), + s = new DataView(i); + let o = 0; + for (const e of CssFontInfo.strings) { + const t = a[e], + r = t.length; + s.setUint32(o, r); + n.set(t, o + 4); + o += 4 + r; + } + assert(o === i.byteLength, "CssFontInfo.write: Buffer overflow"); + return i; + } + constructor(e) { + this.#E = e; + this.#H = new DataView(this.#E); + this.#W = new TextDecoder(); + } + #G(e) { + assert(e < CssFontInfo.strings.length, "Invalid string index"); + let t = 0; + for (let a = 0; a < e; a++) t += this.#H.getUint32(t) + 4; + const a = this.#H.getUint32(t); + return this.#W.decode(new Uint8Array(this.#E, t + 4, a)); + } + get fontFamily() { + return this.#G(0); + } + get fontWeight() { + return this.#G(1); + } + get italicAngle() { + return this.#G(2); + } +} +class SystemFontInfo { + #E; + #H; + #W; + static strings = ["css", "loadedName", "baseFontName", "src"]; + static write(e) { + const t = new TextEncoder(), + a = {}; + let r = 0; + for (const i of SystemFontInfo.strings) { + const n = t.encode(e[i]); + a[i] = n; + r += 4 + n.length; + } + r += 4; + let i, + n, + s = 1 + r; + if (e.style) { + i = t.encode(e.style.style); + n = t.encode(e.style.weight); + s += 4 + i.length + 4 + n.length; + } + const o = new ArrayBuffer(s), + c = new Uint8Array(o), + l = new DataView(o); + let h = 0; + l.setUint8(h++, e.guessFallback ? 1 : 0); + l.setUint32(h, 0); + h += 4; + r = 0; + for (const e of SystemFontInfo.strings) { + const t = a[e], + i = t.length; + r += 4 + i; + l.setUint32(h, i); + c.set(t, h + 4); + h += 4 + i; + } + l.setUint32(h - r - 4, r); + if (e.style) { + l.setUint32(h, i.length); + c.set(i, h + 4); + h += 4 + i.length; + l.setUint32(h, n.length); + c.set(n, h + 4); + h += 4 + n.length; + } + assert(h <= o.byteLength, "SubstitionInfo.write: Buffer overflow"); + return o.transferToFixedLength(h); + } + constructor(e) { + this.#E = e; + this.#H = new DataView(this.#E); + this.#W = new TextDecoder(); + } + get guessFallback() { + return 0 !== this.#H.getUint8(0); + } + #G(e) { + assert(e < SystemFontInfo.strings.length, "Invalid string index"); + let t = 5; + for (let a = 0; a < e; a++) t += this.#H.getUint32(t) + 4; + const a = this.#H.getUint32(t); + return this.#W.decode(new Uint8Array(this.#E, t + 4, a)); + } + get css() { + return this.#G(0); + } + get loadedName() { + return this.#G(1); + } + get baseFontName() { + return this.#G(2); + } + get src() { + return this.#G(3); + } + get style() { + let e = 1; + e += 4 + this.#H.getUint32(e); + const t = this.#H.getUint32(e), + a = this.#W.decode(new Uint8Array(this.#E, e + 4, t)); + e += 4 + t; + const r = this.#H.getUint32(e); + return { + style: a, + weight: this.#W.decode(new Uint8Array(this.#E, e + 4, r)), + }; + } +} +class FontInfo { + static bools = [ + "black", + "bold", + "disableFontFace", + "fontExtraProperties", + "isInvalidPDFjsFont", + "isType3Font", + "italic", + "missingFile", + "remeasure", + "vertical", + ]; + static numbers = ["ascent", "defaultWidth", "descent"]; + static strings = ["fallbackName", "loadedName", "mimetype", "name"]; + static #z = Math.ceil((2 * this.bools.length) / 8); + static #$ = this.#z + 8 * this.numbers.length; + static #V = this.#$ + 1 + 8; + static #K = this.#V + 1 + 48; + static #J = this.#K + 1 + 6; + #E; + #W; + #H; + constructor({ data: e, extra: t }) { + this.#E = e; + this.#W = new TextDecoder(); + this.#H = new DataView(this.#E); + t && Object.assign(this, t); + } + #Y(e) { + assert(e < FontInfo.bools.length, "Invalid boolean index"); + const t = Math.floor(e / 4), + a = (2 * e) % 8, + r = (this.#H.getUint8(t) >> a) & 3; + return 0 === r ? void 0 : 2 === r; + } + get black() { + return this.#Y(0); + } + get bold() { + return this.#Y(1); + } + get disableFontFace() { + return this.#Y(2); + } + get fontExtraProperties() { + return this.#Y(3); + } + get isInvalidPDFjsFont() { + return this.#Y(4); + } + get isType3Font() { + return this.#Y(5); + } + get italic() { + return this.#Y(6); + } + get missingFile() { + return this.#Y(7); + } + get remeasure() { + return this.#Y(8); + } + get vertical() { + return this.#Y(9); + } + #Z(e) { + assert(e < FontInfo.numbers.length, "Invalid number index"); + return this.#H.getFloat64(FontInfo.#z + 8 * e); + } + get ascent() { + return this.#Z(0); + } + get defaultWidth() { + return this.#Z(1); + } + get descent() { + return this.#Z(2); + } + get bbox() { + let e = FontInfo.#$; + if (0 === this.#H.getUint8(e)) return; + e += 1; + const t = []; + for (let a = 0; a < 4; a++) { + t.push(this.#H.getInt16(e, !0)); + e += 2; + } + return t; + } + get fontMatrix() { + let e = FontInfo.#V; + if (0 === this.#H.getUint8(e)) return; + e += 1; + const t = []; + for (let a = 0; a < 6; a++) { + t.push(this.#H.getFloat64(e, !0)); + e += 8; + } + return t; + } + get defaultVMetrics() { + let e = FontInfo.#K; + if (0 === this.#H.getUint8(e)) return; + e += 1; + const t = []; + for (let a = 0; a < 3; a++) { + t.push(this.#H.getInt16(e, !0)); + e += 2; + } + return t; + } + #G(e) { + assert(e < FontInfo.strings.length, "Invalid string index"); + let t = FontInfo.#J + 4; + for (let a = 0; a < e; a++) t += this.#H.getUint32(t) + 4; + const a = this.#H.getUint32(t), + r = new Uint8Array(a); + r.set(new Uint8Array(this.#E, t + 4, a)); + return this.#W.decode(r); + } + get fallbackName() { + return this.#G(0); + } + get loadedName() { + return this.#G(1); + } + get mimetype() { + return this.#G(2); + } + get name() { + return this.#G(3); + } + get data() { + let e = FontInfo.#J; + e += 4 + this.#H.getUint32(e); + e += 4 + this.#H.getUint32(e); + e += 4 + this.#H.getUint32(e); + const t = this.#H.getUint32(e); + if (0 !== t) return new Uint8Array(this.#E, e + 4, t); + } + clearData() { + let e = FontInfo.#J; + e += 4 + this.#H.getUint32(e); + e += 4 + this.#H.getUint32(e); + e += 4 + this.#H.getUint32(e); + const t = this.#H.getUint32(e); + new Uint8Array(this.#E, e + 4, t).fill(0); + this.#H.setUint32(e, 0); + } + get cssFontInfo() { + let e = FontInfo.#J; + e += 4 + this.#H.getUint32(e); + e += 4 + this.#H.getUint32(e); + const t = this.#H.getUint32(e); + if (0 === t) return null; + const a = new Uint8Array(t); + a.set(new Uint8Array(this.#E, e + 4, t)); + return new CssFontInfo(a.buffer); + } + get systemFontInfo() { + let e = FontInfo.#J; + e += 4 + this.#H.getUint32(e); + const t = this.#H.getUint32(e); + if (0 === t) return null; + const a = new Uint8Array(t); + a.set(new Uint8Array(this.#E, e + 4, t)); + return new SystemFontInfo(a.buffer); + } + static write(e) { + const t = e.systemFontInfo ? SystemFontInfo.write(e.systemFontInfo) : null, + a = e.cssFontInfo ? CssFontInfo.write(e.cssFontInfo) : null, + r = new TextEncoder(), + i = {}; + let n = 0; + for (const t of FontInfo.strings) { + i[t] = r.encode(e[t]); + n += 4 + i[t].length; + } + const s = + FontInfo.#J + + 4 + + n + + 4 + + (t ? t.byteLength : 0) + + 4 + + (a ? a.byteLength : 0) + + 4 + + (e.data ? e.data.length : 0), + o = new ArrayBuffer(s), + c = new Uint8Array(o), + l = new DataView(o); + let h = 0; + const u = FontInfo.bools.length; + let d = 0, + f = 0; + for (let t = 0; t < u; t++) { + const a = e[FontInfo.bools[t]]; + d |= (void 0 === a ? 0 : a ? 2 : 1) << f; + f += 2; + if (8 === f || t === u - 1) { + l.setUint8(h++, d); + d = 0; + f = 0; + } + } + assert( + h === FontInfo.#z, + "FontInfo.write: Boolean properties offset mismatch", + ); + for (const t of FontInfo.numbers) { + l.setFloat64(h, e[t]); + h += 8; + } + assert( + h === FontInfo.#$, + "FontInfo.write: Number properties offset mismatch", + ); + if (e.bbox) { + l.setUint8(h++, 4); + for (const t of e.bbox) { + l.setInt16(h, t, !0); + h += 2; + } + } else { + l.setUint8(h++, 0); + h += 8; + } + assert( + h === FontInfo.#V, + "FontInfo.write: BBox properties offset mismatch", + ); + if (e.fontMatrix) { + l.setUint8(h++, 6); + for (const t of e.fontMatrix) { + l.setFloat64(h, t, !0); + h += 8; + } + } else { + l.setUint8(h++, 0); + h += 48; + } + assert( + h === FontInfo.#K, + "FontInfo.write: FontMatrix properties offset mismatch", + ); + if (e.defaultVMetrics) { + l.setUint8(h++, 1); + for (const t of e.defaultVMetrics) { + l.setInt16(h, t, !0); + h += 2; + } + } else { + l.setUint8(h++, 0); + h += 6; + } + assert( + h === FontInfo.#J, + "FontInfo.write: DefaultVMetrics properties offset mismatch", + ); + l.setUint32(FontInfo.#J, 0); + h += 4; + for (const e of FontInfo.strings) { + const t = i[e], + a = t.length; + l.setUint32(h, a); + c.set(t, h + 4); + h += 4 + a; + } + l.setUint32(FontInfo.#J, h - FontInfo.#J - 4); + if (t) { + const e = t.byteLength; + l.setUint32(h, e); + assert( + h + 4 + e <= o.byteLength, + "FontInfo.write: Buffer overflow at systemFontInfo", + ); + c.set(new Uint8Array(t), h + 4); + h += 4 + e; + } else { + l.setUint32(h, 0); + h += 4; + } + if (a) { + const e = a.byteLength; + l.setUint32(h, e); + assert( + h + 4 + e <= o.byteLength, + "FontInfo.write: Buffer overflow at cssFontInfo", + ); + c.set(new Uint8Array(a), h + 4); + h += 4 + e; + } else { + l.setUint32(h, 0); + h += 4; + } + if (void 0 === e.data) { + l.setUint32(h, 0); + h += 4; + } else { + l.setUint32(h, e.data.length); + c.set(e.data, h + 4); + h += 4 + e.data.length; + } + assert(h <= o.byteLength, "FontInfo.write: Buffer overflow"); + return o.transferToFixedLength(h); + } +} +class PatternInfo { + static #Q = 0; + static #ee = 1; + static #te = 2; + static #ae = 3; + static #re = 4; + static #ie = 8; + static #ne = 12; + static #se = 16; + constructor(e) { + this.buffer = e; + this.view = new DataView(e); + this.data = new Uint8Array(e); + } + static write(e) { + let t, + a = null, + r = [], + i = [], + n = [], + s = [], + o = null, + c = null; + switch (e[0]) { + case "RadialAxial": + t = "axial" === e[1] ? 1 : 2; + a = e[2]; + n = e[3]; + 1 === t + ? r.push(...e[4], ...e[5]) + : r.push(e[4][0], e[4][1], e[6], e[5][0], e[5][1], e[7]); + break; + case "Mesh": + t = 3; + o = e[1]; + r = e[2]; + i = e[3]; + s = e[4] || []; + a = e[6]; + c = e[7]; + break; + default: + throw new Error(`Unsupported pattern type: ${e[0]}`); + } + const l = Math.floor(r.length / 2), + h = Math.floor(i.length / 3), + u = n.length, + d = s.length; + let f = 0; + for (const e of s) { + f += 1; + f = 4 * Math.ceil(f / 4); + f += 4 + 4 * e.coords.length; + f += 4 + 4 * e.colors.length; + void 0 !== e.verticesPerRow && (f += 4); + } + const g = new ArrayBuffer( + 20 + 8 * l + 3 * h + 8 * u + (a ? 16 : 0) + (c ? 3 : 0) + f, + ), + p = new DataView(g), + m = new Uint8Array(g); + p.setUint8(PatternInfo.#Q, t); + p.setUint8(PatternInfo.#ee, a ? 1 : 0); + p.setUint8(PatternInfo.#te, c ? 1 : 0); + p.setUint8(PatternInfo.#ae, o); + p.setUint32(PatternInfo.#re, l, !0); + p.setUint32(PatternInfo.#ie, h, !0); + p.setUint32(PatternInfo.#ne, u, !0); + p.setUint32(PatternInfo.#se, d, !0); + let b = 20; + new Float32Array(g, b, 2 * l).set(r); + b += 8 * l; + m.set(i, b); + b += 3 * h; + for (const [e, t] of n) { + p.setFloat32(b, e, !0); + b += 4; + p.setUint32(b, parseInt(t.slice(1), 16), !0); + b += 4; + } + if (a) + for (const e of a) { + p.setFloat32(b, e, !0); + b += 4; + } + if (c) { + m.set(c, b); + b += 3; + } + for (let e = 0; e < s.length; e++) { + const t = s[e]; + p.setUint8(b, t.type); + b += 1; + b = 4 * Math.ceil(b / 4); + p.setUint32(b, t.coords.length, !0); + b += 4; + new Int32Array(g, b, t.coords.length).set(t.coords); + b += 4 * t.coords.length; + p.setUint32(b, t.colors.length, !0); + b += 4; + new Int32Array(g, b, t.colors.length).set(t.colors); + b += 4 * t.colors.length; + if (void 0 !== t.verticesPerRow) { + p.setUint32(b, t.verticesPerRow, !0); + b += 4; + } + } + return g; + } + getIR() { + const e = this.view, + t = this.data[PatternInfo.#Q], + a = !!this.data[PatternInfo.#ee], + r = !!this.data[PatternInfo.#te], + i = e.getUint32(PatternInfo.#re, !0), + n = e.getUint32(PatternInfo.#ie, !0), + s = e.getUint32(PatternInfo.#ne, !0), + o = e.getUint32(PatternInfo.#se, !0); + let c = 20; + const l = new Float32Array(this.buffer, c, 2 * i); + c += 8 * i; + const h = new Uint8Array(this.buffer, c, 3 * n); + c += 3 * n; + const u = []; + for (let t = 0; t < s; ++t) { + const t = e.getFloat32(c, !0); + c += 4; + const a = e.getUint32(c, !0); + c += 4; + u.push([t, `#${a.toString(16).padStart(6, "0")}`]); + } + let d = null; + if (a) { + d = []; + for (let t = 0; t < 4; ++t) { + d.push(e.getFloat32(c, !0)); + c += 4; + } + } + let f = null; + if (r) { + f = new Uint8Array(this.buffer, c, 3); + c += 3; + } + const g = []; + for (let t = 0; t < o; ++t) { + const t = e.getUint8(c); + c += 1; + c = 4 * Math.ceil(c / 4); + const a = e.getUint32(c, !0); + c += 4; + const r = new Int32Array(this.buffer, c, a); + c += 4 * a; + const i = e.getUint32(c, !0); + c += 4; + const n = new Int32Array(this.buffer, c, i); + c += 4 * i; + const s = { type: t, coords: r, colors: n }; + if (t === S) { + s.verticesPerRow = e.getUint32(c, !0); + c += 4; + } + g.push(s); + } + if (1 === t) + return [ + "RadialAxial", + "axial", + d, + u, + Array.from(l.slice(0, 2)), + Array.from(l.slice(2, 4)), + null, + null, + ]; + if (2 === t) + return [ + "RadialAxial", + "radial", + d, + u, + [l[0], l[1]], + [l[3], l[4]], + l[2], + l[5], + ]; + if (3 === t) { + const e = this.data[PatternInfo.#ae]; + let t = null; + if (l.length > 0) { + let e = l[0], + a = l[0], + r = l[1], + i = l[1]; + for (let t = 0; t < l.length; t += 2) { + const n = l[t], + s = l[t + 1]; + e = e > n ? n : e; + r = r > s ? s : r; + a = a < n ? n : a; + i = i < s ? s : i; + } + t = [e, r, a, i]; + } + return ["Mesh", e, l, h, g, t, d, f]; + } + throw new Error(`Unsupported pattern kind: ${t}`); + } +} +const ci = 2, + li = 3, + hi = 4, + ui = 5, + di = 6, + fi = 7; +class Pattern { + constructor() { + unreachable("Cannot initialize Pattern."); + } + static parseShading(e, t, a, r, i, n) { + const s = e instanceof BaseStream ? e.dict : e, + o = s.get("ShadingType"); + try { + switch (o) { + case ci: + case li: + return new RadialAxialShading(s, t, a, r, i, n); + case hi: + case ui: + case di: + case fi: + return new MeshShading(e, t, a, r, i, n); + default: + throw new FormatError("Unsupported ShadingType: " + o); + } + } 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, a, r, i, n) { + super(); + this.shadingType = e.get("ShadingType"); + let s = 0; + this.shadingType === ci ? (s = 4) : this.shadingType === li && (s = 6); + this.coordsArr = e.getArray("Coords"); + if (!isNumberArray(this.coordsArr, s)) + throw new FormatError("RadialAxialShading: Invalid /Coords array."); + const o = ColorSpaceUtils.parse({ + cs: e.getRaw("CS") || e.getRaw("ColorSpace"), + xref: t, + resources: a, + pdfFunctionFactory: r, + globalColorSpaceCache: i, + localColorSpaceCache: n, + }); + this.bbox = lookupNormalRect(e.getArray("BBox"), null); + let c = 0, + l = 1; + const h = e.getArray("Domain"); + isNumberArray(h, 2) && ([c, l] = h); + let u = !1, + d = !1; + const f = e.getArray("Extend"); + (function isBooleanArray(e, t) { + return ( + Array.isArray(e) && + (null === t || e.length === t) && + e.every((e) => "boolean" == typeof e) + ); + })(f, 2) && ([u, d] = f); + if (!(this.shadingType !== li || (u && d))) { + const [e, t, a, r, i, n] = this.coordsArr, + s = Math.hypot(e - r, t - i); + a <= n + s && n <= a + s && warn("Unsupported radial gradient."); + } + this.extendStart = u; + this.extendEnd = d; + const g = e.getRaw("Function"), + p = r.create(g, !0), + m = (l - c) / 840, + b = (this.colorStops = []); + if (c >= l || m <= 0) { + info("Bad shading domain."); + return; + } + const y = new Float32Array(o.numComps), + w = new Float32Array(1); + let x = 0; + w[0] = c; + p(w, 0, y, 0); + const S = new Uint8ClampedArray(3); + o.getRgb(y, 0, S); + let [k, C, v] = S; + b.push([0, Util.makeHexColor(k, C, v)]); + let F = 1; + w[0] = c + m; + p(w, 0, y, 0); + o.getRgb(y, 0, S); + let [T, O, M] = S, + D = T - k + 1, + R = O - C + 1, + N = M - v + 1, + E = T - k - 1, + L = O - C - 1, + _ = M - v - 1; + for (let e = 2; e < 840; e++) { + w[0] = c + e * m; + p(w, 0, y, 0); + o.getRgb(y, 0, S); + const [t, a, r] = S, + i = e - x; + D = Math.min(D, (t - k + 1) / i); + R = Math.min(R, (a - C + 1) / i); + N = Math.min(N, (r - v + 1) / i); + E = Math.max(E, (t - k - 1) / i); + L = Math.max(L, (a - C - 1) / i); + _ = Math.max(_, (r - v - 1) / i); + if (!(E <= D && L <= R && _ <= N)) { + const e = Util.makeHexColor(T, O, M); + b.push([F / 840, e]); + D = t - T + 1; + R = a - O + 1; + N = r - M + 1; + E = t - T - 1; + L = a - O - 1; + _ = r - M - 1; + x = F; + k = T; + C = O; + v = M; + } + F = e; + T = t; + O = a; + M = r; + } + b.push([1, Util.makeHexColor(T, O, M)]); + let U = "transparent"; + e.has("Background") && (U = o.getRgbHex(e.get("Background"), 0)); + if (!u) { + b.unshift([0, U]); + b[1][0] += BaseShading.SMALL_NUMBER; + } + if (!d) { + b.at(-1)[0] -= BaseShading.SMALL_NUMBER; + b.push([1, U]); + } + this.colorStops = b; + } + getIR() { + const { coordsArr: e, shadingType: t } = this; + let a, r, i, n, s; + if (t === ci) { + r = [e[0], e[1]]; + i = [e[2], e[3]]; + n = null; + s = null; + a = "axial"; + } else if (t === li) { + r = [e[0], e[1]]; + i = [e[3], e[4]]; + n = e[2]; + s = e[5]; + a = "radial"; + } else unreachable(`getPattern type unknown: ${t}`); + return ["RadialAxial", a, this.bbox, this.colorStops, r, i, n, s]; + } +} +class MeshStreamReader { + constructor(e, t) { + this.stream = e; + this.context = t; + this.buffer = 0; + this.bufferLength = 0; + const a = t.numComps; + this.tmpCompsBuf = new Float32Array(a); + const r = t.colorSpace.numComps; + this.tmpCsCompsBuf = t.colorFn ? new Float32Array(r) : this.tmpCompsBuf; + } + get hasData() { + if (this.stream.end) return this.stream.pos < this.stream.end; + if (this.bufferLength > 0) return !0; + const e = this.stream.getByte(); + if (e < 0) return !1; + this.buffer = e; + this.bufferLength = 8; + return !0; + } + readBits(e) { + const { stream: t } = this; + let { buffer: a, bufferLength: r } = this; + if (32 === e) { + if (0 === r) return t.getInt32() >>> 0; + a = (a << 24) | (t.getByte() << 16) | (t.getByte() << 8) | t.getByte(); + const e = t.getByte(); + this.buffer = e & ((1 << r) - 1); + return ((a << (8 - r)) | ((255 & e) >> r)) >>> 0; + } + if (8 === e && 0 === r) return t.getByte(); + for (; r < e; ) { + a = (a << 8) | t.getByte(); + r += 8; + } + r -= e; + this.bufferLength = r; + this.buffer = a & ((1 << r) - 1); + return a >> r; + } + align() { + this.buffer = 0; + this.bufferLength = 0; + } + readFlag() { + return this.readBits(this.context.bitsPerFlag); + } + readCoordinate() { + const { bitsPerCoordinate: e, decode: t } = this.context, + a = this.readBits(e), + r = this.readBits(e), + i = e < 32 ? 1 / ((1 << e) - 1) : 2.3283064365386963e-10; + return [a * i * (t[1] - t[0]) + t[0], r * i * (t[3] - t[2]) + t[2]]; + } + readComponents() { + const { + bitsPerComponent: e, + colorFn: t, + colorSpace: a, + decode: r, + numComps: i, + } = this.context, + n = e < 32 ? 1 / ((1 << e) - 1) : 2.3283064365386963e-10, + s = this.tmpCompsBuf; + for (let t = 0, a = 4; t < i; t++, a += 2) { + const i = this.readBits(e); + s[t] = i * n * (r[a + 1] - r[a]) + r[a]; + } + const o = this.tmpCsCompsBuf; + t?.(s, 0, o, 0); + return a.getRgb(o, 0); + } +} +let gi = Object.create(null); +function getB(e) { + return (gi[e] ||= (function buildB(e) { + const t = []; + for (let a = 0; a <= e; a++) { + const r = a / e, + i = 1 - r; + t.push( + new Float32Array([i ** 3, 3 * r * i ** 2, 3 * r ** 2 * i, r ** 3]), + ); + } + return t; + })(e)); +} +class MeshShading extends BaseShading { + static MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3; + static MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20; + static TRIANGLE_DENSITY = 20; + constructor(e, t, a, r, i, n) { + super(); + if (!(e instanceof BaseStream)) + throw new FormatError("Mesh data is not a stream"); + const s = e.dict; + this.shadingType = s.get("ShadingType"); + this.bbox = lookupNormalRect(s.getArray("BBox"), null); + const o = ColorSpaceUtils.parse({ + cs: s.getRaw("CS") || s.getRaw("ColorSpace"), + xref: t, + resources: a, + pdfFunctionFactory: r, + globalColorSpaceCache: i, + localColorSpaceCache: n, + }); + this.background = s.has("Background") + ? o.getRgb(s.get("Background"), 0) + : null; + const c = s.getRaw("Function"), + l = c ? r.create(c, !0) : null; + this.coords = []; + this.colors = []; + this.figures = []; + const h = { + bitsPerCoordinate: s.get("BitsPerCoordinate"), + bitsPerComponent: s.get("BitsPerComponent"), + bitsPerFlag: s.get("BitsPerFlag"), + decode: s.getArray("Decode"), + colorFn: l, + colorSpace: o, + numComps: l ? 1 : o.numComps, + }, + u = new MeshStreamReader(e, h); + let d = !1; + switch (this.shadingType) { + case hi: + this._decodeType4Shading(u); + break; + case ui: + const e = 0 | s.get("VerticesPerRow"); + if (e < 2) throw new FormatError("Invalid VerticesPerRow"); + this._decodeType5Shading(u, e); + break; + case di: + this._decodeType6Shading(u); + d = !0; + break; + case fi: + this._decodeType7Shading(u); + d = !0; + break; + default: + unreachable("Unsupported mesh type."); + } + if (d) { + this._updateBounds(); + for (let e = 0, t = this.figures.length; e < t; e++) + this._buildFigureFromPatch(e); + } + this._updateBounds(); + this._packData(); + } + _decodeType4Shading(e) { + const t = this.coords, + a = this.colors, + r = [], + i = []; + let n = 0; + for (; e.hasData; ) { + const s = e.readFlag(), + o = e.readCoordinate(), + c = e.readComponents(); + if (0 === n) { + if (!(0 <= s && s <= 2)) throw new FormatError("Unknown type4 flag"); + switch (s) { + case 0: + n = 3; + break; + case 1: + i.push(i.at(-2), i.at(-1)); + n = 1; + break; + case 2: + i.push(i.at(-3), i.at(-1)); + n = 1; + } + r.push(s); + } + i.push(t.length); + t.push(o); + a.push(c); + n--; + e.align(); + } + this.figures.push({ + type: x, + coords: new Int32Array(i), + colors: new Int32Array(i), + }); + } + _decodeType5Shading(e, t) { + const a = this.coords, + r = this.colors, + i = []; + for (; e.hasData; ) { + const t = e.readCoordinate(), + n = e.readComponents(); + i.push(a.length); + a.push(t); + r.push(n); + } + this.figures.push({ + type: S, + coords: new Int32Array(i), + colors: new Int32Array(i), + verticesPerRow: t, + }); + } + _decodeType6Shading(e) { + const t = this.coords, + a = this.colors, + r = new Int32Array(16), + i = new Int32Array(4); + for (; e.hasData; ) { + const n = e.readFlag(); + if (!(0 <= n && n <= 3)) throw new FormatError("Unknown type6 flag"); + const s = t.length; + for (let a = 0, r = 0 !== n ? 8 : 12; a < r; a++) + t.push(e.readCoordinate()); + const o = a.length; + for (let t = 0, r = 0 !== n ? 2 : 4; t < r; t++) + a.push(e.readComponents()); + let c, l, h, u; + switch (n) { + case 0: + r[12] = s + 3; + r[13] = s + 4; + r[14] = s + 5; + r[15] = s + 6; + r[8] = s + 2; + r[11] = s + 7; + r[4] = s + 1; + r[7] = s + 8; + r[0] = s; + r[1] = s + 11; + r[2] = s + 10; + r[3] = s + 9; + i[2] = o + 1; + i[3] = o + 2; + i[0] = o; + i[1] = o + 3; + break; + case 1: + c = r[12]; + l = r[13]; + h = r[14]; + u = r[15]; + r[12] = u; + r[13] = s + 0; + r[14] = s + 1; + r[15] = s + 2; + r[8] = h; + r[11] = s + 3; + r[4] = l; + r[7] = s + 4; + r[0] = c; + r[1] = s + 7; + r[2] = s + 6; + r[3] = s + 5; + c = i[2]; + l = i[3]; + i[2] = l; + i[3] = o; + i[0] = c; + i[1] = o + 1; + break; + case 2: + c = r[15]; + l = r[11]; + r[12] = r[3]; + r[13] = s + 0; + r[14] = s + 1; + r[15] = s + 2; + r[8] = r[7]; + r[11] = s + 3; + r[4] = l; + r[7] = s + 4; + r[0] = c; + r[1] = s + 7; + r[2] = s + 6; + r[3] = s + 5; + c = i[3]; + i[2] = i[1]; + i[3] = o; + i[0] = c; + i[1] = o + 1; + break; + case 3: + r[12] = r[0]; + r[13] = s + 0; + r[14] = s + 1; + r[15] = s + 2; + r[8] = r[1]; + r[11] = s + 3; + r[4] = r[2]; + r[7] = s + 4; + r[0] = r[3]; + r[1] = s + 7; + r[2] = s + 6; + r[3] = s + 5; + i[2] = i[0]; + i[3] = o; + i[0] = i[1]; + i[1] = o + 1; + } + r[5] = t.length; + t.push([ + (-4 * t[r[0]][0] - + t[r[15]][0] + + 6 * (t[r[4]][0] + t[r[1]][0]) - + 2 * (t[r[12]][0] + t[r[3]][0]) + + 3 * (t[r[13]][0] + t[r[7]][0])) / + 9, + (-4 * t[r[0]][1] - + t[r[15]][1] + + 6 * (t[r[4]][1] + t[r[1]][1]) - + 2 * (t[r[12]][1] + t[r[3]][1]) + + 3 * (t[r[13]][1] + t[r[7]][1])) / + 9, + ]); + r[6] = t.length; + t.push([ + (-4 * t[r[3]][0] - + t[r[12]][0] + + 6 * (t[r[2]][0] + t[r[7]][0]) - + 2 * (t[r[0]][0] + t[r[15]][0]) + + 3 * (t[r[4]][0] + t[r[14]][0])) / + 9, + (-4 * t[r[3]][1] - + t[r[12]][1] + + 6 * (t[r[2]][1] + t[r[7]][1]) - + 2 * (t[r[0]][1] + t[r[15]][1]) + + 3 * (t[r[4]][1] + t[r[14]][1])) / + 9, + ]); + r[9] = t.length; + t.push([ + (-4 * t[r[12]][0] - + t[r[3]][0] + + 6 * (t[r[8]][0] + t[r[13]][0]) - + 2 * (t[r[0]][0] + t[r[15]][0]) + + 3 * (t[r[11]][0] + t[r[1]][0])) / + 9, + (-4 * t[r[12]][1] - + t[r[3]][1] + + 6 * (t[r[8]][1] + t[r[13]][1]) - + 2 * (t[r[0]][1] + t[r[15]][1]) + + 3 * (t[r[11]][1] + t[r[1]][1])) / + 9, + ]); + r[10] = t.length; + t.push([ + (-4 * t[r[15]][0] - + t[r[0]][0] + + 6 * (t[r[11]][0] + t[r[14]][0]) - + 2 * (t[r[12]][0] + t[r[3]][0]) + + 3 * (t[r[2]][0] + t[r[8]][0])) / + 9, + (-4 * t[r[15]][1] - + t[r[0]][1] + + 6 * (t[r[11]][1] + t[r[14]][1]) - + 2 * (t[r[12]][1] + t[r[3]][1]) + + 3 * (t[r[2]][1] + t[r[8]][1])) / + 9, + ]); + this.figures.push({ + type: k, + coords: new Int32Array(r), + colors: new Int32Array(i), + }); + } + } + _decodeType7Shading(e) { + const t = this.coords, + a = this.colors, + r = new Int32Array(16), + i = new Int32Array(4); + for (; e.hasData; ) { + const n = e.readFlag(); + if (!(0 <= n && n <= 3)) throw new FormatError("Unknown type7 flag"); + const s = t.length; + for (let a = 0, r = 0 !== n ? 12 : 16; a < r; a++) + t.push(e.readCoordinate()); + const o = a.length; + for (let t = 0, r = 0 !== n ? 2 : 4; t < r; t++) + a.push(e.readComponents()); + let c, l, h, u; + switch (n) { + case 0: + r[12] = s + 3; + r[13] = s + 4; + r[14] = s + 5; + r[15] = s + 6; + r[8] = s + 2; + r[9] = s + 13; + r[10] = s + 14; + r[11] = s + 7; + r[4] = s + 1; + r[5] = s + 12; + r[6] = s + 15; + r[7] = s + 8; + r[0] = s; + r[1] = s + 11; + r[2] = s + 10; + r[3] = s + 9; + i[2] = o + 1; + i[3] = o + 2; + i[0] = o; + i[1] = o + 3; + break; + case 1: + c = r[12]; + l = r[13]; + h = r[14]; + u = r[15]; + r[12] = u; + r[13] = s + 0; + r[14] = s + 1; + r[15] = s + 2; + r[8] = h; + r[9] = s + 9; + r[10] = s + 10; + r[11] = s + 3; + r[4] = l; + r[5] = s + 8; + r[6] = s + 11; + r[7] = s + 4; + r[0] = c; + r[1] = s + 7; + r[2] = s + 6; + r[3] = s + 5; + c = i[2]; + l = i[3]; + i[2] = l; + i[3] = o; + i[0] = c; + i[1] = o + 1; + break; + case 2: + c = r[15]; + l = r[11]; + r[12] = r[3]; + r[13] = s + 0; + r[14] = s + 1; + r[15] = s + 2; + r[8] = r[7]; + r[9] = s + 9; + r[10] = s + 10; + r[11] = s + 3; + r[4] = l; + r[5] = s + 8; + r[6] = s + 11; + r[7] = s + 4; + r[0] = c; + r[1] = s + 7; + r[2] = s + 6; + r[3] = s + 5; + c = i[3]; + i[2] = i[1]; + i[3] = o; + i[0] = c; + i[1] = o + 1; + break; + case 3: + r[12] = r[0]; + r[13] = s + 0; + r[14] = s + 1; + r[15] = s + 2; + r[8] = r[1]; + r[9] = s + 9; + r[10] = s + 10; + r[11] = s + 3; + r[4] = r[2]; + r[5] = s + 8; + r[6] = s + 11; + r[7] = s + 4; + r[0] = r[3]; + r[1] = s + 7; + r[2] = s + 6; + r[3] = s + 5; + i[2] = i[0]; + i[3] = o; + i[0] = i[1]; + i[1] = o + 1; + } + this.figures.push({ + type: k, + coords: new Int32Array(r), + colors: new Int32Array(i), + }); + } + } + _buildFigureFromPatch(e) { + const t = this.figures[e]; + assert(t.type === k, "Unexpected patch mesh figure"); + const a = this.coords, + r = this.colors, + i = t.coords, + n = t.colors, + s = Math.min(a[i[0]][0], a[i[3]][0], a[i[12]][0], a[i[15]][0]), + o = Math.min(a[i[0]][1], a[i[3]][1], a[i[12]][1], a[i[15]][1]), + c = Math.max(a[i[0]][0], a[i[3]][0], a[i[12]][0], a[i[15]][0]), + l = Math.max(a[i[0]][1], a[i[3]][1], a[i[12]][1], a[i[15]][1]); + let h = Math.ceil( + ((c - s) * MeshShading.TRIANGLE_DENSITY) / + (this.bounds[2] - this.bounds[0]), + ); + h = MathClamp( + h, + MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, + MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, + ); + let u = Math.ceil( + ((l - o) * MeshShading.TRIANGLE_DENSITY) / + (this.bounds[3] - this.bounds[1]), + ); + u = MathClamp( + u, + MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, + MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, + ); + const d = h + 1, + f = new Int32Array((u + 1) * d), + g = new Int32Array((u + 1) * d); + let p = 0; + const m = new Uint8Array(3), + b = new Uint8Array(3), + y = r[n[0]], + w = r[n[1]], + x = r[n[2]], + C = r[n[3]], + v = getB(u), + F = getB(h); + for (let e = 0; e <= u; e++) { + m[0] = ((y[0] * (u - e) + x[0] * e) / u) | 0; + m[1] = ((y[1] * (u - e) + x[1] * e) / u) | 0; + m[2] = ((y[2] * (u - e) + x[2] * e) / u) | 0; + b[0] = ((w[0] * (u - e) + C[0] * e) / u) | 0; + b[1] = ((w[1] * (u - e) + C[1] * e) / u) | 0; + b[2] = ((w[2] * (u - e) + C[2] * e) / u) | 0; + for (let t = 0; t <= h; t++, p++) { + if (!((0 !== e && e !== u) || (0 !== t && t !== h))) continue; + let n = 0, + s = 0, + o = 0; + for (let r = 0; r <= 3; r++) + for (let c = 0; c <= 3; c++, o++) { + const l = v[e][r] * F[t][c]; + n += a[i[o]][0] * l; + s += a[i[o]][1] * l; + } + f[p] = a.length; + a.push([n, s]); + g[p] = r.length; + const c = new Uint8Array(3); + c[0] = ((m[0] * (h - t) + b[0] * t) / h) | 0; + c[1] = ((m[1] * (h - t) + b[1] * t) / h) | 0; + c[2] = ((m[2] * (h - t) + b[2] * t) / h) | 0; + r.push(c); + } + } + f[0] = i[0]; + g[0] = n[0]; + f[h] = i[3]; + g[h] = n[1]; + f[d * u] = i[12]; + g[d * u] = n[2]; + f[d * u + h] = i[15]; + g[d * u + h] = n[3]; + this.figures[e] = { type: S, coords: f, colors: g, verticesPerRow: d }; + } + _updateBounds() { + let e = this.coords[0][0], + t = this.coords[0][1], + a = e, + r = t; + for (let i = 1, n = this.coords.length; i < n; i++) { + const n = this.coords[i][0], + s = this.coords[i][1]; + e = e > n ? n : e; + t = t > s ? s : t; + a = a < n ? n : a; + r = r < s ? s : r; + } + this.bounds = [e, t, a, r]; + } + _packData() { + let e, t, a, r; + const i = this.coords, + n = new Float32Array(2 * i.length); + for (e = 0, a = 0, t = i.length; e < t; e++) { + const t = i[e]; + n[a++] = t[0]; + n[a++] = t[1]; + } + this.coords = n; + const s = this.colors, + o = new Uint8Array(3 * s.length); + for (e = 0, a = 0, t = s.length; e < t; e++) { + const t = s[e]; + o[a++] = t[0]; + o[a++] = t[1]; + o[a++] = t[2]; + } + this.colors = o; + const c = this.figures; + for (e = 0, t = c.length; e < t; e++) { + const t = c[e], + i = t.coords, + n = t.colors; + for (a = 0, r = i.length; a < r; a++) { + i[a] *= 2; + n[a] *= 3; + } + } + } + getIR() { + const { bounds: e } = this; + if (e[2] - e[0] === 0 || e[3] - e[1] === 0) + throw new FormatError(`Invalid MeshShading bounds: [${e}].`); + return [ + "Mesh", + this.shadingType, + this.coords, + this.colors, + this.figures, + e, + this.bbox, + this.background, + ]; + } +} +class DummyShading extends BaseShading { + getIR() { + return ["Dummy"]; + } +} +function getTilingPatternIR(e, t, a) { + const r = lookupMatrix(t.getArray("Matrix"), fa), + i = lookupNormalRect(t.getArray("BBox"), null); + if (!i || i[2] - i[0] === 0 || i[3] - i[1] === 0) + throw new FormatError("Invalid getTilingPatternIR /BBox array."); + const n = t.get("XStep"); + if ("number" != typeof n) + throw new FormatError("Invalid getTilingPatternIR /XStep value."); + const s = t.get("YStep"); + if ("number" != typeof s) + throw new FormatError("Invalid getTilingPatternIR /YStep value."); + const o = t.get("PaintType"); + if (!Number.isInteger(o)) + throw new FormatError("Invalid getTilingPatternIR /PaintType value."); + const c = t.get("TilingType"); + if (!Number.isInteger(c)) + throw new FormatError("Invalid getTilingPatternIR /TilingType value."); + return ["TilingPattern", a, e, r, i, n, s, o, c]; +} +const pi = [ + 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, + 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657, + 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, + 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, + 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, + 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, + 0.79795, 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, + 0.82577, 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, + 0.90176, 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, + 0.8785, 0.88401, 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, + 0.8785, 0.91343, 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, + 0.85162, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, + 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, + 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, + 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, + 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, + 0.83908, 0.77539, 0.73293, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, + 0.95958, 0.95958, 0.95958, 0.88506, 0.9121, 0.86943, 0.86943, 0.86943, + 0.86943, 0.86943, 0.85284, 0.87508, 0.90399, 0.90399, 0.90399, 0.90399, + 0.77892, 0.79795, 0.90807, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, + 0.88762, 0.8715, 0.75241, 0.90518, 0.90518, 0.90518, 0.90518, 0.88401, + 0.88401, 0.88401, 0.88401, 0.8785, 0.8785, 0.8801, 0.8801, 0.8801, 0.8801, + 0.8801, 0.90747, 0.89049, 0.8785, 0.8785, 0.8785, 0.8785, 0.85162, 0.8785, + 0.85162, 0.83908, 0.88762, 0.83908, 0.88762, 0.83908, 0.88762, 0.73293, + 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.87289, + 0.83016, 0.88506, 0.93125, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, + 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.81921, 0.77618, 0.81921, + 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785, 0.91075, 0.89608, 0.95958, + 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, + 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, + 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823, 0.94903, 0.9121, + 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785, 0.86943, 0.8801, + 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958, 0.91343, 1, 1, + 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, + 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.8785, + 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, + 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257, 0.79492, + 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.88762, + 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, + 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.06303, + 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029, 0.81235, + 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257, 0.87356, + 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943, + 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819, + 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211, + 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813, + 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638, + 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926, + 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0.90264, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1, + 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, + 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, + 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, + 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, + 0.84107, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, + 0.81499, 0.90527, 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, + 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, + 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, + 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 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, 0.99862, 0.99862, 1, 1, 1, + 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + mi = { lineHeight: 1.2207, lineGap: 0.2207 }, + bi = [ + 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, + 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239, + 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, + 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, + 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, + 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, + 0.79795, 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, + 0.82577, 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, + 0.90176, 0.94908, 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, + 0.86331, 0.88401, 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, + 0.86411, 0.86411, 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, + 0.82616, 0.84548, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, + 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, + 1.19129, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, + 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, + 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, + 0.83908, 0.77539, 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, + 0.95958, 0.95958, 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, + 0.85938, 0.85938, 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, + 0.77892, 0.79795, 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, + 0.94908, 0.85887, 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, + 0.88401, 0.88401, 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, + 0.86331, 0.86331, 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, + 0.84548, 0.86411, 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, + 0.94908, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, + 0.74012, 0.87289, 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, + 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, + 0.86411, 0.81921, 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, + 0.91075, 0.8777, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, + 0.95958, 0.88401, 0.95958, 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, + 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, + 0.70823, 0.94903, 0.90872, 0.86331, 1, 1, 0.90872, 0.86331, 0.86906, + 0.88116, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, + 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958, 0.90464, 0.69766, + 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 1, 1, + 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399, 0.86331, + 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, + 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492, 0.78257, + 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908, 0.77539, + 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, + 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387, + 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346, + 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356, + 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938, + 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466, + 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733, + 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, + 1.02988, 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, + 0.87581, 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, + 0.86015, 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0.90631, 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, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0.88323, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, + 1, 0.96068, 0.95794, 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, + 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, + 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, + 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, + 0.83326, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, + 0.81499, 0.90616, 1.81055, 0.90527, 1.81055, 1.3107, 1.53711, 0.94434, + 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, + 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, + 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 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, 0.99862, 0.99862, 1, 1, 1, + 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + yi = { lineHeight: 1.2207, lineGap: 0.2207 }, + wi = [ + 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, + 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, + 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, + 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, + 0.88071, 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, + 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, + 0.77452, 0.85374, 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, + 0.77818, 0.7306, 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, + 0.8739, 0.9245, 0.9245, 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, + 1.03297, 1.07692, 0.90918, 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, + 0.9245, 1.02933, 0.77832, 1.20562, 0.9245, 0.8916, 0.98986, 0.86621, + 0.89453, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, + 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.16359, + 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, + 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, + 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, + 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, + 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118, 0.84118, 0.84118, + 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, + 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.84843, 0.83203, + 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601, 0.82601, 0.82601, + 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274, 0.92274, 0.90747, + 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245, 0.89453, 0.8675, + 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203, 0.72346, 0.83203, + 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875, 0.86477, 0.99034, + 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, + 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105, 0.9245, 1, 1, + 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685, 0.82601, + 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896, 1.05611, + 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.9375, + 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249, 0.9245, + 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118, + 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789, + 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, + 0.79776, 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, + 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, + 0.98986, 0.7306, 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, + 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, + 0.84557, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, + 0.67009, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, + 0.90861, 0.6192, 0.7363, 0.64824, 0.82411, 0.56321, 0.85696, 1.23516, + 0.8675, 0.81552, 0.7286, 0.84134, 0.73206, 0.76659, 0.86275, 0.84369, + 0.90685, 0.77892, 0.85871, 1.02638, 0.89249, 0.75828, 0.84118, 0.85984, + 0.77452, 0.76466, 0.79776, 0.7306, 0.90782, 0.77818, 0.903, 0.87291, + 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516, 0.9849, 0.99058, + 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297, 1.23516, 0.90918, + 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507, 0.88832, 0.84438, + 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248, 0.89404, 1.23516, + 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0.89693, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309, 0.98986, + 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552, 0.90527, + 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, + 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, + 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1, 1, + 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055, + 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, + 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, + 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, + 0.70572, 0.70572, 0.70572, 0.70572, 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, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, + 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + xi = { lineHeight: 1.2207, lineGap: 0.2207 }, + Si = [ + 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, + 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, + 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, + 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, + 0.88071, 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, + 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, + 0.77452, 0.86503, 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, + 0.77818, 0.7306, 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, + 0.8739, 0.86128, 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, + 0.94469, 1.03297, 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, + 0.94469, 0.94469, 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, + 0.86621, 0.90527, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, + 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, + 1.08707, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, + 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, + 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, + 0.76318, 0.73834, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, + 0.90685, 0.90685, 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, + 0.85122, 0.85284, 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, + 0.77452, 0.86331, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, + 0.8693, 0.8457, 0.89464, 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, + 0.82601, 0.82601, 0.94469, 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, + 0.90747, 0.86651, 0.94469, 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, + 0.90527, 0.8675, 0.86128, 0.8675, 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, + 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.85193, 0.92454, + 0.86477, 0.9921, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, + 0.73206, 0.89464, 0.73206, 0.89464, 0.81105, 0.84636, 0.81105, 0.84636, + 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872, 0.95786, 0.90685, + 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, + 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, + 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429, 0.89385, + 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122, 0.9482, + 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692, 1, 1, + 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, + 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, + 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, + 0.94469, 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, + 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, + 0.8675, 0.86128, 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, + 1.18622, 1.18622, 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, + 0.95161, 1.48387, 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, + 0.56963, 0.88254, 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, + 0.76659, 0.86275, 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, + 0.75657, 0.85122, 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, + 0.77818, 0.89772, 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, + 1.23516, 0.99018, 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, + 0.96576, 0.9561, 1.23516, 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, + 0.9482, 0.80113, 0.89442, 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, + 0.81209, 0.99247, 0.89181, 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, + 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88844, 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, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986, 0.94258, 0.98986, 0.94258, + 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, + 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, + 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, + 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, + 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055, 0.90527, 1.81055, + 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, + 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85356, 0.90747, + 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, + 0.70572, 0.70572, 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, + 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1.07185, 0.99413, + 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + Ai = { lineHeight: 1.2207, lineGap: 0.2207 }, + ki = [ + 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, + 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, + 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, + 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, + 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, + 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, + 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, + 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, + 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, + 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, + 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, + 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, + 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, + 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, + 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, + 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, + 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, + 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, + 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, + 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, + 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, + 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, + 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, + 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, + 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, + 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, + 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, + 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, + 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, + 1.00026, 1.0006, 1.00026, 1.03828, 1.00026, 0.99999, 1.00026, 1.0006, + 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, + 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, + 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, + 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, + 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, + 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, + 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, + 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, + 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, + 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00034, 0.99977, 1, + 0.99997, 1.00026, 1.00078, 1.00036, 0.99973, 1.00013, 1.0006, 0.99977, + 0.99977, 0.99988, 0.85148, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, + 0.99977, 1.00001, 0.99999, 0.99977, 1.00069, 1.00022, 0.99977, 1.00001, + 0.99984, 1.00026, 1.00001, 1.00024, 1.00001, 0.9999, 1, 1.0006, 1.00001, + 1.00041, 0.99962, 1.00026, 1.0006, 0.99995, 1.00041, 0.99942, 0.99973, + 0.99927, 1.00082, 0.99902, 1.00026, 1.00087, 1.0006, 1.00069, 0.99973, + 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056, 1, 0.99988, 0.99935, + 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006, 0.99995, 1.00026, + 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019, 0.9994, 1.00001, + 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99561, 0.99989, + 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944, 1.00001, 1.00021, + 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, 1.00022, + 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057, 1.00001, 0.99936, + 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994, 0.99976, 1.00035, + 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973, 1.00002, 0.99986, + 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999, 1.00026, 0.99999, + 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041, 1.00075, 0.9994, + 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973, 0.99973, 1.00026, + 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026, 0.99972, + 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005, 1.00016, + 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, + 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, + 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, + 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, + 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, + 1, 1, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, + 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, + 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, + 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, + 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, + 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, + 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + Ci = { lineHeight: 1.2, lineGap: 0.2 }, + vi = [ + 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, + 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, + 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, + 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, + 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, + 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, + 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, + 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, + 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, + 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, + 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, + 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, + 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, + 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, + 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, + 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, + 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, + 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, + 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, + 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, + 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, + 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, + 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, + 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, + 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, + 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, + 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, + 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, + 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, + 1.00026, 1.0006, 1.00026, 1.01011, 1.00026, 0.99999, 1.00026, 1.0006, + 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, + 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, + 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, + 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, + 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, + 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, + 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, + 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, + 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, + 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99977, 1, + 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998, 1.0006, 0.99977, 0.99977, + 1.00022, 0.91155, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, + 1.00001, 0.99999, 0.99977, 0.99966, 1.00022, 1.00032, 1.00001, 0.99944, + 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1, 1.0006, 1.00001, 0.99981, + 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064, 0.99973, 0.99942, + 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014, 0.99973, 1.01322, + 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064, 1.00076, 0.99948, + 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948, 1.00026, 0.99948, + 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035, 1.00001, 1.0006, + 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967, 0.99964, + 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001, 0.99973, + 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977, 1.00022, + 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001, 0.99999, + 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999, 0.99973, + 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995, 1.00026, + 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026, 1.00026, + 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999, 0.99982, + 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973, 0.99973, + 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975, + 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, + 1.00044, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, + 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, + 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, + 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, + 0.99978, 1, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, + 1.00098, 1, 1, 1, 1.00049, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, + 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, + 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, + 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, + 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, + 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + ], + Fi = { lineHeight: 1.35, lineGap: 0.2 }, + Ii = [ + 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, + 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, + 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, + 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, + 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, + 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, + 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, + 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, + 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, + 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, + 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, + 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, + 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, + 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, + 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, + 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, + 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, + 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, + 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, + 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, + 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288, 0.99977, 0.99973, 1.00001, + 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, + 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, + 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, + 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 0.99946, 1.00034, 1, + 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, + 1.06311, 0.99973, 1.00024, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, + 0.99973, 0.99977, 0.99973, 1.00041, 0.9998, 0.99973, 1.00022, 0.99973, + 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, + 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, + 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006, 0.99977, 0.99973, + 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, + 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, + 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, + 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, + 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, + 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013, 0.99924, + 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977, 1.00022, + 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022, 1.00054, + 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1, 1.0006, + 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945, 0.99949, 1, + 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962, 1.01487, 1, + 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036, 0.99947, + 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036, 1.00025, + 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006, 1, + 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001, + 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954, + 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001, + 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, + 1.00016, 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, + 1.00089, 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, + 0.99973, 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, + 0.44898, 1, 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, + 1.00022, 1.00023, 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, + 1.00019, 1.0008, 1, 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, + 0.99964, 0.98332, 1, 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, + 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, + 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, + 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, + 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 1.00423, 0.99925, + 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00049, + 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, + 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 1.00003, 1.00031, 1.00031, + 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, + 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, + 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, + 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, + ], + Ti = { lineHeight: 1.35, lineGap: 0.2 }, + Oi = [ + 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, + 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, + 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, + 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, + 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, + 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, + 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, + 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, + 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, + 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, + 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, + 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, + 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, + 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, + 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, + 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, + 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, + 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, + 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, + 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, + 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, + 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596, 0.99977, 0.99973, 1.00001, + 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, + 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, + 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, + 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 1.00019, 1.00034, 1, + 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, + 1.02572, 0.99973, 1.00005, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, + 0.99973, 0.99977, 0.99973, 0.99999, 0.9998, 0.99973, 1.00022, 0.99973, + 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, + 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, + 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006, 0.99977, 0.99973, + 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, + 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, + 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, + 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, + 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, + 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941, 0.99924, + 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977, 1.00022, + 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022, 0.99977, + 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1, 1.0006, + 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978, 0.99966, 1, + 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1, 0.96499, 1, + 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023, 0.99933, + 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023, 1.00031, + 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006, 1, + 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962, + 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035, + 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, + 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053, + 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043, + 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073, + 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, + 1, 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, + 0.9995, 1, 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, + 1.0006, 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, + 1, 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, + 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, + 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, + 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, + 0.99973, 1.00023, 0.99973, 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, + 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, + 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, + 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, + 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, + 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, + 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, + 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, + 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + ], + Mi = { lineHeight: 1.2, lineGap: 0.2 }, + Di = [ + 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, + 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, + 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, + 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, + 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, + 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, + 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, + 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, + 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1e3, + 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, + 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, + 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, + 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, + 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, + 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, + 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, + 278, 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, + 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, + 778, 611, 778, 611, 1e3, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, + 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, + 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, + 611, 500, 611, 500, 278, 556, 722, 556, 1e3, 889, 778, 611, 667, 556, 611, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, + 906, 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, + 722, 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, + 278, 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, + 278, 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, + 753, 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, + 556, 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, + 626, 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, + 730, 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, + 635, 556, 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, + 556, 875, 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, + 611, 417, 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, + 611, 487, 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1e3, + 1e3, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1e3, 1e3, 240, + 479, 333, 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1e3, + 768, 600, 834, 834, 834, 834, 1e3, 500, 1e3, 500, 1e3, 500, 500, 494, 612, + 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, + 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 729, 604, 604, 354, 354, 1e3, 990, 990, 990, 990, 494, + 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, + 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, + 333, 333, 333, 333, 333, 333, 333, + ], + Bi = [ + -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, + 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, + 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, + 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, + 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, + 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, + 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, + 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, + 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, + 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, + 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, + 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, + 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, + 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, + 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, + 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, + 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, + 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, + 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, + 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, + 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, + 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, + 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, + 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, + 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, + 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, + 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + ], + Ri = [ + 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, + 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, + 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, + 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, + 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, + 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, + 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, + 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, + 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1e3, + 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, + 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, + 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, + 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, + 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, + 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, + 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, + 278, 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, + 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, + 778, 611, 778, 611, 1e3, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, + 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, + 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, + 611, 500, 611, 500, 278, 556, 722, 556, 1e3, 889, 778, 611, 667, 556, 611, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, + 906, 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, + 722, 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, + 278, 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, + 278, 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, + 773, 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, + 556, 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, + 643, 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, + 729, 708, 979, 989, 854, 1e3, 708, 719, 1042, 729, 556, 619, 604, 534, 618, + 556, 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, + 885, 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, + 469, 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, + 575, 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1e3, 1e3, + 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1e3, 1e3, 240, 479, + 333, 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1e3, 768, + 600, 834, 834, 834, 834, 999, 500, 1e3, 500, 1e3, 500, 500, 494, 612, 823, + 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, + 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 729, 604, 604, 354, 354, 1e3, 990, 990, 990, 990, 494, 604, + 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, + 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, + 333, 333, 333, 333, 333, 333, + ], + Ni = [ + -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, + 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, + 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, + 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, + 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, + 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, + 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, + 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, + 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, + 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, + 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, + 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, + 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, + 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, + 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, + 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, + 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, + 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, + 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, + 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, + 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, + 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, + 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, + 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, + 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, + 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, + 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + ], + Ei = [ + 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, + 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, + 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, + 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, + 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, + 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, + 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, + 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, + 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1e3, + 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, + 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, + 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, + 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, + 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, + 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, + 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, + 278, 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, + 556, 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, + 778, 556, 778, 556, 1e3, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, + 500, 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, + 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, + 611, 500, 611, 500, 222, 556, 667, 556, 1e3, 889, 778, 611, 667, 500, 611, + 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, + 846, 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, + 667, 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, + 278, 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, + 222, 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, + 728, 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, + 500, 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, + 614, 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, + 727, 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, + 556, 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, + 835, 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, + 378, 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, + 492, 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1e3, 1e3, + 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1e3, 1e3, 188, 354, + 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1e3, 768, + 600, 834, 834, 834, 834, 1e3, 500, 998, 500, 1e3, 500, 500, 494, 612, 823, + 713, 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, + 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 729, 604, 604, 354, 354, 1e3, 990, 990, 990, 990, 494, 604, + 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, + 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, + 324, 324, 316, 328, 398, 285, + ], + Pi = [ + -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, + 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, + 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, + 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, + 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, + 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, + 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, + 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, + 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, + 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, + 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, + 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, + 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, + 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, + 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, + 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, + 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, + 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, + 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, + 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, + 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, + 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, + 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, + 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, + 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, + 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, + 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + ], + _i = [ + 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, + 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, + 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, + 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, + 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, + 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, + 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, + 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, + 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1e3, + 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, + 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, + 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, + 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, + 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, + 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, + 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, + 278, 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, + 556, 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, + 778, 556, 778, 556, 1e3, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, + 500, 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, + 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, + 611, 500, 611, 500, 222, 556, 667, 556, 1e3, 889, 778, 611, 667, 500, 611, + 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, + 838, 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, + 667, 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, + 278, 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, + 222, 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, + 713, 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, + 500, 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, + 604, 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, + 740, 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, + 556, 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, + 823, 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, + 365, 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, + 489, 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1e3, 1e3, + 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1e3, 1e3, 188, 354, + 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1e3, 768, + 600, 834, 834, 834, 834, 1e3, 500, 1e3, 500, 1e3, 500, 500, 494, 612, 823, + 713, 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, + 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 729, 604, 604, 354, 354, 1e3, 990, 990, 990, 990, 494, 604, + 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, + 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, + 324, 324, 316, 328, 398, 285, + ], + ji = [ + -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, + 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, + 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, + 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, + 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, + 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, + 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, + 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, + 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, + 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, + 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, + 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, + 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, + 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, + 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, + 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, + 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, + 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, + 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, + 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, + 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, + 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, + 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, + 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, + 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, + 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, + 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + ], + Xi = [ + 1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884, + 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582, + 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, + 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, + 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275, + 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, + 0.92179, 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, + 0.94083, 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, + 0.89903, 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, + 0.9577, 0.95933, 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, + 0.97898, 0.97407, 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, + 0.9332, 0.94039, 0.938, 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, + 0.99793, 0.99793, 0.99793, 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, + 1.0213, 0.8361, 1.02058, 0.62295, 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, + 1, 0.97455, 0.93582, 0.90088, 1, 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, + 0.72851, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.868, + 0.82391, 0.80061, 0.80061, 0.80061, 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, + 0.97484, 0.95546, 0.92179, 0.92179, 0.92179, 0.92179, 0.92179, 1.02058, + 0.92179, 0.94438, 0.94438, 0.94438, 0.94438, 0.90406, 0.86958, 0.98225, + 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.9031, 0.81093, + 0.94938, 0.94938, 0.94938, 0.94938, 0.98621, 0.98621, 0.98621, 0.98621, + 0.93969, 0.95933, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 1.08595, 0.9446, + 0.95442, 0.95442, 0.95442, 0.95442, 0.94039, 0.97898, 0.94039, 0.90838, + 0.94938, 0.90838, 0.94938, 0.90838, 0.94938, 0.82391, 0.81093, 0.82391, + 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.96376, 0.84313, 0.97484, + 0.97571, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, + 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768, 0.9577, 0.8768, 0.9577, + 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258, 0.98621, 1.0258, 0.98621, + 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 0.887, 1.01591, 0.73901, + 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1, 0.83655, 0.73977, 0.83655, + 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1, 0.95546, 0.95933, 0.8271, + 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446, 0.92179, 0.9446, 0.936, + 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646, 0.8096, 0.78036, 0.8096, + 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713, 0.77452, 0.89713, 1.10208, + 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, + 0.94438, 0.95442, 0.94438, 0.95442, 0.94083, 0.97579, 0.90406, 0.94039, + 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446, 0.938, 1, 0.99793, 0.90838, + 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1, 0.89713, 1.10208, 0.90088, + 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, + 0.90989, 0.9358, 0.91945, 0.83181, 0.75261, 0.87992, 0.82976, 0.96034, + 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019, 0.90157, 0.80061, + 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156, 0.95546, + 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704, 0.95638, + 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933, + 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, + 0.95933, 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, + 0.9446, 0.78367, 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, + 0.96361, 0.86774, 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 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, 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, 0.94083, + 0.97579, 0.94083, 0.97579, 0.94083, 0.97579, 0.90406, 0.94039, 0.96694, 1, + 0.89903, 1, 1, 1, 0.93582, 0.93582, 0.93582, 1, 0.908, 0.908, 0.918, + 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1, 0.81079, 0.81079, 1, 1, 0.74854, + 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1.17173, 1, 0.80535, 0.76169, 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, + 1.08595, 1.08595, 1, 1.08595, 1.08595, 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, 1, 1, 1, 1, 1, + 1.16161, 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, + ], + qi = { lineHeight: 1.2, lineGap: 0.2 }, + Hi = [ + 1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, + 0.92222, 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, + 0.93582, 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, + 0.97276, 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, + 1.02058, 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, + 0.83655, 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, + 0.92222, 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, + 0.91605, 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, + 1.02058, 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, + 0.98796, 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, + 0.92168, 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, + 0.92061, 0.94236, 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, + 0.80779, 0.97276, 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, + 0.91339, 1.08074, 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, + 1, 1.18616, 1, 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, + 0.99043, 0.99043, 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, + 0.85576, 0.845, 0.80729, 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, + 0.98621, 0.98621, 0.98621, 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, + 0.90637, 0.90637, 1.02058, 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, + 0.85458, 0.83659, 0.94951, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, + 0.99613, 0.85811, 0.78216, 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, + 0.95381, 0.95381, 0.95381, 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, + 0.91513, 0.91513, 1.08595, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, + 0.89364, 0.92332, 0.89364, 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, + 0.99613, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, + 0.78216, 0.94299, 0.76783, 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, + 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, + 0.9135, 0.86523, 0.9135, 0.86523, 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, + 0.92168, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, + 0.95381, 0.98621, 0.95381, 0.86036, 0.97096, 0.71743, 0.98981, 1, 1, + 0.95298, 0.79726, 0.95381, 1, 1, 0.79726, 0.6894, 0.79726, 0.74321, 0.81691, + 1.0006, 0.92222, 0.92168, 1, 1, 0.92222, 0.92168, 0.79464, 0.92098, 0.92168, + 0.90637, 0.91513, 0.90637, 0.91513, 0.90637, 0.91513, 0.909, 0.87514, + 0.80729, 0.95077, 1, 1, 0.80729, 0.95077, 0.76463, 0.748, 0.76463, 0.748, 1, + 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651, 0.86275, 1.04502, 0.90699, + 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, + 0.91677, 0.90699, 0.91677, 0.9154, 0.94236, 0.85458, 0.89364, 0.85458, + 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1, 0.97276, 0.85576, 0.99613, + 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275, 1.04502, 1.18616, 1.18616, + 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.00899, + 1.30628, 0.85576, 0.80178, 0.66862, 0.7927, 0.69323, 0.88127, 0.72459, + 0.89711, 0.95381, 0.85576, 0.80591, 0.7805, 0.94729, 0.77512, 0.90531, + 0.92222, 0.90637, 0.98621, 0.81698, 0.92655, 0.98558, 0.92222, 0.85359, + 0.90637, 0.90976, 0.83809, 0.94523, 0.86275, 0.83509, 0.93157, 0.85308, + 0.83392, 0.92346, 0.98621, 0.83509, 0.92886, 0.91324, 0.92168, 0.95381, + 0.90646, 0.92886, 0.90557, 0.86847, 0.90276, 0.91324, 0.86842, 0.92168, + 0.99531, 0.95381, 0.9224, 0.85408, 0.92699, 0.86847, 1.0051, 0.91513, + 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646, 0.97355, 0.81539, 0.89398, + 0.85923, 0.95381, 0.90646, 0.91513, 0.90646, 0.85923, 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, 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, 0.9154, 0.94236, + 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694, 1, 0.89903, 1, + 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896, 0.9332, 0.9332, + 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1, 1, 1, + 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026, + 1.08595, 1.08595, 1, 1.08595, 1.08595, 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, 1, 1, 1, 1, 1, + 1.20006, 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, + ], + Wi = { lineHeight: 1.2, lineGap: 0.2 }, + Gi = [ + 1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, + 0.88307, 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, + 0.75945, 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, + 0.88465, 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, + 1.02058, 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, + 0.76125, 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, + 0.87514, 0.8588, 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, + 0.80811, 0.87832, 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, + 1.27014, 0.89903, 1.15012, 0.93859, 0.94399, 0.846, 0.94399, 0.81453, + 1.0186, 0.94219, 0.96017, 1.03075, 1.02175, 0.912, 1.03075, 0.96998, + 0.96017, 0.93859, 0.94399, 0.94399, 0.95493, 0.746, 1.12658, 0.94578, 0.91, + 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537, 0.85034, 1.02058, 0.70869, + 0.88465, 0.88465, 0.88465, 0.88465, 0.83537, 0.90083, 1.15012, 0.9161, + 0.94565, 0.73541, 1.02058, 0.53609, 0.69353, 0.79519, 1.08595, 1, 1, + 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446, 0.73361, 0.9005, 0.9005, + 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, + 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864, 0.83864, + 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588, 0.8588, + 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512, 0.76013, + 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.8075, + 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424, + 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, + 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882, + 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, + 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, + 0.94399, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, + 0.81453, 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, + 0.94219, 1, 1, 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, + 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, + 0.81402, 1.02738, 0.728, 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, + 0.79475, 0.83911, 0.79475, 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, + 1, 0.87514, 0.96017, 0.86865, 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, + 0.93859, 0.8588, 0.93859, 0.867, 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, + 0.95493, 0.69866, 0.746, 0.69866, 0.746, 1, 1, 0.69866, 0.746, 1, 1, + 0.77598, 0.88417, 0.77598, 1.12658, 0.85991, 0.94578, 0.85991, 0.94578, + 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, + 0.87832, 0.979, 0.77512, 0.882, 0.77512, 0.8562, 0.83, 0.8562, 0.83, 0.8562, + 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773, 0.8075, 0.85751, 0.8562, 1, 1, + 0.77598, 1.12658, 1.15012, 1.15012, 1.15012, 1.15012, 1.15012, 1.15313, + 1.15012, 1.15012, 1.15012, 1.08106, 1.03901, 0.85158, 0.77025, 0.62264, + 0.7646, 0.65351, 0.86026, 0.69461, 0.89947, 1.03075, 0.85158, 0.77812, + 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588, 0.83864, 0.77212, + 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701, 0.76013, 0.89058, + 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386, 0.83864, 0.8156, + 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298, 0.878, 0.93942, + 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787, 0.95829, 0.88, + 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737, 0.91123, 0.93969, + 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859, 0.91123, 0.86799, 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, 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, + 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219, 1, + 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027, + 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, + 1, 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, + 1.06233, 1.08595, 1.08595, 1, 1.08595, 1.08595, 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, 1, 1, 1, + 1, 1, 1.05233, 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, + ], + zi = { lineHeight: 1.2, lineGap: 0.2 }, + $i = [ + 1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, + 0.90706, 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, + 0.74505, 1.23456, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, + 0.92241, 0.92241, 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, + 1.02058, 0.73002, 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, + 0.79726, 0.83051, 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, + 0.8858, 0.79761, 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, + 0.89633, 0.85608, 0.8111, 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, + 0.89903, 0.90088, 0.86667, 1.0231, 0.896, 1.01411, 0.90083, 1.05099, + 1.00512, 0.99793, 1.05326, 1.09377, 0.938, 1.06226, 1.00119, 0.99793, + 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137, 0.99074, 0.962, 1.01915, + 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034, 1.02058, 0.69067, 0.92241, + 0.92241, 0.92241, 0.92241, 0.92006, 0.9332, 0.90088, 0.91882, 0.93484, + 0.75339, 1.02058, 0.56866, 0.54324, 0.79519, 1.08595, 1, 1, 0.90088, 1, + 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339, 0.91009, 0.91009, 0.91009, + 0.66466, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.788, + 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023, 0.86023, 0.86023, + 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858, 0.8858, 1.02058, + 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611, 0.89713, + 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896, + 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224, + 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595, + 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755, + 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896, + 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764, + 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, + 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, + 0.90284, 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, + 0.86023, 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, + 0.74, 1.09377, 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, + 0.84869, 0.81441, 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, + 0.99793, 0.91887, 0.90991, 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, + 0.8858, 0.98714, 0.894, 0.91434, 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, + 0.73914, 0.792, 0.73914, 0.792, 1, 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, + 0.81363, 1.19137, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, + 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89633, 1.01915, + 0.8111, 0.942, 0.8111, 0.90531, 0.856, 0.90531, 0.856, 0.90531, 0.856, 1, + 0.92241, 0.91755, 0.86667, 0.788, 0.86936, 0.8858, 0.89876, 1, 1, 0.81363, + 1.19137, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, + 0.90088, 0.90088, 0.90388, 1.03901, 0.92138, 0.78105, 0.7154, 0.86169, + 0.80513, 0.94007, 0.82528, 0.98612, 1.06226, 0.91755, 0.8126, 0.81884, + 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023, 0.8126, 0.91172, + 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297, 0.81363, + 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157, 0.95308, + 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088, + 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938, + 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007, + 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 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, 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, + 0.89633, 1.01915, 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, + 1, 0.89903, 1, 1, 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, + 1.06904, 0.89903, 0.89903, 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, + 0.72458, 1, 1, 1, 1, 0.92241, 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1.07257, 1, 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, + 1.1536, 1.08595, 1.08595, 1, 1.08595, 1.08595, 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, 1, 1, 1, 1, + 1, 1.05638, 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, + ], + Vi = { lineHeight: 1.2, lineGap: 0.2 }, + Ki = [ + 1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647, + 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578, + 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, + 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, + 0.97847, 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, + 1.06085, 1.1406, 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, + 0.92094, 0.97489, 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, + 0.90996, 0.99361, 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, + 0.96752, 1.01519, 0.86304, 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, + 1.02285, 1.02285, 1.00527, 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, + 1.01359, 1.02258, 0.79104, 1.16862, 0.99041, 0.97454, 1.02511, 0.99298, + 0.96752, 0.95801, 0.94856, 1.16579, 0.94856, 1.2107, 0.9824, 1.03424, + 1.03424, 1, 1.03424, 1.16579, 0.8727, 1.3871, 1.18622, 1.10818, 1.04478, + 1.2107, 1.18622, 0.75155, 0.94994, 1.28826, 1.21408, 1.21408, 0.91056, 1, + 0.91572, 0.9754, 0.64663, 1.18328, 1.24866, 1.04478, 1.14169, 1.15749, + 1.17389, 0.71703, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, + 0.93506, 0.8641, 0.79795, 0.79795, 0.79795, 0.79795, 1.1406, 1.1406, 1.1406, + 1.1406, 1.02096, 1.09398, 0.97426, 0.97426, 0.97426, 0.97426, 0.97426, + 1.2107, 0.97489, 1.00135, 1.00135, 1.00135, 1.00135, 0.90996, 0.92094, + 1.02798, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.93136, + 0.86304, 0.97278, 0.97278, 0.97278, 0.97278, 1.02285, 1.02285, 1.02285, + 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826, 1.0008, 0.99041, 0.99041, + 0.99041, 0.99041, 0.96752, 1.01519, 0.96752, 0.97363, 0.96752, 0.97363, + 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, + 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517, 0.79795, + 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, + 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1, 1.06085, + 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, + 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, + 1.02285, 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, + 0.90418, 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, + 0.96692, 1.09251, 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, + 1.0008, 0.93994, 0.97931, 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, + 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, + 0.95923, 1.07034, 0.95923, 1.16862, 1.00135, 0.99041, 1.00135, 0.99041, + 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, + 1.06467, 1.02511, 0.90996, 0.96752, 0.90996, 0.99361, 0.95801, 0.99361, + 0.95801, 0.99361, 0.95801, 1.07733, 1.03424, 0.97363, 0.96752, 0.93506, + 0.93136, 0.97489, 1.0008, 1, 1, 0.95923, 1.16862, 1.15103, 1.15103, 1.01173, + 1.03959, 0.75953, 0.81378, 0.79912, 1.15103, 1.21994, 0.95161, 0.87815, + 1.01149, 0.81525, 0.7676, 0.98167, 1.01134, 1.02546, 0.84097, 1.03089, + 1.18102, 0.97363, 0.88776, 0.85134, 0.97826, 0.79795, 0.99361, 1.06085, + 0.97489, 1.1406, 0.89858, 1.0388, 1.14889, 1.09398, 0.86039, 0.97489, + 1.0595, 0.92094, 0.94793, 0.95923, 0.90996, 0.99346, 0.98243, 1.02112, + 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008, 1.18102, 1.06628, + 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008, 1.13189, + 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434, + 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, + 0.98439, 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1.09466, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0.97278, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, + 1.06467, 1.02511, 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, + 1.21408, 0.89903, 1, 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, + 0.98633, 0.98633, 0.98633, 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, + 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.12454, 0.93503, + 1.03424, 1.19687, 1.03424, 1, 1, 1, 0.771, 1, 1, 1.15749, 1.15749, 1.15749, + 1.10948, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.16897, 1, + 0.96085, 0.90137, 1.2107, 1.18416, 1.13973, 0.69825, 0.9716, 2.10339, + 1.29004, 1.29004, 1.21172, 1.29004, 1.29004, 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.42603, 1, 0.99862, + 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18874, 1.42603, 1, + 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, + 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, + ], + Ji = { lineHeight: 1.33008, lineGap: 0 }, + Yi = [ + 1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953, + 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, + 1.59754, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, + 1.036, 0.81378, 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, + 0.97363, 0.89723, 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, + 1.1406, 0.79631, 0.90128, 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, + 0.97552, 0.88641, 0.80527, 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, + 0.99361, 1.11144, 1.57293, 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, + 0.97042, 0.83055, 0.97042, 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, + 0.94552, 1.01054, 1.14236, 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, + 1.0276, 0.78929, 1.1261, 0.97922, 0.95874, 1.02197, 0.98507, 0.96752, + 0.97168, 0.95107, 1.16579, 0.95107, 1.21237, 1.03959, 1.036, 1.036, 1, + 1.036, 1.16579, 0.87357, 1.31818, 1.18754, 1.26781, 1.05356, 1.21237, + 1.18622, 0.79487, 0.94994, 1.29004, 1.24047, 1.24047, 1.31818, 1, 0.91484, + 0.9754, 1.31818, 1.1349, 1.24866, 1.05356, 1.13934, 1.15574, 1.17389, + 0.73541, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.94385, + 0.87897, 0.79429, 0.79429, 0.79429, 0.79429, 1.1406, 1.1406, 1.1406, 1.1406, + 1.0426, 1.10615, 0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 1.21237, + 0.97552, 1.00135, 1.00135, 1.00135, 1.00135, 0.91142, 0.94436, 0.98721, + 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 0.96705, 0.83055, + 0.93503, 0.93503, 0.93503, 0.93503, 1.14236, 1.14236, 1.14236, 1.14236, + 0.93125, 0.97922, 0.94165, 0.94165, 0.94165, 0.94165, 0.94165, 1.29004, + 0.94165, 0.97922, 0.97922, 0.97922, 0.97922, 0.96752, 0.97042, 0.96752, + 0.97363, 1.06585, 0.97363, 1.06585, 0.97363, 1.06585, 0.87897, 0.83055, + 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 1.0426, 1.0033, + 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, + 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042, 0.91149, 0.97042, + 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922, 1.1406, 1.14236, + 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 0.97441, + 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236, 1, 1, 0.83853, + 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922, 1, 1, + 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552, + 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641, + 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, + 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, + 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, + 1.00135, 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, + 0.97168, 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, + 1.06585, 0.94385, 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, + 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, + 0.95161, 1.27126, 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, + 0.86142, 1.07205, 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, + 0.99361, 1.05815, 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, + 0.84918, 0.97552, 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, + 0.9817, 1.01945, 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, + 1.14236, 1.07514, 1.04961, 0.99607, 1.02897, 1.008, 0.9898, 0.95134, + 1.00639, 1.11121, 1.14236, 1.00518, 0.97981, 1.02186, 1, 1.08578, 0.94165, + 0.99314, 0.98387, 0.93028, 0.93377, 1.35125, 1.07514, 1.10687, 0.93491, + 1.04232, 1.00351, 1.14236, 1.07514, 0.94165, 1.07514, 1.00351, 0.79429, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09097, 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, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, + 1, 1, 1, 1, 1.06777, 1.02197, 1.06777, 1.02197, 1.06777, 1.02197, 0.91142, + 0.96752, 1, 1.21261, 0.89903, 1, 1, 0.75155, 1.04745, 1.04745, 1.04745, + 1.04394, 0.98633, 0.98633, 0.98633, 0.72959, 0.72959, 1.20502, 0.91406, + 1.26514, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.09125, + 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1, 0.771, 1, 1, 1.15574, 1.15574, + 1.15574, 1.15574, 0.86364, 0.94434, 0.86279, 0.94434, 0.86224, 1, 1, + 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416, 1.13904, 0.69825, 0.9716, + 2.10339, 1.29004, 1.29004, 1.21339, 1.29004, 1.29004, 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.42603, 1, + 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18775, 1.42603, + 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, + 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + ], + Zi = { lineHeight: 1.33008, lineGap: 0 }, + Qi = [ + 1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, + 1.15373, 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, + 0.78383, 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, + 0.96927, 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, + 1.17308, 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, + 0.80016, 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, + 1.03989, 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, + 0.94143, 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, + 1.45994, 0.74627, 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, + 1.06151, 0.97454, 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, + 1.01054, 0.96225, 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, + 0.94629, 0.9973, 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, + 1.17308, 0.95748, 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, + 1.23393, 1.1781, 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, + 1.09971, 1.09971, 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, + 0.9245, 1.09836, 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, + 0.94729, 0.94729, 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, + 0.74817, 0.95782, 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, + 0.96924, 0.96924, 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, + 0.95402, 0.95402, 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, + 0.97454, 0.97454, 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, + 0.87533, 0.93146, 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, + 0.96225, 0.96225, 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, + 1.00351, 1.00351, 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, + 0.97454, 0.94729, 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, + 0.87207, 0.88506, 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, + 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, + 0.87533, 0.88449, 0.97454, 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, + 0.98039, 1.00176, 0.98039, 1.00176, 0.95782, 0.93146, 0.95782, 0.93146, + 0.95782, 0.93146, 0.95782, 1.16484, 0.95782, 0.93146, 0.84421, 1.12761, + 0.69238, 1.08132, 1, 1, 0.98047, 0.83231, 1.16484, 1, 1, 0.84723, 1.04861, + 0.84723, 0.78755, 0.83231, 1.23736, 1.03989, 1.01054, 1, 1, 1.03989, + 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225, 0.96924, 0.96225, + 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1, 0.80595, + 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, + 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351, + 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, + 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, + 0.9043, 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, + 0.97454, 0.85498, 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, + 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, + 0.81965, 0.81965, 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, + 0.77596, 1.05734, 1.2, 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, + 0.98039, 0.96924, 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, + 0.96924, 0.97642, 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, + 0.97296, 1.01284, 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, + 1.0976, 0.98205, 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, + 1.02148, 1.0119, 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, + 0.93574, 0.94818, 1.30679, 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, + 1.0675, 0.96225, 1.0675, 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1.03754, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, + 0.98448, 0.9973, 0.98448, 0.9973, 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, + 1, 0.75155, 0.94945, 0.94945, 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, + 0.67603, 0.67603, 1.15621, 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, + 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, + 1, 1, 1, 0.77295, 1, 1, 1.09836, 1.09836, 1.09836, 1.01522, 0.86321, + 0.94434, 0.8649, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86438, + 1.17308, 1.18416, 1.14589, 0.69825, 0.97622, 1.96791, 1.24822, 1.24822, + 1.17308, 1.24822, 1.24822, 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.42603, 1, 0.99862, 0.99862, 1, 0.87025, + 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603, 1.42603, 0.99862, + 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10742, 1.10742, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + en = { lineHeight: 1.33008, lineGap: 0 }, + tn = [ + 1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, + 1.19985, 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, + 0.78032, 1.40246, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, + 0.96927, 0.96927, 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, + 1.1714, 0.80597, 0.94084, 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, + 0.79936, 0.88198, 0.9831, 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, + 1.03584, 0.96924, 0.83968, 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, + 0.93119, 0.98965, 0.88433, 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, + 1.45786, 0.74627, 0.80499, 0.91484, 1.05707, 0.92383, 1.05882, 0.9403, + 1.12654, 1.05882, 1.01756, 1.09011, 1.09011, 0.99414, 1.09011, 1.034, + 1.01756, 1.05356, 1.05707, 1.05882, 1.04399, 0.84863, 1.21968, 1.01756, + 0.95801, 1.00068, 0.91797, 0.96777, 0.9043, 0.90351, 0.92105, 0.90351, + 1.1714, 0.85337, 0.96927, 0.96927, 0.99912, 0.96927, 0.92105, 0.80597, + 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808, 0.75155, 0.94261, + 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032, 0.61584, 1.05425, + 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381, 0.96706, 0.96706, + 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734, 0.75842, 0.75842, + 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782, 0.97093, 1.03584, + 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714, 0.96924, 0.95132, + 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049, 0.91484, 0.91484, + 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383, 0.9403, 0.9403, + 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527, 1.01756, 1.05356, + 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923, 1.01756, 1.01756, + 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706, 0.91484, 0.96706, + 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, + 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093, 1.05882, 0.75842, + 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, + 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1, 0.9831, 1.01756, + 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, + 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011, 1, 1, 0.99414, + 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298, 0.84636, 1.23297, + 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444, 1.01756, + 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066, 0.98293, + 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649, + 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, + 0.85771, 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, + 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, + 0.8287, 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, + 1.08571, 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, + 1, 0.85771, 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, + 0.55572, 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, + 0.92366, 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, + 0.96491, 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, + 1.07796, 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, + 0.8287, 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, + 1.03424, 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, + 1.03424, 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, + 0.9087, 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, + 1.05205, 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03719, 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, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0.9403, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, + 1, 0.98965, 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, + 1.20088, 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, + 1.13196, 1.13196, 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, + 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, + 0.96927, 1.01518, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, + 1.11358, 1.06967, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, + 1, 0.91578, 0.86507, 1.1714, 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, + 1.24822, 1.24822, 1.17238, 1.24822, 1.24822, 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.42603, 1, 0.99862, + 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18083, 1.42603, 1, + 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, + 1, 1, 1, 1.10938, 1.10938, 1, 1, 1, 1.05425, 1.09971, 1.09971, 1.09971, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + ], + an = { lineHeight: 1.33008, lineGap: 0 }, + rn = getLookupTableFactory(function (e) { + e["MyriadPro-Regular"] = e["PdfJS-Fallback-Regular"] = { + name: "LiberationSans-Regular", + factors: $i, + baseWidths: _i, + baseMapping: ji, + metrics: Vi, + }; + e["MyriadPro-Bold"] = e["PdfJS-Fallback-Bold"] = { + name: "LiberationSans-Bold", + factors: Xi, + baseWidths: Di, + baseMapping: Bi, + metrics: qi, + }; + e["MyriadPro-It"] = + e["MyriadPro-Italic"] = + e["PdfJS-Fallback-Italic"] = + { + name: "LiberationSans-Italic", + factors: Gi, + baseWidths: Ei, + baseMapping: Pi, + metrics: zi, + }; + e["MyriadPro-BoldIt"] = + e["MyriadPro-BoldItalic"] = + e["PdfJS-Fallback-BoldItalic"] = + { + name: "LiberationSans-BoldItalic", + factors: Hi, + baseWidths: Ri, + baseMapping: Ni, + metrics: Wi, + }; + e.ArialMT = + e.Arial = + e["Arial-Regular"] = + { name: "LiberationSans-Regular", baseWidths: _i, baseMapping: ji }; + e["Arial-BoldMT"] = e["Arial-Bold"] = { + name: "LiberationSans-Bold", + baseWidths: Di, + baseMapping: Bi, + }; + e["Arial-ItalicMT"] = e["Arial-Italic"] = { + name: "LiberationSans-Italic", + baseWidths: Ei, + baseMapping: Pi, + }; + e["Arial-BoldItalicMT"] = e["Arial-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + baseWidths: Ri, + baseMapping: Ni, + }; + e["Calibri-Regular"] = { + name: "LiberationSans-Regular", + factors: Si, + baseWidths: _i, + baseMapping: ji, + metrics: Ai, + }; + e["Calibri-Bold"] = { + name: "LiberationSans-Bold", + factors: pi, + baseWidths: Di, + baseMapping: Bi, + metrics: mi, + }; + e["Calibri-Italic"] = { + name: "LiberationSans-Italic", + factors: wi, + baseWidths: Ei, + baseMapping: Pi, + metrics: xi, + }; + e["Calibri-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: bi, + baseWidths: Ri, + baseMapping: Ni, + metrics: yi, + }; + e["Segoeui-Regular"] = { + name: "LiberationSans-Regular", + factors: tn, + baseWidths: _i, + baseMapping: ji, + metrics: an, + }; + e["Segoeui-Bold"] = { + name: "LiberationSans-Bold", + factors: Ki, + baseWidths: Di, + baseMapping: Bi, + metrics: Ji, + }; + e["Segoeui-Italic"] = { + name: "LiberationSans-Italic", + factors: Qi, + baseWidths: Ei, + baseMapping: Pi, + metrics: en, + }; + e["Segoeui-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: Yi, + baseWidths: Ri, + baseMapping: Ni, + metrics: Zi, + }; + e["Helvetica-Regular"] = e.Helvetica = { + name: "LiberationSans-Regular", + factors: Oi, + baseWidths: _i, + baseMapping: ji, + metrics: Mi, + }; + e["Helvetica-Bold"] = { + name: "LiberationSans-Bold", + factors: ki, + baseWidths: Di, + baseMapping: Bi, + metrics: Ci, + }; + e["Helvetica-Italic"] = { + name: "LiberationSans-Italic", + factors: Ii, + baseWidths: Ei, + baseMapping: Pi, + metrics: Ti, + }; + e["Helvetica-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: vi, + baseWidths: Ri, + baseMapping: Ni, + metrics: Fi, + }; + }); +function getXfaFontName(e) { + const t = normalizeFontName(e); + return rn()[t]; +} +function getXfaFontDict(e) { + const t = (function getXfaFontWidths(e) { + const t = getXfaFontName(e); + if (!t) return null; + const { baseWidths: a, baseMapping: r, factors: i } = t, + n = i ? a.map((e, t) => e * i[t]) : a; + let s, + o = -2; + const c = []; + for (const [e, t] of r.map((e, t) => [e, t]).sort(([e], [t]) => e - t)) + if (-1 !== e) + if (e === o + 1) { + s.push(n[t]); + o += 1; + } else { + o = e; + s = [n[t]]; + c.push(e, s); + } + return c; + })(e), + a = new Dict(null); + a.set("BaseFont", Name.get(e)); + a.set("Type", Name.get("Font")); + a.set("Subtype", Name.get("CIDFontType2")); + a.set("Encoding", Name.get("Identity-H")); + a.set("CIDToGIDMap", Name.get("Identity")); + a.set("W", t); + a.set("FirstChar", t[0]); + a.set("LastChar", t.at(-2) + t.at(-1).length - 1); + const r = new Dict(null); + a.set("FontDescriptor", r); + const i = new Dict(null); + i.set("Ordering", "Identity"); + i.set("Registry", "Adobe"); + i.set("Supplement", 0); + a.set("CIDSystemInfo", i); + return a; +} +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(nn.LBRACE); + this.parseBlock(); + this.expect(nn.RBRACE); + return this.operators; + } + parseBlock() { + for (;;) + if (this.accept(nn.NUMBER)) this.operators.push(this.prev.value); + else if (this.accept(nn.OPERATOR)) this.operators.push(this.prev.value); + else { + if (!this.accept(nn.LBRACE)) return; + this.parseCondition(); + } + } + parseCondition() { + const e = this.operators.length; + this.operators.push(null, null); + this.parseBlock(); + this.expect(nn.RBRACE); + if (this.accept(nn.IF)) { + this.operators[e] = this.operators.length; + this.operators[e + 1] = "jz"; + } else { + if (!this.accept(nn.LBRACE)) + throw new FormatError("PS Function: error parsing conditional."); + { + const t = this.operators.length; + this.operators.push(null, null); + const a = this.operators.length; + this.parseBlock(); + this.expect(nn.RBRACE); + this.expect(nn.IFELSE); + this.operators[t] = this.operators.length; + this.operators[t + 1] = "j"; + this.operators[e] = a; + this.operators[e + 1] = "jz"; + } + } + } +} +const nn = { 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(nn.OPERATOR, e)); + } + static get LBRACE() { + return shadow(this, "LBRACE", new PostScriptToken(nn.LBRACE, "{")); + } + static get RBRACE() { + return shadow(this, "RBRACE", new PostScriptToken(nn.RBRACE, "}")); + } + static get IF() { + return shadow(this, "IF", new PostScriptToken(nn.IF, "IF")); + } + static get IFELSE() { + return shadow(this, "IFELSE", new PostScriptToken(nn.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 sa; + 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(nn.NUMBER, this.getNumber()); + case 123: + this.nextChar(); + return PostScriptToken.LBRACE; + case 125: + this.nextChar(); + return PostScriptToken.RBRACE; + } + const a = this.strBuf; + a.length = 0; + a[0] = String.fromCharCode(t); + for ( + ; + (t = this.nextChar()) >= 0 && + ((t >= 65 && t <= 90) || (t >= 97 && t <= 122)); + + ) + a.push(String.fromCharCode(t)); + const r = a.join(""); + switch (r.toLowerCase()) { + case "if": + return PostScriptToken.IF; + case "ifelse": + return PostScriptToken.IFELSE; + default: + return PostScriptToken.getOperator(r); + } + } + 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 a = parseFloat(t.join("")); + if (isNaN(a)) throw new FormatError(`Invalid floating point number: ${a}`); + return a; + } +} +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, a) { + unreachable("Abstract method `set` called."); + } +} +class LocalImageCache extends BaseLocalCache { + set(e, t = null, a) { + 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, a); + } else this._imageMap.has(e) || this._imageMap.set(e, a); + } +} +class LocalColorSpaceCache extends BaseLocalCache { + set(e = null, t = null, a) { + 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, a); + } else this._imageMap.has(e) || this._imageMap.set(e, a); + } +} +class LocalFunctionCache extends BaseLocalCache { + constructor(e) { + super({ onlyRefs: !0 }); + } + set(e = null, t, a) { + if (!t) + throw new Error('LocalFunctionCache.set - expected "ref" argument.'); + this._imageCache.has(t) || this._imageCache.put(t, a); + } +} +class LocalGStateCache extends BaseLocalCache { + set(e, t = null, a) { + 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, a); + } else this._imageMap.has(e) || this._imageMap.set(e, a); + } +} +class LocalTilingPatternCache extends BaseLocalCache { + constructor(e) { + super({ onlyRefs: !0 }); + } + set(e = null, t, a) { + if (!t) + throw new Error('LocalTilingPatternCache.set - expected "ref" argument.'); + this._imageCache.has(t) || this._imageCache.put(t, a); + } +} +class RegionalImageCache extends BaseLocalCache { + constructor(e) { + super({ onlyRefs: !0 }); + } + set(e = null, t, a) { + if (!t) + throw new Error('RegionalImageCache.set - expected "ref" argument.'); + this._imageCache.has(t) || this._imageCache.put(t, a); + } +} +class GlobalColorSpaceCache extends BaseLocalCache { + constructor(e) { + super({ onlyRefs: !0 }); + } + set(e = null, t, a) { + if (!t) + throw new Error('GlobalColorSpaceCache.set - expected "ref" argument.'); + this._imageCache.has(t) || this._imageCache.put(t, a); + } + clear() { + this._imageCache.clear(); + } +} +class GlobalImageCache { + static NUM_PAGES_THRESHOLD = 2; + static MIN_IMAGES_TO_CACHE = 10; + static MAX_BYTE_SIZE = 5e7; + #oe = new RefSet(); + constructor() { + this._refCache = new RefSetCache(); + this._imageCache = new RefSetCache(); + } + get #ce() { + let e = 0; + for (const t of this._imageCache) e += t.byteSize; + return e; + } + get #le() { + return ( + !(this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) && + !(this.#ce < GlobalImageCache.MAX_BYTE_SIZE) + ); + } + shouldCache(e, t) { + let a = this._refCache.get(e); + if (!a) { + a = new Set(); + this._refCache.put(e, a); + } + a.add(t); + return ( + !(a.size < GlobalImageCache.NUM_PAGES_THRESHOLD) && + !(!this._imageCache.has(e) && this.#le) + ); + } + addDecodeFailed(e) { + this.#oe.put(e); + } + hasDecodeFailed(e) { + return this.#oe.has(e); + } + addByteSize(e, t) { + const a = this._imageCache.get(e); + a && (a.byteSize || (a.byteSize = t)); + } + getData(e, t) { + const a = this._refCache.get(e); + if (!a) return null; + if (a.size < GlobalImageCache.NUM_PAGES_THRESHOLD) return null; + const r = this._imageCache.get(e); + if (!r) return null; + a.add(t); + return r; + } + setData(e, t) { + if (!this._refCache.has(e)) + throw new Error( + 'GlobalImageCache.setData - expected "shouldCache" to have been called.', + ); + this._imageCache.has(e) || + (this.#le + ? warn("GlobalImageCache.setData - cache limit reached.") + : this._imageCache.put(e, t)); + } + clear(e = !1) { + if (!e) { + this.#oe.clear(); + this._refCache.clear(); + } + this._imageCache.clear(); + } +} +class PDFFunctionFactory { + constructor({ xref: e, isEvalSupported: t = !0 }) { + this.xref = e; + this.isEvalSupported = !1 !== t; + } + create(e, t = !1) { + let a, r; + e instanceof Ref + ? (a = e) + : e instanceof Dict + ? (a = e.objId) + : e instanceof BaseStream && (a = e.dict?.objId); + if (a) { + const e = this._localFunctionCache.getByRef(a); + if (e) return e; + } + const i = this.xref.fetchIfRef(e); + if (Array.isArray(i)) { + if (!t) + throw new Error( + 'PDFFunctionFactory.create - expected "parseArray" argument.', + ); + r = PDFFunction.parseArray(this, i); + } else r = PDFFunction.parse(this, i); + a && this._localFunctionCache.set(null, a, r); + return r; + } + get _localFunctionCache() { + return shadow(this, "_localFunctionCache", new LocalFunctionCache()); + } +} +function toNumberArray(e) { + return Array.isArray(e) + ? isNumberArray(e, null) + ? e + : e.map((e) => +e) + : null; +} +class PDFFunction { + static getSampleArray(e, t, a, r) { + let i, + n, + s = 1; + for (i = 0, n = e.length; i < n; i++) s *= e[i]; + s *= t; + const o = new Array(s); + let c = 0, + l = 0; + const h = 1 / (2 ** a - 1), + u = r.getBytes((s * a + 7) / 8); + let d = 0; + for (i = 0; i < s; i++) { + for (; c < a; ) { + l <<= 8; + l |= u[d++]; + c += 8; + } + c -= a; + o[i] = (l >> c) * h; + l &= (1 << c) - 1; + } + return o; + } + static parse(e, t) { + const a = t.dict || t; + switch (a.get("FunctionType")) { + case 0: + return this.constructSampled(e, t, a); + case 1: + break; + case 2: + return this.constructInterpolated(e, a); + case 3: + return this.constructStiched(e, a); + case 4: + return this.constructPostScript(e, t, a); + } + throw new FormatError("Unknown type of function"); + } + static parseArray(e, t) { + const { xref: a } = e, + r = []; + for (const i of t) r.push(this.parse(e, a.fetchIfRef(i))); + return function (e, t, a, i) { + for (let n = 0, s = r.length; n < s; n++) r[n](e, t, a, i + n); + }; + } + static constructSampled(e, t, a) { + function toMultiArray(e) { + const t = e.length, + a = []; + let r = 0; + for (let i = 0; i < t; i += 2) a[r++] = [e[i], e[i + 1]]; + return a; + } + function interpolate(e, t, a, r, i) { + return r + ((i - r) / (a - t)) * (e - t); + } + let r = toNumberArray(a.getArray("Domain")), + i = toNumberArray(a.getArray("Range")); + if (!r || !i) throw new FormatError("No domain or range"); + const n = r.length / 2, + s = i.length / 2; + r = toMultiArray(r); + i = toMultiArray(i); + const o = toNumberArray(a.getArray("Size")), + c = a.get("BitsPerSample"), + l = a.get("Order") || 1; + 1 !== l && info("No support for cubic spline interpolation: " + l); + let h = toNumberArray(a.getArray("Encode")); + if (h) h = toMultiArray(h); + else { + h = []; + for (let e = 0; e < n; ++e) h.push([0, o[e] - 1]); + } + let u = toNumberArray(a.getArray("Decode")); + u = u ? toMultiArray(u) : i; + const d = this.getSampleArray(o, s, c, t); + return function constructSampledFn(e, t, a, c) { + const l = 1 << n, + f = new Float64Array(l).fill(1), + g = new Uint32Array(l); + let p, + m, + b = s, + y = 1; + for (p = 0; p < n; ++p) { + const a = r[p][0], + i = r[p][1]; + let n = interpolate(MathClamp(e[t + p], a, i), a, i, h[p][0], h[p][1]); + const s = o[p]; + n = MathClamp(n, 0, s - 1); + const c = n < s - 1 ? Math.floor(n) : n - 1, + u = c + 1 - n, + d = n - c, + w = c * b, + x = w + b; + for (m = 0; m < l; m++) + if (m & y) { + f[m] *= d; + g[m] += x; + } else { + f[m] *= u; + g[m] += w; + } + b *= s; + y <<= 1; + } + for (m = 0; m < s; ++m) { + let e = 0; + for (p = 0; p < l; p++) e += d[g[p] + m] * f[p]; + e = interpolate(e, 0, 1, u[m][0], u[m][1]); + a[c + m] = MathClamp(e, i[m][0], i[m][1]); + } + }; + } + static constructInterpolated(e, t) { + const a = toNumberArray(t.getArray("C0")) || [0], + r = toNumberArray(t.getArray("C1")) || [1], + i = t.get("N"), + n = []; + for (let e = 0, t = a.length; e < t; ++e) n.push(r[e] - a[e]); + const s = n.length; + return function constructInterpolatedFn(e, t, r, o) { + const c = 1 === i ? e[t] : e[t] ** i; + for (let e = 0; e < s; ++e) r[o + e] = a[e] + c * n[e]; + }; + } + static constructStiched(e, t) { + const a = toNumberArray(t.getArray("Domain")); + if (!a) throw new FormatError("No domain"); + if (1 !== a.length / 2) + throw new FormatError("Bad domain for stiched function"); + const { xref: r } = e, + i = []; + for (const a of t.get("Functions")) i.push(this.parse(e, r.fetchIfRef(a))); + const n = toNumberArray(t.getArray("Bounds")), + s = toNumberArray(t.getArray("Encode")), + o = new Float32Array(1); + return function constructStichedFn(e, t, r, c) { + const l = MathClamp(e[t], a[0], a[1]), + h = n.length; + let u; + for (u = 0; u < h && !(l < n[u]); ++u); + let d = a[0]; + u > 0 && (d = n[u - 1]); + let f = a[1]; + u < n.length && (f = n[u]); + const g = s[2 * u], + p = s[2 * u + 1]; + o[0] = d === f ? g : g + ((l - d) * (p - g)) / (f - d); + i[u](o, 0, r, c); + }; + } + static constructPostScript(e, t, a) { + const r = toNumberArray(a.getArray("Domain")), + i = toNumberArray(a.getArray("Range")); + if (!r) throw new FormatError("No domain."); + if (!i) throw new FormatError("No range."); + const n = new PostScriptLexer(t), + s = new PostScriptParser(n).parse(); + if (e.isEvalSupported && FeatureTest.isEvalSupported) { + const e = new PostScriptCompiler().compile(s, r, i); + if (e) return new Function("src", "srcOffset", "dest", "destOffset", e); + } + info("Unable to compile PS function"); + const o = i.length >> 1, + c = r.length >> 1, + l = new PostScriptEvaluator(s), + h = Object.create(null); + let u = 8192; + const d = new Float32Array(c); + return function constructPostScriptFn(e, t, a, r) { + let n, + s, + f = ""; + const g = d; + for (n = 0; n < c; n++) { + s = e[t + n]; + g[n] = s; + f += s + "_"; + } + const p = h[f]; + if (void 0 !== p) { + a.set(p, r); + return; + } + const m = new Float32Array(o), + b = l.execute(g), + y = b.length - o; + for (n = 0; n < o; n++) { + s = b[y + n]; + let e = i[2 * n]; + if (s < e) s = e; + else { + e = i[2 * n + 1]; + s > e && (s = e); + } + m[n] = s; + } + if (u > 0) { + u--; + h[f] = m; + } + a.set(m, r); + }; + } +} +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 a = t.length - e, r = e - 1; r >= 0; r--, a++) t.push(t[a]); + } + index(e) { + this.push(this.stack[this.stack.length - e - 1]); + } + roll(e, t) { + const a = this.stack, + r = a.length - e, + i = a.length - 1, + n = r + (t - Math.floor(t / e) * e); + for (let e = r, t = i; e < t; e++, t--) { + const r = a[e]; + a[e] = a[t]; + a[t] = r; + } + for (let e = r, t = n - 1; e < t; e++, t--) { + const r = a[e]; + a[e] = a[t]; + a[t] = r; + } + for (let e = n, t = i; e < t; e++, t--) { + const r = a[e]; + a[e] = a[t]; + a[t] = r; + } + } +} +class PostScriptEvaluator { + constructor(e) { + this.operators = e; + } + execute(e) { + const t = new PostScriptStack(e); + let a = 0; + const r = this.operators, + i = r.length; + let n, s, o; + for (; a < i; ) { + n = r[a++]; + if ("number" != typeof n) + switch (n) { + case "jz": + o = t.pop(); + s = t.pop(); + s || (a = o); + break; + case "j": + s = t.pop(); + a = s; + break; + case "abs": + s = t.pop(); + t.push(Math.abs(s)); + break; + case "add": + o = t.pop(); + s = t.pop(); + t.push(s + o); + break; + case "and": + o = t.pop(); + s = t.pop(); + "boolean" == typeof s && "boolean" == typeof o + ? t.push(s && o) + : t.push(s & o); + break; + case "atan": + o = t.pop(); + s = t.pop(); + s = (Math.atan2(s, o) / Math.PI) * 180; + s < 0 && (s += 360); + t.push(s); + break; + case "bitshift": + o = t.pop(); + s = t.pop(); + s > 0 ? t.push(s << o) : t.push(s >> o); + break; + case "ceiling": + s = t.pop(); + t.push(Math.ceil(s)); + break; + case "copy": + s = t.pop(); + t.copy(s); + break; + case "cos": + s = t.pop(); + t.push(Math.cos(((s % 360) / 180) * Math.PI)); + break; + case "cvi": + s = 0 | t.pop(); + t.push(s); + break; + case "cvr": + break; + case "div": + o = t.pop(); + s = t.pop(); + t.push(s / o); + break; + case "dup": + t.copy(1); + break; + case "eq": + o = t.pop(); + s = t.pop(); + t.push(s === o); + break; + case "exch": + t.roll(2, 1); + break; + case "exp": + o = t.pop(); + s = t.pop(); + t.push(s ** o); + break; + case "false": + t.push(!1); + break; + case "floor": + s = t.pop(); + t.push(Math.floor(s)); + break; + case "ge": + o = t.pop(); + s = t.pop(); + t.push(s >= o); + break; + case "gt": + o = t.pop(); + s = t.pop(); + t.push(s > o); + break; + case "idiv": + o = t.pop(); + s = t.pop(); + t.push((s / o) | 0); + break; + case "index": + s = t.pop(); + t.index(s); + break; + case "le": + o = t.pop(); + s = t.pop(); + t.push(s <= o); + break; + case "ln": + s = t.pop(); + t.push(Math.log(s)); + break; + case "log": + s = t.pop(); + t.push(Math.log10(s)); + break; + case "lt": + o = t.pop(); + s = t.pop(); + t.push(s < o); + break; + case "mod": + o = t.pop(); + s = t.pop(); + t.push(s % o); + break; + case "mul": + o = t.pop(); + s = t.pop(); + t.push(s * o); + break; + case "ne": + o = t.pop(); + s = t.pop(); + t.push(s !== o); + break; + case "neg": + s = t.pop(); + t.push(-s); + break; + case "not": + s = t.pop(); + "boolean" == typeof s ? t.push(!s) : t.push(~s); + break; + case "or": + o = t.pop(); + s = t.pop(); + "boolean" == typeof s && "boolean" == typeof o + ? t.push(s || o) + : t.push(s | o); + break; + case "pop": + t.pop(); + break; + case "roll": + o = t.pop(); + s = t.pop(); + t.roll(s, o); + break; + case "round": + s = t.pop(); + t.push(Math.round(s)); + break; + case "sin": + s = t.pop(); + t.push(Math.sin(((s % 360) / 180) * Math.PI)); + break; + case "sqrt": + s = t.pop(); + t.push(Math.sqrt(s)); + break; + case "sub": + o = t.pop(); + s = t.pop(); + t.push(s - o); + break; + case "true": + t.push(!0); + break; + case "truncate": + s = t.pop(); + s = s < 0 ? Math.ceil(s) : Math.floor(s); + t.push(s); + break; + case "xor": + o = t.pop(); + s = t.pop(); + "boolean" == typeof s && "boolean" == typeof o + ? t.push(s !== o) + : t.push(s ^ o); + break; + default: + throw new FormatError(`Unknown operator ${n}`); + } + else t.push(n); + } + return t.stack; + } +} +class AstNode { + constructor(e) { + this.type = e; + } + visit(e) { + unreachable("abstract method"); + } +} +class AstArgument extends AstNode { + constructor(e, t, a) { + super("args"); + this.index = e; + this.min = t; + this.max = a; + } + visit(e) { + e.visitArgument(this); + } +} +class AstLiteral extends AstNode { + constructor(e) { + super("literal"); + this.number = e; + this.min = e; + this.max = e; + } + visit(e) { + e.visitLiteral(this); + } +} +class AstBinaryOperation extends AstNode { + constructor(e, t, a, r, i) { + super("binary"); + this.op = e; + this.arg1 = t; + this.arg2 = a; + this.min = r; + this.max = i; + } + visit(e) { + e.visitBinaryOperation(this); + } +} +class AstMin extends AstNode { + constructor(e, t) { + super("max"); + this.arg = e; + this.min = e.min; + this.max = t; + } + visit(e) { + e.visitMin(this); + } +} +class AstVariable extends AstNode { + constructor(e, t, a) { + super("var"); + this.index = e; + this.min = t; + this.max = a; + } + visit(e) { + e.visitVariable(this); + } +} +class AstVariableDefinition extends AstNode { + constructor(e, t) { + super("definition"); + this.variable = e; + this.arg = t; + } + visit(e) { + e.visitVariableDefinition(this); + } +} +class ExpressionBuilderVisitor { + constructor() { + this.parts = []; + } + visitArgument(e) { + this.parts.push( + "Math.max(", + e.min, + ", Math.min(", + e.max, + ", src[srcOffset + ", + e.index, + "]))", + ); + } + visitVariable(e) { + this.parts.push("v", e.index); + } + visitLiteral(e) { + this.parts.push(e.number); + } + visitBinaryOperation(e) { + this.parts.push("("); + e.arg1.visit(this); + this.parts.push(" ", e.op, " "); + e.arg2.visit(this); + this.parts.push(")"); + } + visitVariableDefinition(e) { + this.parts.push("var "); + e.variable.visit(this); + this.parts.push(" = "); + e.arg.visit(this); + this.parts.push(";"); + } + visitMin(e) { + this.parts.push("Math.min("); + e.arg.visit(this); + this.parts.push(", ", e.max, ")"); + } + toString() { + return this.parts.join(""); + } +} +function buildAddOperation(e, t) { + return "literal" === t.type && 0 === t.number + ? e + : "literal" === e.type && 0 === e.number + ? t + : "literal" === t.type && "literal" === e.type + ? new AstLiteral(e.number + t.number) + : new AstBinaryOperation("+", e, t, e.min + t.min, e.max + t.max); +} +function buildMulOperation(e, t) { + if ("literal" === t.type) { + if (0 === t.number) return new AstLiteral(0); + if (1 === t.number) return e; + if ("literal" === e.type) return new AstLiteral(e.number * t.number); + } + if ("literal" === e.type) { + if (0 === e.number) return new AstLiteral(0); + if (1 === e.number) return t; + } + const a = Math.min( + e.min * t.min, + e.min * t.max, + e.max * t.min, + e.max * t.max, + ), + r = Math.max(e.min * t.min, e.min * t.max, e.max * t.min, e.max * t.max); + return new AstBinaryOperation("*", e, t, a, r); +} +function buildSubOperation(e, t) { + if ("literal" === t.type) { + if (0 === t.number) return e; + if ("literal" === e.type) return new AstLiteral(e.number - t.number); + } + return "binary" === t.type && + "-" === t.op && + "literal" === e.type && + 1 === e.number && + "literal" === t.arg1.type && + 1 === t.arg1.number + ? t.arg2 + : new AstBinaryOperation("-", e, t, e.min - t.max, e.max - t.min); +} +function buildMinOperation(e, t) { + return e.min >= t ? new AstLiteral(t) : e.max <= t ? e : new AstMin(e, t); +} +class PostScriptCompiler { + compile(e, t, a) { + const r = [], + i = [], + n = t.length >> 1, + s = a.length >> 1; + let o, + c, + l, + h, + u, + d, + f, + g, + p = 0; + for (let e = 0; e < n; e++) + r.push(new AstArgument(e, t[2 * e], t[2 * e + 1])); + for (let t = 0, a = e.length; t < a; t++) { + g = e[t]; + if ("number" != typeof g) + switch (g) { + case "add": + if (r.length < 2) return null; + h = r.pop(); + l = r.pop(); + r.push(buildAddOperation(l, h)); + break; + case "cvr": + if (r.length < 1) return null; + break; + case "mul": + if (r.length < 2) return null; + h = r.pop(); + l = r.pop(); + r.push(buildMulOperation(l, h)); + break; + case "sub": + if (r.length < 2) return null; + h = r.pop(); + l = r.pop(); + r.push(buildSubOperation(l, h)); + break; + case "exch": + if (r.length < 2) return null; + u = r.pop(); + d = r.pop(); + r.push(u, d); + break; + case "pop": + if (r.length < 1) return null; + r.pop(); + break; + case "index": + if (r.length < 1) return null; + l = r.pop(); + if ("literal" !== l.type) return null; + o = l.number; + if (o < 0 || !Number.isInteger(o) || r.length < o) return null; + u = r[r.length - o - 1]; + if ("literal" === u.type || "var" === u.type) { + r.push(u); + break; + } + f = new AstVariable(p++, u.min, u.max); + r[r.length - o - 1] = f; + r.push(f); + i.push(new AstVariableDefinition(f, u)); + break; + case "dup": + if (r.length < 1) return null; + if ( + "number" == typeof e[t + 1] && + "gt" === e[t + 2] && + e[t + 3] === t + 7 && + "jz" === e[t + 4] && + "pop" === e[t + 5] && + e[t + 6] === e[t + 1] + ) { + l = r.pop(); + r.push(buildMinOperation(l, e[t + 1])); + t += 6; + break; + } + u = r.at(-1); + if ("literal" === u.type || "var" === u.type) { + r.push(u); + break; + } + f = new AstVariable(p++, u.min, u.max); + r[r.length - 1] = f; + r.push(f); + i.push(new AstVariableDefinition(f, u)); + break; + case "roll": + if (r.length < 2) return null; + h = r.pop(); + l = r.pop(); + if ("literal" !== h.type || "literal" !== l.type) return null; + c = h.number; + o = l.number; + if ( + o <= 0 || + !Number.isInteger(o) || + !Number.isInteger(c) || + r.length < o + ) + return null; + c = ((c % o) + o) % o; + if (0 === c) break; + r.push(...r.splice(r.length - o, o - c)); + break; + default: + return null; + } + else r.push(new AstLiteral(g)); + } + if (r.length !== s) return null; + const m = []; + for (const e of i) { + const t = new ExpressionBuilderVisitor(); + e.visit(t); + m.push(t.toString()); + } + for (let e = 0, t = r.length; e < t; e++) { + const t = r[e], + i = new ExpressionBuilderVisitor(); + t.visit(i); + const n = a[2 * e], + s = a[2 * e + 1], + o = [i.toString()]; + if (n > t.min) { + o.unshift("Math.max(", n, ", "); + o.push(")"); + } + if (s < t.max) { + o.unshift("Math.min(", s, ", "); + o.push(")"); + } + o.unshift("dest[destOffset + ", e, "] = "); + o.push(";"); + m.push(o.join("")); + } + return m.join("\n"); + } +} +const sn = [ + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "S", + "B", + "S", + "WS", + "B", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "B", + "B", + "B", + "S", + "WS", + "ON", + "ON", + "ET", + "ET", + "ET", + "ON", + "ON", + "ON", + "ON", + "ON", + "ES", + "CS", + "ES", + "CS", + "CS", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "CS", + "ON", + "ON", + "ON", + "ON", + "ON", + "ON", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "ON", + "ON", + "ON", + "ON", + "ON", + "ON", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "ON", + "ON", + "ON", + "ON", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "B", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "BN", + "CS", + "ON", + "ET", + "ET", + "ET", + "ET", + "ON", + "ON", + "ON", + "ON", + "L", + "ON", + "ON", + "BN", + "ON", + "ON", + "ET", + "ET", + "EN", + "EN", + "ON", + "L", + "ON", + "ON", + "ON", + "EN", + "L", + "ON", + "ON", + "ON", + "ON", + "ON", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "ON", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "ON", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + "L", + ], + on = [ + "AN", + "AN", + "AN", + "AN", + "AN", + "AN", + "ON", + "ON", + "AL", + "ET", + "ET", + "AL", + "CS", + "AL", + "ON", + "ON", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "AL", + "AL", + "", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "AN", + "AN", + "AN", + "AN", + "AN", + "AN", + "AN", + "AN", + "AN", + "AN", + "ET", + "AN", + "AN", + "AL", + "AL", + "AL", + "NSM", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "AN", + "ON", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "NSM", + "AL", + "AL", + "NSM", + "NSM", + "ON", + "NSM", + "NSM", + "NSM", + "NSM", + "AL", + "AL", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "EN", + "AL", + "AL", + "AL", + "AL", + "AL", + "AL", + ]; +function isOdd(e) { + return !!(1 & e); +} +function isEven(e) { + return !(1 & e); +} +function findUnequal(e, t, a) { + let r, i; + for (r = t, i = e.length; r < i; ++r) if (e[r] !== a) return r; + return r; +} +function reverseValues(e, t, a) { + for (let r = t, i = a - 1; r < i; ++r, --i) { + const t = e[r]; + e[r] = e[i]; + e[i] = t; + } +} +function createBidiText(e, t, a = !1) { + let r = "ltr"; + a ? (r = "ttb") : t || (r = "rtl"); + return { str: e, dir: r }; +} +const cn = [], + ln = []; +function bidi(e, t = -1, a = !1) { + let r = !0; + const i = e.length; + if (0 === i || a) return createBidiText(e, r, a); + cn.length = i; + ln.length = i; + let n, + s, + o = 0; + for (n = 0; n < i; ++n) { + cn[n] = e.charAt(n); + const t = e.charCodeAt(n); + let a = "L"; + if (t <= 255) a = sn[t]; + else if (1424 <= t && t <= 1524) a = "R"; + else if (1536 <= t && t <= 1791) { + a = on[255 & t]; + a || warn("Bidi: invalid Unicode character " + t.toString(16)); + } else + ((1792 <= t && t <= 2220) || + (64336 <= t && t <= 65023) || + (65136 <= t && t <= 65279)) && + (a = "AL"); + ("R" !== a && "AL" !== a && "AN" !== a) || o++; + ln[n] = a; + } + if (0 === o) { + r = !0; + return createBidiText(e, r); + } + if (-1 === t) + if (o / i < 0.3 && i > 4) { + r = !0; + t = 0; + } else { + r = !1; + t = 1; + } + const c = []; + for (n = 0; n < i; ++n) c[n] = t; + const l = isOdd(t) ? "R" : "L", + h = l, + u = h; + let d, + f = h; + for (n = 0; n < i; ++n) "NSM" === ln[n] ? (ln[n] = f) : (f = ln[n]); + f = h; + for (n = 0; n < i; ++n) { + d = ln[n]; + "EN" === d + ? (ln[n] = "AL" === f ? "AN" : "EN") + : ("R" !== d && "L" !== d && "AL" !== d) || (f = d); + } + for (n = 0; n < i; ++n) { + d = ln[n]; + "AL" === d && (ln[n] = "R"); + } + for (n = 1; n < i - 1; ++n) { + "ES" === ln[n] && + "EN" === ln[n - 1] && + "EN" === ln[n + 1] && + (ln[n] = "EN"); + "CS" !== ln[n] || + ("EN" !== ln[n - 1] && "AN" !== ln[n - 1]) || + ln[n + 1] !== ln[n - 1] || + (ln[n] = ln[n - 1]); + } + for (n = 0; n < i; ++n) + if ("EN" === ln[n]) { + for (let e = n - 1; e >= 0 && "ET" === ln[e]; --e) ln[e] = "EN"; + for (let e = n + 1; e < i && "ET" === ln[e]; ++e) ln[e] = "EN"; + } + for (n = 0; n < i; ++n) { + d = ln[n]; + ("WS" !== d && "ES" !== d && "ET" !== d && "CS" !== d) || (ln[n] = "ON"); + } + f = h; + for (n = 0; n < i; ++n) { + d = ln[n]; + "EN" === d + ? (ln[n] = "L" === f ? "L" : "EN") + : ("R" !== d && "L" !== d) || (f = d); + } + for (n = 0; n < i; ++n) + if ("ON" === ln[n]) { + const e = findUnequal(ln, n + 1, "ON"); + let t = h; + n > 0 && (t = ln[n - 1]); + let a = u; + e + 1 < i && (a = ln[e + 1]); + "L" !== t && (t = "R"); + "L" !== a && (a = "R"); + t === a && ln.fill(t, n, e); + n = e - 1; + } + for (n = 0; n < i; ++n) "ON" === ln[n] && (ln[n] = l); + for (n = 0; n < i; ++n) { + d = ln[n]; + isEven(c[n]) + ? "R" === d + ? (c[n] += 1) + : ("AN" !== d && "EN" !== d) || (c[n] += 2) + : ("L" !== d && "AN" !== d && "EN" !== d) || (c[n] += 1); + } + let g, + p = -1, + m = 99; + for (n = 0, s = c.length; n < s; ++n) { + g = c[n]; + p < g && (p = g); + m > g && isOdd(g) && (m = g); + } + for (g = p; g >= m; --g) { + let e = -1; + for (n = 0, s = c.length; n < s; ++n) + if (c[n] < g) { + if (e >= 0) { + reverseValues(cn, e, n); + e = -1; + } + } else e < 0 && (e = n); + e >= 0 && reverseValues(cn, e, c.length); + } + for (n = 0, s = cn.length; n < s; ++n) { + const e = cn[n]; + ("<" !== e && ">" !== e) || (cn[n] = ""); + } + return createBidiText(cn.join(""), r); +} +const hn = { style: "normal", weight: "normal" }, + un = { style: "normal", weight: "bold" }, + dn = { style: "italic", weight: "normal" }, + fn = { style: "italic", weight: "bold" }, + gn = 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", + "PT Astra Serif", + "DejaVu Serif", + "Bitstream Vera Serif", + "Ubuntu", + ], + style: hn, + ultimate: "serif", + }, + ], + ["Times-Bold", { alias: "Times-Roman", style: un, ultimate: "serif" }], + ["Times-Italic", { alias: "Times-Roman", style: dn, ultimate: "serif" }], + [ + "Times-BoldItalic", + { alias: "Times-Roman", style: fn, 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: hn, + ultimate: "sans-serif", + }, + ], + [ + "Helvetica-Bold", + { + alias: "Helvetica", + path: "LiberationSans-Bold.ttf", + style: un, + ultimate: "sans-serif", + }, + ], + [ + "Helvetica-Oblique", + { + alias: "Helvetica", + path: "LiberationSans-Italic.ttf", + style: dn, + ultimate: "sans-serif", + }, + ], + [ + "Helvetica-BoldOblique", + { + alias: "Helvetica", + path: "LiberationSans-BoldItalic.ttf", + style: fn, + 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: hn, + ultimate: "monospace", + }, + ], + ["Courier-Bold", { alias: "Courier", style: un, ultimate: "monospace" }], + ["Courier-Oblique", { alias: "Courier", style: dn, ultimate: "monospace" }], + [ + "Courier-BoldOblique", + { alias: "Courier", style: fn, 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: hn, + fallback: "Helvetica", + }, + ], + [ + "ArialNarrow-Bold", + { alias: "ArialNarrow", style: un, fallback: "Helvetica-Bold" }, + ], + [ + "ArialNarrow-Italic", + { alias: "ArialNarrow", style: dn, fallback: "Helvetica-Oblique" }, + ], + [ + "ArialNarrow-BoldItalic", + { alias: "ArialNarrow", style: fn, fallback: "Helvetica-BoldOblique" }, + ], + [ + "Calibri", + { local: ["Calibri", "Carlito"], style: hn, fallback: "Helvetica" }, + ], + [ + "Calibri-Bold", + { alias: "Calibri", style: un, fallback: "Helvetica-Bold" }, + ], + [ + "Calibri-Italic", + { alias: "Calibri", style: dn, fallback: "Helvetica-Oblique" }, + ], + [ + "Calibri-BoldItalic", + { alias: "Calibri", style: fn, fallback: "Helvetica-BoldOblique" }, + ], + ["Wingdings", { local: ["Wingdings", "URW Dingbats"], style: hn }], + ["Wingdings-Regular", { alias: "Wingdings" }], + ["Wingdings-Bold", { alias: "Wingdings" }], + ]), + pn = 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: a, fallback: r, style: i, ultimate: n }, + s, + o, + c = !0, + l = !0, + h = "", +) { + const u = { style: null, ultimate: null }; + if (t) { + const e = h ? ` ${h}` : ""; + for (const a of t) s.push(`local(${a}${e})`); + } + if (e) { + const t = gn.get(e), + n = + h || + (function getStyleToAppend(e) { + switch (e) { + case un: + return "Bold"; + case dn: + return "Italic"; + case fn: + return "Bold Italic"; + default: + if ("bold" === e?.weight) return "Bold"; + if ("italic" === e?.style) return "Italic"; + } + return ""; + })(i); + Object.assign(u, generateFont(t, s, o, c && !r, l && !a, n)); + } + i && (u.style = i); + n && (u.ultimate = n); + if (c && r) { + const e = gn.get(r), + { ultimate: t } = generateFont(e, s, o, c, l && !a, h); + u.ultimate ||= t; + } + l && a && o && s.push(`url(${o}${a})`); + return u; +} +function getFontSubstitution(e, t, a, r, i, n) { + if (r.startsWith("InvalidPDFjsFont_")) return null; + ("TrueType" !== n && "Type1" !== n) || + !/^[A-Z]{6}\+/.test(r) || + (r = r.slice(7)); + const s = (r = normalizeFontName(r)); + let o = e.get(s); + if (o) return o; + let c = gn.get(r); + if (!c) + for (const [e, t] of pn) + if (r.startsWith(e)) { + r = `${t}${r.substring(e.length)}`; + c = gn.get(r); + break; + } + let l = !1; + if (!c) { + c = gn.get(i); + l = !0; + } + const h = `${t.getDocId()}_s${t.createFontId()}`; + if (!c) { + if (!validateFontName(r)) { + warn(`Cannot substitute the font because of its name: ${r}`); + e.set(s, null); + return null; + } + const t = /bold/gi.test(r), + a = /oblique|italic/gi.test(r), + i = (t && a && fn) || (t && un) || (a && dn) || hn; + o = { + css: `"${getFamilyName(r)}",${h}`, + guessFallback: !0, + loadedName: h, + baseFontName: r, + src: `local(${r})`, + style: i, + }; + e.set(s, o); + return o; + } + const u = []; + l && validateFontName(r) && u.push(`local(${r})`); + const { style: d, ultimate: f } = generateFont(c, u, a), + g = null === f, + p = g ? "" : `,${f}`; + o = { + css: `"${getFamilyName(r)}",${h}${p}`, + guessFallback: g, + loadedName: h, + baseFontName: r, + src: u.join(","), + style: d, + }; + e.set(s, o); + return o; +} +const mn = 3285377520, + bn = 4294901760, + yn = 65535; +class MurmurHash3_64 { + constructor(e) { + this.h1 = e ? 4294967295 & e : mn; + this.h2 = e ? 4294967295 & e : mn; + } + update(e) { + let t, a; + if ("string" == typeof e) { + t = new Uint8Array(2 * e.length); + a = 0; + for (let r = 0, i = e.length; r < i; r++) { + const i = e.charCodeAt(r); + if (i <= 255) t[a++] = i; + else { + t[a++] = i >>> 8; + t[a++] = 255 & i; + } + } + } else { + if (!ArrayBuffer.isView(e)) + throw new Error("Invalid data format, must be a string or TypedArray."); + t = e.slice(); + a = t.byteLength; + } + const r = a >> 2, + i = a - 4 * r, + n = new Uint32Array(t.buffer, 0, r); + let s = 0, + o = 0, + c = this.h1, + l = this.h2; + const h = 3432918353, + u = 461845907, + d = 11601, + f = 13715; + for (let e = 0; e < r; e++) + if (1 & e) { + s = n[e]; + s = ((s * h) & bn) | ((s * d) & yn); + s = (s << 15) | (s >>> 17); + s = ((s * u) & bn) | ((s * f) & yn); + c ^= s; + c = (c << 13) | (c >>> 19); + c = 5 * c + 3864292196; + } else { + o = n[e]; + o = ((o * h) & bn) | ((o * d) & yn); + o = (o << 15) | (o >>> 17); + o = ((o * u) & bn) | ((o * f) & yn); + l ^= o; + l = (l << 13) | (l >>> 19); + l = 5 * l + 3864292196; + } + s = 0; + switch (i) { + case 3: + s ^= t[4 * r + 2] << 16; + case 2: + s ^= t[4 * r + 1] << 8; + case 1: + s ^= t[4 * r]; + s = ((s * h) & bn) | ((s * d) & yn); + s = (s << 15) | (s >>> 17); + s = ((s * u) & bn) | ((s * f) & yn); + 1 & r ? (c ^= s) : (l ^= s); + } + this.h1 = c; + this.h2 = l; + } + hexdigest() { + let e = this.h1, + t = this.h2; + e ^= t >>> 1; + e = ((3981806797 * e) & bn) | ((36045 * e) & yn); + t = + ((4283543511 * t) & bn) | + (((2950163797 * ((t << 16) | (e >>> 16))) & bn) >>> 16); + e ^= t >>> 1; + e = ((444984403 * e) & bn) | ((60499 * e) & yn); + t = + ((3301882366 * t) & bn) | + (((3120437893 * ((t << 16) | (e >>> 16))) & bn) >>> 16); + e ^= t >>> 1; + return ( + (e >>> 0).toString(16).padStart(8, "0") + + (t >>> 0).toString(16).padStart(8, "0") + ); + } +} +function resizeImageMask(e, t, a, r, i, n) { + const s = i * n; + let o; + o = + t <= 8 + ? new Uint8Array(s) + : t <= 16 + ? new Uint16Array(s) + : new Uint32Array(s); + const c = a / i, + l = r / n; + let h, + u, + d, + f, + g = 0; + const p = new Uint16Array(i), + m = a; + for (h = 0; h < i; h++) p[h] = Math.floor(h * c); + for (h = 0; h < n; h++) { + d = Math.floor(h * l) * m; + for (u = 0; u < i; u++) { + f = d + p[u]; + o[g++] = e[f]; + } + } + return o; +} +class PDFImage { + constructor({ + xref: e, + res: t, + image: a, + isInline: r = !1, + smask: i = null, + mask: n = null, + isMask: s = !1, + pdfFunctionFactory: o, + globalColorSpaceCache: c, + localColorSpaceCache: l, + }) { + this.image = a; + const h = a.dict, + u = h.get("F", "Filter"); + let d; + if (u instanceof Name) d = u.name; + else if (Array.isArray(u)) { + const t = e.fetchIfRef(u[0]); + t instanceof Name && (d = t.name); + } + switch (d) { + case "JPXDecode": + ({ + width: a.width, + height: a.height, + componentsCount: a.numComps, + bitsPerComponent: a.bitsPerComponent, + } = JpxImage.parseImageProperties(a.stream)); + a.stream.reset(); + const e = ImageResizer.getReducePowerForJPX( + a.width, + a.height, + a.numComps, + ); + this.jpxDecoderOptions = { + numComponents: 0, + isIndexedColormap: !1, + smaskInData: h.has("SMaskInData"), + reducePower: e, + }; + if (e) { + const t = 2 ** e; + a.width = Math.ceil(a.width / t); + a.height = Math.ceil(a.height / t); + } + break; + case "JBIG2Decode": + a.bitsPerComponent = 1; + a.numComps = 1; + } + let f = h.get("W", "Width"), + g = h.get("H", "Height"); + if ( + Number.isInteger(a.width) && + a.width > 0 && + Number.isInteger(a.height) && + a.height > 0 && + (a.width !== f || a.height !== g) + ) { + warn( + "PDFImage - using the Width/Height of the image data, rather than the image dictionary.", + ); + f = a.width; + g = a.height; + } else { + const e = "number" == typeof f && f > 0, + t = "number" == typeof g && g > 0; + if (!e || !t) { + if (!a.fallbackDims) + throw new FormatError(`Invalid image width: ${f} or height: ${g}`); + warn( + "PDFImage - using the Width/Height of the parent image, for SMask/Mask data.", + ); + e || (f = a.fallbackDims.width); + t || (g = a.fallbackDims.height); + } + } + this.width = f; + this.height = g; + this.interpolate = h.get("I", "Interpolate"); + this.imageMask = h.get("IM", "ImageMask") || !1; + this.matte = h.get("Matte") || !1; + let p = a.bitsPerComponent; + if (!p) { + p = h.get("BPC", "BitsPerComponent"); + if (!p) { + if (!this.imageMask) + throw new FormatError( + `Bits per component missing in image: ${this.imageMask}`, + ); + p = 1; + } + } + this.bpc = p; + if (!this.imageMask) { + let i = h.getRaw("CS") || h.getRaw("ColorSpace"); + const n = !!i; + if (n) + this.jpxDecoderOptions?.smaskInData && (i = Name.get("DeviceRGBA")); + else if (this.jpxDecoderOptions) i = Name.get("DeviceRGBA"); + else + switch (a.numComps) { + case 1: + i = Name.get("DeviceGray"); + break; + case 3: + i = Name.get("DeviceRGB"); + break; + case 4: + i = Name.get("DeviceCMYK"); + break; + default: + throw new Error( + `Images with ${a.numComps} color components not supported.`, + ); + } + this.colorSpace = ColorSpaceUtils.parse({ + cs: i, + xref: e, + resources: r ? t : null, + pdfFunctionFactory: o, + globalColorSpaceCache: c, + localColorSpaceCache: l, + }); + this.numComps = this.colorSpace.numComps; + if (this.jpxDecoderOptions) { + this.jpxDecoderOptions.numComponents = n ? this.numComps : 0; + this.jpxDecoderOptions.isIndexedColormap = + "Indexed" === this.colorSpace.name; + } + } + this.decode = h.getArray("D", "Decode"); + this.needsDecode = !1; + if ( + this.decode && + ((this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, p)) || + (s && !ColorSpace.isDefaultDecode(this.decode, 1))) + ) { + this.needsDecode = !0; + const e = (1 << p) - 1; + this.decodeCoefficients = []; + this.decodeAddends = []; + const t = "Indexed" === this.colorSpace?.name; + for (let a = 0, r = 0; a < this.decode.length; a += 2, ++r) { + const i = this.decode[a], + n = this.decode[a + 1]; + this.decodeCoefficients[r] = t ? (n - i) / e : n - i; + this.decodeAddends[r] = t ? i : e * i; + } + } + if (i) { + i.fallbackDims ??= { width: f, height: g }; + this.smask = new PDFImage({ + xref: e, + res: t, + image: i, + isInline: r, + pdfFunctionFactory: o, + globalColorSpaceCache: c, + localColorSpaceCache: l, + }); + } else if (n) + if (n instanceof BaseStream) { + if (n.dict.get("IM", "ImageMask")) { + n.fallbackDims ??= { width: f, height: g }; + this.mask = new PDFImage({ + xref: e, + res: t, + image: n, + isInline: r, + isMask: !0, + pdfFunctionFactory: o, + globalColorSpaceCache: c, + localColorSpaceCache: l, + }); + } else warn("Ignoring /Mask in image without /ImageMask."); + } else this.mask = n; + } + static async buildImage({ + xref: e, + res: t, + image: a, + isInline: r = !1, + pdfFunctionFactory: i, + globalColorSpaceCache: n, + localColorSpaceCache: s, + }) { + const o = a; + let c = null, + l = null; + const h = a.dict.get("SMask"), + u = a.dict.get("Mask"); + h + ? h instanceof BaseStream + ? (c = h) + : warn("Unsupported /SMask format.") + : u && + (u instanceof BaseStream || Array.isArray(u) + ? (l = u) + : warn("Unsupported /Mask format.")); + return new PDFImage({ + xref: e, + res: t, + image: o, + isInline: r, + smask: c, + mask: l, + pdfFunctionFactory: i, + globalColorSpaceCache: n, + localColorSpaceCache: s, + }); + } + static async createMask({ image: e, isOffscreenCanvasSupported: t = !1 }) { + const { dict: a } = e, + r = a.get("W", "Width"), + i = a.get("H", "Height"), + n = a.get("I", "Interpolate"), + s = a.getArray("D", "Decode"), + o = s?.[0] > 0, + c = ((r + 7) >> 3) * i, + l = e.getBytes(c), + h = 1 === r && 1 === i && o === (0 === l.length || !!(128 & l[0])); + if (h) return { isSingleOpaquePixel: h }; + if (t) { + if (ImageResizer.needsToBeResized(r, i)) { + const e = new Uint8ClampedArray(r * i * 4); + convertBlackAndWhiteToRGBA({ + src: l, + dest: e, + width: r, + height: i, + nonBlackColor: 0, + inverseDecode: o, + }); + return ImageResizer.createImage({ + kind: O, + data: e, + width: r, + height: i, + interpolate: n, + }); + } + const e = new OffscreenCanvas(r, i), + t = e.getContext("2d"), + a = t.createImageData(r, i); + convertBlackAndWhiteToRGBA({ + src: l, + dest: a.data, + width: r, + height: i, + nonBlackColor: 0, + inverseDecode: o, + }); + t.putImageData(a, 0, 0); + return { + data: null, + width: r, + height: i, + interpolate: n, + bitmap: e.transferToImageBitmap(), + }; + } + const u = l.byteLength; + let d; + if (e instanceof DecodeStream && (!o || c === u)) d = l; + else if (o) { + d = new Uint8Array(c); + d.set(l); + d.fill(255, u); + } else d = new Uint8Array(l); + if (o) for (let e = 0; e < u; e++) d[e] ^= 255; + return { data: d, width: r, height: i, interpolate: n }; + } + get drawWidth() { + return Math.max(this.width, this.smask?.width || 0, this.mask?.width || 0); + } + get drawHeight() { + return Math.max( + this.height, + this.smask?.height || 0, + this.mask?.height || 0, + ); + } + decodeBuffer(e) { + const t = this.bpc, + a = this.numComps, + r = this.decodeAddends, + i = this.decodeCoefficients, + n = (1 << t) - 1; + let s, o; + if (1 === t) { + for (s = 0, o = e.length; s < o; s++) e[s] = +!e[s]; + return; + } + let c = 0; + for (s = 0, o = this.width * this.height; s < o; s++) + for (let t = 0; t < a; t++) { + e[c] = MathClamp(r[t] + e[c] * i[t], 0, n); + c++; + } + } + getComponents(e) { + const t = this.bpc; + if (8 === t) return e; + const a = this.width, + r = this.height, + i = this.numComps, + n = a * r * i; + let s, + o = 0; + s = + t <= 8 + ? new Uint8Array(n) + : t <= 16 + ? new Uint16Array(n) + : new Uint32Array(n); + const c = a * i, + l = (1 << t) - 1; + let h, + u, + d = 0; + if (1 === t) { + let t, a, i; + for (let n = 0; n < r; n++) { + a = d + (-8 & c); + i = d + c; + for (; d < a; ) { + u = e[o++]; + s[d] = (u >> 7) & 1; + s[d + 1] = (u >> 6) & 1; + s[d + 2] = (u >> 5) & 1; + s[d + 3] = (u >> 4) & 1; + s[d + 4] = (u >> 3) & 1; + s[d + 5] = (u >> 2) & 1; + s[d + 6] = (u >> 1) & 1; + s[d + 7] = 1 & u; + d += 8; + } + if (d < i) { + u = e[o++]; + t = 128; + for (; d < i; ) { + s[d++] = +!!(u & t); + t >>= 1; + } + } + } + } else { + let a = 0; + u = 0; + for (d = 0, h = n; d < h; ++d) { + if (d % c === 0) { + u = 0; + a = 0; + } + for (; a < t; ) { + u = (u << 8) | e[o++]; + a += 8; + } + const r = a - t; + let i = u >> r; + i < 0 ? (i = 0) : i > l && (i = l); + s[d] = i; + u &= (1 << r) - 1; + a = r; + } + } + return s; + } + async fillOpacity(e, t, a, r, i) { + const n = this.smask, + s = this.mask; + let o, c, l, h, u, d; + if (n) { + c = n.width; + l = n.height; + o = new Uint8ClampedArray(c * l); + await n.fillGrayBuffer(o); + (c === t && l === a) || (o = resizeImageMask(o, n.bpc, c, l, t, a)); + } else if (s) + if (s instanceof PDFImage) { + c = s.width; + l = s.height; + o = new Uint8ClampedArray(c * l); + s.numComps = 1; + await s.fillGrayBuffer(o); + for (h = 0, u = c * l; h < u; ++h) o[h] = 255 - o[h]; + (c === t && l === a) || (o = resizeImageMask(o, s.bpc, c, l, t, a)); + } else { + if (!Array.isArray(s)) throw new FormatError("Unknown mask format."); + { + o = new Uint8ClampedArray(t * a); + const e = this.numComps; + for (h = 0, u = t * a; h < u; ++h) { + let t = 0; + const a = h * e; + for (d = 0; d < e; ++d) { + const e = i[a + d], + r = 2 * d; + if (e < s[r] || e > s[r + 1]) { + t = 255; + break; + } + } + o[h] = t; + } + } + } + if (o) for (h = 0, d = 3, u = t * r; h < u; ++h, d += 4) e[d] = o[h]; + else for (h = 0, d = 3, u = t * r; h < u; ++h, d += 4) e[d] = 255; + } + undoPreblend(e, t, a) { + const r = this.smask?.matte; + if (!r) return; + const i = this.colorSpace.getRgb(r, 0), + n = i[0], + s = i[1], + o = i[2], + c = t * a * 4; + for (let t = 0; t < c; t += 4) { + const a = e[t + 3]; + if (0 === a) { + e[t] = 255; + e[t + 1] = 255; + e[t + 2] = 255; + continue; + } + const r = 255 / a; + e[t] = (e[t] - n) * r + n; + e[t + 1] = (e[t + 1] - s) * r + s; + e[t + 2] = (e[t + 2] - o) * r + o; + } + } + async createImageData(e = !1, t = !1) { + const a = this.drawWidth, + r = this.drawHeight, + i = { + width: a, + height: r, + interpolate: this.interpolate, + kind: 0, + data: null, + }, + n = this.numComps, + s = this.width, + o = this.height, + c = this.bpc, + l = (s * n * c + 7) >> 3, + h = t && ImageResizer.needsToBeResized(a, r); + if (!this.smask && !this.mask && "DeviceRGBA" === this.colorSpace.name) { + i.kind = O; + const e = (i.data = await this.getImageBytes(o * s * 4, {})); + return t + ? h + ? ImageResizer.createImage(i, !1) + : this.createBitmap(O, a, r, e) + : i; + } + if (!e) { + let e; + "DeviceGray" === this.colorSpace.name && 1 === c + ? (e = F) + : "DeviceRGB" !== this.colorSpace.name || + 8 !== c || + this.needsDecode || + (e = T); + if (e && !this.smask && !this.mask && a === s && r === o) { + const n = await this.#he(s, o); + if (n) return n; + const c = await this.getImageBytes(o * l, {}); + if (t) + return h + ? ImageResizer.createImage( + { + data: c, + kind: e, + width: a, + height: r, + interpolate: this.interpolate, + }, + this.needsDecode, + ) + : this.createBitmap(e, s, o, c); + i.kind = e; + i.data = c; + if (this.needsDecode) { + assert( + e === F, + "PDFImage.createImageData: The image must be grayscale.", + ); + const t = i.data; + for (let e = 0, a = t.length; e < a; e++) t[e] ^= 255; + } + return i; + } + if ( + this.image instanceof JpegStream && + !this.smask && + !this.mask && + !this.needsDecode + ) { + let e = o * l; + if (t && !h) { + let t = !1; + switch (this.colorSpace.name) { + case "DeviceGray": + e *= 4; + t = !0; + break; + case "DeviceRGB": + e = (e / 3) * 4; + t = !0; + break; + case "DeviceCMYK": + t = !0; + } + if (t) { + const t = await this.#he(a, r); + if (t) return t; + const i = await this.getImageBytes(e, { + drawWidth: a, + drawHeight: r, + forceRGBA: !0, + }); + return this.createBitmap(O, a, r, i); + } + } else + switch (this.colorSpace.name) { + case "DeviceGray": + e *= 3; + case "DeviceRGB": + case "DeviceCMYK": + i.kind = T; + i.data = await this.getImageBytes(e, { + drawWidth: a, + drawHeight: r, + forceRGB: !0, + }); + return h ? ImageResizer.createImage(i) : i; + } + } + } + const u = await this.getImageBytes(o * l, { internal: !0 }), + d = 0 | (((u.length / l) * r) / o), + f = this.getComponents(u); + let g, p, m, b, y, w; + if (t && !h) { + m = new OffscreenCanvas(a, r); + b = m.getContext("2d"); + y = b.createImageData(a, r); + w = y.data; + } + i.kind = O; + if (e || this.smask || this.mask) { + (t && !h) || (w = new Uint8ClampedArray(a * r * 4)); + g = 1; + p = !0; + await this.fillOpacity(w, a, r, d, f); + } else { + if (!t || h) { + i.kind = T; + w = new Uint8ClampedArray(a * r * 3); + g = 0; + } else { + new Uint32Array(w.buffer).fill( + FeatureTest.isLittleEndian ? 4278190080 : 255, + ); + g = 1; + } + p = !1; + } + this.needsDecode && this.decodeBuffer(f); + this.colorSpace.fillRgb(w, s, o, a, r, d, c, f, g); + p && this.undoPreblend(w, a, d); + if (t && !h) { + b.putImageData(y, 0, 0); + return { + data: null, + width: a, + height: r, + bitmap: m.transferToImageBitmap(), + interpolate: this.interpolate, + }; + } + i.data = w; + return h ? ImageResizer.createImage(i) : i; + } + async fillGrayBuffer(e) { + const t = this.numComps; + if (1 !== t) + throw new FormatError(`Reading gray scale from a color image: ${t}`); + const a = this.width, + r = this.height, + i = this.bpc, + n = (a * t * i + 7) >> 3, + s = await this.getImageBytes(r * n, { internal: !0 }), + o = this.getComponents(s); + let c, l; + if (1 === i) { + l = a * r; + if (this.needsDecode) for (c = 0; c < l; ++c) e[c] = (o[c] - 1) & 255; + else for (c = 0; c < l; ++c) e[c] = 255 & -o[c]; + return; + } + this.needsDecode && this.decodeBuffer(o); + l = a * r; + const h = 255 / ((1 << i) - 1); + for (c = 0; c < l; ++c) e[c] = h * o[c]; + } + createBitmap(e, t, a, r) { + const i = new OffscreenCanvas(t, a), + n = i.getContext("2d"); + let s; + if (e === O) s = new ImageData(r, t, a); + else { + s = n.createImageData(t, a); + convertToRGBA({ + kind: e, + src: r, + dest: new Uint32Array(s.data.buffer), + width: t, + height: a, + inverseDecode: this.needsDecode, + }); + } + n.putImageData(s, 0, 0); + return { + data: null, + width: t, + height: a, + bitmap: i.transferToImageBitmap(), + interpolate: this.interpolate, + }; + } + async #he(e, t) { + const a = await this.image.getTransferableImage(); + return a + ? { + data: null, + width: e, + height: t, + bitmap: a, + interpolate: this.interpolate, + } + : null; + } + async getImageBytes( + e, + { + drawWidth: t, + drawHeight: a, + forceRGBA: r = !1, + forceRGB: i = !1, + internal: n = !1, + }, + ) { + this.image.reset(); + this.image.drawWidth = t || this.width; + this.image.drawHeight = a || this.height; + this.image.forceRGBA = !!r; + this.image.forceRGB = !!i; + const s = await this.image.getImageData(e, this.jpxDecoderOptions); + if (n || this.image instanceof DecodeStream) return s; + assert( + s instanceof Uint8Array, + 'PDFImage.getImageBytes: Unsupported "imageBytes" type.', + ); + return new Uint8Array(s); + } +} +const wn = Object.freeze({ + maxImageSize: -1, + disableFontFace: !1, + ignoreErrors: !1, + isEvalSupported: !0, + isOffscreenCanvasSupported: !1, + isImageDecoderSupported: !1, + canvasMaxAreaInBytes: -1, + fontExtraProperties: !1, + useSystemFonts: !0, + useWasm: !0, + useWorkerFetch: !0, + cMapUrl: null, + iccUrl: null, + standardFontDataUrl: null, + wasmUrl: null, + }), + xn = 1, + Sn = 2, + An = Promise.resolve(); +function normalizeBlendMode(e, t = !1) { + if (Array.isArray(e)) { + for (const t of e) { + const e = normalizeBlendMode(t, !0); + if (e) return e; + } + warn(`Unsupported blend mode Array: ${e}`); + return "source-over"; + } + if (!(e instanceof Name)) return t ? null : "source-over"; + switch (e.name) { + case "Normal": + case "Compatible": + return "source-over"; + case "Multiply": + return "multiply"; + case "Screen": + return "screen"; + case "Overlay": + return "overlay"; + case "Darken": + return "darken"; + case "Lighten": + return "lighten"; + case "ColorDodge": + return "color-dodge"; + case "ColorBurn": + return "color-burn"; + case "HardLight": + return "hard-light"; + case "SoftLight": + return "soft-light"; + case "Difference": + return "difference"; + case "Exclusion": + return "exclusion"; + case "Hue": + return "hue"; + case "Saturation": + return "saturation"; + case "Color": + return "color"; + case "Luminosity": + return "luminosity"; + } + if (t) return null; + warn(`Unsupported blend mode: ${e.name}`); + return "source-over"; +} +function addCachedImageOps( + e, + { objId: t, fn: a, args: r, optionalContent: i, hasMask: n }, +) { + t && e.addDependency(t); + e.addImageOps(a, r, i, n); + a === Nt && r[0]?.count > 0 && r[0].count++; +} +class TimeSlotManager { + static TIME_SLOT_DURATION_MS = 20; + static CHECK_TIME_EVERY = 100; + constructor() { + this.reset(); + } + check() { + if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) return !1; + this.checked = 0; + return this.endTime <= Date.now(); + } + reset() { + this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS; + this.checked = 0; + } +} +class PartialEvaluator { + constructor({ + xref: e, + handler: t, + pageIndex: a, + idFactory: r, + fontCache: i, + builtInCMapCache: n, + standardFontDataCache: s, + globalColorSpaceCache: o, + globalImageCache: c, + systemFontCache: l, + options: h = null, + }) { + this.xref = e; + this.handler = t; + this.pageIndex = a; + this.idFactory = r; + this.fontCache = i; + this.builtInCMapCache = n; + this.standardFontDataCache = s; + this.globalColorSpaceCache = o; + this.globalImageCache = c; + this.systemFontCache = l; + this.options = h || wn; + this.type3FontRefs = null; + this._regionalImageCache = new RegionalImageCache(); + this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this); + } + get _pdfFunctionFactory() { + return shadow( + this, + "_pdfFunctionFactory", + new PDFFunctionFactory({ + xref: this.xref, + isEvalSupported: this.options.isEvalSupported, + }), + ); + } + get parsingType3Font() { + return !!this.type3FontRefs; + } + clone(e = null) { + const t = Object.create(this); + t.options = Object.assign(Object.create(null), this.options, e); + return t; + } + hasBlendModes(e, t) { + if (!(e instanceof Dict)) return !1; + if (e.objId && t.has(e.objId)) return !1; + const a = new RefSet(t); + e.objId && a.put(e.objId); + const r = [e], + i = this.xref; + for (; r.length; ) { + const e = r.shift(), + t = e.get("ExtGState"); + if (t instanceof Dict) + for (let e of t.getRawValues()) { + if (e instanceof Ref) { + if (a.has(e)) continue; + try { + e = i.fetch(e); + } catch (t) { + a.put(e); + info(`hasBlendModes - ignoring ExtGState: "${t}".`); + continue; + } + } + if (!(e instanceof Dict)) continue; + e.objId && a.put(e.objId); + const t = e.get("BM"); + if (t instanceof Name) { + if ("Normal" !== t.name) return !0; + } else if (void 0 !== t && Array.isArray(t)) + for (const e of t) + if (e instanceof Name && "Normal" !== e.name) return !0; + } + const n = e.get("XObject"); + if (n instanceof Dict) + for (let e of n.getRawValues()) { + if (e instanceof Ref) { + if (a.has(e)) continue; + try { + e = i.fetch(e); + } catch (t) { + a.put(e); + info(`hasBlendModes - ignoring XObject: "${t}".`); + continue; + } + } + if (!(e instanceof BaseStream)) continue; + e.dict.objId && a.put(e.dict.objId); + const t = e.dict.get("Resources"); + if (t instanceof Dict && (!t.objId || !a.has(t.objId))) { + r.push(t); + t.objId && a.put(t.objId); + } + } + } + for (const e of a) t.put(e); + return !1; + } + async fetchBuiltInCMap(e) { + const t = this.builtInCMapCache.get(e); + if (t) return t; + let a; + a = this.options.useWorkerFetch + ? { + cMapData: await fetchBinaryData(`${this.options.cMapUrl}${e}.bcmap`), + isCompressed: !0, + } + : await this.handler.sendWithPromise("FetchBinaryData", { + type: "cMapReaderFactory", + name: e, + }); + this.builtInCMapCache.set(e, a); + return a; + } + async fetchStandardFontData(e) { + const t = this.standardFontDataCache.get(e); + if (t) return new Stream(t); + if (this.options.useSystemFonts && "Symbol" !== e && "ZapfDingbats" !== e) + return null; + const a = _r()[e]; + let r; + try { + r = this.options.useWorkerFetch + ? await fetchBinaryData(`${this.options.standardFontDataUrl}${a}`) + : await this.handler.sendWithPromise("FetchBinaryData", { + type: "standardFontDataFactory", + filename: a, + }); + } catch (e) { + warn(e); + return null; + } + this.standardFontDataCache.set(e, r); + return new Stream(r); + } + async buildFormXObject(e, t, a, r, i, n, s, o) { + const { dict: c } = t, + l = lookupMatrix(c.getArray("Matrix"), null), + h = lookupNormalRect(c.getArray("BBox"), null); + let u, d; + c.has("OC") && (u = await this.parseMarkedContentProps(c.get("OC"), e)); + void 0 !== u && r.addOp(Ct, ["OC", u]); + const f = c.get("Group"); + if (f) { + d = { matrix: l, bbox: h, smask: a, isolated: !1, knockout: !1 }; + let t = null; + if (isName(f.get("S"), "Transparency")) { + d.isolated = f.get("I") || !1; + d.knockout = f.get("K") || !1; + if (f.has("CS")) { + const a = this._getColorSpace(f.getRaw("CS"), e, s); + t = a instanceof ColorSpace ? a : await this._handleColorSpace(a); + } + } + if (a?.backdrop) { + t ||= ColorSpaceUtils.rgb; + a.backdrop = t.getRgbHex(a.backdrop, 0); + } + r.addOp(Mt, [d]); + } + const g = [ + l && new Float32Array(l), + (!f && h && new Float32Array(h)) || null, + ]; + r.addOp(Tt, g); + const p = c.get("Resources"); + await this.getOperatorList({ + stream: t, + task: i, + resources: p instanceof Dict ? p : e, + operatorList: r, + initialState: n, + prevRefs: o, + }); + r.addOp(Ot, []); + f && r.addOp(Dt, [d]); + void 0 !== u && r.addOp(vt, []); + } + _sendImgData(e, t, a = !1) { + const r = t ? [t.bitmap || t.data.buffer] : null; + return this.parsingType3Font || a + ? this.handler.send("commonobj", [e, "Image", t], r) + : this.handler.send("obj", [e, this.pageIndex, "Image", t], r); + } + async buildPaintImageXObject({ + resources: e, + image: t, + isInline: a = !1, + operatorList: r, + cacheKey: i, + localImageCache: n, + localColorSpaceCache: s, + }) { + const { + maxImageSize: o, + ignoreErrors: c, + isOffscreenCanvasSupported: l, + } = this.options, + { dict: h } = t, + u = h.objId, + d = h.get("W", "Width"), + f = h.get("H", "Height"); + if (!d || "number" != typeof d || !f || "number" != typeof f) { + warn("Image dimensions are missing, or not numbers."); + return; + } + if (-1 !== o && d * f > o) { + const e = "Image exceeded maximum allowed size and was removed."; + if (!c) throw new Error(e); + warn(e); + return; + } + let g; + h.has("OC") && (g = await this.parseMarkedContentProps(h.get("OC"), e)); + let p, m, b; + if (h.get("IM", "ImageMask") || !1) { + p = await PDFImage.createMask({ + image: t, + isOffscreenCanvasSupported: l && !this.parsingType3Font, + }); + if (p.isSingleOpaquePixel) { + m = Xt; + b = []; + r.addImageOps(m, b, g); + if (i) { + const e = { fn: m, args: b, optionalContent: g }; + n.set(i, u, e); + u && this._regionalImageCache.set(null, u, e); + } + return; + } + if (this.parsingType3Font) { + b = (function compileType3Glyph({ data: e, width: t, height: a }) { + if (t > 1e3 || a > 1e3) return null; + const r = new Uint8Array([ + 0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0, + ]), + i = t + 1, + n = new Uint8Array(i * (a + 1)); + let s, o, c; + const l = (t + 7) & -8, + h = new Uint8Array(l * a); + let u = 0; + for (const t of e) { + let e = 128; + for (; e > 0; ) { + h[u++] = t & e ? 0 : 255; + e >>= 1; + } + } + let d = 0; + u = 0; + if (0 !== h[u]) { + n[0] = 1; + ++d; + } + for (o = 1; o < t; o++) { + if (h[u] !== h[u + 1]) { + n[o] = h[u] ? 2 : 1; + ++d; + } + u++; + } + if (0 !== h[u]) { + n[o] = 2; + ++d; + } + for (s = 1; s < a; s++) { + u = s * l; + c = s * i; + if (h[u - l] !== h[u]) { + n[c] = h[u] ? 1 : 8; + ++d; + } + let e = (h[u] ? 4 : 0) + (h[u - l] ? 8 : 0); + for (o = 1; o < t; o++) { + e = (e >> 2) + (h[u + 1] ? 4 : 0) + (h[u - l + 1] ? 8 : 0); + if (r[e]) { + n[c + o] = r[e]; + ++d; + } + u++; + } + if (h[u - l] !== h[u]) { + n[c + o] = h[u] ? 2 : 4; + ++d; + } + if (d > 1e3) return null; + } + u = l * (a - 1); + c = s * i; + if (0 !== h[u]) { + n[c] = 8; + ++d; + } + for (o = 1; o < t; o++) { + if (h[u] !== h[u + 1]) { + n[c + o] = h[u] ? 4 : 8; + ++d; + } + u++; + } + if (0 !== h[u]) { + n[c + o] = 4; + ++d; + } + if (d > 1e3) return null; + const f = new Int32Array([0, i, -1, 0, -i, 0, 0, 0, 1]), + g = [], + { + a: p, + b: m, + c: b, + d: y, + e: w, + f: x, + } = new DOMMatrix().scaleSelf(1 / t, -1 / a).translateSelf(0, -a); + for (s = 0; d && s <= a; s++) { + let e = s * i; + const a = e + t; + for (; e < a && !n[e]; ) e++; + if (e === a) continue; + let r = e % i, + o = s; + g.push(zt, p * r + b * o + w, m * r + y * o + x); + const c = e; + let l = n[e]; + do { + const t = f[l]; + do { + e += t; + } while (!n[e]); + const a = n[e]; + if (5 !== a && 10 !== a) { + l = a; + n[e] = 0; + } else { + l = a & ((51 * l) >> 4); + n[e] &= (l >> 2) | (l << 2); + } + r = e % i; + o = (e / i) | 0; + g.push($t, p * r + b * o + w, m * r + y * o + x); + n[e] || --d; + } while (c !== e); + --s; + } + return [Gt, [new Float32Array(g)], new Float32Array([0, 0, t, a])]; + })(p); + if (b) { + r.addImageOps(qt, b, g); + return; + } + warn("Cannot compile Type3 glyph."); + r.addImageOps(Nt, [p], g); + return; + } + const e = `mask_${this.idFactory.createObjId()}`; + r.addDependency(e); + p.dataLen = p.bitmap ? p.width * p.height * 4 : p.data.length; + this._sendImgData(e, p); + m = Nt; + b = [ + { + data: e, + width: p.width, + height: p.height, + interpolate: p.interpolate, + count: 1, + }, + ]; + r.addImageOps(m, b, g); + if (i) { + const t = { objId: e, fn: m, args: b, optionalContent: g }; + n.set(i, u, t); + u && this._regionalImageCache.set(null, u, t); + } + return; + } + const y = h.has("SMask") || h.has("Mask"); + if (a && d + f < 200 && !y) { + try { + const i = new PDFImage({ + xref: this.xref, + res: e, + image: t, + isInline: a, + pdfFunctionFactory: this._pdfFunctionFactory, + globalColorSpaceCache: this.globalColorSpaceCache, + localColorSpaceCache: s, + }); + p = await i.createImageData(!0, !1); + r.addImageOps(Lt, [p], g); + } catch (e) { + const t = `Unable to decode inline image: "${e}".`; + if (!c) throw new Error(t); + warn(t); + } + return; + } + let w = `img_${this.idFactory.createObjId()}`, + x = !1, + S = null; + if (this.parsingType3Font) w = `${this.idFactory.getDocId()}_type3_${w}`; + else if (i && u) { + x = this.globalImageCache.shouldCache(u, this.pageIndex); + if (x) { + assert(!a, "Cannot cache an inline image globally."); + w = `${this.idFactory.getDocId()}_${w}`; + } + } + r.addDependency(w); + m = Pt; + b = [w, d, f]; + r.addImageOps(m, b, g, y); + if (x) { + S = { + objId: w, + fn: m, + args: b, + optionalContent: g, + hasMask: y, + byteSize: 0, + }; + if (this.globalImageCache.hasDecodeFailed(u)) { + this.globalImageCache.setData(u, S); + this._sendImgData(w, null, x); + return; + } + if (d * f > 25e4 || y) { + const e = await this.handler.sendWithPromise("commonobj", [ + w, + "CopyLocalImage", + { imageRef: u }, + ]); + if (e) { + this.globalImageCache.setData(u, S); + this.globalImageCache.addByteSize(u, e); + return; + } + } + } + PDFImage.buildImage({ + xref: this.xref, + res: e, + image: t, + isInline: a, + pdfFunctionFactory: this._pdfFunctionFactory, + globalColorSpaceCache: this.globalColorSpaceCache, + localColorSpaceCache: s, + }) + .then(async (e) => { + p = await e.createImageData(!1, l); + p.dataLen = p.bitmap ? p.width * p.height * 4 : p.data.length; + p.ref = u; + x && this.globalImageCache.addByteSize(u, p.dataLen); + return this._sendImgData(w, p, x); + }) + .catch((e) => { + warn(`Unable to decode image "${w}": "${e}".`); + u && this.globalImageCache.addDecodeFailed(u); + return this._sendImgData(w, null, x); + }); + if (i) { + const e = { objId: w, fn: m, args: b, optionalContent: g, hasMask: y }; + n.set(i, u, e); + if (u) { + this._regionalImageCache.set(null, u, e); + if (x) { + assert(S, "The global cache-data must be available."); + this.globalImageCache.setData(u, S); + } + } + } + } + handleSMask(e, t, a, r, i, n, s) { + const o = e.get("G"), + c = { subtype: e.get("S").name, backdrop: e.get("BC") }, + l = e.get("TR"); + if (isPDFFunction(l)) { + const e = this._pdfFunctionFactory.create(l), + t = new Uint8Array(256), + a = new Float32Array(1); + for (let r = 0; r < 256; r++) { + a[0] = r / 255; + e(a, 0, a, 0); + t[r] = (255 * a[0]) | 0; + } + c.transferMap = t; + } + return this.buildFormXObject( + t, + o, + c, + a, + r, + i.state.clone({ newPath: !0 }), + n, + s, + ); + } + handleTransferFunction(e) { + let t; + if (Array.isArray(e)) t = e; + else { + if (!isPDFFunction(e)) return null; + t = [e]; + } + const a = []; + let r = 0, + i = 0; + for (const e of t) { + const t = this.xref.fetchIfRef(e); + r++; + if (isName(t, "Identity")) { + a.push(null); + continue; + } + if (!isPDFFunction(t)) return null; + const n = this._pdfFunctionFactory.create(t), + s = new Uint8Array(256), + o = new Float32Array(1); + for (let e = 0; e < 256; e++) { + o[0] = e / 255; + n(o, 0, o, 0); + s[e] = (255 * o[0]) | 0; + } + a.push(s); + i++; + } + return (1 !== r && 4 !== r) || 0 === i ? null : a; + } + handleTilingType(e, t, a, r, i, n, s, o) { + const c = new OperatorList(), + l = Dict.merge({ xref: this.xref, dictArray: [i.get("Resources"), a] }); + return this.getOperatorList({ + stream: r, + task: s, + resources: l, + operatorList: c, + }) + .then(function () { + const a = c.getIR(), + r = getTilingPatternIR(a, i, t); + n.addDependencies(c.dependencies); + n.addOp(e, r); + i.objId && o.set(null, i.objId, { operatorListIR: a, dict: i }); + }) + .catch((e) => { + if (!(e instanceof AbortException)) { + if (!this.options.ignoreErrors) throw e; + warn(`handleTilingType - ignoring pattern: "${e}".`); + } + }); + } + async handleSetFont(e, t, a, r, i, n, s = null, o = null) { + const c = t?.[0] instanceof Name ? t[0].name : null, + l = await this.loadFont(c, a, e, i, s, o); + l.font.isType3Font && r.addDependencies(l.type3Dependencies); + n.font = l.font; + l.send(this.handler); + return l.loadedName; + } + handleText(e, t) { + const a = t.font, + r = a.charsToGlyphs(e); + if (a.data) { + (!!(t.textRenderingMode & v) || + "Pattern" === t.fillColorSpace.name || + a.disableFontFace) && + PartialEvaluator.buildFontPaths(a, r, this.handler, this.options); + } + return r; + } + 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: a, + cacheKey: r, + task: i, + stateManager: n, + localGStateCache: s, + localColorSpaceCache: o, + seenRefs: c, + }) { + const l = t.objId; + let h = !0; + const u = []; + let d = Promise.resolve(); + for (const [r, s] of t) + switch (r) { + case "Type": + break; + case "LW": + if ("number" != typeof s) { + warn(`Invalid LW (line width): ${s}`); + break; + } + u.push([r, Math.abs(s)]); + break; + case "LC": + case "LJ": + case "ML": + case "D": + case "RI": + case "FL": + case "CA": + case "ca": + u.push([r, s]); + break; + case "Font": + h = !1; + d = d.then(() => + this.handleSetFont(e, null, s[0], a, i, n.state).then(function (e) { + a.addDependency(e); + u.push([r, [e, s[1]]]); + }), + ); + break; + case "BM": + u.push([r, normalizeBlendMode(s)]); + break; + case "SMask": + if (isName(s, "None")) { + u.push([r, !1]); + break; + } + if (s instanceof Dict) { + h = !1; + d = d.then(() => this.handleSMask(s, e, a, i, n, o, c)); + u.push([r, !0]); + } else warn("Unsupported SMask type"); + break; + case "TR": + const t = this.handleTransferFunction(s); + u.push([r, 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 " + r); + break; + default: + info("Unknown graphic state operator " + r); + } + await d; + u.length > 0 && a.addOp(be, [u]); + h && s.set(r, l, u); + } + loadFont(e, t, a, r, i = null, n = null) { + const errorFont = async () => + new TranslatedFont({ + loadedName: "g_font_error", + font: new ErrorFont(`Font "${e}" is not available.`), + dict: t, + }); + let s; + if (t) t instanceof Ref && (s = t); + else { + const t = a.get("Font"); + t && (s = t.getRaw(e)); + } + if (s) { + if (this.type3FontRefs?.has(s)) return errorFont(); + if (this.fontCache.has(s)) return this.fontCache.get(s); + try { + t = this.xref.fetchIfRef(s); + } 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 = i || PartialEvaluator.fallbackFontDict; + } + if (t.cacheKey && this.fontCache.has(t.cacheKey)) + return this.fontCache.get(t.cacheKey); + const { promise: o, resolve: c } = Promise.withResolvers(); + let l; + try { + l = this.preEvaluateFont(t); + l.cssFontInfo = n; + } catch (e) { + warn(`loadFont - preEvaluateFont failed: "${e}".`); + return errorFont(); + } + const { descriptor: h, hash: u } = l, + d = s instanceof Ref; + let f; + if (u && h instanceof Dict) { + const e = (h.fontAliases ||= Object.create(null)); + if (e[u]) { + const t = e[u].aliasRef; + if (d && t && this.fontCache.has(t)) { + this.fontCache.putAlias(s, t); + return this.fontCache.get(s); + } + } else e[u] = { fontID: this.idFactory.createFontId() }; + d && (e[u].aliasRef = s); + f = e[u].fontID; + } else f = this.idFactory.createFontId(); + assert(f?.startsWith("f"), 'The "fontID" must be (correctly) defined.'); + if (d) this.fontCache.put(s, o); + else { + t.cacheKey = `cacheKey_${f}`; + this.fontCache.put(t.cacheKey, o); + } + t.loadedName = `${this.idFactory.getDocId()}_${f}`; + this.translateFont(l) + .then(async (e) => { + const i = new TranslatedFont({ + loadedName: t.loadedName, + font: e, + dict: t, + }); + if (e.isType3Font) + try { + await i.loadType3Data(this, a, r); + } catch (e) { + throw new Error(`Type3 font load error: ${e}`); + } + c(i); + }) + .catch((e) => { + warn(`loadFont - translateFont failed: "${e}".`); + c( + new TranslatedFont({ + loadedName: t.loadedName, + font: new ErrorFont(e?.message), + dict: t, + }), + ); + }); + return o; + } + buildPath(e, t, a) { + const { pathMinMax: r, pathBuffer: i } = a; + switch (0 | e) { + case Ie: { + const e = (a.currentPointX = t[0]), + n = (a.currentPointY = t[1]), + s = t[2], + o = t[3], + c = e + s, + l = n + o; + 0 === s || 0 === o + ? i.push(zt, e, n, $t, c, l, Jt) + : i.push(zt, e, n, $t, c, n, $t, c, l, $t, e, l, Jt); + Util.rectBoundingBox(e, n, c, l, r); + break; + } + case Se: { + const e = (a.currentPointX = t[0]), + n = (a.currentPointY = t[1]); + i.push(zt, e, n); + Util.pointBoundingBox(e, n, r); + break; + } + case Ae: { + const e = (a.currentPointX = t[0]), + n = (a.currentPointY = t[1]); + i.push($t, e, n); + Util.pointBoundingBox(e, n, r); + break; + } + case ke: { + const e = a.currentPointX, + n = a.currentPointY, + [s, o, c, l, h, u] = t; + a.currentPointX = h; + a.currentPointY = u; + i.push(Vt, s, o, c, l, h, u); + Util.bezierBoundingBox(e, n, s, o, c, l, h, u, r); + break; + } + case Ce: { + const e = a.currentPointX, + n = a.currentPointY, + [s, o, c, l] = t; + a.currentPointX = c; + a.currentPointY = l; + i.push(Vt, e, n, s, o, c, l); + Util.bezierBoundingBox(e, n, e, n, s, o, c, l, r); + break; + } + case ve: { + const e = a.currentPointX, + n = a.currentPointY, + [s, o, c, l] = t; + a.currentPointX = c; + a.currentPointY = l; + i.push(Vt, s, o, c, l, c, l); + Util.bezierBoundingBox(e, n, s, o, c, l, c, l, r); + break; + } + case Fe: + i.push(Jt); + } + } + _getColorSpace(e, t, a) { + return ColorSpaceUtils.parse({ + cs: e, + xref: this.xref, + resources: t, + pdfFunctionFactory: this._pdfFunctionFactory, + globalColorSpaceCache: this.globalColorSpaceCache, + localColorSpaceCache: a, + asyncIfNotCached: !0, + }); + } + async _handleColorSpace(e) { + try { + return await e; + } catch (e) { + if (e instanceof AbortException) return null; + if (this.options.ignoreErrors) { + warn(`_handleColorSpace - ignoring ColorSpace: "${e}".`); + return null; + } + throw e; + } + } + parseShading({ + shading: e, + resources: t, + localColorSpaceCache: a, + localShadingPatternCache: r, + }) { + let i, + n = r.get(e); + if (n) return n; + try { + i = Pattern.parseShading( + e, + this.xref, + t, + this._pdfFunctionFactory, + this.globalColorSpaceCache, + a, + ).getIR(); + } catch (t) { + if (t instanceof AbortException) return null; + if (this.options.ignoreErrors) { + warn(`parseShading - ignoring shading: "${t}".`); + r.set(e, null); + return null; + } + throw t; + } + n = `pattern_${this.idFactory.createObjId()}`; + this.parsingType3Font && (n = `${this.idFactory.getDocId()}_type3_${n}`); + r.set(e, n); + if (this.parsingType3Font) { + const e = [], + t = PatternInfo.write(i); + e.push(t); + this.handler.send("commonobj", [n, "Pattern", t], e); + } else this.handler.send("obj", [n, this.pageIndex, "Pattern", i]); + return n; + } + handleColorN(e, t, a, r, i, n, s, o, c, l) { + const h = a.pop(); + if (h instanceof Name) { + const u = i.getRaw(h.name), + d = u instanceof Ref && c.getByRef(u); + if (d) + try { + const i = r.base ? r.base.getRgbHex(a, 0) : null, + n = getTilingPatternIR(d.operatorListIR, d.dict, i); + e.addOp(t, n); + return; + } catch {} + const f = this.xref.fetchIfRef(u); + if (f) { + const i = f instanceof BaseStream ? f.dict : f, + h = i.get("PatternType"); + if (h === xn) { + const o = r.base ? r.base.getRgbHex(a, 0) : null; + return this.handleTilingType(t, o, n, f, i, e, s, c); + } + if (h === Sn) { + const a = i.get("Shading"), + r = this.parseShading({ + shading: a, + resources: n, + localColorSpaceCache: o, + localShadingPatternCache: l, + }); + if (r) { + const a = lookupMatrix(i.getArray("Matrix"), null); + e.addOp(t, ["Shading", r, a]); + } + return; + } + throw new FormatError(`Unknown PatternType: ${h}`); + } + } + throw new FormatError(`Unknown PatternName: ${h}`); + } + _parseVisibilityExpression(e, t, a) { + if (++t > 10) { + warn("Visibility expression is too deeply nested"); + return; + } + const r = e.length, + i = this.xref.fetchIfRef(e[0]); + if (!(r < 2) && i instanceof Name) { + switch (i.name) { + case "And": + case "Or": + case "Not": + a.push(i.name); + break; + default: + warn(`Invalid operator ${i.name} in visibility expression`); + return; + } + for (let i = 1; i < r; i++) { + const r = e[i], + n = this.xref.fetchIfRef(r); + if (Array.isArray(n)) { + const e = []; + a.push(e); + this._parseVisibilityExpression(n, t, e); + } else r instanceof Ref && a.push(r.toString()); + } + } else warn("Invalid visibility expression"); + } + async parseMarkedContentProps(e, t) { + let a; + if (e instanceof Name) { + a = t.get("Properties").get(e.name); + } else { + if (!(e instanceof Dict)) + throw new FormatError("Optional content properties malformed."); + a = e; + } + const r = a.get("Type")?.name; + if ("OCG" === r) return { type: r, id: a.objId }; + if ("OCMD" === r) { + const e = a.get("VE"); + if (Array.isArray(e)) { + const t = []; + this._parseVisibilityExpression(e, 0, t); + if (t.length > 0) return { type: "OCMD", expression: t }; + } + const t = a.get("OCGs"); + if (Array.isArray(t) || t instanceof Dict) { + const e = []; + if (Array.isArray(t)) for (const a of t) e.push(a.toString()); + else e.push(t.objId); + return { + type: r, + ids: e, + policy: a.get("P") instanceof Name ? a.get("P").name : null, + expression: null, + }; + } + if (t instanceof Ref) return { type: r, id: t.toString() }; + } + return null; + } + getOperatorList({ + stream: e, + task: t, + resources: a, + operatorList: r, + initialState: i = null, + fallbackFontDict: n = null, + prevRefs: s = null, + }) { + const o = e.dict?.objId, + c = new RefSet(s); + if (o) { + if (s?.has(o)) + throw new Error(`getOperatorList - ignoring circular reference: ${o}`); + c.put(o); + } + a ||= Dict.empty; + i ||= new EvalState(); + if (!r) + throw new Error('getOperatorList: missing "operatorList" parameter'); + const l = this, + h = this.xref, + u = new LocalImageCache(), + d = new LocalColorSpaceCache(), + f = new LocalGStateCache(), + g = new LocalTilingPatternCache(), + p = new Map(), + m = a.get("XObject") || Dict.empty, + b = a.get("Pattern") || Dict.empty, + y = new StateManager(i), + w = new EvaluatorPreprocessor(e, h, y), + x = new TimeSlotManager(); + function closePendingRestoreOPS(e) { + for (let e = 0, t = w.savedStatesDepth; e < t; e++) r.addOp(we, []); + } + return new Promise(function promiseBody(e, i) { + const next = function (t) { + Promise.all([t, r.ready]).then(function () { + try { + promiseBody(e, i); + } catch (e) { + i(e); + } + }, i); + }; + t.ensureNotTerminated(); + x.reset(); + const s = {}; + let o, S, k, C, v, F; + for (; !(o = x.check()); ) { + s.args = null; + if (!w.read(s)) break; + let e = s.args, + i = s.fn; + switch (0 | i) { + case xt: + F = e[0] instanceof Name; + v = e[0].name; + if (F) { + const t = u.getByName(v); + if (t) { + addCachedImageOps(r, t); + e = null; + continue; + } + } + next( + new Promise(function (e, i) { + if (!F) + throw new FormatError("XObject must be referred to by name."); + let n = m.getRaw(v); + if (n instanceof Ref) { + const t = + u.getByRef(n) || + l._regionalImageCache.getByRef(n) || + l.globalImageCache.getData(n, l.pageIndex); + if (t) { + addCachedImageOps(r, t); + e(); + return; + } + n = h.fetch(n); + } + if (!(n instanceof BaseStream)) + throw new FormatError("XObject should be a stream"); + const s = n.dict.get("Subtype"); + if (!(s instanceof Name)) + throw new FormatError("XObject should have a Name subtype"); + if ("Form" !== s.name) + if ("Image" !== s.name) { + if ("PS" !== s.name) + throw new FormatError( + `Unhandled XObject subtype ${s.name}`, + ); + info("Ignored XObject subtype PS"); + e(); + } else + l.buildPaintImageXObject({ + resources: a, + image: n, + operatorList: r, + cacheKey: v, + localImageCache: u, + localColorSpaceCache: d, + }).then(e, i); + else { + y.save(); + l.buildFormXObject( + a, + n, + null, + r, + t, + y.state.clone({ newPath: !0 }), + d, + c, + ).then(function () { + y.restore(); + e(); + }, i); + } + }).catch(function (e) { + if (!(e instanceof AbortException)) { + if (!l.options.ignoreErrors) throw e; + warn(`getOperatorList - ignoring XObject: "${e}".`); + } + }), + ); + return; + case Ge: + const s = e[1]; + next( + l.handleSetFont(a, e, null, r, t, y.state, n).then(function (e) { + r.addDependency(e); + r.addOp(Ge, [e, s]); + }), + ); + return; + case wt: + const o = e[0].cacheKey; + if (o) { + const t = u.getByName(o); + if (t) { + addCachedImageOps(r, t); + e = null; + continue; + } + } + next( + l.buildPaintImageXObject({ + resources: a, + image: e[0], + isInline: !0, + operatorList: r, + cacheKey: o, + localImageCache: u, + localColorSpaceCache: d, + }), + ); + return; + case Ze: + if (!y.state.font) { + l.ensureStateFont(y.state); + continue; + } + e[0] = l.handleText(e[0], y.state); + break; + case Qe: + if (!y.state.font) { + l.ensureStateFont(y.state); + continue; + } + const w = [], + x = y.state; + for (const t of e[0]) + "string" == typeof t + ? w.push(...l.handleText(t, x)) + : "number" == typeof t && w.push(t); + e[0] = w; + i = Ze; + break; + case et: + if (!y.state.font) { + l.ensureStateFont(y.state); + continue; + } + r.addOp(Ye); + e[0] = l.handleText(e[0], y.state); + i = Ze; + break; + case tt: + if (!y.state.font) { + l.ensureStateFont(y.state); + continue; + } + r.addOp(Ye); + r.addOp(qe, [e.shift()]); + r.addOp(Xe, [e.shift()]); + e[0] = l.handleText(e[0], y.state); + i = Ze; + break; + case ze: + y.state.textRenderingMode = e[0]; + break; + case nt: { + const t = l._getColorSpace(e[0], a, d); + if (t instanceof ColorSpace) { + y.state.fillColorSpace = t; + continue; + } + next( + l._handleColorSpace(t).then((e) => { + y.state.fillColorSpace = e || ColorSpaceUtils.gray; + }), + ); + return; + } + case it: { + const t = l._getColorSpace(e[0], a, d); + if (t instanceof ColorSpace) { + y.state.strokeColorSpace = t; + continue; + } + next( + l._handleColorSpace(t).then((e) => { + y.state.strokeColorSpace = e || ColorSpaceUtils.gray; + }), + ); + return; + } + case ct: + C = y.state.fillColorSpace; + e = [C.getRgbHex(e, 0)]; + i = ft; + break; + case st: + C = y.state.strokeColorSpace; + e = [C.getRgbHex(e, 0)]; + i = dt; + break; + case ut: + y.state.fillColorSpace = ColorSpaceUtils.gray; + e = [ColorSpaceUtils.gray.getRgbHex(e, 0)]; + i = ft; + break; + case ht: + y.state.strokeColorSpace = ColorSpaceUtils.gray; + e = [ColorSpaceUtils.gray.getRgbHex(e, 0)]; + i = dt; + break; + case pt: + y.state.fillColorSpace = ColorSpaceUtils.cmyk; + e = [ColorSpaceUtils.cmyk.getRgbHex(e, 0)]; + i = ft; + break; + case gt: + y.state.strokeColorSpace = ColorSpaceUtils.cmyk; + e = [ColorSpaceUtils.cmyk.getRgbHex(e, 0)]; + i = dt; + break; + case ft: + y.state.fillColorSpace = ColorSpaceUtils.rgb; + e = [ColorSpaceUtils.rgb.getRgbHex(e, 0)]; + break; + case dt: + y.state.strokeColorSpace = ColorSpaceUtils.rgb; + e = [ColorSpaceUtils.rgb.getRgbHex(e, 0)]; + break; + case lt: + C = y.state.patternFillColorSpace; + if (!C) { + if (isNumberArray(e, null)) { + e = [ColorSpaceUtils.gray.getRgbHex(e, 0)]; + i = ft; + break; + } + e = []; + i = Wt; + break; + } + if ("Pattern" === C.name) { + next(l.handleColorN(r, lt, e, C, b, a, t, d, g, p)); + return; + } + e = [C.getRgbHex(e, 0)]; + i = ft; + break; + case ot: + C = y.state.patternStrokeColorSpace; + if (!C) { + if (isNumberArray(e, null)) { + e = [ColorSpaceUtils.gray.getRgbHex(e, 0)]; + i = dt; + break; + } + e = []; + i = Ht; + break; + } + if ("Pattern" === C.name) { + next(l.handleColorN(r, ot, e, C, b, a, t, d, g, p)); + return; + } + e = [C.getRgbHex(e, 0)]; + i = dt; + break; + case mt: + let T; + try { + const t = a.get("Shading"); + if (!t) throw new FormatError("No shading resource found"); + T = t.get(e[0].name); + if (!T) throw new FormatError("No shading object found"); + } catch (e) { + if (e instanceof AbortException) continue; + if (l.options.ignoreErrors) { + warn(`getOperatorList - ignoring Shading: "${e}".`); + continue; + } + throw e; + } + const O = l.parseShading({ + shading: T, + resources: a, + localColorSpaceCache: d, + localShadingPatternCache: p, + }); + if (!O) continue; + e = [O]; + i = mt; + break; + case be: + F = e[0] instanceof Name; + v = e[0].name; + if (F) { + const t = f.getByName(v); + if (t) { + t.length > 0 && r.addOp(be, [t]); + e = null; + continue; + } + } + next( + new Promise(function (e, i) { + if (!F) + throw new FormatError("GState must be referred to by name."); + const n = a.get("ExtGState"); + if (!(n instanceof Dict)) + throw new FormatError("ExtGState should be a dictionary."); + const s = n.get(v); + if (!(s instanceof Dict)) + throw new FormatError("GState should be a dictionary."); + l.setGState({ + resources: a, + gState: s, + operatorList: r, + cacheKey: v, + task: t, + stateManager: y, + localGStateCache: f, + localColorSpaceCache: d, + seenRefs: c, + }).then(e, i); + }).catch(function (e) { + if (!(e instanceof AbortException)) { + if (!l.options.ignoreErrors) throw e; + warn(`getOperatorList - ignoring ExtGState: "${e}".`); + } + }), + ); + return; + case he: { + const [t] = e; + if ("number" != typeof t) { + warn(`Invalid setLineWidth: ${t}`); + continue; + } + e[0] = Math.abs(t); + break; + } + case ge: { + const t = e[1]; + if ("number" != typeof t) { + warn(`Invalid setDash: ${t}`); + continue; + } + const a = e[0]; + if (!Array.isArray(a)) { + warn(`Invalid setDash: ${a}`); + continue; + } + a.some((e) => "number" != typeof e) && + (e[0] = a.filter((e) => "number" == typeof e)); + break; + } + case Se: + case Ae: + case ke: + case Ce: + case ve: + case Fe: + case Ie: + l.buildPath(i, e, y.state); + continue; + case Te: + case Oe: + case Me: + case De: + case Be: + case Re: + case Ne: + case Ee: + case Pe: { + const { + state: { pathBuffer: e, pathMinMax: t }, + } = y; + (i !== Oe && i !== Ne && i !== Ee) || e.push(Jt); + if (0 === e.length) r.addOp(qt, [i, [null], null]); + else { + r.addOp(qt, [i, [new Float32Array(e)], t.slice()]); + e.length = 0; + t.set([1 / 0, 1 / 0, -1 / 0, -1 / 0], 0); + } + continue; + } + case Je: + r.addOp(i, [new Float32Array(e)]); + continue; + case St: + case At: + case Ft: + case It: + continue; + case Ct: + if (!(e[0] instanceof Name)) { + warn(`Expected name for beginMarkedContentProps arg0=${e[0]}`); + r.addOp(Ct, ["OC", null]); + continue; + } + if ("OC" === e[0].name) { + next( + l + .parseMarkedContentProps(e[1], a) + .then((e) => { + r.addOp(Ct, ["OC", e]); + }) + .catch((e) => { + if (!(e instanceof AbortException)) { + if (!l.options.ignoreErrors) throw e; + warn( + `getOperatorList - ignoring beginMarkedContentProps: "${e}".`, + ); + r.addOp(Ct, ["OC", null]); + } + }), + ); + return; + } + e = [e[0].name, e[1] instanceof Dict ? e[1].get("MCID") : null]; + break; + default: + if (null !== e) { + for (S = 0, k = e.length; S < k && !(e[S] instanceof Dict); S++); + if (S < k) { + warn("getOperatorList - ignoring operator: " + i); + continue; + } + } + } + r.addOp(i, e); + } + if (o) next(An); + else { + closePendingRestoreOPS(); + e(); + } + }).catch((e) => { + if (!(e instanceof AbortException)) { + if (!this.options.ignoreErrors) throw e; + warn( + `getOperatorList - ignoring errors during "${t.name}" task: "${e}".`, + ); + closePendingRestoreOPS(); + } + }); + } + getTextContent({ + stream: e, + task: a, + resources: r, + stateManager: i = null, + includeMarkedContent: n = !1, + sink: s, + seenStyles: o = new Set(), + viewBox: c, + lang: l = null, + markedContentData: h = null, + disableNormalization: u = !1, + keepWhiteSpace: d = !1, + prevRefs: f = null, + intersector: g = null, + }) { + const p = e.dict?.objId, + m = new RefSet(f); + if (p) { + if (f?.has(p)) + throw new Error(`getTextContent - ignoring circular reference: ${p}`); + m.put(p); + } + r ||= Dict.empty; + i ||= new StateManager(new TextState()); + n && (h ||= { level: 0 }); + const b = { items: [], styles: Object.create(null), lang: l }, + y = { + 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, + }, + w = [" ", " "]; + let x = 0; + function saveLastChar(e) { + const t = (x + 1) % 2, + a = " " !== w[x] && " " === w[t]; + w[x] = e; + x = t; + return !d && a; + } + function shouldAddWhitepsace() { + return !d && " " !== w[x] && " " === w[(x + 1) % 2]; + } + function resetLastChars() { + w[0] = w[1] = " "; + x = 0; + } + const S = this, + k = this.xref, + C = []; + let v = null; + const F = new LocalImageCache(), + T = new LocalGStateCache(), + O = new EvaluatorPreprocessor(e, k, i); + let M; + function pushWhitespace({ + width: e = 0, + height: t = 0, + transform: a = y.prevTransform, + fontName: r = y.fontName, + }) { + g?.addExtraChar(" "); + b.items.push({ + str: " ", + dir: "ltr", + width: e, + height: t, + transform: a, + fontName: r, + hasEOL: !1, + }); + } + function getCurrentTextTransform() { + const e = M.font, + a = [M.fontSize * M.textHScale, 0, 0, M.fontSize, 0, M.textRise]; + if ( + e.isType3Font && + (M.fontSize <= 1 || e.isCharBBox) && + !isArrayEqual(M.fontMatrix, t) + ) { + const t = e.bbox[3] - e.bbox[1]; + t > 0 && (a[3] *= t * M.fontMatrix[3]); + } + return Util.transform(M.ctm, Util.transform(M.textMatrix, a)); + } + function ensureTextContentItem() { + if (y.initialized) return y; + const { font: e, loadedName: t } = M; + if (!o.has(t)) { + o.add(t); + b.styles[t] = { + fontFamily: e.fallbackName, + ascent: e.ascent, + descent: e.descent, + vertical: e.vertical, + }; + if (S.options.fontExtraProperties && e.systemFontInfo) { + const a = b.styles[t]; + a.fontSubstitution = e.systemFontInfo.css; + a.fontSubstitutionLoadedName = e.systemFontInfo.loadedName; + } + } + y.fontName = t; + const a = (y.transform = getCurrentTextTransform()); + if (e.vertical) { + y.width = y.totalWidth = Math.hypot(a[0], a[1]); + y.height = y.totalHeight = 0; + y.vertical = !0; + } else { + y.width = y.totalWidth = 0; + y.height = y.totalHeight = Math.hypot(a[2], a[3]); + y.vertical = !1; + } + const r = Math.hypot(M.textLineMatrix[0], M.textLineMatrix[1]), + i = Math.hypot(M.ctm[0], M.ctm[1]); + y.textAdvanceScale = i * r; + const { fontSize: n } = M; + y.trackingSpaceMin = 0.102 * n; + y.notASpace = 0.03 * n; + y.negativeSpaceMax = -0.2 * n; + y.spaceInFlowMin = 0.102 * n; + y.spaceInFlowMax = 0.6 * n; + y.hasEOL = !1; + y.initialized = !0; + return y; + } + function updateAdvanceScale() { + if (!y.initialized) return; + const e = Math.hypot(M.textLineMatrix[0], M.textLineMatrix[1]), + t = Math.hypot(M.ctm[0], M.ctm[1]) * e; + if (t !== y.textAdvanceScale) { + if (y.vertical) { + y.totalHeight += y.height * y.textAdvanceScale; + y.height = 0; + } else { + y.totalWidth += y.width * y.textAdvanceScale; + y.width = 0; + } + y.textAdvanceScale = t; + } + } + function runBidiTransform(e) { + let t = e.str.join(""); + u || + (t = (function normalizeUnicode(e) { + if (!ra) { + ra = + /([\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; + ia = new Map([["ſt", "ſt"]]); + } + return e.replaceAll(ra, (e, t, a) => + t ? t.normalize("NFKC") : ia.get(a), + ); + })(t)); + const a = bidi(t, -1, e.vertical); + return { + str: a.str, + dir: a.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 n = await S.loadFont(e, i, r, a); + M.loadedName = n.loadedName; + M.font = n.font; + M.fontMatrix = n.font.fontMatrix || t; + } + function applyInverseRotation(e, t, a) { + const r = Math.hypot(a[0], a[1]); + return [(a[0] * e + a[1] * t) / r, (a[2] * e + a[3] * t) / r]; + } + function compareWithLastPosition(e) { + const t = getCurrentTextTransform(); + let a = t[4], + r = t[5]; + if (M.font?.vertical) { + if (a < c[0] || a > c[2] || r + e < c[1] || r > c[3]) return !1; + } else if (a + e < c[0] || a > c[2] || r < c[1] || r > c[3]) return !1; + if (!M.font || !y.prevTransform) return !0; + let i = y.prevTransform[4], + n = y.prevTransform[5]; + if (i === a && n === r) return !0; + let s = -1; + t[0] && 0 === t[1] && 0 === t[2] + ? (s = t[0] > 0 ? 0 : 180) + : t[1] && 0 === t[0] && 0 === t[3] && (s = t[1] > 0 ? 90 : 270); + switch (s) { + case 0: + break; + case 90: + [a, r] = [r, a]; + [i, n] = [n, i]; + break; + case 180: + [a, r, i, n] = [-a, -r, -i, -n]; + break; + case 270: + [a, r] = [-r, -a]; + [i, n] = [-n, -i]; + break; + default: + [a, r] = applyInverseRotation(a, r, t); + [i, n] = applyInverseRotation(i, n, y.prevTransform); + } + if (M.font.vertical) { + const e = (n - r) / y.textAdvanceScale, + t = a - i, + s = Math.sign(y.height); + if (e < s * y.negativeSpaceMax) { + if (Math.abs(t) > 0.5 * y.width) { + appendEOL(); + return !0; + } + resetLastChars(); + flushTextContentItem(); + return !0; + } + if (Math.abs(t) > y.width) { + appendEOL(); + return !0; + } + e <= s * y.notASpace && resetLastChars(); + if (e <= s * y.trackingSpaceMin) + if (shouldAddWhitepsace()) { + resetLastChars(); + flushTextContentItem(); + pushWhitespace({ height: Math.abs(e) }); + } else y.height += e; + else if (!addFakeSpaces(e, y.prevTransform, s)) + if (0 === y.str.length) { + resetLastChars(); + pushWhitespace({ height: Math.abs(e) }); + } else y.height += e; + Math.abs(t) > 0.25 * y.width && flushTextContentItem(); + return !0; + } + const o = (a - i) / y.textAdvanceScale, + l = r - n, + h = Math.sign(y.width); + if (o < h * y.negativeSpaceMax) { + if (Math.abs(l) > 0.5 * y.height) { + appendEOL(); + return !0; + } + resetLastChars(); + flushTextContentItem(); + return !0; + } + if (Math.abs(l) > y.height) { + appendEOL(); + return !0; + } + o <= h * y.notASpace && resetLastChars(); + if (o <= h * y.trackingSpaceMin) + if (shouldAddWhitepsace()) { + resetLastChars(); + flushTextContentItem(); + pushWhitespace({ width: Math.abs(o) }); + } else y.width += o; + else if (!addFakeSpaces(o, y.prevTransform, h)) + if (0 === y.str.length) { + resetLastChars(); + pushWhitespace({ width: Math.abs(o) }); + } else y.width += o; + Math.abs(l) > 0.25 * y.height && flushTextContentItem(); + return !0; + } + function buildTextContentItem({ chars: e, extraSpacing: t }) { + const a = M.font; + if (!e) { + const e = M.charSpacing + t; + e && + (a.vertical + ? M.translateTextMatrix(0, -e) + : M.translateTextMatrix(e * M.textHScale, 0)); + d && compareWithLastPosition(0); + return; + } + const r = a.charsToGlyphs(e), + i = M.fontMatrix[0] * M.fontSize; + for (let e = 0, n = r.length; e < n; e++) { + const s = r[e], + { category: o, originalCharCode: c } = s; + if (o.isInvisibleFormatMark) continue; + let l = M.charSpacing + (e + 1 === n ? t : 0), + h = s.width; + a.vertical && (h = s.vmetric ? s.vmetric[0] : -h); + let u = h * i; + 32 === c && (l += M.wordSpacing); + if (!d && o.isWhitespace) { + if (a.vertical) { + l += -u; + M.translateTextMatrix(0, -l); + } else { + l += u; + M.translateTextMatrix(l * M.textHScale, 0); + } + saveLastChar(" "); + continue; + } + if (!o.isZeroWidthDiacritic && !compareWithLastPosition(u)) { + a.vertical + ? M.translateTextMatrix(0, u) + : M.translateTextMatrix(u * M.textHScale, 0); + continue; + } + const f = ensureTextContentItem(); + o.isZeroWidthDiacritic && (u = 0); + if (a.vertical) { + g?.addGlyph(getCurrentTextTransform(), 0, u, s.unicode); + M.translateTextMatrix(0, u); + u = Math.abs(u); + f.height += u; + } else { + u *= M.textHScale; + g?.addGlyph(getCurrentTextTransform(), u, 0, s.unicode); + M.translateTextMatrix(u, 0); + f.width += u; + } + u && (f.prevTransform = getCurrentTextTransform()); + const p = s.unicode; + if (saveLastChar(p)) { + f.str.push(" "); + g?.addExtraChar(" "); + } + g || f.str.push(p); + l && + (a.vertical + ? M.translateTextMatrix(0, -l) + : M.translateTextMatrix(l * M.textHScale, 0)); + } + } + function appendEOL() { + g?.addExtraChar("\n"); + resetLastChars(); + if (y.initialized) { + y.hasEOL = !0; + flushTextContentItem(); + } else + b.items.push({ + str: "", + dir: "ltr", + width: 0, + height: 0, + transform: getCurrentTextTransform(), + fontName: M.loadedName, + hasEOL: !0, + }); + } + function addFakeSpaces(e, t, a) { + if (a * y.spaceInFlowMin <= e && e <= a * y.spaceInFlowMax) { + if (y.initialized) { + resetLastChars(); + y.str.push(" "); + g?.addExtraChar(" "); + } + return !1; + } + const r = y.fontName; + let i = 0; + if (y.vertical) { + i = e; + e = 0; + } + flushTextContentItem(); + resetLastChars(); + pushWhitespace({ + width: Math.abs(e), + height: Math.abs(i), + transform: t || getCurrentTextTransform(), + fontName: r, + }); + return !0; + } + function flushTextContentItem() { + if (y.initialized && y.str) { + y.vertical + ? (y.totalHeight += y.height * y.textAdvanceScale) + : (y.totalWidth += y.width * y.textAdvanceScale); + b.items.push(runBidiTransform(y)); + y.initialized = !1; + y.str.length = 0; + } + } + function enqueueChunk(e = !1) { + const t = b.items.length; + if (0 !== t && !(e && t < 10)) { + s?.enqueue(b, t); + b.items = []; + b.styles = Object.create(null); + } + } + const D = new TimeSlotManager(); + return new Promise(function promiseBody(e, t) { + const next = function (a) { + enqueueChunk(!0); + Promise.all([a, s?.ready]).then(function () { + try { + promiseBody(e, t); + } catch (e) { + t(e); + } + }, t); + }; + a.ensureNotTerminated(); + D.reset(); + const f = {}; + let g, + p, + y, + w = []; + for (; !(g = D.check()); ) { + w.length = 0; + f.args = w; + if (!O.read(f)) break; + const e = M; + M = i.state; + const t = f.fn; + w = f.args; + switch (0 | t) { + case Ge: + const t = w[0].name, + f = w[1]; + if (M.font && t === M.fontName && f === M.fontSize) break; + flushTextContentItem(); + M.fontName = t; + M.fontSize = f; + next(handleSetFont(t, null)); + return; + case $e: + M.textRise = w[0]; + break; + case He: + M.textHScale = w[0] / 100; + break; + case We: + M.leading = w[0]; + break; + case Ve: + M.translateTextLineMatrix(w[0], w[1]); + M.textMatrix = M.textLineMatrix.slice(); + break; + case Ke: + M.leading = -w[1]; + M.translateTextLineMatrix(w[0], w[1]); + M.textMatrix = M.textLineMatrix.slice(); + break; + case Ye: + M.carriageReturn(); + break; + case Je: + M.setTextMatrix(w[0], w[1], w[2], w[3], w[4], w[5]); + M.setTextLineMatrix(w[0], w[1], w[2], w[3], w[4], w[5]); + updateAdvanceScale(); + break; + case Xe: + M.charSpacing = w[0]; + break; + case qe: + M.wordSpacing = w[0]; + break; + case Ue: + M.textMatrix = fa.slice(); + M.textLineMatrix = fa.slice(); + break; + case Qe: + if (!i.state.font) { + S.ensureStateFont(i.state); + continue; + } + const g = ((M.font.vertical ? 1 : -1) * M.fontSize) / 1e3, + x = w[0]; + for (let e = 0, t = x.length; e < t; e++) { + const t = x[e]; + if ("string" == typeof t) C.push(t); + else if ("number" == typeof t && 0 !== t) { + const e = C.join(""); + C.length = 0; + buildTextContentItem({ chars: e, extraSpacing: t * g }); + } + } + if (C.length > 0) { + const e = C.join(""); + C.length = 0; + buildTextContentItem({ chars: e, extraSpacing: 0 }); + } + break; + case Ze: + if (!i.state.font) { + S.ensureStateFont(i.state); + continue; + } + buildTextContentItem({ chars: w[0], extraSpacing: 0 }); + break; + case et: + if (!i.state.font) { + S.ensureStateFont(i.state); + continue; + } + M.carriageReturn(); + buildTextContentItem({ chars: w[0], extraSpacing: 0 }); + break; + case tt: + if (!i.state.font) { + S.ensureStateFont(i.state); + continue; + } + M.wordSpacing = w[0]; + M.charSpacing = w[1]; + M.carriageReturn(); + buildTextContentItem({ chars: w[2], extraSpacing: 0 }); + break; + case xt: + flushTextContentItem(); + v ??= r.get("XObject") || Dict.empty; + y = w[0] instanceof Name; + p = w[0].name; + if (y && F.getByName(p)) break; + next( + new Promise(function (e, t) { + if (!y) + throw new FormatError("XObject must be referred to by name."); + let f = v.getRaw(p); + if (f instanceof Ref) { + if (F.getByRef(f)) { + e(); + return; + } + if (S.globalImageCache.getData(f, S.pageIndex)) { + e(); + return; + } + f = k.fetch(f); + } + if (!(f instanceof BaseStream)) + throw new FormatError("XObject should be a stream"); + const { dict: g } = f, + b = g.get("Subtype"); + if (!(b instanceof Name)) + throw new FormatError("XObject should have a Name subtype"); + if ("Form" !== b.name) { + F.set(p, g.objId, !0); + e(); + return; + } + const w = i.state.clone(), + x = new StateManager(w), + C = lookupMatrix(g.getArray("Matrix"), null); + C && x.transform(C); + const T = g.get("Resources"); + enqueueChunk(); + const O = { + enqueueInvoked: !1, + enqueue(e, t) { + this.enqueueInvoked = !0; + s.enqueue(e, t); + }, + get desiredSize() { + return s.desiredSize ?? 0; + }, + get ready() { + return s.ready; + }, + }; + S.getTextContent({ + stream: f, + task: a, + resources: T instanceof Dict ? T : r, + stateManager: x, + includeMarkedContent: n, + sink: s && O, + seenStyles: o, + viewBox: c, + lang: l, + markedContentData: h, + disableNormalization: u, + keepWhiteSpace: d, + prevRefs: m, + }).then(function () { + O.enqueueInvoked || F.set(p, g.objId, !0); + e(); + }, t); + }).catch(function (e) { + if (!(e instanceof AbortException)) { + if (!S.options.ignoreErrors) throw e; + warn(`getTextContent - ignoring XObject: "${e}".`); + } + }), + ); + return; + case be: + y = w[0] instanceof Name; + p = w[0].name; + if (y && T.getByName(p)) break; + next( + new Promise(function (e, t) { + if (!y) + throw new FormatError("GState must be referred to by name."); + const a = r.get("ExtGState"); + if (!(a instanceof Dict)) + throw new FormatError("ExtGState should be a dictionary."); + const i = a.get(p); + if (!(i instanceof Dict)) + throw new FormatError("GState should be a dictionary."); + const n = i.get("Font"); + if (n) { + flushTextContentItem(); + M.fontName = null; + M.fontSize = n[1]; + handleSetFont(null, n[0]).then(e, t); + } else { + T.set(p, i.objId, !0); + e(); + } + }).catch(function (e) { + if (!(e instanceof AbortException)) { + if (!S.options.ignoreErrors) throw e; + warn(`getTextContent - ignoring ExtGState: "${e}".`); + } + }), + ); + return; + case kt: + flushTextContentItem(); + if (n) { + h.level++; + b.items.push({ + type: "beginMarkedContent", + tag: w[0] instanceof Name ? w[0].name : null, + }); + } + break; + case Ct: + flushTextContentItem(); + if (n) { + h.level++; + let e = null; + w[1] instanceof Dict && (e = w[1].get("MCID")); + b.items.push({ + type: "beginMarkedContentProps", + id: Number.isInteger(e) + ? `${S.idFactory.getPageObjId()}_mc${e}` + : null, + tag: w[0] instanceof Name ? w[0].name : null, + }); + } + break; + case vt: + flushTextContentItem(); + if (n) { + if (0 === h.level) break; + h.level--; + b.items.push({ type: "endMarkedContent" }); + } + break; + case we: + !e || + (e.font === M.font && + e.fontSize === M.fontSize && + e.fontName === M.fontName) || + flushTextContentItem(); + } + if (b.items.length >= (s?.desiredSize ?? 1)) { + g = !0; + break; + } + } + if (g) next(An); + else { + flushTextContentItem(); + enqueueChunk(); + e(); + } + }).catch((e) => { + if (!(e instanceof AbortException)) { + if (!this.options.ignoreErrors) throw e; + warn( + `getTextContent - ignoring errors during "${a.name}" task: "${e}".`, + ); + flushTextContentItem(); + enqueueChunk(); + } + }); + } + async extractDataStructures(e, t) { + const a = this.xref; + let r; + const i = this.readToUnicode(t.toUnicode); + if (t.composite) { + const a = e.get("CIDSystemInfo"); + a instanceof Dict && + (t.cidSystemInfo = { + registry: stringToPDFString(a.get("Registry")), + ordering: stringToPDFString(a.get("Ordering")), + supplement: a.get("Supplement"), + }); + try { + const t = e.get("CIDToGIDMap"); + t instanceof BaseStream && (r = t.getBytes()); + } catch (e) { + if (!this.options.ignoreErrors) throw e; + warn(`extractDataStructures - ignoring CIDToGIDMap data: "${e}".`); + } + } + const n = []; + let s, + o = null; + if (e.has("Encoding")) { + s = e.get("Encoding"); + if (s instanceof Dict) { + o = s.get("BaseEncoding"); + o = o instanceof Name ? o.name : null; + if (s.has("Differences")) { + const e = s.get("Differences"); + let t = 0; + for (const r of e) { + const e = a.fetchIfRef(r); + if ("number" == typeof e) t = e; + else { + if (!(e instanceof Name)) + throw new FormatError( + `Invalid entry in 'Differences' array: ${e}`, + ); + n[t++] = e.name; + } + } + } + } else if (s instanceof Name) o = s.name; + else { + const e = "Encoding is not a Name nor a Dict"; + if (!this.options.ignoreErrors) throw new FormatError(e); + warn(e); + } + "MacRomanEncoding" !== o && + "MacExpertEncoding" !== o && + "WinAnsiEncoding" !== o && + (o = null); + } + const c = !t.file || t.isInternalFont, + l = Xr()[t.name]; + o && c && l && (o = null); + if (o) t.defaultEncoding = getEncoding(o); + else { + let e = !!(t.flags & Ar); + const a = !!(t.flags & kr); + if ("TrueType" === t.type && e && a && 0 !== n.length) { + t.flags &= ~Ar; + e = !1; + } + s = lr; + "TrueType" !== t.type || a || (s = hr); + if (e || l) { + s = cr; + c && + (/Symbol/i.test(t.name) + ? (s = ur) + : /Dingbats/i.test(t.name) + ? (s = dr) + : /Wingdings/i.test(t.name) && (s = hr)); + } + t.defaultEncoding = s; + } + t.differences = n; + t.baseEncodingName = o; + t.hasEncoding = !!o || n.length > 0; + t.dict = e; + t.toUnicode = await i; + const h = await this.buildToUnicode(t); + t.toUnicode = h; + r && (t.cidToGidMap = this.readCidToGidMap(r, h)); + return t; + } + _simpleFontToUnicode(e, t = !1) { + assert(!e.composite, "Must be a simple font."); + const a = [], + r = e.defaultEncoding.slice(), + i = e.baseEncodingName, + n = e.differences; + for (const e in n) { + const t = n[e]; + ".notdef" !== t && (r[e] = t); + } + const s = fr(); + for (const n in r) { + let o = r[n]; + if ("" === o) continue; + let c = s[o]; + if (void 0 !== c) { + a[n] = String.fromCharCode(c); + continue; + } + let l = 0; + switch (o[0]) { + case "G": + 3 === o.length && (l = parseInt(o.substring(1), 16)); + break; + case "g": + 5 === o.length && (l = parseInt(o.substring(1), 16)); + break; + case "C": + case "c": + if (o.length >= 3 && o.length <= 4) { + const a = o.substring(1); + if (t) { + l = parseInt(a, 16); + break; + } + l = +a; + if (Number.isNaN(l) && Number.isInteger(parseInt(a, 16))) + return this._simpleFontToUnicode(e, !0); + } + break; + case "u": + c = getUnicodeForGlyph(o, s); + -1 !== c && (l = c); + break; + default: + switch (o) { + case "f_h": + case "f_t": + case "T_h": + a[n] = o.replaceAll("_", ""); + continue; + } + } + if (l > 0 && l <= 1114111 && Number.isInteger(l)) { + if (i && l === +n) { + const e = getEncoding(i); + if (e && (o = e[n])) { + a[n] = String.fromCharCode(s[o]); + continue; + } + } + a[n] = String.fromCodePoint(l); + } + } + return a; + } + 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: a } = e.cidSystemInfo, + r = Name.get(`${t}-${a}-UCS2`), + i = await CMapFactory.create({ + encoding: r, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null, + }), + n = [], + s = []; + e.cMap.forEach(function (e, t) { + if (t > 65535) throw new FormatError("Max size of CID is 65,535"); + const a = i.lookup(t); + if (a) { + s.length = 0; + for (let e = 0, t = a.length; e < t; e += 2) + s.push((a.charCodeAt(e) << 8) + a.charCodeAt(e + 1)); + n[e] = String.fromCharCode(...s); + } + }); + return new ToUnicodeMap(n); + } + return new IdentityToUnicodeMap(e.firstChar, e.lastChar); + } + async readToUnicode(e) { + if (!e) return null; + if (e instanceof Name) { + const t = await CMapFactory.create({ + encoding: e, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null, + }); + return t instanceof IdentityCMap + ? new IdentityToUnicodeMap(0, 65535) + : new ToUnicodeMap(t.getMap()); + } + if (e instanceof BaseStream) + try { + const t = await CMapFactory.create({ + encoding: e, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null, + }); + if (t instanceof IdentityCMap) + return new IdentityToUnicodeMap(0, 65535); + const a = new Array(t.length); + t.forEach(function (e, t) { + if ("number" == typeof t) { + a[e] = String.fromCodePoint(t); + return; + } + t.length % 2 != 0 && (t = "\0" + t); + const r = []; + for (let e = 0; e < t.length; e += 2) { + const a = (t.charCodeAt(e) << 8) | t.charCodeAt(e + 1); + if (55296 != (63488 & a)) { + r.push(a); + continue; + } + e += 2; + const i = (t.charCodeAt(e) << 8) | t.charCodeAt(e + 1); + r.push(((1023 & a) << 10) + (1023 & i) + 65536); + } + a[e] = String.fromCodePoint(...r); + }); + return new ToUnicodeMap(a); + } catch (e) { + if (e instanceof AbortException) return null; + if (this.options.ignoreErrors) { + warn(`readToUnicode - ignoring ToUnicode data: "${e}".`); + return null; + } + throw e; + } + return null; + } + readCidToGidMap(e, t) { + const a = []; + for (let r = 0, i = e.length; r < i; r++) { + const i = (e[r++] << 8) | e[r], + n = r >> 1; + (0 !== i || t.has(n)) && (a[n] = i); + } + return a; + } + extractWidths(e, t, a) { + const r = this.xref; + let i = [], + n = 0; + const s = []; + let o; + if (a.composite) { + const t = e.get("DW"); + n = "number" == typeof t ? Math.ceil(t) : 1e3; + const c = e.get("W"); + if (Array.isArray(c)) + for (let e = 0, t = c.length; e < t; e++) { + let t = r.fetchIfRef(c[e++]); + if (!Number.isInteger(t)) break; + const a = r.fetchIfRef(c[e]); + if (Array.isArray(a)) + for (const e of a) { + const a = r.fetchIfRef(e); + "number" == typeof a && (i[t] = a); + t++; + } + else { + if (!Number.isInteger(a)) break; + { + const n = r.fetchIfRef(c[++e]); + if ("number" != typeof n) continue; + for (let e = t; e <= a; e++) i[e] = n; + } + } + } + if (a.vertical) { + const t = e.getArray("DW2"); + let a = isNumberArray(t, 2) ? t : [880, -1e3]; + o = [a[1], 0.5 * n, a[0]]; + a = e.get("W2"); + if (Array.isArray(a)) + for (let e = 0, t = a.length; e < t; e++) { + let t = r.fetchIfRef(a[e++]); + if (!Number.isInteger(t)) break; + const i = r.fetchIfRef(a[e]); + if (Array.isArray(i)) + for (let e = 0, a = i.length; e < a; e++) { + const a = [ + r.fetchIfRef(i[e++]), + r.fetchIfRef(i[e++]), + r.fetchIfRef(i[e]), + ]; + isNumberArray(a, null) && (s[t] = a); + t++; + } + else { + if (!Number.isInteger(i)) break; + { + const n = [ + r.fetchIfRef(a[++e]), + r.fetchIfRef(a[++e]), + r.fetchIfRef(a[++e]), + ]; + if (!isNumberArray(n, null)) continue; + for (let e = t; e <= i; e++) s[e] = n; + } + } + } + } + } else { + const s = e.get("Widths"); + if (Array.isArray(s)) { + let e = a.firstChar; + for (const t of s) { + const a = r.fetchIfRef(t); + "number" == typeof a && (i[e] = a); + e++; + } + const o = t.get("MissingWidth"); + n = "number" == typeof o ? o : 0; + } else { + const t = e.get("BaseFont"); + if (t instanceof Name) { + const e = this.getBaseFontMetrics(t.name); + i = this.buildCharCodeToWidth(e.widths, a); + n = e.defaultWidth; + } + } + } + let c = !0, + l = n; + for (const e in i) { + const t = i[e]; + if (t) + if (l) { + if (l !== t) { + c = !1; + break; + } + } else l = t; + } + c ? (a.flags |= xr) : (a.flags &= ~xr); + a.defaultWidth = n; + a.widths = i; + a.defaultVMetrics = o; + a.vmetrics = s; + } + isSerifFont(e) { + const t = e.split("-", 1)[0]; + return t in jr() || /serif/gi.test(t); + } + getBaseFontMetrics(e) { + let t = 0, + a = Object.create(null), + r = !1; + let i = Lr()[e] || e; + const n = Gr(); + i in n || (i = this.isSerifFont(e) ? "Times-Roman" : "Helvetica"); + const s = n[i]; + if ("number" == typeof s) { + t = s; + r = !0; + } else a = s(); + return { defaultWidth: t, monospace: r, widths: a }; + } + buildCharCodeToWidth(e, t) { + const a = Object.create(null), + r = t.differences, + i = t.defaultEncoding; + for (let t = 0; t < 256; t++) + t in r && e[r[t]] + ? (a[t] = e[r[t]]) + : t in i && e[i[t]] && (a[t] = e[i[t]]); + return a; + } + preEvaluateFont(e) { + const t = e; + let a = e.get("Subtype"); + if (!(a instanceof Name)) throw new FormatError("invalid font Subtype"); + let r, + i = !1; + if ("Type0" === a.name) { + const t = e.get("DescendantFonts"); + if (!t) throw new FormatError("Descendant fonts are not specified"); + if ( + !( + (e = Array.isArray(t) ? this.xref.fetchIfRef(t[0]) : t) instanceof + Dict + ) + ) + throw new FormatError("Descendant font is not a dictionary."); + a = e.get("Subtype"); + if (!(a instanceof Name)) throw new FormatError("invalid font Subtype"); + i = !0; + } + let n = e.get("FirstChar"); + Number.isInteger(n) || (n = 0); + let s = e.get("LastChar"); + Number.isInteger(s) || (s = i ? 65535 : 255); + const o = e.get("FontDescriptor"), + c = e.get("ToUnicode") || t.get("ToUnicode"); + if (o) { + r = new MurmurHash3_64(); + const a = t.getRaw("Encoding"); + if (a instanceof Name) r.update(a.name); + else if (a instanceof Ref) r.update(a.toString()); + else if (a instanceof Dict) + for (const e of a.getRawValues()) + if (e instanceof Name) r.update(e.name); + else if (e instanceof Ref) r.update(e.toString()); + else if (Array.isArray(e)) { + const t = e.length, + a = new Array(t); + for (let r = 0; r < t; r++) { + const t = e[r]; + t instanceof Name + ? (a[r] = t.name) + : ("number" == typeof t || t instanceof Ref) && + (a[r] = t.toString()); + } + r.update(a.join()); + } + r.update(`${n}-${s}`); + if (c instanceof BaseStream) { + const e = c.stream || c, + t = e.buffer + ? new Uint8Array(e.buffer.buffer, 0, e.bufferLength) + : new Uint8Array(e.bytes.buffer, e.start, e.end - e.start); + r.update(t); + } else c instanceof Name && r.update(c.name); + const o = e.get("Widths") || t.get("Widths"); + if (Array.isArray(o)) { + const e = []; + for (const t of o) + ("number" == typeof t || t instanceof Ref) && e.push(t.toString()); + r.update(e.join()); + } + if (i) { + r.update("compositeFont"); + const a = e.get("W") || t.get("W"); + if (Array.isArray(a)) { + const e = []; + for (const t of a) + if ("number" == typeof t || t instanceof Ref) e.push(t.toString()); + else if (Array.isArray(t)) { + const a = []; + for (const e of t) + ("number" == typeof e || e instanceof Ref) && + a.push(e.toString()); + e.push(`[${a.join()}]`); + } + r.update(e.join()); + } + const i = e.getRaw("CIDToGIDMap") || t.getRaw("CIDToGIDMap"); + i instanceof Name + ? r.update(i.name) + : i instanceof Ref + ? r.update(i.toString()) + : i instanceof BaseStream && r.update(i.peekBytes()); + } + } + return { + descriptor: o, + dict: e, + baseDict: t, + composite: i, + type: a.name, + firstChar: n, + lastChar: s, + toUnicode: c, + hash: r ? r.hexdigest() : "", + }; + } + async translateFont({ + descriptor: e, + dict: a, + baseDict: r, + composite: i, + type: n, + firstChar: s, + lastChar: o, + toUnicode: c, + cssFontInfo: l, + }) { + const h = "Type3" === n; + if (!e) { + if (!h) { + let e = a.get("BaseFont"); + if (!(e instanceof Name)) + throw new FormatError("Base font is not specified"); + e = e.name.replaceAll(/[,_]/g, "-"); + const t = this.getBaseFontMetrics(e), + i = e.split("-", 1)[0], + l = + (this.isSerifFont(i) ? Sr : 0) | + (t.monospace ? xr : 0) | + (Xr()[i] ? Ar : kr), + u = { + type: n, + name: e, + loadedName: r.loadedName, + systemFontInfo: null, + widths: t.widths, + defaultWidth: t.defaultWidth, + isSimulatedFlags: !0, + flags: l, + firstChar: s, + lastChar: o, + toUnicode: c, + xHeight: 0, + capHeight: 0, + italicAngle: 0, + isType3Font: h, + }, + d = a.get("Widths"), + f = getStandardFontName(e); + let g = null; + if (f) { + g = await this.fetchStandardFontData(f); + u.isInternalFont = !!g; + } + !u.isInternalFont && + this.options.useSystemFonts && + (u.systemFontInfo = getFontSubstitution( + this.systemFontCache, + this.idFactory, + this.options.standardFontDataUrl, + e, + f, + n, + )); + const p = await this.extractDataStructures(a, u); + if (Array.isArray(d)) { + const e = []; + let t = s; + for (const a of d) { + const r = this.xref.fetchIfRef(a); + "number" == typeof r && (e[t] = r); + t++; + } + p.widths = e; + } else p.widths = this.buildCharCodeToWidth(t.widths, p); + return new Font(e, g, p, this.options); + } + e = Dict.empty; + } + let u = e.get("FontName"), + d = a.get("BaseFont"); + "string" == typeof u && (u = Name.get(u)); + "string" == typeof d && (d = Name.get(d)); + const f = u?.name, + g = d?.name; + if (h) f || (u = Name.get(n)); + else if (f !== g) { + info( + `The FontDescriptor's FontName is "${f}" but should be the same as the Font's BaseFont "${g}".`, + ); + f && + g && + (g.startsWith(f) || (!isKnownFontName(f) && isKnownFontName(g))) && + (u = null); + u ||= d; + } + if (!(u instanceof Name)) throw new FormatError("invalid font name"); + let p, m, b, y, w; + try { + p = e.get("FontFile", "FontFile2", "FontFile3"); + if (p) { + if (!(p instanceof BaseStream)) + throw new FormatError("FontFile should be a stream"); + if (p.isEmpty) throw new FormatError("FontFile is empty"); + } + } catch (e) { + if (!this.options.ignoreErrors) throw e; + warn(`translateFont - fetching "${u.name}" font file: "${e}".`); + p = null; + } + let x = !1, + S = null, + k = null; + if (p) { + if (p.dict) { + const e = p.dict.get("Subtype"); + e instanceof Name && (m = e.name); + b = p.dict.get("Length1"); + y = p.dict.get("Length2"); + w = p.dict.get("Length3"); + } + } else if (l) { + const e = getXfaFontName(u.name); + if (e) { + l.fontFamily = `${l.fontFamily}-PdfJS-XFA`; + l.metrics = e.metrics || null; + S = e.factors || null; + p = await this.fetchStandardFontData(e.name); + x = !!p; + r = a = getXfaFontDict(u.name); + i = !0; + } + } else if (!h) { + const e = getStandardFontName(u.name); + if (e) { + p = await this.fetchStandardFontData(e); + x = !!p; + } + !x && + this.options.useSystemFonts && + (k = getFontSubstitution( + this.systemFontCache, + this.idFactory, + this.options.standardFontDataUrl, + u.name, + e, + n, + )); + } + const C = lookupMatrix(a.getArray("FontMatrix"), t), + v = lookupNormalRect( + e.getArray("FontBBox") || a.getArray("FontBBox"), + h ? [0, 0, 0, 0] : void 0, + ); + let F = e.get("Ascent"); + "number" != typeof F && (F = void 0); + let T = e.get("Descent"); + "number" != typeof T && (T = void 0); + let O = e.get("XHeight"); + "number" != typeof O && (O = 0); + let M = e.get("CapHeight"); + "number" != typeof M && (M = 0); + let D = e.get("Flags"); + Number.isInteger(D) || (D = 0); + let R = e.get("ItalicAngle"); + "number" != typeof R && (R = 0); + const N = { + type: n, + name: u.name, + subtype: m, + file: p, + length1: b, + length2: y, + length3: w, + isInternalFont: x, + loadedName: r.loadedName, + composite: i, + fixedPitch: !1, + fontMatrix: C, + firstChar: s, + lastChar: o, + toUnicode: c, + bbox: v, + ascent: F, + descent: T, + xHeight: O, + capHeight: M, + flags: D, + italicAngle: R, + isType3Font: h, + cssFontInfo: l, + scaleFactors: S, + systemFontInfo: k, + }; + if (i) { + const e = r.get("Encoding"); + e instanceof Name && (N.cidEncoding = e.name); + const t = await CMapFactory.create({ + encoding: e, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null, + }); + N.cMap = t; + N.vertical = N.cMap.vertical; + } + const E = await this.extractDataStructures(a, N); + this.extractWidths(a, e, E); + return new Font(u.name, p, E, this.options); + } + static buildFontPaths(e, t, a, r) { + function buildPath(t) { + const i = `${e.loadedName}_path_${t}`; + try { + if (e.renderer.hasBuiltPath(t)) return; + a.send("commonobj", [i, "FontPath", e.renderer.getPathJs(t)]); + } catch (e) { + if (r.ignoreErrors) { + warn(`buildFontPaths - ignoring ${i} glyph: "${e}".`); + return; + } + throw e; + } + } + for (const e of t) { + buildPath(e.fontChar); + const t = e.accent; + t?.fontChar && buildPath(t.fontChar); + } + } + static get fallbackFontDict() { + const e = new Dict(); + e.set("BaseFont", Name.get("Helvetica")); + e.set("Type", Name.get("FallbackType")); + e.set("Subtype", Name.get("FallbackType")); + e.set("Encoding", Name.get("WinAnsiEncoding")); + return shadow(this, "fallbackFontDict", e); + } +} +class TranslatedFont { + #ue = !1; + #de = null; + constructor({ loadedName: e, font: t, dict: a }) { + this.loadedName = e; + this.font = t; + this.dict = a; + this.type3Dependencies = t.isType3Font ? new Set() : null; + } + send(e) { + if (this.#ue) return; + this.#ue = !0; + const t = this.font.exportData(), + a = []; + if (t.data) { + t.data.charProcOperatorList && + (t.charProcOperatorList = t.data.charProcOperatorList); + t.data = FontInfo.write(t.data); + a.push(t.data); + } + e.send("commonobj", [this.loadedName, "Font", t], a); + } + fallback(e, t) { + if (this.font.data) { + this.font.disableFontFace = !0; + PartialEvaluator.buildFontPaths( + this.font, + this.font.glyphCacheValues, + e, + t, + ); + } + } + loadType3Data(e, t, a) { + if (this.#de) return this.#de; + const { font: r, type3Dependencies: i } = this; + assert(r.isType3Font, "Must be a Type3 font."); + const n = e.clone({ ignoreErrors: !1 }), + s = new RefSet(e.type3FontRefs); + this.dict.objId && !s.has(this.dict.objId) && s.put(this.dict.objId); + n.type3FontRefs = s; + let o = Promise.resolve(); + const c = this.dict.get("CharProcs"), + l = this.dict.get("Resources") || t, + h = Object.create(null), + [u, d, f, g] = r.bbox, + p = f - u, + m = g - d, + b = Math.hypot(p, m); + for (const e of c.getKeys()) + o = o.then(() => { + const t = c.get(e), + r = new OperatorList(); + return n + .getOperatorList({ + stream: t, + task: a, + resources: l, + operatorList: r, + }) + .then(() => { + switch (r.fnArray[0]) { + case rt: + this.#fe(r, b); + break; + case at: + b || this.#ge(r); + } + h[e] = r.getIR(); + for (const e of r.dependencies) i.add(e); + }) + .catch(function (t) { + warn(`Type3 font resource "${e}" is not available.`); + const a = new OperatorList(); + h[e] = a.getIR(); + }); + }); + this.#de = o.then(() => { + r.charProcOperatorList = h; + if (this._bbox) { + r.isCharBBox = !0; + r.bbox = this._bbox; + } + }); + return this.#de; + } + #fe(e, t = NaN) { + const a = Util.normalizeRect(e.argsArray[0].slice(2)), + r = a[2] - a[0], + i = a[3] - a[1], + n = Math.hypot(r, i); + if (0 === r || 0 === i) { + e.fnArray.splice(0, 1); + e.argsArray.splice(0, 1); + } else if (0 === t || Math.round(n / t) >= 10) { + this._bbox ??= [1 / 0, 1 / 0, -1 / 0, -1 / 0]; + Util.rectBoundingBox(...a, this._bbox); + } + let s = 0, + o = e.length; + for (; s < o; ) { + switch (e.fnArray[s]) { + case rt: + break; + case it: + case nt: + case st: + case ot: + case ct: + case lt: + case ht: + case ut: + case dt: + case ft: + case gt: + case pt: + case mt: + case pe: + e.fnArray.splice(s, 1); + e.argsArray.splice(s, 1); + o--; + continue; + case be: + const [t] = e.argsArray[s]; + let a = 0, + r = t.length; + for (; a < r; ) { + const [e] = t[a]; + switch (e) { + case "TR": + case "TR2": + case "HT": + case "BG": + case "BG2": + case "UCR": + case "UCR2": + t.splice(a, 1); + r--; + continue; + } + a++; + } + } + s++; + } + } + #ge(e) { + let t = 1; + const a = e.length; + for (; t < a; ) { + if (e.fnArray[t] === qt) { + const a = e.argsArray[t][2]; + this._bbox ??= [1 / 0, 1 / 0, -1 / 0, -1 / 0]; + Util.rectBoundingBox(...a, this._bbox); + } + t++; + } + } +} +class StateManager { + constructor(e = new EvalState()) { + this.state = e; + this.stateStack = []; + } + save() { + const e = this.state; + this.stateStack.push(this.state); + this.state = e.clone(); + } + restore() { + const e = this.stateStack.pop(); + e && (this.state = e); + } + transform(e) { + this.state.ctm = Util.transform(this.state.ctm, e); + } +} +class TextState { + constructor() { + this.ctm = new Float32Array(fa); + this.fontName = null; + this.fontSize = 0; + this.loadedName = null; + this.font = null; + this.fontMatrix = t; + this.textMatrix = fa.slice(); + this.textLineMatrix = fa.slice(); + this.charSpacing = 0; + this.wordSpacing = 0; + this.leading = 0; + this.textHScale = 1; + this.textRise = 0; + } + setTextMatrix(e, t, a, r, i, n) { + const s = this.textMatrix; + s[0] = e; + s[1] = t; + s[2] = a; + s[3] = r; + s[4] = i; + s[5] = n; + } + setTextLineMatrix(e, t, a, r, i, n) { + const s = this.textLineMatrix; + s[0] = e; + s[1] = t; + s[2] = a; + s[3] = r; + s[4] = i; + s[5] = n; + } + translateTextMatrix(e, t) { + const a = this.textMatrix; + a[4] = a[0] * e + a[2] * t + a[4]; + a[5] = a[1] * e + a[3] * t + a[5]; + } + translateTextLineMatrix(e, t) { + const a = this.textLineMatrix; + a[4] = a[0] * e + a[2] * t + a[4]; + a[5] = a[1] * e + a[3] * t + a[5]; + } + carriageReturn() { + this.translateTextLineMatrix(0, -this.leading); + this.textMatrix = this.textLineMatrix.slice(); + } + clone() { + const e = Object.create(this); + e.textMatrix = this.textMatrix.slice(); + e.textLineMatrix = this.textLineMatrix.slice(); + e.fontMatrix = this.fontMatrix.slice(); + return e; + } +} +class EvalState { + constructor() { + this.ctm = new Float32Array(fa); + this.font = null; + this.textRenderingMode = C; + this._fillColorSpace = this._strokeColorSpace = ColorSpaceUtils.gray; + this.patternFillColorSpace = null; + this.patternStrokeColorSpace = null; + this.currentPointX = this.currentPointY = 0; + this.pathMinMax = new Float32Array([1 / 0, 1 / 0, -1 / 0, -1 / 0]); + this.pathBuffer = []; + } + get fillColorSpace() { + return this._fillColorSpace; + } + set fillColorSpace(e) { + this._fillColorSpace = this.patternFillColorSpace = e; + } + get strokeColorSpace() { + return this._strokeColorSpace; + } + set strokeColorSpace(e) { + this._strokeColorSpace = this.patternStrokeColorSpace = e; + } + clone({ newPath: e = !1 } = {}) { + const t = Object.create(this); + if (e) { + t.pathBuffer = []; + t.pathMinMax = new Float32Array([1 / 0, 1 / 0, -1 / 0, -1 / 0]); + } + return t; + } +} +class EvaluatorPreprocessor { + static get opMap() { + return shadow( + this, + "opMap", + Object.assign(Object.create(null), { + w: { id: he, numArgs: 1, variableArgs: !1 }, + J: { id: ue, numArgs: 1, variableArgs: !1 }, + j: { id: de, numArgs: 1, variableArgs: !1 }, + M: { id: fe, numArgs: 1, variableArgs: !1 }, + d: { id: ge, numArgs: 2, variableArgs: !1 }, + ri: { id: pe, numArgs: 1, variableArgs: !1 }, + i: { id: me, numArgs: 1, variableArgs: !1 }, + gs: { id: be, numArgs: 1, variableArgs: !1 }, + q: { id: ye, numArgs: 0, variableArgs: !1 }, + Q: { id: we, numArgs: 0, variableArgs: !1 }, + cm: { id: xe, numArgs: 6, variableArgs: !1 }, + m: { id: Se, numArgs: 2, variableArgs: !1 }, + l: { id: Ae, numArgs: 2, variableArgs: !1 }, + c: { id: ke, numArgs: 6, variableArgs: !1 }, + v: { id: Ce, numArgs: 4, variableArgs: !1 }, + y: { id: ve, numArgs: 4, variableArgs: !1 }, + h: { id: Fe, numArgs: 0, variableArgs: !1 }, + re: { id: Ie, numArgs: 4, variableArgs: !1 }, + S: { id: Te, numArgs: 0, variableArgs: !1 }, + s: { id: Oe, numArgs: 0, variableArgs: !1 }, + f: { id: Me, numArgs: 0, variableArgs: !1 }, + F: { id: Me, numArgs: 0, variableArgs: !1 }, + "f*": { id: De, numArgs: 0, variableArgs: !1 }, + B: { id: Be, numArgs: 0, variableArgs: !1 }, + "B*": { id: Re, numArgs: 0, variableArgs: !1 }, + b: { id: Ne, numArgs: 0, variableArgs: !1 }, + "b*": { id: Ee, numArgs: 0, variableArgs: !1 }, + n: { id: Pe, numArgs: 0, variableArgs: !1 }, + W: { id: Le, numArgs: 0, variableArgs: !1 }, + "W*": { id: _e, numArgs: 0, variableArgs: !1 }, + BT: { id: Ue, numArgs: 0, variableArgs: !1 }, + ET: { id: je, numArgs: 0, variableArgs: !1 }, + Tc: { id: Xe, numArgs: 1, variableArgs: !1 }, + Tw: { id: qe, numArgs: 1, variableArgs: !1 }, + Tz: { id: He, numArgs: 1, variableArgs: !1 }, + TL: { id: We, numArgs: 1, variableArgs: !1 }, + Tf: { id: Ge, numArgs: 2, variableArgs: !1 }, + Tr: { id: ze, numArgs: 1, variableArgs: !1 }, + Ts: { id: $e, numArgs: 1, variableArgs: !1 }, + Td: { id: Ve, numArgs: 2, variableArgs: !1 }, + TD: { id: Ke, numArgs: 2, variableArgs: !1 }, + Tm: { id: Je, numArgs: 6, variableArgs: !1 }, + "T*": { id: Ye, numArgs: 0, variableArgs: !1 }, + Tj: { id: Ze, numArgs: 1, variableArgs: !1 }, + TJ: { id: Qe, numArgs: 1, variableArgs: !1 }, + "'": { id: et, numArgs: 1, variableArgs: !1 }, + '"': { id: tt, numArgs: 3, variableArgs: !1 }, + d0: { id: at, numArgs: 2, variableArgs: !1 }, + d1: { id: rt, numArgs: 6, variableArgs: !1 }, + CS: { id: it, numArgs: 1, variableArgs: !1 }, + cs: { id: nt, numArgs: 1, variableArgs: !1 }, + SC: { id: st, numArgs: 4, variableArgs: !0 }, + SCN: { id: ot, numArgs: 33, variableArgs: !0 }, + sc: { id: ct, numArgs: 4, variableArgs: !0 }, + scn: { id: lt, numArgs: 33, variableArgs: !0 }, + G: { id: ht, numArgs: 1, variableArgs: !1 }, + g: { id: ut, numArgs: 1, variableArgs: !1 }, + RG: { id: dt, numArgs: 3, variableArgs: !1 }, + rg: { id: ft, numArgs: 3, variableArgs: !1 }, + K: { id: gt, numArgs: 4, variableArgs: !1 }, + k: { id: pt, numArgs: 4, variableArgs: !1 }, + sh: { id: mt, numArgs: 1, variableArgs: !1 }, + BI: { id: bt, numArgs: 0, variableArgs: !1 }, + ID: { id: yt, numArgs: 0, variableArgs: !1 }, + EI: { id: wt, numArgs: 1, variableArgs: !1 }, + Do: { id: xt, numArgs: 1, variableArgs: !1 }, + MP: { id: St, numArgs: 1, variableArgs: !1 }, + DP: { id: At, numArgs: 2, variableArgs: !1 }, + BMC: { id: kt, numArgs: 1, variableArgs: !1 }, + BDC: { id: Ct, numArgs: 2, variableArgs: !1 }, + EMC: { id: vt, numArgs: 0, variableArgs: !1 }, + BX: { id: Ft, numArgs: 0, variableArgs: !1 }, + EX: { id: It, numArgs: 0, variableArgs: !1 }, + BM: null, + BD: null, + true: null, + fa: null, + fal: null, + fals: null, + false: null, + nu: null, + nul: null, + null: null, + }), + ); + } + static MAX_INVALID_PATH_OPS = 10; + constructor(e, t, a = new StateManager()) { + this.parser = new Parser({ + lexer: new Lexer(e, EvaluatorPreprocessor.opMap), + xref: t, + }); + this.stateManager = a; + this.nonProcessedArgs = []; + this._isPathOp = !1; + this._numInvalidPathOPS = 0; + } + get savedStatesDepth() { + return this.stateManager.stateStack.length; + } + read(e) { + let t = e.args; + for (;;) { + const a = this.parser.getObj(); + if (a instanceof Cmd) { + const r = a.cmd, + i = EvaluatorPreprocessor.opMap[r]; + if (!i) { + warn(`Unknown command "${r}".`); + continue; + } + const n = i.id, + s = i.numArgs; + let o = null !== t ? t.length : 0; + this._isPathOp || (this._numInvalidPathOPS = 0); + this._isPathOp = n >= Se && n <= Pe; + if (i.variableArgs) + o > s && + info( + `Command ${r}: expected [0, ${s}] args, but received ${o} args.`, + ); + else { + if (o !== s) { + const e = this.nonProcessedArgs; + for (; o > s; ) { + e.push(t.shift()); + o--; + } + for (; o < s && 0 !== e.length; ) { + null === t && (t = []); + t.unshift(e.pop()); + o++; + } + } + if (o < s) { + const e = `command ${r}: expected ${s} args, but received ${o} args.`; + if ( + this._isPathOp && + ++this._numInvalidPathOPS > + EvaluatorPreprocessor.MAX_INVALID_PATH_OPS + ) + throw new FormatError(`Invalid ${e}`); + warn(`Skipping ${e}`); + null !== t && (t.length = 0); + continue; + } + } + this.preprocessCommand(n, t); + e.fn = n; + e.args = t; + return !0; + } + if (a === sa) return !1; + if (null !== a) { + null === t && (t = []); + t.push(a); + if (t.length > 33) throw new FormatError("Too many arguments"); + } + } + } + preprocessCommand(e, t) { + switch (0 | e) { + case ye: + this.stateManager.save(); + break; + case we: + this.stateManager.restore(); + break; + case xe: + 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: a, args: r } = e; + switch (0 | a) { + case Ge: + const [e, a] = r; + e instanceof Name && (t.fontName = e.name); + "number" == typeof a && a > 0 && (t.fontSize = a); + break; + case ft: + ColorSpaceUtils.rgb.getRgbItem(r, 0, t.fontColor, 0); + break; + case ut: + ColorSpaceUtils.gray.getRgbItem(r, 0, t.fontColor, 0); + break; + case pt: + ColorSpaceUtils.cmyk.getRgbItem(r, 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, a, r) { + super(e); + this.stream = e; + this.evaluatorOptions = t; + this.xref = a; + this.globalColorSpaceCache = r; + this.resources = e.dict?.get("Resources"); + } + parse() { + const e = { fn: 0, args: [] }; + let t = { + scaleFactor: 1, + fontSize: 0, + fontName: "", + fontColor: new Uint8ClampedArray(3), + fillColorSpace: ColorSpaceUtils.gray, + }, + a = !1; + const r = []; + try { + for (;;) { + e.args.length = 0; + if (a || !this.read(e)) break; + const { fn: i, args: n } = e; + switch (0 | i) { + case ye: + r.push({ + scaleFactor: t.scaleFactor, + fontSize: t.fontSize, + fontName: t.fontName, + fontColor: t.fontColor.slice(), + fillColorSpace: t.fillColorSpace, + }); + break; + case we: + t = r.pop() || t; + break; + case Je: + t.scaleFactor *= Math.hypot(n[0], n[1]); + break; + case Ge: + const [e, i] = n; + e instanceof Name && (t.fontName = e.name); + "number" == typeof i && i > 0 && (t.fontSize = i * t.scaleFactor); + break; + case nt: + t.fillColorSpace = ColorSpaceUtils.parse({ + cs: n[0], + xref: this.xref, + resources: this.resources, + pdfFunctionFactory: this._pdfFunctionFactory, + globalColorSpaceCache: this.globalColorSpaceCache, + localColorSpaceCache: this._localColorSpaceCache, + }); + break; + case ct: + t.fillColorSpace.getRgbItem(n, 0, t.fontColor, 0); + break; + case ft: + ColorSpaceUtils.rgb.getRgbItem(n, 0, t.fontColor, 0); + break; + case ut: + ColorSpaceUtils.gray.getRgbItem(n, 0, t.fontColor, 0); + break; + case pt: + ColorSpaceUtils.cmyk.getRgbItem(n, 0, t.fontColor, 0); + break; + case Ze: + case Qe: + case et: + case tt: + a = !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 a = new OffscreenCanvas(1, 1); + this.ctxMeasure = a.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.setIfName("Type", "FontDescriptor"); + e.set("FontName", this.fontName); + e.set("FontFamily", "MyriadPro Regular"); + e.set("FontBBox", [0, 0, 0, 0]); + e.setIfName("FontStretch", "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.setIfName("Type", "Font"); + e.setIfName("Subtype", "CIDFontType0"); + e.setIfName("CIDToGIDMap", "Identity"); + e.set("FirstChar", this.firstChar); + e.set("LastChar", this.lastChar); + e.set("FontDescriptor", this.fontDescriptorRef); + e.set("DW", 1e3); + const t = [], + a = [...this.widths.entries()].sort(); + let r = null, + i = null; + for (const [e, n] of a) + if (r) + if (e === r + i.length) i.push(n); + else { + t.push(r, i); + r = e; + i = [n]; + } + else { + r = e; + i = [n]; + } + r && t.push(r, i); + e.set("W", t); + const n = new Dict(this.xref); + n.set("Ordering", "Identity"); + n.set("Registry", "Adobe"); + n.set("Supplement", 0); + e.set("CIDSystemInfo", n); + return this.xref.getNewPersistentRef(e); + } + get baseFontRef() { + const e = new Dict(this.xref); + e.set("BaseFont", this.fontName); + e.setIfName("Type", "Font"); + e.setIfName("Subtype", "Type0"); + e.setIfName("Encoding", "Identity-H"); + e.set("DescendantFonts", [this.descendantFontRef]); + e.setIfName("ToUnicode", "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 a of e.split(/\r\n?|\n/)) + for (const e of a.split("")) { + const a = e.charCodeAt(0); + if (this.widths.has(a)) continue; + const r = t.measureText(e), + i = Math.ceil(r.width); + this.widths.set(a, i); + this.firstChar = Math.min(a, this.firstChar); + this.lastChar = Math.max(a, this.lastChar); + } + return this.resources; + } + static getFirstPositionInfo(e, t, i) { + const [n, s, o, c] = e; + let l = o - n, + h = c - s; + t % 180 != 0 && ([l, h] = [h, l]); + const u = a * i; + return { + coords: [0, h + r * i - u], + bbox: [0, 0, l, h], + matrix: 0 !== t ? getRotationMatrix(t, h, u) : void 0, + }; + } + createAppearance(e, t, i, n, s, o) { + const c = this._createContext(), + l = []; + let h = -1 / 0; + for (const t of e.split(/\r\n?|\n/)) { + l.push(t); + const e = c.measureText(t).width; + h = Math.max(h, e); + for (const e of codePointIter(t)) { + const t = String.fromCodePoint(e); + let a = this.widths.get(e); + if (void 0 === a) { + const r = c.measureText(t); + a = Math.ceil(r.width); + this.widths.set(e, a); + this.firstChar = Math.min(e, this.firstChar); + this.lastChar = Math.max(e, this.lastChar); + } + } + } + h *= n / 1e3; + const [u, d, f, g] = t; + let p = f - u, + m = g - d; + i % 180 != 0 && ([p, m] = [m, p]); + let b = 1; + h > p && (b = p / h); + let y = 1; + const w = a * n, + x = r * n, + S = w * l.length; + S > m && (y = m / S); + const k = n * Math.min(b, y), + C = [ + "q", + `0 0 ${numberToString(p)} ${numberToString(m)} re W n`, + "BT", + `1 0 0 1 0 ${numberToString(m + x)} Tm 0 Tc ${getPdfColor(s, !0)}`, + `/${this.fontName.name} ${numberToString(k)} Tf`, + ], + { resources: v } = this; + if (1 !== (o = "number" == typeof o && o >= 0 && o <= 1 ? o : 1)) { + C.push("/R0 gs"); + const e = new Dict(this.xref), + t = new Dict(this.xref); + t.set("ca", o); + t.set("CA", o); + t.setIfName("Type", "ExtGState"); + e.set("R0", t); + v.set("ExtGState", e); + } + const F = numberToString(w); + for (const e of l) C.push(`0 -${F} Td <${stringToUTF16HexString(e)}> Tj`); + C.push("ET", "Q"); + const T = C.join("\n"), + O = new Dict(this.xref); + O.setIfName("Subtype", "Form"); + O.setIfName("Type", "XObject"); + O.set("BBox", [0, 0, p, m]); + O.set("Length", T.length); + O.set("Resources", v); + if (i) { + const e = getRotationMatrix(i, p, m); + O.set("Matrix", e); + } + const M = new StringStream(T); + M.dict = O; + return M; + } +} +const kn = [ + "m/d", + "m/d/yy", + "mm/dd/yy", + "mm/yy", + "d-mmm", + "d-mmm-yy", + "dd-mmm-yy", + "yy-mm-dd", + "mmm-yy", + "mmmm-yy", + "mmm d, yyyy", + "mmmm d, yyyy", + "m/d/yy h:MM tt", + "m/d/yy HH:MM", + ], + Cn = ["HH:MM", "h:MM tt", "HH:MM:ss", "h:MM:ss tt"]; +class NameOrNumberTree { + constructor(e, t, a) { + this.root = e; + this.xref = t; + this._type = a; + } + getAll() { + const e = new Map(); + if (!this.root) return e; + const t = this.xref, + a = new RefSet(); + a.put(this.root); + const r = [this.root]; + for (; r.length > 0; ) { + const i = t.fetchIfRef(r.shift()); + if (!(i instanceof Dict)) continue; + if (i.has("Kids")) { + const e = i.get("Kids"); + if (!Array.isArray(e)) continue; + for (const t of e) { + if (a.has(t)) + throw new FormatError(`Duplicate entry in "${this._type}" tree.`); + r.push(t); + a.put(t); + } + continue; + } + const n = i.get(this._type); + if (Array.isArray(n)) + for (let a = 0, r = n.length; a < r; a += 2) + e.set(t.fetchIfRef(n[a]), t.fetchIfRef(n[a + 1])); + } + return e; + } + getRaw(e) { + if (!this.root) return null; + const t = this.xref; + let a = t.fetchIfRef(this.root), + r = 0; + for (; a.has("Kids"); ) { + if (++r > 10) { + warn(`Search depth limit reached for "${this._type}" tree.`); + return null; + } + const i = a.get("Kids"); + if (!Array.isArray(i)) return null; + let n = 0, + s = i.length - 1; + for (; n <= s; ) { + const r = (n + s) >> 1, + o = t.fetchIfRef(i[r]), + c = o.get("Limits"); + if (e < t.fetchIfRef(c[0])) s = r - 1; + else { + if (!(e > t.fetchIfRef(c[1]))) { + a = o; + break; + } + n = r + 1; + } + } + if (n > s) return null; + } + const i = a.get(this._type); + if (Array.isArray(i)) { + let a = 0, + r = i.length - 2; + for (; a <= r; ) { + const n = (a + r) >> 1, + s = n + (1 & n), + o = t.fetchIfRef(i[s]); + if (e < o) r = s - 2; + else { + if (!(e > o)) return i[s + 1]; + a = s + 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() { + gi = Object.create(null); + })(); + !(function clearPrimitiveCaches() { + oa = Object.create(null); + ca = Object.create(null); + la = Object.create(null); + })(); + !(function clearUnicodeCaches() { + yr.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 { + #pe = !1; + constructor(e, t, a = !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"); + a || + (e.has("EF") + ? (this.#pe = !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, !0) + .replaceAll("\\\\", "\\") + .replaceAll("\\/", "/") + .replaceAll("\\", "/")); + return shadow(this, "filename", e || "unnamed"); + } + get content() { + if (!this.#pe) 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 vn = 0, + Fn = -2, + In = -3, + Tn = -4, + On = -5, + Mn = -6, + Dn = -9; +function isWhitespace(e, t) { + const a = e[t]; + return " " === a || "\n" === a || "\r" === a || "\t" === a; +} +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 a = []; + let r = t; + function skipWs() { + for (; r < e.length && isWhitespace(e, r); ) ++r; + } + for ( + ; + r < e.length && !isWhitespace(e, r) && ">" !== e[r] && "/" !== e[r]; + + ) + ++r; + const i = e.substring(t, r); + skipWs(); + for (; r < e.length && ">" !== e[r] && "/" !== e[r] && "?" !== e[r]; ) { + skipWs(); + let t = "", + i = ""; + for (; r < e.length && !isWhitespace(e, r) && "=" !== e[r]; ) { + t += e[r]; + ++r; + } + skipWs(); + if ("=" !== e[r]) return null; + ++r; + skipWs(); + const n = e[r]; + if ('"' !== n && "'" !== n) return null; + const s = e.indexOf(n, ++r); + if (s < 0) return null; + i = e.substring(r, s); + a.push({ name: t, value: this._resolveEntities(i) }); + r = s + 1; + skipWs(); + } + return { name: i, attributes: a, parsed: r - t }; + } + _parseProcessingInstruction(e, t) { + let a = t; + for ( + ; + a < e.length && + !isWhitespace(e, a) && + ">" !== e[a] && + "?" !== e[a] && + "/" !== e[a]; + + ) + ++a; + const r = e.substring(t, a); + !(function skipWs() { + for (; a < e.length && isWhitespace(e, a); ) ++a; + })(); + const i = a; + for (; a < e.length && ("?" !== e[a] || ">" !== e[a + 1]); ) ++a; + return { name: r, value: e.substring(i, a), parsed: a - t }; + } + parseXml(e) { + let t = 0; + for (; t < e.length; ) { + let a = t; + if ("<" === e[t]) { + ++a; + let t; + switch (e[a]) { + case "/": + ++a; + t = e.indexOf(">", a); + if (t < 0) { + this.onError(Dn); + return; + } + this.onEndElement(e.substring(a, t)); + a = t + 1; + break; + case "?": + ++a; + const r = this._parseProcessingInstruction(e, a); + if ("?>" !== e.substring(a + r.parsed, a + r.parsed + 2)) { + this.onError(In); + return; + } + this.onPi(r.name, r.value); + a += r.parsed + 2; + break; + case "!": + if ("--" === e.substring(a + 1, a + 3)) { + t = e.indexOf("--\x3e", a + 3); + if (t < 0) { + this.onError(On); + return; + } + this.onComment(e.substring(a + 3, t)); + a = t + 3; + } else if ("[CDATA[" === e.substring(a + 1, a + 8)) { + t = e.indexOf("]]>", a + 8); + if (t < 0) { + this.onError(Fn); + return; + } + this.onCdata(e.substring(a + 8, t)); + a = t + 3; + } else { + if ("DOCTYPE" !== e.substring(a + 1, a + 8)) { + this.onError(Mn); + return; + } + { + const r = e.indexOf("[", a + 8); + let i = !1; + t = e.indexOf(">", a + 8); + if (t < 0) { + this.onError(Tn); + return; + } + if (r > 0 && t > r) { + t = e.indexOf("]>", a + 8); + if (t < 0) { + this.onError(Tn); + return; + } + i = !0; + } + const n = e.substring(a + 8, t + (i ? 1 : 0)); + this.onDoctype(n); + a = t + (i ? 2 : 1); + } + } + break; + default: + const i = this._parseContent(e, a); + if (null === i) { + this.onError(Mn); + return; + } + let n = !1; + if ("/>" === e.substring(a + i.parsed, a + i.parsed + 2)) n = !0; + else if (">" !== e.substring(a + i.parsed, a + i.parsed + 1)) { + this.onError(Dn); + return; + } + this.onBeginElement(i.name, i.attributes, n); + a += i.parsed + (n ? 2 : 1); + } + } else { + for (; a < e.length && "<" !== e[a]; ) a++; + const r = e.substring(t, a); + this.onText(this._resolveEntities(r)); + } + t = a; + } + } + onResolveEntity(e) { + return `&${e};`; + } + onPi(e, t) {} + onComment(e) {} + onCdata(e) {} + onDoctype(e) {} + onText(e) {} + onBeginElement(e, t, a) {} + onEndElement(e) {} + onError(e) {} +} +class SimpleDOMNode { + constructor(e, t) { + this.nodeName = e; + this.nodeValue = t; + Object.defineProperty(this, "parentNode", { value: null, writable: !0 }); + } + get firstChild() { + return this.childNodes?.[0]; + } + get nextSibling() { + const e = this.parentNode.childNodes; + if (!e) return; + const t = e.indexOf(this); + return -1 !== t ? e[t + 1] : void 0; + } + get textContent() { + return this.childNodes + ? this.childNodes.map((e) => e.textContent).join("") + : this.nodeValue || ""; + } + get children() { + return this.childNodes || []; + } + hasChildNodes() { + return this.childNodes?.length > 0; + } + searchNode(e, t) { + if (t >= e.length) return this; + const a = e[t]; + if (a.name.startsWith("#") && t < e.length - 1) + return this.searchNode(e, t + 1); + const r = []; + let i = this; + for (;;) { + if (a.name === i.nodeName) { + if (0 !== a.pos) { + if (0 === r.length) return null; + { + const [n] = r.pop(); + let s = 0; + for (const r of n.childNodes) + if (a.name === r.nodeName) { + if (s === a.pos) return r.searchNode(e, t + 1); + s++; + } + return i.searchNode(e, t + 1); + } + } + { + const a = i.searchNode(e, t + 1); + if (null !== a) return a; + } + } + if (i.childNodes?.length > 0) { + r.push([i, 0]); + i = i.childNodes[0]; + } else { + if (0 === r.length) return null; + for (; 0 !== r.length; ) { + const [e, t] = r.pop(), + a = t + 1; + if (a < e.childNodes.length) { + r.push([e, a]); + i = e.childNodes[a]; + break; + } + } + if (0 === r.length) return null; + } + } + } + dump(e) { + if ("#text" !== this.nodeName) { + e.push(`<${this.nodeName}`); + if (this.attributes) + for (const t of this.attributes) + e.push(` ${t.name}="${encodeToXmlString(t.value)}"`); + if (this.hasChildNodes()) { + e.push(">"); + 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 = vn; + this._hasAttributes = e; + this._lowerCaseName = t; + } + parseFromString(e) { + this._currentFragment = []; + this._stack = []; + this._errorCode = vn; + this.parseXml(e); + if (this._errorCode !== vn) return; + const [t] = this._currentFragment; + return t ? { documentElement: t } : void 0; + } + onText(e) { + if ( + (function isWhitespaceString(e) { + for (let t = 0, a = e.length; t < a; t++) + if (!isWhitespace(e, t)) return !1; + return !0; + })(e) + ) + return; + const t = new SimpleDOMNode("#text", e); + this._currentFragment.push(t); + } + onCdata(e) { + const t = new SimpleDOMNode("#text", e); + this._currentFragment.push(t); + } + onBeginElement(e, t, a) { + this._lowerCaseName && (e = e.toLowerCase()); + const r = new SimpleDOMNode(e); + r.childNodes = []; + this._hasAttributes && (r.attributes = t); + this._currentFragment.push(r); + if (!a) { + this._stack.push(this._currentFragment); + this._currentFragment = r.childNodes; + } + } + onEndElement(e) { + this._currentFragment = this._stack.pop() || []; + const t = this._currentFragment.at(-1); + if (!t) return null; + for (const e of t.childNodes) e.parentNode = t; + return t; + } + onError(e) { + this._errorCode = e; + } +} +class MetadataParser { + constructor(e) { + e = this._repair(e); + const t = new SimpleXMLParser({ lowerCaseName: !0 }).parseFromString(e); + this._metadataMap = new Map(); + this._data = e; + t && this._parse(t); + } + _repair(e) { + return e + .replace(/^[^<]+/, "") + .replaceAll(/>\\376\\377([^<]+)/g, function (e, t) { + const a = t + .replaceAll(/\\([0-3])([0-7])([0-7])/g, function (e, t, a, r) { + return String.fromCharCode(64 * t + 8 * a + 1 * r); + }) + .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.`); + }), + r = [">"]; + for (let e = 0, t = a.length; e < t; e += 2) { + const t = 256 * a.charCodeAt(e) + a.charCodeAt(e + 1); + t >= 32 && t < 127 && 60 !== t && 62 !== t && 38 !== t + ? r.push(String.fromCharCode(t)) + : r.push("&#x" + (65536 + t).toString(16).substring(1) + ";"); + } + return r.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, + a = this._getSequence(t) || []; + this._metadataMap.set( + e.nodeName, + a.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 Bn = 1, + Rn = 2, + Nn = 3, + En = 4, + Pn = 5; +class StructTreeRoot { + constructor(e, t, a) { + this.xref = e; + this.dict = t; + this.ref = a instanceof Ref ? a : null; + this.roleMap = new Map(); + this.structParentIds = null; + this.kidRefToPosition = void 0; + } + getKidPosition(e) { + if (void 0 === this.kidRefToPosition) { + const e = this.dict.get("K"); + if (Array.isArray(e)) { + const t = (this.kidRefToPosition = new Map()); + for (let a = 0, r = e.length; a < r; a++) { + const r = e[a]; + r && t.set(r.toString(), a); + } + } else + this.kidRefToPosition = + e instanceof Dict ? new Map([[e.objId, 0]]) : e ? null : new Map(); + } + return this.kidRefToPosition ? (this.kidRefToPosition.get(e) ?? NaN) : -1; + } + init() { + this.readRoleMap(); + } + #me(e, t, a) { + if (!(e instanceof Ref) || t < 0) return; + this.structParentIds ||= new RefSetCache(); + let r = this.structParentIds.get(e); + if (!r) { + r = []; + this.structParentIds.put(e, r); + } + r.push([t, a]); + } + addAnnotationIdToPage(e, t) { + this.#me(e, t, En); + } + readRoleMap() { + const e = this.dict.get("RoleMap"); + if (e instanceof Dict) + for (const [t, a] of e) a instanceof Name && this.roleMap.set(t, a.name); + } + static async canCreateStructureTree({ + catalogRef: e, + pdfManager: t, + newAnnotationsByPage: a, + }) { + if (!(e instanceof Ref)) { + warn("Cannot save the struct tree: no catalog reference."); + return !1; + } + let r = 0, + i = !0; + for (const [e, n] of a) { + const { ref: a } = await t.getPage(e); + if (!(a instanceof Ref)) { + warn(`Cannot save the struct tree: page ${e} has no ref.`); + i = !0; + break; + } + for (const e of n) + if (e.accessibilityData?.type) { + e.parentTreeId = r++; + i = !1; + } + } + if (i) { + for (const e of a.values()) for (const t of e) delete t.parentTreeId; + return !1; + } + return !0; + } + static async createStructureTree({ + newAnnotationsByPage: e, + xref: t, + catalogRef: a, + pdfManager: r, + changes: i, + }) { + const n = await r.ensureCatalog("cloneDict"), + s = new RefSetCache(); + s.put(a, n); + const o = t.getNewTemporaryRef(); + n.set("StructTreeRoot", o); + const c = new Dict(t); + c.set("Type", Name.get("StructTreeRoot")); + const l = t.getNewTemporaryRef(); + c.set("ParentTree", l); + const h = []; + c.set("K", h); + s.put(o, c); + const u = new Dict(t), + d = []; + u.set("Nums", d); + const f = await this.#be({ + newAnnotationsByPage: e, + structTreeRootRef: o, + structTreeRoot: null, + kids: h, + nums: d, + xref: t, + pdfManager: r, + changes: i, + cache: s, + }); + c.set("ParentTreeNextKey", f); + s.put(l, u); + for (const [e, t] of s.items()) i.put(e, { data: t }); + } + async canUpdateStructTree({ pdfManager: e, newAnnotationsByPage: t }) { + 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 r = this.dict.get("ParentTree"); + if (!(r instanceof Dict)) { + warn("Cannot update the struct tree: ParentTree isn't a dict."); + return !1; + } + const i = r.get("Nums"); + if (!Array.isArray(i)) { + warn("Cannot update the struct tree: nums isn't an array."); + return !1; + } + const n = new NumberTree(r, this.xref); + for (const a of t.keys()) { + const { pageDict: t } = await e.getPage(a); + if (!t.has("StructParents")) continue; + const r = t.get("StructParents"); + if (!Number.isInteger(r) || !Array.isArray(n.get(r))) { + warn(`Cannot save the struct tree: page ${a} has a wrong id.`); + return !1; + } + } + let s = !0; + for (const [r, i] of t) { + const { pageDict: t } = await e.getPage(r); + StructTreeRoot.#ye({ + elements: i, + xref: this.xref, + pageDict: t, + numberTree: n, + }); + for (const e of i) + if (e.accessibilityData?.type) { + e.accessibilityData.structParent >= 0 || (e.parentTreeId = a++); + s = !1; + } + } + if (s) { + for (const e of t.values()) + for (const t of e) { + delete t.parentTreeId; + delete t.structTreeParent; + } + return !1; + } + return !0; + } + async updateStructureTree({ + newAnnotationsByPage: e, + pdfManager: t, + changes: a, + }) { + const { ref: r, xref: i } = this, + n = this.dict.clone(), + s = new RefSetCache(); + s.put(r, n); + let o, + c = n.getRaw("ParentTree"); + if (c instanceof Ref) o = i.fetch(c); + else { + o = c; + c = i.getNewTemporaryRef(); + n.set("ParentTree", c); + } + o = o.clone(); + s.put(c, o); + let l = o.getRaw("Nums"), + h = null; + if (l instanceof Ref) { + h = l; + l = i.fetch(h); + } + l = l.slice(); + h || o.set("Nums", l); + const u = await StructTreeRoot.#be({ + newAnnotationsByPage: e, + structTreeRootRef: r, + structTreeRoot: this, + kids: null, + nums: l, + xref: i, + pdfManager: t, + changes: a, + cache: s, + }); + if (-1 !== u) { + n.set("ParentTreeNextKey", u); + h && s.put(h, l); + for (const [e, t] of s.items()) a.put(e, { data: t }); + } + } + static async #be({ + newAnnotationsByPage: e, + structTreeRootRef: t, + structTreeRoot: a, + kids: r, + nums: i, + xref: n, + pdfManager: s, + changes: o, + cache: c, + }) { + const l = Name.get("OBJR"); + let h, + u = -1; + for (const [d, f] of e) { + const e = await s.getPage(d), + { ref: g } = e, + p = g instanceof Ref; + for (const { + accessibilityData: s, + ref: m, + parentTreeId: b, + structTreeParent: y, + } of f) { + if (!s?.type) continue; + const { structParent: f } = s; + if (a && Number.isInteger(f) && f >= 0) { + let t = (h ||= new Map()).get(d); + if (void 0 === t) { + t = new StructTreePage(a, e.pageDict).collectObjects(g); + h.set(d, t); + } + const r = t?.get(f); + if (r) { + const e = n.fetch(r).clone(); + StructTreeRoot.#we(e, s); + o.put(r, { data: e }); + continue; + } + } + u = Math.max(u, b); + const w = n.getNewTemporaryRef(), + x = new Dict(n); + StructTreeRoot.#we(x, s); + await this.#xe({ + structTreeParent: y, + tagDict: x, + newTagRef: w, + structTreeRootRef: t, + fallbackKids: r, + xref: n, + cache: c, + }); + const S = new Dict(n); + x.set("K", S); + S.set("Type", l); + p && S.set("Pg", g); + S.set("Obj", m); + c.put(w, x); + i.push(b, w); + } + } + return u + 1; + } + static #we( + e, + { type: t, title: a, lang: r, alt: i, expanded: n, actualText: s }, + ) { + e.set("S", Name.get(t)); + a && e.set("T", stringToAsciiOrUTF16BE(a)); + r && e.set("Lang", stringToAsciiOrUTF16BE(r)); + i && e.set("Alt", stringToAsciiOrUTF16BE(i)); + n && e.set("E", stringToAsciiOrUTF16BE(n)); + s && e.set("ActualText", stringToAsciiOrUTF16BE(s)); + } + static #ye({ elements: e, xref: t, pageDict: a, numberTree: r }) { + const i = new Map(); + for (const t of e) + if (t.structTreeParentId) { + const e = parseInt(t.structTreeParentId.split("_mc")[1], 10); + let a = i.get(e); + if (!a) { + a = []; + i.set(e, a); + } + a.push(t); + } + const n = a.get("StructParents"); + if (!Number.isInteger(n)) return; + const s = r.get(n), + updateElement = (e, a, r) => { + const n = i.get(e); + if (n) { + const e = a.getRaw("P"), + i = t.fetchIfRef(e); + if (e instanceof Ref && i instanceof Dict) { + const e = { ref: r, dict: a }; + for (const t of n) t.structTreeParent = e; + } + return !0; + } + return !1; + }; + for (const e of s) { + if (!(e instanceof Ref)) continue; + const a = t.fetch(e), + r = a.get("K"); + if (Number.isInteger(r)) updateElement(r, a, e); + else if (Array.isArray(r)) + for (let i of r) { + i = t.fetchIfRef(i); + if (Number.isInteger(i) && updateElement(i, a, e)) break; + if (!(i instanceof Dict)) continue; + if (!isName(i.get("Type"), "MCR")) break; + const r = i.get("MCID"); + if (Number.isInteger(r) && updateElement(r, a, e)) break; + } + } + } + static async #xe({ + structTreeParent: e, + tagDict: t, + newTagRef: a, + structTreeRootRef: r, + fallbackKids: i, + xref: n, + cache: s, + }) { + let o, + c = null; + if (e) { + ({ ref: c } = e); + o = e.dict.getRaw("P") || r; + } else o = r; + t.set("P", o); + const l = n.fetchIfRef(o); + if (!l) { + i.push(a); + return; + } + let h = s.get(o); + if (!h) { + h = l.clone(); + s.put(o, h); + } + const u = h.getRaw("K"); + let d = u instanceof Ref ? s.get(u) : null; + if (!d) { + d = n.fetchIfRef(u); + d = Array.isArray(d) ? d.slice() : [u]; + const e = n.getNewTemporaryRef(); + h.set("K", e); + s.put(e, d); + } + const f = d.indexOf(c); + d.splice(f >= 0 ? f + 1 : d.length, 0, a); + } +} +class StructElementNode { + constructor(e, t) { + this.tree = e; + this.xref = e.xref; + this.dict = t; + this.kids = []; + this.parseKids(); + } + get role() { + const e = this.dict.get("S"), + t = e instanceof Name ? e.name : "", + { root: a } = this.tree; + return a.roleMap.get(t) ?? t; + } + get mathML() { + let e = this.dict.get("AF") || []; + Array.isArray(e) || (e = [e]); + for (let t of e) { + t = this.xref.fetchIfRef(t); + if (!(t instanceof Dict)) continue; + if (!isName(t.get("Type"), "Filespec")) continue; + if (!isName(t.get("AFRelationship"), "Supplement")) continue; + const e = t.get("EF"); + if (!(e instanceof Dict)) continue; + const a = e.get("UF") || e.get("F"); + if ( + a instanceof BaseStream && + isName(a.dict.get("Type"), "EmbeddedFile") && + isName(a.dict.get("Subtype"), "application/mathml+xml") + ) + return stringToUTF8String(a.getString()); + } + const t = this.dict.get("A"); + if (t instanceof Dict) { + if (isName(t.get("O"), "MSFT_Office")) { + const e = t.get("MSFT_MathML"); + return e ? stringToPDFString(e) : null; + } + } + return null; + } + parseKids() { + let e = null; + const t = this.dict.getRaw("Pg"); + t instanceof Ref && (e = t.toString()); + const a = this.dict.get("K"); + if (Array.isArray(a)) + for (const t of a) { + const a = this.parseKid(e, this.xref.fetchIfRef(t)); + a && this.kids.push(a); + } + else { + const t = this.parseKid(e, a); + t && this.kids.push(t); + } + } + parseKid(e, t) { + if (Number.isInteger(t)) + return this.tree.pageDict.objId !== e + ? null + : new StructElement({ type: Bn, mcid: t, pageObjId: e }); + if (!(t instanceof Dict)) return null; + const a = t.getRaw("Pg"); + a instanceof Ref && (e = a.toString()); + const r = t.get("Type") instanceof Name ? t.get("Type").name : null; + if ("MCR" === r) { + if (this.tree.pageDict.objId !== e) return null; + const a = t.getRaw("Stm"); + return new StructElement({ + type: Rn, + refObjId: a instanceof Ref ? a.toString() : null, + pageObjId: e, + mcid: t.get("MCID"), + }); + } + if ("OBJR" === r) { + if (this.tree.pageDict.objId !== e) return null; + const a = t.getRaw("Obj"); + return new StructElement({ + type: Nn, + refObjId: a instanceof Ref ? a.toString() : null, + pageObjId: e, + }); + } + return new StructElement({ type: Pn, dict: t }); + } +} +class StructElement { + constructor({ + type: e, + dict: t = null, + mcid: a = null, + pageObjId: r = null, + refObjId: i = null, + }) { + this.type = e; + this.dict = t; + this.mcid = a; + this.pageObjId = r; + this.refObjId = i; + this.parentNode = null; + } +} +class StructTreePage { + constructor(e, t) { + this.root = e; + this.xref = e?.xref ?? null; + this.rootDict = 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 a = this.root.structParentIds?.get(e); + if (!a) return null; + const r = new Map(), + i = new NumberTree(t, this.xref); + for (const [e] of a) { + const t = i.getRaw(e); + t instanceof Ref && r.set(e, t); + } + return r; + } + parse(e) { + if (!(this.root && this.rootDict && e instanceof Ref)) return; + const t = this.rootDict.get("ParentTree"); + if (!t) return; + const a = this.pageDict.get("StructParents"), + r = this.root.structParentIds?.get(e); + if (!Number.isInteger(a) && !r) return; + const i = new Map(), + n = new NumberTree(t, this.xref); + if (Number.isInteger(a)) { + const e = n.get(a); + if (Array.isArray(e)) + for (const t of e) + t instanceof Ref && this.addNode(this.xref.fetch(t), i); + } + if (r) + for (const [e, t] of r) { + const a = n.get(e); + if (a) { + const e = this.addNode(this.xref.fetchIfRef(a), i); + 1 === e?.kids?.length && + e.kids[0].type === Nn && + (e.kids[0].type = t); + } + } + } + addNode(e, t, a = 0) { + if (a > 40) { + warn("StructTree MAX_DEPTH reached."); + return null; + } + if (!(e instanceof Dict)) return null; + if (t.has(e)) return t.get(e); + const r = new StructElementNode(this, e); + t.set(e, r); + switch (r.role) { + case "L": + case "LBody": + case "LI": + case "Table": + case "THead": + case "TBody": + case "TFoot": + case "TR": + for (const e of r.kids) e.type === Pn && this.addNode(e.dict, t, a - 1); + } + const i = e.get("P"); + if (!(i instanceof Dict) || isName(i.get("Type"), "StructTreeRoot")) { + this.addTopLevelNode(e, r) || t.delete(e); + return r; + } + const n = this.addNode(i, t, a + 1); + if (!n) return r; + let s = !1; + for (const t of n.kids) + if (t.type === Pn && t.dict === e) { + t.parentNode = r; + s = !0; + } + s || t.delete(e); + return r; + } + addTopLevelNode(e, t) { + const a = this.root.getKidPosition(e.objId); + if (isNaN(a)) return !1; + -1 !== a && (this.nodes[a] = t); + return !0; + } + get serializable() { + function nodeToSerializable(e, t, a = 0) { + if (a > 40) { + warn("StructTree too deep to be fully serialized."); + return; + } + const r = Object.create(null); + r.role = e.role; + r.children = []; + t.children.push(r); + let i = e.dict.get("Alt"); + "string" != typeof i && (i = e.dict.get("ActualText")); + "string" == typeof i && (r.alt = stringToPDFString(i)); + if ("Formula" === r.role) { + const { mathML: t } = e; + t && (r.mathML = t); + } + const n = e.dict.get("A"); + if (n instanceof Dict) { + const e = lookupNormalRect(n.getArray("BBox"), null); + if (e) r.bbox = e; + else { + const e = n.get("Width"), + t = n.get("Height"); + "number" == typeof e && + e > 0 && + "number" == typeof t && + t > 0 && + (r.bbox = [0, 0, e, t]); + } + } + const s = e.dict.get("Lang"); + "string" == typeof s && (r.lang = stringToPDFString(s)); + for (const t of e.kids) { + const e = t.type === Pn ? t.parentNode : null; + e + ? nodeToSerializable(e, r, a + 1) + : t.type === Bn || t.type === Rn + ? r.children.push({ + type: "content", + id: `p${t.pageObjId}_mc${t.mcid}`, + }) + : t.type === Nn + ? r.children.push({ type: "object", id: t.refObjId }) + : t.type === En && + r.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; + } +} +const Ln = function _isValidExplicitDest(e, t, a) { + if (!Array.isArray(a) || a.length < 2) return !1; + const [r, i, ...n] = a; + if (!e(r) && !Number.isInteger(r)) return !1; + if (!t(i)) return !1; + const s = n.length; + let o = !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; + o = !1; + break; + default: + return !1; + } + for (const e of n) + if (!("number" == typeof e || (o && null === e))) return !1; + return !0; +}.bind(null, (e) => e instanceof Ref, isName); +function fetchDest(e) { + e instanceof Dict && (e = e.get("D")); + return Ln(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, !0); + if (Ln(t)) return JSON.stringify(t); + } + return null; +} +class Catalog { + #Se = null; + #Ae = null; + builtInCMapCache = new Map(); + fontCache = new RefSetCache(); + globalColorSpaceCache = new GlobalColorSpaceCache(); + globalImageCache = new GlobalImageCache(); + nonBlendModesSet = new RefSet(); + pageDictCache = new RefSetCache(); + pageIndexCache = new RefSetCache(); + pageKidsCountCache = new RefSetCache(); + standardFontDataCache = new Map(); + systemFontCache = new Map(); + constructor(e, t) { + this.pdfManager = e; + this.xref = t; + this.#Ae = t.getCatalogObj(); + if (!(this.#Ae instanceof Dict)) + throw new FormatError("Catalog object is not a dictionary."); + this.toplevelPagesDict; + } + cloneDict() { + return this.#Ae.clone(); + } + get version() { + const e = this.#Ae.get("Version"); + if (e instanceof Name) { + if (ua.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.#Ae.get("Lang"); + return shadow( + this, + "lang", + e && "string" == typeof e ? stringToPDFString(e) : null, + ); + } + get needsRendering() { + const e = this.#Ae.get("NeedsRendering"); + return shadow(this, "needsRendering", "boolean" == typeof e && e); + } + get collection() { + let e = null; + try { + const t = this.#Ae.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.#Ae.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.#Ae.getRaw("AcroForm"); + return shadow(this, "acroFormRef", e instanceof Ref ? e : null); + } + get metadata() { + const e = this.#Ae.getRaw("Metadata"); + if (!(e instanceof Ref)) return shadow(this, "metadata", null); + let t = null; + try { + const a = this.xref.fetch(e, !this.xref.encrypt?.encryptMetadata); + if (a instanceof BaseStream && a.dict instanceof Dict) { + const e = a.dict.get("Type"), + r = a.dict.get("Subtype"); + if (isName(e, "Metadata") && isName(r, "XML")) { + const e = stringToUTF8String(a.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.#ke(); + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn("Unable to read mark info."); + } + return shadow(this, "markInfo", e); + } + #ke() { + const e = this.#Ae.get("MarkInfo"); + if (!(e instanceof Dict)) return null; + const t = { Marked: !1, UserProperties: !1, Suspects: !1 }; + for (const a in t) { + const r = e.get(a); + "boolean" == typeof r && (t[a] = r); + } + return t; + } + get structTreeRoot() { + let e = null; + try { + e = this.#Ce(); + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn("Unable read to structTreeRoot info."); + } + return shadow(this, "structTreeRoot", e); + } + #Ce() { + const e = this.#Ae.getRaw("StructTreeRoot"), + t = this.xref.fetchIfRef(e); + if (!(t instanceof Dict)) return null; + const a = new StructTreeRoot(this.xref, t, e); + a.init(); + return a; + } + get toplevelPagesDict() { + const e = this.#Ae.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.#ve(); + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn("Unable to read document outline."); + } + return shadow(this, "documentOutline", e); + } + #ve() { + let e = this.#Ae.get("Outlines"); + if (!(e instanceof Dict)) return null; + e = e.getRaw("First"); + if (!(e instanceof Ref)) return null; + const t = { items: [] }, + a = [{ obj: e, parent: t }], + r = new RefSet(); + r.put(e); + const i = this.xref, + n = new Uint8ClampedArray(3); + for (; a.length > 0; ) { + const t = a.shift(), + s = i.fetchIfRef(t.obj); + if (null === s) continue; + s.has("Title") || warn("Invalid outline item encountered."); + const o = { url: null, dest: null, action: null }; + Catalog.parseDestDictionary({ + destDict: s, + resultObj: o, + docBaseUrl: this.baseUrl, + docAttachments: this.attachments, + }); + const c = s.get("Title"), + l = s.get("F") || 0, + h = s.getArray("C"), + u = s.get("Count"); + let d = n; + !isNumberArray(h, 3) || + (0 === h[0] && 0 === h[1] && 0 === h[2]) || + (d = ColorSpaceUtils.rgb.getRgb(h, 0)); + const f = { + action: o.action, + attachment: o.attachment, + dest: o.dest, + url: o.url, + unsafeUrl: o.unsafeUrl, + newWindow: o.newWindow, + setOCGState: o.setOCGState, + title: "string" == typeof c ? stringToPDFString(c) : "", + color: d, + count: Number.isInteger(u) ? u : void 0, + bold: !!(2 & l), + italic: !!(1 & l), + items: [], + }; + t.parent.items.push(f); + e = s.getRaw("First"); + if (e instanceof Ref && !r.has(e)) { + a.push({ obj: e, parent: f }); + r.put(e); + } + e = s.getRaw("Next"); + if (e instanceof Ref && !r.has(e)) { + a.push({ obj: e, parent: t.parent }); + r.put(e); + } + } + return t.items.length > 0 ? t.items : null; + } + get permissions() { + let e = null; + try { + e = this.#Fe(); + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn("Unable to read permissions."); + } + return shadow(this, "permissions", e); + } + #Fe() { + 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 a = []; + for (const e in w) { + const r = w[e]; + t & r && a.push(r); + } + return a; + } + get optionalContentConfig() { + let e = null; + try { + const t = this.#Ae.get("OCProperties"); + if (!t) return shadow(this, "optionalContentConfig", null); + const a = t.get("D"); + if (!a) return shadow(this, "optionalContentConfig", null); + const r = t.get("OCGs"); + if (!Array.isArray(r)) return shadow(this, "optionalContentConfig", null); + const i = new RefSetCache(); + for (const e of r) e instanceof Ref && !i.has(e) && i.put(e, this.#Ie(e)); + e = this.#Te(a, i); + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn(`Unable to read optional content config: ${e}`); + } + return shadow(this, "optionalContentConfig", e); + } + #Ie(e) { + const t = this.xref.fetch(e), + a = { + id: e.toString(), + name: null, + intent: null, + usage: { print: null, view: null }, + rbGroups: [], + }, + r = t.get("Name"); + "string" == typeof r && (a.name = stringToPDFString(r)); + let i = t.getArray("Intent"); + Array.isArray(i) || (i = [i]); + i.every((e) => e instanceof Name) && (a.intent = i.map((e) => e.name)); + const n = t.get("Usage"); + if (!(n instanceof Dict)) return a; + const s = a.usage, + o = n.get("Print"); + if (o instanceof Dict) { + const e = o.get("PrintState"); + if (e instanceof Name) + switch (e.name) { + case "ON": + case "OFF": + s.print = { printState: e.name }; + } + } + const c = n.get("View"); + if (c instanceof Dict) { + const e = c.get("ViewState"); + if (e instanceof Name) + switch (e.name) { + case "ON": + case "OFF": + s.view = { viewState: e.name }; + } + } + return a; + } + #Te(e, t) { + function parseOnOff(e) { + const a = []; + if (Array.isArray(e)) + for (const r of e) r instanceof Ref && t.has(r) && a.push(r.toString()); + return a; + } + function parseOrder(e, a = 0) { + if (!Array.isArray(e)) return null; + const i = []; + for (const n of e) { + if (n instanceof Ref && t.has(n)) { + r.put(n); + i.push(n.toString()); + continue; + } + const e = parseNestedOrder(n, a); + e && i.push(e); + } + if (a > 0) return i; + const n = []; + for (const [e] of t.items()) r.has(e) || n.push(e.toString()); + n.length && i.push({ name: null, order: n }); + return i; + } + function parseNestedOrder(e, t) { + if (++t > i) { + warn("parseNestedOrder - reached MAX_NESTED_LEVELS."); + return null; + } + const r = a.fetchIfRef(e); + if (!Array.isArray(r)) return null; + const n = a.fetchIfRef(r[0]); + if ("string" != typeof n) return null; + const s = parseOrder(r.slice(1), t); + return s?.length ? { name: stringToPDFString(n), order: s } : null; + } + const a = this.xref, + r = new RefSet(), + i = 10; + !(function parseRBGroups(e) { + if (Array.isArray(e)) + for (const r of e) { + const e = a.fetchIfRef(r); + if (!Array.isArray(e) || !e.length) continue; + const i = new Set(); + for (const a of e) + if (a instanceof Ref && t.has(a) && !i.has(a.toString())) { + i.add(a.toString()); + t.get(a).rbGroups.push(i); + } + } + })(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.#Se = e; + } + get hasActualNumPages() { + return null !== this.#Se; + } + 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.#Se ?? this._pagesCount; + } + get destinations() { + const e = this.#Oe(), + t = Object.create(null); + for (const a of e) + if (a instanceof NameTree) + for (const [e, r] of a.getAll()) { + const a = fetchDest(r); + a && (t[stringToPDFString(e, !0)] = a); + } + else if (a instanceof Dict) + for (const [e, r] of a) { + const a = fetchDest(r); + a && (t[stringToPDFString(e, !0)] ||= a); + } + return shadow(this, "destinations", t); + } + getDestination(e) { + if (this.hasOwnProperty("destinations")) + return this.destinations[e] ?? null; + const t = this.#Oe(); + for (const a of t) + if (a instanceof NameTree || a instanceof Dict) { + const t = fetchDest(a.get(e)); + if (t) return t; + } + if (t.length) { + const t = this.destinations[e]; + if (t) return t; + } + return null; + } + #Oe() { + const e = this.#Ae.get("Names"), + t = []; + e?.has("Dests") && t.push(new NameTree(e.getRaw("Dests"), this.xref)); + this.#Ae.has("Dests") && t.push(this.#Ae.get("Dests")); + return t; + } + get pageLabels() { + let e = null; + try { + e = this.#Me(); + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn("Unable to read page labels."); + } + return shadow(this, "pageLabels", e); + } + #Me() { + const e = this.#Ae.getRaw("PageLabels"); + if (!e) return null; + const t = new Array(this.numPages); + let a = null, + r = ""; + const i = new NumberTree(e, this.xref).getAll(); + let n = "", + s = 1; + for (let e = 0, o = this.numPages; e < o; e++) { + const o = i.get(e); + if (void 0 !== o) { + if (!(o instanceof Dict)) + throw new FormatError("PageLabel is not a dictionary."); + if (o.has("Type") && !isName(o.get("Type"), "PageLabel")) + throw new FormatError("Invalid type in PageLabel dictionary."); + if (o.has("S")) { + const e = o.get("S"); + if (!(e instanceof Name)) + throw new FormatError("Invalid style in PageLabel dictionary."); + a = e.name; + } else a = null; + if (o.has("P")) { + const e = o.get("P"); + if ("string" != typeof e) + throw new FormatError("Invalid prefix in PageLabel dictionary."); + r = stringToPDFString(e); + } else r = ""; + if (o.has("St")) { + const e = o.get("St"); + if (!(Number.isInteger(e) && e >= 1)) + throw new FormatError("Invalid start in PageLabel dictionary."); + s = e; + } else s = 1; + } + switch (a) { + case "D": + n = s; + break; + case "R": + case "r": + n = toRomanNumerals(s, "r" === a); + break; + case "A": + case "a": + const e = 26, + t = "a" === a ? 97 : 65, + r = s - 1; + n = String.fromCharCode(t + (r % e)).repeat(Math.floor(r / e) + 1); + break; + default: + if (a) + throw new FormatError( + `Invalid style "${a}" in PageLabel dictionary.`, + ); + n = ""; + } + t[e] = r + n; + s++; + } + return t; + } + get pageLayout() { + const e = this.#Ae.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.#Ae.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.#Ae.get("ViewerPreferences"); + if (!(e instanceof Dict)) return shadow(this, "viewerPreferences", null); + let t = null; + for (const [a, r] of e) { + let e; + switch (a) { + case "HideToolbar": + case "HideMenubar": + case "HideWindowUI": + case "FitWindow": + case "CenterWindow": + case "DisplayDocTitle": + case "PickTrayByPDFSize": + "boolean" == typeof r && (e = r); + break; + case "NonFullScreenPageMode": + if (r instanceof Name) + switch (r.name) { + case "UseNone": + case "UseOutlines": + case "UseThumbs": + case "UseOC": + e = r.name; + break; + default: + e = "UseNone"; + } + break; + case "Direction": + if (r instanceof Name) + switch (r.name) { + case "L2R": + case "R2L": + e = r.name; + break; + default: + e = "L2R"; + } + break; + case "ViewArea": + case "ViewClip": + case "PrintArea": + case "PrintClip": + if (r instanceof Name) + switch (r.name) { + case "MediaBox": + case "CropBox": + case "BleedBox": + case "TrimBox": + case "ArtBox": + e = r.name; + break; + default: + e = "CropBox"; + } + break; + case "PrintScaling": + if (r instanceof Name) + switch (r.name) { + case "None": + case "AppDefault": + e = r.name; + break; + default: + e = "AppDefault"; + } + break; + case "Duplex": + if (r instanceof Name) + switch (r.name) { + case "Simplex": + case "DuplexFlipShortEdge": + case "DuplexFlipLongEdge": + e = r.name; + break; + default: + e = "None"; + } + break; + case "PrintPageRange": + if (Array.isArray(r) && r.length % 2 == 0) { + r.every( + (e, t, a) => + Number.isInteger(e) && + e > 0 && + (0 === t || e >= a[t - 1]) && + e <= this.numPages, + ) && (e = r); + } + break; + case "NumCopies": + Number.isInteger(r) && r > 0 && (e = r); + break; + default: + warn(`Ignoring non-standard key in ViewerPreferences: ${a}.`); + continue; + } + if (void 0 !== e) { + t ??= Object.create(null); + t[a] = e; + } else warn(`Bad value, for key "${a}", in ViewerPreferences: ${r}.`); + } + return shadow(this, "viewerPreferences", t); + } + get openAction() { + const e = this.#Ae.get("OpenAction"), + t = Object.create(null); + if (e instanceof Dict) { + const a = new Dict(this.xref); + a.set("A", e); + const r = { url: null, dest: null, action: null }; + Catalog.parseDestDictionary({ destDict: a, resultObj: r }); + Array.isArray(r.dest) + ? (t.dest = r.dest) + : r.action && (t.action = r.action); + } else Ln(e) && (t.dest = e); + return shadow(this, "openAction", objectSize(t) > 0 ? t : null); + } + get attachments() { + const e = this.#Ae.get("Names"); + let t = null; + if (e instanceof Dict && e.has("EmbeddedFiles")) { + const a = new NameTree(e.getRaw("EmbeddedFiles"), this.xref); + for (const [e, r] of a.getAll()) { + const a = new FileSpec(r, this.xref); + t ??= Object.create(null); + t[stringToPDFString(e, !0)] = a.serializable; + } + } + return shadow(this, "attachments", t); + } + get xfaImages() { + const e = this.#Ae.get("Names"); + let t = null; + if (e instanceof Dict && e.has("XFAImages")) { + const a = new NameTree(e.getRaw("XFAImages"), this.xref); + for (const [e, r] of a.getAll()) + if (r instanceof BaseStream) { + t ??= new Map(); + t.set(stringToPDFString(e, !0), r.getBytes()); + } + } + return shadow(this, "xfaImages", t); + } + #De() { + const e = this.#Ae.get("Names"); + let t = null; + function appendIfJavaScriptDict(e, a) { + if (!(a instanceof Dict)) return; + if (!isName(a.get("S"), "JavaScript")) return; + let r = a.get("JS"); + if (r instanceof BaseStream) r = r.getString(); + else if ("string" != typeof r) return; + r = stringToPDFString(r, !0).replaceAll("\0", ""); + r && (t ||= new Map()).set(e, r); + } + if (e instanceof Dict && e.has("JavaScript")) { + const t = new NameTree(e.getRaw("JavaScript"), this.xref); + for (const [e, a] of t.getAll()) + appendIfJavaScriptDict(stringToPDFString(e, !0), a); + } + const a = this.#Ae.get("OpenAction"); + a && appendIfJavaScriptDict("OpenAction", a); + return t; + } + get jsActions() { + const e = this.#De(); + let t = collectActions(this.xref, this.#Ae, ne); + if (e) { + t ||= Object.create(null); + for (const [a, r] of e) a in t ? t[a].push(r) : (t[a] = [r]); + } + return shadow(this, "jsActions", t); + } + async cleanup(e = !1) { + clearGlobalCaches(); + this.globalColorSpaceCache.clear(); + this.globalImageCache.clear(e); + this.pageKidsCountCache.clear(); + this.pageIndexCache.clear(); + this.pageDictCache.clear(); + this.nonBlendModesSet.clear(); + for (const { dict: e } of await Promise.all(this.fontCache)) + delete e.cacheKey; + this.fontCache.clear(); + this.builtInCMapCache.clear(); + this.standardFontDataCache.clear(); + this.systemFontCache.clear(); + } + async getPageDict(e) { + const t = [this.toplevelPagesDict], + a = new RefSet(), + r = this.#Ae.getRaw("Pages"); + r instanceof Ref && a.put(r); + const i = this.xref, + n = this.pageKidsCountCache, + s = this.pageIndexCache, + o = this.pageDictCache; + let c = 0; + for (; t.length; ) { + const r = t.pop(); + if (r instanceof Ref) { + const l = n.get(r); + if (l >= 0 && c + l <= e) { + c += l; + continue; + } + if (a.has(r)) + throw new FormatError("Pages tree contains circular reference."); + a.put(r); + const h = await (o.get(r) || i.fetchAsync(r)); + if (h instanceof Dict) { + let t = h.getRaw("Type"); + t instanceof Ref && (t = await i.fetchAsync(t)); + if (isName(t, "Page") || !h.has("Kids")) { + n.has(r) || n.put(r, 1); + s.has(r) || s.put(r, c); + if (c === e) return [h, r]; + c++; + continue; + } + } + t.push(h); + continue; + } + if (!(r instanceof Dict)) + throw new FormatError( + "Page dictionary kid reference points to wrong type of object.", + ); + const { objId: l } = r; + let h = r.getRaw("Count"); + h instanceof Ref && (h = await i.fetchAsync(h)); + if (Number.isInteger(h) && h >= 0) { + l && !n.has(l) && n.put(l, h); + if (c + h <= e) { + c += h; + continue; + } + } + let u = r.getRaw("Kids"); + u instanceof Ref && (u = await i.fetchAsync(u)); + if (!Array.isArray(u)) { + let t = r.getRaw("Type"); + t instanceof Ref && (t = await i.fetchAsync(t)); + if (isName(t, "Page") || !r.has("Kids")) { + if (c === e) return [r, null]; + c++; + continue; + } + throw new FormatError("Page dictionary kids object is not an array."); + } + for (let e = u.length - 1; e >= 0; e--) { + const a = u[e]; + t.push(a); + r === this.toplevelPagesDict && + a instanceof Ref && + !o.has(a) && + o.put(a, i.fetchAsync(a)); + } + } + throw new Error(`Page index ${e} not found.`); + } + async getAllPageDicts(e = !1) { + const { ignoreErrors: t } = this.pdfManager.evaluatorOptions, + a = [{ currentNode: this.toplevelPagesDict, posInKids: 0 }], + r = new RefSet(), + i = this.#Ae.getRaw("Pages"); + i instanceof Ref && r.put(i); + const n = new Map(), + s = this.xref, + o = this.pageIndexCache; + let c = 0; + function addPageDict(e, t) { + t && !o.has(t) && o.put(t, c); + n.set(c++, [e, t]); + } + function addPageError(a) { + if (a instanceof XRefEntryException && !e) throw a; + if (e && t && 0 === c) { + warn(`getAllPageDicts - Skipping invalid first page: "${a}".`); + a = Dict.empty; + } + n.set(c++, [a, null]); + } + for (; a.length > 0; ) { + const e = a.at(-1), + { currentNode: t, posInKids: i } = e; + let n = t.getRaw("Kids"); + if (n instanceof Ref) + try { + n = await s.fetchAsync(n); + } catch (e) { + addPageError(e); + break; + } + if (!Array.isArray(n)) { + addPageError( + new FormatError("Page dictionary kids object is not an array."), + ); + break; + } + if (i >= n.length) { + a.pop(); + continue; + } + const o = n[i]; + let c; + if (o instanceof Ref) { + if (r.has(o)) { + addPageError( + new FormatError("Pages tree contains circular reference."), + ); + break; + } + r.put(o); + try { + c = await s.fetchAsync(o); + } catch (e) { + addPageError(e); + break; + } + } else c = o; + if (!(c instanceof Dict)) { + addPageError( + new FormatError( + "Page dictionary kid reference points to wrong type of object.", + ), + ); + break; + } + let l = c.getRaw("Type"); + if (l instanceof Ref) + try { + l = await s.fetchAsync(l); + } catch (e) { + addPageError(e); + break; + } + isName(l, "Page") || !c.has("Kids") + ? addPageDict(c, o instanceof Ref ? o : null) + : a.push({ currentNode: c, posInKids: 0 }); + e.posInKids++; + } + return n; + } + getPageIndex(e) { + const t = this.pageIndexCache.get(e); + if (void 0 !== t) return Promise.resolve(t); + const a = this.xref; + let r = 0; + const next = (t) => + (function pagesBeforeRef(t) { + let r, + i = 0; + return a + .fetchAsync(t) + .then(function (a) { + if ( + isRefsEqual(t, e) && + !isDict(a, "Page") && + !(a instanceof Dict && !a.has("Type") && a.has("Contents")) + ) + throw new FormatError( + "The reference does not point to a /Page dictionary.", + ); + if (!a) return null; + if (!(a instanceof Dict)) + throw new FormatError("Node must be a dictionary."); + r = a.getRaw("Parent"); + return a.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 n = []; + let s = !1; + for (const r of e) { + if (!(r instanceof Ref)) + throw new FormatError("Kid must be a reference."); + if (isRefsEqual(r, t)) { + s = !0; + break; + } + n.push( + a.fetchAsync(r).then(function (e) { + if (!(e instanceof Dict)) + throw new FormatError("Kid node must be a dictionary."); + e.has("Count") ? (i += e.get("Count")) : i++; + }), + ); + } + if (!s) + throw new FormatError( + "Kid reference not found in parent's kids.", + ); + return Promise.all(n).then(() => [i, r]); + }); + })(t).then((t) => { + if (!t) { + this.pageIndexCache.put(e, r); + return r; + } + const [a, i] = t; + r += a; + return next(i); + }); + return next(e); + } + get baseUrl() { + const e = this.#Ae.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: a = null, + docAttachments: r = null, + }) { + if (!(e instanceof Dict)) { + warn("parseDestDictionary: `destDict` must be a dictionary."); + return; + } + let i, + n, + s = e.get("A"); + if (!(s instanceof Dict)) + if (e.has("Dest")) s = e.get("Dest"); + else { + s = e.get("AA"); + s instanceof Dict && + (s.has("D") ? (s = s.get("D")) : s.has("U") && (s = s.get("U"))); + } + if (s instanceof Dict) { + const e = s.get("S"); + if (!(e instanceof Name)) { + warn("parseDestDictionary: Invalid type in Action dictionary."); + return; + } + const a = e.name; + switch (a) { + case "ResetForm": + const e = s.get("Flags"), + o = !(1 & ("number" == typeof e ? e : 0)), + c = [], + l = []; + for (const e of s.get("Fields") || []) + e instanceof Ref + ? l.push(e.toString()) + : "string" == typeof e && c.push(stringToPDFString(e)); + t.resetForm = { fields: c, refs: l, include: o }; + break; + case "URI": + i = s.get("URI"); + i instanceof Name && (i = "/" + i.name); + break; + case "GoTo": + n = s.get("D"); + break; + case "Launch": + case "GoToR": + const h = s.get("F"); + if (h instanceof Dict) { + const e = new FileSpec(h, null, !0), + { rawFilename: t } = e.serializable; + i = t; + } else "string" == typeof h && (i = h); + const u = fetchRemoteDest(s); + u && "string" == typeof i && (i = i.split("#", 1)[0] + "#" + u); + const d = s.get("NewWindow"); + "boolean" == typeof d && (t.newWindow = d); + break; + case "GoToE": + const f = s.get("T"); + let g; + if (r && f instanceof Dict) { + const e = f.get("R"), + t = f.get("N"); + isName(e, "C") && + "string" == typeof t && + (g = r[stringToPDFString(t, !0)]); + } + if (g) { + t.attachment = g; + const e = fetchRemoteDest(s); + e && (t.attachmentDest = e); + } else warn('parseDestDictionary - unimplemented "GoToE" action.'); + break; + case "Named": + const p = s.get("N"); + p instanceof Name && (t.action = p.name); + break; + case "SetOCGState": + const m = s.get("State"), + b = s.get("PreserveRB"); + if (!Array.isArray(m) || 0 === m.length) break; + const y = []; + for (const e of m) + if (e instanceof Name) + switch (e.name) { + case "ON": + case "OFF": + case "Toggle": + y.push(e.name); + } + else e instanceof Ref && y.push(e.toString()); + if (y.length !== m.length) break; + t.setOCGState = { state: y, preserveRB: "boolean" != typeof b || b }; + break; + case "JavaScript": + const w = s.get("JS"); + let x; + w instanceof BaseStream + ? (x = w.getString()) + : "string" == typeof w && (x = w); + const S = x && recoverJsURL(stringToPDFString(x, !0)); + if (S) { + i = S.url; + t.newWindow = S.newWindow; + break; + } + default: + if ("JavaScript" === a || "SubmitForm" === a) break; + warn(`parseDestDictionary - unsupported action: "${a}".`); + } + } else e.has("Dest") && (n = e.get("Dest")); + if ("string" == typeof i) { + const e = createValidAbsoluteUrl(i, a, { + addDefaultProtocol: !0, + tryConvertEncoding: !0, + }); + e && (t.url = e.href); + t.unsafeUrl = i; + } + if (n) { + n instanceof Name && (n = n.name); + "string" == typeof n + ? (t.dest = stringToPDFString(n, !0)) + : Ln(n) && (t.dest = n); + } + } +} +function mayHaveChildren(e) { + return ( + e instanceof Ref || + e instanceof Dict || + e instanceof BaseStream || + Array.isArray(e) + ); +} +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) mayHaveChildren(a) && t.push(a); +} +class ObjectLoader { + refSet = new RefSet(); + constructor(e, t, a) { + this.dict = e; + this.keys = t; + this.xref = a; + } + async load() { + const { keys: e, dict: t } = this, + a = []; + for (const r of e) { + const e = t.getRaw(r); + void 0 !== e && a.push(e); + } + await this.#Be(a); + this.refSet = null; + } + async #Be(e) { + const t = [], + a = []; + for (; e.length; ) { + let r = e.pop(); + if (r instanceof Ref) { + if (this.refSet.has(r)) continue; + try { + this.refSet.put(r); + r = this.xref.fetch(r); + } catch (e) { + if (!(e instanceof MissingDataException)) { + warn(`ObjectLoader.#walk - requesting all data: "${e}".`); + await this.xref.stream.manager.requestAllChunks(); + return; + } + t.push(r); + a.push({ begin: e.begin, end: e.end }); + } + } + if (r instanceof BaseStream) { + const e = r.getBaseStreams(); + if (e) { + let i = !1; + for (const t of e) + if (!t.isDataLoaded) { + i = !0; + a.push({ begin: t.start, end: t.end }); + } + i && t.push(r); + } + } + addChildren(r, e); + } + if (a.length) { + await this.xref.stream.manager.requestRanges(a); + for (const e of t) e instanceof Ref && this.refSet.remove(e); + await this.#Be(t); + } + } + static async load(e, t, a) { + if (a.stream.isDataLoaded) return; + const r = new ObjectLoader(e, t, a); + await r.load(); + } +} +const _n = Symbol(), + Un = Symbol(), + jn = Symbol(), + Xn = Symbol(), + qn = Symbol(), + Hn = Symbol(), + Wn = Symbol(), + Gn = Symbol(), + zn = Symbol(), + $n = Symbol("content"), + Vn = Symbol("data"), + Kn = Symbol(), + Jn = Symbol("extra"), + Yn = Symbol(), + Zn = Symbol(), + Qn = Symbol(), + es = Symbol(), + ts = Symbol(), + as = Symbol(), + rs = Symbol(), + is = Symbol(), + ns = Symbol(), + ss = Symbol(), + os = Symbol(), + cs = Symbol(), + ls = Symbol(), + hs = Symbol(), + us = Symbol(), + ds = Symbol(), + fs = Symbol(), + gs = Symbol(), + ps = Symbol(), + ms = Symbol(), + bs = Symbol(), + ys = Symbol(), + ws = Symbol(), + xs = Symbol(), + Ss = Symbol(), + As = Symbol(), + ks = Symbol(), + Cs = Symbol(), + vs = Symbol(), + Fs = Symbol(), + Is = Symbol(), + Ts = Symbol(), + Os = Symbol("namespaceId"), + Ms = Symbol("nodeName"), + Ds = Symbol(), + Bs = Symbol(), + Rs = Symbol(), + Ns = Symbol(), + Es = Symbol(), + Ls = Symbol(), + _s = Symbol(), + Us = Symbol(), + js = Symbol("root"), + Xs = Symbol(), + qs = Symbol(), + Hs = Symbol(), + Ws = Symbol(), + Gs = Symbol(), + zs = Symbol(), + $s = Symbol(), + Vs = Symbol(), + Ks = Symbol(), + Js = Symbol(), + Ys = Symbol(), + Zs = Symbol("uid"), + Qs = Symbol(), + eo = { + 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 }, + }, + to = { + pt: (e) => e, + cm: (e) => (e / 2.54) * 72, + mm: (e) => (e / 25.4) * 72, + in: (e) => 72 * e, + px: (e) => e, + }, + ao = /([+-]?\d+\.?\d*)(.*)/; +function stripQuotes(e) { + return e.startsWith("'") || e.startsWith('"') ? e.slice(1, -1) : e; +} +function getInteger({ data: e, defaultValue: t, validate: a }) { + if (!e) return t; + e = e.trim(); + const r = parseInt(e, 10); + return !isNaN(r) && a(r) ? r : t; +} +function getFloat({ data: e, defaultValue: t, validate: a }) { + if (!e) return t; + e = e.trim(); + const r = parseFloat(e); + return !isNaN(r) && a(r) ? r : t; +} +function getKeyword({ data: e, defaultValue: t, validate: a }) { + return e && a((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 a = e.trim().match(ao); + if (!a) return getMeasurement(t); + const [, r, i] = a, + n = parseFloat(r); + if (isNaN(n)) return getMeasurement(t); + if (0 === n) return 0; + const s = to[i]; + return s ? s(n) : n; +} +function getRatio(e) { + if (!e) return { num: 1, den: 1 }; + const t = e + .split(":", 2) + .map((e) => parseFloat(e.trim())) + .filter((e) => !isNaN(e)); + 1 === t.length && t.push(1); + if (0 === t.length) return { num: 1, den: 1 }; + const [a, r] = t; + return { num: a, den: r }; +} +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, a, r) { + this.success = e; + this.html = t; + this.bbox = a; + this.breakNode = r; + } + 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 a = this.fonts.get("PdfJS-Fallback-PdfJS-XFA"); + for (const e of t) this.fonts.set(e, a); + } + addPdfFont(e) { + const t = e.cssFontInfo, + a = t.fontFamily; + let r = this.fonts.get(a); + if (!r) { + r = Object.create(null); + this.fonts.set(a, r); + this.defaultFont || (this.defaultFont = r); + } + let i = ""; + const n = parseFloat(t.fontWeight); + 0 !== parseFloat(t.italicAngle) + ? (i = n >= 700 ? "bolditalic" : "italic") + : n >= 700 && (i = "bold"); + if (!i) { + (e.name.includes("Bold") || e.psName?.includes("Bold")) && (i = "bold"); + (e.name.includes("Italic") || + e.name.endsWith("It") || + e.psName?.includes("Italic") || + e.psName?.endsWith("It")) && + (i += "italic"); + } + i || (i = "regular"); + r[i] = e; + } + getDefault() { + return this.defaultFont; + } + find(e, t = !0) { + let a = this.fonts.get(e) || this.cache.get(e); + if (a) return a; + const r = /,|-|_| |bolditalic|bold|italic|regular|it/gi; + let i = e.replaceAll(r, ""); + a = this.fonts.get(i); + if (a) { + this.cache.set(e, a); + return a; + } + i = i.toLowerCase(); + const n = []; + for (const [e, t] of this.fonts.entries()) + e.replaceAll(r, "").toLowerCase().startsWith(i) && n.push(t); + if (0 === n.length) + for (const [, e] of this.fonts.entries()) + e.regular.name?.replaceAll(r, "").toLowerCase().startsWith(i) && + n.push(e); + if (0 === n.length) { + i = i.replaceAll(/psmt|mt/gi, ""); + for (const [e, t] of this.fonts.entries()) + e.replaceAll(r, "").toLowerCase().startsWith(i) && n.push(t); + } + if (0 === n.length) + for (const e of this.fonts.values()) + e.regular.name?.replaceAll(r, "").toLowerCase().startsWith(i) && + n.push(e); + if (n.length >= 1) { + 1 !== n.length && + t && + warn(`XFA - Too many choices to guess the correct font: ${e}`); + this.cache.set(e, n[0]); + return n[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 text_FontInfo { + constructor(e, t, a, r) { + this.lineHeight = a; + this.paraMargin = t || { top: 0, bottom: 0, left: 0, right: 0 }; + if (!e) { + [this.pdfFont, this.xfaFont] = this.defaultFont(r); + return; + } + this.xfaFont = { + typeface: e.typeface, + posture: e.posture, + weight: e.weight, + size: e.size, + letterSpacing: e.letterSpacing, + }; + const i = r.find(e.typeface); + if (i) { + this.pdfFont = selectFont(e, i); + this.pdfFont || ([this.pdfFont, this.xfaFont] = this.defaultFont(r)); + } else [this.pdfFont, this.xfaFont] = this.defaultFont(r); + } + 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, a, r) { + this.fontFinder = r; + this.stack = [new text_FontInfo(e, t, a, r)]; + } + pushData(e, t, a) { + const r = this.stack.at(-1); + for (const t of ["typeface", "posture", "weight", "size", "letterSpacing"]) + e[t] || (e[t] = r.xfaFont[t]); + for (const e of ["top", "bottom", "left", "right"]) + isNaN(t[e]) && (t[e] = r.paraMargin[e]); + const i = new text_FontInfo(e, t, a || r.lineHeight, this.fontFinder); + i.pdfFont || (i.pdfFont = r.pdfFont); + this.stack.push(i); + } + popFont() { + this.stack.pop(); + } + topFont() { + return this.stack.at(-1); + } +} +class TextMeasure { + constructor(e, t, a, r) { + this.glyphs = []; + this.fontSelector = new FontSelector(e, t, a, r); + this.extraHeight = 0; + } + pushData(e, t, a) { + this.fontSelector.pushData(e, t, a); + } + 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(), + a = t.xfaFont.size; + if (t.pdfFont) { + const r = t.xfaFont.letterSpacing, + i = t.pdfFont, + n = i.lineHeight || 1.2, + s = t.lineHeight || Math.max(1.2, n) * a, + o = n - (void 0 === i.lineGap ? 0.2 : i.lineGap), + c = Math.max(1, o) * a, + l = a / 1e3, + h = i.defaultWidth || i.charsToGlyphs(" ")[0].width; + for (const t of e.split(/[\u2029\n]/)) { + const e = i.encodeString(t).join(""), + a = i.charsToGlyphs(e); + for (const e of a) { + const t = e.width || h; + this.glyphs.push([t * l + r, s, c, e.unicode, !1]); + } + this.glyphs.push([0, 0, 0, "\n", !0]); + } + this.glyphs.pop(); + return; + } + for (const t of e.split(/[\u2029\n]/)) { + for (const e of t.split("")) this.glyphs.push([a, 1.2 * a, a, e, !1]); + this.glyphs.push([0, 0, 0, "\n", !0]); + } + this.glyphs.pop(); + } + compute(e) { + let t = -1, + a = 0, + r = 0, + i = 0, + n = 0, + s = 0, + o = !1, + c = !0; + for (let l = 0, h = this.glyphs.length; l < h; l++) { + const [h, u, d, f, g] = this.glyphs[l], + p = " " === f, + m = c ? d : u; + if (g) { + r = Math.max(r, n); + n = 0; + i += s; + s = m; + t = -1; + a = 0; + c = !1; + } else if (p) + if (n + h > e) { + r = Math.max(r, n); + n = 0; + i += s; + s = m; + t = -1; + a = 0; + o = !0; + c = !1; + } else { + s = Math.max(m, s); + a = n; + n += h; + t = l; + } + else if (n + h > e) { + i += s; + s = m; + if (-1 !== t) { + l = t; + r = Math.max(r, a); + n = 0; + t = -1; + a = 0; + } else { + r = Math.max(r, n); + n = h; + } + o = !0; + c = !1; + } else { + n += h; + s = Math.max(m, s); + } + } + r = Math.max(r, n); + i += s + this.extraHeight; + return { width: 1.02 * r, height: i, isBroken: o }; + } +} +const ro = /^[^.[]+/, + io = /^[^\]]+/, + no = 0, + so = 1, + oo = 2, + co = 3, + lo = 4, + ho = new Map([ + ["$data", (e, t) => (e.datasets ? e.datasets.data : e)], + ["$record", (e, t) => (e.datasets ? e.datasets.data : e)[cs]()[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], + ]), + uo = new WeakMap(); +function parseIndex(e) { + return "*" === (e = e.trim()) ? 1 / 0 : parseInt(e, 10) || 0; +} +function parseExpression(e, t, a = !0) { + let r = e.match(ro); + if (!r) return null; + let [i] = r; + const n = [ + { + name: i, + cacheName: "." + i, + index: 0, + js: null, + formCalc: null, + operator: no, + }, + ]; + let s = i.length; + for (; s < e.length; ) { + const o = s; + if ("[" === e.charAt(s++)) { + r = e.slice(s).match(io); + if (!r) { + warn("XFA - Invalid index in SOM expression"); + return null; + } + n.at(-1).index = parseIndex(r[0]); + s += r[0].length + 1; + continue; + } + let c; + switch (e.charAt(s)) { + case ".": + if (!t) return null; + s++; + c = so; + break; + case "#": + s++; + c = oo; + break; + case "[": + if (a) { + warn( + "XFA - SOM expression contains a FormCalc subexpression which is not supported for now.", + ); + return null; + } + c = co; + break; + case "(": + if (a) { + warn( + "XFA - SOM expression contains a JavaScript subexpression which is not supported for now.", + ); + return null; + } + c = lo; + break; + default: + c = no; + } + r = e.slice(s).match(ro); + if (!r) break; + [i] = r; + s += i.length; + n.push({ + name: i, + cacheName: e.slice(o, s), + operator: c, + index: 0, + js: null, + formCalc: null, + }); + } + return n; +} +function searchNode(e, t, a, r = !0, i = !0) { + const n = parseExpression(a, r); + if (!n) return null; + const s = ho.get(n[0].name); + let o, + c = 0; + if (s) { + o = !0; + e = [s(e, t)]; + c = 1; + } else { + o = null === t; + e = [t || e]; + } + for (let a = n.length; c < a; c++) { + const { name: a, cacheName: r, operator: s, index: l } = n[c], + h = []; + for (const t of e) { + if (!t.isXFAObject) continue; + let e, n; + if (i) { + n = uo.get(t); + if (!n) { + n = new Map(); + uo.set(t, n); + } + e = n.get(r); + } + if (!e) { + switch (s) { + case no: + e = t[rs](a, !1); + break; + case so: + e = t[rs](a, !0); + break; + case oo: + e = t[as](a); + e = e.isXFAObjectArray ? e.children : [e]; + } + i && n.set(r, e); + } + e.length > 0 && h.push(e); + } + if (0 === h.length && !o && 0 === c) { + const a = t[ds](); + if (!(t = a)) return null; + c = -1; + e = [t]; + continue; + } + e = isFinite(l) ? h.filter((e) => l < e.length).map((e) => e[l]) : h.flat(); + } + return 0 === e.length ? null : e; +} +function createDataNode(e, t, a) { + const r = parseExpression(a); + if (!r) return null; + if (r.some((e) => e.operator === so)) return null; + const i = ho.get(r[0].name); + let n = 0; + if (i) { + e = i(e, t); + n = 1; + } else e = t || e; + for (let t = r.length; n < t; n++) { + const { name: t, operator: a, index: i } = r[n]; + if (!isFinite(i)) { + r[n].index = 0; + return e.createNodes(r.slice(n)); + } + let s; + switch (a) { + case no: + s = e[rs](t, !1); + break; + case so: + s = e[rs](t, !0); + break; + case oo: + s = e[as](t); + s = s.isXFAObjectArray ? s.children : [s]; + } + if (0 === s.length) return e.createNodes(r.slice(n)); + if (!(i < s.length)) { + r[n].index = i - s.length; + return e.createNodes(r.slice(n)); + } + { + const t = s[i]; + if (!t.isXFAObject) { + warn("XFA - Cannot create a node."); + return null; + } + e = t; + } + } + return null; +} +const fo = Symbol(), + go = Symbol(), + po = Symbol(), + mo = Symbol("_children"), + bo = Symbol(), + yo = Symbol(), + wo = Symbol(), + xo = Symbol(), + So = Symbol(), + Ao = Symbol(), + ko = Symbol(), + Co = Symbol(), + vo = Symbol(), + Fo = Symbol("parent"), + Io = Symbol(), + Oo = Symbol(), + Mo = Symbol(); +let Do = 0; +const Bo = eo.datasets.id; +class XFAObject { + constructor(e, t, a = !1) { + this[Os] = e; + this[Ms] = t; + this[ko] = a; + this[Fo] = null; + this[mo] = []; + this[Zs] = `${t}${Do++}`; + this[gs] = null; + } + get isXFAObject() { + return !0; + } + get isXFAObjectArray() { + return !1; + } + createNodes(e) { + let t = this, + a = null; + for (const { name: r, index: i } of e) { + for (let e = 0, n = isFinite(i) ? i : 0; e <= n; e++) { + const e = t[Os] === Bo ? -1 : t[Os]; + a = new XmlObject(e, r); + t[jn](a); + } + t = a; + } + return a; + } + [Bs](e) { + if (!this[ko] || !this[Rs](e)) return !1; + const t = e[Ms], + a = this[t]; + if (!(a instanceof XFAObjectArray)) { + null !== a && this[Us](a); + this[t] = e; + this[jn](e); + return !0; + } + if (a.push(e)) { + this[jn](e); + return !0; + } + let r = ""; + this.id + ? (r = ` (id: ${this.id})`) + : this.name && (r = ` (name: ${this.name} ${this.h.value})`); + warn(`XFA - node "${this[Ms]}"${r} has already enough "${t}"!`); + return !1; + } + [Rs](e) { + return this.hasOwnProperty(e[Ms]) && e[Os] === this[Os]; + } + [ks]() { + return !1; + } + [_n]() { + return !1; + } + [ws]() { + return !1; + } + [xs]() { + return !1; + } + [Ls]() { + this.para && this[fs]()[Jn].paraStack.pop(); + } + [_s]() { + this[fs]()[Jn].paraStack.push(this.para); + } + [Hs](e) { + this.id && this[Os] === eo.template.id && e.set(this.id, this); + } + [fs]() { + return this[gs].template; + } + [Cs]() { + return !1; + } + [vs]() { + return !1; + } + [jn](e) { + e[Fo] = this; + this[mo].push(e); + !e[gs] && this[gs] && (e[gs] = this[gs]); + } + [Us](e) { + const t = this[mo].indexOf(e); + this[mo].splice(t, 1); + } + [ps]() { + return this.hasOwnProperty("value"); + } + [Gs](e) {} + [Ns](e) {} + [Yn]() {} + [qn](e) { + delete this[ko]; + if (this[Wn]) { + e.clean(this[Wn]); + delete this[Wn]; + } + } + [bs](e) { + return this[mo].indexOf(e); + } + [ys](e, t) { + t[Fo] = this; + this[mo].splice(e, 0, t); + !t[gs] && this[gs] && (t[gs] = this[gs]); + } + [Fs]() { + return !this.name; + } + [Ts]() { + return ""; + } + [$s]() { + return 0 === this[mo].length + ? this[$n] + : this[mo].map((e) => e[$s]()).join(""); + } + get [po]() { + 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, po, e._attributes); + } + [As](e) { + let t = this; + for (; t; ) { + if (t === e) return !0; + t = t[ds](); + } + return !1; + } + [ds]() { + return this[Fo]; + } + [us]() { + return this[ds](); + } + [cs](e = null) { + return e ? this[e] : this[mo]; + } + [Kn]() { + const e = Object.create(null); + this[$n] && (e.$content = this[$n]); + for (const t of Object.getOwnPropertyNames(this)) { + const a = this[t]; + null !== a && + (a instanceof XFAObject + ? (e[t] = a[Kn]()) + : a instanceof XFAObjectArray + ? a.isEmpty() || (e[t] = a.dump()) + : (e[t] = a)); + } + return e; + } + [Ys]() { + return null; + } + [Ks]() { + return HTMLResult.EMPTY; + } + *[ls]() { + for (const e of this[cs]()) yield e; + } + *[xo](e, t) { + for (const a of this[ls]()) + if (!e || t === e.has(a[Ms])) { + const e = this[ts](), + t = a[Ks](e); + t.success || (this[Jn].failingNode = a); + yield t; + } + } + [Zn]() { + return null; + } + [Un](e, t) { + this[Jn].children.push(e); + } + [ts]() {} + [Xn]({ filter: e = null, include: t = !0 }) { + if (this[Jn].generator) { + const e = this[ts](), + t = this[Jn].failingNode[Ks](e); + if (!t.success) return t; + t.html && this[Un](t.html, t.bbox); + delete this[Jn].failingNode; + } else this[Jn].generator = this[xo](e, t); + for (;;) { + const e = this[Jn].generator.next(); + if (e.done) break; + const t = e.value; + if (!t.success) return t; + t.html && this[Un](t.html, t.bbox); + } + this[Jn].generator = null; + return HTMLResult.EMPTY; + } + [Ws](e) { + this[Oo] = new Set(Object.keys(e)); + } + [Ao](e) { + const t = this[po], + a = this[Oo]; + return [...e].filter((e) => t.has(e) && !a.has(e)); + } + [Xs](e, t = new Set()) { + for (const a of this[mo]) a[Io](e, t); + } + [Io](e, t) { + const a = this[So](e, t); + a ? this[fo](a, e, t) : this[Xs](e, t); + } + [So](e, t) { + const { use: a, usehref: r } = this; + if (!a && !r) return null; + let i = null, + n = null, + s = null, + o = a; + if (r) { + o = r; + r.startsWith("#som(") && r.endsWith(")") + ? (n = r.slice(5, -1)) + : r.startsWith(".#som(") && r.endsWith(")") + ? (n = r.slice(6, -1)) + : r.startsWith("#") + ? (s = r.slice(1)) + : r.startsWith(".#") && (s = r.slice(2)); + } else a.startsWith("#") ? (s = a.slice(1)) : (n = a); + this.use = this.usehref = ""; + if (s) i = e.get(s); + else { + i = searchNode(e.get(js), this, n, !0, !1); + i && (i = i[0]); + } + if (!i) { + warn(`XFA - Invalid prototype reference: ${o}.`); + return null; + } + if (i[Ms] !== this[Ms]) { + warn(`XFA - Incompatible prototype: ${i[Ms]} !== ${this[Ms]}.`); + return null; + } + if (t.has(i)) { + warn("XFA - Cycle detected in prototypes use."); + return null; + } + t.add(i); + const c = i[So](e, t); + c && i[fo](c, e, t); + i[Xs](e, t); + t.delete(i); + return i; + } + [fo](e, t, a) { + if (a.has(e)) { + warn("XFA - Cycle detected in prototypes use."); + return; + } + !this[$n] && e[$n] && (this[$n] = e[$n]); + new Set(a).add(e); + for (const t of this[Ao](e[Oo])) { + this[t] = e[t]; + this[Oo] && this[Oo].add(t); + } + for (const r of Object.getOwnPropertyNames(this)) { + if (this[po].has(r)) continue; + const i = this[r], + n = e[r]; + if (i instanceof XFAObjectArray) { + for (const e of i[mo]) e[Io](t, a); + for (let r = i[mo].length, s = n[mo].length; r < s; r++) { + const n = e[mo][r][Gn](); + if (!i.push(n)) break; + n[Fo] = this; + this[mo].push(n); + n[Io](t, a); + } + } else if (null === i) { + if (null !== n) { + const e = n[Gn](); + e[Fo] = this; + this[r] = e; + this[mo].push(e); + e[Io](t, a); + } + } else { + i[Xs](t, a); + n && i[fo](n, t, a); + } + } + } + static [bo](e) { + return Array.isArray(e) + ? e.map((e) => XFAObject[bo](e)) + : "object" == typeof e && null !== e + ? Object.assign({}, e) + : e; + } + [Gn]() { + 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[Zs] = `${e[Ms]}${Do++}`; + e[mo] = []; + for (const t of Object.getOwnPropertyNames(this)) { + if (this[po].has(t)) { + e[t] = XFAObject[bo](this[t]); + continue; + } + const a = this[t]; + e[t] = a instanceof XFAObjectArray ? new XFAObjectArray(a[Co]) : null; + } + for (const t of this[mo]) { + const a = t[Ms], + r = t[Gn](); + e[mo].push(r); + r[Fo] = e; + null === e[a] ? (e[a] = r) : e[a][mo].push(r); + } + return e; + } + [cs](e = null) { + return e ? this[mo].filter((t) => t[Ms] === e) : this[mo]; + } + [as](e) { + return this[e]; + } + [rs](e, t, a = !0) { + return Array.from(this[is](e, t, a)); + } + *[is](e, t, a = !0) { + if ("parent" !== e) { + for (const a of this[mo]) { + a[Ms] === e && (yield a); + a.name === e && (yield a); + (t || a[Fs]()) && (yield* a[is](e, t, !1)); + } + a && this[po].has(e) && (yield new XFAAttribute(this, e, this[e])); + } else yield this[Fo]; + } +} +class XFAObjectArray { + constructor(e = 1 / 0) { + this[Co] = e; + this[mo] = []; + } + get isXFAObject() { + return !1; + } + get isXFAObjectArray() { + return !0; + } + push(e) { + if (this[mo].length <= this[Co]) { + this[mo].push(e); + return !0; + } + warn(`XFA - node "${e[Ms]}" accepts no more than ${this[Co]} children`); + return !1; + } + isEmpty() { + return 0 === this[mo].length; + } + dump() { + return 1 === this[mo].length + ? this[mo][0][Kn]() + : this[mo].map((e) => e[Kn]()); + } + [Gn]() { + const e = new XFAObjectArray(this[Co]); + e[mo] = this[mo].map((e) => e[Gn]()); + return e; + } + get children() { + return this[mo]; + } + clear() { + this[mo].length = 0; + } +} +class XFAAttribute { + constructor(e, t, a) { + this[Fo] = e; + this[Ms] = t; + this[$n] = a; + this[zn] = !1; + this[Zs] = "attribute" + Do++; + } + [ds]() { + return this[Fo]; + } + [Ss]() { + return !0; + } + [ns]() { + return this[$n].trim(); + } + [Gs](e) { + e = e.value || ""; + this[$n] = e.toString(); + } + [$s]() { + return this[$n]; + } + [As](e) { + return this[Fo] === e || this[Fo][As](e); + } +} +class XmlObject extends XFAObject { + constructor(e, t, a = {}) { + super(e, t); + this[$n] = ""; + this[yo] = null; + if ("#text" !== t) { + const e = new Map(); + this[go] = e; + for (const [t, r] of Object.entries(a)) + e.set(t, new XFAAttribute(this, t, r)); + if (a.hasOwnProperty(Ds)) { + const e = a[Ds].xfa.dataNode; + void 0 !== e && + ("dataGroup" === e + ? (this[yo] = !1) + : "dataValue" === e && (this[yo] = !0)); + } + } + this[zn] = !1; + } + [Js](e) { + const t = this[Ms]; + if ("#text" === t) { + e.push(encodeToXmlString(this[$n])); + return; + } + const a = utf8StringToString(t), + r = this[Os] === Bo ? "xfa:" : ""; + e.push(`<${r}${a}`); + for (const [t, a] of this[go].entries()) { + const r = utf8StringToString(t); + e.push(` ${r}="${encodeToXmlString(a[$n])}"`); + } + null !== this[yo] && + (this[yo] + ? e.push(' xfa:dataNode="dataValue"') + : e.push(' xfa:dataNode="dataGroup"')); + if (this[$n] || 0 !== this[mo].length) { + e.push(">"); + if (this[$n]) + "string" == typeof this[$n] + ? e.push(encodeToXmlString(this[$n])) + : this[$n][Js](e); + else for (const t of this[mo]) t[Js](e); + e.push(``); + } else e.push("/>"); + } + [Bs](e) { + if (this[$n]) { + const e = new XmlObject(this[Os], "#text"); + this[jn](e); + e[$n] = this[$n]; + this[$n] = ""; + } + this[jn](e); + return !0; + } + [Ns](e) { + this[$n] += e; + } + [Yn]() { + if (this[$n] && this[mo].length > 0) { + const e = new XmlObject(this[Os], "#text"); + this[jn](e); + e[$n] = this[$n]; + delete this[$n]; + } + } + [Ks]() { + return "#text" === this[Ms] + ? HTMLResult.success({ name: "#text", value: this[$n] }) + : HTMLResult.EMPTY; + } + [cs](e = null) { + return e ? this[mo].filter((t) => t[Ms] === e) : this[mo]; + } + [es]() { + return this[go]; + } + [as](e) { + const t = this[go].get(e); + return void 0 !== t ? t : this[cs](e); + } + *[is](e, t) { + const a = this[go].get(e); + a && (yield a); + for (const a of this[mo]) { + a[Ms] === e && (yield a); + t && (yield* a[is](e, t)); + } + } + *[Qn](e, t) { + const a = this[go].get(e); + !a || (t && a[zn]) || (yield a); + for (const a of this[mo]) yield* a[Qn](e, t); + } + *[os](e, t, a) { + for (const r of this[mo]) { + r[Ms] !== e || (a && r[zn]) || (yield r); + t && (yield* r[os](e, t, a)); + } + } + [Ss]() { + return null === this[yo] + ? 0 === this[mo].length || this[mo][0][Os] === eo.xhtml.id + : this[yo]; + } + [ns]() { + return null === this[yo] + ? 0 === this[mo].length + ? this[$n].trim() + : this[mo][0][Os] === eo.xhtml.id + ? this[mo][0][$s]().trim() + : null + : this[$n].trim(); + } + [Gs](e) { + e = e.value || ""; + this[$n] = e.toString(); + } + [Kn](e = !1) { + const t = Object.create(null); + e && (t.$ns = this[Os]); + this[$n] && (t.$content = this[$n]); + t.$name = this[Ms]; + t.children = []; + for (const a of this[mo]) t.children.push(a[Kn](e)); + t.attributes = Object.create(null); + for (const [e, a] of this[go]) t.attributes[e] = a[$n]; + return t; + } +} +class ContentObject extends XFAObject { + constructor(e, t) { + super(e, t); + this[$n] = ""; + } + [Ns](e) { + this[$n] += e; + } + [Yn]() {} +} +class OptionObject extends ContentObject { + constructor(e, t, a) { + super(e, t); + this[vo] = a; + } + [Yn]() { + this[$n] = getKeyword({ + data: this[$n], + defaultValue: this[vo][0], + validate: (e) => this[vo].includes(e), + }); + } + [qn](e) { + super[qn](e); + delete this[vo]; + } +} +class StringObject extends ContentObject { + [Yn]() { + this[$n] = this[$n].trim(); + } +} +class IntegerObject extends ContentObject { + constructor(e, t, a, r) { + super(e, t); + this[wo] = a; + this[Mo] = r; + } + [Yn]() { + this[$n] = getInteger({ + data: this[$n], + defaultValue: this[wo], + validate: this[Mo], + }); + } + [qn](e) { + super[qn](e); + delete this[wo]; + delete this[Mo]; + } +} +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 Ro = { + anchorType(e, t) { + const a = e[us](); + if (a && (!a.layout || "position" === a.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 a = e[us](); + let r = e.w; + const i = e.h; + if (a.layout?.includes("row")) { + const t = a[Jn], + i = e.colSpan; + let n; + if (-1 === i) { + n = Math.sumPrecise(t.columnWidths.slice(t.currentColumn)); + t.currentColumn = 0; + } else { + n = Math.sumPrecise( + t.columnWidths.slice(t.currentColumn, t.currentColumn + i), + ); + t.currentColumn = (t.currentColumn + e.colSpan) % t.columnWidths.length; + } + isNaN(n) || (r = e.w = n); + } + t.width = "" !== r ? measureToString(r) : "auto"; + t.height = "" !== i ? measureToString(i) : "auto"; + }, + position(e, t) { + const a = e[us](); + if (!a?.layout || "position" === a.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[Ms]) + 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[Ys]().margin); + }, +}; +function setMinMaxDimensions(e, t) { + if ("position" === e[us]().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, a, r, i, n) { + const s = new TextMeasure(t, a, r, i); + "string" == typeof e ? s.addString(e) : e[Es](s); + return s.compute(n); +} +function layoutNode(e, t) { + let a = null, + r = null, + i = !1; + if ((!e.w || !e.h) && e.value) { + let n = 0, + s = 0; + if (e.margin) { + n = e.margin.leftInset + e.margin.rightInset; + s = e.margin.topInset + e.margin.bottomInset; + } + let o = null, + c = null; + if (e.para) { + c = Object.create(null); + o = "" === e.para.lineHeight ? null : e.para.lineHeight; + c.top = "" === e.para.spaceAbove ? 0 : e.para.spaceAbove; + c.bottom = "" === e.para.spaceBelow ? 0 : e.para.spaceBelow; + c.left = "" === e.para.marginLeft ? 0 : e.para.marginLeft; + c.right = "" === e.para.marginRight ? 0 : e.para.marginRight; + } + let l = e.font; + if (!l) { + const t = e[fs](); + let a = e[ds](); + for (; a && a !== t; ) { + if (a.font) { + l = a.font; + break; + } + a = a[ds](); + } + } + const h = (e.w || t.width) - n, + u = e[gs].fontFinder; + if ( + e.value.exData && + e.value.exData[$n] && + "text/html" === e.value.exData.contentType + ) { + const t = layoutText(e.value.exData[$n], l, c, o, u, h); + r = t.width; + a = t.height; + i = t.isBroken; + } else { + const t = e.value[$s](); + if (t) { + const e = layoutText(t, l, c, o, u, h); + r = e.width; + a = e.height; + i = e.isBroken; + } + } + null === r || e.w || (r += n); + null === a || e.h || (a += s); + } + return { w: r, h: a, isBroken: i }; +} +function computeBbox(e, t, a) { + let r; + if ("" !== e.w && "" !== e.h) r = [e.x, e.y, e.w, e.h]; + else { + if (!a) return null; + let i = e.w; + if ("" === i) { + if (0 === e.maxW) { + const t = e[us](); + i = "position" === t.layout && "" !== t.w ? 0 : e.minW; + } else i = Math.min(e.maxW, a.width); + t.attributes.style.width = measureToString(i); + } + let n = e.h; + if ("" === n) { + if (0 === e.maxH) { + const t = e[us](); + n = "position" === t.layout && "" !== t.h ? 0 : e.minH; + } else n = Math.min(e.maxH, a.height); + t.attributes.style.height = measureToString(n); + } + r = [e.x, e.y, i, n]; + } + return r; +} +function fixDimensions(e) { + const t = e[us](); + if (t.layout?.includes("row")) { + const a = t[Jn], + r = e.colSpan; + let i; + i = + -1 === r + ? Math.sumPrecise(a.columnWidths.slice(a.currentColumn)) + : Math.sumPrecise( + a.columnWidths.slice(a.currentColumn, a.currentColumn + r), + ); + isNaN(i) || (e.w = i); + } + t.layout && "position" !== t.layout && (e.x = e.y = 0); + "table" === e.layout && + "" === e.w && + Array.isArray(e.columnWidths) && + (e.w = Math.sumPrecise(e.columnWidths)); +} +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 a = Object.create(null); + for (const r of t) { + const t = e[r]; + if (null !== t) + if (Ro.hasOwnProperty(r)) Ro[r](e, a); + else if (t instanceof XFAObject) { + const e = t[Ys](); + e + ? Object.assign(a, e) + : warn(`(DEBUG) - XFA - style for ${r} not implemented yet`); + } + } + return a; +} +function createWrapper(e, t) { + const { attributes: a } = t, + { style: r } = a, + i = { + name: "div", + attributes: { class: ["xfaWrapper"], style: Object.create(null) }, + children: [], + }; + a.class.push("xfaWrapped"); + if (e.border) { + const { widths: a, insets: n } = e.border[Jn]; + let s, + o, + c = n[0], + l = n[3]; + const h = n[0] + n[2], + u = n[1] + n[3]; + switch (e.border.hand) { + case "even": + c -= a[0] / 2; + l -= a[3] / 2; + s = `calc(100% + ${(a[1] + a[3]) / 2 - u}px)`; + o = `calc(100% + ${(a[0] + a[2]) / 2 - h}px)`; + break; + case "left": + c -= a[0]; + l -= a[3]; + s = `calc(100% + ${a[1] + a[3] - u}px)`; + o = `calc(100% + ${a[0] + a[2] - h}px)`; + break; + case "right": + s = u ? `calc(100% - ${u}px)` : "100%"; + o = h ? `calc(100% - ${h}px)` : "100%"; + } + const d = ["xfaBorder"]; + isPrintOnly(e.border) && d.push("xfaPrintOnly"); + const f = { + name: "div", + attributes: { + class: d, + style: { top: `${c}px`, left: `${l}px`, width: s, height: o }, + }, + children: [], + }; + for (const e of [ + "border", + "borderWidth", + "borderColor", + "borderRadius", + "borderStyle", + ]) + if (void 0 !== r[e]) { + f.attributes.style[e] = r[e]; + delete r[e]; + } + i.children.push(f, t); + } else i.children.push(t); + for (const e of [ + "background", + "backgroundClip", + "top", + "left", + "width", + "height", + "minWidth", + "minHeight", + "maxWidth", + "maxHeight", + "transform", + "transformOrigin", + "visibility", + ]) + if (void 0 !== r[e]) { + i.attributes.style[e] = r[e]; + delete r[e]; + } + i.attributes.style.position = + "absolute" === r.position ? "absolute" : "relative"; + delete r.position; + if (r.alignSelf) { + i.attributes.style.alignSelf = r.alignSelf; + delete r.alignSelf; + } + return i; +} +function fixTextIndent(e) { + const t = getMeasurement(e.textIndent, "0px"); + if (t >= 0) return; + const a = + "padding" + + ("left" === ("right" === e.textAlign ? "right" : "left") + ? "Left" + : "Right"), + r = getMeasurement(e[a], "0px"); + e[a] = r - 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[fs]()[Jn].paraStack; + return t.length ? t.at(-1) : null; +} +function setPara(e, t, a) { + if (a.attributes.class?.includes("xfaRich")) { + if (t) { + "" === e.h && (t.height = "auto"); + "" === e.w && (t.width = "auto"); + } + const r = getCurrentPara(e); + if (r) { + const e = a.attributes.style; + e.display = "flex"; + e.flexDirection = "column"; + switch (r.vAlign) { + case "top": + e.justifyContent = "start"; + break; + case "bottom": + e.justifyContent = "end"; + break; + case "middle": + e.justifyContent = "center"; + } + const t = r[Ys](); + for (const [a, r] of Object.entries(t)) a in e || (e[a] = r); + } + } +} +function setFontFamily(e, t, a, r) { + if (!a) { + delete r.fontFamily; + return; + } + const i = stripQuotes(e.typeface); + r.fontFamily = `"${i}"`; + const n = a.find(i); + if (n) { + const { fontFamily: a } = n.regular.cssFontInfo; + a !== i && (r.fontFamily = `"${a}"`); + const s = getCurrentPara(t); + if (s && "" !== s.lineHeight) return; + if (r.lineHeight) return; + const o = selectFont(e, n); + o && (r.lineHeight = Math.max(1.2, o.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[Jn]) return null; + const t = { + name: "div", + attributes: e[Jn].attributes, + children: e[Jn].children, + }; + if (e[Jn].failingNode) { + const a = e[Jn].failingNode[Zn](); + a && + (e.layout.endsWith("-tb") + ? t.children.push(createLine(e, [a])) + : t.children.push(a)); + } + return 0 === t.children.length ? null : t; +} +function addHTML(e, t, a) { + const r = e[Jn], + i = r.availableSpace, + [n, s, o, c] = a; + switch (e.layout) { + case "position": + r.width = Math.max(r.width, n + o); + r.height = Math.max(r.height, s + c); + r.children.push(t); + break; + case "lr-tb": + case "rl-tb": + if (!r.line || 1 === r.attempt) { + r.line = createLine(e, []); + r.children.push(r.line); + r.numberInLine = 0; + } + r.numberInLine += 1; + r.line.children.push(t); + if (0 === r.attempt) { + r.currentWidth += o; + r.height = Math.max(r.height, r.prevHeight + c); + } else { + r.currentWidth = o; + r.prevHeight = r.height; + r.height += c; + r.attempt = 0; + } + r.width = Math.max(r.width, r.currentWidth); + break; + case "rl-row": + case "row": { + r.children.push(t); + r.width += o; + r.height = Math.max(r.height, c); + const e = measureToString(r.height); + for (const t of r.children) t.attributes.style.height = e; + break; + } + case "table": + case "tb": + r.width = MathClamp(o, r.width, i.width); + r.height += c; + r.children.push(t); + } +} +function getAvailableSpace(e) { + const t = e[Jn].availableSpace, + a = e.margin ? e.margin.topInset + e.margin.bottomInset : 0, + r = e.margin ? e.margin.leftInset + e.margin.rightInset : 0; + switch (e.layout) { + case "lr-tb": + case "rl-tb": + return 0 === e[Jn].attempt + ? { + width: t.width - r - e[Jn].currentWidth, + height: t.height - a - e[Jn].prevHeight, + } + : { width: t.width - r, height: t.height - a - e[Jn].height }; + case "rl-row": + case "row": + return { + width: Math.sumPrecise(e[Jn].columnWidths.slice(e[Jn].currentColumn)), + height: t.height - r, + }; + case "table": + case "tb": + return { width: t.width - r, height: t.height - a - e[Jn].height }; + default: + return t; + } +} +function checkDimensions(e, t) { + if (null === e[fs]()[Jn].firstUnsplittable) return !0; + if (0 === e.w || 0 === e.h) return !0; + const a = e[us](), + r = a[Jn]?.attempt || 0, + [, i, n, s] = (function getTransformedBBox(e) { + let t, + a, + r = "" === e.w ? NaN : e.w, + i = "" === e.h ? NaN : e.h, + [n, s] = [0, 0]; + switch (e.anchorType || "") { + case "bottomCenter": + [n, s] = [r / 2, i]; + break; + case "bottomLeft": + [n, s] = [0, i]; + break; + case "bottomRight": + [n, s] = [r, i]; + break; + case "middleCenter": + [n, s] = [r / 2, i / 2]; + break; + case "middleLeft": + [n, s] = [0, i / 2]; + break; + case "middleRight": + [n, s] = [r, i / 2]; + break; + case "topCenter": + [n, s] = [r / 2, 0]; + break; + case "topRight": + [n, s] = [r, 0]; + } + switch (e.rotate || 0) { + case 0: + [t, a] = [-n, -s]; + break; + case 90: + [t, a] = [-s, n]; + [r, i] = [i, -r]; + break; + case 180: + [t, a] = [n, s]; + [r, i] = [-r, -i]; + break; + case 270: + [t, a] = [s, -n]; + [r, i] = [-i, r]; + } + return [ + e.x + t + Math.min(0, r), + e.y + a + Math.min(0, i), + Math.abs(r), + Math.abs(i), + ]; + })(e); + switch (a.layout) { + case "lr-tb": + case "rl-tb": + return 0 === r + ? e[fs]()[Jn].noLayoutFailure + ? "" !== e.w + ? Math.round(n - t.width) <= 2 + : t.width > 2 + : !("" !== e.h && Math.round(s - t.height) > 2) && + ("" !== e.w + ? Math.round(n - t.width) <= 2 || + (0 === a[Jn].numberInLine && t.height > 2) + : t.width > 2) + : !!e[fs]()[Jn].noLayoutFailure || + (!("" !== e.h && Math.round(s - t.height) > 2) && + ("" === e.w || Math.round(n - t.width) <= 2 || !a[vs]()) && + t.height > 2); + case "table": + case "tb": + return ( + !!e[fs]()[Jn].noLayoutFailure || + ("" === e.h || e[Cs]() + ? ("" === e.w || Math.round(n - t.width) <= 2 || !a[vs]()) && + t.height > 2 + : Math.round(s - t.height) <= 2) + ); + case "position": + if (e[fs]()[Jn].noLayoutFailure) return !0; + if ("" === e.h || Math.round(s + i - t.height) <= 2) return !0; + return s + i > e[fs]()[Jn].currentContentArea.h; + case "rl-row": + case "row": + return ( + !!e[fs]()[Jn].noLayoutFailure || + "" === e.h || + Math.round(s - t.height) <= 2 + ); + default: + return !0; + } +} +const No = eo.template.id, + Eo = "http://www.w3.org/2000/svg", + Po = /^H(\d+)$/, + Lo = 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", + ]), + _o = [ + [[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[ss](); + 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[jn](t); + e.value = t; + } + e.value[Gs](t); +} +function* getContainedChildren(e) { + for (const t of e[cs]()) t instanceof SubformSet ? yield* t[ls]() : yield t; +} +function isRequired(e) { + return "error" === e.validate?.nullTest; +} +function setTabIndex(e) { + for (; e; ) { + if (!e.traversal) { + e[zs] = e[ds]()[zs]; + return; + } + if (e[zs]) return; + let t = null; + for (const a of e.traversal[cs]()) + if ("next" === a.operation) { + t = a; + break; + } + if (!t || !t.ref) { + e[zs] = e[ds]()[zs]; + return; + } + const a = e[fs](); + e[zs] = ++a[zs]; + const r = a[qs](t.ref, e); + if (!r) return; + e = r[0]; + } +} +function applyAssist(e, t) { + const a = e.assist; + if (a) { + const e = a[Ks](); + e && (t.title = e); + const r = a.role.match(Po); + if (r) { + const e = "heading", + a = r[1]; + t.role = e; + t["aria-level"] = a; + } + } + if ("table" === e.layout) t.role = "table"; + else if ("row" === e.layout) t.role = "row"; + else { + const a = e[ds](); + "row" === a.layout && + (t.role = "TH" === a.assist?.role ? "columnheader" : "cell"); + } +} +function ariaLabel(e) { + if (!e.assist) return null; + const t = e.assist; + return t.speak && "" !== t.speak[$n] + ? t.speak[$n] + : t.toolTip + ? t.toolTip[$n] + : 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[fs](); + if (null === t[Jn].firstUnsplittable) { + t[Jn].firstUnsplittable = e; + t[Jn].noLayoutFailure = !0; + } +} +function unsetFirstUnsplittable(e) { + const t = e[fs](); + t[Jn].firstUnsplittable === e && (t[Jn].noLayoutFailure = !1); +} +function handleBreak(e) { + if (e[Jn]) return !1; + e[Jn] = Object.create(null); + if ("auto" === e.targetType) return !1; + const t = e[fs](); + let a = null; + if (e.target) { + a = t[qs](e.target, e[ds]()); + if (!a) return !1; + a = a[0]; + } + const { currentPageArea: r, currentContentArea: i } = t[Jn]; + if ("pageArea" === e.targetType) { + a instanceof PageArea || (a = null); + if (e.startNew) { + e[Jn].target = a || r; + return !0; + } + if (a && a !== r) { + e[Jn].target = a; + return !0; + } + return !1; + } + a instanceof ContentArea || (a = null); + const n = a && a[ds](); + let s, + o = n; + if (e.startNew) + if (a) { + const e = n.contentArea.children, + t = e.indexOf(i), + r = e.indexOf(a); + -1 !== t && t < r && (o = null); + s = r - 1; + } else s = r.contentArea.children.indexOf(i); + else { + if (!a || a === i) return !1; + s = n.contentArea.children.indexOf(a) - 1; + o = n === r ? null : n; + } + e[Jn].target = o; + e[Jn].index = s; + return !0; +} +function handleOverflow(e, t, a) { + const r = e[fs](), + i = r[Jn].noLayoutFailure, + n = t[us]; + t[us] = () => e; + r[Jn].noLayoutFailure = !0; + const s = t[Ks](a); + e[Un](s.html, s.bbox); + r[Jn].noLayoutFailure = i; + t[us] = n; +} +class AppearanceFilter extends StringObject { + constructor(e) { + super(No, "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(No, "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; + } + [Ks]() { + const e = this.edge || new Edge({}), + t = e[Ys](), + a = Object.create(null); + "visible" === this.fill?.presence + ? Object.assign(a, this.fill[Ys]()) + : (a.fill = "transparent"); + a.strokeWidth = measureToString("visible" === e.presence ? e.thickness : 0); + a.stroke = t.color; + let r; + const i = { + xmlns: Eo, + style: { width: "100%", height: "100%", overflow: "visible" }, + }; + if (360 === this.sweepAngle) + r = { + name: "ellipse", + attributes: { + xmlns: Eo, + cx: "50%", + cy: "50%", + rx: "50%", + ry: "50%", + style: a, + }, + }; + else { + const e = (this.startAngle * Math.PI) / 180, + t = (this.sweepAngle * Math.PI) / 180, + n = this.sweepAngle > 180 ? 1 : 0, + [s, o, c, l] = [ + 50 * (1 + Math.cos(e)), + 50 * (1 - Math.sin(e)), + 50 * (1 + Math.cos(e + t)), + 50 * (1 - Math.sin(e + t)), + ]; + r = { + name: "path", + attributes: { + xmlns: Eo, + d: `M ${s} ${o} A 50 50 0 ${n} 0 ${c} ${l}`, + vectorEffect: "non-scaling-stroke", + style: a, + }, + }; + Object.assign(i, { viewBox: "0 0 100 100", preserveAspectRatio: "none" }); + } + const n = { name: "svg", children: [r], attributes: i }; + if (hasMargin(this[ds]()[ds]())) + return HTMLResult.success({ + name: "div", + attributes: { + style: { display: "inline", width: "100%", height: "100%" }, + }, + children: [n], + }); + n.attributes.style.position = "absolute"; + return HTMLResult.success(n); + } +} +class Area extends XFAObject { + constructor(e) { + super(No, "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(); + } + *[ls]() { + yield* getContainedChildren(this); + } + [Fs]() { + return !0; + } + [xs]() { + return !0; + } + [Un](e, t) { + const [a, r, i, n] = t; + this[Jn].width = Math.max(this[Jn].width, a + i); + this[Jn].height = Math.max(this[Jn].height, r + n); + this[Jn].children.push(e); + } + [ts]() { + return this[Jn].availableSpace; + } + [Ks](e) { + const t = toStyle(this, "position"), + a = { style: t, id: this[Zs], class: ["xfaArea"] }; + isPrintOnly(this) && a.class.push("xfaPrintOnly"); + this.name && (a.xfaName = this.name); + const r = []; + this[Jn] = { children: r, width: 0, height: 0, availableSpace: e }; + const i = this[Xn]({ + filter: new Set([ + "area", + "draw", + "field", + "exclGroup", + "subform", + "subformSet", + ]), + include: !0, + }); + if (!i.success) { + if (i.isBreak()) return i; + delete this[Jn]; + return HTMLResult.FAILURE; + } + t.width = measureToString(this[Jn].width); + t.height = measureToString(this[Jn].height); + const n = { name: "div", attributes: a, children: r }, + s = [this.x, this.y, this[Jn].width, this[Jn].height]; + delete this[Jn]; + return HTMLResult.success(n, s); + } +} +class Assist extends XFAObject { + constructor(e) { + super(No, "assist", !0); + this.id = e.id || ""; + this.role = e.role || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.speak = null; + this.toolTip = null; + } + [Ks]() { + return this.toolTip?.[$n] || null; + } +} +class Barcode extends XFAObject { + constructor(e) { + super(No, "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(No, "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(No, "bindItems"); + this.connection = e.connection || ""; + this.labelRef = e.labelRef || ""; + this.ref = e.ref || ""; + this.valueRef = e.valueRef || ""; + } +} +class Bookend extends XFAObject { + constructor(e) { + super(No, "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(No, "boolean"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [Ks](e) { + return valueToHtml(1 === this[$n] ? "1" : "0"); + } +} +class Border extends XFAObject { + constructor(e) { + super(No, "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; + } + [ss]() { + if (!this[Jn]) { + const e = this.edge.children.slice(); + if (e.length < 4) { + const t = e.at(-1) || new Edge({}); + for (let a = e.length; a < 4; a++) e.push(t); + } + const t = e.map((e) => e.thickness), + a = [0, 0, 0, 0]; + if (this.margin) { + a[0] = this.margin.topInset; + a[1] = this.margin.rightInset; + a[2] = this.margin.bottomInset; + a[3] = this.margin.leftInset; + } + this[Jn] = { widths: t, insets: a, edges: e }; + } + return this[Jn]; + } + [Ys]() { + const { edges: e } = this[ss](), + t = e.map((e) => { + const t = e[Ys](); + t.color ||= "#000000"; + return t; + }), + a = Object.create(null); + this.margin && Object.assign(a, this.margin[Ys]()); + "visible" === this.fill?.presence && Object.assign(a, this.fill[Ys]()); + if (this.corner.children.some((e) => 0 !== e.radius)) { + const e = this.corner.children.map((e) => e[Ys]()); + if (2 === e.length || 3 === e.length) { + const t = e.at(-1); + for (let a = e.length; a < 4; a++) e.push(t); + } + a.borderRadius = e.map((e) => e.radius).join(" "); + } + switch (this.presence) { + case "invisible": + case "hidden": + a.borderStyle = ""; + break; + case "inactive": + a.borderStyle = "none"; + break; + default: + a.borderStyle = t.map((e) => e.style).join(" "); + } + a.borderWidth = t.map((e) => e.width).join(" "); + a.borderColor = t.map((e) => e.color).join(" "); + return a; + } +} +class Break extends XFAObject { + constructor(e) { + super(No, "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(No, "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(No, "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; + } + [Ks](e) { + this[Jn] = {}; + return HTMLResult.FAILURE; + } +} +class Button extends XFAObject { + constructor(e) { + super(No, "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; + } + [Ks](e) { + const t = this[ds]()[ds](), + a = { + name: "button", + attributes: { id: this[Zs], class: ["xfaButton"], style: {} }, + children: [], + }; + for (const e of t.event.children) { + if ("click" !== e.activity || !e.script) continue; + const t = recoverJsURL(e.script[$n]); + if (!t) continue; + const r = fixURL(t.url); + r && + a.children.push({ + name: "a", + attributes: { + id: "link" + this[Zs], + href: r, + newWindow: t.newWindow, + class: ["xfaLink"], + style: {}, + }, + children: [], + }); + } + return HTMLResult.success(a); + } +} +class Calculate extends XFAObject { + constructor(e) { + super(No, "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(No, "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; + } + [Gs](e) { + _setValue(this, e); + } + [ss](e) { + if (!this[Jn]) { + let { width: t, height: a } = e; + switch (this.placement) { + case "left": + case "right": + case "inline": + t = this.reserve <= 0 ? t : this.reserve; + break; + case "top": + case "bottom": + a = this.reserve <= 0 ? a : this.reserve; + } + this[Jn] = layoutNode(this, { width: t, height: a }); + } + return this[Jn]; + } + [Ks](e) { + if (!this.value) return HTMLResult.EMPTY; + this[_s](); + const t = this.value[Ks](e).html; + if (!t) { + this[Ls](); + return HTMLResult.EMPTY; + } + const a = this.reserve; + if (this.reserve <= 0) { + const { w: t, h: a } = this[ss](e); + switch (this.placement) { + case "left": + case "right": + case "inline": + this.reserve = t; + break; + case "top": + case "bottom": + this.reserve = a; + } + } + const r = []; + "string" == typeof t ? r.push({ name: "#text", value: t }) : r.push(t); + const i = toStyle(this, "font", "margin", "visibility"); + switch (this.placement) { + case "left": + case "right": + this.reserve > 0 && (i.width = measureToString(this.reserve)); + break; + case "top": + case "bottom": + this.reserve > 0 && (i.height = measureToString(this.reserve)); + } + setPara(this, null, t); + this[Ls](); + this.reserve = a; + return HTMLResult.success({ + name: "div", + attributes: { style: i, class: ["xfaCaption"] }, + children: r, + }); + } +} +class Certificate extends StringObject { + constructor(e) { + super(No, "certificate"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Certificates extends XFAObject { + constructor(e) { + super(No, "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(No, "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; + } + [Ks](e) { + const t = toStyle(this, "margin"), + a = measureToString(this.size); + t.width = t.height = a; + let r, i, n; + const s = this[ds]()[ds](), + o = (s.items.children.length && s.items.children[0][Ks]().html) || [], + c = { + on: (void 0 !== o[0] ? o[0] : "on").toString(), + off: (void 0 !== o[1] ? o[1] : "off").toString(), + }, + l = (s.value?.[$s]() || "off") === c.on || void 0, + h = s[us](), + u = s[Zs]; + let d; + if (h instanceof ExclGroup) { + n = h[Zs]; + r = "radio"; + i = "xfaRadio"; + d = h[Vn]?.[Zs] || h[Zs]; + } else { + r = "checkbox"; + i = "xfaCheckbox"; + d = s[Vn]?.[Zs] || s[Zs]; + } + const f = { + name: "input", + attributes: { + class: [i], + style: t, + fieldId: u, + dataId: d, + type: r, + checked: l, + xfaOn: c.on, + xfaOff: c.off, + "aria-label": ariaLabel(s), + "aria-required": !1, + }, + }; + n && (f.attributes.name = n); + if (isRequired(s)) { + f.attributes["aria-required"] = !0; + f.attributes.required = !0; + } + return HTMLResult.success({ + name: "label", + attributes: { class: ["xfaLabel"] }, + children: [f], + }); + } +} +class ChoiceList extends XFAObject { + constructor(e) { + super(No, "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; + } + [Ks](e) { + const t = toStyle(this, "border", "margin"), + a = this[ds]()[ds](), + r = { + fontSize: `calc(${a.font?.size || 10}px * var(--total-scale-factor))`, + }, + i = []; + if (a.items.children.length > 0) { + const e = a.items; + let t = 0, + n = 0; + if (2 === e.children.length) { + t = e.children[0].save; + n = 1 - t; + } + const s = e.children[t][Ks]().html, + o = e.children[n][Ks]().html; + let c = !1; + const l = a.value?.[$s]() || ""; + for (let e = 0, t = s.length; e < t; e++) { + const t = { + name: "option", + attributes: { value: o[e] || s[e], style: r }, + value: s[e], + }; + o[e] === l && (t.attributes.selected = c = !0); + i.push(t); + } + c || + i.splice(0, 0, { + name: "option", + attributes: { hidden: !0, selected: !0 }, + value: " ", + }); + } + const n = { + class: ["xfaSelect"], + fieldId: a[Zs], + dataId: a[Vn]?.[Zs] || a[Zs], + style: t, + "aria-label": ariaLabel(a), + "aria-required": !1, + }; + if (isRequired(a)) { + n["aria-required"] = !0; + n.required = !0; + } + "multiSelect" === this.open && (n.multiple = !0); + return HTMLResult.success({ + name: "label", + attributes: { class: ["xfaLabel"] }, + children: [{ name: "select", children: i, attributes: n }], + }); + } +} +class Color extends XFAObject { + constructor(e) { + super(No, "color", !0); + this.cSpace = getStringOption(e.cSpace, ["SRGB"]); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.value = e.value + ? (function getColor(e, t = [0, 0, 0]) { + let [a, r, i] = t; + if (!e) return { r: a, g: r, b: i }; + const n = e + .split(",", 3) + .map((e) => MathClamp(parseInt(e.trim(), 10), 0, 255)) + .map((e) => (isNaN(e) ? 0 : e)); + if (n.length < 3) return { r: a, g: r, b: i }; + [a, r, i] = n; + return { r: a, g: r, b: i }; + })(e.value) + : ""; + this.extras = null; + } + [ps]() { + return !1; + } + [Ys]() { + return this.value + ? Util.makeHexColor(this.value.r, this.value.g, this.value.b) + : null; + } +} +class Comb extends XFAObject { + constructor(e) { + super(No, "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(No, "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(No, "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; + } + [Ks](e) { + const t = { + left: measureToString(this.x), + top: measureToString(this.y), + width: measureToString(this.w), + height: measureToString(this.h), + }, + a = ["xfaContentarea"]; + isPrintOnly(this) && a.push("xfaPrintOnly"); + return HTMLResult.success({ + name: "div", + children: [], + attributes: { style: t, class: a, id: this[Zs] }, + }); + } +} +class Corner extends XFAObject { + constructor(e) { + super(No, "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; + } + [Ys]() { + const e = toStyle(this, "visibility"); + e.radius = measureToString("square" === this.join ? 0 : this.radius); + return e; + } +} +class DateElement extends ContentObject { + constructor(e) { + super(No, "date"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [Yn]() { + const e = this[$n].trim(); + this[$n] = e ? new Date(e) : null; + } + [Ks](e) { + return valueToHtml(this[$n] ? this[$n].toString() : ""); + } +} +class DateTime extends ContentObject { + constructor(e) { + super(No, "dateTime"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [Yn]() { + const e = this[$n].trim(); + this[$n] = e ? new Date(e) : null; + } + [Ks](e) { + return valueToHtml(this[$n] ? this[$n].toString() : ""); + } +} +class DateTimeEdit extends XFAObject { + constructor(e) { + super(No, "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; + } + [Ks](e) { + const t = toStyle(this, "border", "font", "margin"), + a = this[ds]()[ds](), + r = { + name: "input", + attributes: { + type: "text", + fieldId: a[Zs], + dataId: a[Vn]?.[Zs] || a[Zs], + class: ["xfaTextfield"], + style: t, + "aria-label": ariaLabel(a), + "aria-required": !1, + }, + }; + if (isRequired(a)) { + r.attributes["aria-required"] = !0; + r.attributes.required = !0; + } + return HTMLResult.success({ + name: "label", + attributes: { class: ["xfaLabel"] }, + children: [r], + }); + } +} +class Decimal extends ContentObject { + constructor(e) { + super(No, "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 || ""; + } + [Yn]() { + const e = parseFloat(this[$n].trim()); + this[$n] = isNaN(e) ? null : e; + } + [Ks](e) { + return valueToHtml(null !== this[$n] ? this[$n].toString() : ""); + } +} +class DefaultUi extends XFAObject { + constructor(e) { + super(No, "defaultUi", !0); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + } +} +class Desc extends XFAObject { + constructor(e) { + super(No, "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(No, "digestMethod", ["", "SHA1", "SHA256", "SHA512", "RIPEMD160"]); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class DigestMethods extends XFAObject { + constructor(e) { + super(No, "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(No, "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(); + } + [Gs](e) { + _setValue(this, e); + } + [Ks](e) { + setTabIndex(this); + if ("hidden" === this.presence || "inactive" === this.presence) + return HTMLResult.EMPTY; + fixDimensions(this); + this[_s](); + const t = this.w, + a = this.h, + { w: r, h: i, isBroken: n } = layoutNode(this, e); + if (r && "" === this.w) { + if (n && this[us]()[vs]()) { + this[Ls](); + return HTMLResult.FAILURE; + } + this.w = r; + } + i && "" === this.h && (this.h = i); + setFirstUnsplittable(this); + if (!checkDimensions(this, e)) { + this.w = t; + this.h = a; + this[Ls](); + return HTMLResult.FAILURE; + } + unsetFirstUnsplittable(this); + const s = toStyle( + this, + "font", + "hAlign", + "dimensions", + "position", + "presence", + "rotate", + "anchorType", + "border", + "margin", + ); + setMinMaxDimensions(this, s); + if (s.margin) { + s.padding = s.margin; + delete s.margin; + } + const o = ["xfaDraw"]; + this.font && o.push("xfaFont"); + isPrintOnly(this) && o.push("xfaPrintOnly"); + const c = { style: s, id: this[Zs], class: o }; + this.name && (c.xfaName = this.name); + const l = { name: "div", attributes: c, children: [] }; + applyAssist(this, c); + const h = computeBbox(this, l, e), + u = this.value ? this.value[Ks](e).html : null; + if (null === u) { + this.w = t; + this.h = a; + this[Ls](); + return HTMLResult.success(createWrapper(this, l), h); + } + l.children.push(u); + setPara(this, s, u); + this.w = t; + this.h = a; + this[Ls](); + return HTMLResult.success(createWrapper(this, l), h); + } +} +class Edge extends XFAObject { + constructor(e) { + super(No, "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; + } + [Ys]() { + const e = toStyle(this, "visibility"); + Object.assign(e, { + linecap: this.cap, + width: measureToString(this.thickness), + color: this.color ? this.color[Ys]() : "#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(No, "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(No, "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(No, "encrypt", !0); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.certificate = null; + } +} +class EncryptData extends XFAObject { + constructor(e) { + super(No, "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(No, "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(No, "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(No, "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(No, "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(No, "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 || ""; + } + [ws]() { + return "text/html" === this.contentType; + } + [Bs](e) { + if ("text/html" === this.contentType && e[Os] === eo.xhtml.id) { + this[$n] = e; + return !0; + } + if ("text/xml" === this.contentType) { + this[$n] = e; + return !0; + } + return !1; + } + [Ks](e) { + return "text/html" === this.contentType && this[$n] + ? this[$n][Ks](e) + : HTMLResult.EMPTY; + } +} +class ExObject extends XFAObject { + constructor(e) { + super(No, "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(No, "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(); + } + [xs]() { + return !0; + } + [ps]() { + return !0; + } + [Gs](e) { + for (const t of this.field.children) { + if (!t.value) { + const e = new Value({}); + t[jn](e); + t.value = e; + } + t.value[Gs](e); + } + } + [vs]() { + return ( + (this.layout.endsWith("-tb") && + 0 === this[Jn].attempt && + this[Jn].numberInLine > 0) || + this[ds]()[vs]() + ); + } + [Cs]() { + const e = this[us](); + if (!e[Cs]()) return !1; + if (void 0 !== this[Jn]._isSplittable) return this[Jn]._isSplittable; + if ("position" === this.layout || this.layout.includes("row")) { + this[Jn]._isSplittable = !1; + return !1; + } + if (e.layout?.endsWith("-tb") && 0 !== e[Jn].numberInLine) return !1; + this[Jn]._isSplittable = !0; + return !0; + } + [Zn]() { + return flushHTML(this); + } + [Un](e, t) { + addHTML(this, e, t); + } + [ts]() { + return getAvailableSpace(this); + } + [Ks](e) { + setTabIndex(this); + if ( + "hidden" === this.presence || + "inactive" === this.presence || + 0 === this.h || + 0 === this.w + ) + return HTMLResult.EMPTY; + fixDimensions(this); + const t = [], + a = { id: this[Zs], class: [] }; + setAccess(this, a.class); + this[Jn] ||= Object.create(null); + Object.assign(this[Jn], { + children: t, + attributes: a, + 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 r = this[Cs](); + r || setFirstUnsplittable(this); + if (!checkDimensions(this, e)) return HTMLResult.FAILURE; + const i = new Set(["field"]); + if (this.layout.includes("row")) { + const e = this[us]().columnWidths; + if (Array.isArray(e) && e.length > 0) { + this[Jn].columnWidths = e; + this[Jn].currentColumn = 0; + } + } + const n = toStyle( + this, + "anchorType", + "dimensions", + "position", + "presence", + "border", + "margin", + "hAlign", + ), + s = ["xfaExclgroup"], + o = layoutClass(this); + o && s.push(o); + isPrintOnly(this) && s.push("xfaPrintOnly"); + a.style = n; + a.class = s; + this.name && (a.xfaName = this.name); + this[_s](); + const c = "lr-tb" === this.layout || "rl-tb" === this.layout, + l = c ? 2 : 1; + for (; this[Jn].attempt < l; this[Jn].attempt++) { + c && 1 === this[Jn].attempt && (this[Jn].numberInLine = 0); + const e = this[Xn]({ filter: i, include: !0 }); + if (e.success) break; + if (e.isBreak()) { + this[Ls](); + return e; + } + if ( + c && + 0 === this[Jn].attempt && + 0 === this[Jn].numberInLine && + !this[fs]()[Jn].noLayoutFailure + ) { + this[Jn].attempt = l; + break; + } + } + this[Ls](); + r || unsetFirstUnsplittable(this); + if (this[Jn].attempt === l) { + r || delete this[Jn]; + return HTMLResult.FAILURE; + } + let h = 0, + u = 0; + if (this.margin) { + h = this.margin.leftInset + this.margin.rightInset; + u = this.margin.topInset + this.margin.bottomInset; + } + const d = Math.max(this[Jn].width + h, this.w || 0), + f = Math.max(this[Jn].height + u, this.h || 0), + g = [this.x, this.y, d, f]; + "" === this.w && (n.width = measureToString(d)); + "" === this.h && (n.height = measureToString(f)); + const p = { name: "div", attributes: a, children: t }; + applyAssist(this, a); + delete this[Jn]; + return HTMLResult.success(createWrapper(this, p), g); + } +} +class Execute extends XFAObject { + constructor(e) { + super(No, "execute"); + this.connection = e.connection || ""; + this.executeType = getStringOption(e.executeType, ["import", "remerge"]); + this.id = e.id || ""; + this.runAt = getStringOption(e.runAt, ["client", "both", "server"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Extras extends XFAObject { + constructor(e) { + super(No, "extras", !0); + this.id = e.id || ""; + this.name = e.name || ""; + 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.extras = new XFAObjectArray(); + this.float = new XFAObjectArray(); + this.image = new XFAObjectArray(); + this.integer = new XFAObjectArray(); + this.text = new XFAObjectArray(); + this.time = new XFAObjectArray(); + } +} +class Field extends XFAObject { + constructor(e) { + super(No, "field", !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.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(); + } + [xs]() { + return !0; + } + [Gs](e) { + _setValue(this, e); + } + [Ks](e) { + setTabIndex(this); + if (!this.ui) { + this.ui = new Ui({}); + this.ui[gs] = this[gs]; + this[jn](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[jn](e); + } + if ( + !this.ui || + "hidden" === this.presence || + "inactive" === this.presence || + 0 === this.h || + 0 === this.w + ) + return HTMLResult.EMPTY; + this.caption && delete this.caption[Jn]; + this[_s](); + const t = this.caption ? this.caption[Ks](e).html : null, + a = this.w, + r = this.h; + let i = 0, + n = 0; + if (this.margin) { + i = this.margin.leftInset + this.margin.rightInset; + n = this.margin.topInset + this.margin.bottomInset; + } + let s = null; + if ("" === this.w || "" === this.h) { + let t = null, + a = null, + r = 0, + o = 0; + if (this.ui.checkButton) r = o = this.ui.checkButton.size; + else { + const { w: t, h: a } = layoutNode(this, e); + if (null !== t) { + r = t; + o = a; + } else + o = (function fonts_getMetrics(e, t = !1) { + let a = null; + if (e) { + const t = stripQuotes(e.typeface), + r = e[gs].fontFinder.find(t); + a = selectFont(e, r); + } + if (!a) return { lineHeight: 12, lineGap: 2, lineNoGap: 10 }; + const r = e.size || 10, + i = a.lineHeight ? Math.max(t ? 0 : 1.2, a.lineHeight) : 1.2, + n = void 0 === a.lineGap ? 0.2 : a.lineGap; + return { + lineHeight: i * r, + lineGap: n * r, + lineNoGap: Math.max(1, i - n) * r, + }; + })(this.font, !0).lineNoGap; + } + s = getBorderDims(this.ui[ss]()); + r += s.w; + o += s.h; + if (this.caption) { + const { w: i, h: n, isBroken: s } = this.caption[ss](e); + if (s && this[us]()[vs]()) { + this[Ls](); + return HTMLResult.FAILURE; + } + t = i; + a = n; + switch (this.caption.placement) { + case "left": + case "right": + case "inline": + t += r; + break; + case "top": + case "bottom": + a += o; + } + } else { + t = r; + a = o; + } + if (t && "" === this.w) { + t += i; + this.w = Math.min( + this.maxW <= 0 ? 1 / 0 : this.maxW, + this.minW + 1 < t ? t : this.minW, + ); + } + if (a && "" === this.h) { + a += n; + this.h = Math.min( + this.maxH <= 0 ? 1 / 0 : this.maxH, + this.minH + 1 < a ? a : this.minH, + ); + } + } + this[Ls](); + fixDimensions(this); + setFirstUnsplittable(this); + if (!checkDimensions(this, e)) { + this.w = a; + this.h = r; + this[Ls](); + return HTMLResult.FAILURE; + } + unsetFirstUnsplittable(this); + const o = toStyle( + this, + "font", + "dimensions", + "position", + "rotate", + "anchorType", + "presence", + "margin", + "hAlign", + ); + setMinMaxDimensions(this, o); + const c = ["xfaField"]; + this.font && c.push("xfaFont"); + isPrintOnly(this) && c.push("xfaPrintOnly"); + const l = { style: o, id: this[Zs], class: c }; + if (o.margin) { + o.padding = o.margin; + delete o.margin; + } + setAccess(this, c); + this.name && (l.xfaName = this.name); + const h = [], + u = { name: "div", attributes: l, children: h }; + applyAssist(this, l); + const d = this.border ? this.border[Ys]() : null, + f = computeBbox(this, u, e), + g = this.ui[Ks]().html; + if (!g) { + Object.assign(o, d); + return HTMLResult.success(createWrapper(this, u), f); + } + this[zs] && + (g.children?.[0] + ? (g.children[0].attributes.tabindex = this[zs]) + : (g.attributes.tabindex = this[zs])); + g.attributes.style ||= Object.create(null); + let p = null; + if (this.ui.button) { + 1 === g.children.length && ([p] = g.children.splice(0, 1)); + Object.assign(g.attributes.style, d); + } else Object.assign(o, d); + h.push(g); + if (this.value) + if (this.ui.imageEdit) g.children.push(this.value[Ks]().html); + else if (!this.ui.button) { + let e = ""; + if (this.value.exData) e = this.value.exData[$s](); + else if (this.value.text) e = this.value.text[ss](); + else { + const t = this.value[Ks]().html; + null !== t && (e = t.children[0].value); + } + this.ui.textEdit && + this.value.text?.maxChars && + (g.children[0].attributes.maxLength = this.value.text.maxChars); + if (e) { + if (this.ui.numericEdit) { + e = parseFloat(e); + e = isNaN(e) ? "" : e.toString(); + } + "textarea" === g.children[0].name + ? (g.children[0].attributes.textContent = e) + : (g.children[0].attributes.value = e); + } + } + if (!this.ui.imageEdit && g.children?.[0] && this.h) { + s = s || getBorderDims(this.ui[ss]()); + let t = 0; + if (this.caption && ["top", "bottom"].includes(this.caption.placement)) { + t = this.caption.reserve; + t <= 0 && (t = this.caption[ss](e).h); + const a = this.h - t - n - s.h; + g.children[0].attributes.style.height = measureToString(a); + } else g.children[0].attributes.style.height = "100%"; + } + p && g.children.push(p); + if (!t) { + g.attributes.class && g.attributes.class.push("xfaLeft"); + this.w = a; + this.h = r; + return HTMLResult.success(createWrapper(this, u), f); + } + if (this.ui.button) { + o.padding && delete o.padding; + "div" === t.name && (t.name = "span"); + g.children.push(t); + return HTMLResult.success(u, f); + } + this.ui.checkButton && (t.attributes.class[0] = "xfaCaptionForCheckButton"); + g.attributes.class ||= []; + g.children.splice(0, 0, t); + switch (this.caption.placement) { + case "left": + case "inline": + g.attributes.class.push("xfaLeft"); + break; + case "right": + g.attributes.class.push("xfaRight"); + break; + case "top": + g.attributes.class.push("xfaTop"); + break; + case "bottom": + g.attributes.class.push("xfaBottom"); + } + this.w = a; + this.h = r; + return HTMLResult.success(createWrapper(this, u), f); + } +} +class Fill extends XFAObject { + constructor(e) { + super(No, "fill", !0); + this.id = e.id || ""; + this.presence = getStringOption(e.presence, [ + "visible", + "hidden", + "inactive", + "invisible", + ]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.color = null; + this.extras = null; + this.linear = null; + this.pattern = null; + this.radial = null; + this.solid = null; + this.stipple = null; + } + [Ys]() { + const e = this[ds](), + t = e[ds]()[ds](), + a = Object.create(null); + let r = "color", + i = r; + if (e instanceof Border) { + r = "background-color"; + i = "background"; + t instanceof Ui && (a.backgroundColor = "white"); + } + if (e instanceof Rectangle || e instanceof Arc) { + r = i = "fill"; + a.fill = "white"; + } + for (const e of Object.getOwnPropertyNames(this)) { + if ("extras" === e || "color" === e) continue; + const t = this[e]; + if (!(t instanceof XFAObject)) continue; + const n = t[Ys](this.color); + n && (a[n.startsWith("#") ? r : i] = n); + return a; + } + if (this.color?.value) { + const e = this.color[Ys](); + a[e.startsWith("#") ? r : i] = e; + } + return a; + } +} +class Filter extends XFAObject { + constructor(e) { + super(No, "filter", !0); + this.addRevocationInfo = getStringOption(e.addRevocationInfo, [ + "", + "required", + "optional", + "none", + ]); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.version = getInteger({ + data: this.version, + defaultValue: 5, + validate: (e) => e >= 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(No, "float"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [Yn]() { + const e = parseFloat(this[$n].trim()); + this[$n] = isNaN(e) ? null : e; + } + [Ks](e) { + return valueToHtml(null !== this[$n] ? this[$n].toString() : ""); + } +} +class template_Font extends XFAObject { + constructor(e) { + super(No, "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; + } + [qn](e) { + super[qn](e); + this[gs].usedTypefaces.add(this.typeface); + } + [Ys]() { + 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(0.99 * this.size); + setFontFamily(this, this, this[gs].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(No, "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(No, "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(No, "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(No, "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 || ""; + } + [Ks]() { + if (this.contentType && !Lo.has(this.contentType.toLowerCase())) + return HTMLResult.EMPTY; + let e = this[gs].images?.get(this.href); + if (!e && (this.href || !this[$n])) return HTMLResult.EMPTY; + e || + "base64" !== this.transferEncoding || + (e = (function fromBase64Util(e) { + return Uint8Array.fromBase64 + ? Uint8Array.fromBase64(e) + : stringToBytes(atob(e)); + })(this[$n])); + if (!e) return HTMLResult.EMPTY; + if (!this.contentType) { + for (const [t, a] of _o) + if (e.length > t.length && t.every((t, a) => t === e[a])) { + this.contentType = a; + break; + } + if (!this.contentType) return HTMLResult.EMPTY; + } + const t = new Blob([e], { type: this.contentType }); + let a; + switch (this.aspect) { + case "fit": + case "actual": + break; + case "height": + a = { height: "100%", objectFit: "fill" }; + break; + case "none": + a = { width: "100%", height: "100%", objectFit: "fill" }; + break; + case "width": + a = { width: "100%", objectFit: "fill" }; + } + const r = this[ds](); + return HTMLResult.success({ + name: "img", + attributes: { + class: ["xfaImage"], + style: a, + src: URL.createObjectURL(t), + alt: r ? ariaLabel(r[ds]()) : null, + }, + }); + } +} +class ImageEdit extends XFAObject { + constructor(e) { + super(No, "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; + } + [Ks](e) { + return "embed" === this.data + ? HTMLResult.success({ name: "div", children: [], attributes: {} }) + : HTMLResult.EMPTY; + } +} +class Integer extends ContentObject { + constructor(e) { + super(No, "integer"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [Yn]() { + const e = parseInt(this[$n].trim(), 10); + this[$n] = isNaN(e) ? null : e; + } + [Ks](e) { + return valueToHtml(null !== this[$n] ? this[$n].toString() : ""); + } +} +class Issuers extends XFAObject { + constructor(e) { + super(No, "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(No, "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(); + } + [Ks]() { + const e = []; + for (const t of this[cs]()) e.push(t[$s]()); + return HTMLResult.success(e); + } +} +class Keep extends XFAObject { + constructor(e) { + super(No, "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(No, "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(No, "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; + } + [Ks]() { + const e = this[ds]()[ds](), + t = this.edge || new Edge({}), + a = t[Ys](), + r = Object.create(null), + i = "visible" === t.presence ? t.thickness : 0; + r.strokeWidth = measureToString(i); + r.stroke = a.color; + let n, + s, + o, + c, + l = "100%", + h = "100%"; + if (e.w <= i) { + [n, s, o, c] = ["50%", 0, "50%", "100%"]; + l = r.strokeWidth; + } else if (e.h <= i) { + [n, s, o, c] = [0, "50%", "100%", "50%"]; + h = r.strokeWidth; + } else + "\\" === this.slope + ? ([n, s, o, c] = [0, 0, "100%", "100%"]) + : ([n, s, o, c] = [0, "100%", "100%", 0]); + const u = { + name: "svg", + children: [ + { + name: "line", + attributes: { xmlns: Eo, x1: n, y1: s, x2: o, y2: c, style: r }, + }, + ], + attributes: { + xmlns: Eo, + width: l, + height: h, + style: { overflow: "visible" }, + }, + }; + if (hasMargin(e)) + return HTMLResult.success({ + name: "div", + attributes: { + style: { display: "inline", width: "100%", height: "100%" }, + }, + children: [u], + }); + u.attributes.style.position = "absolute"; + return HTMLResult.success(u); + } +} +class Linear extends XFAObject { + constructor(e) { + super(No, "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; + } + [Ys](e) { + e = e ? e[Ys]() : "#FFFFFF"; + return `linear-gradient(${this.type.replace(/([RBLT])/, " $1").toLowerCase()}, ${e}, ${this.color ? this.color[Ys]() : "#000000"})`; + } +} +class LockDocument extends ContentObject { + constructor(e) { + super(No, "lockDocument"); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [Yn]() { + this[$n] = getStringOption(this[$n], ["auto", "0", "1"]); + } +} +class Manifest extends XFAObject { + constructor(e) { + super(No, "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(No, "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; + } + [Ys]() { + return { + margin: + measureToString(this.topInset) + + " " + + measureToString(this.rightInset) + + " " + + measureToString(this.bottomInset) + + " " + + measureToString(this.leftInset), + }; + } +} +class Mdp extends XFAObject { + constructor(e) { + super(No, "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(No, "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 a = e.split(",", 4).map((e) => getMeasurement(e.trim(), "-1")); + if (a.length < 4 || a[2] < 0 || a[3] < 0) + return { x: t, y: t, width: t, height: t }; + const [r, i, n, s] = a; + return { x: r, y: i, width: n, height: s }; + })(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(No, "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(No, "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; + } + [Ks](e) { + const t = toStyle(this, "border", "font", "margin"), + a = this[ds]()[ds](), + r = { + name: "input", + attributes: { + type: "text", + fieldId: a[Zs], + dataId: a[Vn]?.[Zs] || a[Zs], + class: ["xfaTextfield"], + style: t, + "aria-label": ariaLabel(a), + "aria-required": !1, + }, + }; + if (isRequired(a)) { + r.attributes["aria-required"] = !0; + r.attributes.required = !0; + } + return HTMLResult.success({ + name: "label", + attributes: { class: ["xfaLabel"] }, + children: [r], + }); + } +} +class Occur extends XFAObject { + constructor(e) { + super(No, "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; + } + [qn]() { + const e = this[ds](), + 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 < this.min && (this.max = this.min); + "" === this.initial && + (this.initial = e instanceof Template ? 1 : this.min); + } +} +class Oid extends StringObject { + constructor(e) { + super(No, "oid"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Oids extends XFAObject { + constructor(e) { + super(No, "oids", !0); + this.id = e.id || ""; + this.type = getStringOption(e.type, ["optional", "required"]); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.oid = new XFAObjectArray(); + } +} +class Overflow extends XFAObject { + constructor(e) { + super(No, "overflow"); + this.id = e.id || ""; + this.leader = e.leader || ""; + this.target = e.target || ""; + this.trailer = e.trailer || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [ss]() { + if (!this[Jn]) { + const e = this[ds](), + t = this[fs](), + a = t[qs](this.target, e), + r = t[qs](this.leader, e), + i = t[qs](this.trailer, e); + this[Jn] = { + target: a?.[0] || null, + leader: r?.[0] || null, + trailer: i?.[0] || null, + addLeader: !1, + addTrailer: !1, + }; + } + return this[Jn]; + } +} +class PageArea extends XFAObject { + constructor(e) { + super(No, "pageArea", !0); + this.blankOrNotBlank = getStringOption(e.blankOrNotBlank, [ + "any", + "blank", + "notBlank", + ]); + this.id = e.id || ""; + this.initialNumber = getInteger({ + data: e.initialNumber, + defaultValue: 1, + validate: (e) => !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(); + } + [Is]() { + if (!this[Jn]) { + this[Jn] = { numberOfUse: 0 }; + return !0; + } + return ( + !this.occur || + -1 === this.occur.max || + this[Jn].numberOfUse < this.occur.max + ); + } + [Hn]() { + delete this[Jn]; + } + [hs]() { + this[Jn] ||= { numberOfUse: 0 }; + const e = this[ds](); + if ("orderedOccurrence" === e.relation && this[Is]()) { + this[Jn].numberOfUse += 1; + return this; + } + return e[hs](); + } + [ts]() { + return this[Jn].space || { width: 0, height: 0 }; + } + [Ks]() { + this[Jn] ||= { numberOfUse: 1 }; + const e = []; + this[Jn].children = e; + const t = Object.create(null); + if (this.medium && this.medium.short && this.medium.long) { + t.width = measureToString(this.medium.short); + t.height = measureToString(this.medium.long); + this[Jn].space = { width: this.medium.short, height: this.medium.long }; + if ("landscape" === this.medium.orientation) { + const e = t.width; + t.width = t.height; + t.height = e; + this[Jn].space = { width: this.medium.long, height: this.medium.short }; + } + } else warn("XFA - No medium specified in pageArea: please file a bug."); + this[Xn]({ + filter: new Set(["area", "draw", "field", "subform"]), + include: !0, + }); + this[Xn]({ filter: new Set(["contentArea"]), include: !0 }); + return HTMLResult.success({ + name: "div", + children: e, + attributes: { + class: ["xfaPage"], + id: this[Zs], + style: t, + xfaName: this.name, + }, + }); + } +} +class PageSet extends XFAObject { + constructor(e) { + super(No, "pageSet", !0); + this.duplexImposition = getStringOption(e.duplexImposition, [ + "longEdge", + "shortEdge", + ]); + this.id = e.id || ""; + this.name = e.name || ""; + this.relation = getStringOption(e.relation, [ + "orderedOccurrence", + "duplexPaginated", + "simplexPaginated", + ]); + this.relevant = getRelevant(e.relevant); + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + this.occur = null; + this.pageArea = new XFAObjectArray(); + this.pageSet = new XFAObjectArray(); + } + [Hn]() { + for (const e of this.pageArea.children) e[Hn](); + for (const e of this.pageSet.children) e[Hn](); + } + [Is]() { + return ( + !this.occur || + -1 === this.occur.max || + this[Jn].numberOfUse < this.occur.max + ); + } + [hs]() { + this[Jn] ||= { numberOfUse: 1, pageIndex: -1, pageSetIndex: -1 }; + if ("orderedOccurrence" === this.relation) { + if (this[Jn].pageIndex + 1 < this.pageArea.children.length) { + this[Jn].pageIndex += 1; + return this.pageArea.children[this[Jn].pageIndex][hs](); + } + if (this[Jn].pageSetIndex + 1 < this.pageSet.children.length) { + this[Jn].pageSetIndex += 1; + return this.pageSet.children[this[Jn].pageSetIndex][hs](); + } + if (this[Is]()) { + this[Jn].numberOfUse += 1; + this[Jn].pageIndex = -1; + this[Jn].pageSetIndex = -1; + return this[hs](); + } + const e = this[ds](); + if (e instanceof PageSet) return e[hs](); + this[Hn](); + return this[hs](); + } + const e = this[fs]()[Jn].pageNumber, + t = e % 2 == 0 ? "even" : "odd", + a = 0 === e ? "first" : "rest"; + let r = this.pageArea.children.find( + (e) => e.oddOrEven === t && e.pagePosition === a, + ); + if (r) return r; + r = this.pageArea.children.find( + (e) => "any" === e.oddOrEven && e.pagePosition === a, + ); + if (r) return r; + r = this.pageArea.children.find( + (e) => "any" === e.oddOrEven && "any" === e.pagePosition, + ); + return r || this.pageArea.children[0]; + } +} +class Para extends XFAObject { + constructor(e) { + super(No, "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; + } + [Ys]() { + 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[Ys]()); + return e; + } +} +class PasswordEdit extends XFAObject { + constructor(e) { + super(No, "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(No, "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; + } + [Ys](e) { + e = e ? e[Ys]() : "#FFFFFF"; + const t = this.color ? this.color[Ys]() : "#000000", + a = "repeating-linear-gradient", + r = `${e},${e} 5px,${t} 5px,${t} 10px`; + switch (this.type) { + case "crossHatch": + return `${a}(to top,${r}) ${a}(to right,${r})`; + case "crossDiagonal": + return `${a}(45deg,${r}) ${a}(-45deg,${r})`; + case "diagonalLeft": + return `${a}(45deg,${r})`; + case "diagonalRight": + return `${a}(-45deg,${r})`; + case "horizontal": + return `${a}(to top,${r})`; + case "vertical": + return `${a}(to right,${r})`; + } + return ""; + } +} +class Picture extends StringObject { + constructor(e) { + super(No, "picture"); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Proto extends XFAObject { + constructor(e) { + super(No, "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(No, "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; + } + [Ys](e) { + e = e ? e[Ys]() : "#FFFFFF"; + const t = this.color ? this.color[Ys]() : "#000000"; + return `radial-gradient(circle at center, ${"toEdge" === this.type ? `${e},${t}` : `${t},${e}`})`; + } +} +class Reason extends StringObject { + constructor(e) { + super(No, "reason"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Reasons extends XFAObject { + constructor(e) { + super(No, "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(No, "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; + } + [Ks]() { + const e = this.edge.children.length ? this.edge.children[0] : new Edge({}), + t = e[Ys](), + a = Object.create(null); + "visible" === this.fill?.presence + ? Object.assign(a, this.fill[Ys]()) + : (a.fill = "transparent"); + a.strokeWidth = measureToString("visible" === e.presence ? e.thickness : 0); + a.stroke = t.color; + const r = ( + this.corner.children.length ? this.corner.children[0] : new Corner({}) + )[Ys](), + i = { + name: "svg", + children: [ + { + name: "rect", + attributes: { + xmlns: Eo, + width: "100%", + height: "100%", + x: 0, + y: 0, + rx: r.radius, + ry: r.radius, + style: a, + }, + }, + ], + attributes: { + xmlns: Eo, + style: { overflow: "visible" }, + width: "100%", + height: "100%", + }, + }; + if (hasMargin(this[ds]()[ds]())) + return HTMLResult.success({ + name: "div", + attributes: { + style: { display: "inline", width: "100%", height: "100%" }, + }, + children: [i], + }); + i.attributes.style.position = "absolute"; + return HTMLResult.success(i); + } +} +class RefElement extends StringObject { + constructor(e) { + super(No, "ref"); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Script extends StringObject { + constructor(e) { + super(No, "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(No, "setProperty"); + this.connection = e.connection || ""; + this.ref = e.ref || ""; + this.target = e.target || ""; + } +} +class SignData extends XFAObject { + constructor(e) { + super(No, "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(No, "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(No, "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(No, "solid", !0); + this.id = e.id || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + this.extras = null; + } + [Ys](e) { + return e ? e[Ys]() : "#FFFFFF"; + } +} +class Speak extends StringObject { + constructor(e) { + super(No, "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(No, "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; + } + [Ys](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(No, "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(); + } + [us]() { + const e = this[ds](); + return e instanceof SubformSet ? e[us]() : e; + } + [xs]() { + return !0; + } + [vs]() { + return ( + (this.layout.endsWith("-tb") && + 0 === this[Jn].attempt && + this[Jn].numberInLine > 0) || + this[ds]()[vs]() + ); + } + *[ls]() { + yield* getContainedChildren(this); + } + [Zn]() { + return flushHTML(this); + } + [Un](e, t) { + addHTML(this, e, t); + } + [ts]() { + return getAvailableSpace(this); + } + [Cs]() { + const e = this[us](); + if (!e[Cs]()) return !1; + if (void 0 !== this[Jn]._isSplittable) return this[Jn]._isSplittable; + if ("position" === this.layout || this.layout.includes("row")) { + this[Jn]._isSplittable = !1; + return !1; + } + if (this.keep && "none" !== this.keep.intact) { + this[Jn]._isSplittable = !1; + return !1; + } + if (e.layout?.endsWith("-tb") && 0 !== e[Jn].numberInLine) return !1; + this[Jn]._isSplittable = !0; + return !0; + } + [Ks](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[gs] = this[gs]; + this[jn](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[gs] = this[gs]; + this[jn](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[gs] = this[gs]; + this[jn](e); + this.overflow.push(e); + } + this[Us](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[Jn]?.afterBreakAfter) return HTMLResult.EMPTY; + fixDimensions(this); + const t = [], + a = { id: this[Zs], class: [] }; + setAccess(this, a.class); + this[Jn] ||= Object.create(null); + Object.assign(this[Jn], { + children: t, + line: null, + attributes: a, + 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 r = this[fs](), + i = r[Jn].noLayoutFailure, + n = this[Cs](); + n || setFirstUnsplittable(this); + if (!checkDimensions(this, e)) return HTMLResult.FAILURE; + const s = new Set([ + "area", + "draw", + "exclGroup", + "field", + "subform", + "subformSet", + ]); + if (this.layout.includes("row")) { + const e = this[us]().columnWidths; + if (Array.isArray(e) && e.length > 0) { + this[Jn].columnWidths = e; + this[Jn].currentColumn = 0; + } + } + const o = toStyle( + this, + "anchorType", + "dimensions", + "position", + "presence", + "border", + "margin", + "hAlign", + ), + c = ["xfaSubform"], + l = layoutClass(this); + l && c.push(l); + a.style = o; + a.class = c; + this.name && (a.xfaName = this.name); + if (this.overflow) { + const t = this.overflow[ss](); + if (t.addLeader) { + t.addLeader = !1; + handleOverflow(this, t.leader, e); + } + } + this[_s](); + const h = "lr-tb" === this.layout || "rl-tb" === this.layout, + u = h ? 2 : 1; + for (; this[Jn].attempt < u; this[Jn].attempt++) { + h && 1 === this[Jn].attempt && (this[Jn].numberInLine = 0); + const e = this[Xn]({ filter: s, include: !0 }); + if (e.success) break; + if (e.isBreak()) { + this[Ls](); + return e; + } + if ( + h && + 0 === this[Jn].attempt && + 0 === this[Jn].numberInLine && + !r[Jn].noLayoutFailure + ) { + this[Jn].attempt = u; + break; + } + } + this[Ls](); + n || unsetFirstUnsplittable(this); + r[Jn].noLayoutFailure = i; + if (this[Jn].attempt === u) { + this.overflow && (this[fs]()[Jn].overflowNode = this.overflow); + n || delete this[Jn]; + return HTMLResult.FAILURE; + } + if (this.overflow) { + const t = this.overflow[ss](); + if (t.addTrailer) { + t.addTrailer = !1; + handleOverflow(this, t.trailer, e); + } + } + let d = 0, + f = 0; + if (this.margin) { + d = this.margin.leftInset + this.margin.rightInset; + f = this.margin.topInset + this.margin.bottomInset; + } + const g = Math.max(this[Jn].width + d, this.w || 0), + p = Math.max(this[Jn].height + f, this.h || 0), + m = [this.x, this.y, g, p]; + "" === this.w && (o.width = measureToString(g)); + "" === this.h && (o.height = measureToString(p)); + if (("0px" === o.width || "0px" === o.height) && 0 === t.length) + return HTMLResult.EMPTY; + const b = { name: "div", attributes: a, children: t }; + applyAssist(this, a); + const y = HTMLResult.success(createWrapper(this, b), m); + if (this.breakAfter.children.length >= 1) { + const e = this.breakAfter.children[0]; + if (handleBreak(e)) { + this[Jn].afterBreakAfter = y; + return HTMLResult.breakNode(e); + } + } + delete this[Jn]; + return y; + } +} +class SubformSet extends XFAObject { + constructor(e) { + super(No, "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(); + } + *[ls]() { + yield* getContainedChildren(this); + } + [us]() { + let e = this[ds](); + for (; !(e instanceof Subform); ) e = e[ds](); + return e; + } + [xs]() { + return !0; + } +} +class SubjectDN extends ContentObject { + constructor(e) { + super(No, "subjectDN"); + this.delimiter = e.delimiter || ","; + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [Yn]() { + this[$n] = new Map( + this[$n].split(this.delimiter).map((e) => { + (e = e.split("=", 2))[0] = e[0].trim(); + return e; + }), + ); + } +} +class SubjectDNs extends XFAObject { + constructor(e) { + super(No, "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(No, "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(No, "template", !0); + this.baseProfile = getStringOption(e.baseProfile, [ + "full", + "interactiveForms", + ]); + this.extras = null; + this.subform = new XFAObjectArray(); + } + [Yn]() { + 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[zs] = 5e3; + } + [Cs]() { + return !0; + } + [qs](e, t) { + return e.startsWith("#") + ? [this[ms].get(e.slice(1))] + : searchNode(this, t, e, !0, !0); + } + *[Vs]() { + if (!this.subform.children.length) + return HTMLResult.success({ name: "div", children: [] }); + this[Jn] = { + 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[Hn](); + const t = e.pageSet.pageArea.children, + a = { name: "div", children: [] }; + let r = null, + i = null, + n = null; + if (e.breakBefore.children.length >= 1) { + i = e.breakBefore.children[0]; + n = i.target; + } else if ( + e.subform.children.length >= 1 && + e.subform.children[0].breakBefore.children.length >= 1 + ) { + i = e.subform.children[0].breakBefore.children[0]; + n = i.target; + } else if (e.break?.beforeTarget) { + i = e.break; + n = i.beforeTarget; + } else if ( + e.subform.children.length >= 1 && + e.subform.children[0].break?.beforeTarget + ) { + i = e.subform.children[0].break; + n = i.beforeTarget; + } + if (i) { + const e = this[qs](n, i[ds]()); + if (e instanceof PageArea) { + r = e; + i[Jn] = {}; + } + } + r ||= t[0]; + r[Jn] = { numberOfUse: 1 }; + const s = r[ds](); + s[Jn] = { + numberOfUse: 1, + pageIndex: s.pageArea.children.indexOf(r), + pageSetIndex: 0, + }; + let o, + c = null, + l = null, + h = !0, + u = 0, + d = 0; + for (;;) { + if (h) u = 0; + else { + a.children.pop(); + if (3 === ++u) { + warn("XFA - Something goes wrong: please file a bug."); + return a; + } + } + o = null; + this[Jn].currentPageArea = r; + const t = r[Ks]().html; + a.children.push(t); + if (c) { + this[Jn].noLayoutFailure = !0; + t.children.push(c[Ks](r[Jn].space).html); + c = null; + } + if (l) { + this[Jn].noLayoutFailure = !0; + t.children.push(l[Ks](r[Jn].space).html); + l = null; + } + const i = r.contentArea.children, + n = t.children.filter((e) => + e.attributes.class.includes("xfaContentarea"), + ); + h = !1; + this[Jn].firstUnsplittable = null; + this[Jn].noLayoutFailure = !1; + const flush = (t) => { + const a = e[Zn](); + if (a) { + h ||= a.children?.length > 0; + n[t].children.push(a); + } + }; + for (let t = d, r = i.length; t < r; t++) { + const r = (this[Jn].currentContentArea = i[t]), + s = { width: r.w, height: r.h }; + d = 0; + if (c) { + n[t].children.push(c[Ks](s).html); + c = null; + } + if (l) { + n[t].children.push(l[Ks](s).html); + l = null; + } + const u = e[Ks](s); + if (u.success) { + if (u.html) { + h ||= u.html.children?.length > 0; + n[t].children.push(u.html); + } else !h && a.children.length > 1 && a.children.pop(); + return a; + } + if (u.isBreak()) { + const e = u.breakNode; + flush(t); + if ("auto" === e.targetType) continue; + if (e.leader) { + c = this[qs](e.leader, e[ds]()); + c = c ? c[0] : null; + } + if (e.trailer) { + l = this[qs](e.trailer, e[ds]()); + l = l ? l[0] : null; + } + if ("pageArea" === e.targetType) { + o = e[Jn].target; + t = 1 / 0; + } else if (e[Jn].target) { + o = e[Jn].target; + d = e[Jn].index + 1; + t = 1 / 0; + } else t = e[Jn].index; + continue; + } + if (this[Jn].overflowNode) { + const e = this[Jn].overflowNode; + this[Jn].overflowNode = null; + const a = e[ss](), + r = a.target; + a.addLeader = null !== a.leader; + a.addTrailer = null !== a.trailer; + flush(t); + const n = t; + t = 1 / 0; + if (r instanceof PageArea) o = r; + else if (r instanceof ContentArea) { + const e = i.indexOf(r); + if (-1 !== e) e > n ? (t = e - 1) : (d = e); + else { + o = r[ds](); + d = o.contentArea.children.indexOf(r); + } + } + continue; + } + flush(t); + } + this[Jn].pageNumber += 1; + o && (o[Is]() ? (o[Jn].numberOfUse += 1) : (o = null)); + r = o || r[hs](); + yield null; + } + } +} +class Text extends ContentObject { + constructor(e) { + super(No, "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 || ""; + } + [_n]() { + return !0; + } + [Bs](e) { + if (e[Os] === eo.xhtml.id) { + this[$n] = e; + return !0; + } + warn(`XFA - Invalid content in Text: ${e[Ms]}.`); + return !1; + } + [Ns](e) { + this[$n] instanceof XFAObject || super[Ns](e); + } + [Yn]() { + "string" == typeof this[$n] && + (this[$n] = this[$n].replaceAll("\r\n", "\n")); + } + [ss]() { + return "string" == typeof this[$n] + ? this[$n] + .split(/[\u2029\u2028\n]/) + .filter((e) => !!e) + .join("\n") + : this[$n][$s](); + } + [Ks](e) { + if ("string" == typeof this[$n]) { + const e = valueToHtml(this[$n]).html; + if (this[$n].includes("\u2029")) { + e.name = "div"; + e.children = []; + this[$n] + .split("\u2029") + .map((e) => + e + .split(/[\u2028\n]/) + .flatMap((e) => [{ name: "span", value: e }, { name: "br" }]), + ) + .forEach((t) => { + e.children.push({ name: "p", children: t }); + }); + } else if (/[\u2028\n]/.test(this[$n])) { + e.name = "div"; + e.children = []; + this[$n].split(/[\u2028\n]/).forEach((t) => { + e.children.push({ name: "span", value: t }, { name: "br" }); + }); + } + return HTMLResult.success(e); + } + return this[$n][Ks](e); + } +} +class TextEdit extends XFAObject { + constructor(e) { + super(No, "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; + } + [Ks](e) { + const t = toStyle(this, "border", "font", "margin"); + let a; + const r = this[ds]()[ds](); + "" === this.multiLine && (this.multiLine = r instanceof Draw ? 1 : 0); + a = + 1 === this.multiLine + ? { + name: "textarea", + attributes: { + dataId: r[Vn]?.[Zs] || r[Zs], + fieldId: r[Zs], + class: ["xfaTextfield"], + style: t, + "aria-label": ariaLabel(r), + "aria-required": !1, + }, + } + : { + name: "input", + attributes: { + type: "text", + dataId: r[Vn]?.[Zs] || r[Zs], + fieldId: r[Zs], + class: ["xfaTextfield"], + style: t, + "aria-label": ariaLabel(r), + "aria-required": !1, + }, + }; + if (isRequired(r)) { + a.attributes["aria-required"] = !0; + a.attributes.required = !0; + } + return HTMLResult.success({ + name: "label", + attributes: { class: ["xfaLabel"] }, + children: [a], + }); + } +} +class Time extends StringObject { + constructor(e) { + super(No, "time"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } + [Yn]() { + const e = this[$n].trim(); + this[$n] = e ? new Date(e) : null; + } + [Ks](e) { + return valueToHtml(this[$n] ? this[$n].toString() : ""); + } +} +class TimeStamp extends XFAObject { + constructor(e) { + super(No, "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(No, "toolTip"); + this.id = e.id || ""; + this.rid = e.rid || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Traversal extends XFAObject { + constructor(e) { + super(No, "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(No, "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; + } + [Fs]() { + return !1; + } +} +class Ui extends XFAObject { + constructor(e) { + super(No, "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; + } + [ss]() { + if (void 0 === this[Jn]) { + for (const e of Object.getOwnPropertyNames(this)) { + if ("extras" === e || "picture" === e) continue; + const t = this[e]; + if (t instanceof XFAObject) { + this[Jn] = t; + return t; + } + } + this[Jn] = null; + } + return this[Jn]; + } + [Ks](e) { + const t = this[ss](); + return t ? t[Ks](e) : HTMLResult.EMPTY; + } +} +class Validate extends XFAObject { + constructor(e) { + super(No, "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(No, "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; + } + [Gs](e) { + const t = this[ds](); + if (t instanceof Field && t.ui?.imageEdit) { + if (!this.image) { + this.image = new Image({}); + this[jn](this.image); + } + this.image[$n] = e[$n]; + return; + } + const a = e[Ms]; + if (null === this[a]) { + for (const e of Object.getOwnPropertyNames(this)) { + const t = this[e]; + if (t instanceof XFAObject) { + this[e] = null; + this[Us](t); + } + } + this[e[Ms]] = e; + this[jn](e); + } else this[a][$n] = e[$n]; + } + [$s]() { + if (this.exData) + return "string" == typeof this.exData[$n] + ? this.exData[$n].trim() + : this.exData[$n][$s]().trim(); + for (const e of Object.getOwnPropertyNames(this)) { + if ("image" === e) continue; + const t = this[e]; + if (t instanceof XFAObject) return (t[$n] || "").toString().trim(); + } + return null; + } + [Ks](e) { + for (const t of Object.getOwnPropertyNames(this)) { + const a = this[t]; + if (a instanceof XFAObject) return a[Ks](e); + } + return HTMLResult.EMPTY; + } +} +class Variables extends XFAObject { + constructor(e) { + super(No, "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(); + } + [Fs]() { + return !0; + } +} +class TemplateNamespace { + static [Qs](e, t) { + if (TemplateNamespace.hasOwnProperty(e)) { + const a = TemplateNamespace[e](t); + a[Ws](t); + return a; + } + } + 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 Uo = eo.datasets.id; +function createText(e) { + const t = new Text({}); + t[$n] = e; + return t; +} +class Binder { + constructor(e) { + this.root = e; + this.datasets = e.datasets; + this.data = e.datasets?.data || new XmlObject(eo.datasets.id, "data"); + this.emptyMerge = 0 === this.data[cs]().length; + this.root.form = this.form = e.template[Gn](); + } + _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, a) { + e[Vn] = t; + if (e[ps]()) + if (t[Ss]()) { + const a = t[ns](); + e[Gs](createText(a)); + } else if ( + e instanceof Field && + "multiSelect" === e.ui?.choiceList?.open + ) { + const a = t[cs]() + .map((e) => e[$n].trim()) + .join("\n"); + e[Gs](createText(a)); + } else + this._isConsumeData() && warn("XFA - Nodes haven't the same type."); + else + !t[Ss]() || this._isMatchTemplate() + ? this._bindElement(e, t) + : warn("XFA - Nodes haven't the same type."); + } + _findDataByNameToConsume(e, t, a, r) { + if (!e) return null; + let i, n; + for (let r = 0; r < 3; r++) { + i = a[os](e, !1, !0); + for (;;) { + n = i.next().value; + if (!n) break; + if (t === n[Ss]()) return n; + } + if (a[Os] === eo.datasets.id && "data" === a[Ms]) break; + a = a[ds](); + } + if (!r) return null; + i = this.data[os](e, !0, !1); + n = i.next().value; + if (n) return n; + i = this.data[Qn](e, !0); + n = i.next().value; + return n?.[Ss]() ? n : null; + } + _setProperties(e, t) { + if (e.hasOwnProperty("setProperty")) + for (const { ref: a, target: r, connection: i } of e.setProperty + .children) { + if (i) continue; + if (!a) continue; + const n = searchNode(this.root, t, a, !1, !1); + if (!n) { + warn(`XFA - Invalid reference: ${a}.`); + continue; + } + const [s] = n; + if (!s[As](this.data)) { + warn("XFA - Invalid node: must be a data node."); + continue; + } + const o = searchNode(this.root, e, r, !1, !1); + if (!o) { + warn(`XFA - Invalid target: ${r}.`); + continue; + } + const [c] = o; + if (!c[As](e)) { + warn("XFA - Invalid target: must be a property or subproperty."); + continue; + } + const l = c[ds](); + if (c instanceof SetProperty || l instanceof SetProperty) { + warn( + "XFA - Invalid target: cannot be a setProperty or one of its properties.", + ); + continue; + } + if (c instanceof BindItems || l instanceof BindItems) { + warn( + "XFA - Invalid target: cannot be a bindItems or one of its properties.", + ); + continue; + } + const h = s[$s](), + u = c[Ms]; + if (c instanceof XFAAttribute) { + const e = Object.create(null); + e[u] = h; + const t = Reflect.construct(Object.getPrototypeOf(l).constructor, [ + e, + ]); + l[u] = t[u]; + continue; + } + if (c.hasOwnProperty($n)) { + c[Vn] = s; + c[$n] = h; + c[Yn](); + } 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[Us](t); + e.items.clear(); + const a = new Items({}), + r = new Items({}); + e[jn](a); + e.items.push(a); + e[jn](r); + e.items.push(r); + for (const { ref: i, labelRef: n, valueRef: s, connection: o } of e + .bindItems.children) { + if (o) continue; + if (!i) continue; + const e = searchNode(this.root, t, i, !1, !1); + if (e) + for (const t of e) { + if (!t[As](this.datasets)) { + warn(`XFA - Invalid ref (${i}): must be a datasets child.`); + continue; + } + const e = searchNode(this.root, t, n, !0, !1); + if (!e) { + warn(`XFA - Invalid label: ${n}.`); + continue; + } + const [o] = e; + if (!o[As](this.datasets)) { + warn("XFA - Invalid label: must be a datasets child."); + continue; + } + const c = searchNode(this.root, t, s, !0, !1); + if (!c) { + warn(`XFA - Invalid value: ${s}.`); + continue; + } + const [l] = c; + if (!l[As](this.datasets)) { + warn("XFA - Invalid value: must be a datasets child."); + continue; + } + const h = createText(o[$s]()), + u = createText(l[$s]()); + a[jn](h); + a.text.push(h); + r[jn](u); + r.text.push(u); + } + else warn(`XFA - Invalid reference: ${i}.`); + } + } + _bindOccurrences(e, t, a) { + let r; + if (t.length > 1) { + r = e[Gn](); + r[Us](r.occur); + r.occur = null; + } + this._bindValue(e, t[0], a); + this._setProperties(e, t[0]); + this._bindItems(e, t[0]); + if (1 === t.length) return; + const i = e[ds](), + n = e[Ms], + s = i[bs](e); + for (let e = 1, o = t.length; e < o; e++) { + const o = t[e], + c = r[Gn](); + i[n].push(c); + i[ys](s + e, c); + this._bindValue(c, o, a); + this._setProperties(c, o); + this._bindItems(c, o); + } + } + _createOccurrences(e) { + if (!this.emptyMerge) return; + const { occur: t } = e; + if (!t || t.initial <= 1) return; + const a = e[ds](), + r = e[Ms]; + if (!(a[r] instanceof XFAObjectArray)) return; + let i; + i = e.name + ? a[r].children.filter((t) => t.name === e.name).length + : a[r].children.length; + const n = a[bs](e) + 1, + s = t.initial - i; + if (s) { + const t = e[Gn](); + t[Us](t.occur); + t.occur = null; + a[r].push(t); + a[ys](n, t); + for (let e = 1; e < s; e++) { + const i = t[Gn](); + a[r].push(i); + a[ys](n + e, i); + } + } + } + _getOccurInfo(e) { + const { name: t, occur: a } = e; + if (!a || !t) return [1, 1]; + const r = -1 === a.max ? 1 / 0 : a.max; + return [a.min, r]; + } + _setAndBind(e, t) { + this._setProperties(e, t); + this._bindItems(e, t); + this._bindElement(e, t); + } + _bindElement(e, t) { + const a = []; + this._createOccurrences(e); + for (const r of e[cs]()) { + if (r[Vn]) continue; + if (void 0 === this._mergeMode && "subform" === r[Ms]) { + this._mergeMode = "consumeData" === r.mergeMode; + const e = t[cs](); + if (e.length > 0) this._bindOccurrences(r, [e[0]], null); + else if (this.emptyMerge) { + const e = t[Os] === Uo ? -1 : t[Os], + a = (r[Vn] = new XmlObject(e, r.name || "root")); + t[jn](a); + this._bindElement(r, a); + } + continue; + } + if (!r[xs]()) continue; + let e = !1, + i = null, + n = null, + s = null; + if (r.bind) { + switch (r.bind.match) { + case "none": + this._setAndBind(r, t); + continue; + case "global": + e = !0; + break; + case "dataRef": + if (!r.bind.ref) { + warn(`XFA - ref is empty in node ${r[Ms]}.`); + this._setAndBind(r, t); + continue; + } + n = r.bind.ref; + } + r.bind.picture && (i = r.bind.picture[$n]); + } + const [o, c] = this._getOccurInfo(r); + if (n) { + s = searchNode(this.root, t, n, !0, !1); + if (null === s) { + s = createDataNode(this.data, t, n); + if (!s) continue; + this._isConsumeData() && (s[zn] = !0); + this._setAndBind(r, s); + continue; + } + this._isConsumeData() && (s = s.filter((e) => !e[zn])); + s.length > c ? (s = s.slice(0, c)) : 0 === s.length && (s = null); + s && + this._isConsumeData() && + s.forEach((e) => { + e[zn] = !0; + }); + } else { + if (!r.name) { + this._setAndBind(r, t); + continue; + } + if (this._isConsumeData()) { + const a = []; + for (; a.length < c; ) { + const i = this._findDataByNameToConsume(r.name, r[ps](), t, e); + if (!i) break; + i[zn] = !0; + a.push(i); + } + s = a.length > 0 ? a : null; + } else { + s = t[os](r.name, !1, this.emptyMerge).next().value; + if (!s) { + if (0 === o) { + a.push(r); + continue; + } + const e = t[Os] === Uo ? -1 : t[Os]; + s = r[Vn] = new XmlObject(e, r.name); + this.emptyMerge && (s[zn] = !0); + t[jn](s); + this._setAndBind(r, s); + continue; + } + this.emptyMerge && (s[zn] = !0); + s = [s]; + } + } + s + ? this._bindOccurrences(r, s, i) + : o > 0 + ? this._setAndBind(r, t) + : a.push(r); + } + a.forEach((e) => e[ds]()[Us](e)); + } +} +class DataHandler { + constructor(e, t) { + this.data = t; + this.dataset = e.datasets || null; + } + serialize(e) { + const t = [[-1, this.data[cs]()]]; + for (; t.length > 0; ) { + const a = t.at(-1), + [r, i] = a; + if (r + 1 === i.length) { + t.pop(); + continue; + } + const n = i[++a[0]], + s = e.get(n[Zs]); + if (s) n[Gs](s); + else { + const t = n[es](); + for (const a of t.values()) { + const t = e.get(a[Zs]); + if (t) { + a[Gs](t); + break; + } + } + } + const o = n[cs](); + o.length > 0 && t.push([-1, o]); + } + const a = [ + '', + ]; + if (this.dataset) + for (const e of this.dataset[cs]()) "data" !== e[Ms] && e[Js](a); + this.data[Js](a); + a.push(""); + return a.join(""); + } +} +const jo = eo.config.id; +class Acrobat extends XFAObject { + constructor(e) { + super(jo, "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(jo, "acrobat7", !0); + this.dynamicRender = null; + } +} +class ADBE_JSConsole extends OptionObject { + constructor(e) { + super(jo, "ADBE_JSConsole", ["delegate", "Enable", "Disable"]); + } +} +class ADBE_JSDebugger extends OptionObject { + constructor(e) { + super(jo, "ADBE_JSDebugger", ["delegate", "Enable", "Disable"]); + } +} +class AddSilentPrint extends Option01 { + constructor(e) { + super(jo, "addSilentPrint"); + } +} +class AddViewerPreferences extends Option01 { + constructor(e) { + super(jo, "addViewerPreferences"); + } +} +class AdjustData extends Option10 { + constructor(e) { + super(jo, "adjustData"); + } +} +class AdobeExtensionLevel extends IntegerObject { + constructor(e) { + super(jo, "adobeExtensionLevel", 0, (e) => e >= 1 && e <= 8); + } +} +class Agent extends XFAObject { + constructor(e) { + super(jo, "agent", !0); + this.name = e.name ? e.name.trim() : ""; + this.common = new XFAObjectArray(); + } +} +class AlwaysEmbed extends ContentObject { + constructor(e) { + super(jo, "alwaysEmbed"); + } +} +class Amd extends StringObject { + constructor(e) { + super(jo, "amd"); + } +} +class config_Area extends XFAObject { + constructor(e) { + super(jo, "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(jo, "attributes", ["preserve", "delegate", "ignore"]); + } +} +class AutoSave extends OptionObject { + constructor(e) { + super(jo, "autoSave", ["disabled", "enabled"]); + } +} +class Base extends StringObject { + constructor(e) { + super(jo, "base"); + } +} +class BatchOutput extends XFAObject { + constructor(e) { + super(jo, "batchOutput"); + this.format = getStringOption(e.format, [ + "none", + "concat", + "zip", + "zipCompress", + ]); + } +} +class BehaviorOverride extends ContentObject { + constructor(e) { + super(jo, "behaviorOverride"); + } + [Yn]() { + this[$n] = new Map( + this[$n] + .trim() + .split(/\s+/) + .filter((e) => e.includes(":")) + .map((e) => e.split(":", 2)), + ); + } +} +class Cache extends XFAObject { + constructor(e) { + super(jo, "cache", !0); + this.templateCache = null; + } +} +class Change extends Option01 { + constructor(e) { + super(jo, "change"); + } +} +class Common extends XFAObject { + constructor(e) { + super(jo, "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(jo, "compress"); + this.scope = getStringOption(e.scope, ["imageOnly", "document"]); + } +} +class CompressLogicalStructure extends Option01 { + constructor(e) { + super(jo, "compressLogicalStructure"); + } +} +class CompressObjectStream extends Option10 { + constructor(e) { + super(jo, "compressObjectStream"); + } +} +class Compression extends XFAObject { + constructor(e) { + super(jo, "compression", !0); + this.compressLogicalStructure = null; + this.compressObjectStream = null; + this.level = null; + this.type = null; + } +} +class Config extends XFAObject { + constructor(e) { + super(jo, "config", !0); + this.acrobat = null; + this.present = null; + this.trace = null; + this.agent = new XFAObjectArray(); + } +} +class Conformance extends OptionObject { + constructor(e) { + super(jo, "conformance", ["A", "B"]); + } +} +class ContentCopy extends Option01 { + constructor(e) { + super(jo, "contentCopy"); + } +} +class Copies extends IntegerObject { + constructor(e) { + super(jo, "copies", 1, (e) => e >= 1); + } +} +class Creator extends StringObject { + constructor(e) { + super(jo, "creator"); + } +} +class CurrentPage extends IntegerObject { + constructor(e) { + super(jo, "currentPage", 0, (e) => e >= 0); + } +} +class Data extends XFAObject { + constructor(e) { + super(jo, "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(jo, "debug", !0); + this.uri = null; + } +} +class DefaultTypeface extends ContentObject { + constructor(e) { + super(jo, "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(jo, "destination", ["pdf", "pcl", "ps", "webClient", "zpl"]); + } +} +class DocumentAssembly extends Option01 { + constructor(e) { + super(jo, "documentAssembly"); + } +} +class Driver extends XFAObject { + constructor(e) { + super(jo, "driver", !0); + this.name = e.name ? e.name.trim() : ""; + this.fontInfo = null; + this.xdc = null; + } +} +class DuplexOption extends OptionObject { + constructor(e) { + super(jo, "duplexOption", [ + "simplex", + "duplexFlipLongEdge", + "duplexFlipShortEdge", + ]); + } +} +class DynamicRender extends OptionObject { + constructor(e) { + super(jo, "dynamicRender", ["forbidden", "required"]); + } +} +class Embed extends Option01 { + constructor(e) { + super(jo, "embed"); + } +} +class config_Encrypt extends Option01 { + constructor(e) { + super(jo, "encrypt"); + } +} +class config_Encryption extends XFAObject { + constructor(e) { + super(jo, "encryption", !0); + this.encrypt = null; + this.encryptionLevel = null; + this.permissions = null; + } +} +class EncryptionLevel extends OptionObject { + constructor(e) { + super(jo, "encryptionLevel", ["40bit", "128bit"]); + } +} +class Enforce extends StringObject { + constructor(e) { + super(jo, "enforce"); + } +} +class Equate extends XFAObject { + constructor(e) { + super(jo, "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(jo, "equateRange"); + this.from = e.from || ""; + this.to = e.to || ""; + this._unicodeRange = e.unicodeRange || ""; + } + get unicodeRange() { + const e = [], + t = /U\+([0-9a-fA-F]+)/, + a = this._unicodeRange; + for (let r of a + .split(",") + .map((e) => e.trim()) + .filter((e) => !!e)) { + r = r.split("-", 2).map((e) => { + const a = e.match(t); + return a ? parseInt(a[1], 16) : 0; + }); + 1 === r.length && r.push(r[0]); + e.push(r); + } + return shadow(this, "unicodeRange", e); + } +} +class Exclude extends ContentObject { + constructor(e) { + super(jo, "exclude"); + } + [Yn]() { + this[$n] = this[$n] + .trim() + .split(/\s+/) + .filter( + (e) => + e && + [ + "calculate", + "close", + "enter", + "exit", + "initialize", + "ready", + "validate", + ].includes(e), + ); + } +} +class ExcludeNS extends StringObject { + constructor(e) { + super(jo, "excludeNS"); + } +} +class FlipLabel extends OptionObject { + constructor(e) { + super(jo, "flipLabel", ["usePrinterSetting", "on", "off"]); + } +} +class config_FontInfo extends XFAObject { + constructor(e) { + super(jo, "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(jo, "formFieldFilling"); + } +} +class GroupParent extends StringObject { + constructor(e) { + super(jo, "groupParent"); + } +} +class IfEmpty extends OptionObject { + constructor(e) { + super(jo, "ifEmpty", ["dataValue", "dataGroup", "ignore", "remove"]); + } +} +class IncludeXDPContent extends StringObject { + constructor(e) { + super(jo, "includeXDPContent"); + } +} +class IncrementalLoad extends OptionObject { + constructor(e) { + super(jo, "incrementalLoad", ["none", "forwardOnly"]); + } +} +class IncrementalMerge extends Option01 { + constructor(e) { + super(jo, "incrementalMerge"); + } +} +class Interactive extends Option01 { + constructor(e) { + super(jo, "interactive"); + } +} +class Jog extends OptionObject { + constructor(e) { + super(jo, "jog", ["usePrinterSetting", "none", "pageSet"]); + } +} +class LabelPrinter extends XFAObject { + constructor(e) { + super(jo, "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(jo, "layout", ["paginate", "panel"]); + } +} +class Level extends IntegerObject { + constructor(e) { + super(jo, "level", 0, (e) => e > 0); + } +} +class Linearized extends Option01 { + constructor(e) { + super(jo, "linearized"); + } +} +class Locale extends StringObject { + constructor(e) { + super(jo, "locale"); + } +} +class LocaleSet extends StringObject { + constructor(e) { + super(jo, "localeSet"); + } +} +class Log extends XFAObject { + constructor(e) { + super(jo, "log", !0); + this.mode = null; + this.threshold = null; + this.to = null; + this.uri = null; + } +} +class MapElement extends XFAObject { + constructor(e) { + super(jo, "map", !0); + this.equate = new XFAObjectArray(); + this.equateRange = new XFAObjectArray(); + } +} +class MediumInfo extends XFAObject { + constructor(e) { + super(jo, "mediumInfo", !0); + this.map = null; + } +} +class config_Message extends XFAObject { + constructor(e) { + super(jo, "message", !0); + this.msgId = null; + this.severity = null; + } +} +class Messaging extends XFAObject { + constructor(e) { + super(jo, "messaging", !0); + this.message = new XFAObjectArray(); + } +} +class Mode extends OptionObject { + constructor(e) { + super(jo, "mode", ["append", "overwrite"]); + } +} +class ModifyAnnots extends Option01 { + constructor(e) { + super(jo, "modifyAnnots"); + } +} +class MsgId extends IntegerObject { + constructor(e) { + super(jo, "msgId", 1, (e) => e >= 1); + } +} +class NameAttr extends StringObject { + constructor(e) { + super(jo, "nameAttr"); + } +} +class NeverEmbed extends ContentObject { + constructor(e) { + super(jo, "neverEmbed"); + } +} +class NumberOfCopies extends IntegerObject { + constructor(e) { + super(jo, "numberOfCopies", null, (e) => e >= 2 && e <= 5); + } +} +class OpenAction extends XFAObject { + constructor(e) { + super(jo, "openAction", !0); + this.destination = null; + } +} +class Output extends XFAObject { + constructor(e) { + super(jo, "output", !0); + this.to = null; + this.type = null; + this.uri = null; + } +} +class OutputBin extends StringObject { + constructor(e) { + super(jo, "outputBin"); + } +} +class OutputXSL extends XFAObject { + constructor(e) { + super(jo, "outputXSL", !0); + this.uri = null; + } +} +class Overprint extends OptionObject { + constructor(e) { + super(jo, "overprint", ["none", "both", "draw", "field"]); + } +} +class Packets extends StringObject { + constructor(e) { + super(jo, "packets"); + } + [Yn]() { + "*" !== this[$n] && + (this[$n] = this[$n] + .trim() + .split(/\s+/) + .filter((e) => + ["config", "datasets", "template", "xfdf", "xslt"].includes(e), + )); + } +} +class PageOffset extends XFAObject { + constructor(e) { + super(jo, "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(jo, "pageRange"); + } + [Yn]() { + const e = this[$n] + .trim() + .split(/\s+/) + .map((e) => parseInt(e, 10)), + t = []; + for (let a = 0, r = e.length; a < r; a += 2) t.push(e.slice(a, a + 2)); + this[$n] = t; + } +} +class Pagination extends OptionObject { + constructor(e) { + super(jo, "pagination", ["simplex", "duplexShortEdge", "duplexLongEdge"]); + } +} +class PaginationOverride extends OptionObject { + constructor(e) { + super(jo, "paginationOverride", [ + "none", + "forceDuplex", + "forceDuplexLongEdge", + "forceDuplexShortEdge", + "forceSimplex", + ]); + } +} +class Part extends IntegerObject { + constructor(e) { + super(jo, "part", 1, (e) => !1); + } +} +class Pcl extends XFAObject { + constructor(e) { + super(jo, "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(jo, "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(jo, "pdfa", !0); + this.amd = null; + this.conformance = null; + this.includeXDPContent = null; + this.part = null; + } +} +class Permissions extends XFAObject { + constructor(e) { + super(jo, "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(jo, "pickTrayByPDFSize"); + } +} +class config_Picture extends StringObject { + constructor(e) { + super(jo, "picture"); + } +} +class PlaintextMetadata extends Option01 { + constructor(e) { + super(jo, "plaintextMetadata"); + } +} +class Presence extends OptionObject { + constructor(e) { + super(jo, "presence", [ + "preserve", + "dissolve", + "dissolveStructure", + "ignore", + "remove", + ]); + } +} +class Present extends XFAObject { + constructor(e) { + super(jo, "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(jo, "print"); + } +} +class PrintHighQuality extends Option01 { + constructor(e) { + super(jo, "printHighQuality"); + } +} +class PrintScaling extends OptionObject { + constructor(e) { + super(jo, "printScaling", ["appdefault", "noScaling"]); + } +} +class PrinterName extends StringObject { + constructor(e) { + super(jo, "printerName"); + } +} +class Producer extends StringObject { + constructor(e) { + super(jo, "producer"); + } +} +class Ps extends XFAObject { + constructor(e) { + super(jo, "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(jo, "range"); + } + [Yn]() { + this[$n] = this[$n] + .split(",", 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(jo, "record"); + } + [Yn]() { + this[$n] = this[$n].trim(); + const e = parseInt(this[$n], 10); + !isNaN(e) && e >= 0 && (this[$n] = e); + } +} +class Relevant extends ContentObject { + constructor(e) { + super(jo, "relevant"); + } + [Yn]() { + this[$n] = this[$n].trim().split(/\s+/); + } +} +class Rename extends ContentObject { + constructor(e) { + super(jo, "rename"); + } + [Yn]() { + this[$n] = this[$n].trim(); + (this[$n].toLowerCase().startsWith("xml") || + new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*", "u").test(this[$n])) && + warn("XFA - Rename: invalid XFA name"); + } +} +class RenderPolicy extends OptionObject { + constructor(e) { + super(jo, "renderPolicy", ["server", "client"]); + } +} +class RunScripts extends OptionObject { + constructor(e) { + super(jo, "runScripts", ["both", "client", "none", "server"]); + } +} +class config_Script extends XFAObject { + constructor(e) { + super(jo, "script", !0); + this.currentPage = null; + this.exclude = null; + this.runScripts = null; + } +} +class ScriptModel extends OptionObject { + constructor(e) { + super(jo, "scriptModel", ["XFA", "none"]); + } +} +class Severity extends OptionObject { + constructor(e) { + super(jo, "severity", [ + "ignore", + "error", + "information", + "trace", + "warning", + ]); + } +} +class SilentPrint extends XFAObject { + constructor(e) { + super(jo, "silentPrint", !0); + this.addSilentPrint = null; + this.printerName = null; + } +} +class Staple extends XFAObject { + constructor(e) { + super(jo, "staple"); + this.mode = getStringOption(e.mode, ["usePrinterSetting", "on", "off"]); + } +} +class StartNode extends StringObject { + constructor(e) { + super(jo, "startNode"); + } +} +class StartPage extends IntegerObject { + constructor(e) { + super(jo, "startPage", 0, (e) => !0); + } +} +class SubmitFormat extends OptionObject { + constructor(e) { + super(jo, "submitFormat", ["html", "delegate", "fdf", "xml", "pdf"]); + } +} +class SubmitUrl extends StringObject { + constructor(e) { + super(jo, "submitUrl"); + } +} +class SubsetBelow extends IntegerObject { + constructor(e) { + super(jo, "subsetBelow", 100, (e) => e >= 0 && e <= 100); + } +} +class SuppressBanner extends Option01 { + constructor(e) { + super(jo, "suppressBanner"); + } +} +class Tagged extends Option01 { + constructor(e) { + super(jo, "tagged"); + } +} +class config_Template extends XFAObject { + constructor(e) { + super(jo, "template", !0); + this.base = null; + this.relevant = null; + this.startPage = null; + this.uri = null; + this.xsl = null; + } +} +class Threshold extends OptionObject { + constructor(e) { + super(jo, "threshold", ["trace", "error", "information", "warning"]); + } +} +class To extends OptionObject { + constructor(e) { + super(jo, "to", ["null", "memory", "stderr", "stdout", "system", "uri"]); + } +} +class TemplateCache extends XFAObject { + constructor(e) { + super(jo, "templateCache"); + this.maxEntries = getInteger({ + data: e.maxEntries, + defaultValue: 5, + validate: (e) => e >= 0, + }); + } +} +class Trace extends XFAObject { + constructor(e) { + super(jo, "trace", !0); + this.area = new XFAObjectArray(); + } +} +class Transform extends XFAObject { + constructor(e) { + super(jo, "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(jo, "type", [ + "none", + "ascii85", + "asciiHex", + "ccittfax", + "flate", + "lzw", + "runLength", + "native", + "xdp", + "mergedXDP", + ]); + } +} +class Uri extends StringObject { + constructor(e) { + super(jo, "uri"); + } +} +class config_Validate extends OptionObject { + constructor(e) { + super(jo, "validate", ["preSubmit", "prePrint", "preExecute", "preSave"]); + } +} +class ValidateApprovalSignatures extends ContentObject { + constructor(e) { + super(jo, "validateApprovalSignatures"); + } + [Yn]() { + this[$n] = this[$n] + .trim() + .split(/\s+/) + .filter((e) => ["docReady", "postSign"].includes(e)); + } +} +class ValidationMessaging extends OptionObject { + constructor(e) { + super(jo, "validationMessaging", [ + "allMessagesIndividually", + "allMessagesTogether", + "firstMessageOnly", + "noMessages", + ]); + } +} +class Version extends OptionObject { + constructor(e) { + super(jo, "version", ["1.7", "1.6", "1.5", "1.4", "1.3", "1.2"]); + } +} +class VersionControl extends XFAObject { + constructor(e) { + super(jo, "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(jo, "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(jo, "webClient", !0); + this.name = e.name ? e.name.trim() : ""; + this.fontInfo = null; + this.xdc = null; + } +} +class Whitespace extends OptionObject { + constructor(e) { + super(jo, "whitespace", [ + "preserve", + "ltrim", + "normalize", + "rtrim", + "trim", + ]); + } +} +class Window extends ContentObject { + constructor(e) { + super(jo, "window"); + } + [Yn]() { + const e = this[$n].split(",", 2).map((e) => parseInt(e.trim(), 10)); + if (e.some((e) => isNaN(e))) this[$n] = [0, 0]; + else { + 1 === e.length && e.push(e[0]); + this[$n] = e; + } + } +} +class Xdc extends XFAObject { + constructor(e) { + super(jo, "xdc", !0); + this.uri = new XFAObjectArray(); + this.xsl = new XFAObjectArray(); + } +} +class Xdp extends XFAObject { + constructor(e) { + super(jo, "xdp", !0); + this.packets = null; + } +} +class Xsl extends XFAObject { + constructor(e) { + super(jo, "xsl", !0); + this.debug = null; + this.uri = null; + } +} +class Zpl extends XFAObject { + constructor(e) { + super(jo, "zpl", !0); + this.name = e.name ? e.name.trim() : ""; + this.batchOutput = null; + this.flipLabel = null; + this.fontInfo = null; + this.xdc = null; + } +} +class ConfigNamespace { + static [Qs](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 Xo = eo.connectionSet.id; +class ConnectionSet extends XFAObject { + constructor(e) { + super(Xo, "connectionSet", !0); + this.wsdlConnection = new XFAObjectArray(); + this.xmlConnection = new XFAObjectArray(); + this.xsdConnection = new XFAObjectArray(); + } +} +class EffectiveInputPolicy extends XFAObject { + constructor(e) { + super(Xo, "effectiveInputPolicy"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class EffectiveOutputPolicy extends XFAObject { + constructor(e) { + super(Xo, "effectiveOutputPolicy"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class Operation extends StringObject { + constructor(e) { + super(Xo, "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(Xo, "rootElement"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class SoapAction extends StringObject { + constructor(e) { + super(Xo, "soapAction"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class SoapAddress extends StringObject { + constructor(e) { + super(Xo, "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(Xo, "uri"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class WsdlAddress extends StringObject { + constructor(e) { + super(Xo, "wsdlAddress"); + this.id = e.id || ""; + this.name = e.name || ""; + this.use = e.use || ""; + this.usehref = e.usehref || ""; + } +} +class WsdlConnection extends XFAObject { + constructor(e) { + super(Xo, "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(Xo, "xmlConnection", !0); + this.dataDescription = e.dataDescription || ""; + this.name = e.name || ""; + this.uri = null; + } +} +class XsdConnection extends XFAObject { + constructor(e) { + super(Xo, "xsdConnection", !0); + this.dataDescription = e.dataDescription || ""; + this.name = e.name || ""; + this.rootElement = null; + this.uri = null; + } +} +class ConnectionSetNamespace { + static [Qs](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 qo = eo.datasets.id; +class datasets_Data extends XmlObject { + constructor(e) { + super(qo, "data", e); + } + [ks]() { + return !0; + } +} +class Datasets extends XFAObject { + constructor(e) { + super(qo, "datasets", !0); + this.data = null; + this.Signature = null; + } + [Bs](e) { + const t = e[Ms]; + (("data" === t && e[Os] === qo) || + ("Signature" === t && e[Os] === eo.signature.id)) && + (this[t] = e); + this[jn](e); + } +} +class DatasetsNamespace { + static [Qs](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 Ho = eo.localeSet.id; +class CalendarSymbols extends XFAObject { + constructor(e) { + super(Ho, "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(Ho, "currencySymbol"); + this.name = getStringOption(e.name, ["symbol", "isoname", "decimal"]); + } +} +class CurrencySymbols extends XFAObject { + constructor(e) { + super(Ho, "currencySymbols", !0); + this.currencySymbol = new XFAObjectArray(3); + } +} +class DatePattern extends StringObject { + constructor(e) { + super(Ho, "datePattern"); + this.name = getStringOption(e.name, ["full", "long", "med", "short"]); + } +} +class DatePatterns extends XFAObject { + constructor(e) { + super(Ho, "datePatterns", !0); + this.datePattern = new XFAObjectArray(4); + } +} +class DateTimeSymbols extends ContentObject { + constructor(e) { + super(Ho, "dateTimeSymbols"); + } +} +class Day extends StringObject { + constructor(e) { + super(Ho, "day"); + } +} +class DayNames extends XFAObject { + constructor(e) { + super(Ho, "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(Ho, "era"); + } +} +class EraNames extends XFAObject { + constructor(e) { + super(Ho, "eraNames", !0); + this.era = new XFAObjectArray(2); + } +} +class locale_set_Locale extends XFAObject { + constructor(e) { + super(Ho, "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(Ho, "localeSet", !0); + this.locale = new XFAObjectArray(); + } +} +class Meridiem extends StringObject { + constructor(e) { + super(Ho, "meridiem"); + } +} +class MeridiemNames extends XFAObject { + constructor(e) { + super(Ho, "meridiemNames", !0); + this.meridiem = new XFAObjectArray(2); + } +} +class Month extends StringObject { + constructor(e) { + super(Ho, "month"); + } +} +class MonthNames extends XFAObject { + constructor(e) { + super(Ho, "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(Ho, "numberPattern"); + this.name = getStringOption(e.name, ["full", "long", "med", "short"]); + } +} +class NumberPatterns extends XFAObject { + constructor(e) { + super(Ho, "numberPatterns", !0); + this.numberPattern = new XFAObjectArray(4); + } +} +class NumberSymbol extends StringObject { + constructor(e) { + super(Ho, "numberSymbol"); + this.name = getStringOption(e.name, [ + "decimal", + "grouping", + "percent", + "minus", + "zero", + ]); + } +} +class NumberSymbols extends XFAObject { + constructor(e) { + super(Ho, "numberSymbols", !0); + this.numberSymbol = new XFAObjectArray(5); + } +} +class TimePattern extends StringObject { + constructor(e) { + super(Ho, "timePattern"); + this.name = getStringOption(e.name, ["full", "long", "med", "short"]); + } +} +class TimePatterns extends XFAObject { + constructor(e) { + super(Ho, "timePatterns", !0); + this.timePattern = new XFAObjectArray(4); + } +} +class TypeFace extends XFAObject { + constructor(e) { + super(Ho, "typeFace", !0); + this.name = "" | e.name; + } +} +class TypeFaces extends XFAObject { + constructor(e) { + super(Ho, "typeFaces", !0); + this.typeFace = new XFAObjectArray(); + } +} +class LocaleSetNamespace { + static [Qs](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 Wo = eo.signature.id; +class signature_Signature extends XFAObject { + constructor(e) { + super(Wo, "signature", !0); + } +} +class SignatureNamespace { + static [Qs](e, t) { + if (SignatureNamespace.hasOwnProperty(e)) return SignatureNamespace[e](t); + } + static signature(e) { + return new signature_Signature(e); + } +} +const Go = eo.stylesheet.id; +class Stylesheet extends XFAObject { + constructor(e) { + super(Go, "stylesheet", !0); + } +} +class StylesheetNamespace { + static [Qs](e, t) { + if (StylesheetNamespace.hasOwnProperty(e)) return StylesheetNamespace[e](t); + } + static stylesheet(e) { + return new Stylesheet(e); + } +} +const zo = eo.xdp.id; +class xdp_Xdp extends XFAObject { + constructor(e) { + super(zo, "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; + } + [Rs](e) { + const t = eo[e[Ms]]; + return t && e[Os] === t.id; + } +} +class XdpNamespace { + static [Qs](e, t) { + if (XdpNamespace.hasOwnProperty(e)) return XdpNamespace[e](t); + } + static xdp(e) { + return new xdp_Xdp(e); + } +} +const $o = eo.xhtml.id, + Vo = Symbol(), + Ko = 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", + ]), + Jo = 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, parseInt(e) / 100).toFixed(2)})`, + ], + [ + "xfa-font-vertical-scale", + (e) => `scaleY(${Math.max(0, parseInt(e) / 100).toFixed(2)})`, + ], + ["xfa-spacerun", ""], + ["xfa-tab-stops", ""], + [ + "font-size", + (e, t) => + measureToString(0.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))], + ]), + Yo = /\s+/g, + Zo = /[\r\n]+/g, + Qo = /\r\n?/g; +function mapStyle(e, t, a) { + const r = Object.create(null); + if (!e) return r; + const i = Object.create(null); + for (const [t, a] of e.split(";").map((e) => e.split(":", 2))) { + const e = Jo.get(t); + if ("" === e) continue; + let n = a; + e && (n = "string" == typeof e ? e : e(a, i)); + t.endsWith("scale") + ? (r.transform = r.transform ? `${r[t]} ${n}` : n) + : (r[t.replaceAll(/-([a-zA-Z])/g, (e, t) => t.toUpperCase())] = n); + } + r.fontFamily && + setFontFamily( + { + typeface: r.fontFamily, + weight: r.fontWeight || "normal", + posture: r.fontStyle || "normal", + size: i.fontSize || 0, + }, + t, + t[gs].fontFinder, + r, + ); + if (a && r.verticalAlign && "0px" !== r.verticalAlign && r.fontSize) { + const e = 0.583, + t = 0.333, + a = getMeasurement(r.fontSize); + r.fontSize = measureToString(a * e); + r.verticalAlign = measureToString( + Math.sign(getMeasurement(r.verticalAlign)) * a * t, + ); + } + a && + r.fontSize && + (r.fontSize = `calc(${r.fontSize} * var(--total-scale-factor))`); + fixTextIndent(r); + return r; +} +const ec = new Set(["body", "html"]); +class XhtmlObject extends XmlObject { + constructor(e, t) { + super($o, t); + this[Vo] = !1; + this.style = e.style || ""; + } + [qn](e) { + super[qn](e); + this.style = (function checkStyle(e) { + return e.style + ? e.style + .split(";") + .filter((e) => !!e.trim()) + .map((e) => e.split(":", 2).map((e) => e.trim())) + .filter(([t, a]) => { + "font-family" === t && e[gs].usedTypefaces.add(a); + return Ko.has(t); + }) + .map((e) => e.join(":")) + .join(";") + : ""; + })(this); + } + [_n]() { + return !ec.has(this[Ms]); + } + [Ns](e, t = !1) { + if (t) this[Vo] = !0; + else { + e = e.replaceAll(Zo, ""); + this.style.includes("xfa-spacerun:yes") || (e = e.replaceAll(Yo, " ")); + } + e && (this[$n] += e); + } + [Es](e, t = !0) { + const a = Object.create(null), + r = { top: NaN, bottom: NaN, left: NaN, right: NaN }; + let i = null; + for (const [e, t] of this.style.split(";").map((e) => e.split(":", 2))) + switch (e) { + case "font-family": + a.typeface = stripQuotes(t); + break; + case "font-size": + a.size = getMeasurement(t); + break; + case "font-weight": + a.weight = t; + break; + case "font-style": + a.posture = t; + break; + case "letter-spacing": + a.letterSpacing = getMeasurement(t); + break; + case "margin": + const e = t.split(/ \t/).map((e) => getMeasurement(e)); + switch (e.length) { + case 1: + r.top = r.bottom = r.left = r.right = e[0]; + break; + case 2: + r.top = r.bottom = e[0]; + r.left = r.right = e[1]; + break; + case 3: + r.top = e[0]; + r.bottom = e[2]; + r.left = r.right = e[1]; + break; + case 4: + r.top = e[0]; + r.left = e[1]; + r.bottom = e[2]; + r.right = e[3]; + } + break; + case "margin-top": + r.top = getMeasurement(t); + break; + case "margin-bottom": + r.bottom = getMeasurement(t); + break; + case "margin-left": + r.left = getMeasurement(t); + break; + case "margin-right": + r.right = getMeasurement(t); + break; + case "line-height": + i = getMeasurement(t); + } + e.pushData(a, r, i); + if (this[$n]) e.addString(this[$n]); + else + for (const t of this[cs]()) + "#text" !== t[Ms] ? t[Es](e) : e.addString(t[$n]); + t && e.popFont(); + } + [Ks](e) { + const t = []; + this[Jn] = { children: t }; + this[Xn]({}); + if (0 === t.length && !this[$n]) return HTMLResult.EMPTY; + let a; + a = this[Vo] + ? this[$n] + ? this[$n].replaceAll(Qo, "\n") + : void 0 + : this[$n] || void 0; + return HTMLResult.success({ + name: this[Ms], + attributes: { + href: this.href, + style: mapStyle(this.style, this, this[Vo]), + }, + children: t, + value: a, + }); + } +} +class A extends XhtmlObject { + constructor(e) { + super(e, "a"); + this.href = fixURL(e.href) || ""; + } +} +class B extends XhtmlObject { + constructor(e) { + super(e, "b"); + } + [Es](e) { + e.pushFont({ weight: "bold" }); + super[Es](e); + e.popFont(); + } +} +class Body extends XhtmlObject { + constructor(e) { + super(e, "body"); + } + [Ks](e) { + const t = super[Ks](e), + { html: a } = t; + if (!a) return HTMLResult.EMPTY; + a.name = "div"; + a.attributes.class = ["xfaRich"]; + return t; + } +} +class Br extends XhtmlObject { + constructor(e) { + super(e, "br"); + } + [$s]() { + return "\n"; + } + [Es](e) { + e.addString("\n"); + } + [Ks](e) { + return HTMLResult.success({ name: "br" }); + } +} +class Html extends XhtmlObject { + constructor(e) { + super(e, "html"); + } + [Ks](e) { + const t = []; + this[Jn] = { children: t }; + this[Xn]({}); + if (0 === t.length) + return HTMLResult.success({ + name: "div", + attributes: { class: ["xfaRich"], style: {} }, + value: this[$n] || "", + }); + 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"); + } + [Es](e) { + e.pushFont({ posture: "italic" }); + super[Es](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"); + } + [Es](e) { + super[Es](e, !1); + e.addString("\n"); + e.addPara(); + e.popFont(); + } + [$s]() { + return this[ds]()[cs]().at(-1) === this ? super[$s]() : super[$s]() + "\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 [Qs](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 tc = { + 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; + } + [Qs](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[ms] = e; + } + [Bs](e) { + this.element = e; + return !0; + } + [Yn]() { + super[Yn](); + if (this.element.template instanceof Template) { + this[ms].set(js, this.element); + this.element.template[Xs](this[ms]); + this.element.template[ms] = this[ms]; + } + } +} +class Empty extends XFAObject { + constructor() { + super(-1, "", Object.create(null)); + } + [Bs](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(eo).map(({ id: e }) => e)); + this._currentNamespace = e || new UnknownNamespace(++this._nextNsId); + } + buildRoot(e) { + return new Root(e); + } + build({ nsPrefix: e, name: t, attributes: a, namespace: r, prefixes: i }) { + const n = null !== r; + if (n) { + this._namespaceStack.push(this._currentNamespace); + this._currentNamespace = this._searchNamespace(r); + } + i && this._addNamespacePrefix(i); + if (a.hasOwnProperty(Ds)) { + const e = tc.datasets, + t = a[Ds]; + let r = null; + for (const [a, i] of Object.entries(t)) { + if (this._getNamespaceToUse(a) === e) { + r = { xfa: i }; + break; + } + } + r ? (a[Ds] = r) : delete a[Ds]; + } + const s = this._getNamespaceToUse(e), + o = s?.[Qs](t, a) || new Empty(); + o[ks]() && this._nsAgnosticLevel++; + (n || i || o[ks]()) && + (o[Wn] = { hasNamespace: n, prefixes: i, nsAgnostic: o[ks]() }); + return o; + } + isNsAgnostic() { + return this._nsAgnosticLevel > 0; + } + _searchNamespace(e) { + let t = this._namespaces.get(e); + if (t) return t; + for (const [a, { check: r }] of Object.entries(eo)) + if (r(e)) { + t = tc[a]; + 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: a } of e) { + const e = this._searchNamespace(a); + let r = this._namespacePrefixes.get(t); + if (!r) { + r = []; + this._namespacePrefixes.set(t, r); + } + r.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: a, nsAgnostic: r } = e; + t && (this._currentNamespace = this._namespaceStack.pop()); + a && + a.forEach(({ prefix: e }) => { + this._namespacePrefixes.get(e).pop(); + }); + r && 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 = vn; + this._whiteRegex = /^\s+$/; + this._nbsps = /\xa0+/g; + this._richText = t; + } + parse(e) { + this.parseXml(e); + if (this._errorCode === vn) { + this._current[Yn](); + return this._current.element; + } + } + onText(e) { + e = e.replace(this._nbsps, (e) => e.slice(1) + " "); + this._richText || this._current[_n]() + ? this._current[Ns](e, this._richText) + : this._whiteRegex.test(e) || this._current[Ns](e.trim()); + } + onCdata(e) { + this._current[Ns](e); + } + _mkAttributes(e, t) { + let a = null, + r = null; + const i = Object.create({}); + for (const { name: n, value: s } of e) + if ("xmlns" === n) + a ? warn(`XFA - multiple namespace definition in <${t}>`) : (a = s); + else if (n.startsWith("xmlns:")) { + const e = n.substring(6); + r ??= []; + r.push({ prefix: e, value: s }); + } else { + const e = n.indexOf(":"); + if (-1 === e) i[n] = s; + else { + const t = (i[Ds] ??= Object.create(null)), + [a, r] = [n.slice(0, e), n.slice(e + 1)]; + (t[a] ||= Object.create(null))[r] = s; + } + } + return [a, r, i]; + } + _getNameAndPrefix(e, t) { + const a = e.indexOf(":"); + return -1 === a + ? [e, null] + : [e.substring(a + 1), t ? "" : e.substring(0, a)]; + } + onBeginElement(e, t, a) { + const [r, i, n] = this._mkAttributes(t, e), + [s, o] = this._getNameAndPrefix(e, this._builder.isNsAgnostic()), + c = this._builder.build({ + nsPrefix: o, + name: s, + attributes: n, + namespace: r, + prefixes: i, + }); + c[gs] = this._globalData; + if (a) { + c[Yn](); + this._current[Bs](c) && c[Hs](this._ids); + c[qn](this._builder); + } else { + this._stack.push(this._current); + this._current = c; + } + } + onEndElement(e) { + const t = this._current; + if (t[ws]() && "string" == typeof t[$n]) { + const e = new XFAParser(); + e._globalData = this._globalData; + const a = e.parse(t[$n]); + t[$n] = null; + t[Bs](a); + } + t[Yn](); + this._current = this._stack.pop(); + this._current[Bs](t) && t[Hs](this._ids); + t[qn](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[gs].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[Vs](); + return new Promise((t, a) => { + const nextIteration = () => { + try { + const a = e.next(); + a.done ? t(a.value) : setTimeout(nextIteration, 0); + } catch (e) { + a(e); + } + }; + setTimeout(nextIteration, 0); + }); + } + async _createPages() { + try { + this.pages = await this._createPagesHelper(); + this.dims = this.pages.children.map((e) => { + const { width: t, height: a } = e.attributes.style; + return [0, 0, parseInt(t), parseInt(a)]; + }); + } 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[gs].images = e; + } + setFonts(e) { + this.form[gs].fontFinder = new FontFinder(e); + const t = []; + for (let e of this.form[gs].usedTypefaces) { + e = stripQuotes(e); + this.form[gs].fontFinder.find(e) || t.push(e); + } + return t.length > 0 ? t : null; + } + appendFonts(e, t) { + this.form[gs].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[Ms])) { + const e = XhtmlNamespace.body({}); + e[jn](t); + t = e; + } + const a = t[Ks](); + if (!a.success) return null; + const { html: r } = a, + { attributes: i } = r; + if (i) { + i.class && (i.class = i.class.filter((e) => !e.startsWith("xfa"))); + i.dir = "auto"; + } + return { html: r, str: t[$s]() }; + } 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"), + e.ensureCatalog("globalColorSpaceCache"), + ]).then( + ([t, a, r, i, n, s]) => ({ + pdfManager: e, + acroForm: t instanceof Dict ? t : Dict.empty, + xfaDatasets: a, + structTreeRoot: r, + baseUrl: i, + attachments: n, + globalColorSpaceCache: s, + }), + (e) => { + warn(`createGlobals: "${e}".`); + return null; + }, + ); + } + static async create(e, t, a, r, i, n, s, o) { + const c = i ? await this._getPageIndex(e, t, a.pdfManager) : null; + return a.pdfManager.ensure(this, "_create", [e, t, a, r, i, n, s, c, o]); + } + static _create(e, t, a, r, i = !1, n = null, s = null, o = null, c = null) { + const l = e.fetchIfRef(t); + if (!(l instanceof Dict)) return; + let h = l.get("Subtype"); + h = h instanceof Name ? h.name : null; + if (s && !s.has(M[h.toUpperCase()])) return null; + const { acroForm: u, pdfManager: d } = a, + f = t instanceof Ref ? t.toString() : `annot_${r.createObjId()}`, + g = { + xref: e, + ref: t, + dict: l, + subtype: h, + id: f, + annotationGlobals: a, + collectFields: i, + orphanFields: n, + needAppearances: !i && !0 === u.get("NeedAppearances"), + pageIndex: o, + evaluatorOptions: d.evaluatorOptions, + pageRef: c, + }; + switch (h) { + case "Link": + return new LinkAnnotation(g); + case "Text": + return new TextAnnotation(g); + case "Widget": + let e = getInheritableProperty({ dict: l, key: "FT" }); + e = e instanceof Name ? e.name : null; + switch (e) { + case "Tx": + return new TextWidgetAnnotation(g); + case "Btn": + return new ButtonWidgetAnnotation(g); + case "Ch": + return new ChoiceWidgetAnnotation(g); + case "Sig": + return new SignatureWidgetAnnotation(g); + } + warn( + `Unimplemented widget field type "${e}", falling back to base field type.`, + ); + return new WidgetAnnotation(g); + case "Popup": + return new PopupAnnotation(g); + case "FreeText": + return new FreeTextAnnotation(g); + case "Line": + return new LineAnnotation(g); + case "Square": + return new SquareAnnotation(g); + case "Circle": + return new CircleAnnotation(g); + case "PolyLine": + return new PolylineAnnotation(g); + case "Polygon": + return new PolygonAnnotation(g); + case "Caret": + return new CaretAnnotation(g); + case "Ink": + return new InkAnnotation(g); + case "Highlight": + return new HighlightAnnotation(g); + case "Underline": + return new UnderlineAnnotation(g); + case "Squiggly": + return new SquigglyAnnotation(g); + case "StrikeOut": + return new StrikeOutAnnotation(g); + case "Stamp": + return new StampAnnotation(g); + case "FileAttachment": + return new FileAttachmentAnnotation(g); + default: + i || + warn( + h + ? `Unimplemented annotation type "${h}", falling back to base annotation.` + : "Annotation is missing the required /Subtype.", + ); + return new Annotation(g); + } + } + static async _getPageIndex(e, t, a) { + try { + const r = await e.fetchIfRefAsync(t); + if (!(r instanceof Dict)) return -1; + const i = r.getRaw("P"); + if (i instanceof Ref) + try { + return await a.ensureCatalog("getPageIndex", [i]); + } catch (e) { + info(`_getPageIndex -- not a valid page reference: "${e}".`); + } + if (r.has("Kids")) return -1; + const n = await a.ensureDoc("numPages"); + for (let e = 0; e < n; e++) { + const r = await a.getPage(e), + i = await a.ensure(r, "annotations"); + for (const a of i) if (a instanceof Ref && isRefsEqual(a, t)) return e; + } + } catch (e) { + warn(`_getPageIndex: "${e}".`); + } + return -1; + } + static generateImages(e, t, a) { + if (!a) { + warn( + "generateImages: OffscreenCanvas is not supported, cannot save or print some annotations with images.", + ); + return null; + } + let r; + for (const { bitmapId: a, bitmap: i } of e) + if (i) { + r ||= new Map(); + r.set(a, StampAnnotation.createImage(i, t)); + } + return r; + } + static async saveNewAnnotations(e, t, a, r, i) { + const n = e.xref; + let s; + const o = [], + { isOffscreenCanvasSupported: c } = e.options; + for (const l of a) + if (!l.deleted) + switch (l.annotationType) { + case g: + if (!s) { + const e = new Dict(n); + e.setIfName("BaseFont", "Helvetica"); + e.setIfName("Type", "Font"); + e.setIfName("Subtype", "Type1"); + e.setIfName("Encoding", "WinAnsiEncoding"); + s = n.getNewTemporaryRef(); + i.put(s, { data: e }); + } + o.push( + FreeTextAnnotation.createNewAnnotation(n, l, i, { + evaluator: e, + task: t, + baseFontRef: s, + }), + ); + break; + case p: + l.quadPoints + ? o.push(HighlightAnnotation.createNewAnnotation(n, l, i)) + : o.push(InkAnnotation.createNewAnnotation(n, l, i)); + break; + case b: + o.push(InkAnnotation.createNewAnnotation(n, l, i)); + break; + case m: + const a = c ? await r?.get(l.bitmapId) : null; + if (a?.imageStream) { + const { imageStream: e, smaskStream: t } = a; + if (t) { + const a = n.getNewTemporaryRef(); + i.put(a, { data: t }); + e.dict.set("SMask", a); + } + const r = (a.imageRef = n.getNewTemporaryRef()); + i.put(r, { data: e }); + a.imageStream = a.smaskStream = null; + } + o.push(StampAnnotation.createNewAnnotation(n, l, i, { image: a })); + break; + case y: + o.push(StampAnnotation.createNewAnnotation(n, l, i, {})); + } + return { annotations: (await Promise.all(o)).flat() }; + } + static async printNewAnnotations(e, t, a, r, i) { + if (!r) return null; + const { options: n, xref: s } = t, + o = []; + for (const c of r) + if (!c.deleted) + switch (c.annotationType) { + case g: + o.push( + FreeTextAnnotation.createNewPrintAnnotation(e, s, c, { + evaluator: t, + task: a, + evaluatorOptions: n, + }), + ); + break; + case p: + c.quadPoints + ? o.push( + HighlightAnnotation.createNewPrintAnnotation(e, s, c, { + evaluatorOptions: n, + }), + ) + : o.push( + InkAnnotation.createNewPrintAnnotation(e, s, c, { + evaluatorOptions: n, + }), + ); + break; + case b: + o.push( + InkAnnotation.createNewPrintAnnotation(e, s, c, { + evaluatorOptions: n, + }), + ); + break; + case m: + const r = n.isOffscreenCanvasSupported + ? await i?.get(c.bitmapId) + : null; + if (r?.imageStream) { + const { imageStream: e, smaskStream: t } = r; + t && e.dict.set("SMask", t); + r.imageRef = new JpegStream(e, e.length); + r.imageStream = r.smaskStream = null; + } + o.push( + StampAnnotation.createNewPrintAnnotation(e, s, c, { + image: r, + evaluatorOptions: n, + }), + ); + break; + case y: + o.push( + StampAnnotation.createNewPrintAnnotation(e, s, c, { + evaluatorOptions: n, + }), + ); + } + return Promise.all(o); + } +} +function getRgbColor(e, t = new Uint8ClampedArray(3)) { + if (!Array.isArray(e)) return t; + const a = t || new Uint8ClampedArray(3); + switch (e.length) { + case 0: + return null; + case 1: + ColorSpaceUtils.gray.getRgbItem(e, 0, a, 0); + return a; + case 3: + ColorSpaceUtils.rgb.getRgbItem(e, 0, a, 0); + return a; + case 4: + ColorSpaceUtils.cmyk.getRgbItem(e, 0, a, 0); + return a; + default: + return t; + } +} +function getPdfColorArray(e, t = null) { + return (e && Array.from(e, (e) => e / 255)) || t; +} +function getQuadPoints(e, t) { + const a = e.getArray("QuadPoints"); + if (!isNumberArray(a, null) || 0 === a.length || a.length % 8 > 0) + return null; + const r = new Float32Array(a.length); + for (let e = 0, i = a.length; e < i; e += 8) { + const [i, n, s, o, c, l, h, u] = a.slice(e, e + 8), + d = Math.min(i, s, c, h), + f = Math.max(i, s, c, h), + g = Math.min(n, o, l, u), + p = Math.max(n, o, l, u); + if (null !== t && (d < t[0] || f > t[2] || g < t[1] || p > t[3])) + return null; + r.set([d, p, f, p, d, g, f, g], e); + } + return r; +} +function getTransformMatrix(e, t, a) { + const r = new Float32Array([1 / 0, 1 / 0, -1 / 0, -1 / 0]); + Util.axialAlignedBoundingBox(t, a, r); + const [i, n, s, o] = r; + if (i === s || n === o) return [1, 0, 0, 1, e[0], e[1]]; + const c = (e[2] - e[0]) / (s - i), + l = (e[3] - e[1]) / (o - n); + return [c, 0, 0, l, e[0] - i * c, e[1] - n * l]; +} +class Annotation { + constructor(e) { + const { + dict: t, + xref: a, + annotationGlobals: r, + ref: i, + orphanFields: n, + } = e, + s = n?.get(i); + s && t.set("Parent", s); + 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 o = t.get("MK"); + this.setBorderAndBackgroundColors(o); + this.setRotation(o, t); + this.ref = e.ref instanceof Ref ? e.ref : null; + this._streams = []; + this.appearance && this._streams.push(this.appearance); + const c = !!(this.flags & j), + l = !!(this.flags & X); + 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: c && l, + isEditable: !1, + structParent: -1, + }; + if (r.structTreeRoot) { + let a = t.get("StructParent"); + this.data.structParent = a = Number.isInteger(a) && a >= 0 ? a : -1; + r.structTreeRoot.addAnnotationIdToPage(e.pageRef, a); + } + if (e.collectFields) { + const r = t.get("Kids"); + if (Array.isArray(r)) { + const e = []; + for (const t of r) t instanceof Ref && e.push(t.toString()); + 0 !== e.length && (this.data.kidIds = e); + } + this.data.actions = collectActions(a, t, ie); + this.data.fieldName = this._constructFieldName(t); + this.data.pageIndex = e.pageIndex; + } + const h = t.get("IT"); + h instanceof Name && (this.data.it = h.name); + this._isOffscreenCanvasSupported = + e.evaluatorOptions.isOffscreenCanvasSupported; + this._fallbackFontDict = null; + this._needAppearances = !1; + } + _hasFlag(e, t) { + return !!(e & t); + } + _buildFlags(e, t) { + let { flags: a } = this; + if (void 0 === e) { + if (void 0 === t) return; + return t ? a & ~L : (a & ~E) | L; + } + if (e) { + a |= L; + return t ? (a & ~U) | E : (a & ~E) | U; + } + a &= ~(E | U); + return t ? a & ~L : a | L; + } + _isViewable(e) { + return !this._hasFlag(e, N) && !this._hasFlag(e, U); + } + _isPrintable(e) { + return this._hasFlag(e, L) && !this._hasFlag(e, E) && !this._hasFlag(e, N); + } + mustBeViewed(e, t) { + const a = e?.get(this.data.id)?.noView; + return void 0 !== a ? !a : this.viewable && !this._hasFlag(this.flags, E); + } + 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: a } = e, + r = + getInheritableProperty({ dict: t, key: "DA" }) || a.acroForm.get("DA"); + this._defaultAppearance = "string" == typeof r ? r : ""; + 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 & N && + "Annotation" !== this.constructor.name && + (this.flags ^= N); + } + 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 a = e[t]; + if (a instanceof Name) + switch (a.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] = a.name; + continue; + } + warn(`Ignoring invalid lineEnding: ${a}`); + } + } + setRotation(e, t) { + this.rotation = 0; + let a = e instanceof Dict ? e.get("R") || 0 : t.get("Rotate") || 0; + if (Number.isInteger(a) && 0 !== a) { + a %= 360; + a < 0 && (a += 360); + a % 90 == 0 && (this.rotation = a); + } + } + 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 a = t.get("N"); + if (a instanceof BaseStream) { + this.appearance = a; + return; + } + if (!(a instanceof Dict)) return; + const r = e.get("AS"); + if (!(r instanceof Name && a.has(r.name))) return; + const i = a.get(r.name); + i instanceof BaseStream && (this.appearance = i); + } + 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); + } + async loadResources(e, t) { + const a = await t.dict.getAsync("Resources"); + a && (await ObjectLoader.load(a, e, a.xref)); + return a; + } + async getOperatorList(e, t, a, r) { + const { hasOwnCanvas: i, id: n, rect: o } = this.data; + let c = this.appearance; + const l = !!(i && a & s); + if (l && (0 === this.width || 0 === this.height)) { + this.data.hasOwnCanvas = !1; + return { + opList: new OperatorList(), + separateForm: !1, + separateCanvas: !1, + }; + } + if (!c) { + if (!l) + return { + opList: new OperatorList(), + separateForm: !1, + separateCanvas: !1, + }; + c = new StringStream(""); + c.dict = new Dict(); + } + const h = c.dict, + u = await this.loadResources(ga, c), + d = lookupRect(h.getArray("BBox"), [0, 0, 1, 1]), + f = lookupMatrix(h.getArray("Matrix"), fa), + g = getTransformMatrix(o, d, f), + p = new OperatorList(); + let m; + this.oc && (m = await e.parseMarkedContentProps(this.oc, null)); + void 0 !== m && p.addOp(Ct, ["OC", m]); + p.addOp(Bt, [n, o, g, f, l]); + await e.getOperatorList({ + stream: c, + task: t, + resources: u, + operatorList: p, + fallbackFontDict: this._fallbackFontDict, + }); + p.addOp(Rt, []); + void 0 !== m && p.addOp(vt, []); + this.reset(); + return { opList: p, separateForm: !1, separateCanvas: l }; + } + async save(e, t, a, r) { + return null; + } + get overlaysTextContent() { + return !1; + } + get hasTextContent() { + return !1; + } + async extractTextContent(e, t, a) { + if (!this.appearance) return; + const r = await this.loadResources(pa, this.appearance), + i = [], + n = []; + let s = null; + const o = { + desiredSize: Math.Infinity, + ready: !0, + enqueue(e, t) { + for (const t of e.items) + if (void 0 !== t.str) { + s ||= t.transform.slice(-2); + n.push(t.str); + if (t.hasEOL) { + i.push(n.join("").trimEnd()); + n.length = 0; + } + } + }, + }; + await e.getTextContent({ + stream: this.appearance, + task: t, + resources: r, + includeMarkedContent: !0, + keepWhiteSpace: !0, + sink: o, + viewBox: a, + }); + this.reset(); + n.length && i.push(n.join("").trimEnd()); + if (i.length > 1 || i[0]) { + const e = this.appearance.dict, + t = lookupRect(e.getArray("BBox"), null), + a = lookupMatrix(e.getArray("Matrix"), null); + this.data.textPosition = this._transformPoint(s, t, a); + this.data.textContent = i; + } + } + _transformPoint(e, t, a) { + const { rect: r } = this.data; + t ||= [0, 0, 1, 1]; + a ||= [1, 0, 0, 1, 0, 0]; + const i = getTransformMatrix(r, t, a); + i[4] -= r[0]; + i[5] -= r[1]; + const n = e.slice(); + Util.applyTransform(n, i); + Util.applyTransform(n, a); + return n; + } + 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 a = e; + const r = new RefSet(); + e.objId && r.put(e.objId); + for (; a.has("Parent"); ) { + a = a.get("Parent"); + if (!(a instanceof Dict) || (a.objId && r.has(a.objId))) break; + a.objId && r.put(a.objId); + a.has("T") && t.unshift(stringToPDFString(a.get("T"))); + } + return t.join("."); + } + get width() { + return this.data.rect[2] - this.data.rect[0]; + } + get height() { + return this.data.rect[3] - this.data.rect[1]; + } +} +class AnnotationBorderStyle { + constructor() { + this.width = 1; + this.rawWidth = 1; + this.style = Q; + 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 a = (t[2] - t[0]) / 2, + r = (t[3] - t[1]) / 2; + if (a > 0 && r > 0 && (e > a || e > r)) { + warn(`AnnotationBorderStyle.setWidth - ignoring width: ${e}`); + e = 1; + } + } + this.width = e; + } + } + setStyle(e) { + if (e instanceof Name) + switch (e.name) { + case "S": + this.style = Q; + break; + case "D": + this.style = ee; + break; + case "B": + this.style = te; + break; + case "I": + this.style = ae; + break; + case "U": + this.style = re; + } + } + setDashArray(e, t = !1) { + if (Array.isArray(e)) { + let a = !0, + r = !0; + for (const t of e) { + if (!(+t >= 0)) { + a = !1; + break; + } + t > 0 && (r = !1); + } + if (0 === e.length || (a && !r)) { + 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 a = t.get("RT"); + this.data.replyType = a instanceof Name ? a.name : R; + } + let a = null; + if (this.data.replyType === D) { + 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; + a = 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; + a = t.getRaw("Popup"); + t.has("C") || (this.data.color = null); + } + this.data.popupRef = a instanceof Ref ? a.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: a, + fillColor: r, + blendMode: i, + strokeAlpha: n, + fillAlpha: s, + pointsCallback: o, + }) { + const c = (this.data.rect = [1 / 0, 1 / 0, -1 / 0, -1 / 0]), + l = ["q"]; + t && l.push(t); + a && l.push(`${a[0]} ${a[1]} ${a[2]} RG`); + r && l.push(`${r[0]} ${r[1]} ${r[2]} rg`); + const h = + 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 = h.length; e < t; e += 8) { + const t = o(l, h.subarray(e, e + 8)); + Util.rectBoundingBox(...t, c); + } + l.push("Q"); + const u = new Dict(e), + d = new Dict(e); + d.setIfName("Subtype", "Form"); + const f = new StringStream(l.join(" ")); + f.dict = d; + u.set("Fm0", f); + const g = new Dict(e); + i && g.setIfName("BM", i); + g.setIfNumber("CA", n); + g.setIfNumber("ca", s); + const p = new Dict(e); + p.set("GS0", g); + const m = new Dict(e); + m.set("ExtGState", p); + m.set("XObject", u); + const b = new Dict(e); + b.set("Resources", m); + b.set("BBox", c); + this.appearance = new StringStream("/GS0 gs /Fm0 Do"); + this.appearance.dict = b; + this._streams.push(this.appearance, f); + } + static async createNewAnnotation(e, t, a, r) { + const i = (t.ref ||= e.getNewTemporaryRef()), + n = await this.createNewAppearanceStream(t, e, r); + let s; + if (n) { + const r = e.getNewTemporaryRef(); + s = this.createNewDict(t, e, { apRef: r }); + a.put(r, { data: n }); + } else s = this.createNewDict(t, e, {}); + Number.isInteger(t.parentTreeId) && s.set("StructParent", t.parentTreeId); + a.put(i, { data: s }); + const o = { ref: i }, + { popup: c } = t; + if (c) { + if (c.deleted) { + s.delete("Popup"); + s.delete("Contents"); + s.delete("RC"); + return o; + } + const t = (c.ref ||= e.getNewTemporaryRef()); + c.parent = i; + const r = PopupAnnotation.createNewDict(c, e); + a.put(t, { data: r }); + s.setIfDefined("Contents", stringToAsciiOrUTF16BE(c.contents)); + s.set("Popup", t); + return [o, { ref: t }]; + } + return o; + } + static async createNewPrintAnnotation(e, t, a, r) { + const i = await this.createNewAppearanceStream(a, t, r), + n = this.createNewDict(a, t, i ? { ap: i } : {}), + s = new this.prototype.constructor({ + dict: n, + xref: t, + annotationGlobals: e, + evaluatorOptions: r.evaluatorOptions, + }); + a.ref && (s.ref = s.refToReplace = a.ref); + return s; + } +} +class WidgetAnnotation extends Annotation { + constructor(e) { + super(e); + const { dict: t, xref: a, annotationGlobals: r } = e, + i = this.data; + this._needAppearances = e.needAppearances; + i.annotationType = M.WIDGET; + void 0 === i.fieldName && (i.fieldName = this._constructFieldName(t)); + void 0 === i.actions && (i.actions = collectActions(a, t, ie)); + let n = getInheritableProperty({ dict: t, key: "V", getArray: !0 }); + i.fieldValue = this._decodeFormValue(n); + const s = getInheritableProperty({ dict: t, key: "DV", getArray: !0 }); + i.defaultFieldValue = this._decodeFormValue(s); + if (void 0 === n && r.xfaDatasets) { + const e = this._title.str; + if (e) { + this._hasValueFromXFA = !0; + i.fieldValue = n = r.xfaDatasets.getValue(e); + } + } + void 0 === n && + null !== i.defaultFieldValue && + (i.fieldValue = i.defaultFieldValue); + i.alternativeText = stringToPDFString(t.get("TU") || ""); + this.setDefaultAppearance(e); + i.hasAppearance ||= + this._needAppearances && void 0 !== i.fieldValue && null !== i.fieldValue; + const o = getInheritableProperty({ dict: t, key: "FT" }); + i.fieldType = o instanceof Name ? o.name : null; + const c = getInheritableProperty({ dict: t, key: "DR" }), + l = r.acroForm.get("DR"), + h = this.appearance?.dict.get("Resources"); + this._fieldResources = { + localResources: c, + acroFormResources: l, + appearanceResources: h, + mergedResources: Dict.merge({ + xref: a, + dictArray: [c, h, l], + mergeSubDicts: !0, + }), + }; + i.fieldFlags = getInheritableProperty({ dict: t, key: "Ff" }); + (!Number.isInteger(i.fieldFlags) || i.fieldFlags < 0) && (i.fieldFlags = 0); + i.password = this.hasFieldFlag(G); + i.readOnly = this.hasFieldFlag(q); + i.required = this.hasFieldFlag(H); + i.hidden = + this._hasFlag(i.annotationFlags, E) || + this._hasFlag(i.annotationFlags, U); + } + _decodeFormValue(e) { + return Array.isArray(e) + ? e.filter((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, U); + } + getRotationMatrix(e) { + let t = e?.get(this.data.id)?.rotation; + void 0 === t && (t = this.rotation); + return 0 === t ? fa : getRotationMatrix(t, this.width, this.height); + } + getBorderAndBackgroundAppearances(e) { + let t = e?.get(this.data.id)?.rotation; + void 0 === t && (t = this.rotation); + if (!this.backgroundColor && !this.borderColor) return ""; + const a = + 0 === t || 180 === t + ? `0 0 ${this.width} ${this.height} re` + : `0 0 ${this.height} ${this.width} re`; + let r = ""; + this.backgroundColor && + (r = `${getPdfColor(this.backgroundColor, !0)} ${a} f `); + if (this.borderColor) { + r += `${this.borderStyle.width || 1} w ${getPdfColor(this.borderColor, !1)} ${a} S `; + } + return r; + } + async getOperatorList(e, t, a, r) { + if ( + a & l && + !(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, a, r); + const i = await this._getAppearance(e, t, a, r); + if (this.appearance && null === i) return super.getOperatorList(e, t, a, r); + const n = new OperatorList(); + if (!this._defaultAppearance || null === i) + return { opList: n, separateForm: !1, separateCanvas: !1 }; + const o = !!(this.data.hasOwnCanvas && a & s), + c = [0, 0, this.width, this.height], + h = getTransformMatrix(this.data.rect, c, [1, 0, 0, 1, 0, 0]); + let u; + this.oc && (u = await e.parseMarkedContentProps(this.oc, null)); + void 0 !== u && n.addOp(Ct, ["OC", u]); + n.addOp(Bt, [ + this.data.id, + this.data.rect, + h, + this.getRotationMatrix(r), + o, + ]); + const d = new StringStream(i); + await e.getOperatorList({ + stream: d, + task: t, + resources: this._fieldResources.mergedResources, + operatorList: n, + }); + n.addOp(Rt, []); + void 0 !== u && n.addOp(vt, []); + return { opList: n, separateForm: !1, separateCanvas: o }; + } + _getMKDict(e) { + const t = new Dict(null); + e && t.set("R", e); + t.setIfArray("BC", getPdfColorArray(this.borderColor)); + t.setIfArray("BG", getPdfColorArray(this.backgroundColor)); + return t.size > 0 ? t : null; + } + amendSavedDict(e, t) {} + setValue(e, t, a, r) { + const { dict: i, ref: n } = (function getParentToUpdate(e, t, a) { + const r = new RefSet(), + i = e, + n = { dict: null, ref: null }; + for (; e instanceof Dict && !r.has(t); ) { + r.put(t); + if (e.has("T")) break; + if (!((t = e.getRaw("Parent")) instanceof Ref)) return n; + e = a.fetch(t); + } + if (e instanceof Dict && e !== i) { + n.dict = e; + n.ref = t; + } + return n; + })(e, this.ref, a); + if (i) { + if (!r.has(n)) { + const e = i.clone(); + e.set("V", t); + r.put(n, { data: e }); + return e; + } + } else e.set("V", t); + return null; + } + async save(e, t, a, r) { + const i = a?.get(this.data.id), + n = this._buildFlags(i?.noView, i?.noPrint); + let s = i?.value, + o = i?.rotation; + if (s === this.data.fieldValue || void 0 === s) { + if (!this._hasValueFromXFA && void 0 === o && void 0 === n) return; + s ||= this.data.fieldValue; + } + if ( + void 0 === o && + !this._hasValueFromXFA && + Array.isArray(s) && + Array.isArray(this.data.fieldValue) && + isArrayEqual(s, this.data.fieldValue) && + void 0 === n + ) + return; + void 0 === o && (o = this.rotation); + let l = null; + if (!this._needAppearances) { + l = await this._getAppearance(e, t, c, a); + if (null === l && void 0 === n) return; + } + let h = !1; + if (l?.needAppearances) { + h = !0; + l = null; + } + const { xref: u } = e, + d = u.fetchIfRef(this.ref); + if (!(d instanceof Dict)) return; + const f = new Dict(u); + for (const e of d.getKeys()) "AP" !== e && f.set(e, d.getRaw(e)); + if (void 0 !== n) { + f.set("F", n); + if (null === l && !h) { + const e = d.getRaw("AP"); + e && f.set("AP", e); + } + } + const g = { path: this.data.fieldName, value: s }, + p = this.setValue( + f, + Array.isArray(s) + ? s.map(stringToAsciiOrUTF16BE) + : stringToAsciiOrUTF16BE(s), + u, + r, + ); + this.amendSavedDict(a, p || f); + const m = this._getMKDict(o); + m && f.set("MK", m); + r.put(this.ref, { data: f, xfa: g, needAppearances: h }); + if (null !== l) { + const e = u.getNewTemporaryRef(), + t = new Dict(u); + f.set("AP", t); + t.set("N", e); + const i = this._getSaveFieldResources(u), + n = new StringStream(l), + s = (n.dict = new Dict(u)); + s.setIfName("Subtype", "Form"); + s.set("Resources", i); + const c = + o % 180 == 0 + ? [0, 0, this.width, this.height] + : [0, 0, this.height, this.width]; + s.set("BBox", c); + const h = this.getRotationMatrix(a); + h !== fa && s.set("Matrix", h); + r.put(e, { data: n, xfa: null, needAppearances: !1 }); + } + f.set("M", `D:${getModificationDate()}`); + } + async _getAppearance(e, t, a, r) { + if (this.data.password) return null; + const n = r?.get(this.data.id); + let s, o; + if (n) { + s = n.formattedValue || n.value; + o = n.rotation; + } + if ( + void 0 === o && + void 0 === s && + !this._needAppearances && + (!this._hasValueFromXFA || this.appearance) + ) + return null; + const l = this.getBorderAndBackgroundAppearances(r); + if (void 0 === s) { + s = this.data.fieldValue; + if (!s) return `/Tx BMC q ${l}Q EMC`; + } + Array.isArray(s) && 1 === s.length && (s = s[0]); + assert("string" == typeof s, "Expected `value` to be a string."); + s = s.trimEnd(); + if (this.data.combo) { + const e = this.data.options.find(({ exportValue: e }) => s === e); + s = e?.displayValue || s; + } + if ("" === s) return `/Tx BMC q ${l}Q EMC`; + void 0 === o && (o = this.rotation); + let h, + u = -1; + if (this.data.multiLine) { + h = s.split(/\r\n?|\n/).map((e) => e.normalize("NFC")); + u = h.length; + } else h = [s.replace(/\r\n?|\n/, "").normalize("NFC")]; + let { width: d, height: f } = this; + (90 !== o && 270 !== o) || ([d, f] = [f, d]); + this._defaultAppearance || + (this.data.defaultAppearanceData = parseDefaultAppearance( + (this._defaultAppearance = "/Helvetica 0 Tf 0 g"), + )); + let g, + p, + m, + b = await WidgetAnnotation._getFontData( + e, + t, + this.data.defaultAppearanceData, + this._fieldResources.mergedResources, + ); + const y = []; + let w = !1; + for (const e of h) { + const t = b.encodeString(e); + t.length > 1 && (w = !0); + y.push(t.join("")); + } + if (w && a & c) return { needAppearances: !0 }; + if (w && this._isOffscreenCanvasSupported) { + const a = this.data.comb ? "monospace" : "sans-serif", + r = new FakeUnicodeFont(e.xref, a), + i = r.createFontResources(h.join("")), + n = i.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 o = r.fontName.name; + b = await WidgetAnnotation._getFontData( + e, + t, + { fontName: o, fontSize: 0 }, + i, + ); + for (let e = 0, t = y.length; e < t; e++) + y[e] = stringToUTF16String(h[e]); + const c = Object.assign( + Object.create(null), + this.data.defaultAppearanceData, + ); + this.data.defaultAppearanceData.fontSize = 0; + this.data.defaultAppearanceData.fontName = o; + [g, p, m] = this._computeFontSize(f - 2, d - 4, s, b, u); + this.data.defaultAppearanceData = c; + } else { + this._isOffscreenCanvasSupported || + warn( + "_getAppearance: OffscreenCanvas is not supported, annotation may not render correctly.", + ); + [g, p, m] = this._computeFontSize(f - 2, d - 4, s, b, u); + } + let x = b.descent; + x = isNaN(x) ? i * m : Math.max(i * m, Math.abs(x) * p); + const S = Math.min(Math.floor((f - p) / 2), 1), + k = this.data.textAlignment; + if (this.data.multiLine) + return this._getMultilineAppearance(g, y, b, p, d, f, k, 2, S, x, m, r); + if (this.data.comb) + return this._getCombAppearance(g, b, y[0], p, d, f, 2, S, x, m, r); + const C = S + x; + if (0 === k || k > 2) + return ( + `/Tx BMC q ${l}BT ` + + g + + ` 1 0 0 1 ${numberToString(2)} ${numberToString(C)} Tm (${escapeString(y[0])}) Tj ET Q EMC` + ); + return ( + `/Tx BMC q ${l}BT ` + + g + + ` 1 0 0 1 0 0 Tm ${this._renderText(y[0], b, p, d, k, { shift: 0 }, 2, C)} ET Q EMC` + ); + } + static async _getFontData(e, t, a, r) { + const i = new OperatorList(), + n = { + font: null, + clone() { + return this; + }, + }, + { fontName: s, fontSize: o } = a; + await e.handleSetFont(r, [s && Name.get(s), o], null, i, t, n, null); + return n.font; + } + _getTextWidth(e, t) { + return Math.sumPrecise(t.charsToGlyphs(e).map((e) => e.width)) / 1e3; + } + _computeFontSize(e, t, r, i, n) { + let { fontSize: s } = this.data.defaultAppearanceData, + o = (s || 12) * a, + c = Math.round(e / o); + if (!s) { + const roundWithTwoDigits = (e) => Math.floor(100 * e) / 100; + if (-1 === n) { + const n = this._getTextWidth(r, i); + s = roundWithTwoDigits(Math.min(e / a, t / n)); + c = 1; + } else { + const l = r.split(/\r\n?|\n/), + h = []; + for (const e of l) { + const t = i.encodeString(e).join(""), + a = i.charsToGlyphs(t), + r = i.getCharPositions(t); + h.push({ line: t, glyphs: a, positions: r }); + } + const isTooBig = (a) => { + let r = 0; + for (const n of h) { + r += this._splitLine(null, i, a, t, n).length * a; + if (r > e) return !0; + } + return !1; + }; + c = Math.max(c, n); + for (;;) { + o = e / c; + s = roundWithTwoDigits(o / a); + if (!isTooBig(s)) break; + c++; + } + } + const { fontName: l, fontColor: h } = this.data.defaultAppearanceData; + this._defaultAppearance = (function createDefaultAppearance({ + fontSize: e, + fontName: t, + fontColor: a, + }) { + return `/${escapePDFName(t)} ${e} Tf ${getPdfColor(a, !0)}`; + })({ fontSize: s, fontName: l, fontColor: h }); + } + return [this._defaultAppearance, s, e / c]; + } + _renderText(e, t, a, r, i, n, s, o) { + let c; + if (1 === i) { + c = (r - this._getTextWidth(e, t) * a) / 2; + } else if (2 === i) { + c = r - this._getTextWidth(e, t) * a - s; + } else c = s; + const l = numberToString(c - n.shift); + n.shift = c; + return `${l} ${(o = numberToString(o))} Td (${escapeString(e)}) Tj`; + } + _getSaveFieldResources(e) { + const { + localResources: t, + appearanceResources: a, + acroFormResources: r, + } = this._fieldResources, + i = this.data.defaultAppearanceData?.fontName; + if (!i) return t || Dict.empty; + for (const e of [t, a]) + if (e instanceof Dict) { + const t = e.get("Font"); + if (t instanceof Dict && t.has(i)) return e; + } + if (r instanceof Dict) { + const a = r.get("Font"); + if (a instanceof Dict && a.has(i)) { + const r = new Dict(e); + r.set(i, a.getRaw(i)); + const n = new Dict(e); + n.set("Font", r); + return Dict.merge({ xref: e, dictArray: [n, 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 |= E; + 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 a = getInheritableProperty({ dict: t, key: "Q" }); + (!Number.isInteger(a) || a < 0 || a > 2) && (a = null); + this.data.textAlignment = a; + let r = getInheritableProperty({ dict: t, key: "MaxLen" }); + (!Number.isInteger(r) || r < 0) && (r = 0); + this.data.maxLen = r; + this.data.multiLine = this.hasFieldFlag(W); + this.data.comb = + this.hasFieldFlag(Z) && + !this.data.multiLine && + !this.data.password && + !this.hasFieldFlag(K) && + 0 !== this.data.maxLen; + this.data.doNotScroll = this.hasFieldFlag(Y); + const { + data: { actions: i }, + } = this; + if (!i) return; + const n = + /^AF(Date|Time)_(?:Keystroke|Format)(?:Ex)?\(['"]?([^'"]+)['"]?\);$/; + let s = !1; + ((1 === i.Format?.length && + 1 === i.Keystroke?.length && + n.test(i.Format[0]) && + n.test(i.Keystroke[0])) || + (0 === i.Format?.length && + 1 === i.Keystroke?.length && + n.test(i.Keystroke[0])) || + (0 === i.Keystroke?.length && + 1 === i.Format?.length && + n.test(i.Format[0]))) && + (s = !0); + const o = []; + i.Format && o.push(...i.Format); + i.Keystroke && o.push(...i.Keystroke); + if (s) { + delete i.Keystroke; + i.Format = o; + } + for (const e of o) { + const t = e.match(n); + if (!t) continue; + const a = "Date" === t[1]; + let r = t[2]; + const i = parseInt(r, 10); + isNaN(i) || + Math.floor(Math.log10(i)) + 1 !== t[2].length || + (r = (a ? kn : Cn)[i] ?? r); + this.data.datetimeFormat = r; + if (!s) break; + if (a) { + if (/HH|MM|ss|h/.test(r)) { + this.data.datetimeType = "datetime-local"; + this.data.timeStep = /ss/.test(r) ? 1 : 60; + } else this.data.datetimeType = "date"; + break; + } + this.data.datetimeType = "time"; + this.data.timeStep = /ss/.test(r) ? 1 : 60; + break; + } + } + get hasTextContent() { + return !!this.appearance && !this._needAppearances; + } + _getCombAppearance(e, t, a, r, i, n, s, o, c, l, h) { + const u = i / this.data.maxLen, + d = this.getBorderAndBackgroundAppearances(h), + f = [], + g = t.getCharPositions(a); + for (const [e, t] of g) f.push(`(${escapeString(a.substring(e, t))}) Tj`); + const p = f.join(` ${numberToString(u)} 0 Td `); + return ( + `/Tx BMC q ${d}BT ` + + e + + ` 1 0 0 1 ${numberToString(s)} ${numberToString(o + c)} Tm ${p} ET Q EMC` + ); + } + _getMultilineAppearance(e, t, a, r, i, n, s, o, c, l, h, u) { + const d = [], + f = i - 2 * o, + g = { shift: 0 }; + for (let e = 0, n = t.length; e < n; e++) { + const n = t[e], + u = this._splitLine(n, a, r, f); + for (let t = 0, n = u.length; t < n; t++) { + const n = u[t], + f = 0 === e && 0 === t ? -c - (h - l) : -h; + d.push(this._renderText(n, a, r, i, s, g, o, f)); + } + } + const p = this.getBorderAndBackgroundAppearances(u), + m = d.join("\n"); + return ( + `/Tx BMC q ${p}BT ` + + e + + ` 1 0 0 1 0 ${numberToString(n)} Tm ${m} ET Q EMC` + ); + } + _splitLine(e, t, a, r, i = {}) { + e = i.line || e; + const n = i.glyphs || t.charsToGlyphs(e); + if (n.length <= 1) return [e]; + const s = i.positions || t.getCharPositions(e), + o = a / 1e3, + c = []; + let l = -1, + h = -1, + u = -1, + d = 0, + f = 0; + for (let t = 0, a = n.length; t < a; t++) { + const [a, i] = s[t], + g = n[t], + p = g.width * o; + if (" " === g.unicode) + if (f + p > r) { + c.push(e.substring(d, a)); + d = a; + f = p; + l = -1; + u = -1; + } else { + f += p; + l = a; + h = i; + u = t; + } + else if (f + p > r) + if (-1 !== l) { + c.push(e.substring(d, h)); + d = h; + t = u + 1; + l = -1; + f = 0; + } else { + c.push(e.substring(d, a)); + d = a; + f = p; + } + else f += p; + } + d < e.length && c.push(e.substring(d, e.length)); + return c; + } + async extractTextContent(e, t, a) { + await super.extractTextContent(e, t, a); + const r = this.data.textContent; + if (!r) return; + const i = r.join("\n"); + if (i === this.data.fieldValue) return; + const n = i.replaceAll(/([.*+?^${}()|[\]\\])|(\s+)/g, (e, t) => + t ? `\\${t}` : "\\s+", + ); + new RegExp(`^\\s*${n}\\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.data.password, + 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, + datetimeFormat: this.data.datetimeFormat, + hasDatetimeHTML: !!this.data.datetimeType, + type: "text", + }; + } +} +class ButtonWidgetAnnotation extends WidgetAnnotation { + constructor(e) { + super(e); + this.checkedAppearance = null; + this.uncheckedAppearance = null; + const t = this.hasFieldFlag(z), + a = this.hasFieldFlag($); + this.data.checkBox = !t && !a; + this.data.radioButton = t && !a; + this.data.pushButton = a; + 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, r) { + if (this.data.pushButton) return super.getOperatorList(e, t, a, !1, r); + let i = null, + n = null; + if (r) { + const e = r.get(this.data.id); + i = e ? e.value : null; + n = e ? e.rotation : null; + } + if (null === i && this.appearance) return super.getOperatorList(e, t, a, r); + null == i && + (i = this.data.checkBox + ? this.data.fieldValue === this.data.exportValue + : this.data.fieldValue === this.data.buttonValue); + const s = i ? this.checkedAppearance : this.uncheckedAppearance; + if (s) { + const i = this.appearance, + o = lookupMatrix(s.dict.getArray("Matrix"), fa); + n && s.dict.set("Matrix", this.getRotationMatrix(r)); + this.appearance = s; + const c = super.getOperatorList(e, t, a, r); + this.appearance = i; + s.dict.set("Matrix", o); + return c; + } + return { opList: new OperatorList(), separateForm: !1, separateCanvas: !1 }; + } + async save(e, t, a, r) { + this.data.checkBox + ? this._saveCheckbox(e, t, a, r) + : this.data.radioButton && this._saveRadioButton(e, t, a, r); + } + async _saveCheckbox(e, t, a, r) { + if (!a) return; + const i = a.get(this.data.id), + n = this._buildFlags(i?.noView, i?.noPrint); + let s = i?.rotation, + o = i?.value; + if (void 0 === s && void 0 === n) { + if (void 0 === o) return; + if ((this.data.fieldValue === this.data.exportValue) === o) return; + } + let c = e.xref.fetchIfRef(this.ref); + if (!(c instanceof Dict)) return; + c = c.clone(); + void 0 === s && (s = this.rotation); + void 0 === o && (o = this.data.fieldValue === this.data.exportValue); + const l = { + path: this.data.fieldName, + value: o ? this.data.exportValue : "", + }, + h = Name.get(o ? this.data.exportValue : "Off"); + this.setValue(c, h, e.xref, r); + c.set("AS", h); + c.set("M", `D:${getModificationDate()}`); + void 0 !== n && c.set("F", n); + const u = this._getMKDict(s); + u && c.set("MK", u); + r.put(this.ref, { data: c, xfa: l, needAppearances: !1 }); + } + async _saveRadioButton(e, t, a, r) { + if (!a) return; + const i = a.get(this.data.id), + n = this._buildFlags(i?.noView, i?.noPrint); + let s = i?.rotation, + o = i?.value; + if (void 0 === s && void 0 === n) { + if (void 0 === o) return; + if ((this.data.fieldValue === this.data.buttonValue) === o) return; + } + let c = e.xref.fetchIfRef(this.ref); + if (!(c instanceof Dict)) return; + c = c.clone(); + void 0 === o && (o = this.data.fieldValue === this.data.buttonValue); + void 0 === s && (s = this.rotation); + const l = { + path: this.data.fieldName, + value: o ? this.data.buttonValue : "", + }, + h = Name.get(o ? this.data.buttonValue : "Off"); + o && this.setValue(c, h, e.xref, r); + c.set("AS", h); + c.set("M", `D:${getModificationDate()}`); + void 0 !== n && c.set("F", n); + const u = this._getMKDict(s); + u && c.set("MK", u); + r.put(this.ref, { data: c, xfa: l, needAppearances: !1 }); + } + _getDefaultCheckedAppearance(e, t) { + const { width: a, height: r } = this, + i = [0, 0, a, r], + n = 0.8 * Math.min(a, r); + let s, o; + if ("check" === t) { + s = { width: 0.755 * n, height: 0.705 * n }; + o = "3"; + } else if ("disc" === t) { + s = { width: 0.791 * n, height: 0.705 * n }; + o = "l"; + } else unreachable(`_getDefaultCheckedAppearance - unsupported type: ${t}`); + const c = `q BT /PdfJsZaDb ${n} Tf 0 g ${numberToString((a - s.width) / 2)} ${numberToString((r - s.height) / 2)} Td (${o}) Tj ET Q`, + l = new Dict(e.xref); + l.set("FormType", 1); + l.setIfName("Subtype", "Form"); + l.setIfName("Type", "XObject"); + l.set("BBox", i); + l.set("Matrix", [1, 0, 0, 1, 0, 0]); + l.set("Length", c.length); + const h = new Dict(e.xref), + u = new Dict(e.xref); + u.set("PdfJsZaDb", this.fallbackFontDict); + h.set("Font", u); + l.set("Resources", h); + this.checkedAppearance = new StringStream(c); + this.checkedAppearance.dict = l; + this._streams.push(this.checkedAppearance); + } + _processCheckBox(e) { + const t = e.dict.get("AP"); + if (!(t instanceof Dict)) return; + const a = t.get("N"); + if (!(a instanceof Dict)) return; + const r = this._decodeFormValue(e.dict.get("AS")); + "string" == typeof r && (this.data.fieldValue = r); + const i = + null !== this.data.fieldValue && "Off" !== this.data.fieldValue + ? this.data.fieldValue + : "Yes", + n = this._decodeFormValue(a.getKeys()); + if (0 === n.length) n.push("Off", i); + else if (1 === n.length) "Off" === n[0] ? n.push(i) : n.unshift("Off"); + else if (n.includes(i)) { + n.length = 0; + n.push("Off", i); + } else { + const e = n.find((e) => "Off" !== e); + n.length = 0; + n.push("Off", e); + } + n.includes(this.data.fieldValue) || (this.data.fieldValue = "Off"); + this.data.exportValue = n[1]; + const s = a.get(this.data.exportValue); + this.checkedAppearance = s instanceof BaseStream ? s : null; + const o = a.get("Off"); + this.uncheckedAppearance = o instanceof BaseStream ? o : 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 a = t.get("V"); + a instanceof Name && (this.data.fieldValue = this._decodeFormValue(a)); + } + const a = e.dict.get("AP"); + if (!(a instanceof Dict)) return; + const r = a.get("N"); + if (!(r instanceof Dict)) return; + for (const e of r.getKeys()) + if ("Off" !== e) { + this.data.buttonValue = this._decodeFormValue(e); + break; + } + const i = r.get(this.data.buttonValue); + this.checkedAppearance = i instanceof BaseStream ? i : null; + const n = r.get("Off"); + this.uncheckedAppearance = n instanceof BaseStream ? n : 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: a } = 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: a.baseUrl, + docAttachments: a.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.setIfName("BaseFont", "ZapfDingbats"); + e.setIfName("Type", "FallbackType"); + e.setIfName("Subtype", "FallbackType"); + e.setIfName("Encoding", "ZapfDingbatsEncoding"); + return shadow(this, "fallbackFontDict", e); + } +} +class ChoiceWidgetAnnotation extends WidgetAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: a } = e; + this.indices = t.getArray("I"); + this.hasIndices = Array.isArray(this.indices) && this.indices.length > 0; + this.data.options = []; + const r = getInheritableProperty({ dict: t, key: "Opt" }); + if (Array.isArray(r)) + for (let e = 0, t = r.length; e < t; e++) { + const t = a.fetchIfRef(r[e]), + i = Array.isArray(t); + this.data.options[e] = { + exportValue: this._decodeFormValue(i ? a.fetchIfRef(t[0]) : t), + displayValue: this._decodeFormValue(i ? a.fetchIfRef(t[1]) : t), + }; + } + if (this.hasIndices) { + this.data.fieldValue = []; + const e = this.data.options.length; + for (const t of this.indices) + Number.isInteger(t) && + t >= 0 && + t < e && + this.data.fieldValue.push(this.data.options[t].exportValue); + } else + "string" == typeof this.data.fieldValue + ? (this.data.fieldValue = [this.data.fieldValue]) + : (this.data.fieldValue ||= []); + 0 === this.data.options.length && + this.data.fieldValue.length > 0 && + (this.data.options = this.data.fieldValue.map((e) => ({ + exportValue: e, + displayValue: e, + }))); + this.data.combo = this.hasFieldFlag(V); + this.data.multiSelect = this.hasFieldFlag(J); + 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 a = e?.get(this.data.id)?.value; + Array.isArray(a) || (a = [a]); + const r = [], + { options: i } = this.data; + for (let e = 0, t = 0, n = i.length; e < n; e++) + if (i[e].exportValue === a[t]) { + r.push(e); + t += 1; + } + t.set("I", r); + } + async _getAppearance(e, t, r, i) { + if (this.data.combo) return super._getAppearance(e, t, r, i); + let n, s; + const o = i?.get(this.data.id); + if (o) { + s = o.rotation; + n = o.value; + } + if (void 0 === s && void 0 === n && !this._needAppearances) return null; + void 0 === n ? (n = this.data.fieldValue) : Array.isArray(n) || (n = [n]); + let { width: c, height: l } = this; + (90 !== s && 270 !== s) || ([c, l] = [l, c]); + const h = this.data.options.length, + u = []; + for (let e = 0; e < h; e++) { + const { exportValue: t } = this.data.options[e]; + n.includes(t) && u.push(e); + } + this._defaultAppearance || + (this.data.defaultAppearanceData = parseDefaultAppearance( + (this._defaultAppearance = "/Helvetica 0 Tf 0 g"), + )); + const d = await WidgetAnnotation._getFontData( + e, + t, + this.data.defaultAppearanceData, + this._fieldResources.mergedResources, + ); + let f, + { fontSize: g } = this.data.defaultAppearanceData; + if (g) f = this._defaultAppearance; + else { + const e = (l - 1) / h; + let t, + a = -1; + for (const { displayValue: e } of this.data.options) { + const r = this._getTextWidth(e, d); + if (r > a) { + a = r; + t = e; + } + } + [f, g] = this._computeFontSize(e, c - 4, t, d, -1); + } + const p = g * a, + m = (p - g) / 2, + b = Math.floor(l / p); + let y = 0; + if (u.length > 0) { + const e = Math.min(...u), + t = Math.max(...u); + y = Math.max(0, t - b + 1); + y > e && (y = e); + } + const w = Math.min(y + b + 1, h), + x = ["/Tx BMC q", `1 1 ${c} ${l} re W n`]; + if (u.length) { + x.push("0.600006 0.756866 0.854904 rg"); + for (const e of u) + y <= e && e < w && x.push(`1 ${l - (e - y + 1) * p} ${c} ${p} re f`); + } + x.push("BT", f, `1 0 0 1 0 ${l} Tm`); + const S = { shift: 0 }; + for (let e = y; e < w; e++) { + const { displayValue: t } = this.data.options[e], + a = e === y ? m : 0; + x.push(this._renderText(t, d, g, c, 0, S, 2, -p + a)); + } + x.push("ET Q EMC"); + return x.join("\n"); + } +} +class SignatureWidgetAnnotation extends WidgetAnnotation { + constructor(e) { + super(e); + this.data.fieldValue = null; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = !this.data.hasOwnCanvas; + } + getFieldObject() { + return { + id: this.data.id, + value: null, + page: this.data.pageIndex, + type: "signature", + }; + } +} +class TextAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + this.data.noRotate = !0; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = !1; + const { dict: t } = e; + this.data.annotationType = M.TEXT; + if (this.data.hasAppearance) this.data.name = "NoIcon"; + else { + this.data.rect[1] = this.data.rect[3] - 22; + this.data.rect[2] = this.data.rect[0] + 22; + this.data.name = t.has("Name") ? t.get("Name").name : "Note"; + } + if (t.has("State")) { + this.data.state = t.get("State") || null; + this.data.stateModel = t.get("StateModel") || null; + } else { + this.data.state = null; + this.data.stateModel = null; + } + } +} +class LinkAnnotation extends Annotation { + constructor(e) { + super(e); + const { dict: t, annotationGlobals: a } = e; + this.data.annotationType = M.LINK; + this.data.noHTML = !1; + const r = getQuadPoints(t, this.rectangle); + r && (this.data.quadPoints = r); + this.data.borderColor ||= this.data.color; + Catalog.parseDestDictionary({ + destDict: t, + resultObj: this.data, + docBaseUrl: a.baseUrl, + docAttachments: a.attachments, + }); + } + get overlaysTextContent() { + return !0; + } +} +class PopupAnnotation extends Annotation { + constructor(e) { + super(e); + const { dict: t } = e; + this.data.annotationType = M.POPUP; + this.data.noHTML = !1; + (0 !== this.width && 0 !== this.height) || (this.data.rect = null); + let a = t.get("Parent"); + if (!a) { + warn("Popup annotation has a missing or invalid parent annotation."); + return; + } + this.data.parentRect = lookupNormalRect(a.getArray("Rect"), null); + this.data.creationDate = a.get("CreationDate") || ""; + isName(a.get("RT"), D) && (a = a.get("IRT")); + if (a.has("M")) { + this.setModificationDate(a.get("M")); + this.data.modificationDate = this.modificationDate; + } else this.data.modificationDate = null; + if (a.has("C")) { + this.setColor(a.getArray("C")); + this.data.color = this.color; + } else this.data.color = null; + if (!this.viewable) { + const e = a.get("F"); + this._isViewable(e) && this.setFlags(e); + } + this.setTitle(a.get("T")); + this.data.titleObj = this._title; + this.setContents(a.get("Contents")); + this.data.contentsObj = this._contents; + a.has("RC") && + (this.data.richText = XFAFactory.getRichTextAsHtml(a.get("RC"))); + this.data.open = !!t.get("Open"); + } + static createNewDict(e, t, a) { + const { oldAnnotation: r, rect: i, parent: n } = e, + s = r || new Dict(t); + s.setIfNotExists("Type", Name.get("Annot")); + s.setIfNotExists("Subtype", Name.get("Popup")); + s.setIfNotExists("Open", !1); + s.setIfArray("Rect", i); + s.set("Parent", n); + return s; + } + static async createNewAppearanceStream(e, t, a) { + return null; + } +} +class FreeTextAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + this.data.hasOwnCanvas = this.data.noRotate; + this.data.isEditable = !this.data.noHTML; + this.data.noHTML = !1; + const { annotationGlobals: t, evaluatorOptions: a, xref: r } = e; + this.data.annotationType = M.FREETEXT; + this.setDefaultAppearance(e); + this._hasAppearance = !!this.appearance; + if (this._hasAppearance) { + const { fontColor: e, fontSize: i } = (function parseAppearanceStream( + e, + t, + a, + r, + ) { + return new AppearanceStreamEvaluator(e, t, a, r).parse(); + })(this.appearance, a, r, t.globalColorSpaceCache); + this.data.defaultAppearanceData.fontColor = e; + this.data.defaultAppearanceData.fontSize = i || 10; + } else { + this.data.defaultAppearanceData.fontSize ||= 10; + const { fontColor: t, fontSize: a } = this.data.defaultAppearanceData; + if (this._contents.str) { + this.data.textContent = this._contents.str + .split(/\r\n?|\n/) + .map((e) => e.trimEnd()); + const { + coords: e, + bbox: t, + matrix: r, + } = FakeUnicodeFont.getFirstPositionInfo( + this.rectangle, + this.rotation, + a, + ); + this.data.textPosition = this._transformPoint(e, t, r); + } + if (this._isOffscreenCanvasSupported) { + const i = e.dict.get("CA"), + n = new FakeUnicodeFont(r, "sans-serif"); + this.appearance = n.createAppearance( + this._contents.str, + this.rectangle, + this.rotation, + a, + t, + i, + ); + 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: a, ap: r }) { + const { + color: i, + date: n, + fontSize: s, + oldAnnotation: o, + rect: c, + rotation: l, + user: h, + value: u, + } = e, + d = o || new Dict(t); + d.setIfNotExists("Type", Name.get("Annot")); + d.setIfNotExists("Subtype", Name.get("FreeText")); + d.set(o ? "M" : "CreationDate", `D:${getModificationDate(n)}`); + o && d.delete("RC"); + d.setIfArray("Rect", c); + const f = `/Helv ${s} Tf ${getPdfColor(i, !0)}`; + d.set("DA", f); + d.setIfDefined("Contents", stringToAsciiOrUTF16BE(u)); + d.setIfNotExists("F", 4); + d.setIfNotExists("Border", [0, 0, 0]); + d.setIfNumber("Rotate", l); + d.setIfDefined("T", stringToAsciiOrUTF16BE(h)); + if (a || r) { + const e = new Dict(t); + d.set("AP", e); + e.set("N", a || r); + } + return d; + } + static async createNewAppearanceStream(e, t, r) { + const { baseFontRef: i, evaluator: n, task: s } = r, + { color: o, fontSize: c, rect: l, rotation: h, value: u } = e; + if (!o) return null; + const d = new Dict(t), + f = new Dict(t); + if (i) f.set("Helv", i); + else { + const e = new Dict(t); + e.setIfName("BaseFont", "Helvetica"); + e.setIfName("Type", "Font"); + e.setIfName("Subtype", "Type1"); + e.setIfName("Encoding", "WinAnsiEncoding"); + f.set("Helv", e); + } + d.set("Font", f); + const g = await WidgetAnnotation._getFontData( + n, + s, + { fontName: "Helv", fontSize: c }, + d, + ), + [p, m, b, y] = l; + let w = b - p, + x = y - m; + h % 180 != 0 && ([w, x] = [x, w]); + const S = u.split("\n"), + k = c / 1e3; + let C = -1 / 0; + const v = []; + for (let e of S) { + const t = g.encodeString(e); + if (t.length > 1) return null; + e = t.join(""); + v.push(e); + let a = 0; + const r = g.charsToGlyphs(e); + for (const e of r) a += e.width * k; + C = Math.max(C, a); + } + let F = 1; + C > w && (F = w / C); + let T = 1; + const O = a * c, + M = 1 * c, + D = O * S.length; + D > x && (T = x / D); + const R = c * Math.min(F, T); + let N, E, L; + switch (h) { + case 0: + L = [1, 0, 0, 1]; + E = [l[0], l[1], w, x]; + N = [l[0], l[3] - M]; + break; + case 90: + L = [0, 1, -1, 0]; + E = [l[1], -l[2], w, x]; + N = [l[1], -l[0] - M]; + break; + case 180: + L = [-1, 0, 0, -1]; + E = [-l[2], -l[3], w, x]; + N = [-l[2], -l[1] - M]; + break; + case 270: + L = [0, -1, 1, 0]; + E = [-l[3], l[0], w, x]; + N = [-l[3], l[2] - M]; + } + const _ = [ + "q", + `${L.join(" ")} 0 0 cm`, + `${E.join(" ")} re W n`, + "BT", + `${getPdfColor(o, !0)}`, + `0 Tc /Helv ${numberToString(R)} Tf`, + ]; + _.push(`${N.join(" ")} Td (${escapeString(v[0])}) Tj`); + const U = numberToString(O); + for (let e = 1, t = v.length; e < t; e++) { + const t = v[e]; + _.push(`0 -${U} Td (${escapeString(t)}) Tj`); + } + _.push("ET", "Q"); + const j = _.join("\n"), + X = new Dict(t); + X.set("FormType", 1); + X.setIfName("Subtype", "Form"); + X.setIfName("Type", "XObject"); + X.set("BBox", l); + X.set("Resources", d); + X.set("Matrix", [1, 0, 0, 1, -l[0], -l[1]]); + const q = new StringStream(j); + q.dict = X; + return q; + } +} +class LineAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: a } = e; + this.data.annotationType = M.LINE; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = !1; + const r = lookupRect(t.getArray("L"), [0, 0, 0, 0]); + this.data.lineCoordinates = Util.normalizeRect(r); + this.setLineEndings(t.getArray("LE")); + this.data.lineEndings = this.lineEndings; + if (!this.appearance) { + const e = getPdfColorArray(this.color, [0, 0, 0]), + i = t.get("CA"), + n = getPdfColorArray(getRgbColor(t.getArray("IC"), null)), + s = n ? i : null, + o = this.borderStyle.width || 1, + c = 2 * o, + l = [ + this.data.lineCoordinates[0] - c, + this.data.lineCoordinates[1] - c, + this.data.lineCoordinates[2] + c, + this.data.lineCoordinates[3] + c, + ]; + Util.intersect(this.rectangle, l) || (this.rectangle = l); + this._setDefaultAppearance({ + xref: a, + extra: `${o} w`, + strokeColor: e, + fillColor: n, + strokeAlpha: i, + fillAlpha: s, + pointsCallback: (e, t) => { + e.push(`${r[0]} ${r[1]} m`, `${r[2]} ${r[3]} l`, "S"); + return [t[0] - o, t[7] - o, t[2] + o, t[3] + o]; + }, + }); + } + } +} +class SquareAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: a } = e; + this.data.annotationType = M.SQUARE; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = !1; + if (!this.appearance) { + const e = getPdfColorArray(this.color, [0, 0, 0]), + r = t.get("CA"), + i = getPdfColorArray(getRgbColor(t.getArray("IC"), null)), + n = i ? r : null; + if (0 === this.borderStyle.width && !i) return; + this._setDefaultAppearance({ + xref: a, + extra: `${this.borderStyle.width} w`, + strokeColor: e, + fillColor: i, + strokeAlpha: r, + fillAlpha: n, + pointsCallback: (e, t) => { + const a = t[4] + this.borderStyle.width / 2, + r = t[5] + this.borderStyle.width / 2, + n = t[6] - t[4] - this.borderStyle.width, + s = t[3] - t[7] - this.borderStyle.width; + e.push(`${a} ${r} ${n} ${s} re`); + i ? e.push("B") : e.push("S"); + return [t[0], t[7], t[2], t[3]]; + }, + }); + } + } +} +class CircleAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: a } = e; + this.data.annotationType = M.CIRCLE; + if (!this.appearance) { + const e = getPdfColorArray(this.color, [0, 0, 0]), + r = t.get("CA"), + i = getPdfColorArray(getRgbColor(t.getArray("IC"), null)), + n = i ? r : null; + if (0 === this.borderStyle.width && !i) return; + const s = (4 / 3) * Math.tan(Math.PI / 8); + this._setDefaultAppearance({ + xref: a, + extra: `${this.borderStyle.width} w`, + strokeColor: e, + fillColor: i, + strokeAlpha: r, + fillAlpha: n, + pointsCallback: (e, t) => { + const a = t[0] + this.borderStyle.width / 2, + r = t[1] - this.borderStyle.width / 2, + n = t[6] - this.borderStyle.width / 2, + o = t[7] + this.borderStyle.width / 2, + c = a + (n - a) / 2, + l = r + (o - r) / 2, + h = ((n - a) / 2) * s, + u = ((o - r) / 2) * s; + e.push( + `${c} ${o} m`, + `${c + h} ${o} ${n} ${l + u} ${n} ${l} c`, + `${n} ${l - u} ${c + h} ${r} ${c} ${r} c`, + `${c - h} ${r} ${a} ${l - u} ${a} ${l} c`, + `${a} ${l + u} ${c - h} ${o} ${c} ${o} c`, + "h", + ); + i ? e.push("B") : e.push("S"); + return [t[0], t[7], t[2], t[3]]; + }, + }); + } + } +} +class PolylineAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: a } = e; + this.data.annotationType = M.POLYLINE; + 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 r = t.getArray("Vertices"); + if (!isNumberArray(r, null)) return; + const i = (this.data.vertices = Float32Array.from(r)); + if (!this.appearance) { + const e = getPdfColorArray(this.color, [0, 0, 0]), + r = t.get("CA"); + let n, + s = getRgbColor(t.getArray("IC"), null); + s && (s = getPdfColorArray(s)); + n = s + ? this.color + ? s.every((t, a) => t === e[a]) + ? "f" + : "B" + : "f" + : "S"; + const o = this.borderStyle.width || 1, + c = 2 * o, + l = [1 / 0, 1 / 0, -1 / 0, -1 / 0]; + for (let e = 0, t = i.length; e < t; e += 2) + Util.rectBoundingBox(i[e] - c, i[e + 1] - c, i[e] + c, i[e + 1] + c, l); + Util.intersect(this.rectangle, l) || (this.rectangle = l); + this._setDefaultAppearance({ + xref: a, + extra: `${o} w`, + strokeColor: e, + strokeAlpha: r, + fillColor: s, + fillAlpha: s ? r : null, + pointsCallback: (e, t) => { + for (let t = 0, a = i.length; t < a; t += 2) + e.push(`${i[t]} ${i[t + 1]} ${0 === t ? "m" : "l"}`); + e.push(n); + return [t[0], t[7], t[2], t[3]]; + }, + }); + } + } +} +class PolygonAnnotation extends PolylineAnnotation { + constructor(e) { + super(e); + this.data.annotationType = M.POLYGON; + } +} +class CaretAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + this.data.annotationType = M.CARET; + } +} +class InkAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = !1; + const { dict: t, xref: a } = e; + this.data.annotationType = M.INK; + this.data.inkLists = []; + this.data.isEditable = !this.data.noHTML; + this.data.noHTML = !1; + this.data.opacity = t.get("CA") || 1; + const r = t.getArray("InkList"); + if (Array.isArray(r)) { + for (let e = 0, t = r.length; e < t; ++e) { + if (!Array.isArray(r[e])) continue; + const t = new Float32Array(r[e].length); + this.data.inkLists.push(t); + for (let i = 0, n = r[e].length; i < n; i += 2) { + const n = a.fetchIfRef(r[e][i]), + s = a.fetchIfRef(r[e][i + 1]); + if ("number" == typeof n && "number" == typeof s) { + t[i] = n; + t[i + 1] = s; + } + } + } + if (!this.appearance) { + const e = getPdfColorArray(this.color, [0, 0, 0]), + r = t.get("CA"), + i = this.borderStyle.width || 1, + n = 2 * i, + s = [1 / 0, 1 / 0, -1 / 0, -1 / 0]; + for (const e of this.data.inkLists) + for (let t = 0, a = e.length; t < a; t += 2) + Util.rectBoundingBox( + e[t] - n, + e[t + 1] - n, + e[t] + n, + e[t + 1] + n, + s, + ); + Util.intersect(this.rectangle, s) || (this.rectangle = s); + this._setDefaultAppearance({ + xref: a, + extra: `${i} w`, + strokeColor: e, + strokeAlpha: r, + pointsCallback: (e, t) => { + for (const t of this.data.inkLists) { + for (let a = 0, r = t.length; a < r; a += 2) + e.push(`${t[a]} ${t[a + 1]} ${0 === a ? "m" : "l"}`); + e.push("S"); + } + return [t[0], t[7], t[2], t[3]]; + }, + }); + } + } + } + static createNewDict(e, t, { apRef: a, ap: r }) { + const { + oldAnnotation: i, + color: n, + date: s, + opacity: o, + paths: c, + outlines: l, + rect: h, + rotation: u, + thickness: d, + user: f, + } = e, + g = i || new Dict(t); + g.setIfNotExists("Type", Name.get("Annot")); + g.setIfNotExists("Subtype", Name.get("Ink")); + g.set(i ? "M" : "CreationDate", `D:${getModificationDate(s)}`); + g.setIfArray("Rect", h); + g.setIfArray("InkList", l?.points || c?.points); + g.setIfNotExists("F", 4); + g.setIfNumber("Rotate", u); + g.setIfDefined("T", stringToAsciiOrUTF16BE(f)); + l && g.setIfName("IT", "InkHighlight"); + if (d > 0) { + const e = new Dict(t); + g.set("BS", e); + e.set("W", d); + } + g.setIfArray("C", getPdfColorArray(n)); + g.setIfNumber("CA", o); + if (r || a) { + const e = new Dict(t); + g.set("AP", e); + e.set("N", a || r); + } + return g; + } + static async createNewAppearanceStream(e, t, a) { + if (e.outlines) return this.createNewAppearanceStreamForHighlight(e, t, a); + const { color: r, rect: i, paths: n, thickness: s, opacity: o } = e; + if (!r) return null; + const c = [`${s} w 1 J 1 j`, `${getPdfColor(r, !1)}`]; + 1 !== o && c.push("/R0 gs"); + for (const e of n.lines) { + c.push(`${numberToString(e[4])} ${numberToString(e[5])} m`); + for (let t = 6, a = e.length; t < a; t += 6) + if (isNaN(e[t])) + c.push(`${numberToString(e[t + 4])} ${numberToString(e[t + 5])} l`); + else { + const [a, r, i, n, s, o] = e.slice(t, t + 6); + c.push([a, r, i, n, s, o].map(numberToString).join(" ") + " c"); + } + 6 === e.length && + c.push(`${numberToString(e[4])} ${numberToString(e[5])} l`); + } + c.push("S"); + const l = c.join("\n"), + h = new Dict(t); + h.set("FormType", 1); + h.setIfName("Subtype", "Form"); + h.setIfName("Type", "XObject"); + h.set("BBox", i); + h.set("Length", l.length); + if (1 !== o) { + const e = new Dict(t), + a = new Dict(t), + r = new Dict(t); + r.set("CA", o); + r.setIfName("Type", "ExtGState"); + a.set("R0", r); + e.set("ExtGState", a); + h.set("Resources", e); + } + const u = new StringStream(l); + u.dict = h; + return u; + } + static async createNewAppearanceStreamForHighlight(e, t, a) { + const { + color: r, + rect: i, + outlines: { outline: n }, + opacity: s, + } = e; + if (!r) return null; + const o = [`${getPdfColor(r, !0)}`, "/R0 gs"]; + o.push(`${numberToString(n[4])} ${numberToString(n[5])} m`); + for (let e = 6, t = n.length; e < t; e += 6) + if (isNaN(n[e])) + o.push(`${numberToString(n[e + 4])} ${numberToString(n[e + 5])} l`); + else { + const [t, a, r, i, s, c] = n.slice(e, e + 6); + o.push([t, a, r, i, s, c].map(numberToString).join(" ") + " c"); + } + o.push("h f"); + const c = o.join("\n"), + l = new Dict(t); + l.set("FormType", 1); + l.setIfName("Subtype", "Form"); + l.setIfName("Type", "XObject"); + l.set("BBox", i); + l.set("Length", c.length); + const h = new Dict(t), + u = new Dict(t); + h.set("ExtGState", u); + l.set("Resources", h); + const d = new Dict(t); + u.set("R0", d); + d.setIfName("BM", "Multiply"); + if (1 !== s) { + d.set("ca", s); + d.setIfName("Type", "ExtGState"); + } + const f = new StringStream(c); + f.dict = l; + return f; + } +} +class HighlightAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: a } = e; + this.data.annotationType = M.HIGHLIGHT; + this.data.isEditable = !this.data.noHTML; + this.data.noHTML = !1; + this.data.opacity = t.get("CA") || 1; + if ((this.data.quadPoints = getQuadPoints(t, null))) { + const e = this.appearance?.dict.get("Resources"); + if (!this.appearance || !e?.has("ExtGState")) { + this.appearance && + warn("HighlightAnnotation - ignoring built-in appearance stream."); + const e = getPdfColorArray(this.color, [1, 1, 0]), + r = t.get("CA"); + this._setDefaultAppearance({ + xref: a, + fillColor: e, + blendMode: "Multiply", + fillAlpha: r, + pointsCallback: (e, 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[7], t[2], t[3]]; + }, + }); + } + } else this.data.popupRef = null; + } + get overlaysTextContent() { + return !0; + } + static createNewDict(e, t, { apRef: a, ap: r }) { + const { + color: i, + date: n, + oldAnnotation: s, + opacity: o, + rect: c, + rotation: l, + user: h, + quadPoints: u, + } = e, + d = s || new Dict(t); + d.setIfNotExists("Type", Name.get("Annot")); + d.setIfNotExists("Subtype", Name.get("Highlight")); + d.set(s ? "M" : "CreationDate", `D:${getModificationDate(n)}`); + d.setIfArray("Rect", c); + d.setIfNotExists("F", 4); + d.setIfNotExists("Border", [0, 0, 0]); + d.setIfNumber("Rotate", l); + d.setIfArray("QuadPoints", u); + d.setIfArray("C", getPdfColorArray(i)); + d.setIfNumber("CA", o); + d.setIfDefined("T", stringToAsciiOrUTF16BE(h)); + if (a || r) { + const e = new Dict(t); + d.set("AP", e); + e.set("N", a || r); + } + return d; + } + static async createNewAppearanceStream(e, t, a) { + const { color: r, rect: i, outlines: n, opacity: s } = e; + if (!r) return null; + const o = [`${getPdfColor(r, !0)}`, "/R0 gs"], + c = []; + for (const e of n) { + c.length = 0; + c.push(`${numberToString(e[0])} ${numberToString(e[1])} m`); + for (let t = 2, a = e.length; t < a; t += 2) + c.push(`${numberToString(e[t])} ${numberToString(e[t + 1])} l`); + c.push("h"); + o.push(c.join("\n")); + } + o.push("f*"); + const l = o.join("\n"), + h = new Dict(t); + h.set("FormType", 1); + h.setIfName("Subtype", "Form"); + h.setIfName("Type", "XObject"); + h.set("BBox", i); + h.set("Length", l.length); + const u = new Dict(t), + d = new Dict(t); + u.set("ExtGState", d); + h.set("Resources", u); + const f = new Dict(t); + d.set("R0", f); + f.setIfName("BM", "Multiply"); + if (1 !== s) { + f.set("ca", s); + f.setIfName("Type", "ExtGState"); + } + const g = new StringStream(l); + g.dict = h; + return g; + } +} +class UnderlineAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: a } = e; + this.data.annotationType = M.UNDERLINE; + if ((this.data.quadPoints = getQuadPoints(t, null))) { + if (!this.appearance) { + const e = getPdfColorArray(this.color, [0, 0, 0]), + r = t.get("CA"); + this._setDefaultAppearance({ + xref: a, + extra: "[] 0 d 0.571 w", + strokeColor: e, + strokeAlpha: r, + pointsCallback: (e, t) => { + e.push(`${t[4]} ${t[5] + 1.3} m`, `${t[6]} ${t[7] + 1.3} l`, "S"); + return [t[0], t[7], t[2], t[3]]; + }, + }); + } + } else this.data.popupRef = null; + } + get overlaysTextContent() { + return !0; + } +} +class SquigglyAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: a } = e; + this.data.annotationType = M.SQUIGGLY; + if ((this.data.quadPoints = getQuadPoints(t, null))) { + if (!this.appearance) { + const e = getPdfColorArray(this.color, [0, 0, 0]), + r = t.get("CA"); + this._setDefaultAppearance({ + xref: a, + extra: "[] 0 d 1 w", + strokeColor: e, + strokeAlpha: r, + pointsCallback: (e, t) => { + const a = (t[1] - t[5]) / 6; + let r = a, + i = t[4]; + const n = t[5], + s = t[6]; + e.push(`${i} ${n + r} m`); + do { + i += 2; + r = 0 === r ? a : 0; + e.push(`${i} ${n + r} l`); + } while (i < s); + e.push("S"); + return [t[4], n - 2 * a, s, n + 2 * a]; + }, + }); + } + } else this.data.popupRef = null; + } + get overlaysTextContent() { + return !0; + } +} +class StrikeOutAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: a } = e; + this.data.annotationType = M.STRIKEOUT; + if ((this.data.quadPoints = getQuadPoints(t, null))) { + if (!this.appearance) { + const e = getPdfColorArray(this.color, [0, 0, 0]), + r = t.get("CA"); + this._setDefaultAppearance({ + xref: a, + extra: "[] 0 d 1 w", + strokeColor: e, + strokeAlpha: r, + pointsCallback: (e, t) => { + 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[7], t[2], t[3]]; + }, + }); + } + } else this.data.popupRef = null; + } + get overlaysTextContent() { + return !0; + } +} +class StampAnnotation extends MarkupAnnotation { + #Re = null; + constructor(e) { + super(e); + this.data.annotationType = M.STAMP; + 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 !0; + this.#Re ??= this.data.hasOwnCanvas; + this.data.hasOwnCanvas = !0; + return !0; + } + if (null !== this.#Re) { + this.data.hasOwnCanvas = this.#Re; + this.#Re = null; + } + return !t?.has(this.data.id); + } + static async createImage(e, t) { + const { width: a, height: r } = e, + i = new OffscreenCanvas(a, r), + n = i.getContext("2d", { alpha: !0 }); + n.drawImage(e, 0, 0); + const s = n.getImageData(0, 0, a, r).data, + o = new Uint32Array(s.buffer), + c = o.some( + FeatureTest.isLittleEndian + ? (e) => e >>> 24 != 255 + : (e) => !!(255 & ~e), + ); + if (c) { + n.fillStyle = "white"; + n.fillRect(0, 0, a, r); + n.drawImage(e, 0, 0); + } + const l = i + .convertToBlob({ type: "image/jpeg", quality: 1 }) + .then((e) => e.arrayBuffer()), + h = Name.get("XObject"), + u = Name.get("Image"), + d = new Dict(t); + d.set("Type", h); + d.set("Subtype", u); + d.set("BitsPerComponent", 8); + d.setIfName("ColorSpace", "DeviceRGB"); + d.setIfName("Filter", "DCTDecode"); + d.set("BBox", [0, 0, a, r]); + d.set("Width", a); + d.set("Height", r); + let f = null; + if (c) { + const e = new Uint8Array(o.length); + if (FeatureTest.isLittleEndian) + for (let t = 0, a = o.length; t < a; t++) e[t] = o[t] >>> 24; + else for (let t = 0, a = o.length; t < a; t++) e[t] = 255 & o[t]; + const i = new Dict(t); + i.set("Type", h); + i.set("Subtype", u); + i.set("BitsPerComponent", 8); + i.setIfName("ColorSpace", "DeviceGray"); + i.set("Width", a); + i.set("Height", r); + f = new Stream(e, 0, 0, i); + } + return { + imageStream: new Stream(await l, 0, 0, d), + smaskStream: f, + width: a, + height: r, + }; + } + static createNewDict(e, t, { apRef: a, ap: r }) { + const { date: i, oldAnnotation: n, rect: s, rotation: o, user: c } = e, + l = n || new Dict(t); + l.setIfNotExists("Type", Name.get("Annot")); + l.setIfNotExists("Subtype", Name.get("Stamp")); + l.set(n ? "M" : "CreationDate", `D:${getModificationDate(i)}`); + l.setIfArray("Rect", s); + l.setIfNotExists("F", 4); + l.setIfNotExists("Border", [0, 0, 0]); + l.setIfNumber("Rotate", o); + l.setIfDefined("T", stringToAsciiOrUTF16BE(c)); + if (a || r) { + const e = new Dict(t); + l.set("AP", e); + e.set("N", a || r); + } + return l; + } + static async #Ne(e, t) { + const { areContours: a, color: r, rect: i, lines: n, thickness: s } = e; + if (!r) return null; + const o = [`${s} w 1 J 1 j`, `${getPdfColor(r, a)}`]; + for (const e of n) { + o.push(`${numberToString(e[4])} ${numberToString(e[5])} m`); + for (let t = 6, a = e.length; t < a; t += 6) + if (isNaN(e[t])) + o.push(`${numberToString(e[t + 4])} ${numberToString(e[t + 5])} l`); + else { + const [a, r, i, n, s, c] = e.slice(t, t + 6); + o.push([a, r, i, n, s, c].map(numberToString).join(" ") + " c"); + } + 6 === e.length && + o.push(`${numberToString(e[4])} ${numberToString(e[5])} l`); + } + o.push(a ? "F" : "S"); + const c = o.join("\n"), + l = new Dict(t); + l.set("FormType", 1); + l.setIfName("Subtype", "Form"); + l.setIfName("Type", "XObject"); + l.set("BBox", i); + l.set("Length", c.length); + const h = new StringStream(c); + h.dict = l; + return h; + } + static async createNewAppearanceStream(e, t, a) { + if (e.oldAnnotation) return null; + if (e.isSignature) return this.#Ne(e, t); + const { rotation: r } = e, + { imageRef: i, width: n, height: s } = a.image, + o = new Dict(t), + c = new Dict(t); + o.set("XObject", c); + c.set("Im0", i); + const l = `q ${n} 0 0 ${s} 0 0 cm /Im0 Do Q`, + h = new Dict(t); + h.set("FormType", 1); + h.setIfName("Subtype", "Form"); + h.setIfName("Type", "XObject"); + h.set("BBox", [0, 0, n, s]); + h.set("Resources", o); + if (r) { + const e = getRotationMatrix(r, n, s); + h.set("Matrix", e); + } + const u = new StringStream(l); + u.dict = h; + return u; + } +} +class FileAttachmentAnnotation extends MarkupAnnotation { + constructor(e) { + super(e); + const { dict: t, xref: a } = e, + r = new FileSpec(t.get("FS"), a); + this.data.annotationType = M.FILEATTACHMENT; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.noHTML = !1; + this.data.file = r.serializable; + const i = t.get("Name"); + this.data.name = i instanceof Name ? stringToPDFString(i.name) : "PushPin"; + const n = t.get("ca"); + this.data.fillAlpha = "number" == typeof n && n >= 0 && n <= 1 ? n : null; + } +} +const ac = { + get r() { + return shadow( + this, + "r", + new Uint8Array([ + 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, + 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, + 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, + 15, 21, 6, 10, 15, 21, + ]), + ); + }, + get k() { + return shadow( + this, + "k", + new Int32Array([ + -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, + -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, + 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, + 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, + 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, + 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, + -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, + -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, + -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, + -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, + -145523070, -1120210379, 718787259, -343485551, + ]), + ); + }, +}; +function calculateMD5(e, t, a) { + let r = 1732584193, + i = -271733879, + n = -1732584194, + s = 271733878; + const o = (a + 72) & -64, + c = new Uint8Array(o); + let l, h; + for (l = 0; l < a; ++l) c[l] = e[t++]; + c[l++] = 128; + const u = o - 8; + l < u && (l = u); + c[l++] = (a << 3) & 255; + c[l++] = (a >> 5) & 255; + c[l++] = (a >> 13) & 255; + c[l++] = (a >> 21) & 255; + c[l++] = (a >>> 29) & 255; + l += 3; + const d = new Int32Array(16), + { k: f, r: g } = ac; + for (l = 0; l < o; ) { + for (h = 0; h < 16; ++h, l += 4) + d[h] = c[l] | (c[l + 1] << 8) | (c[l + 2] << 16) | (c[l + 3] << 24); + let e, + t, + a = r, + o = i, + u = n, + p = s; + for (h = 0; h < 64; ++h) { + if (h < 16) { + e = (o & u) | (~o & p); + t = h; + } else if (h < 32) { + e = (p & o) | (~p & u); + t = (5 * h + 1) & 15; + } else if (h < 48) { + e = o ^ u ^ p; + t = (3 * h + 5) & 15; + } else { + e = u ^ (o | ~p); + t = (7 * h) & 15; + } + const r = p, + i = (a + e + f[h] + d[t]) | 0, + n = g[h]; + p = u; + u = o; + o = (o + ((i << n) | (i >>> (32 - n)))) | 0; + a = r; + } + r = (r + a) | 0; + i = (i + o) | 0; + n = (n + u) | 0; + s = (s + p) | 0; + } + return new Uint8Array([ + 255 & r, + (r >> 8) & 255, + (r >> 16) & 255, + (r >>> 24) & 255, + 255 & i, + (i >> 8) & 255, + (i >> 16) & 255, + (i >>> 24) & 255, + 255 & n, + (n >> 8) & 255, + (n >> 16) & 255, + (n >>> 24) & 255, + 255 & s, + (s >> 8) & 255, + (s >> 16) & 255, + (s >>> 24) & 255, + ]); +} +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 a = t.firstChild; + return "value" === a?.nodeName + ? t.children.map((e) => decodeString(e.textContent)) + : decodeString(t.textContent); + } +} +class SingleIntersector { + #Ee; + minX = 1 / 0; + minY = 1 / 0; + maxX = -1 / 0; + maxY = -1 / 0; + #Pe = null; + #Le = []; + #_e = []; + #Ue = -1; + #je = !1; + constructor(e) { + this.#Ee = e; + const t = e.data.quadPoints; + if (t) { + for (let e = 0, a = t.length; e < a; e += 8) { + this.minX = Math.min(this.minX, t[e]); + this.maxX = Math.max(this.maxX, t[e + 2]); + this.minY = Math.min(this.minY, t[e + 5]); + this.maxY = Math.max(this.maxY, t[e + 1]); + } + t.length > 8 && (this.#Pe = t); + } else [this.minX, this.minY, this.maxX, this.maxY] = e.data.rect; + } + #Xe(e, t) { + if (this.minX >= e || this.maxX <= e || this.minY >= t || this.maxY <= t) + return !1; + const a = this.#Pe; + if (!a) return !0; + if (this.#Ue >= 0) { + const r = this.#Ue; + if (!(a[r] >= e || a[r + 2] <= e || a[r + 5] >= t || a[r + 1] <= t)) + return !0; + this.#Ue = -1; + } + for (let r = 0, i = a.length; r < i; r += 8) + if (!(a[r] >= e || a[r + 2] <= e || a[r + 5] >= t || a[r + 1] <= t)) { + this.#Ue = r; + return !0; + } + return !1; + } + addGlyph(e, t, a) { + if (!this.#Xe(e, t)) { + this.disableExtraChars(); + return !1; + } + if (this.#_e.length > 0) { + this.#Le.push(this.#_e.join("")); + this.#_e.length = 0; + } + this.#Le.push(a); + this.#je = !0; + return !0; + } + addExtraChar(e) { + this.#je && this.#_e.push(e); + } + disableExtraChars() { + if (this.#je) { + this.#je = !1; + this.#_e.length = 0; + } + } + setText() { + this.#Ee.data.overlaidText = this.#Le.join(""); + } +} +const rc = 64; +class Intersector { + #qe = []; + #He = []; + #We; + #Ge; + #ze; + #$e; + #Ve; + #Ke; + constructor(e) { + let t = 1 / 0, + a = 1 / 0, + r = -1 / 0, + i = -1 / 0; + const n = this.#qe; + for (const s of e) { + if (!s.data.quadPoints && !s.data.rect) continue; + const e = new SingleIntersector(s); + n.push(e); + t = Math.min(t, e.minX); + a = Math.min(a, e.minY); + r = Math.max(r, e.maxX); + i = Math.max(i, e.maxY); + } + this.#We = t; + this.#ze = a; + this.#Ge = r; + this.#$e = i; + this.#Ve = 63 / (r - t); + this.#Ke = 63 / (i - a); + for (const e of n) { + const t = this.#Je(e.minX, e.minY), + a = this.#Je(e.maxX, e.maxY), + r = (a - t) % rc, + i = Math.floor((a - t) / rc); + for (let a = t; a <= t + i * rc; a += rc) + for (let t = 0; t <= r; t++) { + let r = this.#He[a + t]; + r || (this.#He[a + t] = r = []); + r.push(e); + } + } + } + #Je(e, t) { + return ( + Math.floor((e - this.#We) * this.#Ve) + + Math.floor((t - this.#ze) * this.#Ke) * rc + ); + } + addGlyph(e, t, a, r) { + const i = e[4] + t / 2, + n = e[5] + a / 2; + if (i < this.#We || n < this.#ze || i > this.#Ge || n > this.#$e) return; + const s = this.#He[this.#Je(i, n)]; + if (s) for (const e of s) e.addGlyph(i, n, r); + } + addExtraChar(e) { + for (const t of this.#qe) t.addExtraChar(e); + } + setText() { + for (const e of this.#qe) e.setText(); + } +} +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; + } + 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; + } + } + rotateRight(e) { + let t, a; + if (32 & e) { + a = this.low; + t = this.high; + } else { + t = this.low; + a = this.high; + } + e &= 31; + this.low = (t >>> e) | (a << (32 - e)); + this.high = (a >>> e) | (t << (32 - e)); + } + not() { + this.high = ~this.high; + this.low = ~this.low; + } + add(e) { + const t = (this.low >>> 0) + (e.low >>> 0); + let a = (this.high >>> 0) + (e.high >>> 0); + t > 4294967295 && (a += 1); + this.low = 0 | t; + this.high = 0 | a; + } + 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 ic = { + get k() { + return shadow(this, "k", [ + 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), + ]); + }, +}; +function ch(e, t, a, r, i) { + e.assign(t); + e.and(a); + i.assign(t); + i.not(); + i.and(r); + e.xor(i); +} +function maj(e, t, a, r, i) { + e.assign(t); + e.and(a); + i.assign(t); + i.and(r); + e.xor(i); + i.assign(a); + i.and(r); + e.xor(i); +} +function sigma(e, t, a) { + e.assign(t); + e.rotateRight(28); + a.assign(t); + a.rotateRight(34); + e.xor(a); + a.assign(t); + a.rotateRight(39); + e.xor(a); +} +function sigmaPrime(e, t, a) { + e.assign(t); + e.rotateRight(14); + a.assign(t); + a.rotateRight(18); + e.xor(a); + a.assign(t); + a.rotateRight(41); + e.xor(a); +} +function littleSigma(e, t, a) { + e.assign(t); + e.rotateRight(1); + a.assign(t); + a.rotateRight(8); + e.xor(a); + a.assign(t); + a.shiftRight(7); + e.xor(a); +} +function littleSigmaPrime(e, t, a) { + e.assign(t); + e.rotateRight(19); + a.assign(t); + a.rotateRight(61); + e.xor(a); + a.assign(t); + a.shiftRight(6); + e.xor(a); +} +function calculateSHA512(e, t, a, r = !1) { + let i, n, s, o, c, l, h, u; + if (r) { + i = new Word64(3418070365, 3238371032); + n = new Word64(1654270250, 914150663); + s = new Word64(2438529370, 812702999); + o = new Word64(355462360, 4144912697); + c = new Word64(1731405415, 4290775857); + l = new Word64(2394180231, 1750603025); + h = new Word64(3675008525, 1694076839); + u = new Word64(1203062813, 3204075428); + } else { + i = new Word64(1779033703, 4089235720); + n = new Word64(3144134277, 2227873595); + s = new Word64(1013904242, 4271175723); + o = new Word64(2773480762, 1595750129); + c = new Word64(1359893119, 2917565137); + l = new Word64(2600822924, 725511199); + h = new Word64(528734635, 4215389547); + u = new Word64(1541459225, 327033209); + } + const d = 128 * Math.ceil((a + 17) / 128), + f = new Uint8Array(d); + let g, p; + for (g = 0; g < a; ++g) f[g] = e[t++]; + f[g++] = 128; + const m = d - 16; + g < m && (g = m); + g += 11; + f[g++] = (a >>> 29) & 255; + f[g++] = (a >> 21) & 255; + f[g++] = (a >> 13) & 255; + f[g++] = (a >> 5) & 255; + f[g++] = (a << 3) & 255; + const b = new Array(80); + for (g = 0; g < 80; g++) b[g] = new Word64(0, 0); + const { k: y } = ic; + let w = new Word64(0, 0), + x = new Word64(0, 0), + S = new Word64(0, 0), + k = new Word64(0, 0), + C = new Word64(0, 0), + v = new Word64(0, 0), + F = new Word64(0, 0), + T = new Word64(0, 0); + const O = new Word64(0, 0), + M = new Word64(0, 0), + D = new Word64(0, 0), + R = new Word64(0, 0); + let N, E; + for (g = 0; g < d; ) { + for (p = 0; p < 16; ++p) { + b[p].high = (f[g] << 24) | (f[g + 1] << 16) | (f[g + 2] << 8) | f[g + 3]; + b[p].low = + (f[g + 4] << 24) | (f[g + 5] << 16) | (f[g + 6] << 8) | f[g + 7]; + g += 8; + } + for (p = 16; p < 80; ++p) { + N = b[p]; + littleSigmaPrime(N, b[p - 2], R); + N.add(b[p - 7]); + littleSigma(D, b[p - 15], R); + N.add(D); + N.add(b[p - 16]); + } + w.assign(i); + x.assign(n); + S.assign(s); + k.assign(o); + C.assign(c); + v.assign(l); + F.assign(h); + T.assign(u); + for (p = 0; p < 80; ++p) { + O.assign(T); + sigmaPrime(D, C, R); + O.add(D); + ch(D, C, v, F, R); + O.add(D); + O.add(y[p]); + O.add(b[p]); + sigma(M, w, R); + maj(D, w, x, S, R); + M.add(D); + N = T; + T = F; + F = v; + v = C; + k.add(O); + C = k; + k = S; + S = x; + x = w; + N.assign(O); + N.add(M); + w = N; + } + i.add(w); + n.add(x); + s.add(S); + o.add(k); + c.add(C); + l.add(v); + h.add(F); + u.add(T); + } + if (r) { + E = new Uint8Array(48); + i.copyTo(E, 0); + n.copyTo(E, 8); + s.copyTo(E, 16); + o.copyTo(E, 24); + c.copyTo(E, 32); + l.copyTo(E, 40); + } else { + E = new Uint8Array(64); + i.copyTo(E, 0); + n.copyTo(E, 8); + s.copyTo(E, 16); + o.copyTo(E, 24); + c.copyTo(E, 32); + l.copyTo(E, 40); + h.copyTo(E, 48); + u.copyTo(E, 56); + } + return E; +} +function calculateSHA384(e, t, a) { + return calculateSHA512(e, t, a, !0); +} +const nc = { + get k() { + return shadow( + this, + "k", + [ + 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, + ], + ); + }, +}; +function rotr(e, t) { + return (e >>> t) | (e << (32 - t)); +} +function calculate_sha256_ch(e, t, a) { + return (e & t) ^ (~e & a); +} +function calculate_sha256_maj(e, t, a) { + return (e & t) ^ (e & a) ^ (t & a); +} +function calculate_sha256_sigma(e) { + return rotr(e, 2) ^ rotr(e, 13) ^ rotr(e, 22); +} +function calculate_sha256_sigmaPrime(e) { + return rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25); +} +function calculate_sha256_littleSigma(e) { + return rotr(e, 7) ^ rotr(e, 18) ^ (e >>> 3); +} +function calculate_sha256_littleSigmaPrime(e) { + return rotr(e, 17) ^ rotr(e, 19) ^ (e >>> 10); +} +function calculateSHA256(e, t, a) { + let r = 1779033703, + i = 3144134277, + n = 1013904242, + s = 2773480762, + o = 1359893119, + c = 2600822924, + l = 528734635, + h = 1541459225; + const u = 64 * Math.ceil((a + 9) / 64), + d = new Uint8Array(u); + let f, g; + for (f = 0; f < a; ++f) d[f] = e[t++]; + d[f++] = 128; + const p = u - 8; + f < p && (f = p); + f += 3; + d[f++] = (a >>> 29) & 255; + d[f++] = (a >> 21) & 255; + d[f++] = (a >> 13) & 255; + d[f++] = (a >> 5) & 255; + d[f++] = (a << 3) & 255; + const m = new Uint32Array(64), + { k: b } = nc; + for (f = 0; f < u; ) { + for (g = 0; g < 16; ++g) { + m[g] = (d[f] << 24) | (d[f + 1] << 16) | (d[f + 2] << 8) | d[f + 3]; + f += 4; + } + for (g = 16; g < 64; ++g) + m[g] = + (calculate_sha256_littleSigmaPrime(m[g - 2]) + + m[g - 7] + + calculate_sha256_littleSigma(m[g - 15]) + + m[g - 16]) | + 0; + let e, + t, + a = r, + u = i, + p = n, + y = s, + w = o, + x = c, + S = l, + k = h; + for (g = 0; g < 64; ++g) { + e = + k + + calculate_sha256_sigmaPrime(w) + + calculate_sha256_ch(w, x, S) + + b[g] + + m[g]; + t = calculate_sha256_sigma(a) + calculate_sha256_maj(a, u, p); + k = S; + S = x; + x = w; + w = (y + e) | 0; + y = p; + p = u; + u = a; + a = (e + t) | 0; + } + r = (r + a) | 0; + i = (i + u) | 0; + n = (n + p) | 0; + s = (s + y) | 0; + o = (o + w) | 0; + c = (c + x) | 0; + l = (l + S) | 0; + h = (h + k) | 0; + } + return new Uint8Array([ + (r >> 24) & 255, + (r >> 16) & 255, + (r >> 8) & 255, + 255 & r, + (i >> 24) & 255, + (i >> 16) & 255, + (i >> 8) & 255, + 255 & i, + (n >> 24) & 255, + (n >> 16) & 255, + (n >> 8) & 255, + 255 & n, + (s >> 24) & 255, + (s >> 16) & 255, + (s >> 8) & 255, + 255 & s, + (o >> 24) & 255, + (o >> 16) & 255, + (o >> 8) & 255, + 255 & o, + (c >> 24) & 255, + (c >> 16) & 255, + (c >> 8) & 255, + 255 & c, + (l >> 24) & 255, + (l >> 16) & 255, + (l >> 8) & 255, + 255 & l, + (h >> 24) & 255, + (h >> 16) & 255, + (h >> 8) & 255, + 255 & h, + ]); +} +class DecryptStream extends DecodeStream { + constructor(e, t, a) { + super(t); + this.stream = e; + this.dict = e.dict; + this.decrypt = a; + this.nextChunk = null; + this.initialized = !1; + } + readBlock() { + let e; + if (this.initialized) e = this.nextChunk; + else { + e = this.stream.getBytes(512); + this.initialized = !0; + } + if (!e?.length) { + this.eof = !0; + return; + } + this.nextChunk = this.stream.getBytes(512); + const t = this.nextChunk?.length > 0; + e = (0, this.decrypt)(e, !t); + const a = this.bufferLength, + r = a + e.length; + this.ensureBuffer(r).set(e, a); + this.bufferLength = r; + } +} +class ARCFourCipher { + constructor(e) { + this.a = 0; + this.b = 0; + const t = new Uint8Array(256), + a = e.length; + for (let e = 0; e < 256; ++e) t[e] = e; + for (let r = 0, i = 0; r < 256; ++r) { + const n = t[r]; + i = (i + n + e[r % a]) & 255; + t[r] = t[i]; + t[i] = n; + } + this.s = t; + } + encryptBlock(e) { + let t = this.a, + a = this.b; + const r = this.s, + i = e.length, + n = new Uint8Array(i); + for (let s = 0; s < i; ++s) { + t = (t + 1) & 255; + const i = r[t]; + a = (a + i) & 255; + const o = r[a]; + r[t] = o; + r[a] = i; + n[s] = e[s] ^ r[(i + o) & 255]; + } + this.a = t; + this.b = a; + return n; + } + decryptBlock(e) { + return this.encryptBlock(e); + } + encrypt(e) { + return this.encryptBlock(e); + } +} +class NullCipher { + decryptBlock(e) { + return e; + } + encrypt(e) { + return e; + } +} +class AESBaseCipher { + _s = new Uint8Array([ + 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, + 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, + 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, + 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, + 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, + 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, + 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, + 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, + 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, + 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, + 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, + 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, + 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, + 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, + 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, + 66, 104, 65, 153, 45, 15, 176, 84, 187, 22, + ]); + _inv_s = new Uint8Array([ + 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, + 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, + 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, + 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, + 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, + 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, + 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, + 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, + 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, + 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, + 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, + 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, + 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, + 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, + 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, + 214, 38, 225, 105, 20, 99, 85, 33, 12, 125, + ]); + _mix = new Uint32Array([ + 0, 235474187, 470948374, 303765277, 941896748, 908933415, 607530554, + 708780849, 1883793496, 2118214995, 1817866830, 1649639237, 1215061108, + 1181045119, 1417561698, 1517767529, 3767586992, 4003061179, 4236429990, + 4069246893, 3635733660, 3602770327, 3299278474, 3400528769, 2430122216, + 2664543715, 2362090238, 2193862645, 2835123396, 2801107407, 3035535058, + 3135740889, 3678124923, 3576870512, 3341394285, 3374361702, 3810496343, + 3977675356, 4279080257, 4043610186, 2876494627, 2776292904, 3076639029, + 3110650942, 2472011535, 2640243204, 2403728665, 2169303058, 1001089995, + 899835584, 666464733, 699432150, 59727847, 226906860, 530400753, 294930682, + 1273168787, 1172967064, 1475418501, 1509430414, 1942435775, 2110667444, + 1876241833, 1641816226, 2910219766, 2743034109, 2976151520, 3211623147, + 2505202138, 2606453969, 2302690252, 2269728455, 3711829422, 3543599269, + 3240894392, 3475313331, 3843699074, 3943906441, 4178062228, 4144047775, + 1306967366, 1139781709, 1374988112, 1610459739, 1975683434, 2076935265, + 1775276924, 1742315127, 1034867998, 866637845, 566021896, 800440835, + 92987698, 193195065, 429456164, 395441711, 1984812685, 2017778566, + 1784663195, 1683407248, 1315562145, 1080094634, 1383856311, 1551037884, + 101039829, 135050206, 437757123, 337553864, 1042385657, 807962610, + 573804783, 742039012, 2531067453, 2564033334, 2328828971, 2227573024, + 2935566865, 2700099354, 3001755655, 3168937228, 3868552805, 3902563182, + 4203181171, 4102977912, 3736164937, 3501741890, 3265478751, 3433712980, + 1106041591, 1340463100, 1576976609, 1408749034, 2043211483, 2009195472, + 1708848333, 1809054150, 832877231, 1068351396, 766945465, 599762354, + 159417987, 126454664, 361929877, 463180190, 2709260871, 2943682380, + 3178106961, 3009879386, 2572697195, 2538681184, 2236228733, 2336434550, + 3509871135, 3745345300, 3441850377, 3274667266, 3910161971, 3877198648, + 4110568485, 4211818798, 2597806476, 2497604743, 2261089178, 2295101073, + 2733856160, 2902087851, 3202437046, 2968011453, 3936291284, 3835036895, + 4136440770, 4169408201, 3535486456, 3702665459, 3467192302, 3231722213, + 2051518780, 1951317047, 1716890410, 1750902305, 1113818384, 1282050075, + 1584504582, 1350078989, 168810852, 67556463, 371049330, 404016761, + 841739592, 1008918595, 775550814, 540080725, 3969562369, 3801332234, + 4035489047, 4269907996, 3569255213, 3669462566, 3366754619, 3332740144, + 2631065433, 2463879762, 2160117071, 2395588676, 2767645557, 2868897406, + 3102011747, 3069049960, 202008497, 33778362, 270040487, 504459436, + 875451293, 975658646, 675039627, 641025152, 2084704233, 1917518562, + 1615861247, 1851332852, 1147550661, 1248802510, 1484005843, 1451044056, + 933301370, 967311729, 733156972, 632953703, 260388950, 25965917, 328671808, + 496906059, 1206477858, 1239443753, 1543208500, 1441952575, 2144161806, + 1908694277, 1675577880, 1842759443, 3610369226, 3644379585, 3408119516, + 3307916247, 4011190502, 3776767469, 4077384432, 4245618683, 2809771154, + 2842737049, 3144396420, 3043140495, 2673705150, 2438237621, 2203032232, + 2370213795, + ]); + _mixCol = new Uint8Array(256).map((e, t) => + t < 128 ? t << 1 : (t << 1) ^ 27, + ); + constructor() { + this.buffer = new Uint8Array(16); + this.bufferPosition = 0; + } + _expandKey(e) { + unreachable("Cannot call `_expandKey` on the base class"); + } + _decrypt(e, t) { + let a, r, i; + const n = new Uint8Array(16); + n.set(e); + for (let e = 0, a = this._keySize; e < 16; ++e, ++a) n[e] ^= t[a]; + for (let e = this._cyclesOfRepetition - 1; e >= 1; --e) { + a = n[13]; + n[13] = n[9]; + n[9] = n[5]; + n[5] = n[1]; + n[1] = a; + a = n[14]; + r = n[10]; + n[14] = n[6]; + n[10] = n[2]; + n[6] = a; + n[2] = r; + a = n[15]; + r = n[11]; + i = n[7]; + n[15] = n[3]; + n[11] = a; + n[7] = r; + n[3] = i; + for (let e = 0; e < 16; ++e) n[e] = this._inv_s[n[e]]; + for (let a = 0, r = 16 * e; a < 16; ++a, ++r) n[a] ^= t[r]; + for (let e = 0; e < 16; e += 4) { + const t = this._mix[n[e]], + r = this._mix[n[e + 1]], + i = this._mix[n[e + 2]], + s = this._mix[n[e + 3]]; + a = + t ^ + (r >>> 8) ^ + (r << 24) ^ + (i >>> 16) ^ + (i << 16) ^ + (s >>> 24) ^ + (s << 8); + n[e] = (a >>> 24) & 255; + n[e + 1] = (a >> 16) & 255; + n[e + 2] = (a >> 8) & 255; + n[e + 3] = 255 & a; + } + } + a = n[13]; + n[13] = n[9]; + n[9] = n[5]; + n[5] = n[1]; + n[1] = a; + a = n[14]; + r = n[10]; + n[14] = n[6]; + n[10] = n[2]; + n[6] = a; + n[2] = r; + a = n[15]; + r = n[11]; + i = n[7]; + n[15] = n[3]; + n[11] = a; + n[7] = r; + n[3] = i; + for (let e = 0; e < 16; ++e) { + n[e] = this._inv_s[n[e]]; + n[e] ^= t[e]; + } + return n; + } + _encrypt(e, t) { + const a = this._s; + let r, i, n; + const s = new Uint8Array(16); + s.set(e); + for (let e = 0; e < 16; ++e) s[e] ^= t[e]; + for (let e = 1; e < this._cyclesOfRepetition; e++) { + for (let e = 0; e < 16; ++e) s[e] = a[s[e]]; + n = s[1]; + s[1] = s[5]; + s[5] = s[9]; + s[9] = s[13]; + s[13] = n; + n = s[2]; + i = s[6]; + s[2] = s[10]; + s[6] = s[14]; + s[10] = n; + s[14] = i; + n = s[3]; + i = s[7]; + r = s[11]; + s[3] = s[15]; + s[7] = n; + s[11] = i; + s[15] = r; + for (let e = 0; e < 16; e += 4) { + const t = s[e], + a = s[e + 1], + i = s[e + 2], + n = s[e + 3]; + r = t ^ a ^ i ^ n; + s[e] ^= r ^ this._mixCol[t ^ a]; + s[e + 1] ^= r ^ this._mixCol[a ^ i]; + s[e + 2] ^= r ^ this._mixCol[i ^ n]; + s[e + 3] ^= r ^ this._mixCol[n ^ t]; + } + for (let a = 0, r = 16 * e; a < 16; ++a, ++r) s[a] ^= t[r]; + } + for (let e = 0; e < 16; ++e) s[e] = a[s[e]]; + n = s[1]; + s[1] = s[5]; + s[5] = s[9]; + s[9] = s[13]; + s[13] = n; + n = s[2]; + i = s[6]; + s[2] = s[10]; + s[6] = s[14]; + s[10] = n; + s[14] = i; + n = s[3]; + i = s[7]; + r = s[11]; + s[3] = s[15]; + s[7] = n; + s[11] = i; + s[15] = r; + for (let e = 0, a = this._keySize; e < 16; ++e, ++a) s[e] ^= t[a]; + return s; + } + _decryptBlock2(e, t) { + const a = e.length; + let r = this.buffer, + i = this.bufferPosition; + const n = []; + let s = this.iv; + for (let t = 0; t < a; ++t) { + r[i] = e[t]; + ++i; + if (i < 16) continue; + const a = this._decrypt(r, this._key); + for (let e = 0; e < 16; ++e) a[e] ^= s[e]; + s = r; + n.push(a); + r = new Uint8Array(16); + i = 0; + } + this.buffer = r; + this.bufferLength = i; + this.iv = s; + if (0 === n.length) return new Uint8Array(0); + let o = 16 * n.length; + if (t) { + const e = n.at(-1); + let t = e[15]; + if (t <= 16) { + for (let a = 15, r = 16 - t; a >= r; --a) + if (e[a] !== t) { + t = 0; + break; + } + o -= t; + n[n.length - 1] = e.subarray(0, 16 - t); + } + } + const c = new Uint8Array(o); + for (let e = 0, t = 0, a = n.length; e < a; ++e, t += 16) c.set(n[e], t); + return c; + } + decryptBlock(e, t, a = null) { + const r = e.length, + i = this.buffer; + let n = this.bufferPosition; + if (a) this.iv = a; + else { + for (let t = 0; n < 16 && t < r; ++t, ++n) i[n] = e[t]; + if (n < 16) { + this.bufferLength = n; + return new Uint8Array(0); + } + this.iv = i; + e = e.subarray(16); + } + this.buffer = new Uint8Array(16); + this.bufferLength = 0; + this.decryptBlock = this._decryptBlock2; + return this.decryptBlock(e, t); + } + encrypt(e, t) { + const a = e.length; + let r = this.buffer, + i = this.bufferPosition; + const n = []; + t ||= new Uint8Array(16); + for (let s = 0; s < a; ++s) { + r[i] = e[s]; + ++i; + if (i < 16) continue; + for (let e = 0; e < 16; ++e) r[e] ^= t[e]; + const a = this._encrypt(r, this._key); + t = a; + n.push(a); + r = new Uint8Array(16); + i = 0; + } + this.buffer = r; + this.bufferLength = i; + this.iv = t; + if (0 === n.length) return new Uint8Array(0); + const s = 16 * n.length, + o = new Uint8Array(s); + for (let e = 0, t = 0, a = n.length; e < a; ++e, t += 16) o.set(n[e], t); + return o; + } +} +class AES128Cipher extends AESBaseCipher { + _rcon = new Uint8Array([ + 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, + 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, 114, 228, + 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, 58, 116, 232, + 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, + 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, 114, + 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, 58, 116, + 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, + 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, 57, + 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, 58, + 116, 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, + 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145, + 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, 29, + 58, 116, 232, 203, 141, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, + 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, + 145, 57, 114, 228, 211, 189, 97, 194, 159, 37, 74, 148, 51, 102, 204, 131, + 29, 58, 116, 232, 203, 141, + ]); + constructor(e) { + super(); + this._cyclesOfRepetition = 10; + this._keySize = 160; + this._key = this._expandKey(e); + } + _expandKey(e) { + const t = this._s, + a = this._rcon, + r = new Uint8Array(176); + r.set(e); + for (let e = 16, i = 1; e < 176; ++i) { + let n = r[e - 3], + s = r[e - 2], + o = r[e - 1], + c = r[e - 4]; + n = t[n]; + s = t[s]; + o = t[o]; + c = t[c]; + n ^= a[i]; + for (let t = 0; t < 4; ++t) { + r[e] = n ^= r[e - 16]; + e++; + r[e] = s ^= r[e - 16]; + e++; + r[e] = o ^= r[e - 16]; + e++; + r[e] = c ^= r[e - 16]; + e++; + } + } + return r; + } +} +class AES256Cipher extends AESBaseCipher { + constructor(e) { + super(); + this._cyclesOfRepetition = 14; + this._keySize = 224; + this._key = this._expandKey(e); + } + _expandKey(e) { + const t = this._s, + a = new Uint8Array(240); + a.set(e); + let r, + i, + n, + s, + o = 1; + for (let e = 32, c = 1; e < 240; ++c) { + if (e % 32 == 16) { + r = t[r]; + i = t[i]; + n = t[n]; + s = t[s]; + } else if (e % 32 == 0) { + r = a[e - 3]; + i = a[e - 2]; + n = a[e - 1]; + s = a[e - 4]; + r = t[r]; + i = t[i]; + n = t[n]; + s = t[s]; + r ^= o; + (o <<= 1) >= 256 && (o = 255 & (27 ^ o)); + } + for (let t = 0; t < 4; ++t) { + a[e] = r ^= a[e - 32]; + e++; + a[e] = i ^= a[e - 32]; + e++; + a[e] = n ^= a[e - 32]; + e++; + a[e] = s ^= a[e - 32]; + e++; + } + } + return a; + } +} +class PDFBase { + _hash(e, t, a) { + unreachable("Abstract method `_hash` called"); + } + checkOwnerPassword(e, t, a, r) { + const i = new Uint8Array(e.length + 56); + i.set(e, 0); + i.set(t, e.length); + i.set(a, e.length + t.length); + return isArrayEqual(this._hash(e, i, a), r); + } + checkUserPassword(e, t, a) { + const r = new Uint8Array(e.length + 8); + r.set(e, 0); + r.set(t, e.length); + return isArrayEqual(this._hash(e, r, []), a); + } + getOwnerKey(e, t, a, r) { + const i = new Uint8Array(e.length + 56); + i.set(e, 0); + i.set(t, e.length); + i.set(a, e.length + t.length); + const n = this._hash(e, i, a); + return new AES256Cipher(n).decryptBlock(r, !1, new Uint8Array(16)); + } + getUserKey(e, t, a) { + const r = new Uint8Array(e.length + 8); + r.set(e, 0); + r.set(t, e.length); + const i = this._hash(e, r, []); + return new AES256Cipher(i).decryptBlock(a, !1, new Uint8Array(16)); + } +} +class PDF17 extends PDFBase { + _hash(e, t, a) { + return calculateSHA256(t, 0, t.length); + } +} +class PDF20 extends PDFBase { + _hash(e, t, a) { + let r = calculateSHA256(t, 0, t.length).subarray(0, 32), + i = [0], + n = 0; + for (; n < 64 || i.at(-1) > n - 32; ) { + const t = e.length + r.length + a.length, + s = new Uint8Array(t); + let o = 0; + s.set(e, o); + o += e.length; + s.set(r, o); + o += r.length; + s.set(a, o); + const c = new Uint8Array(64 * t); + for (let e = 0, a = 0; e < 64; e++, a += t) c.set(s, a); + i = new AES128Cipher(r.subarray(0, 16)).encrypt(c, r.subarray(16, 32)); + const l = Math.sumPrecise(i.slice(0, 16)) % 3; + 0 === l + ? (r = calculateSHA256(i, 0, i.length)) + : 1 === l + ? (r = calculateSHA384(i, 0, i.length)) + : 2 === l && (r = calculateSHA512(i, 0, i.length)); + n++; + } + return r.subarray(0, 32); + } +} +class CipherTransform { + constructor(e, t) { + this.StringCipherConstructor = e; + this.StreamCipherConstructor = t; + } + createStream(e, t) { + const a = new this.StreamCipherConstructor(); + return new DecryptStream(e, t, function cipherTransformDecryptStream(e, t) { + return a.decryptBlock(e, t); + }); + } + decryptString(e) { + const t = new this.StringCipherConstructor(); + let a = stringToBytes(e); + a = t.decryptBlock(a, !0); + return bytesToString(a); + } + encryptString(e) { + const t = new this.StringCipherConstructor(); + if (t instanceof AESBaseCipher) { + const a = 16 - (e.length % 16); + e += String.fromCharCode(a).repeat(a); + const r = new Uint8Array(16); + crypto.getRandomValues(r); + let i = stringToBytes(e); + i = t.encrypt(i, r); + const n = new Uint8Array(16 + i.length); + n.set(r); + n.set(i, 16); + return bytesToString(n); + } + let a = stringToBytes(e); + a = t.encrypt(a); + return bytesToString(a); + } +} +class CipherTransformFactory { + static get _defaultPasswordBytes() { + return shadow( + this, + "_defaultPasswordBytes", + 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, + ]), + ); + } + #Ye(e, t, a, r, i, n, s, o, c, l, h, u) { + if (t) { + const e = Math.min(127, t.length); + t = t.subarray(0, e); + } else t = []; + const d = 6 === e ? new PDF20() : new PDF17(); + return d.checkUserPassword(t, o, s) + ? d.getUserKey(t, c, h) + : t.length && d.checkOwnerPassword(t, r, n, a) + ? d.getOwnerKey(t, i, n, l) + : null; + } + #Ze(e, t, a, r, i, n, s, o) { + const c = 40 + a.length + e.length, + l = new Uint8Array(c); + let h, + u, + d = 0; + if (t) { + u = Math.min(32, t.length); + for (; d < u; ++d) l[d] = t[d]; + } + h = 0; + for (; d < 32; ) l[d++] = CipherTransformFactory._defaultPasswordBytes[h++]; + l.set(a, d); + d += a.length; + l[d++] = 255 & i; + l[d++] = (i >> 8) & 255; + l[d++] = (i >> 16) & 255; + l[d++] = (i >>> 24) & 255; + l.set(e, d); + d += e.length; + if (n >= 4 && !o) { + l.fill(255, d, d + 4); + d += 4; + } + let f = calculateMD5(l, 0, d); + const g = s >> 3; + if (n >= 3) for (h = 0; h < 50; ++h) f = calculateMD5(f, 0, g); + const p = f.subarray(0, g); + let m, b; + if (n >= 3) { + d = 0; + l.set(CipherTransformFactory._defaultPasswordBytes, d); + d += 32; + l.set(e, d); + d += e.length; + m = new ARCFourCipher(p); + b = m.encryptBlock(calculateMD5(l, 0, d)); + u = p.length; + const t = new Uint8Array(u); + for (h = 1; h <= 19; ++h) { + for (let e = 0; e < u; ++e) t[e] = p[e] ^ h; + m = new ARCFourCipher(t); + b = m.encryptBlock(b); + } + } else { + m = new ARCFourCipher(p); + b = m.encryptBlock(CipherTransformFactory._defaultPasswordBytes); + } + return b.every((e, t) => r[t] === e) ? p : null; + } + #Qe(e, t, a, r) { + const i = new Uint8Array(32); + let n = 0; + const s = Math.min(32, e.length); + for (; n < s; ++n) i[n] = e[n]; + let o = 0; + for (; n < 32; ) i[n++] = CipherTransformFactory._defaultPasswordBytes[o++]; + let c = calculateMD5(i, 0, n); + const l = r >> 3; + if (a >= 3) for (o = 0; o < 50; ++o) c = calculateMD5(c, 0, c.length); + let h, u; + if (a >= 3) { + u = t; + const e = new Uint8Array(l); + for (o = 19; o >= 0; o--) { + for (let t = 0; t < l; ++t) e[t] = c[t] ^ o; + h = new ARCFourCipher(e); + u = h.encryptBlock(u); + } + } else { + h = new ARCFourCipher(c.subarray(0, l)); + u = h.encryptBlock(t); + } + return u; + } + #et(e, t, a, r = !1) { + const i = a.length, + n = new Uint8Array(i + 9); + n.set(a); + let s = i; + n[s++] = 255 & e; + n[s++] = (e >> 8) & 255; + n[s++] = (e >> 16) & 255; + n[s++] = 255 & t; + n[s++] = (t >> 8) & 255; + if (r) { + n[s++] = 115; + n[s++] = 65; + n[s++] = 108; + n[s++] = 84; + } + return calculateMD5(n, 0, s).subarray(0, Math.min(i + 5, 16)); + } + #tt(e, t, a, r, i) { + if (!(t instanceof Name)) + throw new FormatError("Invalid crypt filter name."); + const n = this, + s = e.get(t.name), + o = s?.get("CFM"); + if (!o || "None" === o.name) + return function () { + return new NullCipher(); + }; + if ("V2" === o.name) + return function () { + return new ARCFourCipher(n.#et(a, r, i, !1)); + }; + if ("AESV2" === o.name) + return function () { + return new AES128Cipher(n.#et(a, r, i, !0)); + }; + if ("AESV3" === o.name) + return function () { + return new AES256Cipher(i); + }; + throw new FormatError("Unknown crypto method"); + } + constructor(e, t, a) { + const r = e.get("Filter"); + if (!isName(r, "Standard")) + throw new FormatError("unknown encryption method"); + this.filterName = r.name; + this.dict = e; + const i = e.get("V"); + if (!Number.isInteger(i) || (1 !== i && 2 !== i && 4 !== i && 5 !== i)) + throw new FormatError("unsupported encryption algorithm"); + this.algorithm = i; + let n = e.get("Length"); + if (!n) + if (i <= 3) n = 40; + else { + const t = e.get("CF"), + a = e.get("StmF"); + if (t instanceof Dict && a instanceof Name) { + t.suppressEncryption = !0; + const e = t.get(a.name); + n = e?.get("Length") || 128; + n < 40 && (n <<= 3); + } + } + if (!Number.isInteger(n) || n < 40 || n % 8 != 0) + throw new FormatError("invalid key length"); + const s = stringToBytes(e.get("O")), + o = stringToBytes(e.get("U")), + c = s.subarray(0, 32), + l = o.subarray(0, 32), + h = e.get("P"), + u = e.get("R"), + d = (4 === i || 5 === i) && !1 !== e.get("EncryptMetadata"); + this.encryptMetadata = d; + const f = stringToBytes(t); + let g, p; + if (a) { + if (6 === u) + try { + a = utf8StringToString(a); + } catch { + warn( + "CipherTransformFactory: Unable to convert UTF8 encoded password.", + ); + } + g = stringToBytes(a); + } + if (5 !== i) p = this.#Ze(f, g, c, l, h, u, n, d); + else { + const t = s.subarray(32, 40), + a = s.subarray(40, 48), + r = o.subarray(0, 48), + i = o.subarray(32, 40), + n = o.subarray(40, 48), + h = stringToBytes(e.get("OE")), + d = stringToBytes(e.get("UE")), + f = stringToBytes(e.get("Perms")); + p = this.#Ye(u, g, c, t, a, r, l, i, n, h, d, f); + } + if (!p) { + if (!a) throw new PasswordException("No password given", Yt); + const e = this.#Qe(g, c, u, n); + p = this.#Ze(f, e, c, l, h, u, n, d); + } + if (!p) throw new PasswordException("Incorrect Password", Zt); + if (4 === i && p.length < 16) { + this.encryptionKey = new Uint8Array(16); + this.encryptionKey.set(p); + } else this.encryptionKey = p; + if (i >= 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.#tt(this.cf, this.strf, e, t, this.encryptionKey), + this.#tt(this.cf, this.stmf, e, t, this.encryptionKey), + ); + const a = this.#et(e, t, this.encryptionKey, !1), + cipherConstructor = function () { + return new ARCFourCipher(a); + }; + return new CipherTransform(cipherConstructor, cipherConstructor); + } +} +class XRef { + 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; + e < this._newPersistentRefNum; + e++ + ) { + this._persistentRefsCache.set(e, this._cacheMap.get(e)); + this._cacheMap.delete(e); + } + } + } + return Ref.get(this._newTemporaryRefNum++, 0); + } + resetNewTemporaryRef() { + this._newTemporaryRefNum = null; + if (this._persistentRefsCache) + for (const [e, t] of this._persistentRefsCache) this._cacheMap.set(e, t); + this._persistentRefsCache = null; + } + setStartXRef(e) { + this.startXRefQueue = [e]; + } + parse(e = !1) { + let t, a, r; + if (e) { + warn("Indexing all PDF objects"); + t = this.indexObjects(); + } else t = this.readXRef(); + t.assignXref(this); + this.trailer = t; + try { + a = t.get("Encrypt"); + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn(`XRef.parse - Invalid "Encrypt" reference: "${e}".`); + } + if (a instanceof Dict) { + const e = t.get("ID"), + r = e?.length ? e[0] : ""; + a.suppressEncryption = !0; + this.encrypt = new CipherTransformFactory(a, r, this.pdfManager.password); + } + try { + r = t.get("Root"); + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn(`XRef.parse - Invalid "Root" reference: "${e}".`); + } + if (r instanceof Dict) + try { + if (r.get("Pages") instanceof Dict) { + this.root = r; + return; + } + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn(`XRef.parse - Invalid "Pages" reference: "${e}".`); + } + if (!e) throw new XRefParseException(); + throw new InvalidPDFException("Invalid Root reference."); + } + processXRefTable(e) { + "tableState" in this || + (this.tableState = { + entryNum: 0, + streamPos: e.lexer.stream.pos, + parserBuf1: e.buf1, + parserBuf2: e.buf2, + }); + if (!isCmd(this.readXRefTable(e), "trailer")) + throw new FormatError( + "Invalid XRef table: could not find trailer dictionary", + ); + let t = e.getObj(); + t instanceof Dict || !t.dict || (t = t.dict); + if (!(t instanceof Dict)) + throw new FormatError( + "Invalid XRef table: could not parse trailer dictionary", + ); + delete this.tableState; + return t; + } + readXRefTable(e) { + const t = e.lexer.stream, + a = this.tableState; + t.pos = a.streamPos; + e.buf1 = a.parserBuf1; + e.buf2 = a.parserBuf2; + let r; + for (;;) { + if (!("firstEntryNum" in a) || !("entryCount" in a)) { + if (isCmd((r = e.getObj()), "trailer")) break; + a.firstEntryNum = r; + a.entryCount = e.getObj(); + } + let i = a.firstEntryNum; + const n = a.entryCount; + if (!Number.isInteger(i) || !Number.isInteger(n)) + throw new FormatError( + "Invalid XRef table: wrong types in subsection header", + ); + for (let r = a.entryNum; r < n; r++) { + a.streamPos = t.pos; + a.entryNum = r; + a.parserBuf1 = e.buf1; + a.parserBuf2 = e.buf2; + const s = {}; + s.offset = e.getObj(); + s.gen = e.getObj(); + const o = e.getObj(); + if (o instanceof Cmd) + switch (o.cmd) { + case "f": + s.free = !0; + break; + case "n": + s.uncompressed = !0; + } + if ( + !Number.isInteger(s.offset) || + !Number.isInteger(s.gen) || + (!s.free && !s.uncompressed) + ) + throw new FormatError(`Invalid entry in XRef subsection: ${i}, ${n}`); + 0 === r && s.free && 1 === i && (i = 0); + this.entries[r + i] || (this.entries[r + i] = s); + } + a.entryNum = 0; + a.streamPos = t.pos; + a.parserBuf1 = e.buf1; + a.parserBuf2 = e.buf2; + delete a.firstEntryNum; + delete a.entryCount; + } + if (this.entries[0] && !this.entries[0].free) + throw new FormatError("Invalid XRef table: unexpected first object"); + return r; + } + processXRefStream(e) { + if (!("streamState" in this)) { + const { dict: t, pos: a } = e, + r = t.get("W"), + i = t.get("Index") || [0, t.get("Size")]; + this.streamState = { + entryRanges: i, + byteWidths: r, + entryNum: 0, + streamPos: a, + }; + } + this.readXRefStream(e); + delete this.streamState; + return e.dict; + } + readXRefStream(e) { + const t = this.streamState; + e.pos = t.streamPos; + const [a, r, i] = t.byteWidths, + n = t.entryRanges; + for (; n.length > 0; ) { + const [s, o] = n; + if (!Number.isInteger(s) || !Number.isInteger(o)) + throw new FormatError(`Invalid XRef range fields: ${s}, ${o}`); + if (!Number.isInteger(a) || !Number.isInteger(r) || !Number.isInteger(i)) + throw new FormatError(`Invalid XRef entry fields length: ${s}, ${o}`); + for (let n = t.entryNum; n < o; ++n) { + t.entryNum = n; + t.streamPos = e.pos; + let o = 0, + c = 0, + l = 0; + for (let t = 0; t < a; ++t) { + const t = e.getByte(); + if (-1 === t) + throw new FormatError("Invalid XRef byteWidths 'type'."); + o = (o << 8) | t; + } + 0 === a && (o = 1); + for (let t = 0; t < r; ++t) { + const t = e.getByte(); + if (-1 === t) + throw new FormatError("Invalid XRef byteWidths 'offset'."); + c = (c << 8) | t; + } + for (let t = 0; t < i; ++t) { + const t = e.getByte(); + if (-1 === t) + throw new FormatError("Invalid XRef byteWidths 'generation'."); + l = (l << 8) | t; + } + const h = {}; + h.offset = c; + h.gen = l; + switch (o) { + case 0: + h.free = !0; + break; + case 1: + h.uncompressed = !0; + break; + case 2: + break; + default: + throw new FormatError(`Invalid XRef entry type: ${o}`); + } + this.entries[s + n] || (this.entries[s + n] = h); + } + t.entryNum = 0; + t.streamPos = e.pos; + n.splice(0, 2); + } + } + indexObjects() { + function readToken(e, t) { + let a = "", + r = e[t]; + for (; 10 !== r && 13 !== r && 60 !== r && !(++t >= e.length); ) { + a += String.fromCharCode(r); + r = e[t]; + } + return a; + } + function skipUntil(e, t, a) { + const r = a.length, + i = e.length; + let n = 0; + for (; t < i; ) { + let i = 0; + for (; i < r && e[t + i] === a[i]; ) ++i; + if (i >= r) break; + t++; + n++; + } + return n; + } + const e = /\b(endobj|\d+\s+\d+\s+obj|xref|trailer\s*<<)\b/g, + t = /\b(startxref|\d+\s+\d+\s+obj)\b/g, + a = /^(\d+)\s+(\d+)\s+obj\b/, + r = new Uint8Array([116, 114, 97, 105, 108, 101, 114]), + i = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]), + n = new Uint8Array([47, 88, 82, 101, 102]); + this.entries.length = 0; + this._cacheMap.clear(); + const s = this.stream; + s.pos = 0; + const o = s.getBytes(), + c = bytesToString(o), + l = o.length; + let h = s.start; + const u = [], + d = []; + for (; h < l; ) { + let f = o[h]; + if (9 === f || 10 === f || 13 === f || 32 === f) { + ++h; + continue; + } + if (37 === f) { + do { + ++h; + if (h >= l) break; + f = o[h]; + } while (10 !== f && 13 !== f); + continue; + } + const g = readToken(o, h); + let p; + if (g.startsWith("xref") && (4 === g.length || /\s/.test(g[4]))) { + h += skipUntil(o, h, r); + u.push(h); + h += skipUntil(o, h, i); + } else if ((p = a.exec(g))) { + const t = 0 | p[1], + a = 0 | p[2], + r = h + g.length; + let i, + u = !1; + if (this.entries[t]) { + if (this.entries[t].gen === a) + try { + new Parser({ lexer: new Lexer(s.makeSubStream(r)) }).getObj(); + u = !0; + } catch (e) { + e instanceof ParserEOFException + ? warn(`indexObjects -- checking object (${g}): "${e}".`) + : (u = !0); + } + } else u = !0; + u && + (this.entries[t] = { offset: h - s.start, gen: a, uncompressed: !0 }); + e.lastIndex = r; + const f = e.exec(c); + if (f) { + i = e.lastIndex + 1 - h; + if ("endobj" !== f[1]) { + warn( + `indexObjects: Found "${f[1]}" inside of another "obj", caused by missing "endobj" -- trying to recover.`, + ); + i -= f[1].length + 1; + } + } else i = l - h; + const m = o.subarray(h, h + i), + b = skipUntil(m, 0, n); + if (b < i && m[b + 5] < 64) { + d.push(h - s.start); + this._xrefStms.add(h - s.start); + } + h += i; + } else if ( + g.startsWith("trailer") && + (7 === g.length || /\s/.test(g[7])) + ) { + u.push(h); + const e = h + g.length; + let a; + t.lastIndex = e; + const r = t.exec(c); + if (r) { + a = t.lastIndex + 1 - h; + if ("startxref" !== r[1]) { + warn( + `indexObjects: Found "${r[1]}" after "trailer", caused by missing "startxref" -- trying to recover.`, + ); + a -= r[1].length + 1; + } + } else a = l - h; + h += a; + } else h += g.length + 1; + } + for (const e of d) { + this.startXRefQueue.push(e); + this.readXRef(!0); + } + const f = []; + let g, + p, + m = !1; + for (const e of u) { + s.pos = e; + const t = new Parser({ + lexer: new Lexer(s), + xref: this, + allowStreams: !0, + recoveryMode: !0, + }); + if (!isCmd(t.getObj(), "trailer")) continue; + const a = t.getObj(); + if (a instanceof Dict) { + f.push(a); + a.has("Encrypt") && (m = !0); + } + } + for (const e of [...f, "genFallback", ...f]) { + if ("genFallback" === e) { + if (!p) break; + this._generationFallback = !0; + continue; + } + let t = !1; + try { + const a = e.get("Root"); + if (!(a instanceof Dict)) continue; + const r = a.get("Pages"); + if (!(r instanceof Dict)) continue; + const i = r.get("Count"); + Number.isInteger(i) && (t = !0); + } catch (e) { + p = e; + continue; + } + if (t && (!m || e.has("Encrypt")) && e.has("ID")) return e; + g = e; + } + if (g) return g; + if (this.topDict) return this.topDict; + if (!f.length) + for (const e in this.entries) { + if (!Object.hasOwn(this.entries, e)) continue; + const t = this.entries[e], + a = Ref.get(parseInt(e), t.gen); + let r; + try { + r = this.fetch(a); + } catch { + continue; + } + r instanceof BaseStream && (r = r.dict); + if (r instanceof Dict && r.has("Root")) return r; + } + throw new InvalidPDFException("Invalid PDF structure."); + } + readXRef(e = !1) { + const t = this.stream, + a = new Set(); + for (; this.startXRefQueue.length; ) { + try { + const e = this.startXRefQueue[0]; + if (a.has(e)) { + warn("readXRef - skipping XRef table since it was already parsed."); + this.startXRefQueue.shift(); + continue; + } + a.add(e); + t.pos = e + t.start; + const r = new Parser({ + lexer: new Lexer(t), + xref: this, + allowStreams: !0, + }); + let i, + n = r.getObj(); + if (isCmd(n, "xref")) { + i = this.processXRefTable(r); + this.topDict || (this.topDict = i); + n = i.get("XRefStm"); + if (Number.isInteger(n) && !this._xrefStms.has(n)) { + this._xrefStms.add(n); + this.startXRefQueue.push(n); + } + } else { + if (!Number.isInteger(n)) + throw new FormatError("Invalid XRef stream header"); + if ( + !( + Number.isInteger(r.getObj()) && + isCmd(r.getObj(), "obj") && + (n = r.getObj()) instanceof BaseStream + ) + ) + throw new FormatError("Invalid XRef stream"); + i = this.processXRefStream(n); + this.topDict || (this.topDict = i); + if (!i) throw new FormatError("Failed to read XRef stream"); + } + n = i.get("Prev"); + Number.isInteger(n) + ? this.startXRefQueue.push(n) + : n instanceof Ref && this.startXRefQueue.push(n.num); + } catch (e) { + if (e instanceof MissingDataException) throw e; + info("(while reading XRef): " + e); + } + this.startXRefQueue.shift(); + } + if (this.topDict) return this.topDict; + if (!e) throw new XRefParseException(); + } + 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 a = e.num, + r = this._cacheMap.get(a); + if (void 0 !== r) { + r instanceof Dict && !r.objId && (r.objId = e.toString()); + return r; + } + let i = this.getEntry(a); + if (null === i) return i; + if (this._pendingRefs.has(e)) { + this._pendingRefs.remove(e); + warn(`Ignoring circular reference: ${e}.`); + return na; + } + this._pendingRefs.put(e); + try { + i = i.uncompressed + ? this.fetchUncompressed(e, i, t) + : this.fetchCompressed(e, i, t); + this._pendingRefs.remove(e); + } catch (t) { + this._pendingRefs.remove(e); + throw t; + } + i instanceof Dict + ? (i.objId = e.toString()) + : i instanceof BaseStream && (i.dict.objId = e.toString()); + return i; + } + fetchUncompressed(e, t, a = !1) { + const r = e.gen; + let i = e.num; + if (t.gen !== r) { + const n = `Inconsistent generation in XRef: ${e}`; + if (this._generationFallback && t.gen < r) { + warn(n); + return this.fetchUncompressed(Ref.get(i, t.gen), t, a); + } + throw new XRefEntryException(n); + } + const n = this.stream.makeSubStream(t.offset + this.stream.start), + s = new Parser({ lexer: new Lexer(n), xref: this, allowStreams: !0 }), + o = s.getObj(), + c = s.getObj(), + l = s.getObj(); + if (o !== i || c !== r || !(l instanceof Cmd)) + throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${e}`); + if ("obj" !== l.cmd) { + if (l.cmd.startsWith("obj")) { + i = parseInt(l.cmd.substring(3), 10); + if (!Number.isNaN(i)) return i; + } + throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${e}`); + } + (t = + this.encrypt && !a + ? s.getObj(this.encrypt.createCipherTransform(i, r)) + : s.getObj()) instanceof BaseStream || this._cacheMap.set(i, t); + return t; + } + fetchCompressed(e, t, a = !1) { + const r = t.offset, + i = this.fetch(Ref.get(r, 0)); + if (!(i instanceof BaseStream)) throw new FormatError("bad ObjStm stream"); + const n = i.dict.get("First"), + s = i.dict.get("N"); + if (!Number.isInteger(n) || !Number.isInteger(s)) + throw new FormatError("invalid first and n parameters for ObjStm stream"); + let o = new Parser({ lexer: new Lexer(i), xref: this, allowStreams: !0 }); + const c = new Array(s), + l = new Array(s); + for (let e = 0; e < s; ++e) { + const t = o.getObj(); + if (!Number.isInteger(t)) + throw new FormatError( + `invalid object number in the ObjStm stream: ${t}`, + ); + const a = o.getObj(); + if (!Number.isInteger(a)) + throw new FormatError( + `invalid object offset in the ObjStm stream: ${a}`, + ); + c[e] = t; + const i = this.getEntry(t); + i?.offset === r && i.gen !== e && (i.gen = e); + l[e] = a; + } + const h = (i.start || 0) + n, + u = new Array(s); + for (let e = 0; e < s; ++e) { + const t = e < s - 1 ? l[e + 1] - l[e] : void 0; + if (t < 0) throw new FormatError("Invalid offset in the ObjStm stream."); + o = new Parser({ + lexer: new Lexer(i.makeSubStream(h + l[e], t, i.dict)), + xref: this, + allowStreams: !0, + }); + const a = o.getObj(); + u[e] = a; + if (a instanceof BaseStream) continue; + const n = c[e], + d = this.entries[n]; + d && d.offset === r && d.gen === e && this._cacheMap.set(n, a); + } + if (void 0 === (t = u[t.gen])) + throw new XRefEntryException(`Bad (compressed) XRef entry: ${e}`); + return t; + } + async fetchIfRefAsync(e, t) { + return e instanceof Ref ? this.fetchAsync(e, t) : e; + } + async fetchAsync(e, t) { + try { + return this.fetch(e, t); + } catch (a) { + if (!(a instanceof MissingDataException)) throw a; + await this.pdfManager.requestRange(a.begin, a.end); + return this.fetchAsync(e, t); + } + } + getCatalogObj() { + return this.root; + } +} +const sc = [0, 0, 612, 792]; +class Page { + #at = !1; + #rt = null; + constructor({ + pdfManager: e, + xref: t, + pageIndex: a, + pageDict: r, + ref: i, + globalIdFactory: n, + fontCache: s, + builtInCMapCache: o, + standardFontDataCache: c, + globalColorSpaceCache: l, + globalImageCache: h, + systemFontCache: u, + nonBlendModesSet: d, + xfaFactory: f, + }) { + this.pdfManager = e; + this.pageIndex = a; + this.pageDict = r; + this.xref = t; + this.ref = i; + this.fontCache = s; + this.builtInCMapCache = o; + this.standardFontDataCache = c; + this.globalColorSpaceCache = l; + this.globalImageCache = h; + this.systemFontCache = u; + this.nonBlendModesSet = d; + this.evaluatorOptions = e.evaluatorOptions; + this.xfaFactory = f; + const g = { obj: 0 }; + this._localIdFactory = class extends n { + static createObjId() { + return `p${a}_${++g.obj}`; + } + static getPageObjId() { + return `p${i.toString()}`; + } + }; + } + #it(e) { + return new PartialEvaluator({ + xref: this.xref, + handler: e, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalColorSpaceCache: this.globalColorSpaceCache, + globalImageCache: this.globalImageCache, + systemFontCache: this.systemFontCache, + options: this.evaluatorOptions, + }); + } + #nt(e, t = !1) { + const a = getInheritableProperty({ + dict: this.pageDict, + key: e, + getArray: t, + stopWhenFound: !1, + }); + return Array.isArray(a) + ? 1 !== a.length && a[0] instanceof Dict + ? Dict.merge({ xref: this.xref, dictArray: a }) + : a[0] + : a; + } + get content() { + return this.pageDict.getArray("Contents"); + } + get resources() { + const e = this.#nt("Resources"); + return shadow(this, "resources", e instanceof Dict ? e : Dict.empty); + } + #st(e) { + if (this.xfaData) return this.xfaData.bbox; + const t = lookupNormalRect(this.#nt(e, !0), null); + if (t) { + if (t[2] - t[0] > 0 && t[3] - t[1] > 0) return t; + warn(`Empty, or invalid, /${e} entry.`); + } + return null; + } + get mediaBox() { + return shadow(this, "mediaBox", this.#st("MediaBox") || sc); + } + get cropBox() { + return shadow(this, "cropBox", this.#st("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 a = Util.intersect(e, t); + if (a && a[2] - a[0] > 0 && a[3] - a[1] > 0) + return shadow(this, "view", a); + warn("Empty /CropBox and /MediaBox intersection."); + } + return shadow(this, "view", t); + } + get rotate() { + let e = this.#nt("Rotate") || 0; + e % 90 != 0 + ? (e = 0) + : e >= 360 + ? (e %= 360) + : e < 0 && (e = ((e % 360) + 360) % 360); + return shadow(this, "rotate", e); + } + #ot(e, t) { + if (!this.evaluatorOptions.ignoreErrors) throw e; + warn(`getContentStream - ignoring sub-stream (${t}): "${e}".`); + } + async getContentStream() { + const e = await this.pdfManager.ensure(this, "content"); + return e instanceof BaseStream + ? e + : Array.isArray(e) + ? new StreamsSequenceStream(e, this.#ot.bind(this)) + : new NullStream(); + } + get xfaData() { + return shadow( + this, + "xfaData", + this.xfaFactory + ? { bbox: this.xfaFactory.getBoundingBox(this.pageIndex) } + : null, + ); + } + async #ct(e, t, a) { + const r = []; + for (const i of e) + if (i.id) { + const e = Ref.fromString(i.id); + if (!e) { + warn(`A non-linked annotation cannot be modified: ${i.id}`); + continue; + } + if (i.deleted) { + t.put(e, e); + if (i.popupRef) { + const e = Ref.fromString(i.popupRef); + e && t.put(e, e); + } + continue; + } + if (i.popup?.deleted) { + const e = Ref.fromString(i.popupRef); + e && t.put(e, e); + } + a?.put(e); + i.ref = e; + r.push( + this.xref.fetchAsync(e).then( + (e) => { + e instanceof Dict && (i.oldAnnotation = e.clone()); + }, + () => { + warn(`Cannot fetch \`oldAnnotation\` for: ${e}.`); + }, + ), + ); + delete i.id; + } + await Promise.all(r); + } + async saveNewAnnotations(e, t, a, r, i) { + if (this.xfaFactory) throw new Error("XFA: Cannot save new annotations."); + const n = this.#it(e), + s = new RefSetCache(), + o = new RefSet(); + await this.#ct(a, s, o); + const c = this.pageDict, + l = this.annotations.filter((e) => !(e instanceof Ref && s.has(e))), + h = await AnnotationFactory.saveNewAnnotations(n, t, a, r, i); + for (const { ref: e } of h.annotations) + e instanceof Ref && !o.has(e) && l.push(e); + const u = c.clone(); + u.set("Annots", l); + i.put(this.ref, { data: u }); + for (const e of s) i.put(e, { data: null }); + } + async save(e, t, a, r) { + const i = this.#it(e), + n = await this._parsedAnnotations, + s = []; + for (const e of n) + s.push( + e.save(i, t, a, r).catch(function (e) { + warn( + `save - ignoring annotation data during "${t.name}" task: "${e}".`, + ); + return null; + }), + ); + return Promise.all(s); + } + async loadResources(e) { + await (this.#rt ??= this.pdfManager.ensure(this, "resources")); + await ObjectLoader.load(this.resources, e, this.xref); + } + async #lt(e, t) { + const a = e?.get("Resources"); + if (!(a instanceof Dict && a.size)) return this.resources; + await ObjectLoader.load(a, t, this.xref); + return Dict.merge({ + xref: this.xref, + dictArray: [a, this.resources], + mergeSubDicts: !0, + }); + } + async getOperatorList({ + handler: e, + sink: t, + task: a, + intent: r, + cacheKey: i, + annotationStorage: c = null, + modifiedIds: d = null, + }) { + const g = this.getContentStream(), + p = this.loadResources(ga), + m = this.#it(e), + b = this.xfaFactory ? null : getNewAnnotationsMap(c), + y = b?.get(this.pageIndex); + let w = Promise.resolve(null), + x = null; + if (y) { + const e = this.pdfManager.ensureDoc("annotationGlobals"); + let t; + const r = new Set(); + for (const { bitmapId: e, bitmap: t } of y) + !e || t || r.has(e) || r.add(e); + const { isOffscreenCanvasSupported: i } = this.evaluatorOptions; + if (r.size > 0) { + const e = y.slice(); + for (const [t, a] of c) + t.startsWith(f) && a.bitmap && r.has(a.bitmapId) && e.push(a); + t = AnnotationFactory.generateImages(e, this.xref, i); + } else t = AnnotationFactory.generateImages(y, this.xref, i); + x = new RefSet(); + w = Promise.all([e, this.#ct(y, x, null)]).then(([e]) => + e ? AnnotationFactory.printNewAnnotations(e, m, a, y, t) : null, + ); + } + const S = Promise.all([g, p]).then(async ([n]) => { + const s = await this.#lt(n.dict, ga), + o = new OperatorList(r, t); + e.send("StartRenderPage", { + transparency: m.hasBlendModes(s, this.nonBlendModesSet), + pageIndex: this.pageIndex, + cacheKey: i, + }); + await m.getOperatorList({ + stream: n, + task: a, + resources: s, + operatorList: o, + }); + return o; + }); + let [k, C, v] = await Promise.all([S, this._parsedAnnotations, w]); + if (v) { + C = C.filter((e) => !(e.ref && x.has(e.ref))); + for (let e = 0, t = v.length; e < t; e++) { + const a = v[e]; + if (a.refToReplace) { + const r = C.findIndex( + (e) => e.ref && isRefsEqual(e.ref, a.refToReplace), + ); + if (r >= 0) { + C.splice(r, 1, a); + v.splice(e--, 1); + t--; + } + } + } + C = C.concat(v); + } + if (0 === C.length || r & h) { + k.flush(!0); + return { length: k.totalLength }; + } + const F = !!(r & l), + T = !!(r & u), + O = !!(r & n), + M = !!(r & s), + D = !!(r & o), + R = []; + for (const e of C) + (O || + (M && e.mustBeViewed(c, F) && e.mustBeViewedWhenEditing(T, d)) || + (D && e.mustBePrinted(c))) && + R.push( + e.getOperatorList(m, a, r, c).catch(function (e) { + warn( + `getOperatorList - ignoring annotation data during "${a.name}" task: "${e}".`, + ); + return { opList: null, separateForm: !1, separateCanvas: !1 }; + }), + ); + const N = await Promise.all(R); + let E = !1, + L = !1; + for (const { opList: e, separateForm: t, separateCanvas: a } of N) { + k.addOpList(e); + E ||= t; + L ||= a; + } + k.flush(!0, { form: E, canvas: L }); + return { length: k.totalLength }; + } + async extractTextContent({ + handler: e, + task: t, + includeMarkedContent: a, + disableNormalization: r, + sink: i, + intersector: n = null, + }) { + const s = this.getContentStream(), + o = this.loadResources(pa), + c = this.pdfManager.ensureCatalog("lang"), + [l, , h] = await Promise.all([s, o, c]), + u = await this.#lt(l.dict, pa); + return this.#it(e).getTextContent({ + stream: l, + task: t, + resources: u, + includeMarkedContent: a, + disableNormalization: r, + sink: i, + viewBox: this.view, + lang: h, + intersector: n, + }); + } + async getStructTree() { + const e = await this.pdfManager.ensureCatalog("structTreeRoot"); + if (!e) return null; + await this._parsedAnnotations; + try { + const t = await this.pdfManager.ensure(this, "_parseStructTree", [e]); + return await this.pdfManager.ensure(t, "serializable"); + } catch (e) { + warn(`getStructTree: "${e}".`); + return null; + } + } + _parseStructTree(e) { + const t = new StructTreePage(e, this.pageDict); + t.parse(this.ref); + return t; + } + async getAnnotationsData(e, t, a) { + const r = await this._parsedAnnotations; + if (0 === r.length) return r; + const i = [], + c = []; + let l; + const h = !!(a & n), + u = !!(a & s), + d = !!(a & o), + f = []; + for (const a of r) { + const r = h || (u && a.viewable); + (r || (d && a.printable)) && i.push(a.data); + if (a.hasTextContent && r) { + l ??= this.#it(e); + c.push( + a + .extractTextContent(l, t, [-1 / 0, -1 / 0, 1 / 0, 1 / 0]) + .catch(function (e) { + warn( + `getAnnotationsData - ignoring textContent during "${t.name}" task: "${e}".`, + ); + }), + ); + } else a.overlaysTextContent && r && f.push(a); + } + if (f.length > 0) { + const a = new Intersector(f); + c.push( + this.extractTextContent({ + handler: e, + task: t, + includeMarkedContent: !1, + disableNormalization: !1, + sink: null, + viewBox: this.view, + lang: null, + intersector: a, + }).then(() => { + a.setText(); + }), + ); + } + await Promise.all(c); + return i; + } + get annotations() { + const e = this.#nt("Annots"); + return shadow(this, "annotations", Array.isArray(e) ? e : []); + } + get _parsedAnnotations() { + const e = this.pdfManager.ensure(this, "annotations").then(async (e) => { + if (0 === e.length) return e; + const [t, a] = await Promise.all([ + this.pdfManager.ensureDoc("annotationGlobals"), + this.pdfManager.ensureDoc("fieldObjects"), + ]); + if (!t) return []; + const r = a?.orphanFields, + i = []; + for (const a of e) + i.push( + AnnotationFactory.create( + this.xref, + a, + t, + this._localIdFactory, + !1, + r, + null, + this.ref, + ).catch(function (e) { + warn(`_parsedAnnotations: "${e}".`); + return null; + }), + ); + const n = []; + let s, o; + for (const e of await Promise.all(i)) + e && + (e instanceof WidgetAnnotation + ? (o ||= []).push(e) + : e instanceof PopupAnnotation + ? (s ||= []).push(e) + : n.push(e)); + o && n.push(...o); + s && n.push(...s); + return n; + }); + this.#at = !0; + return shadow(this, "_parsedAnnotations", e); + } + get jsActions() { + return shadow( + this, + "jsActions", + collectActions(this.xref, this.pageDict, se), + ); + } + async collectAnnotationsByType(e, t, a, r, i) { + const { pageIndex: n } = this; + if (this.#at) { + const e = await this._parsedAnnotations; + for (const { data: t } of e) + if (!a || a.has(t.annotationType)) { + t.pageIndex = n; + r.push(Promise.resolve(t)); + } + return; + } + const s = await this.pdfManager.ensure(this, "annotations"); + for (const o of s) + r.push( + AnnotationFactory.create( + this.xref, + o, + i, + this._localIdFactory, + !1, + null, + a, + this.ref, + ) + .then(async (a) => { + if (!a) return null; + a.data.pageIndex = n; + if (a.hasTextContent && a.viewable) { + const r = this.#it(e); + await a.extractTextContent(r, t, [-1 / 0, -1 / 0, 1 / 0, 1 / 0]); + } + return a.data; + }) + .catch(function (e) { + warn(`collectAnnotationsByType: "${e}".`); + return null; + }), + ); + } +} +const oc = new Uint8Array([37, 80, 68, 70, 45]), + cc = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]), + lc = new Uint8Array([101, 110, 100, 111, 98, 106]); +function find(e, t, a = 1024, r = !1) { + const i = t.length, + n = e.peekBytes(a), + s = n.length - i; + if (s <= 0) return !1; + if (r) { + const a = i - 1; + let r = n.length - 1; + for (; r >= a; ) { + let s = 0; + for (; s < i && n[r - s] === t[a - s]; ) s++; + if (s >= i) { + e.pos += r - a; + return !0; + } + r--; + } + } else { + let a = 0; + for (; a <= s; ) { + let r = 0; + for (; r < i && n[a + r] === t[r]; ) r++; + if (r >= i) { + e.pos += a; + return !0; + } + a++; + } + } + return !1; +} +class PDFDocument { + #ht = new Map(); + #ut = null; + 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); + const a = { font: 0 }; + this._globalIdFactory = class { + static getDocId() { + return `g_${e.docId}`; + } + static createFontId() { + return "f" + ++a.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, lc)) { + e.skip(6); + let a = e.peekByte(); + for (; isWhiteSpace(a); ) { + e.pos++; + a = e.peekByte(); + } + t = e.pos - e.start; + } + } else { + const a = 1024, + r = cc.length; + let i = !1, + n = e.end; + for (; !i && n > 0; ) { + n -= a - r; + n < 0 && (n = 0); + e.pos = n; + i = find(e, cc, a, !0); + } + if (i) { + e.skip(9); + let a; + do { + a = e.getByte(); + } while (isWhiteSpace(a)); + let r = ""; + for (; a >= 32 && a <= 57; ) { + r += String.fromCharCode(a); + a = e.getByte(); + } + t = parseInt(r, 10); + isNaN(t) && (t = 0); + } + } + return shadow(this, "startXRef", t); + } + checkHeader() { + const e = this.stream; + e.reset(); + if (!find(e, oc)) return; + e.moveStart(); + e.skip(oc.length); + let t, + a = ""; + for (; (t = e.getByte()) > 32 && a.length < 7; ) + a += String.fromCharCode(t); + ua.test(a) ? (this.#ut = a) : warn(`Invalid PDF header version: ${a}`); + } + 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); + } + #dt(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.#dt(e.get("Kids"), t); + } + const a = isName(e.get("FT"), "Sig"), + r = e.get("Rect"), + i = Array.isArray(r) && r.every((e) => 0 === e); + return a && i; + }) + ); + } + get _xfaStreams() { + const { acroForm: e } = this.catalog; + if (!e) return null; + const t = e.get("XFA"), + a = new Map( + [ + "xdp:xdp", + "template", + "datasets", + "config", + "connectionSet", + "localeSet", + "stylesheet", + "/xdp:xdp", + ].map((e) => [e, null]), + ); + if (t instanceof BaseStream && !t.isEmpty) { + a.set("xdp:xdp", t); + return a; + } + if (!Array.isArray(t) || 0 === t.length) return null; + for (let e = 0, r = t.length; e < r; e += 2) { + let i; + i = 0 === e ? "xdp:xdp" : e === r - 2 ? "/xdp:xdp" : t[e]; + if (!a.has(i)) continue; + const n = this.xref.fetchIfRef(t[e + 1]); + n instanceof BaseStream && !n.isEmpty && a.set(i, n); + } + return a; + } + get xfaDatasets() { + const e = this._xfaStreams; + if (!e) return shadow(this, "xfaDatasets", null); + for (const t of ["datasets", "xdp:xdp"]) { + const a = e.get(t); + if (a) + try { + const e = stringToUTF8String(a.getString()); + return shadow(this, "xfaDatasets", new DatasetReader({ [t]: e })); + } catch { + warn("XFA - Invalid utf-8 string."); + break; + } + } + return shadow(this, "xfaDatasets", null); + } + get xfaData() { + const e = this._xfaStreams; + if (!e) return null; + const t = Object.create(null); + for (const [a, r] of e) + if (r) + try { + t[a] = stringToUTF8String(r.getString()); + } catch { + warn("XFA - Invalid utf-8 string."); + return null; + } + return t; + } + get xfaFactory() { + let e; + this.pdfManager.enableXfa && + this.catalog.needsRendering && + this.formInfo.hasXfa && + !this.formInfo.hasAcroForm && + (e = this.xfaData); + return shadow(this, "xfaFactory", e ? new XFAFactory(e) : null); + } + get isPureXfa() { + return !!this.xfaFactory && this.xfaFactory.isValid(); + } + get htmlForXfa() { + return this.xfaFactory ? this.xfaFactory.getPages() : null; + } + async #ft() { + const e = await this.pdfManager.ensureCatalog("xfaImages"); + e && this.xfaFactory.setImages(e); + } + async #gt(e, t) { + const a = await this.pdfManager.ensureCatalog("acroForm"); + if (!a) return; + const r = await a.getAsync("DR"); + if (!(r instanceof Dict)) return; + await ObjectLoader.load(r, ["Font"], this.xref); + const i = r.get("Font"); + if (!(i instanceof Dict)) return; + const n = Object.assign( + Object.create(null), + this.pdfManager.evaluatorOptions, + { useSystemFonts: !1 }, + ), + { + builtInCMapCache: s, + fontCache: o, + standardFontDataCache: c, + } = this.catalog, + l = new PartialEvaluator({ + xref: this.xref, + handler: e, + pageIndex: -1, + idFactory: this._globalIdFactory, + fontCache: o, + builtInCMapCache: s, + standardFontDataCache: c, + options: n, + }), + h = new OperatorList(), + u = [], + d = { + get font() { + return u.at(-1); + }, + set font(e) { + u.push(e); + }, + clone() { + return this; + }, + }, + parseFont = (e, a, i) => + l.handleSetFont(r, [Name.get(e), 1], null, h, t, d, a, i).catch((e) => { + warn(`loadXfaFonts: "${e}".`); + return null; + }), + f = []; + for (const [e, t] of i) { + const a = t.get("FontDescriptor"); + if (!(a instanceof Dict)) continue; + let r = a.get("FontFamily"); + r = r.replaceAll(/[ ]+(\d)/g, "$1"); + const i = { + fontFamily: r, + fontWeight: a.get("FontWeight"), + italicAngle: -a.get("ItalicAngle"), + }; + validateCSSFont(i) && f.push(parseFont(e, null, i)); + } + await Promise.all(f); + const g = this.xfaFactory.setFonts(u); + if (!g) return; + n.ignoreErrors = !0; + f.length = 0; + u.length = 0; + const p = new Set(); + for (const e of g) getXfaFontName(`${e}-Regular`) || p.add(e); + p.size && g.push("PdfJS-Fallback"); + for (const e of g) + if (!p.has(e)) + for (const t of [ + { name: "Regular", fontWeight: 400, italicAngle: 0 }, + { name: "Bold", fontWeight: 700, italicAngle: 0 }, + { name: "Italic", fontWeight: 400, italicAngle: 12 }, + { name: "BoldItalic", fontWeight: 700, italicAngle: 12 }, + ]) { + const a = `${e}-${t.name}`; + f.push( + parseFont(a, getXfaFontDict(a), { + fontFamily: e, + fontWeight: t.fontWeight, + italicAngle: t.italicAngle, + }), + ); + } + await Promise.all(f); + this.xfaFactory.appendFonts(u, p); + } + loadXfaResources(e, t) { + return Promise.all([this.#gt(e, t).catch(() => {}), this.#ft()]); + } + serializeXfaData(e) { + return this.xfaFactory ? this.xfaFactory.serializeData(e) : null; + } + get version() { + return this.catalog.version || this.#ut; + } + get formInfo() { + const e = { hasFields: !1, hasAcroForm: !1, hasXfa: !1, hasSignatures: !1 }, + { acroForm: t } = this.catalog; + if (!t) return shadow(this, "formInfo", e); + try { + const a = t.get("Fields"), + r = Array.isArray(a) && a.length > 0; + e.hasFields = r; + const i = t.get("XFA"); + e.hasXfa = + (Array.isArray(i) && i.length > 0) || + (i instanceof BaseStream && !i.isEmpty); + const n = !!(1 & t.get("SigFlags")), + s = n && this.#dt(a); + e.hasAcroForm = r && !s; + e.hasSignatures = n; + } catch (e) { + if (e instanceof MissingDataException) throw e; + warn(`Cannot fetch form information: "${e}".`); + } + return shadow(this, "formInfo", e); + } + get documentInfo() { + const { catalog: e, formInfo: t, xref: a } = this, + r = { + PDFFormatVersion: this.version, + Language: e.lang, + EncryptFilterName: a.encrypt?.filterName ?? null, + IsLinearized: !!this.linearization, + IsAcroFormPresent: t.hasAcroForm, + IsXFAPresent: t.hasXfa, + IsCollectionPresent: !!e.collection, + IsSignaturesPresent: t.hasSignatures, + }; + let i; + try { + i = a.trailer.get("Info"); + } catch (e) { + if (e instanceof MissingDataException) throw e; + info("The document information dictionary is invalid."); + } + if (!(i instanceof Dict)) return shadow(this, "documentInfo", r); + for (const [e, t] of i) { + switch (e) { + case "Title": + case "Author": + case "Subject": + case "Keywords": + case "Creator": + case "Producer": + case "CreationDate": + case "ModDate": + if ("string" == typeof t) { + r[e] = stringToPDFString(t); + continue; + } + break; + case "Trapped": + if (t instanceof Name) { + r[e] = t; + continue; + } + break; + default: + let a; + switch (typeof t) { + case "string": + a = stringToPDFString(t); + break; + case "number": + case "boolean": + a = t; + break; + default: + t instanceof Name && (a = t); + } + if (void 0 === a) { + warn(`Bad value, for custom key "${e}", in Info: ${t}.`); + continue; + } + r.Custom ??= Object.create(null); + r.Custom[e] = a; + continue; + } + warn(`Bad value, for key "${e}", in Info: ${t}.`); + } + return shadow(this, "documentInfo", r); + } + 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 a, r; + if (Array.isArray(t) && validate(t[0])) { + a = stringToBytes(t[0]); + t[1] !== t[0] && validate(t[1]) && (r = stringToBytes(t[1])); + } else a = calculateMD5(this.stream.getByteRange(0, 1024), 0, 1024); + return shadow(this, "fingerprints", [ + toHexUtil(a), + r ? toHexUtil(r) : null, + ]); + } + async #pt(e) { + const { catalog: t, linearization: a, xref: r } = this, + i = Ref.get(a.objectNumberFirst, 0); + try { + const e = await r.fetchAsync(i); + if (e instanceof Dict) { + let a = e.getRaw("Type"); + a instanceof Ref && (a = await r.fetchAsync(a)); + if ( + isName(a, "Page") || + (!e.has("Type") && !e.has("Kids") && e.has("Contents")) + ) { + t.pageKidsCountCache.has(i) || t.pageKidsCountCache.put(i, 1); + t.pageIndexCache.has(i) || t.pageIndexCache.put(i, 0); + return [e, i]; + } + } + throw new FormatError( + "The Linearization dictionary doesn't point to a valid Page dictionary.", + ); + } catch (a) { + warn(`_getLinearizationPage: "${a.message}".`); + return t.getPageDict(e); + } + } + getPage(e) { + const t = this.#ht.get(e); + if (t) return t; + const { catalog: a, linearization: r, xfaFactory: i } = this; + let n; + n = i + ? Promise.resolve([Dict.empty, null]) + : r?.pageFirst === e + ? this.#pt(e) + : a.getPageDict(e); + n = n.then( + ([t, r]) => + new Page({ + pdfManager: this.pdfManager, + xref: this.xref, + pageIndex: e, + pageDict: t, + ref: r, + globalIdFactory: this._globalIdFactory, + fontCache: a.fontCache, + builtInCMapCache: a.builtInCMapCache, + standardFontDataCache: a.standardFontDataCache, + globalColorSpaceCache: a.globalColorSpaceCache, + globalImageCache: a.globalImageCache, + systemFontCache: a.systemFontCache, + nonBlendModesSet: a.nonBlendModesSet, + xfaFactory: i, + }), + ); + this.#ht.set(e, n); + return n; + } + async checkFirstPage(e = !1) { + if (!e) + try { + await this.getPage(0); + } catch (e) { + if (e instanceof XRefEntryException) { + this.#ht.delete(0); + await this.cleanup(); + throw new XRefParseException(); + } + } + } + async checkLastPage(e = !1) { + const { catalog: t, pdfManager: a } = this; + t.setActualNumPages(); + let r; + try { + await Promise.all([ + a.ensureDoc("xfaFactory"), + a.ensureDoc("linearization"), + a.ensureCatalog("numPages"), + ]); + if (this.xfaFactory) return; + r = this.linearization ? this.linearization.numPages : t.numPages; + if (!Number.isInteger(r)) + throw new FormatError("Page count is not an integer."); + if (r <= 1) return; + await this.getPage(r - 1); + } catch (i) { + this.#ht.delete(r - 1); + await this.cleanup(); + if (i instanceof XRefEntryException && !e) throw new XRefParseException(); + warn(`checkLastPage - invalid /Pages tree /Count: ${r}.`); + let n; + try { + n = await t.getAllPageDicts(e); + } catch (a) { + if (a instanceof XRefEntryException && !e) + throw new XRefParseException(); + t.setActualNumPages(1); + return; + } + for (const [e, [r, i]] of n) { + let n; + if (r instanceof Error) { + n = Promise.reject(r); + n.catch(() => {}); + } else + n = Promise.resolve( + new Page({ + pdfManager: a, + xref: this.xref, + pageIndex: e, + pageDict: r, + ref: i, + globalIdFactory: this._globalIdFactory, + fontCache: t.fontCache, + builtInCMapCache: t.builtInCMapCache, + standardFontDataCache: t.standardFontDataCache, + globalColorSpaceCache: this.globalColorSpaceCache, + globalImageCache: t.globalImageCache, + systemFontCache: t.systemFontCache, + nonBlendModesSet: t.nonBlendModesSet, + xfaFactory: null, + }), + ); + this.#ht.set(e, n); + } + t.setActualNumPages(n.size); + } + } + async fontFallback(e, t) { + const { catalog: a, pdfManager: r } = this; + for (const i of await Promise.all(a.fontCache)) + if (i.loadedName === e) { + i.fallback(t, r.evaluatorOptions); + return; + } + } + async cleanup(e = !1) { + return this.catalog ? this.catalog.cleanup(e) : clearGlobalCaches(); + } + async #mt(e, t, a, r, i, n, s) { + const { xref: o } = this; + if (!(a instanceof Ref) || n.has(a)) return; + n.put(a); + const c = await o.fetchAsync(a); + if (!(c instanceof Dict)) return; + let l = await c.getAsync("Subtype"); + l = l instanceof Name ? l.name : null; + if ("Link" === l) return; + if (c.has("T")) { + const t = stringToPDFString(await c.getAsync("T")); + e = "" === e ? t : `${e}.${t}`; + } else { + let a = c; + for (;;) { + a = a.getRaw("Parent") || t; + if (a instanceof Ref) { + if (n.has(a)) break; + a = await o.fetchAsync(a); + } + if (!(a instanceof Dict)) break; + if (a.has("T")) { + const t = stringToPDFString(await a.getAsync("T")); + e = "" === e ? t : `${e}.${t}`; + break; + } + } + } + t && !c.has("Parent") && isName(c.get("Subtype"), "Widget") && s.put(a, t); + r.has(e) || r.set(e, []); + r.get(e).push( + AnnotationFactory.create(o, a, i, null, !0, s, null, null) + .then((e) => e?.getFieldObject()) + .catch(function (e) { + warn(`#collectFieldObjects: "${e}".`); + return null; + }), + ); + if (!c.has("Kids")) return; + const h = await c.getAsync("Kids"); + if (Array.isArray(h)) + for (const t of h) await this.#mt(e, a, t, r, i, n, s); + } + get fieldObjects() { + return shadow( + this, + "fieldObjects", + this.pdfManager.ensureDoc("formInfo").then(async (e) => { + if (!e.hasFields) return null; + const t = await this.annotationGlobals; + if (!t) return null; + const { acroForm: a } = t, + r = new RefSet(), + i = Object.create(null), + n = new Map(), + s = new RefSetCache(); + for (const e of a.get("Fields")) + await this.#mt("", null, e, n, t, r, s); + const o = []; + for (const [e, t] of n) + o.push( + Promise.all(t).then((t) => { + (t = t.filter((e) => !!e)).length > 0 && (i[e] = t); + }), + ); + await Promise.all(o); + return { allFields: objectSize(i) > 0 ? i : null, orphanFields: s }; + }), + ); + } + 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?.allFields && + 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 a of e) a instanceof Ref && t.push(a.toString()); + return shadow(this, "calculationOrderIds", t.length ? t : null); + } + get annotationGlobals() { + return shadow( + this, + "annotationGlobals", + AnnotationFactory.createGlobals(this.pdfManager), + ); + } +} +class BasePdfManager { + constructor({ + docBaseUrl: e, + docId: t, + enableXfa: a, + evaluatorOptions: r, + handler: i, + password: n, + }) { + this._docBaseUrl = (function parseDocBaseUrl(e) { + if (e) { + const t = createValidAbsoluteUrl(e); + if (t) return t.href; + warn(`Invalid absolute docBaseUrl: "${e}".`); + } + return null; + })(e); + this._docId = t; + this._password = n; + this.enableXfa = a; + r.isOffscreenCanvasSupported &&= FeatureTest.isOffscreenCanvasSupported; + r.isImageDecoderSupported &&= FeatureTest.isImageDecoderSupported; + this.evaluatorOptions = Object.freeze(r); + ImageResizer.setOptions(r); + JpegStream.setOptions(r); + OperatorList.setOptions(r); + const s = { ...r, handler: i }; + JpxImage.setOptions(s); + IccColorSpace.setOptions(s); + CmykICCBasedCS.setOptions(s); + } + get docId() { + return this._docId; + } + get password() { + return this._password; + } + get docBaseUrl() { + return this._docBaseUrl; + } + 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); + } + cleanup(e = !1) { + return this.pdfDocument.cleanup(e); + } + async ensure(e, t, a) { + 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, a) { + const r = e[t]; + return "function" == typeof r ? r.apply(e, a) : r; + } + 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, a) { + try { + const r = e[t]; + return "function" == typeof r ? r.apply(e, a) : r; + } catch (r) { + if (!(r instanceof MissingDataException)) throw r; + await this.requestRange(r.begin, r.end); + return this.ensure(e, t, a); + } + } + 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 hc = 1, + uc = 2, + dc = 1, + fc = 2, + gc = 3, + pc = 4, + mc = 5, + bc = 6, + yc = 7, + wc = 8; +function onFn() {} +function wrapReason(e) { + if ( + e instanceof AbortException || + e instanceof InvalidPDFException || + e instanceof PasswordException || + e instanceof ResponseException || + 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 "PasswordException": + return new PasswordException(e.message, e.code); + case "ResponseException": + return new ResponseException(e.message, e.status, e.missing); + case "UnknownErrorException": + return new UnknownErrorException(e.message, e.details); + } + return new UnknownErrorException(e.message, e.toString()); +} +class MessageHandler { + #bt = new AbortController(); + constructor(e, t, a) { + this.sourceName = e; + this.targetName = t; + this.comObj = a; + 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); + a.addEventListener("message", this.#yt.bind(this), { + signal: this.#bt.signal, + }); + } + #yt({ data: e }) { + if (e.targetName !== this.sourceName) return; + if (e.stream) { + this.#wt(e); + return; + } + if (e.callback) { + const t = e.callbackId, + a = this.callbackCapabilities[t]; + if (!a) throw new Error(`Cannot resolve callback ${t}`); + delete this.callbackCapabilities[t]; + if (e.callback === hc) a.resolve(e.data); + else { + if (e.callback !== uc) throw new Error("Unexpected callback case"); + a.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 a = this.sourceName, + r = e.sourceName, + i = this.comObj; + Promise.try(t, e.data).then( + function (t) { + i.postMessage({ + sourceName: a, + targetName: r, + callback: hc, + callbackId: e.callbackId, + data: t, + }); + }, + function (t) { + i.postMessage({ + sourceName: a, + targetName: r, + callback: uc, + callbackId: e.callbackId, + reason: wrapReason(t), + }); + }, + ); + return; + } + e.streamId ? this.#xt(e) : t(e.data); + } + on(e, t) { + const a = this.actionHandler; + if (a[e]) throw new Error(`There is already an actionName called "${e}"`); + a[e] = t; + } + send(e, t, a) { + this.comObj.postMessage( + { + sourceName: this.sourceName, + targetName: this.targetName, + action: e, + data: t, + }, + a, + ); + } + sendWithPromise(e, t, a) { + const r = this.callbackId++, + i = Promise.withResolvers(); + this.callbackCapabilities[r] = i; + try { + this.comObj.postMessage( + { + sourceName: this.sourceName, + targetName: this.targetName, + action: e, + callbackId: r, + data: t, + }, + a, + ); + } catch (e) { + i.reject(e); + } + return i.promise; + } + sendWithStream(e, t, a, r) { + const i = this.streamId++, + n = this.sourceName, + s = this.targetName, + o = this.comObj; + return new ReadableStream( + { + start: (a) => { + const c = Promise.withResolvers(); + this.streamControllers[i] = { + controller: a, + startCall: c, + pullCall: null, + cancelCall: null, + isClosed: !1, + }; + o.postMessage( + { + sourceName: n, + targetName: s, + action: e, + streamId: i, + data: t, + desiredSize: a.desiredSize, + }, + r, + ); + return c.promise; + }, + pull: (e) => { + const t = Promise.withResolvers(); + this.streamControllers[i].pullCall = t; + o.postMessage({ + sourceName: n, + targetName: s, + stream: bc, + streamId: i, + desiredSize: e.desiredSize, + }); + return t.promise; + }, + cancel: (e) => { + assert(e instanceof Error, "cancel must have a valid reason"); + const t = Promise.withResolvers(); + this.streamControllers[i].cancelCall = t; + this.streamControllers[i].isClosed = !0; + o.postMessage({ + sourceName: n, + targetName: s, + stream: dc, + streamId: i, + reason: wrapReason(e), + }); + return t.promise; + }, + }, + a, + ); + } + #xt(e) { + const t = e.streamId, + a = this.sourceName, + r = e.sourceName, + i = this.comObj, + n = this, + s = this.actionHandler[e.action], + o = { + enqueue(e, n = 1, s) { + if (this.isCancelled) return; + const o = this.desiredSize; + this.desiredSize -= n; + if (o > 0 && this.desiredSize <= 0) { + this.sinkCapability = Promise.withResolvers(); + this.ready = this.sinkCapability.promise; + } + i.postMessage( + { sourceName: a, targetName: r, stream: pc, streamId: t, chunk: e }, + s, + ); + }, + close() { + if (!this.isCancelled) { + this.isCancelled = !0; + i.postMessage({ + sourceName: a, + targetName: r, + stream: gc, + streamId: t, + }); + delete n.streamSinks[t]; + } + }, + error(e) { + assert(e instanceof Error, "error must have a valid reason"); + if (!this.isCancelled) { + this.isCancelled = !0; + i.postMessage({ + sourceName: a, + targetName: r, + stream: mc, + streamId: t, + reason: wrapReason(e), + }); + } + }, + sinkCapability: Promise.withResolvers(), + onPull: null, + onCancel: null, + isCancelled: !1, + desiredSize: e.desiredSize, + ready: null, + }; + o.sinkCapability.resolve(); + o.ready = o.sinkCapability.promise; + this.streamSinks[t] = o; + Promise.try(s, e.data, o).then( + function () { + i.postMessage({ + sourceName: a, + targetName: r, + stream: wc, + streamId: t, + success: !0, + }); + }, + function (e) { + i.postMessage({ + sourceName: a, + targetName: r, + stream: wc, + streamId: t, + reason: wrapReason(e), + }); + }, + ); + } + #wt(e) { + const t = e.streamId, + a = this.sourceName, + r = e.sourceName, + i = this.comObj, + n = this.streamControllers[t], + s = this.streamSinks[t]; + switch (e.stream) { + case wc: + e.success + ? n.startCall.resolve() + : n.startCall.reject(wrapReason(e.reason)); + break; + case yc: + e.success + ? n.pullCall.resolve() + : n.pullCall.reject(wrapReason(e.reason)); + break; + case bc: + if (!s) { + i.postMessage({ + sourceName: a, + targetName: r, + stream: yc, + streamId: t, + success: !0, + }); + break; + } + s.desiredSize <= 0 && e.desiredSize > 0 && s.sinkCapability.resolve(); + s.desiredSize = e.desiredSize; + Promise.try(s.onPull || onFn).then( + function () { + i.postMessage({ + sourceName: a, + targetName: r, + stream: yc, + streamId: t, + success: !0, + }); + }, + function (e) { + i.postMessage({ + sourceName: a, + targetName: r, + stream: yc, + streamId: t, + reason: wrapReason(e), + }); + }, + ); + break; + case pc: + assert(n, "enqueue should have stream controller"); + if (n.isClosed) break; + n.controller.enqueue(e.chunk); + break; + case gc: + assert(n, "close should have stream controller"); + if (n.isClosed) break; + n.isClosed = !0; + n.controller.close(); + this.#St(n, t); + break; + case mc: + assert(n, "error should have stream controller"); + n.controller.error(wrapReason(e.reason)); + this.#St(n, t); + break; + case fc: + e.success + ? n.cancelCall.resolve() + : n.cancelCall.reject(wrapReason(e.reason)); + this.#St(n, t); + break; + case dc: + if (!s) break; + const o = wrapReason(e.reason); + Promise.try(s.onCancel || onFn, o).then( + function () { + i.postMessage({ + sourceName: a, + targetName: r, + stream: fc, + streamId: t, + success: !0, + }); + }, + function (e) { + i.postMessage({ + sourceName: a, + targetName: r, + stream: fc, + streamId: t, + reason: wrapReason(e), + }); + }, + ); + s.sinkCapability.reject(o); + s.isCancelled = !0; + delete this.streamSinks[t]; + break; + default: + throw new Error("Unexpected stream case"); + } + } + async #St(e, t) { + await Promise.allSettled([ + e.startCall?.promise, + e.pullCall?.promise, + e.cancelCall?.promise, + ]); + delete this.streamControllers[t]; + } + destroy() { + this.#bt?.abort(); + this.#bt = null; + } +} +async function writeObject(e, t, a, { encrypt: r = null }) { + const i = r?.createCipherTransform(e.num, e.gen); + a.push(`${e.num} ${e.gen} obj\n`); + t instanceof Dict + ? await writeDict(t, a, i) + : t instanceof BaseStream + ? await writeStream(t, a, i) + : (Array.isArray(t) || ArrayBuffer.isView(t)) && + (await writeArray(t, a, i)); + a.push("\nendobj\n"); +} +async function writeDict(e, t, a) { + t.push("<<"); + for (const r of e.getKeys()) { + t.push(` /${escapePDFName(r)} `); + await writeValue(e.getRaw(r), t, a); + } + t.push(">>"); +} +async function writeStream(e, t, a) { + let r = e.getBytes(); + const { dict: i } = e, + [n, s] = await Promise.all([ + i.getAsync("Filter"), + i.getAsync("DecodeParms"), + ]), + o = isName( + Array.isArray(n) ? await i.xref.fetchIfRefAsync(n[0]) : n, + "FlateDecode", + ); + if (r.length >= 256 || o) + try { + const e = new CompressionStream("deflate"), + t = e.writable.getWriter(); + await t.ready; + t.write(r) + .then(async () => { + await t.ready; + await t.close(); + }) + .catch(() => {}); + const a = await new Response(e.readable).arrayBuffer(); + r = new Uint8Array(a); + let c, l; + if (n) { + if (!o) { + c = Array.isArray(n) + ? [Name.get("FlateDecode"), ...n] + : [Name.get("FlateDecode"), n]; + s && (l = Array.isArray(s) ? [null, ...s] : [null, s]); + } + } else c = Name.get("FlateDecode"); + c && i.set("Filter", c); + l && i.set("DecodeParms", l); + } catch (e) { + info(`writeStream - cannot compress data: "${e}".`); + } + let c = bytesToString(r); + a && (c = a.encryptString(c)); + i.set("Length", c.length); + await writeDict(i, t, a); + t.push(" stream\n", c, "\nendstream"); +} +async function writeArray(e, t, a) { + t.push("["); + let r = !0; + for (const i of e) { + r ? (r = !1) : t.push(" "); + await writeValue(i, t, a); + } + t.push("]"); +} +async function writeValue(e, t, a) { + 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, a); + else if ("string" == typeof e) { + a && (e = a.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, a) + : e instanceof BaseStream + ? await writeStream(e, t, a) + : null === e + ? t.push("null") + : warn( + `Unhandled value in writer: ${typeof e}, please file a bug.`, + ); +} +function writeInt(e, t, a, r) { + for (let i = t + a - 1; i > a - 1; i--) { + r[i] = 255 & e; + e >>= 8; + } + return a + t; +} +function writeString(e, t, a) { + const r = e.length; + for (let i = 0; i < r; i++) a[t + i] = 255 & e.charCodeAt(i); + return t + r; +} +function updateXFA({ xfaData: e, xfaDatasetsRef: t, changes: a, xref: r }) { + if (null === e) { + e = (function writeXFADataForAcroform(e, t) { + const a = new SimpleXMLParser({ hasAttributes: !0 }).parseFromString(e); + for (const { xfa: e } of t) { + if (!e) continue; + const { path: t, value: r } = e; + if (!t) continue; + const i = parseXFAPath(t); + let n = a.documentElement.searchNode(i, 0); + !n && i.length > 1 && (n = a.documentElement.searchNode([i.at(-1)], 0)); + n + ? (n.childNodes = Array.isArray(r) + ? r.map((e) => new SimpleDOMNode("value", e)) + : [new SimpleDOMNode("#text", r)]) + : warn(`Node not found for path: ${t}`); + } + const r = []; + a.documentElement.dump(r); + return r.join(""); + })(r.fetchIfRef(t).getString(), a); + } + const i = new StringStream(e); + i.dict = new Dict(r); + i.dict.setIfName("Type", "EmbeddedFile"); + a.put(t, { data: i }); +} +function getIndexes(e) { + const t = []; + for (const { ref: a } of e) + a.num === t.at(-2) + t.at(-1) ? (t[t.length - 1] += 1) : t.push(a.num, 1); + return t; +} +function computeIDs(e, t, a) { + if (Array.isArray(t.fileIds) && t.fileIds.length > 0) { + const r = (function computeMD5(e, t) { + const a = Math.floor(Date.now() / 1e3), + r = t.filename || "", + i = [a.toString(), r, e.toString(), ...t.infoMap.values()], + n = Math.sumPrecise(i.map((e) => e.length)), + s = new Uint8Array(n); + let o = 0; + for (const e of i) o = writeString(e, o, s); + return bytesToString(calculateMD5(s, 0, s.length)); + })(e, t); + a.set("ID", [t.fileIds[0], r]); + } +} +async function incrementalUpdate({ + originalData: e, + xrefInfo: t, + changes: a, + xref: r = null, + hasXfa: i = !1, + xfaDatasetsRef: n = null, + hasXfaDatasetsEntry: s = !1, + needAppearances: o, + acroFormRef: c = null, + acroForm: l = null, + xfaData: h = null, + useXrefStream: u = !1, +}) { + await (async function updateAcroform({ + xref: e, + acroForm: t, + acroFormRef: a, + hasXfa: r, + hasXfaDatasetsEntry: i, + xfaDatasetsRef: n, + needAppearances: s, + changes: o, + }) { + !r || i || n || warn("XFA - Cannot save it"); + if (!s && (!r || !n || i)) return; + const c = t.clone(); + if (r && !i) { + const e = t.get("XFA").slice(); + e.splice(2, 0, "datasets"); + e.splice(3, 0, n); + c.set("XFA", e); + } + s && c.set("NeedAppearances", !0); + o.put(a, { data: c }); + })({ + xref: r, + acroForm: l, + acroFormRef: c, + hasXfa: i, + hasXfaDatasetsEntry: s, + xfaDatasetsRef: n, + needAppearances: o, + changes: a, + }); + i && updateXFA({ xfaData: h, xfaDatasetsRef: n, changes: a, xref: r }); + const d = (function getTrailerDict(e, t, a) { + const r = new Dict(null); + r.set("Prev", e.startXRef); + const i = e.newRef; + if (a) { + t.put(i, { data: "" }); + r.set("Size", i.num + 1); + r.setIfName("Type", "XRef"); + } else r.set("Size", i.num); + null !== e.rootRef && r.set("Root", e.rootRef); + null !== e.infoRef && r.set("Info", e.infoRef); + null !== e.encryptRef && r.set("Encrypt", e.encryptRef); + return r; + })(t, a, u), + f = [], + g = await (async function writeChanges(e, t, a = []) { + const r = []; + for (const [i, { data: n }] of e.items()) + if (null !== n && "string" != typeof n) { + await writeObject(i, n, a, t); + r.push({ ref: i, data: a.join("") }); + a.length = 0; + } else r.push({ ref: i, data: n }); + return r.sort((e, t) => e.ref.num - t.ref.num); + })(a, r, f); + let p = e.length; + const m = e.at(-1); + if (10 !== m && 13 !== m) { + f.push("\n"); + p += 1; + } + for (const { data: e } of g) null !== e && f.push(e); + await (u + ? (async function getXRefStreamTable(e, t, a, r, i) { + const n = []; + let s = 0, + o = 0; + for (const { ref: e, data: r } of a) { + let a; + s = Math.max(s, t); + if (null !== r) { + a = Math.min(e.gen, 65535); + n.push([1, t, a]); + t += r.length; + } else { + a = Math.min(e.gen + 1, 65535); + n.push([0, 0, a]); + } + o = Math.max(o, a); + } + r.set("Index", getIndexes(a)); + const c = [1, getSizeInBytes(s), getSizeInBytes(o)]; + r.set("W", c); + computeIDs(t, e, r); + const l = Math.sumPrecise(c), + h = new Uint8Array(l * n.length), + u = new Stream(h); + u.dict = r; + let d = 0; + for (const [e, t, a] of n) { + d = writeInt(e, c[0], d, h); + d = writeInt(t, c[1], d, h); + d = writeInt(a, c[2], d, h); + } + await writeObject(e.newRef, u, i, {}); + i.push("startxref\n", t.toString(), "\n%%EOF\n"); + })(t, p, g, d, f) + : (async function getXRefTable(e, t, a, r, i) { + i.push("xref\n"); + const n = getIndexes(a); + let s = 0; + for (const { ref: e, data: r } of a) { + if (e.num === n[s]) { + i.push(`${n[s]} ${n[s + 1]}\n`); + s += 2; + } + if (null !== r) { + i.push( + `${t.toString().padStart(10, "0")} ${Math.min(e.gen, 65535).toString().padStart(5, "0")} n\r\n`, + ); + t += r.length; + } else + i.push( + `0000000000 ${Math.min(e.gen + 1, 65535) + .toString() + .padStart(5, "0")} f\r\n`, + ); + } + computeIDs(t, e, r); + i.push("trailer\n"); + await writeDict(r, i); + i.push("\nstartxref\n", t.toString(), "\n%%EOF\n"); + })(t, p, g, d, f)); + const b = e.length + Math.sumPrecise(f.map((e) => e.length)), + y = new Uint8Array(b); + y.set(e); + let w = e.length; + for (const e of f) w = writeString(e, w, y); + return y; +} +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 a = new PDFWorkerStreamRangeReader(e, t, this._msgHandler); + this._rangeRequestReaders.push(a); + return a; + } + 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, a) { + this._msgHandler = a; + this.onProgress = null; + const r = this._msgHandler.sendWithStream("GetRangeReader", { + begin: e, + end: t, + }); + this._reader = r.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 && + !e && + "undefined" != typeof self && + "function" == typeof self.postMessage && + "onmessage" in self && + this.initializeFromPort(self); + } + static setup(e, t) { + let a = !1; + e.on("test", (t) => { + if (!a) { + a = !0; + e.send("test", t instanceof Uint8Array); + } + }); + e.on("configure", (e) => { + !(function setVerbosityLevel(e) { + Number.isInteger(e) && (Qt = e); + })(e.verbosity); + }); + e.on("GetDocRequest", (e) => this.createDocumentHandler(e, t)); + } + static createDocumentHandler(e, t) { + let a, + r = !1, + i = null; + const n = new Set(), + s = getVerbosityLevel(), + { docId: o, apiVersion: c } = e, + l = "5.4.394"; + if (c !== l) + throw new Error( + `The API version "${c}" does not match the Worker version "${l}".`, + ); + const buildMsg = (e, t) => + `The \`${e}.prototype\` contains unexpected enumerable property "${t}", thus breaking e.g. \`for...in\` iteration of ${e}s.`; + for (const e in {}) throw new Error(buildMsg("Object", e)); + for (const e in []) throw new Error(buildMsg("Array", e)); + const h = o + "_worker"; + let u = new MessageHandler(h, o, t); + function ensureNotTerminated() { + if (r) throw new Error("Worker was terminated"); + } + function startWorkerTask(e) { + n.add(e); + } + function finishWorkerTask(e) { + e.finish(); + n.delete(e); + } + async function loadDocument(e) { + await a.ensureDoc("checkHeader"); + await a.ensureDoc("parseStartXRef"); + await a.ensureDoc("parse", [e]); + await a.ensureDoc("checkFirstPage", [e]); + await a.ensureDoc("checkLastPage", [e]); + const t = await a.ensureDoc("isPureXfa"); + if (t) { + const e = new WorkerTask("loadXfaResources"); + startWorkerTask(e); + await a.ensureDoc("loadXfaResources", [u, e]); + finishWorkerTask(e); + } + const [r, i] = await Promise.all([ + a.ensureDoc("numPages"), + a.ensureDoc("fingerprints"), + ]); + return { + numPages: r, + fingerprints: i, + htmlForXfa: t ? await a.ensureDoc("htmlForXfa") : null, + }; + } + function setupDoc(e) { + function onSuccess(e) { + ensureNotTerminated(); + u.send("GetDoc", { pdfInfo: e }); + } + function onFailure(e) { + ensureNotTerminated(); + if (e instanceof PasswordException) { + const t = new WorkerTask(`PasswordException: response ${e.code}`); + startWorkerTask(t); + u.sendWithPromise("PasswordRequest", e) + .then(function ({ password: e }) { + finishWorkerTask(t); + a.updatePassword(e); + pdfManagerReady(); + }) + .catch(function () { + finishWorkerTask(t); + u.send("DocException", e); + }); + } else u.send("DocException", wrapReason(e)); + } + function pdfManagerReady() { + ensureNotTerminated(); + loadDocument(!1).then(onSuccess, function (e) { + ensureNotTerminated(); + e instanceof XRefParseException + ? a.requestLoadedStream().then(function () { + ensureNotTerminated(); + loadDocument(!0).then(onSuccess, onFailure); + }) + : onFailure(e); + }); + } + ensureNotTerminated(); + (async function getPdfManager({ + data: e, + password: t, + disableAutoFetch: a, + rangeChunkSize: r, + length: n, + docBaseUrl: s, + enableXfa: c, + evaluatorOptions: l, + }) { + const h = { + source: null, + disableAutoFetch: a, + docBaseUrl: s, + docId: o, + enableXfa: c, + evaluatorOptions: l, + handler: u, + length: n, + password: t, + rangeChunkSize: r, + }; + if (e) { + h.source = e; + return new LocalPdfManager(h); + } + const d = new PDFWorkerStream(u), + f = d.getFullReader(), + g = Promise.withResolvers(); + let p, + m = [], + b = 0; + f.headersReady + .then(function () { + if (f.isRangeSupported) { + h.source = d; + h.length = f.contentLength; + h.disableAutoFetch ||= f.isStreamingSupported; + p = new NetworkPdfManager(h); + for (const e of m) p.sendProgressiveData(e); + m = []; + g.resolve(p); + i = null; + } + }) + .catch(function (e) { + g.reject(e); + i = null; + }); + new Promise(function (e, t) { + const readChunk = function ({ value: e, done: a }) { + try { + ensureNotTerminated(); + if (a) { + if (!p) { + const e = arrayBuffersToBytes(m); + m = []; + n && + e.length !== n && + warn("reported HTTP length is different from actual"); + h.source = e; + p = new LocalPdfManager(h); + g.resolve(p); + } + i = null; + return; + } + b += e.byteLength; + f.isStreamingSupported || + u.send("DocProgress", { + loaded: b, + total: Math.max(b, f.contentLength || 0), + }); + p ? p.sendProgressiveData(e) : m.push(e); + f.read().then(readChunk, t); + } catch (e) { + t(e); + } + }; + f.read().then(readChunk, t); + }).catch(function (e) { + g.reject(e); + i = null; + }); + i = (e) => { + d.cancelAllRequests(e); + }; + return g.promise; + })(e) + .then(function (e) { + if (r) { + e.terminate(new AbortException("Worker was terminated.")); + throw new Error("Worker was terminated"); + } + a = e; + a.requestLoadedStream(!0).then((e) => { + u.send("DataLoaded", { length: e.bytes.byteLength }); + }); + }) + .then(pdfManagerReady, onFailure); + } + u.on("GetPage", function (e) { + return a.getPage(e.pageIndex).then(function (e) { + return Promise.all([ + a.ensure(e, "rotate"), + a.ensure(e, "ref"), + a.ensure(e, "userUnit"), + a.ensure(e, "view"), + ]).then(function ([e, t, a, r]) { + return { + rotate: e, + ref: t, + refStr: t?.toString() ?? null, + userUnit: a, + view: r, + }; + }); + }); + }); + u.on("GetPageIndex", function (e) { + const t = Ref.get(e.num, e.gen); + return a.ensureCatalog("getPageIndex", [t]); + }); + u.on("GetDestinations", function (e) { + return a.ensureCatalog("destinations"); + }); + u.on("GetDestination", function (e) { + return a.ensureCatalog("getDestination", [e.id]); + }); + u.on("GetPageLabels", function (e) { + return a.ensureCatalog("pageLabels"); + }); + u.on("GetPageLayout", function (e) { + return a.ensureCatalog("pageLayout"); + }); + u.on("GetPageMode", function (e) { + return a.ensureCatalog("pageMode"); + }); + u.on("GetViewerPreferences", function (e) { + return a.ensureCatalog("viewerPreferences"); + }); + u.on("GetOpenAction", function (e) { + return a.ensureCatalog("openAction"); + }); + u.on("GetAttachments", function (e) { + return a.ensureCatalog("attachments"); + }); + u.on("GetDocJSActions", function (e) { + return a.ensureCatalog("jsActions"); + }); + u.on("GetPageJSActions", function ({ pageIndex: e }) { + return a.getPage(e).then((e) => a.ensure(e, "jsActions")); + }); + u.on( + "GetAnnotationsByType", + async function ({ types: e, pageIndexesToSkip: t }) { + const [r, i] = await Promise.all([ + a.ensureDoc("numPages"), + a.ensureDoc("annotationGlobals"), + ]); + if (!i) return null; + const n = [], + s = []; + let o = null; + try { + for (let c = 0, l = r; c < l; c++) + if (!t?.has(c)) { + if (!o) { + o = new WorkerTask("GetAnnotationsByType"); + startWorkerTask(o); + } + n.push( + a + .getPage(c) + .then( + async (t) => + (t && t.collectAnnotationsByType(u, o, e, s, i)) || [], + ), + ); + } + await Promise.all(n); + return (await Promise.all(s)).filter((e) => !!e); + } finally { + o && finishWorkerTask(o); + } + }, + ); + u.on("GetOutline", function (e) { + return a.ensureCatalog("documentOutline"); + }); + u.on("GetOptionalContentConfig", function (e) { + return a.ensureCatalog("optionalContentConfig"); + }); + u.on("GetPermissions", function (e) { + return a.ensureCatalog("permissions"); + }); + u.on("GetMetadata", function (e) { + return Promise.all([ + a.ensureDoc("documentInfo"), + a.ensureCatalog("metadata"), + ]); + }); + u.on("GetMarkInfo", function (e) { + return a.ensureCatalog("markInfo"); + }); + u.on("GetData", function (e) { + return a.requestLoadedStream().then((e) => e.bytes); + }); + u.on("GetAnnotations", function ({ pageIndex: e, intent: t }) { + return a.getPage(e).then(function (a) { + const r = new WorkerTask(`GetAnnotations: page ${e}`); + startWorkerTask(r); + return a.getAnnotationsData(u, r, t).then( + (e) => { + finishWorkerTask(r); + return e; + }, + (e) => { + finishWorkerTask(r); + throw e; + }, + ); + }); + }); + u.on("GetFieldObjects", function (e) { + return a.ensureDoc("fieldObjects").then((e) => e?.allFields || null); + }); + u.on("HasJSActions", function (e) { + return a.ensureDoc("hasJSActions"); + }); + u.on("GetCalculationOrderIds", function (e) { + return a.ensureDoc("calculationOrderIds"); + }); + u.on( + "SaveDocument", + async function ({ + isPureXfa: e, + numPages: t, + annotationStorage: r, + filename: i, + }) { + const n = [ + a.requestLoadedStream(), + a.ensureCatalog("acroForm"), + a.ensureCatalog("acroFormRef"), + a.ensureDoc("startXRef"), + a.ensureDoc("xref"), + a.ensureCatalog("structTreeRoot"), + ], + s = new RefSetCache(), + o = [], + c = e ? null : getNewAnnotationsMap(r), + [l, h, d, f, g, p] = await Promise.all(n), + m = g.trailer.getRaw("Root") || null; + let b; + if (c) { + p + ? (await p.canUpdateStructTree({ + pdfManager: a, + newAnnotationsByPage: c, + })) && (b = p) + : (await StructTreeRoot.canCreateStructureTree({ + catalogRef: m, + pdfManager: a, + newAnnotationsByPage: c, + })) && (b = null); + const e = AnnotationFactory.generateImages( + r.values(), + g, + a.evaluatorOptions.isOffscreenCanvasSupported, + ), + t = void 0 === b ? o : []; + for (const [r, i] of c) + t.push( + a.getPage(r).then((t) => { + const a = new WorkerTask(`Save (editor): page ${r}`); + startWorkerTask(a); + return t.saveNewAnnotations(u, a, i, e, s).finally(function () { + finishWorkerTask(a); + }); + }), + ); + null === b + ? o.push( + Promise.all(t).then(async () => { + await StructTreeRoot.createStructureTree({ + newAnnotationsByPage: c, + xref: g, + catalogRef: m, + pdfManager: a, + changes: s, + }); + }), + ) + : b && + o.push( + Promise.all(t).then(async () => { + await b.updateStructureTree({ + newAnnotationsByPage: c, + pdfManager: a, + changes: s, + }); + }), + ); + } + if (e) o.push(a.ensureDoc("serializeXfaData", [r])); + else + for (let e = 0; e < t; e++) + o.push( + a.getPage(e).then(function (t) { + const a = new WorkerTask(`Save: page ${e}`); + startWorkerTask(a); + return t.save(u, a, r, s).finally(function () { + finishWorkerTask(a); + }); + }), + ); + const y = await Promise.all(o); + let w = null; + if (e) { + w = y[0]; + if (!w) return l.bytes; + } else if (0 === s.size) return l.bytes; + const x = + d && h instanceof Dict && s.values().some((e) => e.needAppearances), + S = (h instanceof Dict && h.get("XFA")) || null; + let k = null, + C = !1; + if (Array.isArray(S)) { + for (let e = 0, t = S.length; e < t; e += 2) + if ("datasets" === S[e]) { + k = S[e + 1]; + C = !0; + } + null === k && (k = g.getNewTemporaryRef()); + } else S && warn("Unsupported XFA type."); + let v = Object.create(null); + if (g.trailer) { + const e = new Map(), + t = g.trailer.get("Info") || null; + if (t instanceof Dict) + for (const [a, r] of t) + "string" == typeof r && e.set(a, stringToPDFString(r)); + v = { + rootRef: m, + encryptRef: g.trailer.getRaw("Encrypt") || null, + newRef: g.getNewTemporaryRef(), + infoRef: g.trailer.getRaw("Info") || null, + infoMap: e, + fileIds: g.trailer.get("ID") || null, + startXRef: f, + filename: i, + }; + } + return incrementalUpdate({ + originalData: l.bytes, + xrefInfo: v, + changes: s, + xref: g, + hasXfa: !!S, + xfaDatasetsRef: k, + hasXfaDatasetsEntry: C, + needAppearances: x, + acroFormRef: d, + acroForm: h, + xfaData: w, + useXrefStream: isDict(g.topDict, "XRef"), + }).finally(() => { + g.resetNewTemporaryRef(); + }); + }, + ); + u.on("GetOperatorList", function (e, t) { + const r = e.pageIndex; + a.getPage(r).then(function (a) { + const i = new WorkerTask(`GetOperatorList: page ${r}`); + startWorkerTask(i); + const n = s >= ce ? Date.now() : 0; + a.getOperatorList({ + handler: u, + sink: t, + task: i, + intent: e.intent, + cacheKey: e.cacheKey, + annotationStorage: e.annotationStorage, + modifiedIds: e.modifiedIds, + }).then( + function (e) { + finishWorkerTask(i); + n && + info( + `page=${r + 1} - getOperatorList: time=${Date.now() - n}ms, len=${e.length}`, + ); + t.close(); + }, + function (e) { + finishWorkerTask(i); + i.terminated || t.error(e); + }, + ); + }); + }); + u.on("GetTextContent", function (e, t) { + const { + pageIndex: r, + includeMarkedContent: i, + disableNormalization: n, + } = e; + a.getPage(r).then(function (e) { + const a = new WorkerTask("GetTextContent: page " + r); + startWorkerTask(a); + const o = s >= ce ? Date.now() : 0; + e.extractTextContent({ + handler: u, + task: a, + sink: t, + includeMarkedContent: i, + disableNormalization: n, + }).then( + function () { + finishWorkerTask(a); + o && + info( + `page=${r + 1} - getTextContent: time=` + + (Date.now() - o) + + "ms", + ); + t.close(); + }, + function (e) { + finishWorkerTask(a); + a.terminated || t.error(e); + }, + ); + }); + }); + u.on("GetStructTree", function (e) { + return a.getPage(e.pageIndex).then((e) => a.ensure(e, "getStructTree")); + }); + u.on("FontFallback", function (e) { + return a.fontFallback(e.id, u); + }); + u.on("Cleanup", function (e) { + return a.cleanup(!0); + }); + u.on("Terminate", function (e) { + r = !0; + const t = []; + if (a) { + a.terminate(new AbortException("Worker was terminated.")); + const e = a.cleanup(); + t.push(e); + a = null; + } else clearGlobalCaches(); + i?.(new AbortException("Worker was terminated.")); + for (const e of n) { + t.push(e.finished); + e.terminate(); + } + return Promise.all(t).then(function () { + u.destroy(); + u = null; + }); + }); + u.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); + } +} +globalThis.pdfjsWorker = { WorkerMessageHandler }; +export { WorkerMessageHandler }; diff --git a/frontend/web/src/app/authentication/layout.tsx b/frontend/web/src/app/authentication/layout.tsx index bfb7455..9993e1f 100644 --- a/frontend/web/src/app/authentication/layout.tsx +++ b/frontend/web/src/app/authentication/layout.tsx @@ -1,31 +1,33 @@ -'use client'; +"use client"; -import Image from 'next/image'; +import Image from "next/image"; import { Animation } from "@/component/ui/animation-robotAi"; -export default function AuthLayout({ children }: { children: React.ReactNode }) { - return ( -
- {/* --- Partie gauche : fond bleu + logo textuel + robot --- */} -
-
- {/* Logo textuel */} - Logo StudyAI - -
-
- - {/* --- Partie droite : contenu dynamique (login/register) --- */} -
-
- {children} -
-
+export default function AuthLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( +
+ {/* --- Partie gauche : fond bleu + logo textuel + robot --- */} +
+
+ {/* Logo textuel */} + Logo StudyAI +
- ); +
+ + {/* --- Partie droite : contenu dynamique (login/register) --- */} +
+
{children}
+
+
+ ); } diff --git a/frontend/web/src/app/authentication/login/page.tsx b/frontend/web/src/app/authentication/login/page.tsx index b2af388..16af11a 100644 --- a/frontend/web/src/app/authentication/login/page.tsx +++ b/frontend/web/src/app/authentication/login/page.tsx @@ -1,98 +1,116 @@ -'use client'; +"use client"; -import { useRouter } from 'next/navigation'; -import { useState } from 'react'; -import { Button } from '@/component/ui/button'; -import { Input } from '@/component/ui/input'; -import { Label } from '@/component/ui/label'; -import { Mail} from 'lucide-react'; -import PasswordInput from "@/component/ui/password-input"; -import { login, type LoginRequest, type LoginSuccess, type LoginError } from '@/lib/api/auth'; -import { saveUser } from '@/lib/session'; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { Button } from "@/component/ui/button"; +import { Input } from "@/component/ui/input"; +import { Label } from "@/component/ui/label"; +import { Mail } from "lucide-react"; +import PasswordInput from "@/component/ui/password-input"; +import { + login, + // type LoginRequest, + type LoginSuccess, + // type LoginError, +} from "@/lib/api/auth"; +import { saveUser } from "@/lib/session"; export default function LoginPage() { - const router = useRouter(); - const [loading, setLoading] = useState(false); - const [err, setErr] = useState(null); - const handleSubmit = async (e: React.FormEvent) => { - e.preventDefault(); - setErr(null); - setLoading(true); - const email = (document.getElementById("email") as HTMLInputElement)?.value.trim(); - const password = (document.getElementById("mot-password") as HTMLInputElement)?.value; + const router = useRouter(); + const [loading, setLoading] = useState(false); + const [err, setErr] = useState(null); + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setErr(null); + setLoading(true); + const email = ( + document.getElementById("email") as HTMLInputElement + )?.value.trim(); + const password = ( + document.getElementById("mot-password") as HTMLInputElement + )?.value; try { - const res = await login({ email, password } as LoginRequest); + const res = await login({ email, password }); // le type de retour de `login` doit être typé + const u = res as LoginSuccess; // idéalement: tape `login` pour éviter ce cast - - // succès: on sauvegarde l'utilisateur minimal et on redirige - const u = res as LoginSuccess; - saveUser({ id: u.id, email: u.email, fullName: u.fullName }); + saveUser({ id: u.id, email: u.email, fullName: u.fullName }); + router.push("/dashboard/upload"); + } catch (e: unknown) { + const message = + e instanceof Error + ? e.message + : typeof e === "string" + ? e + : "Erreur réseau/serveur"; - router.push('/dashboard/upload'); - } catch (e: any) { - setErr(e?.message || "Erreur réseau/serveur"); - } finally { - setLoading(false); - } - }; + setErr(message); + } finally { + setLoading(false); + } +}; - return ( -
-

CONNEXION

+ return ( +
+

CONNEXION

-

- Heureux de vous revoir, entrez vos identifiants pour vous connecter -

+

+ Heureux de vous revoir, entrez vos identifiants pour vous connecter +

-
- {/* Email */} -
- -
- - -
-
+ + {/* Email */} +
+ +
+ + +
+
- {/* Password */} -
- -
+ {/* Password */} +
+ +
- {/* Forgot password */} - - {err &&

{err}

} + {/* Forgot password */} + + {err &&

{err}

} - {/* Submit button */} - -
+ {/* Submit button */} + + - {/* Sign up link */} -

- Vous n'avez pas de compte ?{' '} - - S'inscrire - -

-
- ); -} \ No newline at end of file + {/* Sign up link */} +

+ Vous n'avez pas de compte ?{" "} + + S'inscrire + +

+
+ ); +} diff --git a/frontend/web/src/app/authentication/register/page.tsx b/frontend/web/src/app/authentication/register/page.tsx index d768643..6ce5e09 100644 --- a/frontend/web/src/app/authentication/register/page.tsx +++ b/frontend/web/src/app/authentication/register/page.tsx @@ -1,26 +1,27 @@ -'use client'; +"use client"; -import { useState } from 'react'; -import { useRouter } from 'next/navigation'; -import { Button } from '@/component/ui/button'; -import { Input } from '@/component/ui/input'; -import { Label } from '@/component/ui/label'; -import { Mail, User } from 'lucide-react'; -import { signup, type SignupRequest } from '@/lib/api/auth'; +import { useState } from "react"; +import { useRouter } from "next/navigation"; +import { Button } from "@/component/ui/button"; +import { Input } from "@/component/ui/input"; +import { Label } from "@/component/ui/label"; +import { Mail, User } from "lucide-react"; +import { signup, type SignupRequest } from "@/lib/api/auth"; -type Field = 'fullName' | 'email' | 'password' | 'confirm' | 'general'; +type Field = "fullName" | "email" | "password" | "confirm" | "general"; type FieldErrors = Partial>; -const cn = (...c: (string | false | undefined)[]) => c.filter(Boolean).join(' '); +const cn = (...c: (string | false | undefined)[]) => + c.filter(Boolean).join(" "); export default function RegisterPage() { const router = useRouter(); // champs contrôlés - const [fullName, setFullName] = useState(''); - const [email, setEmail] = useState(''); - const [password, setPassword] = useState(''); - const [confirm, setConfirm] = useState(''); + const [fullName, setFullName] = useState(""); + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const [confirm, setConfirm] = useState(""); const [errors, setErrors] = useState({}); const [loading, setLoading] = useState(false); @@ -31,43 +32,57 @@ export default function RegisterPage() { const e: FieldErrors = {}; if (!partial || fullName) { - if (!fullName.trim()) e.fullName = 'Nom & prénoms requis.'; + if (!fullName.trim()) e.fullName = "Nom & prénoms requis."; } if (!partial || email) { - if (!email.trim()) e.email = 'Email requis.'; - else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) e.email = 'Email invalide.'; + if (!email.trim()) e.email = "Email requis."; + else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) + e.email = "Email invalide."; } if (!partial || password) { - if (!password) e.password = 'Mot de passe requis.'; - else if (password.length < 8) e.password = 'Au moins 8 caractères.'; + if (!password) e.password = "Mot de passe requis."; + else if (password.length < 8) e.password = "Au moins 8 caractères."; } if (!partial || confirm) { - if (!confirm) e.confirm = 'Confirmation requise.'; - else if (confirm !== password) e.confirm = 'Les mots de passe ne correspondent pas.'; + if (!confirm) e.confirm = "Confirmation requise."; + else if (confirm !== password) + e.confirm = "Les mots de passe ne correspondent pas."; } - setErrors(prev => ({ ...prev, ...e })); + setErrors((prev) => ({ ...prev, ...e })); return e; }; const onBlurField = (f: Field) => { // validation légère champ par champ - if (f === 'fullName') setErrors(s => ({ ...s, fullName: fullName.trim() ? '' : 'Nom & prénoms requis.' })); - if (f === 'email') { + if (f === "fullName") + setErrors((s) => ({ + ...s, + fullName: fullName.trim() ? "" : "Nom & prénoms requis.", + })); + if (f === "email") { const err = !email.trim() - ? 'Email requis.' + ? "Email requis." : !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email) - ? 'Email invalide.' - : ''; - setErrors(s => ({ ...s, email: err })); + ? "Email invalide." + : ""; + setErrors((s) => ({ ...s, email: err })); } - if (f === 'password') { - const err = !password ? 'Mot de passe requis.' : password.length < 8 ? 'Au moins 8 caractères.' : ''; - setErrors(s => ({ ...s, password: err })); + if (f === "password") { + const err = !password + ? "Mot de passe requis." + : password.length < 8 + ? "Au moins 8 caractères." + : ""; + setErrors((s) => ({ ...s, password: err })); } - if (f === 'confirm') { - const err = !confirm ? 'Confirmation requise.' : confirm !== password ? 'Les mots de passe ne correspondent pas.' : ''; - setErrors(s => ({ ...s, confirm: err })); + if (f === "confirm") { + const err = !confirm + ? "Confirmation requise." + : confirm !== password + ? "Les mots de passe ne correspondent pas." + : ""; + setErrors((s) => ({ ...s, confirm: err })); } }; @@ -81,24 +96,28 @@ export default function RegisterPage() { setLoading(true); try { - const payload: SignupRequest = { fullName: fullName.trim(), email: email.trim(), password }; + const payload: SignupRequest = { + fullName: fullName.trim(), + email: email.trim(), + password, + }; const res = await signup(payload); // Si le back renvoie { error } ou { fieldErrors: { email: ... } } const anyRes: any = res; if ((anyRes && anyRes.error) || (anyRes && anyRes.fieldErrors)) { setErrors({ - general: anyRes.error ?? '', + general: anyRes.error ?? "", ...anyRes.fieldErrors, }); return; } - setOk(res.message ?? 'Inscription réussie !'); - setTimeout(() => router.replace('/authentication/login'), 800); + setOk(res.message ?? "Inscription réussie !"); + setTimeout(() => router.replace("/authentication/login"), 800); } catch (err: any) { // si le serveur renvoie HTML (DOCTYPE...), on masque par un message propre - setErrors({ general: 'Erreur serveur. Réessayez dans un instant.' }); + setErrors({ general: "Erreur serveur. Réessayez dans un instant." }); } finally { setLoading(false); } @@ -106,109 +125,159 @@ export default function RegisterPage() { return (
-

INSCRIPTION

-

Bienvenue sur StudyAI, veuillez remplir vos informations :

+

+ INSCRIPTION +

+

+ Bienvenue sur StudyAI, veuillez remplir vos informations : +

{/* Nom & Prénoms */}
- +
setFullName(e.target.value)} - onBlur={() => onBlurField('fullName')} + onChange={(e) => setFullName(e.target.value)} + onBlur={() => onBlurField("fullName")} aria-invalid={!!errors.fullName} aria-describedby="nompre-error" className={cn( - 'pr-10 bg-white text-gray-600', - errors.fullName ? 'border-red-500 focus-visible:ring-red-500' : 'border-gray-300 focus-visible:ring-[#3FA9D9]' + "pr-10 bg-white text-gray-600", + errors.fullName + ? "border-red-500 focus-visible:ring-red-500" + : "border-gray-300 focus-visible:ring-[#3FA9D9]", )} />
- {errors.fullName &&

{errors.fullName}

} + {errors.fullName && ( +

+ {errors.fullName} +

+ )}
{/* Email */}
- +
setEmail(e.target.value)} - onBlur={() => onBlurField('email')} + onChange={(e) => setEmail(e.target.value)} + onBlur={() => onBlurField("email")} aria-invalid={!!errors.email} aria-describedby="email-error" className={cn( - 'pr-10 bg-white text-gray-600', - errors.email ? 'border-red-500 focus-visible:ring-red-500' : 'border-gray-300 focus-visible:ring-[#3FA9D9]' + "pr-10 bg-white text-gray-600", + errors.email + ? "border-red-500 focus-visible:ring-red-500" + : "border-gray-300 focus-visible:ring-[#3FA9D9]", )} />
- {errors.email &&

{errors.email}

} + {errors.email && ( +

+ {errors.email} +

+ )}
{/* Mot de passe */}
- + setPassword(e.target.value)} - onBlur={() => onBlurField('password')} + onChange={(e) => setPassword(e.target.value)} + onBlur={() => onBlurField("password")} aria-invalid={!!errors.password} aria-describedby="pwd-error" className={cn( - 'bg-white text-gray-600', - errors.password ? 'border-red-500 focus-visible:ring-red-500' : 'border-gray-300 focus-visible:ring-[#3FA9D9]' + "bg-white text-gray-600", + errors.password + ? "border-red-500 focus-visible:ring-red-500" + : "border-gray-300 focus-visible:ring-[#3FA9D9]", )} /> - {errors.password &&

{errors.password}

} + {errors.password && ( +

+ {errors.password} +

+ )}
{/* Confirmer le mot de passe */}
- + setConfirm(e.target.value)} - onBlur={() => onBlurField('confirm')} + onChange={(e) => setConfirm(e.target.value)} + onBlur={() => onBlurField("confirm")} aria-invalid={!!errors.confirm} aria-describedby="confirm-error" className={cn( - 'bg-white text-gray-600', - errors.confirm ? 'border-red-500 focus-visible:ring-red-500' : 'border-gray-300 focus-visible:ring-[#3FA9D9]' + "bg-white text-gray-600", + errors.confirm + ? "border-red-500 focus-visible:ring-red-500" + : "border-gray-300 focus-visible:ring-[#3FA9D9]", )} /> - {errors.confirm &&

{errors.confirm}

} + {errors.confirm && ( +

+ {errors.confirm} +

+ )}
{/* Messages globaux */} - {errors.general &&

{errors.general}

} + {errors.general && ( +

{errors.general}

+ )} {ok &&

{ok}

} -

- Vous avez un compte ?{' '} - Se connecter + Vous avez un compte ?{" "} + + Se connecter +

); -} \ No newline at end of file +} diff --git a/frontend/web/src/app/authentication/reset-password/MAJmdp/page.tsx b/frontend/web/src/app/authentication/reset-password/MAJmdp/page.tsx index 9581559..a93d1b4 100644 --- a/frontend/web/src/app/authentication/reset-password/MAJmdp/page.tsx +++ b/frontend/web/src/app/authentication/reset-password/MAJmdp/page.tsx @@ -1,19 +1,20 @@ "use client"; -import { useRouter, useSearchParams } from "next/navigation"; +import { useRouter } from "next/navigation"; export default function VerifiedPage() { const router = useRouter(); - const params = useSearchParams(); - const email = params.get("email") ?? ""; - return ( -
+
-

Mot de passe mis à jour !

+

+ Mot de passe mis à jour ! +

- Vous pouvez maintenant créer un nouveau mot de passe pour votre compte. -
Appuyez sur Confirmer pour continuer. + Vous pouvez maintenant créer un nouveau mot de passe pour votre + compte. +
+ Appuyez sur Confirmer pour continuer.

- +
- ); + + {/* Submit button */} + + +
+ ); } diff --git a/frontend/web/src/app/authentication/reset-password/page.tsx b/frontend/web/src/app/authentication/reset-password/page.tsx index 5304102..cbde6ba 100644 --- a/frontend/web/src/app/authentication/reset-password/page.tsx +++ b/frontend/web/src/app/authentication/reset-password/page.tsx @@ -13,44 +13,52 @@ export default function RequestResetPage() { async function onSubmit(e: React.FormEvent) { e.preventDefault(); - router.push('/authentication/reset-password/success'); + router.push("/authentication/reset-password/success"); - // router.push("/authentication/reset-password/success?email=" + encodeURIComponent(email)); + // router.push("/authentication/reset-password/success?email=" + encodeURIComponent(email)); } return (
-
+
-

Réinitialiser le mot de passe

-

+

+ Réinitialiser le mot de passe +

+

Renseigne ton email, on t’envoie un lien de réinitialisation. -

+

- - setEmail(e.target.value)} required /> - + + setEmail(e.target.value)} + required + />
- +

- Retour à la connexion + + Retour à la connexion +

-
+
); } diff --git a/frontend/web/src/app/authentication/reset-password/ready/page.tsx b/frontend/web/src/app/authentication/reset-password/ready/page.tsx index 58c59f9..18aac15 100644 --- a/frontend/web/src/app/authentication/reset-password/ready/page.tsx +++ b/frontend/web/src/app/authentication/reset-password/ready/page.tsx @@ -10,10 +10,13 @@ export default function UpdatedSuccessPage() {
-

Mot de passe mis à jour !

+

+ Mot de passe mis à jour ! +

Bravo ! Votre mot de passe a bien été changé. -
Appuyez sur Se connecter pour accéder à votre compte. +
+ Appuyez sur Se connecter pour accéder à votre compte.

2 ? name[0] + "•".repeat(name.length - 2) + name.slice(-1) : "••"; + name.length > 2 + ? name[0] + "•".repeat(name.length - 2) + name.slice(-1) + : "••"; return `${masked}@${domain}`; } @@ -46,22 +46,24 @@ export default function VerifyEmail() { inputsRef.current[idx - 1]?.focus(); } if (e.key === "ArrowLeft" && idx > 0) inputsRef.current[idx - 1]?.focus(); - if (e.key === "ArrowRight" && idx < code.length - 1) inputsRef.current[idx + 1]?.focus(); + if (e.key === "ArrowRight" && idx < code.length - 1) + inputsRef.current[idx + 1]?.focus(); }; const onPaste = (e: React.ClipboardEvent) => { - const pasted = e.clipboardData.getData("text").replace(/\D/g, "").slice(0, 4); + const pasted = e.clipboardData + .getData("text") + .replace(/\D/g, "") + .slice(0, 4); if (!pasted) return; e.preventDefault(); const arr = pasted.split(""); - setCode((_) => { - const next = ["", "", "", ""]; - for (let i = 0; i < Math.min(arr.length, 4); i++) next[i] = arr[i]; - return next; - }); + const next = ["", "", "", ""]; + for (let i = 0; i < Math.min(arr.length, 4); i++) next[i] = arr[i]; + setCode(next); inputsRef.current[Math.min(arr.length, 4) - 1]?.focus(); }; - const router = useRouter(); + const router = useRouter(); const codeValue = code.join(""); const canSubmit = codeValue.length === 4; @@ -71,9 +73,9 @@ export default function VerifyEmail() { if (!canSubmit) return; // TODO: POST /api/auth/verify-code { email: rawEmail, code: codeValue } - // alert(`Code soumis : ${codeValue}`); + // alert(`Code soumis : ${codeValue}`); // redirect vers succès si OK - router.push('/authentication/reset-password/MAJmdp'); + router.push("/authentication/reset-password/MAJmdp"); }; const handleResend = async () => { @@ -84,7 +86,6 @@ export default function VerifyEmail() { return (
{/* Header */} - {/* Contenu */}
@@ -93,7 +94,8 @@ export default function VerifyEmail() {

- Nous avons envoyé un code à {emailShown}. + Nous avons envoyé un code à{" "} + {emailShown}.
Entrez le code à 4 chiffres reçu dans votre e-mail.

@@ -103,7 +105,6 @@ export default function VerifyEmail() { {code.map((digit, idx) => ( + className="w-full bg-[#3FA9D9] hover:bg-[#2B7FB5] text-white mt-8 ml-4 " + > Suivant -

@@ -136,7 +137,6 @@ export default function VerifyEmail() { Renvoyer

-
); diff --git a/frontend/web/src/app/dashboard/chatter/page.tsx b/frontend/web/src/app/dashboard/chatter/page.tsx index 22093c9..16c400f 100644 --- a/frontend/web/src/app/dashboard/chatter/page.tsx +++ b/frontend/web/src/app/dashboard/chatter/page.tsx @@ -1,21 +1,23 @@ // components/ui/ai-assistant-wrapper.tsx -'use client'; +"use client"; import AiAssistant from "@/component/ui/chat"; import { withAuth } from "@/lib/api/withAuth.client"; - function AiAssistantWrapper({ +function AiAssistantWrapper({ title, description, -}: { title?: string; description?: string }) { +}: { + title?: string; + description?: string; +}) { // afficher titre/description au-dessus si tu veux return (
-
+
{title &&

{title}

} {description &&

{description}

} -
); diff --git a/frontend/web/src/app/dashboard/layout.tsx b/frontend/web/src/app/dashboard/layout.tsx index 12d4d96..ef6def2 100644 --- a/frontend/web/src/app/dashboard/layout.tsx +++ b/frontend/web/src/app/dashboard/layout.tsx @@ -1,66 +1,74 @@ -'use client'; -import Image from 'next/image'; -import Link from 'next/link'; -import { useRouter } from 'next/navigation'; -import { withAuth } from '@/lib/api/withAuth.client'; -import { getToken,setToken } from '@/lib/api/http'; -import { getUser } from '@/lib/session'; -import { useEffect,useState } from 'react'; +"use client"; +import Image from "next/image"; +import Link from "next/link"; +import { useRouter } from "next/navigation"; +import { withAuth } from "@/lib/api/withAuth.client"; +import { getToken, setToken } from "@/lib/api/http"; +import { getUser } from "@/lib/session"; +import { useEffect, useState } from "react"; +function Layout({ children }: { children: React.ReactNode }) { + const router = useRouter(); - function Layout({ children }: { children: React.ReactNode }) { - const router = useRouter(); + // état local pour l’utilisateur + const [name] = useState(getUser()?.fullName ?? null); - // état local pour l’utilisateur - const [name, setName] = useState(getUser()?.fullName ?? null); - - useEffect(() => { + useEffect(() => { const t = getToken(); if (!t) return; // tu peux appeler http("/api/users/me", { method:"GET", auth:true }) si tu veux }, []); - const onLogout = () => { - setToken(null); // supprime le token - router.replace("/authentication/login"); // renvoie vers login - }; - - return ( -
- {/* Navbar */} - + + {/* Contenu principal */} +
{children}
+
+ ); } -export default withAuth(Layout); \ No newline at end of file +export default withAuth(Layout); diff --git a/frontend/web/src/app/dashboard/quiz/page.tsx b/frontend/web/src/app/dashboard/quiz/page.tsx index e2229a8..4a06006 100644 --- a/frontend/web/src/app/dashboard/quiz/page.tsx +++ b/frontend/web/src/app/dashboard/quiz/page.tsx @@ -1,14 +1,11 @@ -'use client'; +"use client"; import { Component } from "@/component/ui/quiz"; import { withAuth } from "@/lib/api/withAuth.client"; -import { main } from "framer-motion/client"; - - function DemoOne() { +function DemoOne() { return ( - < main className="flex-1 p-8 bg-gray-50"> +
-) - + ); } export default withAuth(DemoOne); diff --git a/frontend/web/src/app/dashboard/resume/page.tsx b/frontend/web/src/app/dashboard/resume/page.tsx index 5ef285f..1a417fd 100644 --- a/frontend/web/src/app/dashboard/resume/page.tsx +++ b/frontend/web/src/app/dashboard/resume/page.tsx @@ -1,4 +1,4 @@ -'use client'; +"use client"; import { withAuth } from "@/lib/api/withAuth.client"; import { ResumePDFViewer } from "@/component/ui/resume-pdf-viewer"; import { ArrowLeft } from "lucide-react"; @@ -7,47 +7,47 @@ import { summarizeExtractText } from "@/lib/api/summary"; import { useRouter } from "next/navigation"; function App() { - const [summary, setSummary] = useState(null); - const [loading, setLoading] = useState(true); - const router = useRouter(); + const [summary, setSummary] = useState(null); + const [loading, setLoading] = useState(true); + const router = useRouter(); - useEffect(() => { - const fetchSummary = async () => { - setLoading(true); - const res = await summarizeExtractText(); - if (res?.resume?.texteResume) setSummary(res.resume.texteResume); - else setSummary("Aucun résumé disponible."); - setLoading(false); - }; + useEffect(() => { + const fetchSummary = async () => { + setLoading(true); + const res = await summarizeExtractText(); + if (res?.resume?.texteResume) setSummary(res.resume.texteResume); + else setSummary("Aucun résumé disponible."); + setLoading(false); + }; - fetchSummary(); - }, []); + fetchSummary(); + }, []); - return ( -
- {/* Back arrow and title */} -
- -

- Votre Résumé -

-
+ return ( +
+ {/* Back arrow and title */} +
+ +

+ Votre Résumé +

+
- {/* PDF viewer section */} -
- {loading ? ( -

Chargement du résumé…

- ) : ( - - )} -
-
- ); + {/* PDF viewer section */} +
+ {loading ? ( +

Chargement du résumé…

+ ) : ( + + )} +
+
+ ); } export default withAuth(App); diff --git a/frontend/web/src/app/dashboard/upload-success/page.tsx b/frontend/web/src/app/dashboard/upload-success/page.tsx index dc52509..824a9b5 100644 --- a/frontend/web/src/app/dashboard/upload-success/page.tsx +++ b/frontend/web/src/app/dashboard/upload-success/page.tsx @@ -1,11 +1,11 @@ -'use client'; -import Link from 'next/link'; -import { useState, useEffect, useMemo } from 'react'; -import { FileText } from 'lucide-react'; +"use client"; +import Link from "next/link"; +import { useState, useEffect, useMemo } from "react"; +import { FileText } from "lucide-react"; import OptionButton from "../../../component/ui/option-button"; -import { useSearchParams } from 'next/navigation'; +import { useSearchParams } from "next/navigation"; import { createSubject } from "@/lib/api/subject"; -import { withAuth } from '@/lib/api/withAuth.client'; +import { withAuth } from "@/lib/api/withAuth.client"; type PdfMeta = { chars: number; ms?: number; pages?: number }; function UploadSuccess() { @@ -13,24 +13,22 @@ function UploadSuccess() { const [isDragging, setIsDragging] = useState(false); const params = useSearchParams(); - const key = params.get('key') || ''; + const key = params.get("key") || ""; - const [sessName, setSessName] = useState(''); - const [sessBlobUrl, setSessBlobUrl] = useState(''); - const [sessText, setSessText] = useState(''); - const [meta, setMeta] = useState(null); + const [sessName, setSessName] = useState(""); + const [sessText, setSessText] = useState(""); + const [meta, setMeta] = useState(null); const [showExtract, setShowExtract] = useState(false); useEffect(() => { if (!key) return; const name = sessionStorage.getItem(`pdfName:${key}`) || ""; - const blob = sessionStorage.getItem(`pdfBlobUrl:${key}`) || ""; + const blobUrl = sessionStorage.getItem(`pdfBlobUrl:${key}`) || ""; const text = sessionStorage.getItem(`pdfText:${key}`) || ""; const metaRaw = sessionStorage.getItem(`pdfMeta:${key}`); setSessName(name); - setSessBlobUrl(blob); setSessText(text); if (metaRaw) { @@ -46,7 +44,7 @@ function UploadSuccess() { //Lancer la création du subject une fois que le texte est chargé if (text && text.trim().length > 0) { const hasBeenCreated = sessionStorage.getItem(`subjectCreated:${key}`); - const userId = localStorage.getItem("userId") ; + const userId = localStorage.getItem("userId"); if (!hasBeenCreated) { (async () => { @@ -66,12 +64,17 @@ function UploadSuccess() { } else { console.warn("Aucun ID trouvé dans la réponse :", res); } - } catch (err: unknown) { if (err instanceof Error) { - console.error("Erreur lors de la création du subject :", err.message); + console.error( + "Erreur lors de la création du subject :", + err.message, + ); } else { - console.error("Erreur lors de la création du subject :", String(err)); + console.error( + "Erreur lors de la création du subject :", + String(err), + ); } } })(); @@ -79,32 +82,42 @@ function UploadSuccess() { } return () => { - if (blob) URL.revokeObjectURL(blob); + if (blobUrl) URL.revokeObjectURL(blobUrl); }; }, [key]); - - const isScan = useMemo(() => key && sessText.trim().length === 0, [key, sessText]); + const hasText = useMemo(() => sessText.trim().length > 0, [sessText]); // AJOUT const extractPreview = useMemo(() => sessText.slice(0, 1200), [sessText]); // AJOUT - const handleDragOver = (e: React.DragEvent) => { e.preventDefault(); setIsDragging(true); }; - const handleDragLeave = (e: React.DragEvent) => { e.preventDefault(); setIsDragging(false); }; + const handleDragOver = (e: React.DragEvent) => { + e.preventDefault(); + setIsDragging(true); + }; + const handleDragLeave = (e: React.DragEvent) => { + e.preventDefault(); + setIsDragging(false); + }; const handleDrop = (e: React.DragEvent) => { - e.preventDefault(); setIsDragging(false); + e.preventDefault(); + setIsDragging(false); const files = e.dataTransfer.files; - if (files.length > 0 && files[0].type === 'application/pdf') setUploadedFile(files[0]); + if (files.length > 0 && files[0].type === "application/pdf") + setUploadedFile(files[0]); }; const handleFileInput = (e: React.ChangeEvent) => { - const files = e.target.files; if (files && files.length > 0) setUploadedFile(files[0]); + const files = e.target.files; + if (files && files.length > 0) setUploadedFile(files[0]); }; // AJOUT : télécharger le texte extrait en .txt const downloadTxt = () => { - const blob = new Blob([sessText], { type: 'text/plain;charset=utf-8' }); + const blob = new Blob([sessText], { type: "text/plain;charset=utf-8" }); const url = URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url; a.download = (sessName || 'document') + '.txt'; a.click(); + const a = document.createElement("a"); + a.href = url; + a.download = (sessName || "document") + ".txt"; + a.click(); URL.revokeObjectURL(url); }; @@ -117,7 +130,7 @@ function UploadSuccess() { {/* Upload Area */}
-
PDF
+
+ PDF +
@@ -149,46 +164,52 @@ function UploadSuccess() { )} {key && sessName && ( -

Fichier : {sessName}

+

+ Fichier : {sessName} +

)}
{/* Confirmation d’extraction */} - {key && ( - hasText ? ( + {key && + (hasText ? (
✓ PDF analysé - • {(meta?.chars ?? sessText.length).toLocaleString()} caractères - {typeof meta?.pages === 'number' && • {meta.pages} pages} - {typeof meta?.ms === 'number' && • {meta.ms} ms} + + • {(meta?.chars ?? sessText.length).toLocaleString()} caractères + + {typeof meta?.pages === "number" && ( + • {meta.pages} pages + )} + {typeof meta?.ms === "number" && • {meta.ms} ms}
) : (
- Aucun texte extrait — ce PDF semble être un scan (image). Importez une version texte ou activez un OCR côté serveur. + Aucun texte extrait — ce PDF semble être un scan (image). Importez + une version texte ou activez un OCR côté serveur.
- ) - )} + ))} {/* Options Section */} ); } -export default withAuth(UploadSuccess); \ No newline at end of file +export default withAuth(UploadSuccess); diff --git a/frontend/web/src/app/dashboard/upload/page.tsx b/frontend/web/src/app/dashboard/upload/page.tsx index 428edb7..125b40a 100644 --- a/frontend/web/src/app/dashboard/upload/page.tsx +++ b/frontend/web/src/app/dashboard/upload/page.tsx @@ -1,50 +1,49 @@ -'use client'; +"use client"; import { useEffect, useRef, useState } from "react"; import React from "react"; -import FileUpload, {DropZone, FileError, FileList, FileInfo, FileProgress} from "@/component/ui/file-uploader"; +import FileUpload, { + DropZone, + FileError, + FileList, + FileInfo, + FileProgress, +} from "@/component/ui/file-uploader"; import { FileText, MessageCircle, GraduationCap } from "lucide-react"; import { HoverEffect } from "@/component/ui/hover-effect"; -import {InteractiveHoverButton} from "@/component/ui/interactive-button" +import { InteractiveHoverButton } from "@/component/ui/interactive-button"; import { useRouter } from "next/navigation"; import { withAuth } from "@/lib/api/withAuth.client"; +// extraction PDF typée depuis lib +import { extractPdfTextFromFile } from "@/lib/pdf"; -// ---------- AJOUT: aide extraction PDF (pdfjs-dist) + nettoyage ---------- -async function extractPdfTextFromFile(file: File): Promise { +type BlobLike = { arrayBuffer: () => Promise }; - // import dynamique pour ne charger pdfjs-dist que quand on en a besoin - const pdfjsLib: any = await import('pdfjs-dist'); -pdfjsLib.GlobalWorkerOptions.workerSrc = '/pdf.worker.min.mjs'; - - const buffer = await file.arrayBuffer(); - const doc = await pdfjsLib.getDocument({ data: buffer }).promise; - - let text = ''; - for (let p = 1; p <= doc.numPages; p++) { - const page = await doc.getPage(p); - const content = await page.getTextContent(); - const pageText = content.items.map((it: any) => ('str' in it ? it.str : '')).join(' '); - text += pageText + '\n\n'; +function pickProp(obj: unknown, key: string): T | undefined { + if (obj && typeof obj === "object" && key in obj) { + return (obj as Record)[key] as T; } - await doc.destroy(); - return cleanPdfText(text); + return undefined; } -function cleanPdfText(raw: string): string { - return raw - .replace(/-\s*\n/g, '') // recoller les mots coupés - .replace(/\s+\n/g, '\n') // espaces avant saut de ligne - .replace(/\n{3,}/g, '\n\n') // sauts de ligne excessifs - .replace(/[ \t]{2,}/g, ' ') // espaces multiples - .trim(); +// Récupère File/Blob en évitant any +function getNativeFile(fi: FileInfo): File | null { + const maybe = + pickProp(fi, "file") ?? + pickProp(fi, "blob") ?? + pickProp(fi, "nativeFile") ?? + pickProp(fi, "originalFile"); + + return maybe && typeof (maybe as BlobLike).arrayBuffer === "function" + ? (maybe as File) + : null; } -// Récupère le File natif depuis FileInfo (adapte si ton composant expose un autre champ) -function getNativeFile(fi: FileInfo): File | null { - // essais courants: fi.file, fi.blob, fi.nativeFile, fi.originalFile - const cand: any = (fi as any).file ?? (fi as any).blob ?? (fi as any).nativeFile ?? (fi as any).originalFile; - return (cand && typeof cand.arrayBuffer === 'function') ? cand as File : null; +// Essaie d'obtenir un nom depuis FileInfo si exposé par ton composant +function getFileInfoName(fi: FileInfo): string | undefined { + const n = pickProp(fi, "name"); + return typeof n === "string" ? n : undefined; } const projects = [ @@ -68,13 +67,13 @@ const projects = [ }, ]; - function UploadFiles() { +function UploadFiles() { const router = useRouter(); const [uploadFiles, setUploadFiles] = useState([]); - const [loading, setLoading] = useState(false); // AJOUT - const [errMsg, setErrMsg] = useState(null); // AJOUT - const processingRef = useRef(false); // AJOUT: évite double-traitement + const [loading, setLoading] = useState(false); + const [errMsg, setErrMsg] = useState(null); + const processingRef = useRef(false); // évite double-traitement const onFileSelectChange = (files: FileInfo[]) => { setUploadFiles(files); @@ -84,25 +83,22 @@ const projects = [ setUploadFiles(uploadFiles.filter((file) => file.id !== fileId)); }; - const getFileIcon = (type: string) => { - if (type === "pdf") return "text-red-500"; - else if (type === "docx" || type === "doc") return "text-blue-500"; - else return "text-gray-500"; - }; - - //Déclenchement auto dès qu’un fichier est choisi + // Déclenchement auto dès qu’un fichier est choisi useEffect(() => { if (processingRef.current) return; if (!uploadFiles || uploadFiles.length === 0) return; const first = uploadFiles[0]; const file = getNativeFile(first); - const name = (first as any).name ?? (file?.name ?? 'document.pdf'); + const name = getFileInfoName(first) ?? file?.name ?? "document.pdf"; - const isPdf = name.toLowerCase().endsWith('.pdf') || (file?.type === 'application/pdf'); + const isPdf = + name.toLowerCase().endsWith(".pdf") || file?.type === "application/pdf"; if (!isPdf) { - setErrMsg("L’extraction locale est disponible pour les PDF. Vous pouvez importer une version PDF texte."); + setErrMsg( + "L’extraction locale est disponible pour les PDF. Vous pouvez importer une version PDF texte.", + ); return; } @@ -113,7 +109,9 @@ const projects = [ (async () => { try { if (!file) { - throw new Error("Fichier introuvable dans FileInfo. Adapte getNativeFile(...) selon ton composant."); + throw new Error( + "Fichier introuvable dans FileInfo. Adapte getNativeFile(...) selon ton composant.", + ); } // 1) Blob URL locale pour prévisualiser sans envoyer le fichier au serveur @@ -130,9 +128,11 @@ const projects = [ // 4) Redirection vers la page d’actions router.push(`/dashboard/upload-success?key=${key}`); - } catch (e: any) { + } catch (e: unknown) { console.error(e); - setErrMsg("Échec de l’analyse du PDF. Essayez un autre fichier (PDF texte non scanné)."); + setErrMsg( + "Échec de l’analyse du PDF. Essayez un autre fichier (PDF texte non scanné).", + ); setLoading(false); processingRef.current = false; } @@ -142,7 +142,7 @@ const projects = [ return (
- {/* ---------- AJOUT: overlay loader “soft” ---------- */} + {/* overlay loader “soft” */} {loading && (
@@ -182,7 +182,7 @@ const projects = [ onRemove={onRemove} canResume={true} /> - {/* Message d'erreur lorsque le fichier n'est pas pas pdf*/} + {/* Message d'erreur lorsque le fichier n'est pas pdf */} {errMsg &&

{errMsg}

}
@@ -195,17 +195,21 @@ const projects = [
- {/* Cards section insérée ici */} + {/* Cards section */}
-
- +
+
); } -export default withAuth(UploadFiles); \ No newline at end of file + +export default withAuth(UploadFiles); diff --git a/frontend/web/src/app/not-found.tsx b/frontend/web/src/app/not-found.tsx index 56a2a23..9198155 100644 --- a/frontend/web/src/app/not-found.tsx +++ b/frontend/web/src/app/not-found.tsx @@ -1,4 +1,4 @@ -'use client'; +"use client"; import NotFoundPage from "@/component/ui/page-not-found"; diff --git a/frontend/web/src/app/page.tsx b/frontend/web/src/app/page.tsx index 19afb97..cae24b0 100644 --- a/frontend/web/src/app/page.tsx +++ b/frontend/web/src/app/page.tsx @@ -1,8 +1,8 @@ -'use client'; +"use client"; import { Animation } from "@/component/ui/animation-robotAi"; -import { Button } from '@/component/ui/button'; -import { useRouter } from 'next/navigation'; +import { Button } from "@/component/ui/button"; +import { useRouter } from "next/navigation"; export default function LandingPage() { const router = useRouter(); @@ -11,26 +11,31 @@ export default function LandingPage() {
{/* Title */} -

StudyAI

+

+ StudyAI +

{/* Welcome message */} -

Bonjour, bienvenue

+

+ Bonjour, bienvenue +

{/* Description */}

- Créé un compte pour sauvegarder tes quiz, ton historique et tes scores. + Créé un compte pour sauvegarder tes quiz, ton historique et tes + scores.

{/* Buttons */}
- +
); -}; - -export default AIMessageBar; +} diff --git a/frontend/web/src/lib/api/chat.ts b/frontend/web/src/lib/api/chat.ts new file mode 100644 index 0000000..0e9a137 --- /dev/null +++ b/frontend/web/src/lib/api/chat.ts @@ -0,0 +1,42 @@ +// lib/api/chat.ts + +export type ChatResponse = { + message: string; + fullResponse?: string; // Pour plus tard si ton API renvoie autre chose +}; + +/** + * Envoie un message utilisateur au backend pour un subject donné. + * + * Même si l’API backend n’est pas encore prête, cette fonction renverra + * automatiquement "Chat trouvé" en mode fallback. + */ +export async function chatWithSubject( + subjectId: string, + userMessage: string +): Promise { + try { + const res = await fetch( + `${process.env.NEXT_PUBLIC_API_URL}/api/subject/${subjectId}/chat`, + { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ message: userMessage }), + } + ); + + if (!res.ok) { + console.warn("Chat API non disponible, fallback activé."); + return { message: "Chat trouvé (fallback)" }; + } + + const data = await res.json(); + return { + message: data.message ?? "Réponse vide du serveur", + fullResponse: JSON.stringify(data), + }; + } catch (error) { + console.warn("Erreur API chat:", error); + return { message: "Chat trouvé (fallback)" }; + } +}