@zumer/snapdom 1.9.10-dev.2 → 1.9.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -42,6 +42,46 @@ It captures any HTML element as a scalable SVG image, preserving styles, fonts,
42
42
 
43
43
  [https://zumerlab.github.io/snapdom/](https://zumerlab.github.io/snapdom/)
44
44
 
45
+
46
+ ## Table of Contents
47
+
48
+ - [Installation](#installation)
49
+ - [NPM / Yarn](#npm--yarn)
50
+ - [CDN](#cdn)
51
+ - [Script tag (local)](#script-tag-local)
52
+ - [ES Module](#es-module)
53
+ - [Module via CDN](#module-via-cdn)
54
+ - [Basic usage](#basic-usage)
55
+ - [Reusable capture](#reusable-capture)
56
+ - [One-step shortcuts](#one-step-shortcuts)
57
+ - [API](#api)
58
+ - [snapdom(el, options?)](#snapdomel-options)
59
+ - [Shortcut methods](#shortcut-methods)
60
+ - [Options](#options)
61
+ - [Fallback image on `<img>` load failure](#fallback-image-on-img-load-failure)
62
+ - [Dimensions (`scale`, `width`, `height`)](#dimensions-scale-width-height)
63
+ - [Cross-Origin Images & Fonts (`useProxy`)](#cross-origin-images--fonts-useproxy)
64
+ - [Fonts](#fonts)
65
+ - [embedFonts](#embedfonts)
66
+ - [localFonts](#localfonts)
67
+ - [iconFonts](#iconfonts)
68
+ - [excludeFonts](#excludefonts)
69
+ - [Filtering nodes: `exclude` vs `filter`](#filtering-nodes-exclude-vs-filter)
70
+ - [preCache() – Optional helper](#precache--optional-helper)
71
+ - [Cache control](#cache-control)
72
+ - [Limitations](#limitations)
73
+ - [⚡ Performance Benchmarks (Chromium)](#performance-benchmarks)
74
+ - [Simple elements](#simple-elements)
75
+ - [Complex elements](#complex-elements)
76
+ - [Run the benchmarks](#run-the-benchmarks)
77
+ - [Roadmap](#roadmap)
78
+ - [Development](#development)
79
+ - [Contributors 🙌](#contributors)
80
+ - [💖 Sponsors](#sponsors)
81
+ - [Star History](#star-history)
82
+ - [License](#license)
83
+
84
+
45
85
  ## Installation
46
86
 
47
87
  ### NPM / Yarn
@@ -335,50 +375,32 @@ await snapdom.toPng(el, { cache: 'disabled' });
335
375
  * `@font-face` CSS rule is well supported, but if need to use JS `FontFace()`, see this workaround [`#43`](https://github.com/zumerlab/snapdom/issues/43)
336
376
 
337
377
 
338
- ## ⚡ Performance Benchmarks
339
-
340
- Snapdom has received **significant performance improvements** since version `v1.8.0`. The following benchmarks compare:
341
-
342
- * **Snapdom (current)**
343
- * **Snapdom v1.8.0**
344
- * `html2canvas`
345
- * `html-to-image`
378
+ ## Performance Benchmarks
346
379
 
380
+ **Setup.** Vitest benchmarks on Chromium, repo tests. Hardware may affect results.
381
+ Values are **average capture time (ms)** → lower is better.
347
382
 
348
383
  ### Simple elements
349
384
 
350
- | Scenario | Snapdom (current) | Snapdom v1.8.0 | html2canvas | html-to-image |
351
- | ------------------------ | ----------------- | -------------- | ----------- | ------------- |
352
- | Small (200×100) | **0.4 ms** | 1.2 ms | 70.3 ms | 3.6 ms |
353
- | Modal (400×300) | **0.4 ms** | 1.1 ms | 68.8 ms | 3.6 ms |
354
- | Page View (1200×800) | **0.4 ms** | 1.0 ms | 100.5 ms | 3.4 ms |
355
- | Large Scroll (2000×1500) | **0.4 ms** | 1.0 ms | 153.1 ms | 3.4 ms |
356
- | Very Large (4000×2000) | **0.4 ms** | 1.0 ms | 278.9 ms | 4.3 ms |
357
-
385
+ | Scenario | SnapDOM v1.9.10 | SnapDOM v1.9.9 | html2canvas | html-to-image |
386
+ | ------------------------ | --------------- | -------------- | ----------- | ------------- |
387
+ | Small (200×100) | **0.5 ms** | 0.8 ms | 67.7 ms | 3.1 ms |
388
+ | Modal (400×300) | **0.5 ms** | 0.8 ms | 75.5 ms | 3.6 ms |
389
+ | Page View (1200×800) | **0.5 ms** | 0.8 ms | 114.2 ms | 3.3 ms |
390
+ | Large Scroll (2000×1500) | **0.5 ms** | 0.8 ms | 186.3 ms | 3.2 ms |
391
+ | Very Large (4000×2000) | **0.5 ms** | 0.9 ms | 425.9 ms | 3.3 ms |
358
392
 
393
+ ---
359
394
 
360
395
  ### Complex elements
361
396
 
362
- | Scenario | Snapdom (current) | Snapdom v1.8.0 | html2canvas | html-to-image |
363
- | ------------------------ | ----------------- | -------------- | ----------- | ------------- |
364
- | Small (200×100) | **1.1 ms** | 3.2 ms | 76.0 ms | 15.3 ms |
365
- | Modal (400×300) | **4.5 ms** | 14.0 ms | 133.2 ms | 55.4 ms |
366
- | Page View (1200×800) | **32.9 ms** | 113.6 ms | 303.4 ms | 369.1 ms |
367
- | Large Scroll (2000×1500) | **133.9 ms** | 387.4 ms | 594.4 ms | 1,163.0 ms |
368
- | Very Large (4000×2000) | **364.0 ms** | 1,200.4 ms | 1,380.8 ms | 3,023.9 ms |
369
-
370
-
371
-
372
- ### Summary
373
-
374
- * Snapdom (current) is **2×–6× faster** than `v1.8.0`
375
- * Up to **150× faster** than `html2canvas`
376
- * Up to **8× faster** than `html-to-image` in large scenarios
377
-
378
- <sub>Benchmarks run in Chromium using Vitest.<br>
379
- Hardware: MacBook Air 2018.<br>
380
- ⚠️ Performance may vary depending on device.</sub>
381
-
397
+ | Scenario | SnapDOM v1.9.10 | SnapDOM v1.9.9 | html2canvas | html-to-image |
398
+ | ------------------------ | --------------- | -------------- | ----------- | ------------- |
399
+ | Small (200×100) | **1.6 ms** | 3.3 ms | 68.0 ms | 14.3 ms |
400
+ | Modal (400×300) | **2.9 ms** | 6.8 ms | 87.5 ms | 34.8 ms |
401
+ | Page View (1200×800) | **17.5 ms** | 50.2 ms | 178.0 ms | 429.0 ms |
402
+ | Large Scroll (2000×1500) | **54.0 ms** | 201.8 ms | 735.2 ms | 984.2 ms |
403
+ | Very Large (4000×2000) | **171.4 ms** | 453.7 ms | 1,800.4 ms | 2,611.9 ms |
382
404
 
383
405
 
384
406
  ### Run the benchmarks
@@ -404,10 +426,10 @@ Planned improvements for future versions of SnapDOM:
404
426
  * [X] **Decouple internal logic from global options**
405
427
  Functions will be redesigned to avoid relying directly on `options`. A centralized capture context will improve clarity, autonomy, and testability. See [`next` branch](https://github.com/zumerlab/snapdom/tree/main)
406
428
 
407
- * [ ] **Expose cache control**
429
+ * [X] **Expose cache control**
408
430
  Users will be able to manually clear image and font caches or configure their own caching strategies.
409
431
 
410
- * [ ] **Auto font preloading**
432
+ * [X] **Auto font preloading**
411
433
  Required fonts will be automatically detected and preloaded before capture, reducing the need for manual `preCache()` calls.
412
434
 
413
435
  * [ ] **Document plugin development**
@@ -453,7 +475,7 @@ The main entry point is in `src/`, and output bundles are generated in the `dist
453
475
  For detailed contribution guidelines, please see [CONTRIBUTING](https://github.com/zumerlab/snapdom/blob/main/CONTRIBUTING.md).
454
476
 
455
477
 
456
- ## Contributors 🙌
478
+ ## Contributors
457
479
 
458
480
  <!-- CONTRIBUTORS:START -->
459
481
  <p>
@@ -478,7 +500,7 @@ For detailed contribution guidelines, please see [CONTRIBUTING](https://github.c
478
500
  </p>
479
501
  <!-- CONTRIBUTORS:END -->
480
502
 
481
- ## 💖 Sponsors
503
+ ## Sponsors
482
504
 
483
505
  Special thanks to [@megaphonecolin](https://github.com/megaphonecolin) for supporting this project!
484
506
 
package/dist/snapdom.js CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  /*
3
3
  * snapdom
4
- * v.1.9.10-dev.2
4
+ * v.1.9.10
5
5
  * Author Juan Martin Muda
6
6
  * License MIT
7
7
  **/
@@ -2375,17 +2375,40 @@
2375
2375
  function inlineBackgroundImages(_0, _1, _2) {
2376
2376
  return __async(this, arguments, function* (source, clone, styleCache, options = {}) {
2377
2377
  const queue = [[source, clone]];
2378
- const imageProps = [
2378
+ const URL_PROPS = [
2379
2379
  "background-image",
2380
+ // Mask shorthands & images (both standard and WebKit)
2380
2381
  "mask",
2381
2382
  "mask-image",
2383
+ "-webkit-mask",
2382
2384
  "-webkit-mask-image",
2385
+ // Mask sources (rare, but keep)
2383
2386
  "mask-source",
2384
2387
  "mask-box-image-source",
2385
2388
  "mask-border-source",
2386
2389
  "-webkit-mask-box-image-source",
2390
+ // Border image
2387
2391
  "border-image",
2388
- "border-image-source",
2392
+ "border-image-source"
2393
+ ];
2394
+ const MASK_LAYOUT_PROPS = [
2395
+ "mask-position",
2396
+ "mask-size",
2397
+ "mask-repeat",
2398
+ // WebKit variants
2399
+ "-webkit-mask-position",
2400
+ "-webkit-mask-size",
2401
+ "-webkit-mask-repeat",
2402
+ // Extra (optional but helpful across engines)
2403
+ "mask-origin",
2404
+ "mask-clip",
2405
+ "-webkit-mask-origin",
2406
+ "-webkit-mask-clip",
2407
+ // Some engines expose X/Y position separately:
2408
+ "-webkit-mask-position-x",
2409
+ "-webkit-mask-position-y"
2410
+ ];
2411
+ const BORDER_AUX_PROPS = [
2389
2412
  "border-image-slice",
2390
2413
  "border-image-width",
2391
2414
  "border-image-outset",
@@ -2400,10 +2423,7 @@
2400
2423
  const bis = style.getPropertyValue("border-image-source");
2401
2424
  return bi && bi !== "none" || bis && bis !== "none";
2402
2425
  })();
2403
- for (const prop of imageProps) {
2404
- if (["border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat"].includes(prop) && !hasBorderImage) {
2405
- continue;
2406
- }
2426
+ for (const prop of URL_PROPS) {
2407
2427
  const val = style.getPropertyValue(prop);
2408
2428
  if (!val || val === "none") continue;
2409
2429
  const splits = splitBackgroundImage(val);
@@ -2414,6 +2434,18 @@
2414
2434
  cloneNode.style.setProperty(prop, inlined.join(", "));
2415
2435
  }
2416
2436
  }
2437
+ for (const prop of MASK_LAYOUT_PROPS) {
2438
+ const val = style.getPropertyValue(prop);
2439
+ if (!val || val === "initial") continue;
2440
+ cloneNode.style.setProperty(prop, val);
2441
+ }
2442
+ if (hasBorderImage) {
2443
+ for (const prop of BORDER_AUX_PROPS) {
2444
+ const val = style.getPropertyValue(prop);
2445
+ if (!val || val === "initial") continue;
2446
+ cloneNode.style.setProperty(prop, val);
2447
+ }
2448
+ }
2417
2449
  const sChildren = Array.from(srcNode.children);
2418
2450
  const cChildren = Array.from(cloneNode.children);
2419
2451
  for (let i = 0; i < Math.min(sChildren.length, cChildren.length); i++) {
@@ -2715,8 +2747,6 @@
2715
2747
 
2716
2748
  // src/core/context.js
2717
2749
  function normalizeCachePolicy(v) {
2718
- if (v === true) return "soft";
2719
- if (v === false) return "disabled";
2720
2750
  if (typeof v === "string") {
2721
2751
  const s = v.toLowerCase().trim();
2722
2752
  if (s === "disabled" || s === "full" || s === "auto" || s === "soft") return (
@@ -2886,9 +2916,7 @@
2886
2916
  if (context.iconFonts && context.iconFonts.length > 0) extendIconFonts(context.iconFonts);
2887
2917
  if (!context.snap) {
2888
2918
  context.snap = {
2889
- /** Delegates to this module’s PNG path (tu build devuelve <img>). */
2890
2919
  toPng: (el, opts) => snapdom.toPng(el, opts),
2891
- /** Útil si en algún flujo necesitás vector o <img> directo. */
2892
2920
  toImg: (el, opts) => snapdom.toImg(el, opts)
2893
2921
  };
2894
2922
  }
@@ -2896,12 +2924,18 @@
2896
2924
  });
2897
2925
  }
2898
2926
  snapdom.capture = (el, context, _token) => __async(null, null, function* () {
2899
- if (_token !== INTERNAL_TOKEN) {
2900
- throw new Error("[snapdom.capture] is internal. Use snapdom(...) instead.");
2901
- }
2927
+ if (_token !== INTERNAL_TOKEN) throw new Error("[snapdom.capture] is internal. Use snapdom(...) instead.");
2902
2928
  const url = yield captureDOM(el, context);
2903
2929
  const ensureContext = (opts) => __spreadValues(__spreadValues({}, context), opts || {});
2904
- const withFormat = (format) => (opts) => rasterize(url, ensureContext(__spreadProps(__spreadValues({}, opts || {}), { format })));
2930
+ const withFormat = (format) => (opts) => {
2931
+ const next = ensureContext(__spreadProps(__spreadValues({}, opts || {}), { format }));
2932
+ const wantsJpeg = format === "jpeg" || format === "jpg";
2933
+ const noBg = next.backgroundColor == null || next.backgroundColor === "transparent";
2934
+ if (wantsJpeg && noBg) {
2935
+ next.backgroundColor = "#ffffff";
2936
+ }
2937
+ return rasterize(url, next);
2938
+ };
2905
2939
  return {
2906
2940
  url,
2907
2941
  toRaw: () => url,
@@ -1,5 +1,5 @@
1
- (()=>{var Fe=Object.defineProperty,Le=Object.defineProperties;var Re=Object.getOwnPropertyDescriptors;var re=Object.getOwnPropertySymbols;var Te=Object.prototype.hasOwnProperty,Ne=Object.prototype.propertyIsEnumerable;var ae=(t,e,n)=>e in t?Fe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,V=(t,e)=>{for(var n in e||(e={}))Te.call(e,n)&&ae(t,n,e[n]);if(re)for(var n of re(e))Ne.call(e,n)&&ae(t,n,e[n]);return t},J=(t,e)=>Le(t,Re(e));var A=(t,e,n)=>new Promise((o,r)=>{var a=i=>{try{c(n.next(i))}catch(l){r(l)}},s=i=>{try{c(n.throw(i))}catch(l){r(l)}},c=i=>i.done?o(i.value):Promise.resolve(i.value).then(a,s);c((n=n.apply(t,e)).next())});var m={image:new Map,background:new Map,resource:new Map,defaultStyle:new Map,baseStyle:new Map,computedStyle:new WeakMap,font:new Set,session:{styleMap:new Map,styleCache:new WeakMap,nodeMap:new Map}};function Mt(t="soft"){switch(t){case"auto":{m.session.styleMap=new Map,m.session.nodeMap=new Map;return}case"soft":{m.session.styleMap=new Map,m.session.nodeMap=new Map,m.session.styleCache=new WeakMap;return}case"full":return;case"disabled":{m.session.styleMap=new Map,m.session.nodeMap=new Map,m.session.styleCache=new WeakMap,m.computedStyle=new WeakMap,m.baseStyle=new Map,m.defaultStyle=new Map,m.image=new Map,m.background=new Map,m.resource=new Map,m.font=new Set;return}default:{m.session.styleMap=new Map,m.session.nodeMap=new Map,m.session.styleCache=new WeakMap;return}}}function ut(t){let e=t.match(/url\((['"]?)(.*?)(\1)\)/);if(!e)return null;let n=e[2].trim();return n.startsWith("#")?null:n}function Ot(t){if(!t||t==="none")return"";let e=t.replace(/translate[XY]?\([^)]*\)/g,"");return e=e.replace(/matrix\(([^)]+)\)/g,(n,o)=>{let r=o.split(",").map(a=>a.trim());return r.length!==6?`matrix(${o})`:(r[4]="0",r[5]="0",`matrix(${r.join(", ")})`)}),e=e.replace(/matrix3d\(([^)]+)\)/g,(n,o)=>{let r=o.split(",").map(a=>a.trim());return r.length!==16?`matrix3d(${o})`:(r[12]="0",r[13]="0",`matrix3d(${r.join(", ")})`)}),e.trim().replace(/\s{2,}/g," ")}function xt(t){if(/%[0-9A-Fa-f]{2}/.test(t))return t;try{return encodeURI(t)}catch(e){return t}}function Ie(t="[snapDOM]",{ttlMs:e=5*6e4,maxEntries:n=12}={}){let o=new Map,r=0;function a(s,c,i){if(r>=n)return;let l=Date.now();(o.get(c)||0)>l||(o.set(c,l+e),r++,s==="warn"&&console&&console.warn?console.warn(`${t} ${i}`):console&&console.error&&console.error(`${t} ${i}`))}return{warnOnce(s,c){a("warn",s,c)},errorOnce(s,c){a("error",s,c)},reset(){o.clear(),r=0}}}var se=Ie("[snapDOM]",{ttlMs:3*6e4,maxEntries:10}),Dt=new Map,vt=new Map;function Pe(t){return/^data:|^blob:|^about:blank$/.test(t)}function _e(t,e){if(!e||Pe(t))return!1;try{let n=typeof location!="undefined"&&location.href?location.href:"http://localhost/",o=new URL(t,n);return typeof location!="undefined"?o.origin!==location.origin:!0}catch(n){return!!e}}function We(t,e){if(!e)return t;if(e.includes("{url}"))return e.replace("{url}",encodeURIComponent(t));let n=e.endsWith("?")?"":e.includes("?")?"&":"?";return`${e}${n}url=${encodeURIComponent(t)}`}function Ue(t){return new Promise((e,n)=>{let o=new FileReader;o.onload=()=>e(String(o.result||"")),o.onerror=()=>n(new Error("read_failed")),o.readAsDataURL(t)})}function Be(t,e){var n,o;return[e.as||"blob",(n=e.timeout)!=null?n:3e3,e.useProxy||"",(o=e.errorTTL)!=null?o:8e3,t].join("|")}function z(n){return A(this,arguments,function*(t,e={}){var k,P,N;let o=(k=e.as)!=null?k:"blob",r=(P=e.timeout)!=null?P:3e3,a=e.useProxy||"",s=(N=e.errorTTL)!=null?N:8e3,c=e.headers||{},i=!!e.silent,l=Be(t,{as:o,timeout:r,useProxy:a,errorTTL:s}),f=vt.get(l);if(f&&f.until>Date.now())return J(V({},f.result),{fromCache:!0});f&&vt.delete(l);let d=Dt.get(l);if(d)return d;let S=_e(t,a)?We(t,a):t,x=e.credentials;if(!x)try{let _=typeof location!="undefined"&&location.href?location.href:"http://localhost/",v=new URL(t,_);x=typeof location!="undefined"&&v.origin===location.origin?"include":"omit"}catch(_){x="omit"}let E=new AbortController,u=setTimeout(()=>E.abort("timeout"),r),p=A(null,null,function*(){var _,v;try{let C=yield fetch(S,{signal:E.signal,credentials:x,headers:c});if(!C.ok){let T={ok:!1,data:null,status:C.status,url:S,fromCache:!1,reason:"http_error"};if(vt.set(l,{until:Date.now()+s,result:T}),!i){let q=`${C.status} ${C.statusText||""}`.trim();se.warnOnce(`http:${C.status}:${o}:${new URL(t,(_=location==null?void 0:location.href)!=null?_:"http://localhost/").origin}`,`HTTP error ${q} while fetching ${o} ${t}`)}return e.onError&&e.onError(T),T}if(o==="text")return{ok:!0,data:yield C.text(),status:C.status,url:S,fromCache:!1};let W=yield C.blob(),R=W.type||C.headers.get("content-type")||"";return o==="dataURL"?{ok:!0,data:yield Ue(W),status:C.status,url:S,fromCache:!1,mime:R}:{ok:!0,data:W,status:C.status,url:S,fromCache:!1,mime:R}}catch(C){let W=C&&typeof C=="object"&&"name"in C&&C.name==="AbortError"?String(C.message||"").includes("timeout")?"timeout":"abort":"network",R={ok:!1,data:null,status:0,url:S,fromCache:!1,reason:W};if(vt.set(l,{until:Date.now()+s,result:R}),!i){let T=`${W}:${o}:${new URL(t,(v=location==null?void 0:location.href)!=null?v:"http://localhost/").origin}`,q=W==="timeout"?`Timeout after ${r}ms. Consider increasing timeout or using a proxy for ${t}`:W==="abort"?`Request aborted while fetching ${o} ${t}`:`Network/CORS issue while fetching ${o} ${t}. A proxy may be required`;se.errorOnce(T,q)}return e.onError&&e.onError(R),R}finally{clearTimeout(u),Dt.delete(l)}});return Dt.set(l,p),p})}function dt(t,e){if(!e||!t.width||!t.height)return t;let n=document.createElement("canvas");n.width=t.width,n.height=t.height;let o=n.getContext("2d");return o.fillStyle=e,o.fillRect(0,0,n.width,n.height),o.drawImage(t,0,0),n}function ht(n){return A(this,arguments,function*(t,e={}){if(/^((repeating-)?(linear|radial|conic)-gradient)\(/i.test(t)||t.trim()==="none")return t;let r=ut(t);if(!r)return t;let a=xt(r);if(m.background.has(a)){let s=m.background.get(a);return s?`url("${s}")`:"none"}try{let s=yield z(a,{as:"dataURL",useProxy:e.useProxy});return s.ok?(m.background.set(a,s.data),`url("${s.data}")`):(m.background.set(a,null),"none")}catch(s){return m.background.set(a,null),"none"}})}var Ft=new Set(["meta","script","noscript","title","link","template"]),wt=new Set(["meta","link","style","title","noscript","script","template","g","defs","use","marker","mask","clipPath","pattern","path","polygon","polyline","line","circle","ellipse","rect","filter","lineargradient","radialgradient","stop"]),Oe=["div","span","p","a","img","ul","li","button","input","select","textarea","label","section","article","header","footer","nav","main","aside","h1","h2","h3","h4","h5","h6","table","thead","tbody","tr","td","th"];function qt(){for(let t of Oe){let e=String(t).toLowerCase();Ft.has(e)||wt.has(e)||jt(e)}}function jt(t){if(t=String(t).toLowerCase(),wt.has(t)){let a={};return m.defaultStyle.set(t,a),a}if(m.defaultStyle.has(t))return m.defaultStyle.get(t);let e=document.getElementById("snapdom-sandbox");e||(e=document.createElement("div"),e.id="snapdom-sandbox",e.setAttribute("data-snapdom-sandbox","true"),e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.left="-9999px",e.style.top="-9999px",e.style.width="0px",e.style.height="0px",e.style.overflow="hidden",document.body.appendChild(e));let n=document.createElement(t);n.style.all="initial",e.appendChild(n);let o=getComputedStyle(n),r={};for(let a of o){if(ie(a))continue;let s=o.getPropertyValue(a);r[a]=s}return e.removeChild(n),m.defaultStyle.set(t,r),r}var De=/(?:^|-)(animation|transition)(?:-|$)/i,qe=/^(--|view-timeline|scroll-timeline|animation-trigger|offset-|position-try|app-region|interactivity|overlay|view-transition|-webkit-locale|-webkit-user-(?:drag|modify)|-webkit-tap-highlight-color|-webkit-text-security)$/i,je=new Set(["cursor","pointer-events","touch-action","user-select","print-color-adjust","speak","reading-flow","reading-order","anchor-name","anchor-scope","container-name","container-type","timeline-scope"]);function ie(t){let e=String(t).toLowerCase();return!!(je.has(e)||qe.test(e)||De.test(e))}function bt(t,e){if(e=String(e||"").toLowerCase(),wt.has(e))return"";let n=[],o=jt(e);for(let[r,a]of Object.entries(t)){if(ie(r))continue;let s=o[r];a&&a!==s&&n.push(`${r}:${a}`)}return n.sort(),n.join(";")}function Ht(t){let e=new Set;return t.nodeType!==Node.ELEMENT_NODE&&t.nodeType!==Node.DOCUMENT_FRAGMENT_NODE?[]:(t.tagName&&e.add(t.tagName.toLowerCase()),typeof t.querySelectorAll=="function"&&t.querySelectorAll("*").forEach(n=>e.add(n.tagName.toLowerCase())),Array.from(e))}function zt(t){let e=new Map;for(let o of t){let r=m.defaultStyle.get(o);if(!r)continue;let a=Object.entries(r).map(([s,c])=>`${s}:${c};`).sort().join("");a&&(e.has(a)||e.set(a,[]),e.get(a).push(o))}let n="";for(let[o,r]of e.entries())n+=`${r.join(",")} { ${o} }
2
- `;return n}function Vt(t){let e=Array.from(new Set(t.values())).filter(Boolean).sort(),n=new Map,o=1;for(let r of e)n.set(r,`c${o++}`);return n}function mt(t,e=null){if(!(t instanceof Element))return window.getComputedStyle(t,e);let n=m.computedStyle.get(t);if(n||(n=new Map,m.computedStyle.set(t,n)),!n.has(e)){let o=window.getComputedStyle(t,e);n.set(e,o)}return n.get(e)}function Xt(t){let e=t.replace(/^['"]|['"]$/g,"");if(e.startsWith("\\"))try{return String.fromCharCode(parseInt(e.replace("\\",""),16))}catch(n){return e}return e}function Lt(t){let e={};for(let n of t)e[n]=t.getPropertyValue(n);return e}function pt(t){let e=[],n=0,o=0;for(let r=0;r<t.length;r++){let a=t[r];a==="("&&n++,a===")"&&n--,a===","&&n===0&&(e.push(t.slice(o,r).trim()),o=r+1)}return e.push(t.slice(o).trim()),e}function st(t,{fast:e=!1}={}){if(e)return t();"requestIdleCallback"in window?requestIdleCallback(t,{timeout:50}):setTimeout(t,1)}function it(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}var ce=new WeakMap,Gt=new Map,Kt=0;function Ct(){Kt++}var le=!1;function He(t=document.documentElement){var e,n;if(!le){le=!0;try{new MutationObserver(()=>Ct()).observe(t,{subtree:!0,childList:!0,characterData:!0,attributes:!0})}catch(o){}try{new MutationObserver(()=>Ct()).observe(document.head,{subtree:!0,childList:!0,characterData:!0,attributes:!0})}catch(o){}try{let o=document.fonts;o&&((e=o.addEventListener)==null||e.call(o,"loadingdone",Ct),(n=o.ready)==null||n.then(()=>Ct()).catch(()=>{}))}catch(o){}}}function ze(t){let e={},n=t.getPropertyValue("visibility");for(let o=0;o<t.length;o++){let r=t[o],a=t.getPropertyValue(r);(r==="background-image"||r==="content")&&a.includes("url(")&&!a.includes("data:")&&(a="none"),e[r]=a}return n==="hidden"&&(e.opacity="0"),e}var fe=new WeakMap;function Ve(t){let e=fe.get(t);return e||(e=Object.entries(t).sort((o,r)=>o[0]<r[0]?-1:o[0]>r[0]?1:0).map(([o,r])=>`${o}:${r}`).join(";"),fe.set(t,e),e)}function Xe(t,e=null){let n=ce.get(t);if(n&&n.epoch===Kt)return n.snapshot;let o=e||getComputedStyle(t),r=ze(o);return ce.set(t,{epoch:Kt,snapshot:r}),r}function Ge(t,e){return t&&t.session&&t.persist?t:t&&(t.styleMap||t.styleCache||t.nodeMap)?{session:t,persist:{snapshotKeyCache:Gt,defaultStyle:m.defaultStyle,baseStyle:m.baseStyle,image:m.image,resource:m.resource,background:m.background,font:m.font},options:e||{}}:{session:m.session,persist:{snapshotKeyCache:Gt,defaultStyle:m.defaultStyle,baseStyle:m.baseStyle,image:m.image,resource:m.resource,background:m.background,font:m.font},options:t||e||{}}}function gt(t,e,n,o){return A(this,null,function*(){var S,x,E;if(t.tagName==="STYLE")return;let r=Ge(n,o),a=r.options&&r.options.cache||"auto";if(a!=="disabled"&&He(document.documentElement),a==="disabled"&&!r.session.__bumpedForDisabled&&(Ct(),Gt.clear(),r.session.__bumpedForDisabled=!0),wt.has((S=t.tagName)==null?void 0:S.toLowerCase())){let u=(x=t.getAttribute)==null?void 0:x.call(t,"style");u&&e.setAttribute("style",u)}let{session:s,persist:c}=r;s.styleCache.has(t)||s.styleCache.set(t,getComputedStyle(t));let i=s.styleCache.get(t),l=Xe(t,i),f=Ve(l),d=c.snapshotKeyCache.get(f);if(!d){let u=((E=t.tagName)==null?void 0:E.toLowerCase())||"div";d=bt(l,u),c.snapshotKeyCache.set(f,d)}s.styleMap.set(e,d)})}function Yt(t,e,n){return Promise.all(t.map(o=>new Promise(r=>{function a(){st(s=>{s instanceof IdleDeadline?s.timeRemaining()?e(o,r):a():e(o,r)},{fast:n})}a()})))}function Ke(t){return t=t.trim(),!t||/\:not\(\s*\[data-sd-slotted\]\s*\)\s*$/.test(t)?t:`${t}:not([data-sd-slotted])`}function Ye(t,e,n=!0){return t.split(",").map(o=>o.trim()).filter(Boolean).map(o=>{if(o.startsWith(":where(")||o.startsWith("@"))return o;let r=n?Ke(o):o;return`:where(${e} ${r})`}).join(", ")}function Je(t,e){return t?(t=t.replace(/:host\(([^)]+)\)/g,(n,o)=>`:where(${e}:is(${o.trim()}))`),t=t.replace(/:host\b/g,`:where(${e})`),t=t.replace(/:host-context\(([^)]+)\)/g,(n,o)=>`:where(:where(${o.trim()}) ${e})`),t=t.replace(/::slotted\(([^)]+)\)/g,(n,o)=>`:where(${e} ${o.trim()})`),t=t.replace(/(^|})(\s*)([^@}{]+){/g,(n,o,r,a)=>{let s=Ye(a,e,!0);return`${o}${r}${s}{`}),t):""}function Ze(t){return t.shadowScopeSeq=(t.shadowScopeSeq||0)+1,`s${t.shadowScopeSeq}`}function Qe(t){let e="";try{t.querySelectorAll("style").forEach(o=>{e+=(o.textContent||"")+`
1
+ (()=>{var Fe=Object.defineProperty,Le=Object.defineProperties;var Re=Object.getOwnPropertyDescriptors;var re=Object.getOwnPropertySymbols;var Te=Object.prototype.hasOwnProperty,Ne=Object.prototype.propertyIsEnumerable;var ae=(t,e,n)=>e in t?Fe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,V=(t,e)=>{for(var n in e||(e={}))Te.call(e,n)&&ae(t,n,e[n]);if(re)for(var n of re(e))Ne.call(e,n)&&ae(t,n,e[n]);return t},J=(t,e)=>Le(t,Re(e));var $=(t,e,n)=>new Promise((o,r)=>{var a=i=>{try{c(n.next(i))}catch(f){r(f)}},s=i=>{try{c(n.throw(i))}catch(f){r(f)}},c=i=>i.done?o(i.value):Promise.resolve(i.value).then(a,s);c((n=n.apply(t,e)).next())});var m={image:new Map,background:new Map,resource:new Map,defaultStyle:new Map,baseStyle:new Map,computedStyle:new WeakMap,font:new Set,session:{styleMap:new Map,styleCache:new WeakMap,nodeMap:new Map}};function Mt(t="soft"){switch(t){case"auto":{m.session.styleMap=new Map,m.session.nodeMap=new Map;return}case"soft":{m.session.styleMap=new Map,m.session.nodeMap=new Map,m.session.styleCache=new WeakMap;return}case"full":return;case"disabled":{m.session.styleMap=new Map,m.session.nodeMap=new Map,m.session.styleCache=new WeakMap,m.computedStyle=new WeakMap,m.baseStyle=new Map,m.defaultStyle=new Map,m.image=new Map,m.background=new Map,m.resource=new Map,m.font=new Set;return}default:{m.session.styleMap=new Map,m.session.nodeMap=new Map,m.session.styleCache=new WeakMap;return}}}function ut(t){let e=t.match(/url\((['"]?)(.*?)(\1)\)/);if(!e)return null;let n=e[2].trim();return n.startsWith("#")?null:n}function Bt(t){if(!t||t==="none")return"";let e=t.replace(/translate[XY]?\([^)]*\)/g,"");return e=e.replace(/matrix\(([^)]+)\)/g,(n,o)=>{let r=o.split(",").map(a=>a.trim());return r.length!==6?`matrix(${o})`:(r[4]="0",r[5]="0",`matrix(${r.join(", ")})`)}),e=e.replace(/matrix3d\(([^)]+)\)/g,(n,o)=>{let r=o.split(",").map(a=>a.trim());return r.length!==16?`matrix3d(${o})`:(r[12]="0",r[13]="0",`matrix3d(${r.join(", ")})`)}),e.trim().replace(/\s{2,}/g," ")}function xt(t){if(/%[0-9A-Fa-f]{2}/.test(t))return t;try{return encodeURI(t)}catch(e){return t}}function Ie(t="[snapDOM]",{ttlMs:e=5*6e4,maxEntries:n=12}={}){let o=new Map,r=0;function a(s,c,i){if(r>=n)return;let f=Date.now();(o.get(c)||0)>f||(o.set(c,f+e),r++,s==="warn"&&console&&console.warn?console.warn(`${t} ${i}`):console&&console.error&&console.error(`${t} ${i}`))}return{warnOnce(s,c){a("warn",s,c)},errorOnce(s,c){a("error",s,c)},reset(){o.clear(),r=0}}}var se=Ie("[snapDOM]",{ttlMs:3*6e4,maxEntries:10}),Dt=new Map,vt=new Map;function Pe(t){return/^data:|^blob:|^about:blank$/.test(t)}function _e(t,e){if(!e||Pe(t))return!1;try{let n=typeof location!="undefined"&&location.href?location.href:"http://localhost/",o=new URL(t,n);return typeof location!="undefined"?o.origin!==location.origin:!0}catch(n){return!!e}}function Ue(t,e){if(!e)return t;if(e.includes("{url}"))return e.replace("{url}",encodeURIComponent(t));let n=e.endsWith("?")?"":e.includes("?")?"&":"?";return`${e}${n}url=${encodeURIComponent(t)}`}function We(t){return new Promise((e,n)=>{let o=new FileReader;o.onload=()=>e(String(o.result||"")),o.onerror=()=>n(new Error("read_failed")),o.readAsDataURL(t)})}function Oe(t,e){var n,o;return[e.as||"blob",(n=e.timeout)!=null?n:3e3,e.useProxy||"",(o=e.errorTTL)!=null?o:8e3,t].join("|")}function z(n){return $(this,arguments,function*(t,e={}){var b,F,U;let o=(b=e.as)!=null?b:"blob",r=(F=e.timeout)!=null?F:3e3,a=e.useProxy||"",s=(U=e.errorTTL)!=null?U:8e3,c=e.headers||{},i=!!e.silent,f=Oe(t,{as:o,timeout:r,useProxy:a,errorTTL:s}),l=vt.get(f);if(l&&l.until>Date.now())return J(V({},l.result),{fromCache:!0});l&&vt.delete(f);let d=Dt.get(f);if(d)return d;let S=_e(t,a)?Ue(t,a):t,x=e.credentials;if(!x)try{let T=typeof location!="undefined"&&location.href?location.href:"http://localhost/",E=new URL(t,T);x=typeof location!="undefined"&&E.origin===location.origin?"include":"omit"}catch(T){x="omit"}let M=new AbortController,u=setTimeout(()=>M.abort("timeout"),r),g=$(null,null,function*(){var T,E;try{let k=yield fetch(S,{signal:M.signal,credentials:x,headers:c});if(!k.ok){let I={ok:!1,data:null,status:k.status,url:S,fromCache:!1,reason:"http_error"};if(vt.set(f,{until:Date.now()+s,result:I}),!i){let q=`${k.status} ${k.statusText||""}`.trim();se.warnOnce(`http:${k.status}:${o}:${new URL(t,(T=location==null?void 0:location.href)!=null?T:"http://localhost/").origin}`,`HTTP error ${q} while fetching ${o} ${t}`)}return e.onError&&e.onError(I),I}if(o==="text")return{ok:!0,data:yield k.text(),status:k.status,url:S,fromCache:!1};let _=yield k.blob(),N=_.type||k.headers.get("content-type")||"";return o==="dataURL"?{ok:!0,data:yield We(_),status:k.status,url:S,fromCache:!1,mime:N}:{ok:!0,data:_,status:k.status,url:S,fromCache:!1,mime:N}}catch(k){let _=k&&typeof k=="object"&&"name"in k&&k.name==="AbortError"?String(k.message||"").includes("timeout")?"timeout":"abort":"network",N={ok:!1,data:null,status:0,url:S,fromCache:!1,reason:_};if(vt.set(f,{until:Date.now()+s,result:N}),!i){let I=`${_}:${o}:${new URL(t,(E=location==null?void 0:location.href)!=null?E:"http://localhost/").origin}`,q=_==="timeout"?`Timeout after ${r}ms. Consider increasing timeout or using a proxy for ${t}`:_==="abort"?`Request aborted while fetching ${o} ${t}`:`Network/CORS issue while fetching ${o} ${t}. A proxy may be required`;se.errorOnce(I,q)}return e.onError&&e.onError(N),N}finally{clearTimeout(u),Dt.delete(f)}});return Dt.set(f,g),g})}function dt(t,e){if(!e||!t.width||!t.height)return t;let n=document.createElement("canvas");n.width=t.width,n.height=t.height;let o=n.getContext("2d");return o.fillStyle=e,o.fillRect(0,0,n.width,n.height),o.drawImage(t,0,0),n}function ht(n){return $(this,arguments,function*(t,e={}){if(/^((repeating-)?(linear|radial|conic)-gradient)\(/i.test(t)||t.trim()==="none")return t;let r=ut(t);if(!r)return t;let a=xt(r);if(m.background.has(a)){let s=m.background.get(a);return s?`url("${s}")`:"none"}try{let s=yield z(a,{as:"dataURL",useProxy:e.useProxy});return s.ok?(m.background.set(a,s.data),`url("${s.data}")`):(m.background.set(a,null),"none")}catch(s){return m.background.set(a,null),"none"}})}var Ft=new Set(["meta","script","noscript","title","link","template"]),wt=new Set(["meta","link","style","title","noscript","script","template","g","defs","use","marker","mask","clipPath","pattern","path","polygon","polyline","line","circle","ellipse","rect","filter","lineargradient","radialgradient","stop"]),Be=["div","span","p","a","img","ul","li","button","input","select","textarea","label","section","article","header","footer","nav","main","aside","h1","h2","h3","h4","h5","h6","table","thead","tbody","tr","td","th"];function qt(){for(let t of Be){let e=String(t).toLowerCase();Ft.has(e)||wt.has(e)||jt(e)}}function jt(t){if(t=String(t).toLowerCase(),wt.has(t)){let a={};return m.defaultStyle.set(t,a),a}if(m.defaultStyle.has(t))return m.defaultStyle.get(t);let e=document.getElementById("snapdom-sandbox");e||(e=document.createElement("div"),e.id="snapdom-sandbox",e.setAttribute("data-snapdom-sandbox","true"),e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.left="-9999px",e.style.top="-9999px",e.style.width="0px",e.style.height="0px",e.style.overflow="hidden",document.body.appendChild(e));let n=document.createElement(t);n.style.all="initial",e.appendChild(n);let o=getComputedStyle(n),r={};for(let a of o){if(ie(a))continue;let s=o.getPropertyValue(a);r[a]=s}return e.removeChild(n),m.defaultStyle.set(t,r),r}var De=/(?:^|-)(animation|transition)(?:-|$)/i,qe=/^(--|view-timeline|scroll-timeline|animation-trigger|offset-|position-try|app-region|interactivity|overlay|view-transition|-webkit-locale|-webkit-user-(?:drag|modify)|-webkit-tap-highlight-color|-webkit-text-security)$/i,je=new Set(["cursor","pointer-events","touch-action","user-select","print-color-adjust","speak","reading-flow","reading-order","anchor-name","anchor-scope","container-name","container-type","timeline-scope"]);function ie(t){let e=String(t).toLowerCase();return!!(je.has(e)||qe.test(e)||De.test(e))}function bt(t,e){if(e=String(e||"").toLowerCase(),wt.has(e))return"";let n=[],o=jt(e);for(let[r,a]of Object.entries(t)){if(ie(r))continue;let s=o[r];a&&a!==s&&n.push(`${r}:${a}`)}return n.sort(),n.join(";")}function Ht(t){let e=new Set;return t.nodeType!==Node.ELEMENT_NODE&&t.nodeType!==Node.DOCUMENT_FRAGMENT_NODE?[]:(t.tagName&&e.add(t.tagName.toLowerCase()),typeof t.querySelectorAll=="function"&&t.querySelectorAll("*").forEach(n=>e.add(n.tagName.toLowerCase())),Array.from(e))}function zt(t){let e=new Map;for(let o of t){let r=m.defaultStyle.get(o);if(!r)continue;let a=Object.entries(r).map(([s,c])=>`${s}:${c};`).sort().join("");a&&(e.has(a)||e.set(a,[]),e.get(a).push(o))}let n="";for(let[o,r]of e.entries())n+=`${r.join(",")} { ${o} }
2
+ `;return n}function Vt(t){let e=Array.from(new Set(t.values())).filter(Boolean).sort(),n=new Map,o=1;for(let r of e)n.set(r,`c${o++}`);return n}function mt(t,e=null){if(!(t instanceof Element))return window.getComputedStyle(t,e);let n=m.computedStyle.get(t);if(n||(n=new Map,m.computedStyle.set(t,n)),!n.has(e)){let o=window.getComputedStyle(t,e);n.set(e,o)}return n.get(e)}function Xt(t){let e=t.replace(/^['"]|['"]$/g,"");if(e.startsWith("\\"))try{return String.fromCharCode(parseInt(e.replace("\\",""),16))}catch(n){return e}return e}function Lt(t){let e={};for(let n of t)e[n]=t.getPropertyValue(n);return e}function pt(t){let e=[],n=0,o=0;for(let r=0;r<t.length;r++){let a=t[r];a==="("&&n++,a===")"&&n--,a===","&&n===0&&(e.push(t.slice(o,r).trim()),o=r+1)}return e.push(t.slice(o).trim()),e}function st(t,{fast:e=!1}={}){if(e)return t();"requestIdleCallback"in window?requestIdleCallback(t,{timeout:50}):setTimeout(t,1)}function it(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}var ce=new WeakMap,Kt=new Map,Gt=0;function Ct(){Gt++}var le=!1;function He(t=document.documentElement){var e,n;if(!le){le=!0;try{new MutationObserver(()=>Ct()).observe(t,{subtree:!0,childList:!0,characterData:!0,attributes:!0})}catch(o){}try{new MutationObserver(()=>Ct()).observe(document.head,{subtree:!0,childList:!0,characterData:!0,attributes:!0})}catch(o){}try{let o=document.fonts;o&&((e=o.addEventListener)==null||e.call(o,"loadingdone",Ct),(n=o.ready)==null||n.then(()=>Ct()).catch(()=>{}))}catch(o){}}}function ze(t){let e={},n=t.getPropertyValue("visibility");for(let o=0;o<t.length;o++){let r=t[o],a=t.getPropertyValue(r);(r==="background-image"||r==="content")&&a.includes("url(")&&!a.includes("data:")&&(a="none"),e[r]=a}return n==="hidden"&&(e.opacity="0"),e}var fe=new WeakMap;function Ve(t){let e=fe.get(t);return e||(e=Object.entries(t).sort((o,r)=>o[0]<r[0]?-1:o[0]>r[0]?1:0).map(([o,r])=>`${o}:${r}`).join(";"),fe.set(t,e),e)}function Xe(t,e=null){let n=ce.get(t);if(n&&n.epoch===Gt)return n.snapshot;let o=e||getComputedStyle(t),r=ze(o);return ce.set(t,{epoch:Gt,snapshot:r}),r}function Ke(t,e){return t&&t.session&&t.persist?t:t&&(t.styleMap||t.styleCache||t.nodeMap)?{session:t,persist:{snapshotKeyCache:Kt,defaultStyle:m.defaultStyle,baseStyle:m.baseStyle,image:m.image,resource:m.resource,background:m.background,font:m.font},options:e||{}}:{session:m.session,persist:{snapshotKeyCache:Kt,defaultStyle:m.defaultStyle,baseStyle:m.baseStyle,image:m.image,resource:m.resource,background:m.background,font:m.font},options:t||e||{}}}function gt(t,e,n,o){return $(this,null,function*(){var S,x,M;if(t.tagName==="STYLE")return;let r=Ke(n,o),a=r.options&&r.options.cache||"auto";if(a!=="disabled"&&He(document.documentElement),a==="disabled"&&!r.session.__bumpedForDisabled&&(Ct(),Kt.clear(),r.session.__bumpedForDisabled=!0),wt.has((S=t.tagName)==null?void 0:S.toLowerCase())){let u=(x=t.getAttribute)==null?void 0:x.call(t,"style");u&&e.setAttribute("style",u)}let{session:s,persist:c}=r;s.styleCache.has(t)||s.styleCache.set(t,getComputedStyle(t));let i=s.styleCache.get(t),f=Xe(t,i),l=Ve(f),d=c.snapshotKeyCache.get(l);if(!d){let u=((M=t.tagName)==null?void 0:M.toLowerCase())||"div";d=bt(f,u),c.snapshotKeyCache.set(l,d)}s.styleMap.set(e,d)})}function Yt(t,e,n){return Promise.all(t.map(o=>new Promise(r=>{function a(){st(s=>{s instanceof IdleDeadline?s.timeRemaining()?e(o,r):a():e(o,r)},{fast:n})}a()})))}function Ge(t){return t=t.trim(),!t||/\:not\(\s*\[data-sd-slotted\]\s*\)\s*$/.test(t)?t:`${t}:not([data-sd-slotted])`}function Ye(t,e,n=!0){return t.split(",").map(o=>o.trim()).filter(Boolean).map(o=>{if(o.startsWith(":where(")||o.startsWith("@"))return o;let r=n?Ge(o):o;return`:where(${e} ${r})`}).join(", ")}function Je(t,e){return t?(t=t.replace(/:host\(([^)]+)\)/g,(n,o)=>`:where(${e}:is(${o.trim()}))`),t=t.replace(/:host\b/g,`:where(${e})`),t=t.replace(/:host-context\(([^)]+)\)/g,(n,o)=>`:where(:where(${o.trim()}) ${e})`),t=t.replace(/::slotted\(([^)]+)\)/g,(n,o)=>`:where(${e} ${o.trim()})`),t=t.replace(/(^|})(\s*)([^@}{]+){/g,(n,o,r,a)=>{let s=Ye(a,e,!0);return`${o}${r}${s}{`}),t):""}function Ze(t){return t.shadowScopeSeq=(t.shadowScopeSeq||0)+1,`s${t.shadowScopeSeq}`}function Qe(t){let e="";try{t.querySelectorAll("style").forEach(o=>{e+=(o.textContent||"")+`
3
3
  `});let n=t.adoptedStyleSheets||[];for(let o of n)try{if(o&&o.cssRules)for(let r of o.cssRules)e+=r.cssText+`
4
4
  `}catch(r){}}catch(n){}return e}function tn(t,e,n){if(!e)return;let o=document.createElement("style");o.setAttribute("data-sd",n),o.textContent=e,t.insertBefore(o,t.firstChild||null)}function en(t,e){try{let n=t.currentSrc||t.src||"";if(!n)return;e.setAttribute("src",n),e.removeAttribute("srcset"),e.removeAttribute("sizes"),e.loading="eager",e.decoding="sync"}catch(n){}}function nn(t){let e=new Set;if(!t)return e;let n=/var\(\s*(--[A-Za-z0-9_-]+)\b/g,o;for(;o=n.exec(t);)e.add(o[1]);return e}function on(t,e){try{let o=getComputedStyle(t).getPropertyValue(e).trim();if(o)return o}catch(n){}try{let o=getComputedStyle(document.documentElement).getPropertyValue(e).trim();if(o)return o}catch(n){}return""}function rn(t,e,n){let o=[];for(let r of e){let a=on(t,r);a&&o.push(`${r}: ${a};`)}return o.length?`${n}{${o.join("")}}
5
- `:""}function an(t){t&&(t.nodeType===Node.ELEMENT_NODE&&t.setAttribute("data-sd-slotted",""),t.querySelectorAll&&t.querySelectorAll("*").forEach(e=>e.setAttribute("data-sd-slotted","")))}function sn(t,e=3){return A(this,null,function*(){let n=()=>{var a;try{return t.contentDocument||((a=t.contentWindow)==null?void 0:a.document)||null}catch(s){return null}},o=n(),r=0;for(;r<e&&(!o||!o.body&&!o.documentElement);)yield new Promise(a=>setTimeout(a,0)),o=n(),r++;return o&&(o.body||o.documentElement)?o:null})}function cn(t){let e=t.getBoundingClientRect(),n=0,o=0,r=0,a=0;try{let i=getComputedStyle(t);n=parseFloat(i.borderLeftWidth)||0,o=parseFloat(i.borderRightWidth)||0,r=parseFloat(i.borderTopWidth)||0,a=parseFloat(i.borderBottomWidth)||0}catch(i){}let s=Math.max(0,Math.round(e.width-(n+o))),c=Math.max(0,Math.round(e.height-(r+a)));return{contentWidth:s,contentHeight:c,rect:e}}function ln(t,e,n){let o=t.createElement("style");return o.setAttribute("data-sd-iframe-pin",""),o.textContent=`html, body {margin: 0 !important;padding: 0 !important;width: ${e}px !important;height: ${n}px !important;min-width: ${e}px !important;min-height: ${n}px !important;box-sizing: border-box !important;overflow: hidden !important;background-clip: border-box !important;}`,(t.head||t.documentElement).appendChild(o),()=>{try{o.remove()}catch(r){}}}function fn(t,e,n){return A(this,null,function*(){let o=yield sn(t,3);if(!o)throw new Error("iframe document not accessible/ready");let{contentWidth:r,contentHeight:a,rect:s}=cn(t),c=n==null?void 0:n.snap;if(!c||typeof c.toPng!="function")throw new Error("snapdom.toPng not available in iframe or window");let i=J(V({},n),{scale:1}),l=ln(o,r,a),f;try{f=yield c.toPng(o.documentElement,i)}finally{l()}f.style.display="block",f.style.width=`${r}px`,f.style.height=`${a}px`;let d=document.createElement("div");return e.nodeMap.set(d,t),gt(t,d,e,n),d.style.overflow="hidden",d.style.display="block",d.style.width||(d.style.width=`${Math.round(s.width)}px`),d.style.height||(d.style.height=`${Math.round(s.height)}px`),d.appendChild(f),d})}function $t(t,e,n){return A(this,null,function*(){var l,f,d,S,x,E;if(!t)throw new Error("Invalid node");let o=new Set,r=null,a=null;if(t.nodeType===Node.ELEMENT_NODE){let u=(t.localName||t.tagName||"").toLowerCase();if(t.id==="snapdom-sandbox"||t.hasAttribute("data-snapdom-sandbox")||Ft.has(u))return null}if(t.nodeType===Node.TEXT_NODE||t.nodeType!==Node.ELEMENT_NODE)return t.cloneNode(!0);if(t.getAttribute("data-capture")==="exclude"){let u=document.createElement("div"),p=t.getBoundingClientRect();return u.style.cssText=`display:inline-block;width:${p.width}px;height:${p.height}px;visibility:hidden;`,u}if(n.exclude&&Array.isArray(n.exclude))for(let u of n.exclude)try{if((l=t.matches)!=null&&l.call(t,u)){let p=document.createElement("div"),k=t.getBoundingClientRect();return p.style.cssText=`display:inline-block;width:${k.width}px;height:${k.height}px;visibility:hidden;`,p}}catch(p){console.warn(`Invalid selector in exclude option: ${u}`,p)}if(typeof n.filter=="function")try{if(!n.filter(t)){let u=document.createElement("div"),p=t.getBoundingClientRect();return u.style.cssText=`display:inline-block;width:${p.width}px;height:${p.height}px;visibility:hidden;`,u}}catch(u){console.warn("Error in filter function:",u)}if(t.tagName==="IFRAME"){let u=!1;try{u=!!(t.contentDocument||(f=t.contentWindow)!=null&&f.document)}catch(p){u=!1}if(u)try{return yield fn(t,e,n)}catch(p){console.warn("[SnapDOM] iframe rasterization failed, fallback:",p)}if(n.placeholders){let p=document.createElement("div");return p.style.cssText=`width:${t.offsetWidth}px;height:${t.offsetHeight}px;background-image:repeating-linear-gradient(45deg,#ddd,#ddd 5px,#f9f9f9 5px,#f9f9f9 10px);display:flex;align-items:center;justify-content:center;font-size:12px;color:#555;border:1px solid #aaa;`,gt(t,p,e,n),p}else{let p=t.getBoundingClientRect(),k=document.createElement("div");return k.style.cssText=`display:inline-block;width:${p.width}px;height:${p.height}px;visibility:hidden;`,gt(t,k,e,n),k}}if(t.getAttribute("data-capture")==="placeholder"){let u=t.cloneNode(!1);e.nodeMap.set(u,t),gt(t,u,e,n);let p=document.createElement("div");return p.textContent=t.getAttribute("data-placeholder-text")||"",p.style.cssText="color:#666;font-size:12px;text-align:center;line-height:1.4;padding:0.5em;box-sizing:border-box;",u.appendChild(p),u}if(t.tagName==="CANVAS"){let u=t.toDataURL(),p=document.createElement("img");return p.src=u,p.width=t.width,p.height=t.height,e.nodeMap.set(p,t),gt(t,p,e,n),p}let s;try{if(s=t.cloneNode(!1),e.nodeMap.set(s,t),t.tagName==="IMG"){en(t,s);try{let u=t.getBoundingClientRect(),p=Math.round(u.width||0),k=Math.round(u.height||0);if(!p||!k){let P=window.getComputedStyle(t),N=parseFloat(P.width)||0,_=parseFloat(P.height)||0,v=parseInt(t.getAttribute("width")||"",10)||0,C=parseInt(t.getAttribute("height")||"",10)||0,W=t.width||t.naturalWidth||0,R=t.height||t.naturalHeight||0;p=Math.round(p||N||v||W||0),k=Math.round(k||_||C||R||0)}p&&(s.dataset.snapdomWidth=String(p)),k&&(s.dataset.snapdomHeight=String(k))}catch(u){}}}catch(u){throw console.error("[Snapdom] Failed to clone node:",t,u),u}if(t instanceof HTMLTextAreaElement){let u=t.getBoundingClientRect();s.style.width=`${u.width}px`,s.style.height=`${u.height}px`}if(t instanceof HTMLInputElement&&(s.value=t.value,s.setAttribute("value",t.value),t.checked!==void 0&&(s.checked=t.checked,t.checked&&s.setAttribute("checked",""),t.indeterminate&&(s.indeterminate=t.indeterminate))),t instanceof HTMLSelectElement&&(r=t.value),t instanceof HTMLTextAreaElement&&(a=t.value),gt(t,s,e,n),t.shadowRoot){let C=function(R,T){if(R.nodeType===Node.ELEMENT_NODE&&R.tagName==="STYLE")return T(null);$t(R,e,n).then(q=>{T(q||null)}).catch(q=>{T(null)})};try{let R=t.shadowRoot.querySelectorAll("slot");for(let T of R){let q=[];try{q=((d=T.assignedNodes)==null?void 0:d.call(T,{flatten:!0}))||((S=T.assignedNodes)==null?void 0:S.call(T))||[]}catch(G){q=((x=T.assignedNodes)==null?void 0:x.call(T))||[]}for(let G of q)o.add(G)}}catch(R){}let u=Ze(e),p=`[data-sd="${u}"]`;try{s.setAttribute("data-sd",u)}catch(R){}let k=Qe(t.shadowRoot),P=Je(k,p),N=nn(k),_=rn(t,N,p);tn(s,_+P,u);let v=document.createDocumentFragment(),W=yield Yt(Array.from(t.shadowRoot.childNodes),C,n.fast);v.append(...W.filter(R=>!!R)),s.appendChild(v)}if(t.tagName==="SLOT"){let P=function(_,v){$t(_,e,n).then(C=>{C&&an(C),v(C||null)}).catch(C=>{v(null)})},u=((E=t.assignedNodes)==null?void 0:E.call(t,{flatten:!0}))||[],p=u.length>0?u:Array.from(t.childNodes),k=document.createDocumentFragment(),N=yield Yt(Array.from(p),P,n.fast);return k.append(...N.filter(_=>!!_)),k}function c(u,p){if(o.has(u))return p(null);$t(u,e,n).then(k=>{p(k||null)}).catch(k=>{p(null)})}let i=yield Yt(Array.from(t.childNodes),c,n.fast);if(s.append(...i.filter(u=>!!u)),r!==null&&s instanceof HTMLSelectElement){s.value=r;for(let u of s.options)u.value===r?u.setAttribute("selected",""):u.removeAttribute("selected")}return a!==null&&s instanceof HTMLTextAreaElement&&(s.textContent=a),s})}var un=[/font\s*awesome/i,/material\s*icons/i,/ionicons/i,/glyphicons/i,/feather/i,/bootstrap\s*icons/i,/remix\s*icons/i,/heroicons/i,/layui/i,/lucide/i],Jt=[];function ue(t){let e=Array.isArray(t)?t:[t];for(let n of e)n instanceof RegExp?Jt.push(n):typeof n=="string"?Jt.push(new RegExp(n,"i")):console.warn("[snapdom] Ignored invalid iconFont value:",n)}function tt(t){let e=typeof t=="string"?t:"",n=[...un,...Jt];for(let o of n)if(o instanceof RegExp&&o.test(e))return!0;return!!(/icon/i.test(e)||/glyph/i.test(e)||/symbols/i.test(e)||/feather/i.test(e)||/fontawesome/i.test(e))}function de(t,e,n,o=32,r="#000"){return A(this,null,function*(){e=e.replace(/^['"]+|['"]+$/g,"");let a=window.devicePixelRatio||1;yield document.fonts.ready;let s=document.createElement("span");s.textContent=t,s.style.position="absolute",s.style.visibility="hidden",s.style.fontFamily=`"${e}"`,s.style.fontWeight=n||"normal",s.style.fontSize=`${o}px`,s.style.lineHeight="1",s.style.whiteSpace="nowrap",s.style.padding="0",s.style.margin="0",document.body.appendChild(s);let c=s.getBoundingClientRect(),i=Math.ceil(c.width),l=Math.ceil(c.height);document.body.removeChild(s);let f=document.createElement("canvas");f.width=i*a,f.height=l*a;let d=f.getContext("2d");return d.scale(a,a),d.font=n?`${n} ${o}px "${e}"`:`${o}px "${e}"`,d.textAlign="left",d.textBaseline="top",d.fillStyle=r,d.fillText(t,0,0),{dataUrl:f.toDataURL(),width:i,height:l}})}var dn=new Set(["serif","sans-serif","monospace","cursive","fantasy","system-ui","emoji","math","fangsong","ui-serif","ui-sans-serif","ui-monospace","ui-rounded"]);function Rt(t){if(!t)return"";for(let e of t.split(",")){let n=e.trim().replace(/^['"]+|['"]+$/g,"");if(n&&!dn.has(n.toLowerCase()))return n}return""}function Tt(t){let e=String(t!=null?t:"400").trim().toLowerCase();if(e==="normal")return 400;if(e==="bold")return 700;let n=parseInt(e,10);return Number.isFinite(n)?Math.min(900,Math.max(100,n)):400}function Zt(t){let e=String(t!=null?t:"normal").trim().toLowerCase();return e.startsWith("italic")?"italic":e.startsWith("oblique")?"oblique":"normal"}function hn(t){let e=String(t!=null?t:"100%").match(/(\d+(?:\.\d+)?)\s*%/);return e?Math.max(50,Math.min(200,parseFloat(e[1]))):100}function mn(t){let e=String(t||"400").trim(),n=e.match(/^(\d{2,3})\s+(\d{2,3})$/);if(n){let r=Tt(n[1]),a=Tt(n[2]);return{min:Math.min(r,a),max:Math.max(r,a)}}let o=Tt(e);return{min:o,max:o}}function pn(t){let e=String(t||"normal").trim().toLowerCase();return e==="italic"?{kind:"italic"}:e.startsWith("oblique")?{kind:"oblique"}:{kind:"normal"}}function gn(t){let e=String(t||"100%").trim(),n=e.match(/(\d+(?:\.\d+)?)\s*%\s+(\d+(?:\.\d+)?)\s*%/);if(n){let a=parseFloat(n[1]),s=parseFloat(n[2]);return{min:Math.min(a,s),max:Math.max(a,s)}}let o=e.match(/(\d+(?:\.\d+)?)\s*%/),r=o?parseFloat(o[1]):100;return{min:r,max:r}}function yn(t,e){if(!t)return!1;try{let n=new URL(t,location.href);if(n.origin===location.origin)return!0;let r=n.host.toLowerCase();if(["fonts.googleapis.com","fonts.gstatic.com","use.typekit.net","p.typekit.net","kit.fontawesome.com","use.fontawesome.com"].some(c=>r.endsWith(c)))return!0;let s=(n.pathname+n.search).toLowerCase();if(/\bfont(s)?\b/.test(s)||/\.woff2?(\b|$)/.test(s))return!0;for(let c of e){let i=c.toLowerCase().replace(/\s+/g,"+"),l=c.toLowerCase().replace(/\s+/g,"-");if(s.includes(i)||s.includes(l))return!0}return!1}catch(n){return!1}}function wn(t){var n;let e=new Set;for(let o of t||[]){let r=(n=String(o).split("__")[0])==null?void 0:n.trim();r&&e.add(r)}return e}function Nt(){return A(this,arguments,function*({required:t,usedCodepoints:e,exclude:n=void 0,localFonts:o=[],useProxy:r=""}={}){var R,T,q,G,ot,rt,ct,Z,j,K,et,kt,St,H,X,Y,Q,at;t instanceof Set||(t=new Set),e instanceof Set||(e=new Set);let a=new Map;for(let h of t){let[w,g,b,y]=String(h).split("__");if(!w)continue;let $=a.get(w)||[];$.push({w:parseInt(g,10),s:b,st:parseInt(y,10)}),a.set(w,$)}let s=/@import\s+url\(["']?([^"')]+)["']?\)/g,c=/url\((["']?)([^"')]+)\1\)/g,i=/@font-face[^{}]*\{[^}]*\}/g;function l(h,w,g,b){if(!a.has(h))return!1;let y=a.get(h),$=mn(g),M=pn(w),F=gn(b),L=$.min!==$.max,U=$.min,I=O=>M.kind==="normal"&&O==="normal"||M.kind!=="normal"&&(O==="italic"||O==="oblique"),B=!1;for(let O of y){let nt=L?O.w>=$.min&&O.w<=$.max:O.w===U,ft=I(Zt(O.s)),yt=O.st>=F.min&&O.st<=F.max;if(nt&&ft&&yt){B=!0;break}}if(B)return!0;if(!L)for(let O of y){let nt=I(Zt(O.s)),ft=O.st>=F.min&&O.st<=F.max;if(Math.abs(U-O.w)<=300&&nt&&ft)return!0}return!1}function f(h){if(!h)return[];let w=[],g=h.split(",").map(b=>b.trim()).filter(Boolean);for(let b of g){let y=b.match(/^U\+([0-9A-Fa-f?]+)(?:-([0-9A-Fa-f?]+))?$/);if(!y)continue;let $=y[1],M=y[2],F=L=>{if(!L.includes("?"))return parseInt(L,16);let U=parseInt(L.replace(/\?/g,"0"),16),I=parseInt(L.replace(/\?/g,"F"),16);return[U,I]};if(M){let L=F($),U=F(M),I=Array.isArray(L)?L[0]:L,B=Array.isArray(U)?U[1]:U;w.push([Math.min(I,B),Math.max(I,B)])}else{let L=F($);Array.isArray(L)?w.push([L[0],L[1]]):w.push([L,L])}}return w}function d(h,w){if(!w.length||!h||h.size===0)return!0;for(let g of h)for(let[b,y]of w)if(g>=b&&g<=y)return!0;return!1}function S(h,w){let g=[];if(!h)return g;for(let b of h.matchAll(c)){let y=(b[2]||"").trim();if(!(!y||y.startsWith("data:"))){if(!/^https?:/i.test(y))try{y=new URL(y,w||location.href).href}catch($){}g.push(y)}}return g}function x(h,w){return A(this,null,function*(){var b,y,$,M,F;let g=h;for(let L of h.matchAll(c)){let U=ut(L[0]);if(!U)continue;let I=U;if(!I.startsWith("http")&&!I.startsWith("data:"))try{I=new URL(I,w||location.href).href}catch(B){}if(!tt(I)){if((b=m.resource)!=null&&b.has(I)){(y=m.font)==null||y.add(I),g=g.replace(L[0],`url(${m.resource.get(I)})`);continue}if(!(($=m.font)!=null&&$.has(I)))try{let B=yield z(I,{as:"dataURL",useProxy:r,silent:!0});if(B.ok&&typeof B.data=="string"){let O=B.data;(M=m.resource)==null||M.set(I,O),(F=m.font)==null||F.add(I),g=g.replace(L[0],`url(${O})`)}}catch(B){console.warn("[snapDOM] Failed to fetch font resource:",I)}}}return g})}function E(h){if(!h.length)return null;let w=(F,L)=>h.some(([U,I])=>!(I<F||U>L)),g=w(0,255)||w(305,305),b=w(256,591)||w(7680,7935),y=w(880,1023),$=w(1024,1279);return w(7840,7929)||w(258,259)||w(416,417)||w(431,432)?"vietnamese":$?"cyrillic":y?"greek":b?"latin-ext":g?"latin":null}function u(h={}){let w=new Set((h.families||[]).map(y=>String(y).toLowerCase())),g=new Set((h.domains||[]).map(y=>String(y).toLowerCase())),b=new Set((h.subsets||[]).map(y=>String(y).toLowerCase()));return(y,$)=>{if(w.size&&w.has(y.family.toLowerCase()))return!0;if(g.size)for(let M of y.srcUrls)try{if(g.has(new URL(M).host.toLowerCase()))return!0}catch(F){}if(b.size){let M=E($);if(M&&b.has(M))return!0}return!1}}let p=u(n);function k(h){var $,M,F,L,U,I;if(!h)return h;let w=/@font-face[^{}]*\{[^}]*\}/gi,g=new Set,b=[];for(let B of h.match(w)||[]){let O=(($=B.match(/font-family:\s*([^;]+);/i))==null?void 0:$[1])||"",nt=Rt(O),ft=(((M=B.match(/font-weight:\s*([^;]+);/i))==null?void 0:M[1])||"400").trim(),yt=(((F=B.match(/font-style:\s*([^;]+);/i))==null?void 0:F[1])||"normal").trim(),Ee=(((L=B.match(/font-stretch:\s*([^;]+);/i))==null?void 0:L[1])||"100%").trim(),ke=(((U=B.match(/unicode-range:\s*([^;]+);/i))==null?void 0:U[1])||"").trim(),ee=(((I=B.match(/src\s*:\s*([^;]+);/i))==null?void 0:I[1])||"").trim(),ne=S(ee,location.href),Me=ne.length?ne.map(ve=>String(ve).toLowerCase()).sort().join("|"):ee.toLowerCase(),oe=[String(nt||"").toLowerCase(),ft,yt,Ee,ke.toLowerCase(),Me].join("|");g.has(oe)||(g.add(oe),b.push(B))}if(b.length===0)return h;let y=0;return h.replace(w,()=>b[y++]||"")}function P(){let h=Array.from(t||[]).sort().join("|"),w=n?JSON.stringify({families:(n.families||[]).map(y=>String(y).toLowerCase()).sort(),domains:(n.domains||[]).map(y=>String(y).toLowerCase()).sort(),subsets:(n.subsets||[]).map(y=>String(y).toLowerCase()).sort()}):"",g=(o||[]).map(y=>`${(y.family||"").toLowerCase()}::${y.weight||"normal"}::${y.style||"normal"}::${y.src||""}`).sort().join("|");return`fonts-embed-css::req=${h}::ex=${w}::lf=${g}::px=${r||""}`}let N=P();if((R=m.resource)!=null&&R.has(N))return m.resource.get(N);let _=wn(t),v=[];for(let h of document.querySelectorAll("style")){let w=h.textContent||"";for(let g of w.matchAll(s)){let b=g[1];if(!b||tt(b))continue;!!document.querySelector(`link[rel="stylesheet"][href="${b}"]`)||v.push(b)}}v.length&&(yield Promise.all(v.map(h=>new Promise(w=>{if(document.querySelector(`link[rel="stylesheet"][href="${h}"]`))return w(null);let g=document.createElement("link");g.rel="stylesheet",g.href=h,g.setAttribute("data-snapdom","injected-import"),g.onload=()=>w(g),g.onerror=()=>w(null),document.head.appendChild(g)}))));let C="",W=Array.from(document.querySelectorAll('link[rel="stylesheet"]')).filter(h=>!!h.href);for(let h of W)try{if(tt(h.href))continue;let w="",g=!1;try{g=new URL(h.href,location.href).origin===location.origin}catch(y){}if(!g&&!yn(h.href,_))continue;if(g){let y=Array.from(document.styleSheets).find($=>$.href===h.href);if(y)try{let $=y.cssRules||[];w=Array.from($).map(M=>M.cssText).join("")}catch($){}}if(!w&&(w=(yield z(h.href,{as:"text",useProxy:r})).data,tt(h.href)))continue;let b="";for(let y of w.match(i)||[]){let $=(((T=y.match(/font-family:\s*([^;]+);/i))==null?void 0:T[1])||"").trim(),M=Rt($);if(!M||tt(M))continue;let F=(((q=y.match(/font-weight:\s*([^;]+);/i))==null?void 0:q[1])||"400").trim(),L=(((G=y.match(/font-style:\s*([^;]+);/i))==null?void 0:G[1])||"normal").trim(),U=(((ot=y.match(/font-stretch:\s*([^;]+);/i))==null?void 0:ot[1])||"100%").trim(),I=(((rt=y.match(/unicode-range:\s*([^;]+);/i))==null?void 0:rt[1])||"").trim(),B=(((ct=y.match(/src\s*:\s*([^;]+);/i))==null?void 0:ct[1])||"").trim(),O=S(B,h.href);if(!l(M,L,F,U))continue;let nt=f(I);if(!d(e,nt))continue;let ft={family:M,weightSpec:F,styleSpec:L,stretchSpec:U,unicodeRange:I,srcRaw:B,srcUrls:O,href:h.href};if(n&&p(ft,nt))continue;let yt=/url\(/i.test(B)?yield x(y,h.href):y;b+=yt+""}b.trim()&&(C+=b+"")}catch(w){console.warn("[snapdom] Failed to process stylesheet:",h.href)}for(let h of document.styleSheets)try{if(h.href&&W.some(g=>g.href===h.href))continue;let w=h.cssRules||[];for(let g of w){if(g.type!==CSSRule.FONT_FACE_RULE)continue;let b=(g.style.getPropertyValue("font-family")||"").trim(),y=Rt(b);if(!y||tt(y))continue;let $=(g.style.getPropertyValue("font-weight")||"400").trim(),M=(g.style.getPropertyValue("font-style")||"normal").trim(),F=(g.style.getPropertyValue("font-stretch")||"100%").trim(),L=(g.style.getPropertyValue("src")||"").trim(),U=(g.style.getPropertyValue("unicode-range")||"").trim(),I=S(L,h.href||location.href);if(!l(y,M,$,F))continue;let B=f(U);if(!d(e,B))continue;let O={family:y,weightSpec:$,styleSpec:M,stretchSpec:F,unicodeRange:U,srcRaw:L,srcUrls:I,href:h.href||location.href};if(!(n&&p(O,B)))if(/url\(/i.test(L)){let nt=yield x(L,h.href||location.href);C+=`@font-face{font-family:${y};src:${nt};font-style:${M};font-weight:${$};font-stretch:${F};${U?`unicode-range:${U};`:""}}`}else C+=`@font-face{font-family:${y};src:${L};font-style:${M};font-weight:${$};font-stretch:${F};${U?`unicode-range:${U};`:""}}`}}catch(w){}try{for(let h of document.fonts||[]){if(!h||!h.family||h.status!=="loaded"||!h._snapdomSrc)continue;let w=String(h.family).replace(/^['"]+|['"]+$/g,"");if(tt(w)||!a.has(w)||n!=null&&n.families&&n.families.some(b=>String(b).toLowerCase()===w.toLowerCase()))continue;let g=h._snapdomSrc;if(!String(g).startsWith("data:")){if((Z=m.resource)!=null&&Z.has(h._snapdomSrc))g=m.resource.get(h._snapdomSrc),(j=m.font)==null||j.add(h._snapdomSrc);else if(!((K=m.font)!=null&&K.has(h._snapdomSrc)))try{let b=yield z(h._snapdomSrc,{as:"dataURL",useProxy:r,silent:!0});if(b.ok&&typeof b.data=="string")g=b.data,(et=m.resource)==null||et.set(h._snapdomSrc,g),(kt=m.font)==null||kt.add(h._snapdomSrc);else continue}catch(b){console.warn("[snapdom] Failed to fetch dynamic font src:",h._snapdomSrc);continue}}C+=`@font-face{font-family:'${w}';src:url(${g});font-style:${h.style||"normal"};font-weight:${h.weight||"normal"};}`}}catch(h){}for(let h of o){if(!h||typeof h!="object")continue;let w=String(h.family||"").replace(/^['"]+|['"]+$/g,"");if(!w||tt(w)||!a.has(w)||n!=null&&n.families&&n.families.some(F=>String(F).toLowerCase()===w.toLowerCase()))continue;let g=h.weight!=null?String(h.weight):"normal",b=h.style!=null?String(h.style):"normal",y=h.stretchPct!=null?`${h.stretchPct}%`:"100%",$=String(h.src||""),M=$;if(!M.startsWith("data:")){if((St=m.resource)!=null&&St.has($))M=m.resource.get($),(H=m.font)==null||H.add($);else if(!((X=m.font)!=null&&X.has($)))try{let F=yield z($,{as:"dataURL",useProxy:r,silent:!0});if(F.ok&&typeof F.data=="string")M=F.data,(Y=m.resource)==null||Y.set($,M),(Q=m.font)==null||Q.add($);else continue}catch(F){console.warn("[snapdom] Failed to fetch localFonts src:",$);continue}}C+=`@font-face{font-family:'${w}';src:url(${M});font-style:${b};font-weight:${g};font-stretch:${y};}`}return C&&(C=k(C),(at=m.resource)==null||at.set(N,C)),C})}function It(t){let e=new Set;if(!t)return e;let n=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,null),o=s=>{let c=Rt(s.fontFamily);if(!c)return;let i=(l,f,d)=>`${c}__${Tt(l)}__${Zt(f)}__${hn(d)}`;e.add(i(s.fontWeight,s.fontStyle,s.fontStretch))};o(getComputedStyle(t));let r=getComputedStyle(t,"::before");r&&r.content&&r.content!=="none"&&o(r);let a=getComputedStyle(t,"::after");for(a&&a.content&&a.content!=="none"&&o(a);n.nextNode();){let s=n.currentNode,c=getComputedStyle(s);o(c);let i=getComputedStyle(s,"::before");i&&i.content&&i.content!=="none"&&o(i);let l=getComputedStyle(s,"::after");l&&l.content&&l.content!=="none"&&o(l)}return e}function Pt(t){let e=new Set,n=r=>{if(r)for(let a of r)e.add(a.codePointAt(0))},o=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,null);for(;o.nextNode();){let r=o.currentNode;if(r.nodeType===Node.TEXT_NODE)n(r.nodeValue||"");else if(r.nodeType===Node.ELEMENT_NODE){let a=r;for(let s of["::before","::after"]){let c=getComputedStyle(a,s),i=c==null?void 0:c.getPropertyValue("content");if(!(!i||i==="none"))if(/^"/.test(i)||/^'/.test(i))n(i.slice(1,-1));else{let l=i.match(/\\[0-9A-Fa-f]{1,6}/g);if(l)for(let f of l)try{e.add(parseInt(f.slice(1),16))}catch(d){}}}}}return e}function _t(t,e=1){return A(this,null,function*(){try{yield document.fonts.ready}catch(r){}let n=Array.from(t||[]).filter(Boolean);if(n.length===0)return;let o=()=>{let r=document.createElement("div");r.style.cssText="position: absolute !important;left: -9999px !important;top: 0 !important;opacity: 0 !important;pointer-events: none !important;contain: layout size style;";for(let a of n){let s=document.createElement("span");s.textContent="AaBbGg1234\xC1\xC9\xCD\xD3\xDA\xE7\xF1\u2014\u221E",s.style.fontFamily=`"${a}"`,s.style.fontWeight="700",s.style.fontStyle="italic",s.style.fontSize="32px",s.style.lineHeight="1",s.style.whiteSpace="nowrap",s.style.margin="0",s.style.padding="0",r.appendChild(s)}document.body.appendChild(r),r.offsetWidth,document.body.removeChild(r)};for(let r=0;r<Math.max(1,e);r++)o(),yield new Promise(a=>requestAnimationFrame(()=>requestAnimationFrame(a)))})}function Qt(t,e,n,o){return A(this,null,function*(){var s;if(!(t instanceof Element)||!(e instanceof Element))return;for(let c of["::before","::after","::first-letter"])try{let i=mt(t,c);if(!i||typeof i[Symbol.iterator]!="function"||i.content==="none"&&i.backgroundImage==="none"&&i.backgroundColor==="transparent"&&(i.borderStyle==="none"||parseFloat(i.borderWidth)===0)&&(!i.transform||i.transform==="none")&&i.display==="inline")continue;if(c==="::first-letter"){let H=getComputedStyle(t);if(!(i.color!==H.color||i.fontSize!==H.fontSize||i.fontWeight!==H.fontWeight))continue;let Y=Array.from(e.childNodes).find(M=>{var F;return M.nodeType===Node.TEXT_NODE&&((F=M.textContent)==null?void 0:F.trim().length)>0});if(!Y)continue;let Q=Y.textContent,at=Q.match(/^([^\p{L}\p{N}\s]*[\p{L}\p{N}](?:['’])?)/u),h=at==null?void 0:at[0],w=Q.slice((h==null?void 0:h.length)||0);if(!h||/[\uD800-\uDFFF]/.test(h))continue;let g=document.createElement("span");g.textContent=h,g.dataset.snapdomPseudo="::first-letter";let b=Lt(i),y=bt(b,"span");n.styleMap.set(g,y);let $=document.createTextNode(w);e.replaceChild($,Y),e.insertBefore(g,$);continue}let f=i.content,d=/counter\s*\(|counters\s*\(/.test(f)?"- ":Xt(f),S=i.backgroundImage,x=i.backgroundColor,E=i.fontFamily,u=parseInt(i.fontSize)||32,p=parseInt(i.fontWeight)||!1,k=i.color||"#000",P=i.display,N=parseFloat(i.width),_=parseFloat(i.height),v=i.borderStyle,C=parseFloat(i.borderWidth),W=i.transform,R=tt(E),T=f!=="none"&&d!=="",q=S&&S!=="none",G=x&&x!=="transparent"&&x!=="rgba(0, 0, 0, 0)",ot=P!=="inline"&&(N>0||_>0),rt=v&&v!=="none"&&C>0,ct=W&&W!=="none";if(!(T||q||G||ot||rt||ct))continue;let j=document.createElement("span");j.dataset.snapdomPseudo=c,j.style.verticalAlign="middle";let K=Lt(i),et=bt(K,"span");if(n.styleMap.set(j,et),R&&d.length===1){let{dataUrl:H,width:X,height:Y}=yield de(d,E,p,u,k),Q=document.createElement("img");Q.src=H,Q.style=`height:${u}px;width:${X/Y*u}px;object-fit:contain;`,j.appendChild(Q),e.dataset.snapdomHasIcon="true"}else if(d.startsWith("url(")){let H=ut(d);if(H!=null&&H.trim())try{let X=document.createElement("img"),Y=yield z(xt(H),{as:"dataURL",useProxy:o.useProxy});X.src=Y.data,X.style=`width:${u}px;height:auto;object-fit:contain;`,j.appendChild(X)}catch(X){console.error(`[snapdom] Error in pseudo ${c} for`,t,X)}}else!R&&T&&(j.textContent=d);if(q)try{let H=pt(S),X=yield Promise.all(H.map(ht));j.style.backgroundImage=X.join(", ")}catch(H){console.warn(`[snapdom] Failed to inline background-image for ${c}`,H)}if(G&&(j.style.backgroundColor=x),!(j.childNodes.length>0||((s=j.textContent)==null?void 0:s.trim())!==""||q||G||ot||rt||ct))continue;c==="::before"?e.insertBefore(j,e.firstChild):e.appendChild(j)}catch(i){console.warn(`[snapdom] Failed to capture ${c} for`,t,i)}let r=Array.from(t.children),a=Array.from(e.children).filter(c=>!c.dataset.snapdomPseudo);for(let c=0;c<Math.min(r.length,a.length);c++)yield Qt(r[c],a[c],n,o)})}function he(t){if(!t)return;let e=new Set;if(t.querySelectorAll("use").forEach(c=>{let i=c.getAttribute("xlink:href")||c.getAttribute("href");i&&i.startsWith("#")&&e.add(i.slice(1))}),!e.size)return;let n=Array.from(document.querySelectorAll("svg > symbol, svg > defs")),o=n.filter(c=>c.tagName.toLowerCase()==="symbol"),r=n.filter(c=>c.tagName.toLowerCase()==="defs"),a=t.querySelector("svg.inline-defs-container");a||(a=document.createElementNS("http://www.w3.org/2000/svg","svg"),a.setAttribute("aria-hidden","true"),a.setAttribute("style","position: absolute; width: 0; height: 0; overflow: hidden;"),a.classList.add("inline-defs-container"),t.insertBefore(a,t.firstChild));let s=new Set;t.querySelectorAll("symbol[id], defs > *[id]").forEach(c=>{s.add(c.id)}),e.forEach(c=>{if(s.has(c))return;let i=o.find(l=>l.id===c);if(i){a.appendChild(i.cloneNode(!0)),s.add(c);return}for(let l of r){let f=l.querySelector(`#${CSS.escape(c)}`);if(f){let d=a.querySelector("defs");d||(d=document.createElementNS("http://www.w3.org/2000/svg","defs"),a.appendChild(d)),d.appendChild(f.cloneNode(!0)),s.add(c);break}}})}function pe(n){return A(this,arguments,function*(t,e={}){var i,l;let o={styleMap:m.session.styleMap,styleCache:m.session.styleCache,nodeMap:m.session.nodeMap},r,a="",s="";bn(t);try{he(t)}catch(f){console.warn("inlineExternal defs or symbol failed:",f)}try{r=yield $t(t,o,e,t)}catch(f){throw console.warn("deepClone failed:",f),f}try{yield Qt(t,r,o,e)}catch(f){console.warn("inlinePseudoElements failed:",f)}yield $n(r);try{let f=r.querySelectorAll("style[data-sd]");for(let d of f)s+=d.textContent||"",d.remove()}catch(f){}let c=Vt(o.styleMap);a=Array.from(c.entries()).map(([f,d])=>`.${d}{${f}}`).join(""),a=s+a;for(let[f,d]of o.styleMap.entries()){if(f.tagName==="STYLE")continue;if(f.getRootNode&&f.getRootNode()instanceof ShadowRoot){f.setAttribute("style",d.replace(/;/g,"; "));continue}let S=c.get(d);S&&f.classList.add(S);let x=(i=f.style)==null?void 0:i.backgroundImage,E=(l=f.dataset)==null?void 0:l.snapdomHasIcon;x&&x!=="none"&&(f.style.backgroundImage=x),E&&(f.style.verticalAlign="middle",f.style.display="inline")}for(let[f,d]of o.nodeMap.entries()){let S=d.scrollLeft,x=d.scrollTop;if((S||x)&&f instanceof HTMLElement){f.style.overflow="hidden",f.style.scrollbarWidth="none",f.style.msOverflowStyle="none";let u=document.createElement("div");for(u.style.transform=`translate(${-S}px, ${-x}px)`,u.style.willChange="transform",u.style.display="inline-block",u.style.width="100%";f.firstChild;)u.appendChild(f.firstChild);f.appendChild(u)}}if(t===o.nodeMap.get(r)){let f=o.styleCache.get(t)||window.getComputedStyle(t);o.styleCache.set(t,f);let d=Ot(f.transform);r.style.margin="0",r.style.position="static",r.style.top="auto",r.style.left="auto",r.style.right="auto",r.style.bottom="auto",r.style.zIndex="auto",r.style.float="none",r.style.clear="none",r.style.transform=d||""}for(let[f,d]of o.nodeMap.entries())d.tagName==="PRE"&&(f.style.marginTop="0",f.style.marginBlockStart="0");return{clone:r,classCSS:a,styleCache:o.styleCache}})}function bn(t){let e=getComputedStyle(t),n=e.outlineStyle,o=e.outlineWidth,r=e.borderStyle,a=e.borderWidth,s=n!=="none"&&parseFloat(o)>0,c=r==="none"||parseFloat(a)===0;s&&c&&(t.style.border=`${o} solid transparent`)}var At=new Map;function Et(t){return A(this,null,function*(){var n;if((n=m.resource)!=null&&n.has(t))return m.resource.get(t);if(At.has(t))return At.get(t);let e=A(null,null,function*(){var r;let o=yield z(t,{as:"dataURL",silent:!0});if(!o.ok||typeof o.data!="string")throw new Error(`[snapDOM] Failed to read blob URL: ${t}`);return(r=m.resource)==null||r.set(t,o.data),o.data});At.set(t,e);try{let o=yield e;return At.set(t,o),o}catch(o){throw At.delete(t),o}})}var Sn=/\bblob:[^)"'\s]+/g;function me(t){return A(this,null,function*(){if(!t||t.indexOf("blob:")===-1)return t;let e=Array.from(new Set(t.match(Sn)||[]));if(e.length===0)return t;let n=t;for(let o of e)try{let r=yield Et(o);n=n.split(o).join(r)}catch(r){}return n})}function Wt(t){return typeof t=="string"&&t.startsWith("blob:")}function xn(t){return(t||"").split(",").map(e=>e.trim()).filter(Boolean).map(e=>{let n=e.match(/^(\S+)(\s+.+)?$/);return n?{url:n[1],desc:n[2]||""}:null}).filter(Boolean)}function Cn(t){return t.map(e=>e.desc?`${e.url} ${e.desc.trim()}`:e.url).join(", ")}function $n(t){return A(this,null,function*(){var s,c;if(!t)return;let e=t.querySelectorAll?t.querySelectorAll("img"):[];for(let i of e)try{let f=i.getAttribute("src")||i.currentSrc||"";if(Wt(f)){let S=yield Et(f);i.setAttribute("src",S)}let d=i.getAttribute("srcset");if(d&&d.includes("blob:")){let S=xn(d),x=!1;for(let E of S)if(Wt(E.url))try{E.url=yield Et(E.url),x=!0}catch(u){}x&&i.setAttribute("srcset",Cn(S))}}catch(l){}let n=t.querySelectorAll?t.querySelectorAll("image"):[];for(let i of n)try{let l="http://www.w3.org/1999/xlink",f=i.getAttribute("href")||((s=i.getAttributeNS)==null?void 0:s.call(i,l,"href"));if(Wt(f)){let d=yield Et(f);i.setAttribute("href",d),(c=i.removeAttributeNS)==null||c.call(i,l,"href")}}catch(l){}let o=t.querySelectorAll?t.querySelectorAll("[style*='blob:']"):[];for(let i of o)try{let l=i.getAttribute("style");if(l&&l.includes("blob:")){let f=yield me(l);i.setAttribute("style",f)}}catch(l){}let r=t.querySelectorAll?t.querySelectorAll("style"):[];for(let i of r)try{let l=i.textContent||"";l.includes("blob:")&&(i.textContent=yield me(l))}catch(l){}let a=["poster"];for(let i of a){let l=t.querySelectorAll?t.querySelectorAll(`[${i}^='blob:']`):[];for(let f of l)try{let d=f.getAttribute(i);Wt(d)&&f.setAttribute(i,yield Et(d))}catch(d){}}})}function ge(n){return A(this,arguments,function*(t,e={}){let o=Array.from(t.querySelectorAll("img")),r=a=>A(null,null,function*(){var d,S,x,E;if(!a.getAttribute("src")){let u=a.currentSrc||a.src||"";u&&a.setAttribute("src",u)}a.removeAttribute("srcset"),a.removeAttribute("sizes");let s=a.src||"";if(!s)return;let c=yield z(s,{as:"dataURL",useProxy:e.useProxy});if(c.ok&&typeof c.data=="string"&&c.data.startsWith("data:")){a.src=c.data,a.width||(a.width=a.naturalWidth||100),a.height||(a.height=a.naturalHeight||100);return}let{defaultImageUrl:i}=e||{};if(i)try{let u=parseInt(((d=a.dataset)==null?void 0:d.snapdomWidth)||"",10)||0,p=parseInt(((S=a.dataset)==null?void 0:S.snapdomHeight)||"",10)||0,k=parseInt(a.getAttribute("width")||"",10)||0,P=parseInt(a.getAttribute("height")||"",10)||0,N=parseFloat(((x=a.style)==null?void 0:x.width)||"")||0,_=parseFloat(((E=a.style)==null?void 0:E.height)||"")||0,v=u||N||k||a.width||void 0,C=p||_||P||a.height||void 0,W=typeof i=="function"?yield i({width:v,height:C,src:s,element:a}):i;if(W){let R=yield z(W,{as:"dataURL",useProxy:e.useProxy});a.src=R.data,!a.width&&v&&(a.width=v),!a.height&&C&&(a.height=C),a.width||(a.width=a.naturalWidth||100),a.height||(a.height=a.naturalHeight||100);return}}catch(u){}let l=a.width||a.naturalWidth||100,f=a.height||a.naturalHeight||100;if(e.placeholders!==!1){let u=document.createElement("div");u.style.cssText=[`width:${l}px`,`height:${f}px`,"background:#ccc","display:inline-block","text-align:center",`line-height:${f}px`,"color:#666","font-size:12px","overflow:hidden"].join(";"),u.textContent="img",a.replaceWith(u)}else{let u=document.createElement("div");u.style.cssText=`display:inline-block;width:${l}px;height:${f}px;visibility:hidden;`,a.replaceWith(u)}});for(let a=0;a<o.length;a+=4){let s=o.slice(a,a+4).map(r);yield Promise.allSettled(s)}})}function Ut(r,a,s){return A(this,arguments,function*(t,e,n,o={}){let c=[[t,e]],i=["background-image","mask","mask-image","-webkit-mask-image","mask-source","mask-box-image-source","mask-border-source","-webkit-mask-box-image-source","border-image","border-image-source","border-image-slice","border-image-width","border-image-outset","border-image-repeat"];for(;c.length;){let[l,f]=c.shift(),d=n.get(l)||mt(l);n.has(l)||n.set(l,d);let S=(()=>{let u=d.getPropertyValue("border-image"),p=d.getPropertyValue("border-image-source");return u&&u!=="none"||p&&p!=="none"})();for(let u of i){if(["border-image-slice","border-image-width","border-image-outset","border-image-repeat"].includes(u)&&!S)continue;let p=d.getPropertyValue(u);if(!p||p==="none")continue;let k=pt(p),P=yield Promise.all(k.map(N=>ht(N,o)));P.some(N=>N&&N!=="none"&&!/^url\(undefined/.test(N))&&f.style.setProperty(u,P.join(", "))}let x=Array.from(l.children),E=Array.from(f.children);for(let u=0;u<Math.min(x.length,E.length);u++)c.push([x[u],E[u]])}})}function we(t,e){return A(this,null,function*(){if(!t)throw new Error("Element cannot be null or undefined");Mt(e.cache);let n=e.fast,o,r,a,s="",c="",i,l;({clone:o,classCSS:r,styleCache:a}=yield pe(t,e)),yield new Promise(x=>{st(()=>A(null,null,function*(){yield ge(o,e),x()}),{fast:n})}),yield new Promise(x=>{st(()=>A(null,null,function*(){yield Ut(t,o,a,e),x()}),{fast:n})}),e.embedFonts&&(yield new Promise(x=>{st(()=>A(null,null,function*(){let E=It(t),u=Pt(t);if(it){let p=new Set(Array.from(E).map(k=>String(k).split("__")[0]).filter(Boolean));yield _t(p,2)}s=yield Nt({required:E,usedCodepoints:u,preCached:!1,exclude:e.excludeFonts,useProxy:e.useProxy}),x()}),{fast:n})}));let f=Ht(o).sort(),d=f.join(",");m.baseStyle.has(d)?c=m.baseStyle.get(d):yield new Promise(x=>{st(()=>{c=zt(f),m.baseStyle.set(d,c),x()},{fast:n})}),yield new Promise(x=>{st(()=>{var Y,Q,at,h,w;let E=An(t),u=E.width,p=E.height,k=Number.isFinite(e.width),P=Number.isFinite(e.height),N=(Y=e.scale)!=null?Y:1,_=typeof N=="number"&&N!==1;if(!_){let g=E.width/E.height;k&&P?(u=e.width,p=e.height):k?(u=e.width,p=u/g):P&&(p=e.height,u=p*g)}u=Math.max(1,Math.ceil(u)),p=Math.max(1,Math.ceil(p));let v=getComputedStyle(t),C=v.transform&&v.transform!=="none"?v.transform:"",W=Mn(t),R,T,q,G,ot=0,rt=0;if(vn(t)){let g=Rn({baseTransform:C,rotate:W.rotate||"0deg",scale:W.scale,translate:W.translate}),b=(at=(Q=g.e)!=null?Q:g.m41)!=null?at:0,y=(w=(h=g.f)!=null?h:g.m42)!=null?w:0;ot=-b,rt=-y;let $=g.is2D?ye(g):ye(new DOMMatrix(g.toString())),M=kn(u,p,$);R=Math.max(1,Math.ceil(M.width)),T=Math.max(1,Math.ceil(M.height)),q=-M.minX,G=-M.minY}else{let g=t.getBoundingClientRect(),b=Fn(g,{top:0,right:0,bottom:0,left:0});R=Math.max(1,b.width),T=Math.max(1,b.height),q=-(b.x-Math.floor(g.left)),G=-(b.y-Math.floor(g.top))}let ct="http://www.w3.org/2000/svg",Z=document.createElementNS(ct,"foreignObject");Z.setAttribute("width","100%"),Z.setAttribute("height","100%"),Z.setAttribute("x",String(q)),Z.setAttribute("y",String(G)),Z.style.overflow="visible";let j=document.createElement("style");j.textContent=c+s+"svg{overflow:visible;} foreignObject{overflow:visible;}"+r,Z.appendChild(j);let K=document.createElement("div");K.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),K.style.width=`${u}px`,K.style.height=`${p}px`,K.style.overflow="visible",K.style.transformOrigin="0 0";let et=[];if((ot||rt)&&et.push(`translate(${ot}px, ${rt}px)`),!_&&(k||P)){let g=E.width?u/E.width:1,b=E.height?p/E.height:1;et.push(`scale(${g}, ${b})`)}else _&&et.push(`scale(${N})`);et.length&&(K.style.transform=et.join(" ")),o.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),o.style.transformOrigin="0 0",o.style.position="static",o.style.left="0",o.style.top="0",C&&(o.style.transform=C),o.style.rotate=W.rotate||"0deg",o.style.scale=W.scale||"1",o.style.translate=W.translate||"0 0",K.appendChild(o),Z.appendChild(K);let St=new XMLSerializer().serializeToString(Z);l=`<svg xmlns="${ct}" width="${R}" height="${T}" viewBox="0 0 ${R} ${T}">`+St+"</svg>",i=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(l)}`,x()},{fast:n})});let S=document.getElementById("snapdom-sandbox");return S&&S.style.position==="absolute"&&S.remove(),i})}function An(t){let e=getComputedStyle(t),n=a=>parseFloat(a)||0,o=n(e.width),r=n(e.height);return e.boxSizing==="content-box"&&(o+=n(e.paddingLeft)+n(e.paddingRight)+n(e.borderLeftWidth)+n(e.borderRightWidth),r+=n(e.paddingTop)+n(e.paddingBottom)+n(e.borderTopWidth)+n(e.borderBottomWidth)),{width:o,height:r}}function En(t){let e=getComputedStyle(t).transform;if(!e||e==="none")return new DOMMatrix;try{return new DOMMatrix(e)}catch(n){return new WebKitCSSMatrix(e)}}function ye(t){return new DOMMatrix([t.a,t.b,t.c,t.d,0,0])}function kn(t,e,n){let r=[{x:0,y:0},{x:t,y:0},{x:0,y:e},{x:t,y:e}].map(l=>({x:n.a*l.x+n.c*l.y,y:n.b*l.x+n.d*l.y})),a=Math.min(...r.map(l=>l.x)),s=Math.max(...r.map(l=>l.x)),c=Math.min(...r.map(l=>l.y)),i=Math.max(...r.map(l=>l.y));return{minX:a,minY:c,width:s-a,height:i-c}}function Mn(t){var r,a,s,c,i,l,f,d,S,x,E,u,p,k;let e={rotate:"0deg",scale:null,translate:null},n=(r=t.computedStyleMap)==null?void 0:r.call(t);if(n){let P=n.get("rotate");if(P){let v=(a=P.angle)!=null?a:P;v&&"unit"in v?e.rotate=v.unit==="rad"?v.value*180/Math.PI+"deg":v.value+v.unit:e.rotate=String(P)}let N=n.get("scale");if(N&&N.length){let v=(c=(s=N[0])==null?void 0:s.value)!=null?c:1,C=(l=(i=N[1])==null?void 0:i.value)!=null?l:v;e.scale=`${v} ${C}`}let _=n.get("translate");if(_&&_.length){let v=(d=(f=_[0])==null?void 0:f.value)!=null?d:0,C=(x=(S=_[1])==null?void 0:S.value)!=null?x:0,W=(u=(E=_[0])==null?void 0:E.unit)!=null?u:"px",R=(k=(p=_[1])==null?void 0:p.unit)!=null?k:"px";e.translate=`${v}${W} ${C}${R}`}return e}let o=getComputedStyle(t);return e.rotate=o.rotate&&o.rotate!=="none"?o.rotate:"0deg",e.scale=o.scale&&o.scale!=="none"?o.scale:null,e.translate=o.translate&&o.translate!=="none"?o.translate:null,e}function vn(t){let e=getComputedStyle(t).transform||"none";return!(e==="none"||e==="matrix(1, 0, 0, 1, 0, 0)"||/^matrix\(\s*1\s*,\s*0\s*,\s*0\s*,\s*1\s*,/i.test(e))}function Fn(t,e){let n=Math.floor(t.left-e.left),o=Math.floor(t.top-e.top),r=Math.ceil(t.width+e.left+e.right),a=Math.ceil(t.height+e.top+e.bottom);return{x:n,y:o,width:r,height:a}}var te=null;function Ln(){if(te)return te;let t=document.createElement("div");return t.id="snapdom-measure-slot",t.setAttribute("aria-hidden","true"),Object.assign(t.style,{position:"absolute",left:"-99999px",top:"0px",width:"0px",height:"0px",overflow:"hidden",opacity:"0",pointerEvents:"none",contain:"size layout style"}),document.documentElement.appendChild(t),te=t,t}function Rn(t){let e=Ln(),n=document.createElement("div");n.style.transformOrigin="0 0",t.baseTransform&&(n.style.transform=t.baseTransform),t.rotate&&(n.style.rotate=t.rotate),t.scale&&(n.style.scale=t.scale),t.translate&&(n.style.translate=t.translate),e.appendChild(n);let o=En(n);return e.removeChild(n),o}function Tn(t){if(t===!0)return"soft";if(t===!1)return"disabled";if(typeof t=="string"){let e=t.toLowerCase().trim();if(e==="disabled"||e==="full"||e==="auto"||e==="soft")return e}return"soft"}function be(t={}){var o,r,a,s,c,i,l,f,d,S,x,E,u,p,k,P;let e=(o=t.format)!=null?o:"png",n=Tn(t.cache);return{debug:(r=t.debug)!=null?r:!1,fast:(a=t.fast)!=null?a:!0,scale:(s=t.scale)!=null?s:1,exclude:(c=t.exclude)!=null?c:[],filter:(i=t.filter)!=null?i:null,placeholders:t.placeholders!==!1,embedFonts:(l=t.embedFonts)!=null?l:!1,iconFonts:Array.isArray(t.iconFonts)?t.iconFonts:t.iconFonts?[t.iconFonts]:[],localFonts:Array.isArray(t.localFonts)?t.localFonts:[],excludeFonts:(f=t.excludeFonts)!=null?f:void 0,defaultImageUrl:(d=t.defaultImageUrl)!=null?d:void 0,cache:n,useProxy:typeof t.useProxy=="string"?t.useProxy:"",width:(S=t.width)!=null?S:null,height:(x=t.height)!=null?x:null,format:e,type:(E=t.type)!=null?E:"svg",quality:(u=t.quality)!=null?u:.92,dpr:(p=t.dpr)!=null?p:window.devicePixelRatio||1,backgroundColor:(k=t.backgroundColor)!=null?k:["jpg","jpeg","webp"].includes(e)?"#ffffff":null,filename:(P=t.filename)!=null?P:"snapDOM"}}function Se(t,e){return A(this,null,function*(){let n=new Image;return n.src=t,yield n.decode(),e.scale!==1&&(n.style.width=`${n.naturalWidth*e.scale}px`,n.style.height=`${n.naturalHeight*e.scale}px`),n})}function lt(t,e){return A(this,null,function*(){let{scale:n,dpr:o}=e,r=it(),a=new Image;a.crossOrigin="anonymous",a.loading="eager",a.decoding="sync",a.src=t;let s=null;r&&(s=document.createElement("div"),s.setAttribute("aria-hidden","true"),s.style.cssText="position:absolute;left:-99999px;top:0;width:0;height:0;overflow:hidden;opacity:0;pointer-events:none;contain:size layout style;",document.body.appendChild(s),s.appendChild(a)),yield a.decode(),r&&(yield new Promise(d=>setTimeout(d,100)));let c=a.naturalWidth*n,i=a.naturalHeight*n,l=document.createElement("canvas");l.width=Math.ceil(c*o),l.height=Math.ceil(i*o),l.style.width=`${c}px`,l.style.height=`${i}px`;let f=l.getContext("2d");if(o!==1&&f.scale(o,o),f.drawImage(a,0,0,c,i),s&&s.parentNode)try{s.parentNode.removeChild(s)}catch(d){}return l})}function Bt(t,e){return A(this,null,function*(){let n=e.type;if(n==="svg"){let a=decodeURIComponent(t.split(",")[1]);return new Blob([a],{type:"image/svg+xml"})}let o=yield lt(t,e),r=e.backgroundColor?dt(o,e.backgroundColor):o;return new Promise(a=>r.toBlob(s=>a(s),`image/${n}`,e.quality))})}function xe(t,e){return A(this,null,function*(){let n=yield lt(t,e),o=e.backgroundColor?dt(n,e.backgroundColor):n,r=new Image;return r.src=o.toDataURL(`image/${e.format}`,e.quality),yield r.decode(),r.style.width=`${o.width/e.dpr}px`,r.style.height=`${o.height/e.dpr}px`,r})}function Ce(t,e){return A(this,null,function*(){if(e.format==="svg"){let a=yield Bt(t,J(V({},e),{type:"svg"})),s=URL.createObjectURL(a),c=document.createElement("a");c.href=s,c.download=e.filename,c.click(),URL.revokeObjectURL(s);return}let n=yield lt(t,e),o=e.backgroundColor?dt(n,e.backgroundColor):n,r=document.createElement("a");r.href=o.toDataURL(`image/${e.format}`,e.quality),r.download=e.filename,r.click()})}var $e=Symbol("snapdom.internal");function D(t,e){return A(this,null,function*(){if(!t)throw new Error("Element cannot be null or undefined");let n=be(e);return n.iconFonts&&n.iconFonts.length>0&&ue(n.iconFonts),n.snap||(n.snap={toPng:(o,r)=>D.toPng(o,r),toImg:(o,r)=>D.toImg(o,r)}),D.capture(t,n,$e)})}D.capture=(t,e,n)=>A(null,null,function*(){if(n!==$e)throw new Error("[snapdom.capture] is internal. Use snapdom(...) instead.");let o=yield we(t,e),r=s=>V(V({},e),s||{}),a=s=>c=>xe(o,r(J(V({},c||{}),{format:s})));return{url:o,toRaw:()=>o,toImg:s=>Se(o,r(s)),toCanvas:s=>lt(o,r(s)),toBlob:s=>Bt(o,r(s)),toPng:a("png"),toJpg:a("jpeg"),toWebp:a("webp"),download:s=>Ce(o,r(s))}});D.toRaw=(t,e)=>D(t,e).then(n=>n.toRaw());D.toImg=(t,e)=>D(t,e).then(n=>n.toImg());D.toCanvas=(t,e)=>D(t,e).then(n=>n.toCanvas());D.toBlob=(t,e)=>D(t,e).then(n=>n.toBlob());D.toPng=(t,e)=>D(t,J(V({},e),{format:"png"})).then(n=>n.toPng());D.toJpg=(t,e)=>D(t,J(V({},e),{format:"jpeg"})).then(n=>n.toJpg());D.toWebp=(t,e)=>D(t,J(V({},e),{format:"webp"})).then(n=>n.toWebp());D.download=(t,e)=>D(t,e).then(n=>n.download());function Ae(){return A(this,arguments,function*(t=document,e={}){var i;let{embedFonts:n=!0,cacheOpt:o="full",useProxy:r=""}=e;Mt(o);try{yield document.fonts.ready}catch(l){}qt(),m.session=m.session||{},m.session.styleCache||(m.session.styleCache=new WeakMap);try{yield Ut(t,void 0,m.session.styleCache,{useProxy:r})}catch(l){}let a=[],s=[];try{t!=null&&t.querySelectorAll&&(a=Array.from(t.querySelectorAll("img[src]")),s=Array.from(t.querySelectorAll("*")))}catch(l){}let c=[];for(let l of a){let f=l==null?void 0:l.src;if(f&&!m.image.has(f)){let d=Promise.resolve().then(()=>z(f,{as:"dataURL",useProxy:r})).then(S=>{m.image.set(f,S)}).catch(()=>{});c.push(d)}}for(let l of s){let f="";try{f=mt(l).backgroundImage}catch(d){}if(f&&f!=="none"){let d=pt(f);for(let S of d)if(S.startsWith("url(")){let x=Promise.resolve().then(()=>ht(S,J(V({},e),{useProxy:r}))).catch(()=>{});c.push(x)}}}if(n)try{let l=It(t),f=Pt(t);if(typeof it=="function"?it():it){let d=new Set(Array.from(l).map(S=>String(S).split("__")[0]).filter(Boolean));yield _t(d,2)}yield Nt({required:l,usedCodepoints:f,exclude:e.excludeFonts,localFonts:e.localFonts,useProxy:(i=e.useProxy)!=null?i:r})}catch(l){}yield Promise.allSettled(c)})}typeof window!="undefined"&&(window.snapdom=D,window.preCache=Ae);})();
5
+ `:""}function an(t){t&&(t.nodeType===Node.ELEMENT_NODE&&t.setAttribute("data-sd-slotted",""),t.querySelectorAll&&t.querySelectorAll("*").forEach(e=>e.setAttribute("data-sd-slotted","")))}function sn(t,e=3){return $(this,null,function*(){let n=()=>{var a;try{return t.contentDocument||((a=t.contentWindow)==null?void 0:a.document)||null}catch(s){return null}},o=n(),r=0;for(;r<e&&(!o||!o.body&&!o.documentElement);)yield new Promise(a=>setTimeout(a,0)),o=n(),r++;return o&&(o.body||o.documentElement)?o:null})}function cn(t){let e=t.getBoundingClientRect(),n=0,o=0,r=0,a=0;try{let i=getComputedStyle(t);n=parseFloat(i.borderLeftWidth)||0,o=parseFloat(i.borderRightWidth)||0,r=parseFloat(i.borderTopWidth)||0,a=parseFloat(i.borderBottomWidth)||0}catch(i){}let s=Math.max(0,Math.round(e.width-(n+o))),c=Math.max(0,Math.round(e.height-(r+a)));return{contentWidth:s,contentHeight:c,rect:e}}function ln(t,e,n){let o=t.createElement("style");return o.setAttribute("data-sd-iframe-pin",""),o.textContent=`html, body {margin: 0 !important;padding: 0 !important;width: ${e}px !important;height: ${n}px !important;min-width: ${e}px !important;min-height: ${n}px !important;box-sizing: border-box !important;overflow: hidden !important;background-clip: border-box !important;}`,(t.head||t.documentElement).appendChild(o),()=>{try{o.remove()}catch(r){}}}function fn(t,e,n){return $(this,null,function*(){let o=yield sn(t,3);if(!o)throw new Error("iframe document not accessible/ready");let{contentWidth:r,contentHeight:a,rect:s}=cn(t),c=n==null?void 0:n.snap;if(!c||typeof c.toPng!="function")throw new Error("snapdom.toPng not available in iframe or window");let i=J(V({},n),{scale:1}),f=ln(o,r,a),l;try{l=yield c.toPng(o.documentElement,i)}finally{f()}l.style.display="block",l.style.width=`${r}px`,l.style.height=`${a}px`;let d=document.createElement("div");return e.nodeMap.set(d,t),gt(t,d,e,n),d.style.overflow="hidden",d.style.display="block",d.style.width||(d.style.width=`${Math.round(s.width)}px`),d.style.height||(d.style.height=`${Math.round(s.height)}px`),d.appendChild(l),d})}function kt(t,e,n){return $(this,null,function*(){var f,l,d,S,x,M;if(!t)throw new Error("Invalid node");let o=new Set,r=null,a=null;if(t.nodeType===Node.ELEMENT_NODE){let u=(t.localName||t.tagName||"").toLowerCase();if(t.id==="snapdom-sandbox"||t.hasAttribute("data-snapdom-sandbox")||Ft.has(u))return null}if(t.nodeType===Node.TEXT_NODE||t.nodeType!==Node.ELEMENT_NODE)return t.cloneNode(!0);if(t.getAttribute("data-capture")==="exclude"){let u=document.createElement("div"),g=t.getBoundingClientRect();return u.style.cssText=`display:inline-block;width:${g.width}px;height:${g.height}px;visibility:hidden;`,u}if(n.exclude&&Array.isArray(n.exclude))for(let u of n.exclude)try{if((f=t.matches)!=null&&f.call(t,u)){let g=document.createElement("div"),b=t.getBoundingClientRect();return g.style.cssText=`display:inline-block;width:${b.width}px;height:${b.height}px;visibility:hidden;`,g}}catch(g){console.warn(`Invalid selector in exclude option: ${u}`,g)}if(typeof n.filter=="function")try{if(!n.filter(t)){let u=document.createElement("div"),g=t.getBoundingClientRect();return u.style.cssText=`display:inline-block;width:${g.width}px;height:${g.height}px;visibility:hidden;`,u}}catch(u){console.warn("Error in filter function:",u)}if(t.tagName==="IFRAME"){let u=!1;try{u=!!(t.contentDocument||(l=t.contentWindow)!=null&&l.document)}catch(g){u=!1}if(u)try{return yield fn(t,e,n)}catch(g){console.warn("[SnapDOM] iframe rasterization failed, fallback:",g)}if(n.placeholders){let g=document.createElement("div");return g.style.cssText=`width:${t.offsetWidth}px;height:${t.offsetHeight}px;background-image:repeating-linear-gradient(45deg,#ddd,#ddd 5px,#f9f9f9 5px,#f9f9f9 10px);display:flex;align-items:center;justify-content:center;font-size:12px;color:#555;border:1px solid #aaa;`,gt(t,g,e,n),g}else{let g=t.getBoundingClientRect(),b=document.createElement("div");return b.style.cssText=`display:inline-block;width:${g.width}px;height:${g.height}px;visibility:hidden;`,gt(t,b,e,n),b}}if(t.getAttribute("data-capture")==="placeholder"){let u=t.cloneNode(!1);e.nodeMap.set(u,t),gt(t,u,e,n);let g=document.createElement("div");return g.textContent=t.getAttribute("data-placeholder-text")||"",g.style.cssText="color:#666;font-size:12px;text-align:center;line-height:1.4;padding:0.5em;box-sizing:border-box;",u.appendChild(g),u}if(t.tagName==="CANVAS"){let u=t.toDataURL(),g=document.createElement("img");return g.src=u,g.width=t.width,g.height=t.height,e.nodeMap.set(g,t),gt(t,g,e,n),g}let s;try{if(s=t.cloneNode(!1),e.nodeMap.set(s,t),t.tagName==="IMG"){en(t,s);try{let u=t.getBoundingClientRect(),g=Math.round(u.width||0),b=Math.round(u.height||0);if(!g||!b){let F=window.getComputedStyle(t),U=parseFloat(F.width)||0,T=parseFloat(F.height)||0,E=parseInt(t.getAttribute("width")||"",10)||0,k=parseInt(t.getAttribute("height")||"",10)||0,_=t.width||t.naturalWidth||0,N=t.height||t.naturalHeight||0;g=Math.round(g||U||E||_||0),b=Math.round(b||T||k||N||0)}g&&(s.dataset.snapdomWidth=String(g)),b&&(s.dataset.snapdomHeight=String(b))}catch(u){}}}catch(u){throw console.error("[Snapdom] Failed to clone node:",t,u),u}if(t instanceof HTMLTextAreaElement){let u=t.getBoundingClientRect();s.style.width=`${u.width}px`,s.style.height=`${u.height}px`}if(t instanceof HTMLInputElement&&(s.value=t.value,s.setAttribute("value",t.value),t.checked!==void 0&&(s.checked=t.checked,t.checked&&s.setAttribute("checked",""),t.indeterminate&&(s.indeterminate=t.indeterminate))),t instanceof HTMLSelectElement&&(r=t.value),t instanceof HTMLTextAreaElement&&(a=t.value),gt(t,s,e,n),t.shadowRoot){let k=function(N,I){if(N.nodeType===Node.ELEMENT_NODE&&N.tagName==="STYLE")return I(null);kt(N,e,n).then(q=>{I(q||null)}).catch(q=>{I(null)})};try{let N=t.shadowRoot.querySelectorAll("slot");for(let I of N){let q=[];try{q=((d=I.assignedNodes)==null?void 0:d.call(I,{flatten:!0}))||((S=I.assignedNodes)==null?void 0:S.call(I))||[]}catch(K){q=((x=I.assignedNodes)==null?void 0:x.call(I))||[]}for(let K of q)o.add(K)}}catch(N){}let u=Ze(e),g=`[data-sd="${u}"]`;try{s.setAttribute("data-sd",u)}catch(N){}let b=Qe(t.shadowRoot),F=Je(b,g),U=nn(b),T=rn(t,U,g);tn(s,T+F,u);let E=document.createDocumentFragment(),_=yield Yt(Array.from(t.shadowRoot.childNodes),k,n.fast);E.append(..._.filter(N=>!!N)),s.appendChild(E)}if(t.tagName==="SLOT"){let F=function(T,E){kt(T,e,n).then(k=>{k&&an(k),E(k||null)}).catch(k=>{E(null)})},u=((M=t.assignedNodes)==null?void 0:M.call(t,{flatten:!0}))||[],g=u.length>0?u:Array.from(t.childNodes),b=document.createDocumentFragment(),U=yield Yt(Array.from(g),F,n.fast);return b.append(...U.filter(T=>!!T)),b}function c(u,g){if(o.has(u))return g(null);kt(u,e,n).then(b=>{g(b||null)}).catch(b=>{g(null)})}let i=yield Yt(Array.from(t.childNodes),c,n.fast);if(s.append(...i.filter(u=>!!u)),r!==null&&s instanceof HTMLSelectElement){s.value=r;for(let u of s.options)u.value===r?u.setAttribute("selected",""):u.removeAttribute("selected")}return a!==null&&s instanceof HTMLTextAreaElement&&(s.textContent=a),s})}var un=[/font\s*awesome/i,/material\s*icons/i,/ionicons/i,/glyphicons/i,/feather/i,/bootstrap\s*icons/i,/remix\s*icons/i,/heroicons/i,/layui/i,/lucide/i],Jt=[];function ue(t){let e=Array.isArray(t)?t:[t];for(let n of e)n instanceof RegExp?Jt.push(n):typeof n=="string"?Jt.push(new RegExp(n,"i")):console.warn("[snapdom] Ignored invalid iconFont value:",n)}function tt(t){let e=typeof t=="string"?t:"",n=[...un,...Jt];for(let o of n)if(o instanceof RegExp&&o.test(e))return!0;return!!(/icon/i.test(e)||/glyph/i.test(e)||/symbols/i.test(e)||/feather/i.test(e)||/fontawesome/i.test(e))}function de(t,e,n,o=32,r="#000"){return $(this,null,function*(){e=e.replace(/^['"]+|['"]+$/g,"");let a=window.devicePixelRatio||1;yield document.fonts.ready;let s=document.createElement("span");s.textContent=t,s.style.position="absolute",s.style.visibility="hidden",s.style.fontFamily=`"${e}"`,s.style.fontWeight=n||"normal",s.style.fontSize=`${o}px`,s.style.lineHeight="1",s.style.whiteSpace="nowrap",s.style.padding="0",s.style.margin="0",document.body.appendChild(s);let c=s.getBoundingClientRect(),i=Math.ceil(c.width),f=Math.ceil(c.height);document.body.removeChild(s);let l=document.createElement("canvas");l.width=i*a,l.height=f*a;let d=l.getContext("2d");return d.scale(a,a),d.font=n?`${n} ${o}px "${e}"`:`${o}px "${e}"`,d.textAlign="left",d.textBaseline="top",d.fillStyle=r,d.fillText(t,0,0),{dataUrl:l.toDataURL(),width:i,height:f}})}var dn=new Set(["serif","sans-serif","monospace","cursive","fantasy","system-ui","emoji","math","fangsong","ui-serif","ui-sans-serif","ui-monospace","ui-rounded"]);function Rt(t){if(!t)return"";for(let e of t.split(",")){let n=e.trim().replace(/^['"]+|['"]+$/g,"");if(n&&!dn.has(n.toLowerCase()))return n}return""}function Tt(t){let e=String(t!=null?t:"400").trim().toLowerCase();if(e==="normal")return 400;if(e==="bold")return 700;let n=parseInt(e,10);return Number.isFinite(n)?Math.min(900,Math.max(100,n)):400}function Zt(t){let e=String(t!=null?t:"normal").trim().toLowerCase();return e.startsWith("italic")?"italic":e.startsWith("oblique")?"oblique":"normal"}function hn(t){let e=String(t!=null?t:"100%").match(/(\d+(?:\.\d+)?)\s*%/);return e?Math.max(50,Math.min(200,parseFloat(e[1]))):100}function mn(t){let e=String(t||"400").trim(),n=e.match(/^(\d{2,3})\s+(\d{2,3})$/);if(n){let r=Tt(n[1]),a=Tt(n[2]);return{min:Math.min(r,a),max:Math.max(r,a)}}let o=Tt(e);return{min:o,max:o}}function pn(t){let e=String(t||"normal").trim().toLowerCase();return e==="italic"?{kind:"italic"}:e.startsWith("oblique")?{kind:"oblique"}:{kind:"normal"}}function gn(t){let e=String(t||"100%").trim(),n=e.match(/(\d+(?:\.\d+)?)\s*%\s+(\d+(?:\.\d+)?)\s*%/);if(n){let a=parseFloat(n[1]),s=parseFloat(n[2]);return{min:Math.min(a,s),max:Math.max(a,s)}}let o=e.match(/(\d+(?:\.\d+)?)\s*%/),r=o?parseFloat(o[1]):100;return{min:r,max:r}}function yn(t,e){if(!t)return!1;try{let n=new URL(t,location.href);if(n.origin===location.origin)return!0;let r=n.host.toLowerCase();if(["fonts.googleapis.com","fonts.gstatic.com","use.typekit.net","p.typekit.net","kit.fontawesome.com","use.fontawesome.com"].some(c=>r.endsWith(c)))return!0;let s=(n.pathname+n.search).toLowerCase();if(/\bfont(s)?\b/.test(s)||/\.woff2?(\b|$)/.test(s))return!0;for(let c of e){let i=c.toLowerCase().replace(/\s+/g,"+"),f=c.toLowerCase().replace(/\s+/g,"-");if(s.includes(i)||s.includes(f))return!0}return!1}catch(n){return!1}}function wn(t){var n;let e=new Set;for(let o of t||[]){let r=(n=String(o).split("__")[0])==null?void 0:n.trim();r&&e.add(r)}return e}function Nt(){return $(this,arguments,function*({required:t,usedCodepoints:e,exclude:n=void 0,localFonts:o=[],useProxy:r=""}={}){var N,I,q,K,ot,rt,ct,Z,j,G,et,Et,St,H,X,Y,Q,at;t instanceof Set||(t=new Set),e instanceof Set||(e=new Set);let a=new Map;for(let h of t){let[w,p,C,y]=String(h).split("__");if(!w)continue;let A=a.get(w)||[];A.push({w:parseInt(p,10),s:C,st:parseInt(y,10)}),a.set(w,A)}let s=/@import\s+url\(["']?([^"')]+)["']?\)/g,c=/url\((["']?)([^"')]+)\1\)/g,i=/@font-face[^{}]*\{[^}]*\}/g;function f(h,w,p,C){if(!a.has(h))return!1;let y=a.get(h),A=mn(p),v=pn(w),L=gn(C),R=A.min!==A.max,W=A.min,P=B=>v.kind==="normal"&&B==="normal"||v.kind!=="normal"&&(B==="italic"||B==="oblique"),O=!1;for(let B of y){let nt=R?B.w>=A.min&&B.w<=A.max:B.w===W,ft=P(Zt(B.s)),yt=B.st>=L.min&&B.st<=L.max;if(nt&&ft&&yt){O=!0;break}}if(O)return!0;if(!R)for(let B of y){let nt=P(Zt(B.s)),ft=B.st>=L.min&&B.st<=L.max;if(Math.abs(W-B.w)<=300&&nt&&ft)return!0}return!1}function l(h){if(!h)return[];let w=[],p=h.split(",").map(C=>C.trim()).filter(Boolean);for(let C of p){let y=C.match(/^U\+([0-9A-Fa-f?]+)(?:-([0-9A-Fa-f?]+))?$/);if(!y)continue;let A=y[1],v=y[2],L=R=>{if(!R.includes("?"))return parseInt(R,16);let W=parseInt(R.replace(/\?/g,"0"),16),P=parseInt(R.replace(/\?/g,"F"),16);return[W,P]};if(v){let R=L(A),W=L(v),P=Array.isArray(R)?R[0]:R,O=Array.isArray(W)?W[1]:W;w.push([Math.min(P,O),Math.max(P,O)])}else{let R=L(A);Array.isArray(R)?w.push([R[0],R[1]]):w.push([R,R])}}return w}function d(h,w){if(!w.length||!h||h.size===0)return!0;for(let p of h)for(let[C,y]of w)if(p>=C&&p<=y)return!0;return!1}function S(h,w){let p=[];if(!h)return p;for(let C of h.matchAll(c)){let y=(C[2]||"").trim();if(!(!y||y.startsWith("data:"))){if(!/^https?:/i.test(y))try{y=new URL(y,w||location.href).href}catch(A){}p.push(y)}}return p}function x(h,w){return $(this,null,function*(){var C,y,A,v,L;let p=h;for(let R of h.matchAll(c)){let W=ut(R[0]);if(!W)continue;let P=W;if(!P.startsWith("http")&&!P.startsWith("data:"))try{P=new URL(P,w||location.href).href}catch(O){}if(!tt(P)){if((C=m.resource)!=null&&C.has(P)){(y=m.font)==null||y.add(P),p=p.replace(R[0],`url(${m.resource.get(P)})`);continue}if(!((A=m.font)!=null&&A.has(P)))try{let O=yield z(P,{as:"dataURL",useProxy:r,silent:!0});if(O.ok&&typeof O.data=="string"){let B=O.data;(v=m.resource)==null||v.set(P,B),(L=m.font)==null||L.add(P),p=p.replace(R[0],`url(${B})`)}}catch(O){console.warn("[snapDOM] Failed to fetch font resource:",P)}}}return p})}function M(h){if(!h.length)return null;let w=(L,R)=>h.some(([W,P])=>!(P<L||W>R)),p=w(0,255)||w(305,305),C=w(256,591)||w(7680,7935),y=w(880,1023),A=w(1024,1279);return w(7840,7929)||w(258,259)||w(416,417)||w(431,432)?"vietnamese":A?"cyrillic":y?"greek":C?"latin-ext":p?"latin":null}function u(h={}){let w=new Set((h.families||[]).map(y=>String(y).toLowerCase())),p=new Set((h.domains||[]).map(y=>String(y).toLowerCase())),C=new Set((h.subsets||[]).map(y=>String(y).toLowerCase()));return(y,A)=>{if(w.size&&w.has(y.family.toLowerCase()))return!0;if(p.size)for(let v of y.srcUrls)try{if(p.has(new URL(v).host.toLowerCase()))return!0}catch(L){}if(C.size){let v=M(A);if(v&&C.has(v))return!0}return!1}}let g=u(n);function b(h){var A,v,L,R,W,P;if(!h)return h;let w=/@font-face[^{}]*\{[^}]*\}/gi,p=new Set,C=[];for(let O of h.match(w)||[]){let B=((A=O.match(/font-family:\s*([^;]+);/i))==null?void 0:A[1])||"",nt=Rt(B),ft=(((v=O.match(/font-weight:\s*([^;]+);/i))==null?void 0:v[1])||"400").trim(),yt=(((L=O.match(/font-style:\s*([^;]+);/i))==null?void 0:L[1])||"normal").trim(),$e=(((R=O.match(/font-stretch:\s*([^;]+);/i))==null?void 0:R[1])||"100%").trim(),Ee=(((W=O.match(/unicode-range:\s*([^;]+);/i))==null?void 0:W[1])||"").trim(),ee=(((P=O.match(/src\s*:\s*([^;]+);/i))==null?void 0:P[1])||"").trim(),ne=S(ee,location.href),Me=ne.length?ne.map(ve=>String(ve).toLowerCase()).sort().join("|"):ee.toLowerCase(),oe=[String(nt||"").toLowerCase(),ft,yt,$e,Ee.toLowerCase(),Me].join("|");p.has(oe)||(p.add(oe),C.push(O))}if(C.length===0)return h;let y=0;return h.replace(w,()=>C[y++]||"")}function F(){let h=Array.from(t||[]).sort().join("|"),w=n?JSON.stringify({families:(n.families||[]).map(y=>String(y).toLowerCase()).sort(),domains:(n.domains||[]).map(y=>String(y).toLowerCase()).sort(),subsets:(n.subsets||[]).map(y=>String(y).toLowerCase()).sort()}):"",p=(o||[]).map(y=>`${(y.family||"").toLowerCase()}::${y.weight||"normal"}::${y.style||"normal"}::${y.src||""}`).sort().join("|");return`fonts-embed-css::req=${h}::ex=${w}::lf=${p}::px=${r||""}`}let U=F();if((N=m.resource)!=null&&N.has(U))return m.resource.get(U);let T=wn(t),E=[];for(let h of document.querySelectorAll("style")){let w=h.textContent||"";for(let p of w.matchAll(s)){let C=p[1];if(!C||tt(C))continue;!!document.querySelector(`link[rel="stylesheet"][href="${C}"]`)||E.push(C)}}E.length&&(yield Promise.all(E.map(h=>new Promise(w=>{if(document.querySelector(`link[rel="stylesheet"][href="${h}"]`))return w(null);let p=document.createElement("link");p.rel="stylesheet",p.href=h,p.setAttribute("data-snapdom","injected-import"),p.onload=()=>w(p),p.onerror=()=>w(null),document.head.appendChild(p)}))));let k="",_=Array.from(document.querySelectorAll('link[rel="stylesheet"]')).filter(h=>!!h.href);for(let h of _)try{if(tt(h.href))continue;let w="",p=!1;try{p=new URL(h.href,location.href).origin===location.origin}catch(y){}if(!p&&!yn(h.href,T))continue;if(p){let y=Array.from(document.styleSheets).find(A=>A.href===h.href);if(y)try{let A=y.cssRules||[];w=Array.from(A).map(v=>v.cssText).join("")}catch(A){}}if(!w&&(w=(yield z(h.href,{as:"text",useProxy:r})).data,tt(h.href)))continue;let C="";for(let y of w.match(i)||[]){let A=(((I=y.match(/font-family:\s*([^;]+);/i))==null?void 0:I[1])||"").trim(),v=Rt(A);if(!v||tt(v))continue;let L=(((q=y.match(/font-weight:\s*([^;]+);/i))==null?void 0:q[1])||"400").trim(),R=(((K=y.match(/font-style:\s*([^;]+);/i))==null?void 0:K[1])||"normal").trim(),W=(((ot=y.match(/font-stretch:\s*([^;]+);/i))==null?void 0:ot[1])||"100%").trim(),P=(((rt=y.match(/unicode-range:\s*([^;]+);/i))==null?void 0:rt[1])||"").trim(),O=(((ct=y.match(/src\s*:\s*([^;]+);/i))==null?void 0:ct[1])||"").trim(),B=S(O,h.href);if(!f(v,R,L,W))continue;let nt=l(P);if(!d(e,nt))continue;let ft={family:v,weightSpec:L,styleSpec:R,stretchSpec:W,unicodeRange:P,srcRaw:O,srcUrls:B,href:h.href};if(n&&g(ft,nt))continue;let yt=/url\(/i.test(O)?yield x(y,h.href):y;C+=yt+""}C.trim()&&(k+=C+"")}catch(w){console.warn("[snapdom] Failed to process stylesheet:",h.href)}for(let h of document.styleSheets)try{if(h.href&&_.some(p=>p.href===h.href))continue;let w=h.cssRules||[];for(let p of w){if(p.type!==CSSRule.FONT_FACE_RULE)continue;let C=(p.style.getPropertyValue("font-family")||"").trim(),y=Rt(C);if(!y||tt(y))continue;let A=(p.style.getPropertyValue("font-weight")||"400").trim(),v=(p.style.getPropertyValue("font-style")||"normal").trim(),L=(p.style.getPropertyValue("font-stretch")||"100%").trim(),R=(p.style.getPropertyValue("src")||"").trim(),W=(p.style.getPropertyValue("unicode-range")||"").trim(),P=S(R,h.href||location.href);if(!f(y,v,A,L))continue;let O=l(W);if(!d(e,O))continue;let B={family:y,weightSpec:A,styleSpec:v,stretchSpec:L,unicodeRange:W,srcRaw:R,srcUrls:P,href:h.href||location.href};if(!(n&&g(B,O)))if(/url\(/i.test(R)){let nt=yield x(R,h.href||location.href);k+=`@font-face{font-family:${y};src:${nt};font-style:${v};font-weight:${A};font-stretch:${L};${W?`unicode-range:${W};`:""}}`}else k+=`@font-face{font-family:${y};src:${R};font-style:${v};font-weight:${A};font-stretch:${L};${W?`unicode-range:${W};`:""}}`}}catch(w){}try{for(let h of document.fonts||[]){if(!h||!h.family||h.status!=="loaded"||!h._snapdomSrc)continue;let w=String(h.family).replace(/^['"]+|['"]+$/g,"");if(tt(w)||!a.has(w)||n!=null&&n.families&&n.families.some(C=>String(C).toLowerCase()===w.toLowerCase()))continue;let p=h._snapdomSrc;if(!String(p).startsWith("data:")){if((Z=m.resource)!=null&&Z.has(h._snapdomSrc))p=m.resource.get(h._snapdomSrc),(j=m.font)==null||j.add(h._snapdomSrc);else if(!((G=m.font)!=null&&G.has(h._snapdomSrc)))try{let C=yield z(h._snapdomSrc,{as:"dataURL",useProxy:r,silent:!0});if(C.ok&&typeof C.data=="string")p=C.data,(et=m.resource)==null||et.set(h._snapdomSrc,p),(Et=m.font)==null||Et.add(h._snapdomSrc);else continue}catch(C){console.warn("[snapdom] Failed to fetch dynamic font src:",h._snapdomSrc);continue}}k+=`@font-face{font-family:'${w}';src:url(${p});font-style:${h.style||"normal"};font-weight:${h.weight||"normal"};}`}}catch(h){}for(let h of o){if(!h||typeof h!="object")continue;let w=String(h.family||"").replace(/^['"]+|['"]+$/g,"");if(!w||tt(w)||!a.has(w)||n!=null&&n.families&&n.families.some(L=>String(L).toLowerCase()===w.toLowerCase()))continue;let p=h.weight!=null?String(h.weight):"normal",C=h.style!=null?String(h.style):"normal",y=h.stretchPct!=null?`${h.stretchPct}%`:"100%",A=String(h.src||""),v=A;if(!v.startsWith("data:")){if((St=m.resource)!=null&&St.has(A))v=m.resource.get(A),(H=m.font)==null||H.add(A);else if(!((X=m.font)!=null&&X.has(A)))try{let L=yield z(A,{as:"dataURL",useProxy:r,silent:!0});if(L.ok&&typeof L.data=="string")v=L.data,(Y=m.resource)==null||Y.set(A,v),(Q=m.font)==null||Q.add(A);else continue}catch(L){console.warn("[snapdom] Failed to fetch localFonts src:",A);continue}}k+=`@font-face{font-family:'${w}';src:url(${v});font-style:${C};font-weight:${p};font-stretch:${y};}`}return k&&(k=b(k),(at=m.resource)==null||at.set(U,k)),k})}function It(t){let e=new Set;if(!t)return e;let n=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,null),o=s=>{let c=Rt(s.fontFamily);if(!c)return;let i=(f,l,d)=>`${c}__${Tt(f)}__${Zt(l)}__${hn(d)}`;e.add(i(s.fontWeight,s.fontStyle,s.fontStretch))};o(getComputedStyle(t));let r=getComputedStyle(t,"::before");r&&r.content&&r.content!=="none"&&o(r);let a=getComputedStyle(t,"::after");for(a&&a.content&&a.content!=="none"&&o(a);n.nextNode();){let s=n.currentNode,c=getComputedStyle(s);o(c);let i=getComputedStyle(s,"::before");i&&i.content&&i.content!=="none"&&o(i);let f=getComputedStyle(s,"::after");f&&f.content&&f.content!=="none"&&o(f)}return e}function Pt(t){let e=new Set,n=r=>{if(r)for(let a of r)e.add(a.codePointAt(0))},o=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,null);for(;o.nextNode();){let r=o.currentNode;if(r.nodeType===Node.TEXT_NODE)n(r.nodeValue||"");else if(r.nodeType===Node.ELEMENT_NODE){let a=r;for(let s of["::before","::after"]){let c=getComputedStyle(a,s),i=c==null?void 0:c.getPropertyValue("content");if(!(!i||i==="none"))if(/^"/.test(i)||/^'/.test(i))n(i.slice(1,-1));else{let f=i.match(/\\[0-9A-Fa-f]{1,6}/g);if(f)for(let l of f)try{e.add(parseInt(l.slice(1),16))}catch(d){}}}}}return e}function _t(t,e=1){return $(this,null,function*(){try{yield document.fonts.ready}catch(r){}let n=Array.from(t||[]).filter(Boolean);if(n.length===0)return;let o=()=>{let r=document.createElement("div");r.style.cssText="position: absolute !important;left: -9999px !important;top: 0 !important;opacity: 0 !important;pointer-events: none !important;contain: layout size style;";for(let a of n){let s=document.createElement("span");s.textContent="AaBbGg1234\xC1\xC9\xCD\xD3\xDA\xE7\xF1\u2014\u221E",s.style.fontFamily=`"${a}"`,s.style.fontWeight="700",s.style.fontStyle="italic",s.style.fontSize="32px",s.style.lineHeight="1",s.style.whiteSpace="nowrap",s.style.margin="0",s.style.padding="0",r.appendChild(s)}document.body.appendChild(r),r.offsetWidth,document.body.removeChild(r)};for(let r=0;r<Math.max(1,e);r++)o(),yield new Promise(a=>requestAnimationFrame(()=>requestAnimationFrame(a)))})}function Qt(t,e,n,o){return $(this,null,function*(){var s;if(!(t instanceof Element)||!(e instanceof Element))return;for(let c of["::before","::after","::first-letter"])try{let i=mt(t,c);if(!i||typeof i[Symbol.iterator]!="function"||i.content==="none"&&i.backgroundImage==="none"&&i.backgroundColor==="transparent"&&(i.borderStyle==="none"||parseFloat(i.borderWidth)===0)&&(!i.transform||i.transform==="none")&&i.display==="inline")continue;if(c==="::first-letter"){let H=getComputedStyle(t);if(!(i.color!==H.color||i.fontSize!==H.fontSize||i.fontWeight!==H.fontWeight))continue;let Y=Array.from(e.childNodes).find(v=>{var L;return v.nodeType===Node.TEXT_NODE&&((L=v.textContent)==null?void 0:L.trim().length)>0});if(!Y)continue;let Q=Y.textContent,at=Q.match(/^([^\p{L}\p{N}\s]*[\p{L}\p{N}](?:['’])?)/u),h=at==null?void 0:at[0],w=Q.slice((h==null?void 0:h.length)||0);if(!h||/[\uD800-\uDFFF]/.test(h))continue;let p=document.createElement("span");p.textContent=h,p.dataset.snapdomPseudo="::first-letter";let C=Lt(i),y=bt(C,"span");n.styleMap.set(p,y);let A=document.createTextNode(w);e.replaceChild(A,Y),e.insertBefore(p,A);continue}let l=i.content,d=/counter\s*\(|counters\s*\(/.test(l)?"- ":Xt(l),S=i.backgroundImage,x=i.backgroundColor,M=i.fontFamily,u=parseInt(i.fontSize)||32,g=parseInt(i.fontWeight)||!1,b=i.color||"#000",F=i.display,U=parseFloat(i.width),T=parseFloat(i.height),E=i.borderStyle,k=parseFloat(i.borderWidth),_=i.transform,N=tt(M),I=l!=="none"&&d!=="",q=S&&S!=="none",K=x&&x!=="transparent"&&x!=="rgba(0, 0, 0, 0)",ot=F!=="inline"&&(U>0||T>0),rt=E&&E!=="none"&&k>0,ct=_&&_!=="none";if(!(I||q||K||ot||rt||ct))continue;let j=document.createElement("span");j.dataset.snapdomPseudo=c,j.style.verticalAlign="middle";let G=Lt(i),et=bt(G,"span");if(n.styleMap.set(j,et),N&&d.length===1){let{dataUrl:H,width:X,height:Y}=yield de(d,M,g,u,b),Q=document.createElement("img");Q.src=H,Q.style=`height:${u}px;width:${X/Y*u}px;object-fit:contain;`,j.appendChild(Q),e.dataset.snapdomHasIcon="true"}else if(d.startsWith("url(")){let H=ut(d);if(H!=null&&H.trim())try{let X=document.createElement("img"),Y=yield z(xt(H),{as:"dataURL",useProxy:o.useProxy});X.src=Y.data,X.style=`width:${u}px;height:auto;object-fit:contain;`,j.appendChild(X)}catch(X){console.error(`[snapdom] Error in pseudo ${c} for`,t,X)}}else!N&&I&&(j.textContent=d);if(q)try{let H=pt(S),X=yield Promise.all(H.map(ht));j.style.backgroundImage=X.join(", ")}catch(H){console.warn(`[snapdom] Failed to inline background-image for ${c}`,H)}if(K&&(j.style.backgroundColor=x),!(j.childNodes.length>0||((s=j.textContent)==null?void 0:s.trim())!==""||q||K||ot||rt||ct))continue;c==="::before"?e.insertBefore(j,e.firstChild):e.appendChild(j)}catch(i){console.warn(`[snapdom] Failed to capture ${c} for`,t,i)}let r=Array.from(t.children),a=Array.from(e.children).filter(c=>!c.dataset.snapdomPseudo);for(let c=0;c<Math.min(r.length,a.length);c++)yield Qt(r[c],a[c],n,o)})}function he(t){if(!t)return;let e=new Set;if(t.querySelectorAll("use").forEach(c=>{let i=c.getAttribute("xlink:href")||c.getAttribute("href");i&&i.startsWith("#")&&e.add(i.slice(1))}),!e.size)return;let n=Array.from(document.querySelectorAll("svg > symbol, svg > defs")),o=n.filter(c=>c.tagName.toLowerCase()==="symbol"),r=n.filter(c=>c.tagName.toLowerCase()==="defs"),a=t.querySelector("svg.inline-defs-container");a||(a=document.createElementNS("http://www.w3.org/2000/svg","svg"),a.setAttribute("aria-hidden","true"),a.setAttribute("style","position: absolute; width: 0; height: 0; overflow: hidden;"),a.classList.add("inline-defs-container"),t.insertBefore(a,t.firstChild));let s=new Set;t.querySelectorAll("symbol[id], defs > *[id]").forEach(c=>{s.add(c.id)}),e.forEach(c=>{if(s.has(c))return;let i=o.find(f=>f.id===c);if(i){a.appendChild(i.cloneNode(!0)),s.add(c);return}for(let f of r){let l=f.querySelector(`#${CSS.escape(c)}`);if(l){let d=a.querySelector("defs");d||(d=document.createElementNS("http://www.w3.org/2000/svg","defs"),a.appendChild(d)),d.appendChild(l.cloneNode(!0)),s.add(c);break}}})}function pe(n){return $(this,arguments,function*(t,e={}){var i,f;let o={styleMap:m.session.styleMap,styleCache:m.session.styleCache,nodeMap:m.session.nodeMap},r,a="",s="";bn(t);try{he(t)}catch(l){console.warn("inlineExternal defs or symbol failed:",l)}try{r=yield kt(t,o,e,t)}catch(l){throw console.warn("deepClone failed:",l),l}try{yield Qt(t,r,o,e)}catch(l){console.warn("inlinePseudoElements failed:",l)}yield kn(r);try{let l=r.querySelectorAll("style[data-sd]");for(let d of l)s+=d.textContent||"",d.remove()}catch(l){}let c=Vt(o.styleMap);a=Array.from(c.entries()).map(([l,d])=>`.${d}{${l}}`).join(""),a=s+a;for(let[l,d]of o.styleMap.entries()){if(l.tagName==="STYLE")continue;if(l.getRootNode&&l.getRootNode()instanceof ShadowRoot){l.setAttribute("style",d.replace(/;/g,"; "));continue}let S=c.get(d);S&&l.classList.add(S);let x=(i=l.style)==null?void 0:i.backgroundImage,M=(f=l.dataset)==null?void 0:f.snapdomHasIcon;x&&x!=="none"&&(l.style.backgroundImage=x),M&&(l.style.verticalAlign="middle",l.style.display="inline")}for(let[l,d]of o.nodeMap.entries()){let S=d.scrollLeft,x=d.scrollTop;if((S||x)&&l instanceof HTMLElement){l.style.overflow="hidden",l.style.scrollbarWidth="none",l.style.msOverflowStyle="none";let u=document.createElement("div");for(u.style.transform=`translate(${-S}px, ${-x}px)`,u.style.willChange="transform",u.style.display="inline-block",u.style.width="100%";l.firstChild;)u.appendChild(l.firstChild);l.appendChild(u)}}if(t===o.nodeMap.get(r)){let l=o.styleCache.get(t)||window.getComputedStyle(t);o.styleCache.set(t,l);let d=Bt(l.transform);r.style.margin="0",r.style.position="static",r.style.top="auto",r.style.left="auto",r.style.right="auto",r.style.bottom="auto",r.style.zIndex="auto",r.style.float="none",r.style.clear="none",r.style.transform=d||""}for(let[l,d]of o.nodeMap.entries())d.tagName==="PRE"&&(l.style.marginTop="0",l.style.marginBlockStart="0");return{clone:r,classCSS:a,styleCache:o.styleCache}})}function bn(t){let e=getComputedStyle(t),n=e.outlineStyle,o=e.outlineWidth,r=e.borderStyle,a=e.borderWidth,s=n!=="none"&&parseFloat(o)>0,c=r==="none"||parseFloat(a)===0;s&&c&&(t.style.border=`${o} solid transparent`)}var At=new Map;function $t(t){return $(this,null,function*(){var n;if((n=m.resource)!=null&&n.has(t))return m.resource.get(t);if(At.has(t))return At.get(t);let e=$(null,null,function*(){var r;let o=yield z(t,{as:"dataURL",silent:!0});if(!o.ok||typeof o.data!="string")throw new Error(`[snapDOM] Failed to read blob URL: ${t}`);return(r=m.resource)==null||r.set(t,o.data),o.data});At.set(t,e);try{let o=yield e;return At.set(t,o),o}catch(o){throw At.delete(t),o}})}var Sn=/\bblob:[^)"'\s]+/g;function me(t){return $(this,null,function*(){if(!t||t.indexOf("blob:")===-1)return t;let e=Array.from(new Set(t.match(Sn)||[]));if(e.length===0)return t;let n=t;for(let o of e)try{let r=yield $t(o);n=n.split(o).join(r)}catch(r){}return n})}function Ut(t){return typeof t=="string"&&t.startsWith("blob:")}function xn(t){return(t||"").split(",").map(e=>e.trim()).filter(Boolean).map(e=>{let n=e.match(/^(\S+)(\s+.+)?$/);return n?{url:n[1],desc:n[2]||""}:null}).filter(Boolean)}function Cn(t){return t.map(e=>e.desc?`${e.url} ${e.desc.trim()}`:e.url).join(", ")}function kn(t){return $(this,null,function*(){var s,c;if(!t)return;let e=t.querySelectorAll?t.querySelectorAll("img"):[];for(let i of e)try{let l=i.getAttribute("src")||i.currentSrc||"";if(Ut(l)){let S=yield $t(l);i.setAttribute("src",S)}let d=i.getAttribute("srcset");if(d&&d.includes("blob:")){let S=xn(d),x=!1;for(let M of S)if(Ut(M.url))try{M.url=yield $t(M.url),x=!0}catch(u){}x&&i.setAttribute("srcset",Cn(S))}}catch(f){}let n=t.querySelectorAll?t.querySelectorAll("image"):[];for(let i of n)try{let f="http://www.w3.org/1999/xlink",l=i.getAttribute("href")||((s=i.getAttributeNS)==null?void 0:s.call(i,f,"href"));if(Ut(l)){let d=yield $t(l);i.setAttribute("href",d),(c=i.removeAttributeNS)==null||c.call(i,f,"href")}}catch(f){}let o=t.querySelectorAll?t.querySelectorAll("[style*='blob:']"):[];for(let i of o)try{let f=i.getAttribute("style");if(f&&f.includes("blob:")){let l=yield me(f);i.setAttribute("style",l)}}catch(f){}let r=t.querySelectorAll?t.querySelectorAll("style"):[];for(let i of r)try{let f=i.textContent||"";f.includes("blob:")&&(i.textContent=yield me(f))}catch(f){}let a=["poster"];for(let i of a){let f=t.querySelectorAll?t.querySelectorAll(`[${i}^='blob:']`):[];for(let l of f)try{let d=l.getAttribute(i);Ut(d)&&l.setAttribute(i,yield $t(d))}catch(d){}}})}function ge(n){return $(this,arguments,function*(t,e={}){let o=Array.from(t.querySelectorAll("img")),r=a=>$(null,null,function*(){var d,S,x,M;if(!a.getAttribute("src")){let u=a.currentSrc||a.src||"";u&&a.setAttribute("src",u)}a.removeAttribute("srcset"),a.removeAttribute("sizes");let s=a.src||"";if(!s)return;let c=yield z(s,{as:"dataURL",useProxy:e.useProxy});if(c.ok&&typeof c.data=="string"&&c.data.startsWith("data:")){a.src=c.data,a.width||(a.width=a.naturalWidth||100),a.height||(a.height=a.naturalHeight||100);return}let{defaultImageUrl:i}=e||{};if(i)try{let u=parseInt(((d=a.dataset)==null?void 0:d.snapdomWidth)||"",10)||0,g=parseInt(((S=a.dataset)==null?void 0:S.snapdomHeight)||"",10)||0,b=parseInt(a.getAttribute("width")||"",10)||0,F=parseInt(a.getAttribute("height")||"",10)||0,U=parseFloat(((x=a.style)==null?void 0:x.width)||"")||0,T=parseFloat(((M=a.style)==null?void 0:M.height)||"")||0,E=u||U||b||a.width||void 0,k=g||T||F||a.height||void 0,_=typeof i=="function"?yield i({width:E,height:k,src:s,element:a}):i;if(_){let N=yield z(_,{as:"dataURL",useProxy:e.useProxy});a.src=N.data,!a.width&&E&&(a.width=E),!a.height&&k&&(a.height=k),a.width||(a.width=a.naturalWidth||100),a.height||(a.height=a.naturalHeight||100);return}}catch(u){}let f=a.width||a.naturalWidth||100,l=a.height||a.naturalHeight||100;if(e.placeholders!==!1){let u=document.createElement("div");u.style.cssText=[`width:${f}px`,`height:${l}px`,"background:#ccc","display:inline-block","text-align:center",`line-height:${l}px`,"color:#666","font-size:12px","overflow:hidden"].join(";"),u.textContent="img",a.replaceWith(u)}else{let u=document.createElement("div");u.style.cssText=`display:inline-block;width:${f}px;height:${l}px;visibility:hidden;`,a.replaceWith(u)}});for(let a=0;a<o.length;a+=4){let s=o.slice(a,a+4).map(r);yield Promise.allSettled(s)}})}function Wt(r,a,s){return $(this,arguments,function*(t,e,n,o={}){let c=[[t,e]],i=["background-image","mask","mask-image","-webkit-mask","-webkit-mask-image","mask-source","mask-box-image-source","mask-border-source","-webkit-mask-box-image-source","border-image","border-image-source"],f=["mask-position","mask-size","mask-repeat","-webkit-mask-position","-webkit-mask-size","-webkit-mask-repeat","mask-origin","mask-clip","-webkit-mask-origin","-webkit-mask-clip","-webkit-mask-position-x","-webkit-mask-position-y"],l=["border-image-slice","border-image-width","border-image-outset","border-image-repeat"];for(;c.length;){let[d,S]=c.shift(),x=n.get(d)||mt(d);n.has(d)||n.set(d,x);let M=(()=>{let b=x.getPropertyValue("border-image"),F=x.getPropertyValue("border-image-source");return b&&b!=="none"||F&&F!=="none"})();for(let b of i){let F=x.getPropertyValue(b);if(!F||F==="none")continue;let U=pt(F),T=yield Promise.all(U.map(E=>ht(E,o)));T.some(E=>E&&E!=="none"&&!/^url\(undefined/.test(E))&&S.style.setProperty(b,T.join(", "))}for(let b of f){let F=x.getPropertyValue(b);!F||F==="initial"||S.style.setProperty(b,F)}if(M)for(let b of l){let F=x.getPropertyValue(b);!F||F==="initial"||S.style.setProperty(b,F)}let u=Array.from(d.children),g=Array.from(S.children);for(let b=0;b<Math.min(u.length,g.length);b++)c.push([u[b],g[b]])}})}function we(t,e){return $(this,null,function*(){if(!t)throw new Error("Element cannot be null or undefined");Mt(e.cache);let n=e.fast,o,r,a,s="",c="",i,f;({clone:o,classCSS:r,styleCache:a}=yield pe(t,e)),yield new Promise(x=>{st(()=>$(null,null,function*(){yield ge(o,e),x()}),{fast:n})}),yield new Promise(x=>{st(()=>$(null,null,function*(){yield Wt(t,o,a,e),x()}),{fast:n})}),e.embedFonts&&(yield new Promise(x=>{st(()=>$(null,null,function*(){let M=It(t),u=Pt(t);if(it){let g=new Set(Array.from(M).map(b=>String(b).split("__")[0]).filter(Boolean));yield _t(g,2)}s=yield Nt({required:M,usedCodepoints:u,preCached:!1,exclude:e.excludeFonts,useProxy:e.useProxy}),x()}),{fast:n})}));let l=Ht(o).sort(),d=l.join(",");m.baseStyle.has(d)?c=m.baseStyle.get(d):yield new Promise(x=>{st(()=>{c=zt(l),m.baseStyle.set(d,c),x()},{fast:n})}),yield new Promise(x=>{st(()=>{var Y,Q,at,h,w;let M=An(t),u=M.width,g=M.height,b=Number.isFinite(e.width),F=Number.isFinite(e.height),U=(Y=e.scale)!=null?Y:1,T=typeof U=="number"&&U!==1;if(!T){let p=M.width/M.height;b&&F?(u=e.width,g=e.height):b?(u=e.width,g=u/p):F&&(g=e.height,u=g*p)}u=Math.max(1,Math.ceil(u)),g=Math.max(1,Math.ceil(g));let E=getComputedStyle(t),k=E.transform&&E.transform!=="none"?E.transform:"",_=Mn(t),N,I,q,K,ot=0,rt=0;if(vn(t)){let p=Rn({baseTransform:k,rotate:_.rotate||"0deg",scale:_.scale,translate:_.translate}),C=(at=(Q=p.e)!=null?Q:p.m41)!=null?at:0,y=(w=(h=p.f)!=null?h:p.m42)!=null?w:0;ot=-C,rt=-y;let A=p.is2D?ye(p):ye(new DOMMatrix(p.toString())),v=En(u,g,A);N=Math.max(1,Math.ceil(v.width)),I=Math.max(1,Math.ceil(v.height)),q=-v.minX,K=-v.minY}else{let p=t.getBoundingClientRect(),C=Fn(p,{top:0,right:0,bottom:0,left:0});N=Math.max(1,C.width),I=Math.max(1,C.height),q=-(C.x-Math.floor(p.left)),K=-(C.y-Math.floor(p.top))}let ct="http://www.w3.org/2000/svg",Z=document.createElementNS(ct,"foreignObject");Z.setAttribute("width","100%"),Z.setAttribute("height","100%"),Z.setAttribute("x",String(q)),Z.setAttribute("y",String(K)),Z.style.overflow="visible";let j=document.createElement("style");j.textContent=c+s+"svg{overflow:visible;} foreignObject{overflow:visible;}"+r,Z.appendChild(j);let G=document.createElement("div");G.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),G.style.width=`${u}px`,G.style.height=`${g}px`,G.style.overflow="visible",G.style.transformOrigin="0 0";let et=[];if((ot||rt)&&et.push(`translate(${ot}px, ${rt}px)`),!T&&(b||F)){let p=M.width?u/M.width:1,C=M.height?g/M.height:1;et.push(`scale(${p}, ${C})`)}else T&&et.push(`scale(${U})`);et.length&&(G.style.transform=et.join(" ")),o.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),o.style.transformOrigin="0 0",o.style.position="static",o.style.left="0",o.style.top="0",k&&(o.style.transform=k),o.style.rotate=_.rotate||"0deg",o.style.scale=_.scale||"1",o.style.translate=_.translate||"0 0",G.appendChild(o),Z.appendChild(G);let St=new XMLSerializer().serializeToString(Z);f=`<svg xmlns="${ct}" width="${N}" height="${I}" viewBox="0 0 ${N} ${I}">`+St+"</svg>",i=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(f)}`,x()},{fast:n})});let S=document.getElementById("snapdom-sandbox");return S&&S.style.position==="absolute"&&S.remove(),i})}function An(t){let e=getComputedStyle(t),n=a=>parseFloat(a)||0,o=n(e.width),r=n(e.height);return e.boxSizing==="content-box"&&(o+=n(e.paddingLeft)+n(e.paddingRight)+n(e.borderLeftWidth)+n(e.borderRightWidth),r+=n(e.paddingTop)+n(e.paddingBottom)+n(e.borderTopWidth)+n(e.borderBottomWidth)),{width:o,height:r}}function $n(t){let e=getComputedStyle(t).transform;if(!e||e==="none")return new DOMMatrix;try{return new DOMMatrix(e)}catch(n){return new WebKitCSSMatrix(e)}}function ye(t){return new DOMMatrix([t.a,t.b,t.c,t.d,0,0])}function En(t,e,n){let r=[{x:0,y:0},{x:t,y:0},{x:0,y:e},{x:t,y:e}].map(f=>({x:n.a*f.x+n.c*f.y,y:n.b*f.x+n.d*f.y})),a=Math.min(...r.map(f=>f.x)),s=Math.max(...r.map(f=>f.x)),c=Math.min(...r.map(f=>f.y)),i=Math.max(...r.map(f=>f.y));return{minX:a,minY:c,width:s-a,height:i-c}}function Mn(t){var r,a,s,c,i,f,l,d,S,x,M,u,g,b;let e={rotate:"0deg",scale:null,translate:null},n=(r=t.computedStyleMap)==null?void 0:r.call(t);if(n){let F=n.get("rotate");if(F){let E=(a=F.angle)!=null?a:F;E&&"unit"in E?e.rotate=E.unit==="rad"?E.value*180/Math.PI+"deg":E.value+E.unit:e.rotate=String(F)}let U=n.get("scale");if(U&&U.length){let E=(c=(s=U[0])==null?void 0:s.value)!=null?c:1,k=(f=(i=U[1])==null?void 0:i.value)!=null?f:E;e.scale=`${E} ${k}`}let T=n.get("translate");if(T&&T.length){let E=(d=(l=T[0])==null?void 0:l.value)!=null?d:0,k=(x=(S=T[1])==null?void 0:S.value)!=null?x:0,_=(u=(M=T[0])==null?void 0:M.unit)!=null?u:"px",N=(b=(g=T[1])==null?void 0:g.unit)!=null?b:"px";e.translate=`${E}${_} ${k}${N}`}return e}let o=getComputedStyle(t);return e.rotate=o.rotate&&o.rotate!=="none"?o.rotate:"0deg",e.scale=o.scale&&o.scale!=="none"?o.scale:null,e.translate=o.translate&&o.translate!=="none"?o.translate:null,e}function vn(t){let e=getComputedStyle(t).transform||"none";return!(e==="none"||e==="matrix(1, 0, 0, 1, 0, 0)"||/^matrix\(\s*1\s*,\s*0\s*,\s*0\s*,\s*1\s*,/i.test(e))}function Fn(t,e){let n=Math.floor(t.left-e.left),o=Math.floor(t.top-e.top),r=Math.ceil(t.width+e.left+e.right),a=Math.ceil(t.height+e.top+e.bottom);return{x:n,y:o,width:r,height:a}}var te=null;function Ln(){if(te)return te;let t=document.createElement("div");return t.id="snapdom-measure-slot",t.setAttribute("aria-hidden","true"),Object.assign(t.style,{position:"absolute",left:"-99999px",top:"0px",width:"0px",height:"0px",overflow:"hidden",opacity:"0",pointerEvents:"none",contain:"size layout style"}),document.documentElement.appendChild(t),te=t,t}function Rn(t){let e=Ln(),n=document.createElement("div");n.style.transformOrigin="0 0",t.baseTransform&&(n.style.transform=t.baseTransform),t.rotate&&(n.style.rotate=t.rotate),t.scale&&(n.style.scale=t.scale),t.translate&&(n.style.translate=t.translate),e.appendChild(n);let o=$n(n);return e.removeChild(n),o}function Tn(t){if(typeof t=="string"){let e=t.toLowerCase().trim();if(e==="disabled"||e==="full"||e==="auto"||e==="soft")return e}return"soft"}function be(t={}){var o,r,a,s,c,i,f,l,d,S,x,M,u,g,b,F;let e=(o=t.format)!=null?o:"png",n=Tn(t.cache);return{debug:(r=t.debug)!=null?r:!1,fast:(a=t.fast)!=null?a:!0,scale:(s=t.scale)!=null?s:1,exclude:(c=t.exclude)!=null?c:[],filter:(i=t.filter)!=null?i:null,placeholders:t.placeholders!==!1,embedFonts:(f=t.embedFonts)!=null?f:!1,iconFonts:Array.isArray(t.iconFonts)?t.iconFonts:t.iconFonts?[t.iconFonts]:[],localFonts:Array.isArray(t.localFonts)?t.localFonts:[],excludeFonts:(l=t.excludeFonts)!=null?l:void 0,defaultImageUrl:(d=t.defaultImageUrl)!=null?d:void 0,cache:n,useProxy:typeof t.useProxy=="string"?t.useProxy:"",width:(S=t.width)!=null?S:null,height:(x=t.height)!=null?x:null,format:e,type:(M=t.type)!=null?M:"svg",quality:(u=t.quality)!=null?u:.92,dpr:(g=t.dpr)!=null?g:window.devicePixelRatio||1,backgroundColor:(b=t.backgroundColor)!=null?b:["jpg","jpeg","webp"].includes(e)?"#ffffff":null,filename:(F=t.filename)!=null?F:"snapDOM"}}function Se(t,e){return $(this,null,function*(){let n=new Image;return n.src=t,yield n.decode(),e.scale!==1&&(n.style.width=`${n.naturalWidth*e.scale}px`,n.style.height=`${n.naturalHeight*e.scale}px`),n})}function lt(t,e){return $(this,null,function*(){let{scale:n,dpr:o}=e,r=it(),a=new Image;a.crossOrigin="anonymous",a.loading="eager",a.decoding="sync",a.src=t;let s=null;r&&(s=document.createElement("div"),s.setAttribute("aria-hidden","true"),s.style.cssText="position:absolute;left:-99999px;top:0;width:0;height:0;overflow:hidden;opacity:0;pointer-events:none;contain:size layout style;",document.body.appendChild(s),s.appendChild(a)),yield a.decode(),r&&(yield new Promise(d=>setTimeout(d,100)));let c=a.naturalWidth*n,i=a.naturalHeight*n,f=document.createElement("canvas");f.width=Math.ceil(c*o),f.height=Math.ceil(i*o),f.style.width=`${c}px`,f.style.height=`${i}px`;let l=f.getContext("2d");if(o!==1&&l.scale(o,o),l.drawImage(a,0,0,c,i),s&&s.parentNode)try{s.parentNode.removeChild(s)}catch(d){}return f})}function Ot(t,e){return $(this,null,function*(){let n=e.type;if(n==="svg"){let a=decodeURIComponent(t.split(",")[1]);return new Blob([a],{type:"image/svg+xml"})}let o=yield lt(t,e),r=e.backgroundColor?dt(o,e.backgroundColor):o;return new Promise(a=>r.toBlob(s=>a(s),`image/${n}`,e.quality))})}function xe(t,e){return $(this,null,function*(){let n=yield lt(t,e),o=e.backgroundColor?dt(n,e.backgroundColor):n,r=new Image;return r.src=o.toDataURL(`image/${e.format}`,e.quality),yield r.decode(),r.style.width=`${o.width/e.dpr}px`,r.style.height=`${o.height/e.dpr}px`,r})}function Ce(t,e){return $(this,null,function*(){if(e.format==="svg"){let a=yield Ot(t,J(V({},e),{type:"svg"})),s=URL.createObjectURL(a),c=document.createElement("a");c.href=s,c.download=e.filename,c.click(),URL.revokeObjectURL(s);return}let n=yield lt(t,e),o=e.backgroundColor?dt(n,e.backgroundColor):n,r=document.createElement("a");r.href=o.toDataURL(`image/${e.format}`,e.quality),r.download=e.filename,r.click()})}var ke=Symbol("snapdom.internal");function D(t,e){return $(this,null,function*(){if(!t)throw new Error("Element cannot be null or undefined");let n=be(e);return n.iconFonts&&n.iconFonts.length>0&&ue(n.iconFonts),n.snap||(n.snap={toPng:(o,r)=>D.toPng(o,r),toImg:(o,r)=>D.toImg(o,r)}),D.capture(t,n,ke)})}D.capture=(t,e,n)=>$(null,null,function*(){if(n!==ke)throw new Error("[snapdom.capture] is internal. Use snapdom(...) instead.");let o=yield we(t,e),r=s=>V(V({},e),s||{}),a=s=>c=>{let i=r(J(V({},c||{}),{format:s})),f=s==="jpeg"||s==="jpg",l=i.backgroundColor==null||i.backgroundColor==="transparent";return f&&l&&(i.backgroundColor="#ffffff"),xe(o,i)};return{url:o,toRaw:()=>o,toImg:s=>Se(o,r(s)),toCanvas:s=>lt(o,r(s)),toBlob:s=>Ot(o,r(s)),toPng:a("png"),toJpg:a("jpeg"),toWebp:a("webp"),download:s=>Ce(o,r(s))}});D.toRaw=(t,e)=>D(t,e).then(n=>n.toRaw());D.toImg=(t,e)=>D(t,e).then(n=>n.toImg());D.toCanvas=(t,e)=>D(t,e).then(n=>n.toCanvas());D.toBlob=(t,e)=>D(t,e).then(n=>n.toBlob());D.toPng=(t,e)=>D(t,J(V({},e),{format:"png"})).then(n=>n.toPng());D.toJpg=(t,e)=>D(t,J(V({},e),{format:"jpeg"})).then(n=>n.toJpg());D.toWebp=(t,e)=>D(t,J(V({},e),{format:"webp"})).then(n=>n.toWebp());D.download=(t,e)=>D(t,e).then(n=>n.download());function Ae(){return $(this,arguments,function*(t=document,e={}){var i;let{embedFonts:n=!0,cacheOpt:o="full",useProxy:r=""}=e;Mt(o);try{yield document.fonts.ready}catch(f){}qt(),m.session=m.session||{},m.session.styleCache||(m.session.styleCache=new WeakMap);try{yield Wt(t,void 0,m.session.styleCache,{useProxy:r})}catch(f){}let a=[],s=[];try{t!=null&&t.querySelectorAll&&(a=Array.from(t.querySelectorAll("img[src]")),s=Array.from(t.querySelectorAll("*")))}catch(f){}let c=[];for(let f of a){let l=f==null?void 0:f.src;if(l&&!m.image.has(l)){let d=Promise.resolve().then(()=>z(l,{as:"dataURL",useProxy:r})).then(S=>{m.image.set(l,S)}).catch(()=>{});c.push(d)}}for(let f of s){let l="";try{l=mt(f).backgroundImage}catch(d){}if(l&&l!=="none"){let d=pt(l);for(let S of d)if(S.startsWith("url(")){let x=Promise.resolve().then(()=>ht(S,J(V({},e),{useProxy:r}))).catch(()=>{});c.push(x)}}}if(n)try{let f=It(t),l=Pt(t);if(typeof it=="function"?it():it){let d=new Set(Array.from(f).map(S=>String(S).split("__")[0]).filter(Boolean));yield _t(d,2)}yield Nt({required:f,usedCodepoints:l,exclude:e.excludeFonts,localFonts:e.localFonts,useProxy:(i=e.useProxy)!=null?i:r})}catch(f){}yield Promise.allSettled(c)})}typeof window!="undefined"&&(window.snapdom=D,window.preCache=Ae);})();