hyperframes 0.7.38 → 0.7.40

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/dist/cli.js CHANGED
@@ -50,7 +50,7 @@ var VERSION;
50
50
  var init_version = __esm({
51
51
  "src/version.ts"() {
52
52
  "use strict";
53
- VERSION = true ? "0.7.38" : "0.0.0-dev";
53
+ VERSION = true ? "0.7.40" : "0.0.0-dev";
54
54
  }
55
55
  });
56
56
 
@@ -4891,7 +4891,7 @@ var require_util = __commonJS({
4891
4891
  return path2;
4892
4892
  }
4893
4893
  exports.normalize = normalize;
4894
- function join115(aRoot, aPath) {
4894
+ function join116(aRoot, aPath) {
4895
4895
  if (aRoot === "") {
4896
4896
  aRoot = ".";
4897
4897
  }
@@ -4923,7 +4923,7 @@ var require_util = __commonJS({
4923
4923
  }
4924
4924
  return joined;
4925
4925
  }
4926
- exports.join = join115;
4926
+ exports.join = join116;
4927
4927
  exports.isAbsolute = function(aPath) {
4928
4928
  return aPath.charAt(0) === "/" || urlRegexp.test(aPath);
4929
4929
  };
@@ -5096,7 +5096,7 @@ var require_util = __commonJS({
5096
5096
  parsed.path = parsed.path.substring(0, index + 1);
5097
5097
  }
5098
5098
  }
5099
- sourceURL = join115(urlGenerate(parsed), sourceURL);
5099
+ sourceURL = join116(urlGenerate(parsed), sourceURL);
5100
5100
  }
5101
5101
  return normalize(sourceURL);
5102
5102
  }
@@ -56108,7 +56108,7 @@ var RUNTIME_IIFE;
56108
56108
  var init_runtime_inline = __esm({
56109
56109
  "../core/dist/generated/runtime-inline.js"() {
56110
56110
  "use strict";
56111
- RUNTIME_IIFE = '"use strict";(()=>{var Qa=Object.create;var Jn=Object.defineProperty;var Za=Object.getOwnPropertyDescriptor;var el=Object.getOwnPropertyNames;var tl=Object.getPrototypeOf,nl=Object.prototype.hasOwnProperty;var il=(e,t,n)=>t in e?Jn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var te=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var rl=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of el(t))!nl.call(e,r)&&r!==n&&Jn(e,r,{get:()=>t[r],enumerable:!(i=Za(t,r))||i.enumerable});return e};var ol=(e,t,n)=>(n=e!=null?Qa(tl(e)):{},rl(t||!e||!e.__esModule?Jn(n,"default",{value:e,enumerable:!0}):n,e));var xe=(e,t,n)=>il(e,typeof t!="symbol"?t+"":t,n);var Zr=te((sp,li)=>{var X=String,Qr=function(){return{isColorSupported:!1,reset:X,bold:X,dim:X,italic:X,underline:X,inverse:X,hidden:X,strikethrough:X,black:X,red:X,green:X,yellow:X,blue:X,magenta:X,cyan:X,white:X,gray:X,bgBlack:X,bgRed:X,bgGreen:X,bgYellow:X,bgBlue:X,bgMagenta:X,bgCyan:X,bgWhite:X,blackBright:X,redBright:X,greenBright:X,yellowBright:X,blueBright:X,magentaBright:X,cyanBright:X,whiteBright:X,bgBlackBright:X,bgRedBright:X,bgGreenBright:X,bgYellowBright:X,bgBlueBright:X,bgMagentaBright:X,bgCyanBright:X,bgWhiteBright:X}};li.exports=Qr();li.exports.createColors=Qr});var ui=te(()=>{});var dn=te((up,no)=>{"use strict";var eo=Zr(),to=ui(),Dt=class e extends Error{constructor(t,n,i,r,o,s){super(t),this.name="CssSyntaxError",this.reason=t,o&&(this.file=o),r&&(this.source=r),s&&(this.plugin=s),typeof n<"u"&&typeof i<"u"&&(typeof n=="number"?(this.line=n,this.column=i):(this.line=n.line,this.column=n.column,this.endLine=i.line,this.endColumn=i.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(t){if(!this.source)return"";let n=this.source;t==null&&(t=eo.isColorSupported);let i=c=>c,r=c=>c,o=c=>c;if(t){let{bold:c,gray:p,red:f}=eo.createColors(!0);r=x=>c(f(x)),i=x=>p(x),to&&(o=x=>to(x))}let s=n.split(/\\r?\\n/),u=Math.max(this.line-3,0),a=Math.min(this.line+2,s.length),l=String(a).length;return s.slice(u,a).map((c,p)=>{let f=u+1+p,x=" "+(" "+f).slice(-l)+" | ";if(f===this.line){if(c.length>160){let b=20,g=Math.max(0,this.column-b),A=Math.max(this.column+b,this.endColumn+b),C=c.slice(g,A),N=i(x.replace(/\\d/g," "))+c.slice(0,Math.min(this.column-1,b-1)).replace(/[^\\t]/g," ");return r(">")+i(x)+o(C)+`\n `+N+r("^")}let E=i(x.replace(/\\d/g," "))+c.slice(0,this.column-1).replace(/[^\\t]/g," ");return r(">")+i(x)+o(c)+`\n `+E+r("^")}return" "+i(x)+o(c)}).join(`\n`)}toString(){let t=this.showSourceCode();return t&&(t=`\n\n`+t+`\n`),this.name+": "+this.message+t}};no.exports=Dt;Dt.default=Dt});var ci=te((cp,ro)=>{"use strict";var Hl=/(<)(\\/?style\\b)/gi,Gl=/(<)(!--)/g;function Ke(e){return typeof e!="string"||!e.includes("<")?e:e.replace(Hl,"\\\\3c $2").replace(Gl,"\\\\3c $2")}var io={after:`\n`,beforeClose:`\n`,beforeComment:`\n`,beforeDecl:`\n`,beforeOpen:" ",beforeRule:`\n`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};function Wl(e){return e[0].toUpperCase()+e.slice(1)}var It=class{constructor(t){this.builder=t}atrule(t,n){let i=t.raws,r="@"+t.name,o=t.params?this.rawValue(t,"params"):"";if(typeof i.afterName<"u"?r+=i.afterName:o&&(r+=" "),t.nodes)this.block(t,r+o);else{let s=(i.between||"")+(n?";":"");this.builder(Ke(r+o+s),t)}}beforeAfter(t,n){let i;t.type==="decl"?i=this.raw(t,null,"beforeDecl"):t.type==="comment"?i=this.raw(t,null,"beforeComment"):n==="before"?i=this.raw(t,null,"beforeRule"):i=this.raw(t,null,"beforeClose");let r=t.parent,o=0;for(;r&&r.type!=="root";)o+=1,r=r.parent;if(i.includes(`\n`)){let s=this.raw(t,null,"indent");if(s.length)for(let u=0;u<o;u++)i+=s}return i}block(t,n){let i=this.raw(t,"between","beforeOpen");this.builder(Ke(n+i)+"{",t,"start");let r;t.nodes&&t.nodes.length?(this.body(t),r=this.raw(t,"after")):r=this.raw(t,"after","emptyBody"),r&&this.builder(Ke(r)),this.builder("}",t,"end")}body(t){let n=t.nodes,i=n.length-1;for(;i>0&&n[i].type==="comment";)i-=1;let r=this.raw(t,"semicolon"),o=t.type==="document";for(let s=0;s<n.length;s++){let u=n[s],a=this.raw(u,"before");a&&this.builder(o?a:Ke(a)),this.stringify(u,i!==s||r)}}comment(t){let n=this.raw(t,"left","commentLeft"),i=this.raw(t,"right","commentRight");this.builder(Ke("/*"+n+t.text+i+"*/"),t)}decl(t,n){let i=t.raws,r=this.raw(t,"between","colon"),o=t.prop+r+this.rawValue(t,"value");t.important&&(o+=i.important||" !important"),n&&(o+=";"),this.builder(Ke(o),t)}document(t){this.body(t)}raw(t,n,i){let r;if(i||(i=n),n&&(r=t.raws[n],typeof r<"u"))return r;let o=t.parent;if(i==="before"&&(!o||o.type==="root"&&o.first===t||o&&o.type==="document"))return"";if(!o)return io[i];let s=t.root(),u=s.rawCache||(s.rawCache={});if(typeof u[i]<"u")return u[i];if(i==="before"||i==="after")return this.beforeAfter(t,i);{let a="raw"+Wl(i);this[a]?r=this[a](s,t):s.walk(l=>{if(r=l.raws[n],typeof r<"u")return!1})}return typeof r>"u"&&(r=io[i]),u[i]=r,r}rawBeforeClose(t){let n;return t.walk(i=>{if(i.nodes&&i.nodes.length>0&&typeof i.raws.after<"u")return n=i.raws.after,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawBeforeComment(t,n){let i;return t.walkComments(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeDecl"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeDecl(t,n){let i;return t.walkDecls(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeRule"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeOpen(t){let n;return t.walk(i=>{if(i.type!=="decl"&&(n=i.raws.between,typeof n<"u"))return!1}),n}rawBeforeRule(t){let n;return t.walk(i=>{if(i.nodes&&(i.parent!==t||t.first!==i)&&typeof i.raws.before<"u")return n=i.raws.before,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawColon(t){let n;return t.walkDecls(i=>{if(typeof i.raws.between<"u")return n=i.raws.between.replace(/[^\\s:]/g,""),!1}),n}rawEmptyBody(t){let n;return t.walk(i=>{if(i.nodes&&i.nodes.length===0&&(n=i.raws.after,typeof n<"u"))return!1}),n}rawIndent(t){if(t.raws.indent)return t.raws.indent;let n;return t.walk(i=>{let r=i.parent;if(r&&r!==t&&r.parent&&r.parent===t&&typeof i.raws.before<"u"){let o=i.raws.before.split(`\n`);return n=o[o.length-1],n=n.replace(/\\S/g,""),!1}}),n}rawSemicolon(t){let n;return t.walk(i=>{if(i.nodes&&i.nodes.length&&i.last.type==="decl"&&(n=i.raws.semicolon,typeof n<"u"))return!1}),n}rawValue(t,n){let i=t[n],r=t.raws[n];return r&&r.value===i?r.raw:i}root(t){if(this.body(t),t.raws.after){let n=t.raws.after,i=t.parent&&t.parent.type==="document";this.builder(i?n:Ke(n))}}rule(t){this.block(t,this.rawValue(t,"selector")),t.raws.ownSemicolon&&this.builder(Ke(t.raws.ownSemicolon),t,"end")}stringify(t,n){if(!this[t.type])throw new Error("Unknown AST node type "+t.type+". Maybe you need to change PostCSS stringifier.");this[t.type](t,n)}};ro.exports=It;It.default=It});var Pt=te((dp,oo)=>{"use strict";var Ul=ci();function di(e,t){new Ul(t).stringify(e)}oo.exports=di;di.default=di});var fn=te((fp,fi)=>{"use strict";fi.exports.isClean=Symbol("isClean");fi.exports.my=Symbol("my")});var Ht=te((mp,so)=>{"use strict";var Vl=dn(),zl=ci(),ql=Pt(),{isClean:Ot,my:jl}=fn();function mi(e,t){let n=new e.constructor;for(let i in e){if(!Object.prototype.hasOwnProperty.call(e,i)||i==="proxyCache")continue;let r=e[i],o=typeof r;i==="parent"&&o==="object"?t&&(n[i]=t):i==="source"?n[i]=r:Array.isArray(r)?n[i]=r.map(s=>mi(s,n)):(o==="object"&&r!==null&&(r=mi(r)),n[i]=r)}return n}function ze(e,t){if(t&&typeof t.offset<"u")return t.offset;let n=1,i=1,r=0;for(let o=0;o<e.length;o++){if(i===t.line&&n===t.column){r=o;break}e[o]===`\n`?(n=1,i+=1):n+=1}return r}var Bt=class{get proxyOf(){return this}constructor(t={}){this.raws={},this[Ot]=!1,this[jl]=!0;for(let n in t)if(n==="nodes"){this.nodes=[];for(let i of t[n])typeof i.clone=="function"?this.append(i.clone()):this.append(i)}else this[n]=t[n]}addToError(t){if(t.postcssNode=this,t.stack&&this.source&&/\\n\\s{4}at /.test(t.stack)){let n=this.source;t.stack=t.stack.replace(/\\n\\s{4}at /,`$&${n.input.from}:${n.start.line}:${n.start.column}$&`)}return t}after(t){return this.parent.insertAfter(this,t),this}assign(t={}){for(let n in t)this[n]=t[n];return this}before(t){return this.parent.insertBefore(this,t),this}cleanRaws(t){delete this.raws.before,delete this.raws.after,t||delete this.raws.between}clone(t={}){let n=mi(this);for(let i in t)n[i]=t[i];return n}cloneAfter(t={}){let n=this.clone(t);return this.parent.insertAfter(this,n),n}cloneBefore(t={}){let n=this.clone(t);return this.parent.insertBefore(this,n),n}error(t,n={}){if(this.source){let{end:i,start:r}=this.rangeBy(n);return this.source.input.error(t,{column:r.column,line:r.line},{column:i.column,line:i.line},n)}return new Vl(t)}getProxyProcessor(){return{get(t,n){return n==="proxyOf"?t:n==="root"?()=>t.root().toProxy():t[n]},set(t,n,i){return t[n]===i||(t[n]=i,(n==="prop"||n==="value"||n==="name"||n==="params"||n==="important"||n==="text")&&t.markDirty()),!0}}}markClean(){this[Ot]=!0}markDirty(){if(this[Ot]){this[Ot]=!1;let t=this;for(;t=t.parent;)t[Ot]=!1}}next(){if(!this.parent)return;let t=this.parent.index(this);return this.parent.nodes[t+1]}positionBy(t={}){let n=this.source.start;if(t.index)n=this.positionInside(t.index);else if(t.word){let i="document"in this.source.input?this.source.input.document:this.source.input.css,o=i.slice(ze(i,this.source.start),ze(i,this.source.end)).indexOf(t.word);o!==-1&&(n=this.positionInside(o))}return n}positionInside(t){let n=this.source.start.column,i=this.source.start.line,r="document"in this.source.input?this.source.input.document:this.source.input.css,o=ze(r,this.source.start),s=o+t;for(let u=o;u<s;u++)r[u]===`\n`?(n=1,i+=1):n+=1;return{column:n,line:i,offset:s}}prev(){if(!this.parent)return;let t=this.parent.index(this);return this.parent.nodes[t-1]}rangeBy(t={}){let n="document"in this.source.input?this.source.input.document:this.source.input.css,i={column:this.source.start.column,line:this.source.start.line,offset:ze(n,this.source.start)},r=this.source.end?{column:this.source.end.column+1,line:this.source.end.line,offset:typeof this.source.end.offset=="number"?this.source.end.offset:ze(n,this.source.end)+1}:{column:i.column+1,line:i.line,offset:i.offset+1};if(t.word){let s=n.slice(ze(n,this.source.start),ze(n,this.source.end)).indexOf(t.word);s!==-1&&(i=this.positionInside(s),r=this.positionInside(s+t.word.length))}else t.start?i={column:t.start.column,line:t.start.line,offset:ze(n,t.start)}:t.index&&(i=this.positionInside(t.index)),t.end?r={column:t.end.column,line:t.end.line,offset:ze(n,t.end)}:typeof t.endIndex=="number"?r=this.positionInside(t.endIndex):t.index&&(r=this.positionInside(t.index+1));return(r.line<i.line||r.line===i.line&&r.column<=i.column)&&(r={column:i.column+1,line:i.line,offset:i.offset+1}),{end:r,start:i}}raw(t,n){return new zl().raw(this,t,n)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}replaceWith(...t){if(this.parent){let n=this,i=!1;for(let r of t)r===this?i=!0:i?(this.parent.insertAfter(n,r),n=r):this.parent.insertBefore(n,r);i||this.remove()}return this}root(){let t=this;for(;t.parent&&t.parent.type!=="document";)t=t.parent;return t}toJSON(t,n){let i={},r=n==null;n=n||new Map;let o=0;for(let s in this){if(!Object.prototype.hasOwnProperty.call(this,s)||s==="parent"||s==="proxyCache")continue;let u=this[s];if(Array.isArray(u))i[s]=u.map(a=>typeof a=="object"&&a.toJSON?a.toJSON(null,n):a);else if(typeof u=="object"&&u.toJSON)i[s]=u.toJSON(null,n);else if(s==="source"){if(u==null)continue;let a=n.get(u.input);a==null&&(a=o,n.set(u.input,o),o++),i[s]={end:u.end,inputId:a,start:u.start}}else i[s]=u}return r&&(i.inputs=[...n.keys()].map(s=>s.toJSON())),i}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(t=ql){t.stringify&&(t=t.stringify);let n="";return t(this,i=>{n+=i}),n}warn(t,n,i={}){let r={node:this};for(let o in i)r[o]=i[o];return t.warn(n,r)}};so.exports=Bt;Bt.default=Bt});var Wt=te((pp,ao)=>{"use strict";var $l=Ht(),Gt=class extends $l{constructor(t){super(t),this.type="comment"}};ao.exports=Gt;Gt.default=Gt});var Vt=te((hp,lo)=>{"use strict";var Kl=Ht(),Ut=class extends Kl{get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}constructor(t){t&&typeof t.value<"u"&&typeof t.value!="string"&&(t={...t,value:String(t.value)}),super(t),this.type="decl"}};lo.exports=Ut;Ut.default=Ut});var Je=te((gp,bo)=>{"use strict";var uo=Wt(),co=Vt(),Jl=Ht(),{isClean:fo,my:mo}=fn(),pi,po,ho,hi;function go(e){return e.map(t=>(t.nodes&&(t.nodes=go(t.nodes)),delete t.source,t))}function xo(e){if(e[fo]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)xo(t)}var De=class e extends Jl{get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}append(...t){for(let n of t){let i=this.normalize(n,this.last);for(let r of i)this.proxyOf.nodes.push(r)}return this.markDirty(),this}cleanRaws(t){if(super.cleanRaws(t),this.nodes)for(let n of this.nodes)n.cleanRaws(t)}each(t){if(!this.proxyOf.nodes)return;let n=this.getIterator(),i,r;for(;this.indexes[n]<this.proxyOf.nodes.length&&(i=this.indexes[n],r=t(this.proxyOf.nodes[i],i),r!==!1);)this.indexes[n]+=1;return delete this.indexes[n],r}every(t){return this.nodes.every(t)}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let t=this.lastEach;return this.indexes[t]=0,t}getProxyProcessor(){return{get(t,n){return n==="proxyOf"?t:t[n]?n==="each"||typeof n=="string"&&n.startsWith("walk")?(...i)=>t[n](...i.map(r=>typeof r=="function"?(o,s)=>r(o.toProxy(),s):r)):n==="every"||n==="some"?i=>t[n]((r,...o)=>i(r.toProxy(),...o)):n==="root"?()=>t.root().toProxy():n==="nodes"?t.nodes.map(i=>i.toProxy()):n==="first"||n==="last"?t[n].toProxy():t[n]:t[n]},set(t,n,i){return t[n]===i||(t[n]=i,(n==="name"||n==="params"||n==="selector")&&t.markDirty()),!0}}}index(t){return typeof t=="number"?t:(t.proxyOf&&(t=t.proxyOf),this.proxyOf.nodes.indexOf(t))}insertAfter(t,n){let i=this.index(t),r=this.normalize(n,this.proxyOf.nodes[i]).reverse();i=this.index(t);for(let s of r)this.proxyOf.nodes.splice(i+1,0,s);let o;for(let s in this.indexes)o=this.indexes[s],i<o&&(this.indexes[s]=o+r.length);return this.markDirty(),this}insertBefore(t,n){let i=this.index(t),r=i===0?"prepend":!1,o=this.normalize(n,this.proxyOf.nodes[i],r).reverse();i=this.index(t);for(let u of o)this.proxyOf.nodes.splice(i,0,u);let s;for(let u in this.indexes)s=this.indexes[u],i<=s&&(this.indexes[u]=s+o.length);return this.markDirty(),this}normalize(t,n){if(typeof t=="string")t=go(po(t).nodes);else if(typeof t>"u")t=[];else if(Array.isArray(t)){t=t.slice(0);for(let r of t)r.parent&&r.parent.removeChild(r,"ignore")}else if(t.type==="root"&&this.type!=="document"){t=t.nodes.slice(0);for(let r of t)r.parent&&r.parent.removeChild(r,"ignore")}else if(t.type)t=[t];else if(t.prop){if(typeof t.value>"u")throw new Error("Value field is missed in node creation");typeof t.value!="string"&&(t.value=String(t.value)),t=[new co(t)]}else if(t.selector||t.selectors)t=[new hi(t)];else if(t.name)t=[new pi(t)];else if(t.text)t=[new uo(t)];else throw new Error("Unknown node type in node creation");return t.map(r=>(r[mo]||e.rebuild(r),r=r.proxyOf,r.parent&&r.parent.removeChild(r),r[fo]&&xo(r),r.raws||(r.raws={}),typeof r.raws.before>"u"&&n&&typeof n.raws.before<"u"&&(r.raws.before=n.raws.before.replace(/\\S/g,"")),r.parent=this.proxyOf,r))}prepend(...t){t=t.reverse();for(let n of t){let i=this.normalize(n,this.first,"prepend").reverse();for(let r of i)this.proxyOf.nodes.unshift(r);for(let r in this.indexes)this.indexes[r]=this.indexes[r]+i.length}return this.markDirty(),this}push(t){return t.parent=this,this.proxyOf.nodes.push(t),this}removeAll(){for(let t of this.proxyOf.nodes)t.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(t){t=this.index(t),this.proxyOf.nodes[t].parent=void 0,this.proxyOf.nodes.splice(t,1);let n;for(let i in this.indexes)n=this.indexes[i],n>=t&&(this.indexes[i]=n-1);return this.markDirty(),this}replaceValues(t,n,i){return i||(i=n,n={}),this.walkDecls(r=>{n.props&&!n.props.includes(r.prop)||n.fast&&!r.value.includes(n.fast)||(r.value=r.value.replace(t,i))}),this.markDirty(),this}some(t){return this.nodes.some(t)}walk(t){return this.each((n,i)=>{let r;try{r=t(n,i)}catch(o){throw n.addToError(o)}return r!==!1&&n.walk&&(r=n.walk(t)),r})}walkAtRules(t,n){return n?t instanceof RegExp?this.walk((i,r)=>{if(i.type==="atrule"&&t.test(i.name))return n(i,r)}):this.walk((i,r)=>{if(i.type==="atrule"&&i.name===t)return n(i,r)}):(n=t,this.walk((i,r)=>{if(i.type==="atrule")return n(i,r)}))}walkComments(t){return this.walk((n,i)=>{if(n.type==="comment")return t(n,i)})}walkDecls(t,n){return n?t instanceof RegExp?this.walk((i,r)=>{if(i.type==="decl"&&t.test(i.prop))return n(i,r)}):this.walk((i,r)=>{if(i.type==="decl"&&i.prop===t)return n(i,r)}):(n=t,this.walk((i,r)=>{if(i.type==="decl")return n(i,r)}))}walkRules(t,n){return n?t instanceof RegExp?this.walk((i,r)=>{if(i.type==="rule"&&t.test(i.selector))return n(i,r)}):this.walk((i,r)=>{if(i.type==="rule"&&i.selector===t)return n(i,r)}):(n=t,this.walk((i,r)=>{if(i.type==="rule")return n(i,r)}))}};De.registerParse=e=>{po=e};De.registerRule=e=>{hi=e};De.registerAtRule=e=>{pi=e};De.registerRoot=e=>{ho=e};bo.exports=De;De.default=De;De.rebuild=e=>{e.type==="atrule"?Object.setPrototypeOf(e,pi.prototype):e.type==="rule"?Object.setPrototypeOf(e,hi.prototype):e.type==="decl"?Object.setPrototypeOf(e,co.prototype):e.type==="comment"?Object.setPrototypeOf(e,uo.prototype):e.type==="root"&&Object.setPrototypeOf(e,ho.prototype),e[mo]=!0,e.nodes&&e.nodes.forEach(t=>{De.rebuild(t)})}});var mn=te((xp,So)=>{"use strict";var yo=Je(),pt=class extends yo{constructor(t){super(t),this.type="atrule"}append(...t){return this.proxyOf.nodes||(this.nodes=[]),super.append(...t)}prepend(...t){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...t)}};So.exports=pt;pt.default=pt;yo.registerAtRule(pt)});var pn=te((bp,wo)=>{"use strict";var Xl=Je(),Eo,Ao,at=class extends Xl{constructor(t){super({type:"document",...t}),this.nodes||(this.nodes=[])}toResult(t={}){return new Eo(new Ao,this,t).stringify()}};at.registerLazyResult=e=>{Eo=e};at.registerProcessor=e=>{Ao=e};wo.exports=at;at.default=at});var Co=te((yp,Fo)=>{var Yl="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",Ql=(e,t=21)=>(n=t)=>{let i="",r=n|0;for(;r--;)i+=e[Math.random()*e.length|0];return i},Zl=(e=21)=>{let t="",n=e|0;for(;n--;)t+=Yl[Math.random()*64|0];return t};Fo.exports={nanoid:Zl,customAlphabet:Ql}});var hn=te(()=>{});var gn=te(()=>{});var gi=te(()=>{});var _o=te(()=>{});var bi=te((vp,To)=>{"use strict";var{existsSync:eu,readFileSync:tu}=_o(),{dirname:xi,join:nu}=hn(),{SourceMapConsumer:Mo,SourceMapGenerator:vo}=gn();function iu(e){return Buffer?Buffer.from(e,"base64").toString():window.atob(e)}var zt=class{constructor(t,n){if(n.map===!1)return;n.unsafeMap&&(this.unsafeMap=!0),this.loadAnnotation(t),this.inline=this.startWith(this.annotation,"data:");let i=n.map?n.map.prev:void 0,r=this.loadMap(n.from,i);!this.mapFile&&n.from&&(this.mapFile=n.from),this.mapFile&&(this.root=xi(this.mapFile)),r&&(this.text=r)}consumer(){return this.consumerCache||(this.consumerCache=new Mo(this.json||this.text)),this.consumerCache}decodeInline(t){let n=/^data:application\\/json;charset=utf-?8;base64,/,i=/^data:application\\/json;base64,/,r=/^data:application\\/json;charset=utf-?8,/,o=/^data:application\\/json,/,s=t.match(r)||t.match(o);if(s)return decodeURIComponent(t.substr(s[0].length));let u=t.match(n)||t.match(i);if(u)return iu(t.substr(u[0].length));let a=t.slice(22);throw a=a.slice(0,a.indexOf(",")),new Error("Unsupported source map encoding "+a)}getAnnotationURL(t){return t.replace(/^\\/\\*\\s*# sourceMappingURL=/,"").trim()}isMap(t){return typeof t!="object"?!1:typeof t.mappings=="string"||typeof t._mappings=="string"||Array.isArray(t.sections)}loadAnnotation(t){let n=t.match(/\\/\\*\\s*# sourceMappingURL=/g);if(!n)return;let i=t.lastIndexOf(n.pop()),r=t.indexOf("*/",i);i>-1&&r>-1&&(this.annotation=this.getAnnotationURL(t.substring(i,r)))}loadFile(t,n,i){if(!(!i&&!this.unsafeMap&&!/\\.map$/i.test(t))&&(this.root=xi(t),eu(t)))return this.mapFile=t,tu(t,"utf-8").toString().trim()}loadMap(t,n){if(n===!1)return!1;if(n){if(typeof n=="string")return n;if(typeof n=="function"){let i=n(t);if(i){let r=this.loadFile(i,t,!0);if(!r)throw new Error("Unable to load previous source map: "+i.toString());return r}}else{if(n instanceof Mo)return vo.fromSourceMap(n).toString();if(n instanceof vo)return n.toString();if(this.isMap(n))return JSON.stringify(n);throw new Error("Unsupported previous source map format: "+n.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let i=this.annotation;t&&(i=nu(xi(t),i));let r=this.loadFile(i,t,!1);if(r)try{this.json=JSON.parse(r.replace(/^\\)]}\'[^\\n]*\\n/,""))}catch{return}return r}}}startWith(t,n){return t?t.substr(0,n.length)===n:!1}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};To.exports=zt;zt.default=zt});var qt=te((Tp,Do)=>{"use strict";var{nanoid:ru}=Co(),{isAbsolute:Ei,resolve:Ai}=hn(),{SourceMapConsumer:ou,SourceMapGenerator:su}=gn(),{fileURLToPath:No,pathToFileURL:xn}=gi(),Lo=dn(),au=bi(),yi=ui(),Si=Symbol("lineToIndexCache"),lu=!!(ou&&su),Ro=!!(Ai&&Ei);function ko(e){if(e[Si])return e[Si];let t=e.css.split(`\n`),n=new Array(t.length),i=0;for(let r=0,o=t.length;r<o;r++)n[r]=i,i+=t[r].length+1;return e[Si]=n,n}var ht=class{get from(){return this.file||this.id}constructor(t,n={}){if(t===null||typeof t>"u"||typeof t=="object"&&!t.toString)throw new Error(`PostCSS received ${t} instead of CSS string`);if(this.css=t.toString(),this.css[0]==="\\uFEFF"||this.css[0]==="\\uFFFE"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,this.document=this.css,n.document&&(this.document=n.document.toString()),n.from&&(!Ro||/^\\w+:\\/\\//.test(n.from)||Ei(n.from)?this.file=n.from:this.file=Ai(n.from)),Ro&&lu){let i=new au(this.css,n);if(i.text){this.map=i;let r=i.consumer().file;!this.file&&r&&(this.file=this.mapResolve(r))}}this.file||(this.id="<input css "+ru(6)+">"),this.map&&(this.map.file=this.from)}error(t,n,i,r={}){let o,s,u,a,l;if(n&&typeof n=="object"){let p=n,f=i;if(typeof p.offset=="number"){a=p.offset;let x=this.fromOffset(a);n=x.line,i=x.col}else n=p.line,i=p.column,a=this.fromLineAndColumn(n,i);if(typeof f.offset=="number"){u=f.offset;let x=this.fromOffset(u);s=x.line,o=x.col}else s=f.line,o=f.column,u=this.fromLineAndColumn(f.line,f.column)}else if(i)a=this.fromLineAndColumn(n,i);else{a=n;let p=this.fromOffset(a);n=p.line,i=p.col}let c=this.origin(n,i,s,o);return c?l=new Lo(t,c.endLine===void 0?c.line:{column:c.column,line:c.line},c.endLine===void 0?c.column:{column:c.endColumn,line:c.endLine},c.source,c.file,r.plugin):l=new Lo(t,s===void 0?n:{column:i,line:n},s===void 0?i:{column:o,line:s},this.css,this.file,r.plugin),l.input={column:i,endColumn:o,endLine:s,endOffset:u,line:n,offset:a,source:this.css},this.file&&(xn&&(l.input.url=xn(this.file).toString()),l.input.file=this.file),l}fromLineAndColumn(t,n){return ko(this)[t-1]+n-1}fromOffset(t){let n=ko(this),i=n[n.length-1],r=0;if(t>=i)r=n.length-1;else{let o=n.length-2,s;for(;r<o;)if(s=r+(o-r>>1),t<n[s])o=s-1;else if(t>=n[s+1])r=s+1;else{r=s;break}}return{col:t-n[r]+1,line:r+1}}mapResolve(t){return/^\\w+:\\/\\//.test(t)?t:Ai(this.map.consumer().sourceRoot||this.map.root||".",t)}origin(t,n,i,r){if(!this.map)return!1;let o=this.map.consumer(),s=o.originalPositionFor({column:n,line:t});if(!s.source)return!1;let u;typeof i=="number"&&(u=o.originalPositionFor({column:r,line:i}));let a;Ei(s.source)?a=xn(s.source):a=new URL(s.source,this.map.consumer().sourceRoot||xn(this.map.mapFile));let l={column:s.column,endColumn:u&&u.column,endLine:u&&u.line,line:s.line,url:a.toString()};if(a.protocol==="file:")if(No)l.file=No(a);else throw new Error("file: protocol is not available in this PostCSS build");let c=o.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let t={};for(let n of["hasBOM","css","file","id"])this[n]!=null&&(t[n]=this[n]);return this.map&&(t.map={...this.map},t.map.consumerCache&&(t.map.consumerCache=void 0)),t}};Do.exports=ht;ht.default=ht;yi&&yi.registerInput&&yi.registerInput(ht)});var gt=te((Np,Bo)=>{"use strict";var Io=Je(),Po,Oo,Xe=class extends Io{constructor(t){super(t),this.type="root",this.nodes||(this.nodes=[])}normalize(t,n,i){let r=super.normalize(t);if(n){if(i==="prepend")this.nodes.length>1?n.raws.before=this.nodes[1].raws.before:delete n.raws.before;else if(this.first!==n)for(let o of r)o.raws.before=n.raws.before}return r}removeChild(t,n){let i=this.index(t);return!n&&i===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[i].raws.before),super.removeChild(t)}toResult(t={}){return new Po(new Oo,this,t).stringify()}};Xe.registerLazyResult=e=>{Po=e};Xe.registerProcessor=e=>{Oo=e};Bo.exports=Xe;Xe.default=Xe;Io.registerRoot(Xe)});var wi=te((Lp,Ho)=>{"use strict";var jt={comma(e){return jt.split(e,[","],!0)},space(e){let t=[" ",`\n`," "];return jt.split(e,t)},split(e,t,n){let i=[],r="",o=!1,s=0,u=!1,a="",l=!1;for(let c of e)l?l=!1:c==="\\\\"?l=!0:u?c===a&&(u=!1):c===\'"\'||c==="\'"?(u=!0,a=c):c==="("?s+=1:c===")"?s>0&&(s-=1):s===0&&t.includes(c)&&(o=!0),o?(r!==""&&i.push(r.trim()),r="",o=!1):r+=c;return(n||r!=="")&&i.push(r.trim()),i}};Ho.exports=jt;jt.default=jt});var bn=te((Rp,Wo)=>{"use strict";var Go=Je(),uu=wi(),xt=class extends Go{get selectors(){return uu.comma(this.selector)}set selectors(t){let n=this.selector?this.selector.match(/,\\s*/):null,i=n?n[0]:","+this.raw("between","beforeOpen");this.selector=t.join(i)}constructor(t){super(t),this.type="rule",this.nodes||(this.nodes=[])}};Wo.exports=xt;xt.default=xt;Go.registerRule(xt)});var Vo=te((kp,Uo)=>{"use strict";var cu=mn(),du=Wt(),fu=Vt(),mu=qt(),pu=bi(),hu=gt(),gu=bn();function $t(e,t){if(Array.isArray(e))return e.map(r=>$t(r));let{inputs:n,...i}=e;if(n){t=[];for(let r of n){let o={...r,__proto__:mu.prototype};o.map&&(o.map={...o.map,__proto__:pu.prototype}),t.push(o)}}if(i.nodes&&(i.nodes=e.nodes.map(r=>$t(r,t))),i.source){let{inputId:r,...o}=i.source;i.source=o,r!=null&&(i.source.input=t[r])}if(i.type==="root")return new hu(i);if(i.type==="decl")return new fu(i);if(i.type==="rule")return new gu(i);if(i.type==="comment")return new du(i);if(i.type==="atrule")return new cu(i);throw new Error("Unknown node type: "+e.type)}Uo.exports=$t;$t.default=$t});var Ci=te((Dp,Jo)=>{"use strict";var{dirname:yn,relative:qo,resolve:jo,sep:$o}=hn(),{SourceMapConsumer:Ko,SourceMapGenerator:Sn}=gn(),{pathToFileURL:zo}=gi(),xu=qt(),bu=!!(Ko&&Sn),yu=!!(yn&&jo&&qo&&$o),Fi=class{constructor(t,n,i,r){this.stringify=t,this.mapOpts=i.map||{},this.root=n,this.opts=i,this.css=r,this.originalCSS=r,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let t;this.isInline()?t="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?t=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?t=this.mapOpts.annotation(this.opts.to,this.root):t=this.outputFile()+".map";let n=`\n`;this.css.includes(`\\r\n`)&&(n=`\\r\n`),this.css+=n+"/*# sourceMappingURL="+t+" */"}applyPrevMaps(){for(let t of this.previous()){let n=this.toUrl(this.path(t.file)),i=t.root||yn(t.file),r;this.mapOpts.sourcesContent===!1?(r=new Ko(t.text),r.sourcesContent&&(r.sourcesContent=null)):r=t.consumer(),this.map.applySourceMap(r,n,this.toUrl(this.path(i)))}}clearAnnotation(){if(this.mapOpts.annotation!==!1){if(this.root){let t;for(let n=this.root.nodes.length-1;n>=0;n--)t=this.root.nodes[n],t.type==="comment"&&t.text.startsWith("# sourceMappingURL=")&&this.root.removeChild(n)}else if(this.css){let t;for(;(t=this.css.lastIndexOf("/*#"))!==-1;){let n=this.css.indexOf("*/",t+3);if(n===-1)break;for(;t>0&&this.css[t-1]===`\n`;)t--;this.css=this.css.slice(0,t)+this.css.slice(n+2)}}}}generate(){if(this.clearAnnotation(),yu&&bu&&this.isMap())return this.generateMap();{let t="";return this.stringify(this.root,n=>{t+=n}),[t]}}generateMap(){if(this.root)this.generateString();else if(this.previous().length===1){let t=this.previous()[0].consumer();t.file=this.outputFile(),this.map=Sn.fromSourceMap(t,{ignoreInvalidMapping:!0})}else this.map=new Sn({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>"});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Sn({file:this.outputFile(),ignoreInvalidMapping:!0});let t=1,n=1,i="<no source>",r={generated:{column:0,line:0},original:{column:0,line:0},source:""},o,s;this.stringify(this.root,(u,a,l)=>{if(this.css+=u,a&&l!=="end"&&(r.generated.line=t,r.generated.column=n-1,a.source&&a.source.start?(r.source=this.sourcePath(a),r.original.line=a.source.start.line,r.original.column=a.source.start.column-1,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,this.map.addMapping(r))),s=u.match(/\\n/g),s?(t+=s.length,o=u.lastIndexOf(`\n`),n=u.length-o):n+=u.length,a&&l!=="start"){let c=a.parent||{raws:{}};(!(a.type==="decl"||a.type==="atrule"&&!a.nodes)||a!==c.last||c.raws.semicolon)&&(a.source&&a.source.end?(r.source=this.sourcePath(a),r.original.line=a.source.end.line,r.original.column=a.source.end.column-1,r.generated.line=t,r.generated.column=n-2,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,r.generated.line=t,r.generated.column=n-1,this.map.addMapping(r)))}})}isAnnotation(){return this.isInline()?!0:typeof this.mapOpts.annotation<"u"?this.mapOpts.annotation:this.previous().length?this.previous().some(t=>t.annotation):!0}isInline(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;let t=this.mapOpts.annotation;return typeof t<"u"&&t!==!0?!1:this.previous().length?this.previous().some(n=>n.inline):!0}isMap(){return typeof this.opts.map<"u"?!!this.opts.map:this.previous().length>0}isSourcesContent(){return typeof this.mapOpts.sourcesContent<"u"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(t=>t.withContent()):!0}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(t){if(this.mapOpts.absolute||t.charCodeAt(0)===60||/^\\w+:\\/\\//.test(t))return t;let n=this.memoizedPaths.get(t);if(n)return n;let i=this.opts.to?yn(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(i=yn(jo(i,this.mapOpts.annotation)));let r=qo(i,t);return this.memoizedPaths.set(t,r),r}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(t=>{if(t.source&&t.source.input.map){let n=t.source.input.map;this.previousMaps.includes(n)||this.previousMaps.push(n)}});else{let t=new xu(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps}setSourcesContent(){let t={};if(this.root)this.root.walk(n=>{if(n.source){let i=n.source.input.from;if(i&&!t[i]){t[i]=!0;let r=this.usesFileUrls?this.toFileUrl(i):this.toUrl(this.path(i));this.map.setSourceContent(r,n.source.input.css)}}});else if(this.css){let n=this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>";this.map.setSourceContent(n,this.css)}}sourcePath(t){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(t.source.input.from):this.toUrl(this.path(t.source.input.from))}toBase64(t){return Buffer?Buffer.from(t).toString("base64"):window.btoa(unescape(encodeURIComponent(t)))}toFileUrl(t){let n=this.memoizedFileURLs.get(t);if(n)return n;if(zo){let i=zo(t).toString();return this.memoizedFileURLs.set(t,i),i}else throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(t){let n=this.memoizedURLs.get(t);if(n)return n;$o==="\\\\"&&(t=t.replace(/\\\\/g,"/"));let i=encodeURI(t).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(t,i),i}};Jo.exports=Fi});var Qo=te((Ip,Yo)=>{"use strict";var En=/[\\t\\n\\f\\r "#\'()/;[\\\\\\]{}]/g,An=/[\\t\\n\\f\\r !"#\'():;@[\\\\\\]{}]|\\/(?=\\*)/g,Su=/.[\\r\\n"\'(/\\\\]/,Xo=/[\\da-f]/i;Yo.exports=function(t,n={}){let i=t.css.valueOf(),r=n.ignoreErrors,o,s,u,a,l,c,p,f,x,E,b=i.length,g=0,A=[],C=[],N=-1;function $(){return g}function B(_){throw t.error("Unclosed "+_,g)}function v(){return C.length===0&&g>=b}function S(_){if(C.length)return C.pop();if(g>=b)return;let T=_?_.ignoreUnclosed:!1;switch(o=i.charCodeAt(g),o){case 10:case 32:case 9:case 13:case 12:{a=g;do a+=1,o=i.charCodeAt(a);while(o===32||o===10||o===9||o===13||o===12);c=["space",i.slice(g,a)],g=a-1;break}case 91:case 93:case 123:case 125:case 58:case 59:case 41:{let R=String.fromCharCode(o);c=[R,R,g];break}case 40:{if(E=A.length?A.pop()[1]:"",x=i.charCodeAt(g+1),E==="url"&&x!==39&&x!==34&&x!==32&&x!==10&&x!==9&&x!==12&&x!==13){a=g;do{if(p=!1,a=i.indexOf(")",a+1),a===-1)if(r||T){a=g;break}else B("bracket");for(f=a;i.charCodeAt(f-1)===92;)f-=1,p=!p}while(p);c=["brackets",i.slice(g,a+1),g,a],g=a}else g<=N?c=["(","(",g]:(a=i.indexOf(")",g+1),s=i.slice(g,a+1),a===-1||Su.test(s)?(N=a===-1?b:a,c=["(","(",g]):(c=["brackets",s,g,a],g=a));break}case 39:case 34:{l=o===39?"\'":\'"\',a=g;do{if(p=!1,a=i.indexOf(l,a+1),a===-1)if(r||T){a=g+1;break}else B("string");for(f=a;i.charCodeAt(f-1)===92;)f-=1,p=!p}while(p);c=["string",i.slice(g,a+1),g,a],g=a;break}case 64:{En.lastIndex=g+1,En.test(i),En.lastIndex===0?a=i.length-1:a=En.lastIndex-2,c=["at-word",i.slice(g,a+1),g,a],g=a;break}case 92:{for(a=g,u=!0;i.charCodeAt(a+1)===92;)a+=1,u=!u;if(o=i.charCodeAt(a+1),u&&o!==47&&o!==32&&o!==10&&o!==9&&o!==13&&o!==12&&(a+=1,Xo.test(i.charAt(a)))){for(;Xo.test(i.charAt(a+1));)a+=1;i.charCodeAt(a+1)===32&&(a+=1)}c=["word",i.slice(g,a+1),g,a],g=a;break}default:{o===47&&i.charCodeAt(g+1)===42?(a=i.indexOf("*/",g+2)+1,a===0&&(r||T?a=i.length:B("comment")),c=["comment",i.slice(g,a+1),g,a],g=a):(An.lastIndex=g+1,An.test(i),An.lastIndex===0?a=i.length-1:a=An.lastIndex-2,c=["word",i.slice(g,a+1),g,a],A.push(c),g=a);break}}return g++,c}function F(_){C.push(_)}return{back:F,endOfFile:v,nextToken:S,position:$}}});var ns=te((Pp,ts)=>{"use strict";var Eu=mn(),Au=Wt(),wu=Vt(),Fu=gt(),Zo=bn(),Cu=Qo(),es={empty:!0,space:!0};function _u(e){for(let t=e.length-1;t>=0;t--){let n=e[t],i=n[3]||n[2];if(i)return i}}var _i=class{constructor(t){this.input=t,this.root=new Fu,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:t,start:{column:1,line:1,offset:0}}}atrule(t){let n=new Eu;n.name=t[1].slice(1),n.name===""&&this.unnamedAtrule(n,t),this.init(n,t[2]);let i,r,o,s=!1,u=!1,a=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=this.tokenizer.nextToken(),i=t[0],i==="("||i==="["?l.push(i==="("?")":"]"):i==="{"&&l.length>0?l.push("}"):i===l[l.length-1]&&l.pop(),l.length===0)if(i===";"){n.source.end=this.getPosition(t[2]),n.source.end.offset++,this.semicolon=!0;break}else if(i==="{"){u=!0;break}else if(i==="}"){if(a.length>0){for(o=a.length-1,r=a[o];r&&r[0]==="space";)r=a[--o];r&&(n.source.end=this.getPosition(r[3]||r[2]),n.source.end.offset++)}this.end(t);break}else a.push(t);else a.push(t);if(this.tokenizer.endOfFile()){s=!0;break}}n.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(n.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(n,"params",a),s&&(t=a[a.length-1],n.source.end=this.getPosition(t[3]||t[2]),n.source.end.offset++,this.spaces=n.raws.between,n.raws.between="")):(n.raws.afterName="",n.params=""),u&&(n.nodes=[],this.current=n)}checkMissedSemicolon(t){let n=this.colon(t);if(n===!1)return;let i=0,r;for(let o=n-1;o>=0&&(r=t[o],!(r[0]!=="space"&&(i+=1,i===2)));o--);throw this.input.error("Missed semicolon",r[0]==="word"?r[3]+1:r[2])}colon(t){let n=0,i,r,o;for(let[s,u]of t.entries()){if(r=u,o=r[0],o==="("&&(n+=1),o===")"&&(n-=1),n===0&&o===":")if(!i)this.doubleColon(r);else{if(i[0]==="word"&&i[1]==="progid")continue;return s}i=r}return!1}comment(t){let n=new Au;this.init(n,t[2]),n.source.end=this.getPosition(t[3]||t[2]),n.source.end.offset++;let i=t[1].slice(2,-2);if(!i.trim())n.text="",n.raws.left=i,n.raws.right="";else{let r=i.match(/^(\\s*)([^]*\\S)(\\s*)$/);n.text=r[2],n.raws.left=r[1],n.raws.right=r[3]}}createTokenizer(){this.tokenizer=Cu(this.input)}decl(t,n){let i=new wu;this.init(i,t[0][2]);let r=t[t.length-1];for(r[0]===";"&&(this.semicolon=!0,t.pop()),i.source.end=this.getPosition(r[3]||r[2]||_u(t)),i.source.end.offset++;t[0][0]!=="word";)t.length===1&&this.unknownWord(t),i.raws.before+=t.shift()[1];for(i.source.start=this.getPosition(t[0][2]),i.prop="";t.length;){let l=t[0][0];if(l===":"||l==="space"||l==="comment")break;i.prop+=t.shift()[1]}i.raws.between="";let o;for(;t.length;)if(o=t.shift(),o[0]===":"){i.raws.between+=o[1];break}else o[0]==="word"&&/\\w/.test(o[1])&&this.unknownWord([o]),i.raws.between+=o[1];(i.prop[0]==="_"||i.prop[0]==="*")&&(i.raws.before+=i.prop[0],i.prop=i.prop.slice(1));let s=[],u;for(;t.length&&(u=t[0][0],!(u!=="space"&&u!=="comment"));)s.push(t.shift());this.precheckMissedSemicolon(t);for(let l=t.length-1;l>=0;l--){if(o=t[l],o[1].toLowerCase()==="!important"){i.important=!0;let c=this.stringFrom(t,l);c=this.spacesFromEnd(t)+c,c!==" !important"&&(i.raws.important=c);break}else if(o[1].toLowerCase()==="important"){let c=t.slice(0),p="";for(let f=l;f>0;f--){let x=c[f][0];if(p.trim().startsWith("!")&&x!=="space")break;p=c.pop()[1]+p}p.trim().startsWith("!")&&(i.important=!0,i.raws.important=p,t=c)}if(o[0]!=="space"&&o[0]!=="comment")break}t.some(l=>l[0]!=="space"&&l[0]!=="comment")&&(i.raws.between+=s.map(l=>l[1]).join(""),s=[]),this.raw(i,"value",s.concat(t),n),i.value.includes(":")&&!n&&this.checkMissedSemicolon(t)}doubleColon(t){throw this.input.error("Double colon",{offset:t[2]},{offset:t[2]+t[1].length})}emptyRule(t){let n=new Zo;this.init(n,t[2]),n.selector="",n.raws.between="",this.current=n}end(t){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(t[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(t)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(t){if(this.spaces+=t[1],this.current.nodes){let n=this.current.nodes[this.current.nodes.length-1];n&&n.type==="rule"&&!n.raws.ownSemicolon&&(n.raws.ownSemicolon=this.spaces,this.spaces="",n.source.end=this.getPosition(t[2]),n.source.end.offset+=n.raws.ownSemicolon.length)}}getPosition(t){let n=this.input.fromOffset(t);return{column:n.col,line:n.line,offset:t}}init(t,n){this.current.push(t),t.source={input:this.input,start:this.getPosition(n)},t.raws.before=this.spaces,this.spaces="",t.type!=="comment"&&(this.semicolon=!1)}other(t){let n=!1,i=null,r=!1,o=null,s=[],u=t[1].startsWith("--"),a=[],l=t;for(;l;){if(i=l[0],a.push(l),i==="("||i==="[")o||(o=l),s.push(i==="("?")":"]");else if(u&&r&&i==="{")o||(o=l),s.push("}");else if(s.length===0)if(i===";")if(r){this.decl(a,u);return}else break;else if(i==="{"){this.rule(a);return}else if(i==="}"){this.tokenizer.back(a.pop()),n=!0;break}else i===":"&&(r=!0);else i===s[s.length-1]&&(s.pop(),s.length===0&&(o=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(n=!0),s.length>0&&this.unclosedBracket(o),n&&r){if(!u)for(;a.length&&(l=a[a.length-1][0],!(l!=="space"&&l!=="comment"));)this.tokenizer.back(a.pop());this.decl(a,u)}else this.unknownWord(a)}parse(){let t;for(;!this.tokenizer.endOfFile();)switch(t=this.tokenizer.nextToken(),t[0]){case"space":this.spaces+=t[1];break;case";":this.freeSemicolon(t);break;case"}":this.end(t);break;case"comment":this.comment(t);break;case"at-word":this.atrule(t);break;case"{":this.emptyRule(t);break;default:this.other(t);break}this.endFile()}precheckMissedSemicolon(){}raw(t,n,i,r){let o,s,u=i.length,a="",l=!0,c,p;for(let f=0;f<u;f+=1)o=i[f],s=o[0],s==="space"&&f===u-1&&!r?l=!1:s==="comment"?(p=i[f-1]?i[f-1][0]:"empty",c=i[f+1]?i[f+1][0]:"empty",!es[p]&&!es[c]?a.slice(-1)===","?l=!1:a+=o[1]:l=!1):a+=o[1];if(!l){let f=i.reduce((x,E)=>x+E[1],"");t.raws[n]={raw:f,value:a}}t[n]=a}rule(t){t.pop();let n=new Zo;this.init(n,t[0][2]),n.raws.between=this.spacesAndCommentsFromEnd(t),this.raw(n,"selector",t),this.current=n}spacesAndCommentsFromEnd(t){let n,i="";for(;t.length&&(n=t[t.length-1][0],!(n!=="space"&&n!=="comment"));)i=t.pop()[1]+i;return i}spacesAndCommentsFromStart(t){let n,i="";for(;t.length&&(n=t[0][0],!(n!=="space"&&n!=="comment"));)i+=t.shift()[1];return i}spacesFromEnd(t){let n,i="";for(;t.length&&(n=t[t.length-1][0],n==="space");)i=t.pop()[1]+i;return i}stringFrom(t,n){let i="";for(let r=n;r<t.length;r++)i+=t[r][1];return t.splice(n,t.length-n),i}unclosedBlock(){let t=this.current.source.start;throw this.input.error("Unclosed block",t.line,t.column)}unclosedBracket(t){throw this.input.error("Unclosed bracket",{offset:t[2]},{offset:t[2]+1})}unexpectedClose(t){throw this.input.error("Unexpected }",{offset:t[2]},{offset:t[2]+1})}unknownWord(t){throw this.input.error("Unknown word "+t[0][1],{offset:t[0][2]},{offset:t[0][2]+t[0][1].length})}unnamedAtrule(t,n){throw this.input.error("At-rule without name",{offset:n[2]},{offset:n[2]+n[1].length})}};ts.exports=_i});var Fn=te((Op,is)=>{"use strict";var Mu=Je(),vu=qt(),Tu=ns();function wn(e,t){let n=new vu(e,t),i=new Tu(n);try{i.parse()}catch(r){throw r}return i.root}is.exports=wn;wn.default=wn;Mu.registerParse(wn)});var Mi=te((Bp,rs)=>{"use strict";var Kt=class{constructor(t,n={}){if(this.type="warning",this.text=t,n.node&&n.node.source){let i=n.node.rangeBy(n);this.line=i.start.line,this.column=i.start.column,this.endLine=i.end.line,this.endColumn=i.end.column}for(let i in n)this[i]=n[i]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};rs.exports=Kt;Kt.default=Kt});var Cn=te((Hp,os)=>{"use strict";var Nu=Mi(),Jt=class{get content(){return this.css}constructor(t,n,i){this.processor=t,this.messages=[],this.root=n,this.opts=i,this.css="",this.map=void 0}toString(){return this.css}warn(t,n={}){n.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(n.plugin=this.lastPlugin.postcssPlugin);let i=new Nu(t,n);return this.messages.push(i),i}warnings(){return this.messages.filter(t=>t.type==="warning")}};os.exports=Jt;Jt.default=Jt});var vi=te((Gp,as)=>{"use strict";var ss={};as.exports=function(t){ss[t]||(ss[t]=!0,typeof console<"u"&&console.warn&&console.warn(t))}});var Li=te((Up,ds)=>{"use strict";var Lu=Je(),Ru=pn(),ku=Ci(),Du=Fn(),ls=Cn(),Iu=gt(),Pu=Pt(),{isClean:He,my:Ou}=fn(),Wp=vi(),Bu={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},Hu={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},Gu={Once:!0,postcssPlugin:!0,prepare:!0},bt=0;function Xt(e){return typeof e=="object"&&typeof e.then=="function"}function cs(e){let t=!1,n=Bu[e.type];return e.type==="decl"?t=e.prop.toLowerCase():e.type==="atrule"&&(t=e.name.toLowerCase()),t&&e.append?[n,n+"-"+t,bt,n+"Exit",n+"Exit-"+t]:t?[n,n+"-"+t,n+"Exit",n+"Exit-"+t]:e.append?[n,bt,n+"Exit"]:[n,n+"Exit"]}function us(e){let t;return e.type==="document"?t=["Document",bt,"DocumentExit"]:e.type==="root"?t=["Root",bt,"RootExit"]:t=cs(e),{eventIndex:0,events:t,iterator:0,node:e,visitorIndex:0,visitors:[]}}function Ti(e){return e[He]=!1,e.nodes&&e.nodes.forEach(t=>Ti(t)),e}var Ni={},Ye=class e{get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}constructor(t,n,i){this.stringified=!1,this.processed=!1;let r;if(typeof n=="object"&&n!==null&&(n.type==="root"||n.type==="document"))r=Ti(n);else if(n instanceof e||n instanceof ls)r=Ti(n.root),n.map&&(typeof i.map>"u"&&(i.map={}),i.map.inline||(i.map.inline=!1),i.map.prev=n.map);else{let o=Du;i.syntax&&(o=i.syntax.parse),i.parser&&(o=i.parser),o.parse&&(o=o.parse);try{r=o(n,i)}catch(s){this.processed=!0,this.error=s}r&&!r[Ou]&&Lu.rebuild(r)}this.result=new ls(t,r,i),this.helpers={...Ni,postcss:Ni,result:this.result},this.plugins=this.processor.plugins.map(o=>typeof o=="object"&&o.prepare?{...o,...o.prepare(this.result)}:o)}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(t){return this.async().catch(t)}finally(t){return this.async().then(t,t)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(t,n){let i=this.result.lastPlugin;try{n&&n.addToError(t),this.error=t,t.name==="CssSyntaxError"&&!t.plugin?(t.plugin=i.postcssPlugin,t.setMessage()):i.postcssVersion}catch(r){console&&console.error&&console.error(r)}return t}prepareVisitors(){this.listeners={};let t=(n,i,r)=>{this.listeners[i]||(this.listeners[i]=[]),this.listeners[i].push([n,r])};for(let n of this.plugins)if(typeof n=="object")for(let i in n){if(!Hu[i]&&/^[A-Z]/.test(i))throw new Error(`Unknown event ${i} in ${n.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Gu[i])if(typeof n[i]=="object")for(let r in n[i])r==="*"?t(n,i,n[i][r]):t(n,i+"-"+r.toLowerCase(),n[i][r]);else typeof n[i]=="function"&&t(n,i,n[i])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let t=0;t<this.plugins.length;t++){let n=this.plugins[t],i=this.runOnRoot(n);if(Xt(i))try{await i}catch(r){throw this.handleError(r)}}if(this.prepareVisitors(),this.hasListener){let t=this.result.root;for(;!t[He];){t[He]=!0;let n=[us(t)];for(;n.length>0;){let i=this.visitTick(n);if(Xt(i))try{await i}catch(r){let o=n[n.length-1].node;throw this.handleError(r,o)}}}if(this.listeners.OnceExit)for(let[n,i]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if(t.type==="document"){let r=t.nodes.map(o=>i(o,this.helpers));await Promise.all(r)}else await i(t,this.helpers)}catch(r){throw this.handleError(r)}}}return this.processed=!0,this.stringify()}runOnRoot(t){this.result.lastPlugin=t;try{if(typeof t=="object"&&t.Once){if(this.result.root.type==="document"){let n=this.result.root.nodes.map(i=>t.Once(i,this.helpers));return Xt(n[0])?Promise.all(n):n}return t.Once(this.result.root,this.helpers)}else if(typeof t=="function")return t(this.result.root,this.result)}catch(n){throw this.handleError(n)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let t=this.result.opts,n=Pu;t.syntax&&(n=t.syntax.stringify),t.stringifier&&(n=t.stringifier),n.stringify&&(n=n.stringify);let i=this.result.root.source;if(t.map===void 0&&!(i&&i.input&&i.input.map)){let s="";return n(this.result.root,u=>{s+=u}),this.result.css=s,this.result}let o=new ku(n,this.result.root,this.result.opts).generate();return this.result.css=o[0],this.result.map=o[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let t of this.plugins){let n=this.runOnRoot(t);if(Xt(n))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let t=this.result.root;for(;!t[He];)t[He]=!0,this.walkSync(t);if(this.listeners.OnceExit)if(t.type==="document")for(let n of t.nodes)this.visitSync(this.listeners.OnceExit,n);else this.visitSync(this.listeners.OnceExit,t)}return this.result}then(t,n){return this.async().then(t,n)}toString(){return this.css}visitSync(t,n){for(let[i,r]of t){this.result.lastPlugin=i;let o;try{o=r(n,this.helpers)}catch(s){throw this.handleError(s,n.proxyOf)}if(n.type!=="root"&&n.type!=="document"&&!n.parent)return!0;if(Xt(o))throw this.getAsyncError()}}visitTick(t){let n=t[t.length-1],{node:i,visitors:r}=n;if(i.type!=="root"&&i.type!=="document"&&!i.parent){t.pop();return}if(r.length>0&&n.visitorIndex<r.length){let[s,u]=r[n.visitorIndex];n.visitorIndex+=1,n.visitorIndex===r.length&&(n.visitors=[],n.visitorIndex=0),this.result.lastPlugin=s;try{return u(i.toProxy(),this.helpers)}catch(a){throw this.handleError(a,i)}}if(n.iterator!==0){let s=n.iterator,u;for(;u=i.nodes[i.indexes[s]];)if(i.indexes[s]+=1,!u[He]){u[He]=!0,t.push(us(u));return}n.iterator=0,delete i.indexes[s]}let o=n.events;for(;n.eventIndex<o.length;){let s=o[n.eventIndex];if(n.eventIndex+=1,s===bt){i.nodes&&i.nodes.length&&(i[He]=!0,n.iterator=i.getIterator());return}else if(this.listeners[s]){n.visitors=this.listeners[s];return}}t.pop()}walkSync(t){t[He]=!0;let n=cs(t);for(let i of n)if(i===bt)t.nodes&&t.each(r=>{r[He]||this.walkSync(r)});else{let r=this.listeners[i];if(r&&this.visitSync(r,t.toProxy()))return}}warnings(){return this.sync().warnings()}};Ye.registerPostcss=e=>{Ni=e};ds.exports=Ye;Ye.default=Ye;Iu.registerLazyResult(Ye);Ru.registerLazyResult(Ye)});var ms=te((zp,fs)=>{"use strict";var Wu=Ci(),Uu=Fn(),Vu=Cn(),zu=Pt(),Vp=vi(),Yt=class{get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let t,n=Uu;try{t=n(this._css,this._opts)}catch(i){this.error=i}if(this.error)throw this.error;return this._root=t,t}get[Symbol.toStringTag](){return"NoWorkResult"}constructor(t,n,i){n=n.toString(),this.stringified=!1,this._processor=t,this._css=n,this._opts=i,this._map=void 0;let r=zu;this.result=new Vu(this._processor,void 0,this._opts),this.result.css=n;let o=this;Object.defineProperty(this.result,"root",{get(){return o.root}});let s=new Wu(r,void 0,this._opts,n);if(s.isMap()){let[u,a]=s.generate();u&&(this.result.css=u),a&&(this.result.map=a)}else s.clearAnnotation(),this.result.css=s.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(t){return this.async().catch(t)}finally(t){return this.async().then(t,t)}sync(){if(this.error)throw this.error;return this.result}then(t,n){return this.async().then(t,n)}toString(){return this._css}warnings(){return[]}};fs.exports=Yt;Yt.default=Yt});var hs=te((qp,ps)=>{"use strict";var qu=pn(),ju=Li(),$u=ms(),Ku=gt(),lt=class{constructor(t=[]){this.version="8.5.14",this.plugins=this.normalize(t)}normalize(t){let n=[];for(let i of t)if(i.postcss===!0?i=i():i.postcss&&(i=i.postcss),typeof i=="object"&&Array.isArray(i.plugins))n=n.concat(i.plugins);else if(typeof i=="object"&&i.postcssPlugin)n.push(i);else if(typeof i=="function")n.push(i);else if(!(typeof i=="object"&&(i.parse||i.stringify)))throw new Error(i+" is not a PostCSS plugin");return n}process(t,n={}){return!this.plugins.length&&!n.parser&&!n.stringifier&&!n.syntax?new $u(this,t,n):new ju(this,t,n)}use(t){return this.plugins=this.plugins.concat(this.normalize([t])),this}};ps.exports=lt;lt.default=lt;Ku.registerProcessor(lt);qu.registerProcessor(lt)});var ws=te((jp,As)=>{"use strict";var gs=mn(),xs=Wt(),Ju=Je(),Xu=dn(),bs=Vt(),ys=pn(),Yu=Vo(),Qu=qt(),Zu=Li(),ec=wi(),tc=Ht(),nc=Fn(),Ri=hs(),ic=Cn(),Ss=gt(),Es=bn(),rc=Pt(),oc=Mi();function le(...e){return e.length===1&&Array.isArray(e[0])&&(e=e[0]),new Ri(e)}le.plugin=function(t,n){let i=!1;function r(...s){console&&console.warn&&!i&&(i=!0,console.warn(t+`: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(t+`: \\u91CC\\u9762 postcss.plugin \\u88AB\\u5F03\\u7528. \\u8FC1\\u79FB\\u6307\\u5357:\nhttps://www.w3ctech.com/topic/2226`));let u=n(...s);return u.postcssPlugin=t,u.postcssVersion=new Ri().version,u}let o;return Object.defineProperty(r,"postcss",{get(){return o||(o=r()),o}}),r.process=function(s,u,a){return le([r(a)]).process(s,u)},r};le.stringify=rc;le.parse=nc;le.fromJSON=Yu;le.list=ec;le.comment=e=>new xs(e);le.atRule=e=>new gs(e);le.decl=e=>new bs(e);le.rule=e=>new Es(e);le.root=e=>new Ss(e);le.document=e=>new ys(e);le.CssSyntaxError=Xu;le.Declaration=bs;le.Container=Ju;le.Processor=Ri;le.Document=ys;le.Comment=xs;le.Warning=oc;le.AtRule=gs;le.Result=ic;le.Input=Qu;le.Rule=Es;le.Root=Ss;le.Node=tc;Zu.registerPostcss(le);As.exports=le;le.default=le});function un(){return globalThis}function L(e,t){if(typeof window>"u")return;let n=un(),i=n.__hf?.onSwallowed;if(i)try{i({label:e,error:t})}catch(r){}(n.__hfDebug||n.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${e} swallowed:`,t)}function Fe(e){try{window.parent.postMessage(e,"*")}catch(t){L("bridge.postMessage",t)}}var sl={play:(e,t)=>t.onPlay(),pause:(e,t)=>t.onPause(),"stop-media":(e,t)=>t.onStopMedia(),seek:(e,t)=>t.onSeek(Number(e.frame??0),e.seekMode??"commit"),tick:(e,t)=>t.onTick(),"set-muted":(e,t)=>t.onSetMuted(!!e.muted),"set-volume":(e,t)=>t.onSetVolume(Math.max(0,Math.min(1,Number(e.volume??1)))),"set-media-output-muted":(e,t)=>t.onSetMediaOutputMuted(!!e.muted),"set-native-media-sync-disabled":(e,t)=>t.onSetNativeMediaSyncDisabled(!!e.disabled),"set-web-audio-media-disabled":(e,t)=>t.onSetWebAudioMediaDisabled(!!e.disabled),"set-playback-rate":(e,t)=>t.onSetPlaybackRate(Number(e.playbackRate??1)),"set-color-grading":(e,t)=>t.onSetColorGrading(e.target??null,e.grading??null),"set-color-grading-compare":(e,t)=>t.onSetColorGradingCompare(e.target??null,e.compare??null),"enable-pick-mode":(e,t)=>t.onEnablePickMode(),"disable-pick-mode":(e,t)=>t.onDisablePickMode(),"flash-elements":e=>al(e)};function al(e){let t=e.selectors,n=e.duration||800;t&&ll(t,n)}function yr(e){let t=n=>{let i=n.data;if(!i||i.source!=="hf-parent"||i.type!=="control")return;let r=i.action;if(typeof r!="string")return;let o=sl[r];o&&o(i,e)};return window.addEventListener("message",t),Fe({source:"hf-preview",type:"ready"}),t}function ll(e,t){if(!document.getElementById("__hf-flash-styles")){let n=document.createElement("style");n.id="__hf-flash-styles",n.textContent=`\n .__hf-flash {\n outline: 2px solid rgba(59, 130, 246, 0.6) !important;\n outline-offset: 2px !important;\n animation: __hf-flash-pulse ${t}ms ease-out forwards !important;\n }\n @keyframes __hf-flash-pulse {\n 0% { outline-color: rgba(59, 130, 246, 0.8); }\n 100% { outline-color: transparent; }\n }\n `,document.head.appendChild(n)}for(let n of e)try{document.querySelectorAll(n).forEach(r=>{r.classList.add("__hf-flash"),setTimeout(()=>r.classList.remove("__hf-flash"),t)})}catch(i){L("bridge.flashElements.querySelector",i)}}var Xn=null;function Sr(e){Xn=e}function ot(e,t){if(Xn)try{Xn({source:"hf-preview",type:"analytics",event:e,properties:t??{}})}catch(n){L("runtime.analytics.site1",n)}}function Er(e){let t=[],n=l=>{if(typeof l.getAnimations!="function")return[];try{return l.getAnimations()}catch{return[]}},i=l=>e?.resolveStartSeconds?e.resolveStartSeconds(l):Number.parseFloat(l.getAttribute("data-start")??"0")||0,r=(l,c)=>{let p=null;try{p=l.effect?.getComputedTiming?.()??null}catch(x){L("runtime.adapters.css.site5",x)}if(!p)return{};let f=Number(p.endTime);return Number.isFinite(f)?{endSeconds:c+f/1e3}:{unbounded:!0}},o=(l,c)=>{for(let p of l){try{p.currentTime=c}catch(f){L("runtime.adapters.css.site1",f)}try{p.pause()}catch(f){L("runtime.adapters.css.site2",f)}}},s=l=>{for(let c of l)try{c.play()}catch(p){L("runtime.adapters.css.site3",p)}},u=l=>{for(let c of l)try{c.pause()}catch(p){L("runtime.adapters.css.site4",p)}},a=l=>{l.baseDelay?l.el.style.animationDelay=l.baseDelay:l.el.style.removeProperty("animation-delay"),l.basePlayState?l.el.style.animationPlayState=l.basePlayState:l.el.style.removeProperty("animation-play-state")};return{name:"css",discover:()=>{t=[];let l=document.querySelectorAll("*");for(let c of l){if(!(c instanceof HTMLElement))continue;let p=window.getComputedStyle(c);!p.animationName||p.animationName==="none"||t.push({el:c,baseDelay:c.style.animationDelay||"",basePlayState:c.style.animationPlayState||"",animations:n(c)})}},getInferredDurationSeconds:()=>{let l=0;for(let c of t){if(!c.el.isConnected)continue;let p=i(c.el);for(let f of n(c.el)){let x=r(f,p);x.endSeconds!=null&&(l=Math.max(l,x.endSeconds))}}return l>0?l:null},seek:l=>{let c=Number(l.time)||0;for(let p of t){if(!p.el.isConnected)continue;let f=i(p.el),x=Math.max(0,c-f)*1e3,E=p.animations;if(E.length>0){o(E,x);continue}p.el.style.animationPlayState="paused",p.el.style.animationDelay=`-${(x/1e3).toFixed(3)}s`}},pause:()=>{for(let l of t){if(!l.el.isConnected)continue;let c=l.animations;c.length>0&&u(c),a(l)}},play:()=>{for(let l of t)l.el.isConnected&&(a(l),s(l.animations))},revert:()=>{t=[]}}}function Ar(e){return{name:"gsap",discover:()=>{},seek:t=>{let n=e.getTimeline();if(!n)return;n.pause();let i=Math.max(0,Number(t.time)||0);typeof n.totalTime=="function"?(n.totalTime(i+.001,!0),n.totalTime(i,!1)):n.seek(i,!1)},pause:()=>{let t=e.getTimeline();t&&t.pause()}}}function wr(){return{name:"animejs",discover:()=>{try{let e=window.anime;if(!e||typeof e.running>"u")return;let t=e.running;if(!Array.isArray(t)||t.length===0)return;let n=window.__hfAnime??[],i=new Set(n);for(let r of t)i.has(r)||n.push(r);window.__hfAnime=n}catch(e){L("runtime.adapters.animejs.site1",e)}},seek:e=>{let t=Math.max(0,(Number(e.time)||0)*1e3),n=window.__hfAnime;if(!(!n||n.length===0))for(let i of n)try{typeof i.seek=="function"&&i.seek(t)}catch(r){L("runtime.adapters.animejs.site2",r)}},pause:()=>{let e=window.__hfAnime;if(!(!e||e.length===0))for(let t of e)try{typeof t.pause=="function"&&t.pause()}catch(n){L("runtime.adapters.animejs.site3",n)}},play:()=>{let e=window.__hfAnime;if(!(!e||e.length===0))for(let t of e)try{typeof t.play=="function"&&t.play()}catch(n){L("runtime.adapters.animejs.site4",n)}},revert:()=>{}}}function Cr(){return{name:"lottie",discover:()=>{try{let e=window.lottie;if(e&&typeof e.getRegisteredAnimations=="function"){let t=e.getRegisteredAnimations();if(Array.isArray(t)&&t.length>0){let n=window.__hfLottie??[],i=new Set(n);for(let r of t)i.has(r)||n.push(r);window.__hfLottie=n}}}catch(e){L("runtime.adapters.lottie.site1",e)}},seek:e=>{let t=Math.max(0,Number(e.time)||0),n=window.__hfLottie;if(!(!n||n.length===0))for(let i of n)try{if(Yn(i))i.goToAndStop(t*1e3,!1);else if(Qn(i)){if(typeof i.setCurrentRawFrameValue=="function"){let r=i.totalFrames??0,o=i.frameRate??30,s=t*o;r>0&&i.setCurrentRawFrameValue(Math.min(s,r-1))}else if(typeof i.seek=="function"){let r=i.duration??1,o=Math.min(100,t/r*100);i.seek(o)}}}catch(r){L("runtime.adapters.lottie.site2",r)}},pause:()=>{let e=window.__hfLottie;if(!(!e||e.length===0))for(let t of e)try{(Yn(t)||Qn(t))&&t.pause()}catch(n){L("runtime.adapters.lottie.site3",n)}},revert:()=>{},getInferredDurationSeconds:()=>{let e=window.__hfLottie;if(!e||e.length===0)return null;let t=0,n=!1;for(let i of e){let r=null;try{r=ul(i)}catch(o){L("runtime.adapters.lottie.site4",o)}r!=null&&(n=!0,t=Math.max(t,r))}return n?t:null}}}function Fr(e,t){return!Number.isFinite(e)||!e||e<=0||!Number.isFinite(t)||!t||t<=0?null:e/t}function ul(e){return Yn(e)?Fr(e.totalFrames,e.frameRate):Qn(e)?Number.isFinite(e.duration)&&(e.duration??0)>0?e.duration??null:Fr(e.totalFrames,e.frameRate):null}function Yn(e){return typeof e=="object"&&e!==null&&typeof e.goToAndStop=="function"}function Qn(e){return typeof e=="object"&&e!==null&&typeof e.pause=="function"&&("totalFrames"in e||"duration"in e)}var Zn=-1;function cn(e){if(e!==Zn){Zn=e;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:e}}))}catch(t){L("runtime.adapters.seek-dispatch.site1",t)}}}function _r(e){Zn=e;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:e}}))}catch(t){L("runtime.adapters.seek-dispatch.force",t)}}function Mr(){let e=null,t=0,n=null,i=null,r=null,o=null,s=()=>{if(typeof window>"u")return null;let c=window.THREE?.DefaultLoadingManager;return!c||typeof c!="object"||typeof c.itemsLoaded!="number"||typeof c.itemsTotal!="number"?null:c},u=l=>{o||l.itemsTotal<=l.itemsLoaded||(o=new Promise(c=>{l.onLoad=function(){try{r?.call(this)}finally{o=null,l.onLoad=r??null,c()}}}))},a=l=>{n!==l&&(n=l,i=l.onStart??null,r=l.onLoad??null,l.onStart=function(c,p,f){try{i?.call(this,c,p,f)}finally{u(l)}})};return{name:"three",discover:()=>{let l=s();l&&(a(l),u(l))},seek:l=>{e=Math.max(0,Number(l.time)||0),t=e,window.__hfThreeTime=e,cn(e)},pause:()=>{e==null&&(e=Math.max(0,t))},play:()=>{e=null},revert:()=>{e=null,t=0},getReadyPromise:()=>{let l=s();return!l||l.itemsTotal<=l.itemsLoaded?null:(o||u(l),o)}}}function Be(e){let t=null,n=new WeakSet;return{name:e.name,discover:()=>{},seek:()=>{},pause:()=>{},play:()=>{},revert:()=>{},getReadyPromise:()=>{let i=e.getInstances();if(i.length===0)return null;let r=i.filter(o=>!n.has(o));return r.length===0?null:t||(t=Promise.allSettled(r.map(o=>e.waitFor(o).then(()=>{n.add(o)}))).then(()=>{t=null}),t)}}}function vr(){return Be({name:"mapbox",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfMapbox;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>{if(e.loaded()){t();return}e.on("load",t)})})}function Tr(){return Be({name:"leaflet",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfLeaflet;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>e.whenReady(t))})}function Nr(){return Be({name:"google-maps",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfGoogleMaps;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>{let n=e.addListener("tilesloaded",()=>{n.remove(),t()})})})}function Lr(){return Be({name:"maplibre",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfMaplibre;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>{if(e.loaded()){t();return}e.on("load",t)})})}function Rr(){return Be({name:"d3",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfD3;return Array.isArray(e)?e:[]},waitFor:e=>e.end()})}function kr(){let e=null,t=0;return{name:"typegpu",discover:()=>{},seek:n=>{e=Math.max(0,Number(n.time)||0),t=e,window.__hfTypegpuTime=e,cn(e)},pause:()=>{e==null&&(e=Math.max(0,t))},play:()=>{e=null},revert:()=>{e=null,t=0}}}function Dr(e){let t=e.nextElementSibling;if(t instanceof HTMLImageElement&&t.classList.contains("__render_frame__")&&t.complete&&t.naturalWidth>0)return t;if(e.id){let n=document.getElementById(`__render_frame_${e.id}__`);if(n instanceof HTMLImageElement&&n.complete&&n.naturalWidth>0)return n}return null}function Ir(){let e=globalThis.GPUQueue;if(!e?.prototype?.copyExternalImageToTexture)return;let t=e.prototype.copyExternalImageToTexture;e.prototype.copyExternalImageToTexture=function(n,i,r){if(n?.source instanceof HTMLVideoElement){let o=Dr(n.source);if(o)return t.call(this,{...n,source:o},i,r)}return t.call(this,n,i,r)}}function Pr(){let e=[globalThis.WebGL2RenderingContext,globalThis.WebGLRenderingContext],t=["texImage2D","texSubImage2D"];for(let n of e){let i=n?.prototype;if(i)for(let r of t){let o=i[r];if(typeof o!="function"||o.__hfVideoPatched)continue;let s=function(...u){let a=u.length-1,l=u[a];if(l instanceof HTMLVideoElement){let c=Dr(l);c&&(u[a]=c)}return o.apply(this,u)};s.__hfVideoPatched=!0,i[r]=s}}}function Or(){let e=!1,t=0,n=!1,i,r,o,s=new Set,u=new WeakMap,a=()=>{if(!document.getAnimations)return[];try{return document.getAnimations()}catch{return[]}},l=g=>{let A=Number(g.currentTime);return Number.isFinite(A)&&A>0?A:0},c=(g,A)=>A<=0?g:g>=A?Math.max(0,g-A):g,p=(g,A)=>{let C=u.get(g);if(C)return C;let N={compositionTimeMs:A,animationTimeMs:e?c(l(g),A):l(g)};return u.set(g,N),N},f=(g,A)=>{if(!s.has(g)){s.add(g);let C=()=>{s.delete(g)};try{g.addEventListener("finish",C,{once:!0}),g.addEventListener("cancel",C,{once:!0})}catch(N){L("runtime.adapters.waapi.site4",N)}}p(g,A)},x=(g,A)=>{for(let C of g)f(C,A)},E=()=>{if(n||typeof Element>"u")return;let g=Element.prototype;if(typeof g.animate!="function"||g.__hfOriginalAnimate)return;let A=g.animate;try{Object.defineProperty(g,"__hfOriginalAnimate",{value:A,configurable:!0});let C=function(...N){let $=A.apply(this,N);return f($,t),$};g.animate=C,i=g,r=A,o=C,n=!0}catch{}},b=g=>{let A=null;try{A=g.effect?.getComputedTiming?.()??null}catch($){L("runtime.adapters.waapi.site4",$)}if(!A)return{};let C=Number(A.endTime);return Number.isFinite(C)?{endSeconds:(u.get(g)?.compositionTimeMs??0)/1e3+C/1e3}:{unbounded:!0}};return{name:"waapi",discover:()=>{e=!0,E(),x(a(),t)},seek:g=>{let A=Math.max(0,(Number(g.time)||0)*1e3);t=A,(!e||s.size>0)&&x(a(),e?A:0);for(let C of s){let N=e?p(C,A):p(C,0),$=N.animationTimeMs+Math.max(0,A-N.compositionTimeMs);try{C.currentTime=$}catch(B){L("runtime.adapters.waapi.site1",B)}try{C.pause()}catch(B){L("runtime.adapters.waapi.site2",B)}}},pause:()=>{e||x(a(),t);for(let g of s)try{g.pause()}catch(A){L("runtime.adapters.waapi.site3",A)}},revert:()=>{if(s.clear(),u=new WeakMap,e=!1,t=0,i&&r&&o&&i.animate===o)try{i.animate=r,i.__hfOriginalAnimate===r&&delete i.__hfOriginalAnimate}catch(g){L("runtime.adapters.waapi.site5",g)}i=void 0,r=void 0,o=void 0,n=!1},getInferredDurationSeconds:()=>{let g=0;for(let A of a()){let C=b(A);C.endSeconds!=null&&(g=Math.max(g,C.endSeconds))}return g>0?g:null}}}function Br(e,t){if(e.length===0)return 1;let n=0;for(;n<e.length-2&&t>=e[n+1].time;)n+=1;let i=e[n],r=e[n+1]??i,o=r.time-i.time,s=o<=0?0:Math.min(1,Math.max(0,(t-i.time)/o));return i.volume+(r.volume-i.volume)*s}function cl(e,t,n,i){let r=Number.parseFloat(e.dataset.start??"0")||0,o=Number.parseFloat(e.dataset.end??""),s=Number.parseFloat(e.dataset.duration??""),u=Number.isFinite(o)&&o>r?o:Number.isFinite(s)&&s>0?r+s:n,a=Number.parseFloat(e.dataset.volume??""),l=Number.isFinite(a)?Math.max(0,Math.min(1,a)):1;e.volume=l;let c=1/Math.min(60,Math.max(1,i)),p=Math.max(0,r),f=Math.min(n,u),x=[];for(let b=p;b<=f+1e-6;b+=c){let g=Math.min(f,b);t(g);let A=Number(e.volume);if(!Number.isFinite(A))continue;let C=Math.max(0,Math.min(1,A)),N=x.at(-1);if((!N||Math.abs(N.volume-C)>1e-4||g===f)&&x.push({time:Number(g.toFixed(6)),volume:Number(C.toFixed(6))}),g===f)break}return x.some(b=>Math.abs(b.volume-l)>1e-4)?x:null}function Hr(e,t,n,i){if(!t||!(e instanceof HTMLAudioElement)&&!(e instanceof HTMLVideoElement)||n<=0)return;let o=cl(e,s=>{try{typeof t.totalTime=="function"?t.totalTime(s,!0):typeof t.seek=="function"&&t.seek(s,!0)}catch{}},n,60);o&&i.set(e,o)}function Tt(e){let t=e.defaultPlaybackRate;return Number.isFinite(t)&&t>0?Math.max(.1,Math.min(5,t)):1}function Gr(e){let t=Array.from(document.querySelectorAll("video, audio")),n=e?.shouldIncludeElement?t.filter(s=>e.shouldIncludeElement?.(s)):t.filter(s=>s.hasAttribute("data-start")),i=[],r=[],o=0;for(let s of n){let u=e?.resolveStartSeconds?e.resolveStartSeconds(s):Number.parseFloat(s.dataset.start??"0");if(!Number.isFinite(u))continue;let a=Number.parseFloat(s.dataset.playbackStart??s.dataset.mediaStart??"0")||0,l=Tt(s),c=s.loop,p=Number.isFinite(s.duration)&&s.duration>0?s.duration:null,f=e?.resolveDurationSeconds?.(s)??Number.parseFloat(s.dataset.duration??"");(!Number.isFinite(f)||f<=0)&&p!=null&&(f=Math.max(0,(p-a)/l));let x=Number.isFinite(f)&&f>0?u+f:Number.POSITIVE_INFINITY,E=Number.parseFloat(s.dataset.volume??""),b={el:s,start:u,mediaStart:a,duration:Number.isFinite(f)&&f>0?f:Number.POSITIVE_INFINITY,end:x,volume:Number.isFinite(E)?E:null,playbackRate:l,loop:c,sourceDuration:p};i.push(b),s.tagName==="VIDEO"&&r.push(b),Number.isFinite(x)&&(o=Math.max(o,x))}return{timedMediaEls:n,mediaClips:i,videoClips:r,maxMediaEnd:o}}var ei=new WeakMap,Mt=new WeakMap,ti=new WeakSet,ft=new WeakSet;function dl(e){if(ft.has(e))return;ft.add(e);let t=()=>ft.delete(e);e.addEventListener("playing",t,{once:!0}),e.addEventListener("pause",t,{once:!0}),e.addEventListener("error",t,{once:!0})}var fl=3;function ml(e){return e.error!=null||e.networkState===fl}var ni=new WeakMap;function vt(e){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):1}function Wr(e){let t=!!(e.outputMuted||e.userMuted);for(let n of e.clips){let{el:i}=n;if(!i.isConnected)continue;let r=(e.timeSeconds-n.start)*n.playbackRate+n.mediaStart;if(e.timeSeconds>=n.start&&e.timeSeconds<=n.end&&r>=0&&(!i.ended||n.loop)){if(n.loop&&n.sourceDuration!=null&&n.sourceDuration>0){let T=n.sourceDuration-n.mediaStart;T>0&&r>=n.sourceDuration&&(r=n.mediaStart+(r-n.mediaStart)%T)}let s=vt(e.userVolume??1),u=vt(n.volume??1),a=ni.get(i),l=vt(i.volume),c;n.volumeKeyframes&&n.volumeKeyframes.length>0?c=vt(Br(n.volumeKeyframes,r)):a===void 0||Math.abs(l-a)>1e-4?c=l:c=u;let p=vt(c*s);i.volume=p,ni.set(i,p),e.onElementVolume?.(i,p),(t||e.isWebAudioOwned?.(i))&&(i.muted=!0),i.preload!=="auto"&&(i.preload="auto");try{i.playbackRate=n.playbackRate*e.playbackRate}catch(T){L("runtime.media.site1",T)}let f=.04,x=2,E=i.currentTime||0,b=Math.abs(E-r),g=r-E,A=ei.get(i);ei.set(i,g);let C=A===void 0,N=!C&&Math.abs(g-A)>.5,$=b>3,B=b>.5&&(C||N||$),v=i.tagName==="VIDEO"&&!i.paused,S=A!==void 0&&Math.abs(g-A)<.004,F=!1;if(!v&&!B&&!C&&S&&b>f){let T=(Mt.get(i)??0)+1;Mt.set(i,T),T>=x&&(F=!0,Mt.set(i,0))}else b<=f&&Mt.set(i,0);let _=!v&&e.forceSync&&b>.02;if(B||F||_){if(!(i.tagName==="VIDEO"&&i.id&&!!document.getElementById(`__render_frame_${i.id}__`))){try{i.currentTime=r}catch(R){L("runtime.media.site2",R)}if(Math.abs(i.currentTime-r)>.5&&!ti.has(i)){ti.add(i),i.load();try{i.currentTime=r}catch(R){L("runtime.media.site3",R)}}}ft.delete(i)}e.playing&&i.paused&&!ft.has(i)&&!ml(i)?(dl(i),i.play().catch(T=>{ft.delete(i),(T&&typeof T=="object"&&"name"in T?String(T.name??""):"")==="NotAllowedError"&&e.onAutoplayBlocked?.()})):!e.playing&&!i.paused&&i.pause();continue}ei.delete(i),Mt.delete(i),ti.delete(i),ni.delete(i),i.paused||i.pause()}}var pl=["[data-hyperframes-ignore]","[data-hyperframes-picker-ignore]","[data-hf-ignore]","[data-no-inspect]","[data-no-pick]","[data-hyper-shader-loading]"].join(","),hl=["[data-hyperframes-picker-block]","[data-hyper-shader-loading]"].join(","),gl="data-hf-color-grading-source-hidden";function Ur(e){let t=!1,n=null,i=null,r=null,o=null;function s(S,F){try{window.dispatchEvent(new CustomEvent(S,{detail:F}))}catch(_){L("runtime.picker.site1",_)}}function u(S){r=S,s("hyperframe:picker:hovered",{elementInfo:r,isPickMode:t,timestamp:Date.now()})}function a(S){o=S,s("hyperframe:picker:selected",{elementInfo:o,isPickMode:t,timestamp:Date.now()})}function l(S){let F=S.ownerDocument.defaultView;if(!F)return!1;let _=S;for(;_&&_!==document.body&&_!==document.documentElement;){let T=F.getComputedStyle(_);if(T.display==="none"||T.visibility==="hidden"||T.pointerEvents==="none")return!0;let R=Number.parseFloat(T.opacity);if(Number.isFinite(R)&&R<=.01&&!_.hasAttribute(gl))return!0;_=_.parentElement}return!1}function c(S){if(!S||S===document.body||S===document.documentElement)return!1;let F=S.tagName.toLowerCase();return!(F==="script"||F==="style"||F==="link"||F==="meta"||S.classList.contains("__hf-pick-highlight")||S.closest(pl)||l(S))}function p(S){return!!S?.closest(hl)}function f(S){let F=S;if(F.id)return`#${F.id}`;let _=S.getAttribute("data-composition-id");if(_)return`[data-composition-id="${CSS.escape(_)}"]`;let T=S.getAttribute("data-composition-src");if(T)return`[data-composition-src="${CSS.escape(T)}"]`;let R=S.getAttribute("data-track-index");if(R)return`[data-track-index="${CSS.escape(R)}"]`;let W=S.tagName.toLowerCase(),q=S.parentElement;if(!q)return W;let ie=q.querySelectorAll(`:scope > ${W}`);if(ie.length===1)return W;for(let P=0;P<ie.length;P+=1)if(ie[P]===S)return`${W}:nth-of-type(${P+1})`;return W}function x(S){let F=S.tagName.toLowerCase(),_=(S.textContent??"").trim().replace(/\\s+/g," "),T=(R,W)=>R.length>W?`${R.slice(0,W-1)}\\u2026`:R;return F==="h1"||F==="h2"||F==="h3"?"Heading":F==="p"||F==="span"||F==="div"?_.length>0?T(_,56):"Text":F==="img"?"Image":F==="video"?"Video":F==="audio"?"Audio":F==="svg"?"Shape":S.getAttribute("data-composition-src")?"Composition":F==="section"?"Section":`${F.charAt(0).toUpperCase()}${F.slice(1)}`}function E(S,F,_){let T=typeof _=="number"&&_>0?_:8,R=[];if(document.elementsFromPoint)R=document.elementsFromPoint(S,F);else if(document.elementFromPoint){let ie=document.elementFromPoint(S,F);R=ie?[ie]:[]}if(p(R[0]??null))return[];let W={},q=[];for(let ie=0;ie<R.length;ie+=1){let P=R[ie];if(!c(P))continue;let se=`${P.tagName}::${P.id||""}::${ie}`;if(!W[se]&&(W[se]=!0,q.push(P),q.length>=T))break}return q}function b(S){let F=S.getBoundingClientRect(),_={};for(let R=0;R<S.attributes.length;R+=1){let W=S.attributes[R];W.name.startsWith("data-")&&(_[W.name]=W.value)}return{id:S.id||null,tagName:S.tagName.toLowerCase(),selector:f(S),label:x(S),boundingBox:{x:F.left,y:F.top,width:F.width,height:F.height},textContent:S.textContent?S.textContent.trim().slice(0,200):null,src:S.getAttribute("src")||S.getAttribute("data-composition-src")||null,dataAttributes:_}}function g(S,F,_){return E(S,F,_).map(b)}function A(S){if(!t)return;let _=E(S.clientX,S.clientY,1)[0]??(S.target instanceof Element?S.target:null);if(!c(_)||n===_)return;n&&n.classList.remove("__hf-pick-highlight"),n=_,_.classList.add("__hf-pick-highlight");let T=b(_);u(T),e.postMessage({source:"hf-preview",type:"element-hovered",elementInfo:T})}function C(S){if(!t)return;S.preventDefault(),S.stopPropagation(),S.stopImmediatePropagation();let F=g(S.clientX,S.clientY,8);F.length!==0&&(u(F[0]??null),e.postMessage({source:"hf-preview",type:"element-pick-candidates",candidates:F,selectedIndex:0,point:{x:S.clientX,y:S.clientY}}))}function N(S){S.key==="Escape"&&(B(),e.postMessage({source:"hf-preview",type:"pick-mode-cancelled"}))}function $(){t||(t=!0,i=document.createElement("style"),i.textContent=[".__hf-pick-highlight { outline: 2px solid #4f8cf7 !important; outline-offset: 2px; cursor: crosshair !important; }",".__hf-pick-active * { cursor: crosshair !important; }"].join(`\n`),document.head.appendChild(i),document.body.classList.add("__hf-pick-active"),document.addEventListener("mousemove",A,!0),document.addEventListener("click",C,!0),document.addEventListener("keydown",N,!0),s("hyperframe:picker:mode",{isPickMode:!0,timestamp:Date.now()}))}function B(){t&&(t=!1,n&&(n.classList.remove("__hf-pick-highlight"),n=null),i&&(i.remove(),i=null),document.body.classList.remove("__hf-pick-active"),document.removeEventListener("mousemove",A,!0),document.removeEventListener("click",C,!0),document.removeEventListener("keydown",N,!0),s("hyperframe:picker:mode",{isPickMode:!1,timestamp:Date.now()}))}function v(){window.__HF_PICKER_API={enable:$,disable:B,isActive:()=>t,getHovered:()=>r,getSelected:()=>o,getCandidatesAtPoint:(S,F,_)=>Number.isFinite(S)&&Number.isFinite(F)?g(S,F,_):[],pickAtPoint:(S,F,_)=>{if(!Number.isFinite(S)||!Number.isFinite(F))return null;let T=g(S,F,8);if(!T.length)return null;let R=Math.max(0,Math.min(T.length-1,Number(_??0))),W=T[R]??null;return W?(a(W),e.postMessage({source:"hf-preview",type:"element-picked",elementInfo:W}),B(),W):null},pickManyAtPoint:(S,F,_)=>{if(!Number.isFinite(S)||!Number.isFinite(F))return[];let T=g(S,F,8);if(!T.length)return[];let R=[],W=Array.isArray(_)?_:[0];for(let q of W){let ie=Math.max(0,Math.min(T.length-1,Math.floor(Number(q)))),P=T[ie];if(!P)continue;R.some(Ee=>Ee.selector===P.selector&&Ee.tagName===P.tagName)||R.push(P)}return R.length?(a(R[0]??null),e.postMessage({source:"hf-preview",type:"element-picked-many",elementInfos:R}),B(),R):[]}},s("hyperframe:picker:api-ready",{hasApi:!0,timestamp:Date.now()})}return{enablePickMode:$,disablePickMode:B,installPickerApi:v}}var xl=["width","height","top","left","right","bottom","inset","object-fit","object-position","z-index","opacity","visibility","filter","mix-blend-mode","backdrop-filter","border-radius","overflow","clip-path","mask","mask-image","mask-size","mask-position","mask-repeat","transform","transform-origin","translate","rotate","scale","box-sizing"];function mt(e,t){let n=Number.isFinite(t)&&t>0?t:30,i=Number.isFinite(e)&&e>0?e:0;return Math.floor(i*n+1e-9)/n}function Vr(e,t,n=xl){for(let i of n){let r=t.getPropertyValue(i);r&&e.setProperty(i,r)}}function Nt(e,t,n){let i=e?.[t];return typeof i=="function"?Number(i.call(e))||n:typeof i=="number"&&Number.isFinite(i)?i:(i!=null&&L("runtime.player.nonConformantNum",{prop:t,actual:typeof i}),n)}function ke(e,t){let n=e?.[t];if(typeof n=="function"){n.call(e);return}n!==void 0&&L("runtime.player.nonConformantVoid",{method:t,actual:typeof n})}function Lt(e,t,n){if(e){for(let i of Object.values(e))if(!(!i||i===t))try{n(i)}catch(r){L("runtime.player.site1",r)}}}function zr(e,t,n){let i=mt(t,n);return ke(e,"pause"),typeof e.totalTime=="function"?e.totalTime(i,!1):typeof e.seek=="function"&&e.seek(i,!1),i}function bl(e,t,n,i){let r=[];Lt(e,t,o=>{ke(o,"play"),r.push(o)});try{return zr(t,n,i)}finally{for(let o of r)try{ke(o,"pause")}catch(s){L("runtime.player.site2",s)}}}function yl(e,t){Lt(e,t,n=>{ke(n,"play")})}function qr(e){return{_timeline:null,play:()=>{let t=e.getTimeline();if(!t||e.getIsPlaying())return;let n=Math.max(0,Number(e.getSafeDuration?.()??Nt(t,"duration",0))||0);n>0&&Math.max(0,Nt(t,"time",0))>=n&&(ke(t,"pause"),typeof t.seek=="function"&&t.seek(0,!1),e.onDeterministicSeek(0),e.setIsPlaying(!1),e.onSyncMedia(0,!1),e.onRenderFrameSeek(0)),typeof t.timeScale=="function"&&t.timeScale(e.getPlaybackRate()),ke(t,"play"),Lt(e.getTimelineRegistry?.(),t,i=>{typeof i.timeScale=="function"&&i.timeScale(e.getPlaybackRate()),ke(i,"play")}),e.onDeterministicPlay(),e.setIsPlaying(!0),e.onShowNativeVideos(),e.onStatePost(!0)},pause:()=>{let t=e.getTimeline();if(!t)return;ke(t,"pause"),Lt(e.getTimelineRegistry?.(),t,i=>{ke(i,"pause")});let n=Math.max(0,Nt(t,"time",0));e.onDeterministicSeek(n),e.onDeterministicPause(),e.setIsPlaying(!1),e.onSyncMedia(n,!1),e.onRenderFrameSeek(n),e.onStatePost(!0)},seek:(t,n)=>{let i=e.getTimeline();if(!i)return;let r=Math.max(0,Number(t)||0),o=e.getIsPlaying(),s=bl(e.getTimelineRegistry?.(),i,r,e.getCanonicalFps());e.onDeterministicSeek(s),n?.keepPlaying&&o?(typeof i.timeScale=="function"&&i.timeScale(e.getPlaybackRate()),ke(i,"play"),Lt(e.getTimelineRegistry?.(),i,u=>{typeof u.timeScale=="function"&&u.timeScale(e.getPlaybackRate()),ke(u,"play")}),e.onDeterministicPlay(),e.onShowNativeVideos(),e.onSyncMedia(s,!0)):(e.setIsPlaying(!1),e.onSyncMedia(s,!1)),e.onRenderFrameSeek(s),e.onStatePost(!0)},renderSeek:t=>{let n=e.getTimeline(),i=e.getCanonicalFps(),r=n?(yl(e.getTimelineRegistry?.(),n),zr(n,t,i)):mt(Math.max(0,Number(t)||0),i);e.onDeterministicSeek(r),e.setIsPlaying(!1),e.onSyncMedia(r,!1),e.onRenderFrameSeek(r),e.onStatePost(!0)},getTime:()=>Nt(e.getTimeline(),"time",0),getDuration:()=>Nt(e.getTimeline(),"duration",0),isPlaying:()=>e.getIsPlaying(),setPlaybackRate:t=>e.setPlaybackRate(t),getPlaybackRate:()=>e.getPlaybackRate()}}function jr(){return{capturedTimeline:null,isPlaying:!1,currentTime:0,deterministicAdapters:[],canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,nativeMediaSyncDisabled:!1,webAudioMediaDisabled:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,beforeUnloadHandler:null,injectedCompStyles:[],injectedCompScripts:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,transportClock:null,transportRafId:null}}var Sl=new Set(["SCRIPT","STYLE","LINK","META","TEMPLATE","NOSCRIPT"]);function ri(e){return e.id||e.getAttribute("data-hf-id")||null}function ii(e){if(e==null)return null;let t=Number(e);return Number.isFinite(t)?t:null}function El(e,t){let n=e.getAttribute("data-composition-id");if(!n)return null;let i=Number(t[n]?.duration?.());return Number.isFinite(i)&&i>0?i:null}function Al(e){if(!(e instanceof HTMLMediaElement)||!Number.isFinite(e.duration))return null;let t=ii(e.getAttribute("data-playback-start"))??ii(e.getAttribute("data-media-start"))??0;return e.duration>t?e.duration-t:null}function wl(e,t,n,i){let r=ii(e.getAttribute("data-duration"));return r!=null&&r>0?r:El(e,t)??Al(e)??Math.max(0,n-i)}function Fl(e){for(let[t,n]of e){let i=t.parentElement;for(;i;){let r=e.get(i);if(r){n.parentId=r.id,r.children.push(n);break}i=i.parentElement}}}function $r(e){let{startResolver:t,timelineRegistry:n,rootDuration:i}=e,r=new Map,o=document.querySelector("[data-composition-id]"),s=0;for(let u of document.querySelectorAll("[data-start]")){if(u===o||Sl.has(u.tagName))continue;let a=t.resolveStartForElement(u,0);if(wl(u,n,i,a)<=0)continue;let l={id:ri(u)??`__clip-${s++}`,element:u,parentId:null,children:[]};r.set(u,l)}return Fl(r),{roots:Array.from(r.values()).filter(u=>u.parentId===null)}}var Cl="data-hf-authored-duration",_l="data-hf-authored-end";function st(e){if(e==null||e==="")return null;let t=Number(e);return Number.isFinite(t)?t:null}function Ml(e){return st(e.getAttribute("data-duration"))}function vl(e){return st(e.getAttribute("data-end"))}function Tl(e){return st(e.getAttribute(Cl))}function Nl(e){return st(e.getAttribute(_l))}function Ll(e){let t=(e??"").trim();if(!t)return null;let n=st(t);if(n!=null)return{kind:"absolute",value:n};let i=t.match(/^([A-Za-z0-9_.:-]+)(?:\\s*([+-])\\s*([0-9]*\\.?[0-9]+))?$/);if(!i)return null;let r=(i[1]??"").trim();if(!r)return null;let o=i[2]??"+",s=i[3]??"0",u=Number.parseFloat(s),a=Number.isFinite(u)?Math.max(0,u):0,l=o==="-"?-a:a;return{kind:"reference",refId:r,offset:l}}function $e(e){let t=e.timelineRegistry??{},n=e.includeAuthoredTimingAttrs??!1,i=new WeakMap,r=new WeakMap,o=new Set,s=c=>{let p=document.getElementById(c);return p||(document.querySelector(`[data-composition-id="${CSS.escape(c)}"]`)??null)},u=c=>{let p=r.get(c);if(p!==void 0)return p;let f=null,x=Ml(c)??(n?Tl(c):null);if(x!=null&&x>0&&(f=x),f==null||f<=0){let E=vl(c)??(n?Nl(c):null);if(E!=null){let b=l(c,0),g=E-b;Number.isFinite(g)&&g>0&&(f=g)}}if((f==null||f<=0)&&c instanceof HTMLMediaElement){let E=st(c.getAttribute("data-playback-start"))??st(c.getAttribute("data-media-start"))??0;Number.isFinite(c.duration)&&c.duration>E&&(f=(c.duration-E)/Tt(c))}if(f==null||f<=0){let E=c.getAttribute("data-composition-id");if(E){let b=t[E]??null;if(b&&typeof b.duration=="function")try{let g=Number(b.duration());Number.isFinite(g)&&g>0&&(f=g)}catch(g){L("runtime.startResolver.site1",g)}}}return f!=null&&Number.isFinite(f)&&f>0?(r.set(c,f),f):(r.set(c,null),null)},a=(c,p)=>{if(c.hasAttribute("data-composition-id")){let x=c.parentElement?.closest("[data-composition-id]");return x?l(x,p):0}let f=c.closest("[data-composition-id]");return f?l(f,p):0},l=(c,p)=>{let f=i.get(c);if(f!==void 0)return f??p;if(o.has(c))return p;o.add(c);try{let x=Ll(c.getAttribute("data-start"));if(!x){if(c.hasAttribute("data-composition-id")){let C=c.parentElement;if(C&&(C.hasAttribute("data-composition-src")||C.hasAttribute("data-composition-id")||C.hasAttribute("data-composition-file"))){let N=l(C,p);return i.set(c,N),N}}return i.set(c,p),p}if(x.kind==="absolute"){let C=Math.max(0,x.value),N=Math.max(0,a(c,p)+C);return i.set(c,N),N}let E=s(x.refId);if(!E)return i.set(c,p),p;let b=l(E,0),g=u(E);if(g==null||g<=0){let C=Math.max(0,b+x.offset);return i.set(c,C),C}let A=Math.max(0,b+g+x.offset);return i.set(c,A),A}finally{o.delete(c)}};return{resolveStartForElement:(c,p=0)=>l(c,Math.max(0,p)),resolveDurationForElement:c=>u(c)}}function oi(e){let t=e.trim().toLowerCase();return!(!t||t==="main"||t.includes("caption")||t.includes("ambient"))}var Rl="data-hf-authored-duration",kl="data-hf-authored-end";function Ce(e){if(e==null||e==="")return null;let t=Number(e);return Number.isFinite(t)?t:null}function si(e){return Ce(e.getAttribute("data-duration"))??Ce(e.getAttribute(Rl))}function Kr(e){return Ce(e.getAttribute("data-end"))??Ce(e.getAttribute(kl))}function ai(...e){let t=e.filter(n=>Number.isFinite(n??null));return t.length===0?null:Math.max(...t)}var Jr={composition:0,video:1,image:2,element:3,audio:4};function Dl(e){if(e.length===0)return;let t=new Map;for(let s of e){let u=t.get(s.track)??new Set;u.add(s.kind),t.set(s.track,u)}if(!Array.from(t.values()).some(s=>s.size>1))return;let i=0,r=new Map,o=[...t.keys()].sort((s,u)=>s-u);for(let s of o){let u=t.get(s);if(u.size===1)r.set(`${s}:${[...u][0]}`,i++);else{let a=[...u].sort((l,c)=>(Jr[l]??99)-(Jr[c]??99));for(let l of a)r.set(`${s}:${l}`,i++)}}for(let s of e){let u=`${s.track}:${s.kind}`,a=r.get(u);a!=null&&(s.track=a)}}function kt(e){let t=String(e??"").trim();if(!t)return null;let n=t.toLowerCase();if(n.startsWith("data:")||n.startsWith("javascript:"))return null;try{return new URL(t,document.baseURI).toString()}catch{return t}}function Xr(e){let t=e.getAttribute("src")??e.getAttribute("data-src");if(t)return kt(t);let n=e.getAttribute("data-composition-src");if(n)return kt(n);let i=e.querySelector("img[src], video[src], audio[src], source[src]");return i?kt(i.getAttribute("src")):null}function Il(e){let t=e.className;return typeof t!="string"?null:t.split(/\\s+/).map(n=>n.trim()).find(n=>n&&n!=="clip"&&!n.startsWith("__hf-"))??null}function Pl(e){if(!e)return null;try{return new URL(e,document.baseURI).pathname.split("/").filter(Boolean).at(-1)??null}catch{return e.split(/[\\\\/]/).filter(Boolean).at(-1)??null}}function Ol(e){let t=e.textContent?.replace(/\\s+/g," ").trim();return t?t.length>32?`${t.slice(0,31)}...`:t:null}function Rt(e){let t=e.replace(/\\.[^.]+$/i,"").replace(/[-_]+/g," ").replace(/\\s+/g," ").trim();return t?t.replace(/\\b\\w/g,n=>n.toUpperCase()):e}function Bl(e,t,n){let i=e.getAttribute("data-timeline-label")??e.getAttribute("data-label")??e.getAttribute("aria-label")??null;if(i?.trim())return i.trim();let r=e.getAttribute("data-composition-id");if(r)return Rt(r);let o=e.id;if(o)return Rt(o);let s=Il(e);if(s)return Rt(s);let u=Pl(Xr(e));if(u)return Rt(u);let a=Ol(e);return a||`${Rt(t)} ${n+1}`}function Yr(e){let n=window.__timelines??{},i=$e({timelineRegistry:n,includeAuthoredTimingAttrs:!0}),r=O=>{if(!O)return null;let D=n[O]??null;if(!D||typeof D.duration!="function")return null;try{let G=Number(D.duration());return Number.isFinite(G)&&G>0?G:null}catch{return null}},o=O=>{let D=Ce(O.getAttribute("data-duration"));if(D!=null&&D>0)return D;let G=Ce(O.getAttribute("data-playback-start"))??Ce(O.getAttribute("data-media-start"))??0;return Number.isFinite(O.duration)&&O.duration>G?Math.max(0,(O.duration-G)/Tt(O)):null},s=()=>{let O=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(O.length===0)return null;let D=0;for(let G of O){let Q=G.hasAttribute("data-hf-auto-start")?i.resolveStartForElement(G,0):Math.max(0,Number(G.getAttribute("data-start")??0)||0);if(!Number.isFinite(Q))continue;let ae=o(G);ae==null||ae<=0||(D=Math.max(D,Math.max(0,Q)+ae))}return D>0?D:null},u=(O,D)=>{let G=[],Q=null,ae=null,j=null,z=O.parentElement;for(;z;){let Y=z.getAttribute("data-composition-id");Y&&(G.push(Y),!j&&z!==D&&(j=Y),Q==null&&(Q=i.resolveStartForElement(z,0)),ae==null&&(ae=Ce(z.getAttribute("data-duration"))??r(Y)??null)),z=z.parentElement}return{parentCompositionId:j,compositionAncestors:G.reverse(),inheritedStart:Q,inheritedDuration:ae}},a=document.querySelector("[data-composition-id]"),l=Array.from(document.querySelectorAll("[data-composition-id]")),c=a?.getAttribute("data-composition-id")??null,p=a?i.resolveStartForElement(a,0):0,f=s(),x=f!=null?Math.max(0,f-Math.max(0,p)):null,E=r(c),b=si(a??document.body),g=ai(...l.filter(O=>O!==a).map(O=>{let D=i.resolveStartForElement(O,0),G=i.resolveDurationForElement(O)??r(O.getAttribute("data-composition-id"))??null;return!Number.isFinite(D)||G==null||G<=0?null:Math.max(0,D)+G})),A=g!=null?Math.max(0,g-Math.max(0,p)):null,C=typeof E=="number"&&Number.isFinite(E)&&E>0?E:null,N=typeof b=="number"&&Number.isFinite(b)&&b>0?b:null,$=typeof x=="number"&&Number.isFinite(x)&&x>0?x:null,B=typeof A=="number"&&Number.isFinite(A)&&A>0?A:null,v=ai($,B),S=C!=null&&v!=null&&C>v+1,_=N??(S?v:ai(C,$,B))??null,R=(_!=null?p+_:null)??(typeof f=="number"&&Number.isFinite(f)&&f>0?f:null),W=(O,D)=>!Number.isFinite(D)||D<=0?0:R==null||!Number.isFinite(R)?D:!Number.isFinite(O)||O>=R?0:Math.max(0,Math.min(D,R-O)),q=[],ie=[],P=Array.from(document.querySelectorAll("[data-start], [data-track-index], [data-composition-id], video, audio, img")),se=0;for(let O=0;O<P.length;O+=1){let D=P[O];if(D===a||["SCRIPT","STYLE","LINK","META","TEMPLATE","NOSCRIPT"].includes(D.tagName))continue;let G=u(D,a),Q=i.resolveStartForElement(D,G.inheritedStart??0),ae=D.getAttribute("data-composition-id"),j=si(D);if((j==null||j<=0)&&ae&&ae!==c&&(j=r(ae)),(j==null||j<=0)&&D instanceof HTMLMediaElement){let Me=Ce(D.getAttribute("data-playback-start"))??Ce(D.getAttribute("data-media-start"))??0;Number.isFinite(D.duration)&&D.duration>0&&(j=Math.max(0,D.duration-Me))}if(j==null||j<=0){let Me=G.inheritedDuration;if(Me!=null&&Me>0){let Ue=(G.inheritedStart??0)+Me;j=Math.max(0,Ue-Q)}}if(j==null||j<=0||(j=W(Q,j),j<=0))continue;let z=Q+j;se=Math.max(se,z);let Y=D.tagName.toLowerCase(),Pe=ae&&ae!==c?"composition":Y==="video"?"video":Y==="audio"?"audio":Y==="img"?"image":"element";q.push({id:ri(D)??ae??null,label:Bl(D,Pe,q.length),start:Q,duration:j,track:Number.parseInt(D.getAttribute("data-track-index")??D.getAttribute("data-track")??String(O),10)||0,kind:Pe,tagName:Y,compositionId:D.getAttribute("data-composition-id"),compositionAncestors:G.compositionAncestors,parentCompositionId:G.parentCompositionId,nodePath:null,compositionSrc:kt(D.getAttribute("data-composition-src")),assetUrl:Xr(D),timelineRole:D.getAttribute("data-timeline-role"),timelineLabel:D.getAttribute("data-timeline-label"),timelineGroup:D.getAttribute("data-timeline-group"),timelinePriority:Ce(D.getAttribute("data-timeline-priority"))})}let Ee=new Set(q.map(O=>O.id)),H=a?.getAttribute("data-composition-id")??null,U=H?n[H]??null:null;if(U&&a){let O=U;if(typeof O.getChildren=="function")try{let D=O.getChildren(!0,!0,!1)??[],G=new Map;for(let j of a.children){let z=j;if(!z.id)continue;let Y=z.tagName.toLowerCase();Y==="script"||Y==="style"||Y==="link"||G.set(z,{id:z.id,start:1/0,end:-1/0})}let Q=j=>{let z=j;for(;z;){if(G.has(z))return z;if(z===a)return null;z=z.parentElement}return null};for(let j of D){if(typeof j.targets!="function"||typeof j.startTime!="function"||typeof j.duration!="function")continue;let z=j.startTime(),Y=j.parent;for(;Y&&Y!==U&&typeof Y.startTime=="function";)z+=Y.startTime(),Y=Y.parent;let Pe=z+j.duration();if(!(!Number.isFinite(z)||!Number.isFinite(Pe)))for(let Me of j.targets()){if(!(Me instanceof Element))continue;let At=Q(Me);if(!At)continue;let Ue=G.get(At);Ue&&(Ue.start=Math.min(Ue.start,z),Ue.end=Math.max(Ue.end,Pe))}}let ae=q.length>0?Math.max(...q.map(j=>j.track))+1:0;for(let[j,z]of G){if(z.start===1/0||z.end===-1/0)continue;let Y=j;if(Ee.has(Y.id))continue;let Pe=Math.max(0,z.end-z.start);if(Pe<=0)continue;let Me=W(z.start,Pe);Me<=0||(se=Math.max(se,z.start+Me),q.push({id:Y.id,label:Y.getAttribute("data-timeline-label")??Y.getAttribute("data-label")??Y.getAttribute("aria-label")??Y.id,start:z.start,duration:Me,track:Number.parseInt(Y.getAttribute("data-track-index")??Y.getAttribute("data-track")??"",10)||ae,kind:"element",tagName:Y.tagName.toLowerCase(),compositionId:Y.getAttribute("data-composition-id"),compositionAncestors:H?[H]:[],parentCompositionId:H,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:Y.getAttribute("data-timeline-role"),timelineLabel:Y.getAttribute("data-timeline-label"),timelineGroup:Y.getAttribute("data-timeline-group"),timelinePriority:Ce(Y.getAttribute("data-timeline-priority"))}),Ee.add(Y.id))}}catch(D){L("runtime.timeline.site1",D)}}if(a&&_!=null&&_>0){let O=q.length>0?Math.max(...q.map(D=>D.track))+1:0;for(let D of a.children){let G=D;if(!G.id||Ee.has(G.id))continue;let Q=G.getAttribute("data-timeline-role");if(Q!=="overlay"&&Q!=="persistent-overlay")continue;let ae=G.tagName.toLowerCase();if(ae==="script"||ae==="style"||ae==="link"||ae==="meta"||window.getComputedStyle(G).display==="none")continue;let z=W(0,_);z<=0||(se=Math.max(se,z),q.push({id:G.id,label:G.getAttribute("data-timeline-label")??G.getAttribute("data-label")??G.getAttribute("aria-label")??G.id,start:0,duration:z,track:Number.parseInt(G.getAttribute("data-track-index")??G.getAttribute("data-track")??"",10)||O,kind:"element",tagName:ae,compositionId:G.getAttribute("data-composition-id"),compositionAncestors:H?[H]:[],parentCompositionId:H,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:Q,timelineLabel:G.getAttribute("data-timeline-label"),timelineGroup:G.getAttribute("data-timeline-group"),timelinePriority:Ce(G.getAttribute("data-timeline-priority"))}),Ee.add(G.id))}}Dl(q);for(let O of l){if(O===a)continue;let D=O.getAttribute("data-composition-id");if(!D||!oi(D))continue;let G=i.resolveStartForElement(O,0),Q=si(O);if((Q==null||Q<=0)&&Kr(O)!=null){let Y=Kr(O);Q=Math.max(0,Y-G)}let ae=r(D),j=Q&&Q>0?Q:ae;if(j==null||j<=0)continue;let z=W(G,j);z<=0||ie.push({id:D,label:O.getAttribute("data-label")??D,start:G,duration:z,thumbnailUrl:kt(O.getAttribute("data-thumbnail-url")),avatarName:null})}let V=Math.max(1,se||1,_??0);return{source:"hf-preview",type:"timeline",durationInFrames:S&&N==null?Number.POSITIVE_INFINITY:Math.max(1,Math.ceil(V*Math.max(1,e.canonicalFps))),clips:q,scenes:ie,compositionWidth:Ce(a?.getAttribute("data-width"))??1920,compositionHeight:Ce(a?.getAttribute("data-height"))??1080}}var ce=ol(ws(),1),Fs=ce.default,$p=ce.default.stringify,Kp=ce.default.fromJSON,Jp=ce.default.plugin,Xp=ce.default.parse,Yp=ce.default.list,Qp=ce.default.document,Zp=ce.default.comment,eh=ce.default.atRule,th=ce.default.rule,nh=ce.default.decl,ih=ce.default.root,rh=ce.default.CssSyntaxError,oh=ce.default.Declaration,sh=ce.default.Container,ah=ce.default.Processor,lh=ce.default.Document,uh=ce.default.Comment,ch=ce.default.Warning,dh=ce.default.AtRule,fh=ce.default.Result,mh=ce.default.Input,ph=ce.default.Rule,hh=ce.default.Root,gh=ce.default.Node;var ki="data-hf-authored-id",Cs="data-hf-inner-root";function Di(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,"\\\\$&")}function Ii(e){return e.replace(/\\\\/g,"\\\\\\\\").replace(/"/g,\'\\\\"\')}function sc(e){return e&&e.replace(/[^a-zA-Z0-9_-]/g,n=>`\\\\${n}`).replace(/^-?\\d/,n=>`\\\\${n}`)}function _s(e){let t=e.trim();return t?Array.from(new Set([t,sc(t)])).filter(Boolean):[]}function ac(e){return!!e&&/[\\w-]/.test(e)}function lc(e,t,n){let i=_s(t).sort((u,a)=>a.length-u.length);if(i.length===0)return e;let r="",o=0,s=null;for(let u=0;u<e.length;u+=1){let a=e[u],l=u>0?e[u-1]:"";if(s){r+=a,a===s&&l!=="\\\\"&&(s=null);continue}if(a===\'"\'||a==="\'"){s=a,r+=a;continue}if(a==="["){o+=1,r+=a;continue}if(a==="]"){o=Math.max(0,o-1),r+=a;continue}if(a==="#"&&o===0){let c=i.find(p=>e.startsWith(p,u+1));if(c){let p=e[u+1+c.length];if(!ac(p)){r+=n,u+=c.length;continue}}}r+=a}return r}function uc(e,t){let n=t?.trim();return n?lc(e,n,`[${ki}="${Ii(n)}"]`):e}function cc(e,t,n,i,r){let o=uc(e,i),s=dc(o,t,n),u=s.trim();if(!u||/^(html|body|:root|\\*)$/i.test(u))return e;let a=new RegExp(`\\\\[\\\\s*data-composition-id\\\\s*=\\\\s*(["\'])${Di(n)}\\\\1\\\\s*\\\\]`,"g");if(a.test(u))return u.replace(a,"").trim()===""?`${t}:not(:has([${Cs}])), ${t} > [${Cs}]`:s.replace(a,t);let l=s.match(/^\\s*/)?.[0]??"",c=s.match(/\\s*$/)?.[0]??"";if(r){let p=i?`[${ki}="${Ii(i)}"]`:null;if(p&&u.startsWith(p)){let f=u.slice(p.length);return`${l}${t}${p}${f}${c}`}}return`${l}${t} ${u}${c}`}function dc(e,t,n){let i=Di(n),r=String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${i}"|\'${i}\')\\s*\\]`,o=String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`;return e.replace(new RegExp(`${r}(?:${o})+`,"g"),t).replace(new RegExp(`(?:${o})+${r}`,"g"),t)}var fc=new Set(["keyframes","-webkit-keyframes","font-face"]);function mc(e){return e?.type==="atrule"}function pc(e){let t=e.parent;for(;t;){if(mc(t)&&fc.has(t.name.toLowerCase()))return!0;t=t.parent}return!1}function Pi(e,t,n,i,r){let o=t.trim();if(!e||!o)return e;let s=n||`[data-composition-id="${Ii(o)}"]`,u=Fs.parse(e);return u.walkRules(a=>{pc(a)||(a.selectors=a.selectors.map(l=>cc(l,s,o,i,r?.compoundAuthoredRoot)))}),u.toResult({map:!1}).css}function Ms(e,t,n="[HyperFrames] composition script error:",i,r=t,o){let s=JSON.stringify(t),u=JSON.stringify(r),a=JSON.stringify(n),l=Di(t),c=JSON.stringify(o?.trim()||null),p=JSON.stringify(i??null),f=JSON.stringify(String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${l}"|\'${l}\')\\s*\\]`),x=JSON.stringify(String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`),E=JSON.stringify(_s(o?.trim()||""));return`(function(){\n var __hfCompId = ${s};\n var __hfTimelineCompId = ${u};\n var __hfErrorLabel = ${a};\n var __hfAuthoredRootId = ${c};\n var __hfAuthoredRootAttr = ${JSON.stringify(ki)};\n var __hfEscapeAttr = function(value) {\n return (value + "").replace(/\\\\\\\\/g, "\\\\\\\\\\\\\\\\").replace(/"/g, "\\\\\\\\\\\\"");\n };\n var __hfRootSelector = ${p} || (__hfCompId\n ? \'[data-composition-id="\' + __hfEscapeAttr(__hfCompId) + \'"]\'\n : "");\n var __hfRoot = null;\n var __hfRootSelectorPattern = ${f};\n var __hfTimingSelectorPattern = ${x};\n var __hfAuthoredRootIdForms = ${E};\n var __hfAuthoredRootSelector = __hfAuthoredRootId\n ? "[" + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(__hfAuthoredRootId) + \'"]\'\n : "";\n var __hfIsSelectorNameChar = function(char) {\n return !!char && /[\\\\w-]/.test(char);\n };\n var __hfReplaceAuthoredRootIdSelectors = function(selector) {\n if (!__hfAuthoredRootSelector || !__hfAuthoredRootIdForms.length || typeof selector !== "string") {\n return selector;\n }\n var result = "";\n var bracketDepth = 0;\n var quote = null;\n for (var index = 0; index < selector.length; index += 1) {\n var char = selector[index];\n var previousChar = index > 0 ? selector[index - 1] : "";\n if (quote) {\n result += char;\n if (char === quote && previousChar !== "\\\\\\\\") {\n quote = null;\n }\n continue;\n }\n if (char === \'"\' || char === "\'") {\n quote = char;\n result += char;\n continue;\n }\n if (char === "[") {\n bracketDepth += 1;\n result += char;\n continue;\n }\n if (char === "]") {\n bracketDepth = Math.max(0, bracketDepth - 1);\n result += char;\n continue;\n }\n if (char === "#" && bracketDepth === 0) {\n var matchedForm = null;\n for (var formIndex = 0; formIndex < __hfAuthoredRootIdForms.length; formIndex += 1) {\n var form = __hfAuthoredRootIdForms[formIndex];\n if (selector.slice(index + 1, index + 1 + form.length) === form) {\n matchedForm = form;\n break;\n }\n }\n if (matchedForm) {\n var nextChar = selector[index + 1 + matchedForm.length];\n if (!__hfIsSelectorNameChar(nextChar)) {\n result += __hfAuthoredRootSelector;\n index += matchedForm.length;\n continue;\n }\n }\n }\n result += char;\n }\n return result;\n };\n var __hfNormalizeSelector = function(selector) {\n if (!__hfCompId || typeof selector !== "string") return selector;\n var normalized = selector\n .replace(new RegExp(__hfRootSelectorPattern + \'(?:\' + __hfTimingSelectorPattern + \')+\', \'g\'), __hfRootSelector)\n .replace(new RegExp(\'(?:\' + __hfTimingSelectorPattern + \')+\' + __hfRootSelectorPattern, \'g\'), __hfRootSelector);\n if (__hfAuthoredRootSelector) {\n normalized = __hfReplaceAuthoredRootIdSelectors(normalized);\n }\n return normalized;\n };\n var __hfFindRoot = function() {\n if (!__hfRoot && __hfRootSelector) {\n __hfRoot = window.document.querySelector(__hfRootSelector);\n }\n return __hfRoot;\n };\n var __hfContains = function(node) {\n var root = __hfFindRoot();\n return !root || node === root || root.contains(node);\n };\n var __hfQueryAll = function(selector) {\n var root = __hfFindRoot();\n if (!root || typeof selector !== "string") {\n return window.document.querySelectorAll(selector);\n }\n return Array.prototype.filter.call(window.document.querySelectorAll(__hfNormalizeSelector(selector)), function(node) {\n return __hfContains(node);\n });\n };\n var __hfQueryOne = function(selector) {\n var matches = __hfQueryAll(selector);\n return matches[0] || null;\n };\n var __hfGetElementById = function(id) {\n var found = window.document.getElementById(id);\n if (found && __hfContains(found)) return found;\n var root = __hfFindRoot();\n if (!root) return found || null;\n var idValue = id + "";\n if (__hfAuthoredRootId && __hfAuthoredRootId === idValue && root.getAttribute && root.getAttribute(__hfAuthoredRootAttr) === idValue) {\n return root;\n }\n if (root.id === idValue) return root;\n if (typeof root.querySelector !== "function") return null;\n try {\n var authoredRootMatch = root.querySelector(\'[\' + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(idValue) + \'"]\');\n if (authoredRootMatch) return authoredRootMatch;\n } catch {}\n if (typeof CSS !== "undefined" && CSS && typeof CSS.escape === "function") {\n try {\n return root.querySelector("#" + CSS.escape(idValue)) || null;\n } catch {}\n }\n try {\n return root.querySelector(\'[id="\' + __hfEscapeAttr(idValue) + \'"]\') || null;\n } catch {}\n return null;\n };\n var __hfScopedDocument = typeof Proxy === "function"\n ? new Proxy(window.document, {\n get: function(target, prop, receiver) {\n if (prop === "querySelector") return __hfQueryOne;\n if (prop === "querySelectorAll") return __hfQueryAll;\n if (prop === "getElementById") return __hfGetElementById;\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n })\n : window.document;\n var __hfTimelineRegistryProxy = null;\n var __hfGetTimelineRegistry = function() {\n window.__timelines = window.__timelines || {};\n if (!__hfCompId || __hfCompId === __hfTimelineCompId || typeof Proxy !== "function") {\n return window.__timelines;\n }\n if (!__hfTimelineRegistryProxy) {\n __hfTimelineRegistryProxy = new Proxy(window.__timelines, {\n get: function(target, prop, receiver) {\n return Reflect.get(target, prop === __hfCompId ? __hfTimelineCompId : prop, target);\n },\n set: function(target, prop, value, receiver) {\n return Reflect.set(target, prop === __hfCompId ? __hfTimelineCompId : prop, value, target);\n },\n });\n }\n return __hfTimelineRegistryProxy;\n };\n var __hfScopedWindow = typeof Proxy === "function"\n ? new Proxy(window, {\n get: function(target, prop, receiver) {\n if (prop === "__timelines") return __hfGetTimelineRegistry();\n // Inside a sub-composition, __hyperframes is passed as a bare script\n // param bound to the SCOPED variant (per-comp getVariables). But\n // authors routinely write the documented window.__hyperframes.\n // getVariables() form, which would otherwise fall through to the host\n // page\'s base __hyperframes and return the WRONG (or empty) variables\n // for this instance. Route it to the scoped variant too so both\n // spellings resolve to this composition\'s own variables.\n // (__hfScopedHyperframes is a hoisted var assigned below, before any\n // sub-comp script -- the only code that reads this -- runs.)\n if (prop === "__hyperframes") return __hfScopedHyperframes;\n return Reflect.get(target, prop, target);\n },\n set: function(target, prop, value, receiver) {\n if (prop === "__timelines") {\n target.__timelines = value || {};\n __hfTimelineRegistryProxy = null;\n return true;\n }\n return Reflect.set(target, prop, value, target);\n },\n })\n : window;\n var __hfResolveGsapTarget = function(target) {\n if (typeof target !== "string") return target;\n return __hfQueryAll(target);\n };\n var __hfScopeTimeline = function(timeline) {\n if (!timeline || timeline.__hfScopedCompositionRoot === __hfFindRoot()) return timeline;\n ["to", "from", "fromTo", "set"].forEach(function(method) {\n var original = timeline[method];\n if (typeof original !== "function") return;\n timeline[method] = function(target) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(target);\n return original.apply(timeline, args);\n };\n });\n try {\n Object.defineProperty(timeline, "__hfScopedCompositionRoot", {\n value: __hfFindRoot(),\n configurable: true,\n });\n } catch {\n // Best-effort: timelines coming from user code may have a frozen target\n // or a non-extensible defineProperty path. Swallow \\u2014 the scoped root\n // is an enrichment, not a correctness invariant for playback.\n }\n return timeline;\n };\n var __hfBaseGsap = typeof gsap === "undefined" ? window.gsap : gsap;\n var __hfScopedGsap = !__hfBaseGsap || typeof Proxy !== "function"\n ? __hfBaseGsap\n : new Proxy(__hfBaseGsap, {\n get: function(target, prop, receiver) {\n if (prop === "timeline") {\n return function() {\n return __hfScopeTimeline(target.timeline.apply(target, arguments));\n };\n }\n if (prop === "to" || prop === "from" || prop === "fromTo" || prop === "set") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return target[prop].apply(target, args);\n };\n }\n if (prop === "utils" && target.utils && typeof Proxy === "function") {\n return new Proxy(target.utils, {\n get: function(utilsTarget, utilsProp, utilsReceiver) {\n if (utilsProp === "toArray") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return utilsTarget.toArray.apply(utilsTarget, args);\n };\n }\n if (utilsProp === "selector") {\n return function(base) {\n var baseEl = typeof base === "string" ? __hfQueryOne(base) : base;\n var root = baseEl || __hfFindRoot();\n return function(selector) {\n if (!root || typeof selector !== "string") return [];\n return Array.prototype.filter.call(\n window.document.querySelectorAll(__hfNormalizeSelector(selector)),\n function(node) {\n return node === root || (typeof root.contains === "function" && root.contains(node));\n },\n );\n };\n };\n }\n var value = Reflect.get(utilsTarget, utilsProp, utilsTarget);\n return typeof value === "function" ? value.bind(utilsTarget) : value;\n },\n });\n }\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n });\n var __hfBaseHyperframes = window.__hyperframes;\n var __hfScopedHyperframes = !__hfBaseHyperframes\n ? __hfBaseHyperframes\n : Object.assign({}, __hfBaseHyperframes, {\n getVariables: function() {\n var byComp = window.__hfVariablesByComp;\n var scoped = byComp && __hfTimelineCompId ? byComp[__hfTimelineCompId] : null;\n return scoped ? Object.assign({}, scoped) : {};\n },\n });\n var __hfRun = function() {\n try {\n (function(document, gsap, window, __hyperframes) {\n${e.replace(/<\\/(script)/gi,"<\\\\/$1")}\n }).call(window, __hfScopedDocument, __hfScopedGsap, __hfScopedWindow, __hfScopedHyperframes);\n } catch (_err) {\n console.error(__hfErrorLabel, __hfCompId, _err);\n }\n };\n __hfFindRoot();\n __hfRun();\n})();`}function vs(){if(typeof document>"u")return{};let e=Oi(document.documentElement),t=hc();return{...e,...t}}function Oi(e){if(!e)return{};let t=e.getAttribute("data-composition-variables");if(!t)return{};let n;try{n=JSON.parse(t)}catch{return{}}if(!Array.isArray(n))return{};let i={};for(let r of n){if(!r||typeof r!="object")continue;let o=r;typeof o.id!="string"||!("default"in o)||(i[o.id]=o.default)}return i}function hc(){if(typeof window>"u")return{};let e=window.__hfVariables;return!e||typeof e!="object"||Array.isArray(e)?{}:e}var gc=8e3,xc=/^(?![a-zA-Z][a-zA-Z\\d+\\-.]*:)(?!\\/\\/)(?!\\/)(?!\\.\\.?\\/).+/,bc=/\\burl\\(\\s*(["\']?)([^)"\']+)\\1\\s*\\)/g,yc=["src","href"];function Sc(e){return!e||e.startsWith("http://")||e.startsWith("https://")||e.startsWith("//")||e.startsWith("data:")||e.startsWith("#")||e.startsWith("/")}function Ns(e,t){if(!t)return e;let n=e.trim();if(Sc(n)||!n.startsWith("../")&&n!=="..")return e;try{return new URL(n,t).href}catch{return e}}function Ls(e,t){return!t||!e?e:e.replace(bc,(n,i,r)=>{let o=Ns(r||"",t);return o===r?n:`url(${i||""}${o}${i||""})`})}function Ec(e,t){for(let n of Array.from(e.querySelectorAll("[src], [href]")))for(let i of yc){let r=n.getAttribute(i);if(r==null)continue;let o=Ns(r,t);o!==r&&n.setAttribute(i,o)}}function Ac(e,t){for(let n of Array.from(e.querySelectorAll("[style]"))){let i=n.getAttribute("style");if(i==null)continue;let r=Ls(i,t);r!==i&&n.setAttribute("style",r)}}function wc(e,t){for(let n of Array.from(e.querySelectorAll("style"))){let i=n.textContent||"",r=Ls(i,t);r!==i&&(n.textContent=r)}}function Rs(e,t){if(t){Ec(e,t),Ac(e,t),wc(e,t);for(let n of Array.from(e.querySelectorAll("template")))Rs(n.content,t)}}function Fc(e,t){return`${e}__hf${t}`}var Cc=e=>new Promise(t=>{let n=!1,i=Date.now(),r=null,o=s=>{n||(n=!0,r!=null&&window.clearTimeout(r),t({status:s,elapsedMs:Math.max(0,Date.now()-i)}))};e.addEventListener("load",()=>o("load"),{once:!0}),e.addEventListener("error",()=>o("error"),{once:!0}),r=window.setTimeout(()=>o("timeout"),gc)});function Bi(e){for(;e.firstChild;)e.removeChild(e.firstChild);e.textContent=""}var _c=["data-composition-id","data-composition-file","data-start","data-duration","data-end","data-track-index","data-track","data-composition-src","data-hf-authored-duration","data-hf-authored-end"];function Mc(e){let t=document.importNode(e,!0),n=t.getAttribute("id")?.trim();for(let o of _c)t.removeAttribute(o);n&&(t.removeAttribute("id"),t.setAttribute("data-hf-authored-id",n)),t.setAttribute("data-hf-inner-root","true");let i=t.getAttribute("data-width"),r=t.getAttribute("data-height");return t.style.width=i?`${i}px`:"100%",t.style.height=r?`${r}px`:"100%",t}function Ts(e,t){let n=e.trim();if(!n)return e;try{return xc.test(n)?new URL(n,document.baseURI).toString():t?new URL(n,t).toString():new URL(n,document.baseURI).toString()}catch{return e}}function vc(e){let t=e.getAttribute("data-variable-values");if(!t)return{};let n;try{n=JSON.parse(t)}catch{return{}}return!n||typeof n!="object"||Array.isArray(n)?{}:n}function _n(e){let t=(e.getAttribute("data-composition-id")||"").trim()||null;return{authoredCompositionId:(e.getAttribute("data-hf-original-composition-id")||t||"").trim()||null,runtimeCompositionId:t}}function Tc(e){let t=new Map;for(let n of e){let i=_n(n).authoredCompositionId||"";i&&t.set(i,(t.get(i)||0)+1)}return t}function ks(e){let t=_n(e).authoredCompositionId;return t?!!document.querySelector(`template#${CSS.escape(t)}-template`):!1}function Nc(e){return!!e.querySelector(\'[data-hf-inner-root="true"]\')}function Lc(e){return e.hasAttribute("data-composition-src")?!0:ks(e)?e.children.length===0||e.hasAttribute("data-hf-original-composition-id")?!0:Nc(e):!1}function Gi(){return Array.from(document.querySelectorAll("[data-composition-src], [data-composition-id]")).filter(t=>t.hasAttribute("data-composition-src")?!0:ks(t))}function Ds(){let e=window.__hfVariablesByComp;if(!e)return;let t=new Set(Gi().map(n=>_n(n).runtimeCompositionId).filter(n=>!!n));for(let n of Object.keys(e))t.has(n)||delete e[n]}function Is(e,t=Tc(e)){let n=new Map,i=new Map;for(let r of e){let{authoredCompositionId:o,runtimeCompositionId:s}=_n(r),u=Lc(r);if(!o){i.set(r,{authoredCompositionId:null,runtimeCompositionId:s});continue}let a=(t.get(o)||0)>1,l=s||o;if(u){let c=a?(n.get(o)||0)+1:0;a&&n.set(o,c),l=a?Fc(o,c):o,a?r.setAttribute("data-hf-original-composition-id",o):r.removeAttribute("data-hf-original-composition-id"),r.setAttribute("data-composition-id",l),s&&s!==l&&window.__hfVariablesByComp&&delete window.__hfVariablesByComp[s]}i.set(r,{authoredCompositionId:o,runtimeCompositionId:l})}return i}async function Hi(e){let t=null;e.authoredCompositionId&&(t=Array.from(e.sourceNode.querySelectorAll("[data-composition-id]")).find(x=>x.getAttribute("data-composition-id")===e.authoredCompositionId)??null);let n=t??e.sourceNode,i=t?.getAttribute("data-composition-id")?.trim()||e.authoredCompositionId||null,r=e.runtimeCompositionId||i||null,o=t?.getAttribute("id")?.trim()||null,s=r?`[data-composition-id="${CSS.escape(r)}"]`:void 0;if(e.headLinks)for(let f of e.headLinks){let x=f.getAttribute("href")||"";x&&(document.head.querySelector(`link[href="${CSS.escape(x)}"]`)||document.head.appendChild(f.cloneNode(!0)))}if(e.headStyles)for(let f of e.headStyles){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=Pi(x.textContent||"",i,s,o)),document.head.appendChild(x),e.injectedStyles.push(x))}let u=Array.from(n.querySelectorAll("style"));for(let f of u){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=Pi(x.textContent||"",i,s,o)),document.head.appendChild(x),e.injectedStyles.push(x))}let a=[];if(e.headScripts)for(let f of e.headScripts){let x=f.getAttribute("type")?.trim()??"",E=f.getAttribute("src")?.trim()??"";if(E){let b=Ts(E,e.compositionUrl);a.push({kind:"external",src:b,type:x})}else{let b=f.textContent?.trim()??"";b&&a.push({kind:"inline",content:b,type:x,scopeCompositionId:i})}}let l=Array.from(n.querySelectorAll("script")),c=[...a];for(let f of l){let x=f.getAttribute("type")?.trim()??"",E=f.getAttribute("src")?.trim()??"";if(E){let b=Ts(E,e.compositionUrl);c.push({kind:"external",src:b,type:x})}else{let b=f.textContent?.trim()??"";b&&c.push({kind:"inline",content:b,type:x,scopeCompositionId:i})}f.parentNode?.removeChild(f)}let p=Array.from(n.querySelectorAll("style"));for(let f of p)f.parentNode?.removeChild(f);if(t){let f=t.getAttribute("data-width"),x=t.getAttribute("data-height"),E=e.parseDimensionPx(f),b=e.parseDimensionPx(x);f&&e.host.setAttribute("data-width",f),x&&e.host.setAttribute("data-height",x),E&&e.host instanceof HTMLElement&&(e.host.style.width=E),b&&e.host instanceof HTMLElement&&(e.host.style.height=b),t.hasAttribute("data-timeline-locked")&&e.host.setAttribute("data-timeline-locked",""),e.host.appendChild(Mc(t))}else e.hasTemplate?e.host.appendChild(document.importNode(n,!0)):e.host.innerHTML=e.fallbackBodyInnerHtml;if(r){let f={...e.declaredVariableDefaults??{},...vc(e.host)};Object.keys(f).length>0?(window.__hfVariablesByComp||(window.__hfVariablesByComp={}),window.__hfVariablesByComp[r]=f):window.__hfVariablesByComp&&delete window.__hfVariablesByComp[r]}for(let f of c){let x=document.createElement("script");if(f.type&&(x.type=f.type),x.async=!1,f.kind==="external"?x.src=f.src:f.type.toLowerCase()==="module"?x.textContent=f.content:f.scopeCompositionId?x.textContent=Ms(f.content,f.scopeCompositionId,"[HyperFrames] composition script error:",s,r||f.scopeCompositionId,o):x.textContent=`(function(){${f.content}})();`,document.body.appendChild(x),e.injectedScripts.push(x),f.kind==="external"){let E=await Cc(x);E.status!=="load"&&e.onDiagnostic?.({code:"external_composition_script_load_issue",details:{hostCompositionId:e.authoredCompositionId,runtimeCompositionId:e.runtimeCompositionId,hostCompositionSrc:e.hostCompositionSrc,resolvedScriptSrc:f.src,loadStatus:E.status,elapsedMs:E.elapsedMs}})}}}async function Ps(e){let t=Gi();if(Ds(),t.length===0)return;let n=Is(t),i=t.filter(r=>{if(r.hasAttribute("data-composition-src")||r.children.length>0)return!1;let o=n.get(r)?.authoredCompositionId;return o?!!document.querySelector(`template#${CSS.escape(o)}-template`):!1});if(i.length!==0)for(let r of i){let o=n.get(r),s=o?.authoredCompositionId;if(!s)continue;let u=document.querySelector(`template#${CSS.escape(s)}-template`);Bi(r),await Hi({host:r,authoredCompositionId:s,runtimeCompositionId:o?.runtimeCompositionId||s,hostCompositionSrc:`template#${s}-template`,sourceNode:u.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:null,injectedStyles:e.injectedStyles,injectedScripts:e.injectedScripts,parseDimensionPx:e.parseDimensionPx,onDiagnostic:e.onDiagnostic})}}async function Os(e){let t=Gi();if(Ds(),t.length===0)return;let n=Is(t),i=t.filter(r=>r.hasAttribute("data-composition-src"));i.length!==0&&await Promise.all(i.map(async r=>{let o=r.getAttribute("data-composition-src");if(!o)return;let s=n.get(r),u=s?.authoredCompositionId||null,a=s?.runtimeCompositionId||u||null,l=null;try{l=new URL(o,document.baseURI)}catch{l=null}Bi(r);try{let c=u!=null?document.querySelector(`template#${CSS.escape(u)}-template`):null;if(c){await Hi({host:r,authoredCompositionId:u,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:c.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:l,injectedStyles:e.injectedStyles,injectedScripts:e.injectedScripts,parseDimensionPx:e.parseDimensionPx,onDiagnostic:e.onDiagnostic});return}let p=await fetch(o);if(!p.ok)throw new Error(`HTTP ${p.status}`);let f=await p.text(),E=new DOMParser().parseFromString(f,"text/html");Rs(E,l);let b=(u?E.querySelector(`template#${CSS.escape(u)}-template`):null)??E.querySelector("template"),g=b?b.content:E.body,A=b?void 0:Array.from(E.head.querySelectorAll("style")),C=b?void 0:Array.from(E.head.querySelectorAll("script")),N=b?void 0:Array.from(E.head.querySelectorAll(\'link[rel="stylesheet"], link[rel="preconnect"]\'));await Hi({host:r,authoredCompositionId:u,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:g,hasTemplate:!!b,fallbackBodyInnerHtml:E.body.innerHTML,compositionUrl:l,injectedStyles:e.injectedStyles,injectedScripts:e.injectedScripts,parseDimensionPx:e.parseDimensionPx,headStyles:A,headScripts:C,headLinks:N,declaredVariableDefaults:Oi(E.documentElement),onDiagnostic:e.onDiagnostic})}catch(c){e.onDiagnostic?.({code:"external_composition_load_failed",details:{hostCompositionId:u,runtimeCompositionId:a,hostCompositionSrc:o,errorMessage:c instanceof Error?c.message:"unknown_error"}}),Bi(r)}}))}function Rc(e){return e instanceof HTMLElement?e.dataset.captionWrapper!=="true"?e:e.querySelector(":scope > span")??null:null}function kc(){let e=[],t=document.querySelectorAll(".caption-group");for(let n of t)for(let i of n.children){if(!(i instanceof HTMLElement))continue;let r=i.dataset.captionWrapper==="true"?i.querySelector(":scope > span"):i.tagName==="SPAN"?i:null;r&&e.push(r)}return e}function Dc(e){let t=e.parentElement;if(t?.dataset.captionWrapper==="true")return t;let n=document.createElement("span");return n.style.display="inline-block",n.dataset.captionWrapper="true",e.parentNode?.insertBefore(n,e),n.appendChild(e),n}function Wi(){let e=window.gsap;e&&document.querySelectorAll(".caption-group").length!==0&&fetch("caption-overrides.json").then(t=>t.ok?t.json():null).then(t=>{if(!t||!Array.isArray(t)||t.length===0)return;let n=kc();for(let i of t){let r=null;if(i.wordId&&(r=Rc(document.getElementById(i.wordId))),!r&&i.wordIndex!==void 0&&(r=n[i.wordIndex]??null),!r)continue;let o={},s={};if(i.x!==void 0&&(o.x=i.x),i.y!==void 0&&(o.y=i.y),i.scale!==void 0&&(o.scale=i.scale),i.rotation!==void 0&&(o.rotation=i.rotation),i.opacity!==void 0&&(s.opacity=i.opacity),i.fontSize!==void 0&&(s.fontSize=`${i.fontSize}px`),i.fontWeight!==void 0&&(s.fontWeight=i.fontWeight),i.fontFamily!==void 0&&(s.fontFamily=i.fontFamily),i.activeColor||i.dimColor){let a=e.getTweensOf(r).filter(c=>c.vars.color!==void 0).sort((c,p)=>c.startTime()-p.startTime()),l=a.length>0?String(a[0].vars.color):"";for(let c of a)String(c.vars.color)===l?i.dimColor&&(c.vars.color=i.dimColor):i.activeColor&&(c.vars.color=i.activeColor);i.dimColor&&e.set(r,{color:i.dimColor})}if(Object.keys(s).length>0&&e.set(r,s),Object.keys(o).length>0){let u=Dc(r);e.set(u,o)}}}).catch(()=>{})}var Gs="data-hf-edit-base-x",Ws="data-hf-edit-base-y",Ui="data-hf-edit-original-translate",Mn=e=>{let t=parseFloat(e??"");return Number.isFinite(t)?t:0},Ic=e=>{let t=[],n=0,i="";for(let r of e.trim())r==="("&&(n+=1),r===")"&&(n=Math.max(0,n-1)),/\\s/.test(r)&&n===0?(i&&t.push(i),i=""):i+=r;return i&&t.push(i),t},Bs=/^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)px$/,Vi=(e,t)=>Bs.test(e)&&Bs.test(t)?`${parseFloat(e)+parseFloat(t)}px`:`calc(${e} + ${t})`,Pc=(e,t,n)=>{if(!e||e==="none")return`${t} ${n}`;let[i,r,o]=Ic(e);if(i===void 0)return`${t} ${n}`;if(r===void 0)return`${Vi(i,t)} ${n}`;let s=o===void 0?"":` ${o}`;return`${Vi(i,t)} ${Vi(r,n)}${s}`},Oc=e=>{try{e.ownerDocument.defaultView?.gsap?.getProperty?.(e,"x")}catch{}},Bc=e=>{let t=e.style.getPropertyValue("translate").trim();if(t)return t==="none"?"":t;try{let n=e.ownerDocument.defaultView,i=n?n.getComputedStyle(e).getPropertyValue("translate").trim():"";return i==="none"?"":i}catch{return""}},Hs=new WeakMap;function Hc(e,t){let n=Hs.get(e);if(!t?.force&&n!==void 0&&e.style.getPropertyValue("translate")!==n){ot("position_edit_fold_skipped",{hfId:e.getAttribute("data-hf-id")});return}let i=Mn(e.getAttribute("data-x"))-Mn(e.getAttribute(Gs)),r=Mn(e.getAttribute("data-y"))-Mn(e.getAttribute(Ws));e.hasAttribute(Ui)||e.setAttribute(Ui,Bc(e)),n===void 0&&Oc(e);let o=e.getAttribute(Ui)??"",s=Pc(o,`${i}px`,`${r}px`);e.style.setProperty("translate",s),Hs.set(e,e.style.getPropertyValue("translate"))}function zi(e){let t=e.querySelectorAll(`[${Gs}], [${Ws}]`),n=0;for(let i=0;i<t.length;i++){let r=t[i];r instanceof HTMLElement&&(Hc(r),n+=1)}return n}var Qt="data-color-grading",Us="__hf_color_grading_",Gc="rec709",vn={exposure:0,contrast:0,highlights:0,shadows:0,whites:0,blacks:0,temperature:0,tint:0,vibrance:0,saturation:0},Tn={vignette:0,vignetteMidpoint:.5,vignetteRoundness:0,vignetteFeather:.65,grain:0,grainSize:.25,grainRoughness:.5},Nn={blur:0,pixelate:0},Vs=Object.keys(vn),Wc=Object.keys(Tn),zs=Object.keys(Nn);function Ae(e,t,n={},i={}){return{id:e,label:t,adjust:{...vn,...n},details:{...Tn,...i},effects:{...Nn}}}var Uc=[Ae("neutral","Neutral"),Ae("natural-lift","Natural Lift",{exposure:.04,contrast:.06,highlights:-.06,shadows:.08,saturation:.05}),Ae("fresh-pop","Fresh Pop",{exposure:.08,contrast:.12,whites:.06,shadows:.04,temperature:-.02,vibrance:.08,saturation:.16}),Ae("warm-daylight","Warm Daylight",{exposure:.06,contrast:.07,highlights:-.06,shadows:.08,temperature:.18,saturation:.08}),Ae("clean-studio","Clean Studio",{contrast:.08,highlights:-.08,shadows:.06,temperature:-.08,tint:.03,saturation:.04}),Ae("skin-soft","Skin Soft",{exposure:.04,contrast:-.03,highlights:-.12,shadows:.12,temperature:.08,tint:.02,saturation:.04}),Ae("food-pop","Food Pop",{exposure:.06,contrast:.1,shadows:.06,temperature:.14,vibrance:.1,saturation:.18}),Ae("night-lift","Night Lift",{exposure:.08,contrast:.08,highlights:-.18,shadows:.2,blacks:-.08,saturation:.04},{vignette:.12}),Ae("muted-editorial","Muted Editorial",{exposure:-.02,contrast:.08,highlights:-.08,shadows:.06,blacks:-.05,temperature:-.03,saturation:-.12},{vignette:.1}),Ae("vintage-wash","Vintage Wash",{exposure:.03,contrast:-.12,highlights:-.1,shadows:.16,whites:-.04,blacks:.08,temperature:.13,vibrance:-.08,saturation:-.08},{vignette:.18}),Ae("mono-clean","Mono Clean",{contrast:.12,highlights:-.04,shadows:.04,blacks:-.08,saturation:-1}),Ae("mono-fade","Mono Fade",{contrast:-.04,highlights:-.06,shadows:.1,blacks:.12,saturation:-1},{vignette:.08}),Ae("warm-clean","Warm Clean",{exposure:.05,contrast:.08,highlights:-.08,shadows:.08,temperature:.16,vibrance:.04,saturation:.06}),Ae("cool-clean","Cool Clean",{contrast:.06,highlights:-.06,shadows:.06,temperature:-.12,tint:.04,saturation:.04}),Ae("soft-boost","Soft Boost",{exposure:.06,contrast:-.04,highlights:-.14,shadows:.16,vibrance:.08,saturation:.1}),Ae("bright-pop","Bright Pop",{exposure:.12,contrast:.12,whites:.08,blacks:-.04,vibrance:.08,saturation:.14}),Ae("deep-contrast","Deep Contrast",{exposure:-.03,contrast:.2,highlights:-.08,shadows:-.08,blacks:-.12,saturation:.06})],Vc=new Map(Uc.map(e=>[e.id,e])),zc=/^\\$(?:\\{([A-Za-z0-9_.:-]+)\\}|([A-Za-z0-9_.:-]+))$/,qc={exposure:{min:-2,max:2},contrast:{min:-1,max:1},highlights:{min:-1,max:1},shadows:{min:-1,max:1},whites:{min:-1,max:1},blacks:{min:-1,max:1},temperature:{min:-1,max:1},tint:{min:-1,max:1},vibrance:{min:-1,max:1},saturation:{min:-1,max:1}},jc={vignette:{min:0,max:1},vignetteMidpoint:{min:0,max:1},vignetteRoundness:{min:-1,max:1},vignetteFeather:{min:0,max:1},grain:{min:0,max:1},grainSize:{min:0,max:1},grainRoughness:{min:0,max:1}},$c={blur:{min:0,max:1},pixelate:{min:0,max:1}};function ut(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Kc(e,t,n){return Number.isFinite(e)?Math.min(n,Math.max(t,e)):0}function qs(e,t){let n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?Math.min(1,Math.max(0,n)):t}function qi(e,t){let n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?Kc(n,t.min,t.max):0}function Jc(e){if(e==null)return null;let t=String(e).trim();return t||null}function Xc(e){if(e==null)return null;if(typeof e=="string"){let n=e.trim();return n?{src:n,intensity:1}:null}if(!ut(e))return null;let t=e.src;return typeof t!="string"||t.trim()===""?null:{src:t.trim(),intensity:qs(e.intensity,1)}}function Yc(e){if(typeof e=="string"){let t=e.trim();if(!t)return null;if(t.startsWith("{"))try{let n=JSON.parse(t);return ut(n)?n:null}catch{return null}return{preset:t,intensity:1}}return ut(e)?e:null}function Qc(e,t){let n=e.trim().match(zc);if(!n)return e;let i=n[1]??n[2]??"";return i&&Object.hasOwn(t,i)?t[i]:e}function ji(e,t){if(typeof e=="string"){let i=Qc(e,t);if(i!==e)return i;let r=e.trim();if(!r.startsWith("{"))return e;try{return ji(JSON.parse(r),t)}catch{return e}}if(!ut(e))return e;let n={};for(let[i,r]of Object.entries(e))n[i]=ji(r,t);return n}function Zc(e){return e?Vc.get(e)??null:null}function $i(e){let t=Yc(e);if(!t||t.enabled===!1)return null;let n=Jc(t.preset),i=Zc(n),r=i?.adjust??vn,o=i?.details??Tn,s=i?.effects??Nn,u=ut(t.adjust)?t.adjust:{},a=ut(t.details)?t.details:{},l=ut(t.effects)?t.effects:{},c=Vs.reduce((x,E)=>(x[E]=qi(u[E]??r[E],qc[E]),x),{...vn}),p=Wc.reduce((x,E)=>(x[E]=qi(a[E]??o[E],jc[E]),x),{...Tn}),f=zs.reduce((x,E)=>(x[E]=qi(l[E]??s[E],$c[E]),x),{...Nn});return{enabled:!0,preset:n,intensity:qs(t.intensity,1),adjust:c,details:p,effects:f,lut:Xc(t.lut),colorSpace:typeof t.colorSpace=="string"&&t.colorSpace.trim()?t.colorSpace.trim():Gc}}function js(e,t){return $i(ji(e,t))}function Zt(e){return!e?.enabled||e.intensity===0?!1:e.lut&&e.lut.intensity!==0?!0:Vs.some(t=>Math.abs(e.adjust[t])>1e-4)||Math.abs(e.details.vignette)>1e-4||Math.abs(e.details.grain)>1e-4||zs.some(t=>Math.abs(e.effects[t])>1e-4)}var Se=class extends Error{constructor(n,i=null){super(i==null?n:`${n} at line ${i}`);xe(this,"lineNumber");this.name="CubeLutParseError",this.lineNumber=i}},ed=[0,0,0],td=[1,1,1],Ji=64;function nd(e){let t=!1;for(let n=0;n<e.length;n++){let i=e[n];if(i===\'"\'&&(t=!t),i==="#"&&!t)return e.slice(0,n)}return e}function Qe(e,t){let n=Number(e);if(!Number.isFinite(n))throw new Se(`Invalid number "${e}"`,t);return n}function $s(e,t,n){if(e.length!==3)throw new Se(`${t} expects three numbers`,n);return[Qe(e[0],n),Qe(e[1],n),Qe(e[2],n)]}function Ks(e,t,n){if(!e)throw new Se(`${t} expects a size`,n);let i=Number(e);if(!Number.isInteger(i)||i<2)throw new Se(`${t} must be an integer greater than 1`,n);return i}function id(e,t){if(t[0]<=e[0]||t[1]<=e[1]||t[2]<=e[2])throw new Se("DOMAIN_MAX values must be greater than DOMAIN_MIN values")}function rd(e){let t=/^TITLE\\s+"([^"]*)"\\s*$/i.exec(e);if(t)return t[1]??null;let n=/^TITLE\\s+(.+)\\s*$/i.exec(e);return n&&(n[1]??"").trim()||null}function od(e){return/^[+-]?(?:\\d|\\.\\d)/.test(e)}function Js(e,t={}){let n=t.maxSize??Ji,i=null,r=ed,o=td,s=null,u=null,a=[],l=e.replace(/^\\uFEFF/,"").split(/\\r?\\n/);for(let p=0;p<l.length;p++){let f=p+1,x=nd(l[p]??"").trim();if(!x)continue;let E=x.split(/\\s+/),b=(E[0]??"").toUpperCase(),g=E.slice(1);if(b==="TITLE"){i=rd(x);continue}if(b==="DOMAIN_MIN"){r=$s(g,b,f);continue}if(b==="DOMAIN_MAX"){o=$s(g,b,f);continue}if(b==="LUT_3D_INPUT_RANGE"){if(g.length!==2)throw new Se(`${b} expects two numbers`,f);let A=Qe(g[0],f),C=Qe(g[1],f);if(C<=A)throw new Se("LUT_3D_INPUT_RANGE max must exceed min",f);r=[A,A,A],o=[C,C,C];continue}if(b==="LUT_1D_SIZE"){s=Ks(g[0],b,f);continue}if(b==="LUT_3D_SIZE"){if(u=Ks(g[0],b,f),u>n)throw new Se(`LUT_3D_SIZE ${u} exceeds max ${n}`,f);continue}if(!od(b)){if(b.startsWith("LUT_"))throw new Se(`Unsupported cube keyword ${b}`,f);continue}if(!u)throw s?new Se("1D cube LUTs are not supported yet",f):new Se("LUT data appears before LUT_3D_SIZE",f);if(E.length!==3)throw new Se("LUT data rows must contain three numbers",f);a.push(Qe(E[0],f),Qe(E[1],f),Qe(E[2],f))}if(s&&u)throw new Se("Mixed 1D and 3D cube LUTs are not supported yet");if(!u)throw s?new Se("1D cube LUTs are not supported yet"):new Se("Missing LUT_3D_SIZE");id(r,o);let c=u*u*u;if(a.length!==c*3)throw new Se(`Expected ${c} LUT rows for size ${u}, found ${a.length/3}`);return{title:i,size:u,domainMin:r,domainMax:o,data:new Float32Array(a)}}function sd(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function Ki(e){return Math.round(sd(e)*255)}function Xs(e){let t=e.size,n=t*t,i=t,r=new Uint8Array(n*i*4);for(let o=0;o<t;o++)for(let s=0;s<t;s++)for(let u=0;u<t;u++){let a=((o*t+s)*t+u)*3,l=(s*n+o*t+u)*4;r[l]=Ki(e.data[a]??0),r[l+1]=Ki(e.data[a+1]??0),r[l+2]=Ki(e.data[a+2]??0),r[l+3]=255}return{width:n,height:i,data:r}}var qe=new Map,ad="data-hf-color-grading-canvas",ia="data-hf-color-grading-source-hidden",ld="__hf_color_grading_canvas__",ud=16,en={enabled:!1,position:.5,softness:0,lineWidth:2};function cd(e){let t=window,i=e.closest("[data-composition-id]")?.getAttribute("data-composition-id")?.trim()??"",r=i?t.__hfVariablesByComp?.[i]:void 0;if(r)return r;let o=t.__hyperframes?.getVariables?.();return o&&typeof o=="object"?o:t.__hfVariables??{}}function Xi(e){let t=e.getAttribute(Qt);return t==null?null:js(t,cd(e))}var dd=["attribute vec2 a_pos;","varying vec2 v_uv;","void main(){"," v_uv = a_pos * 0.5 + 0.5;"," gl_Position = vec4(a_pos, 0.0, 1.0);","}"].join(`\n`),fd=["#ifdef GL_FRAGMENT_PRECISION_HIGH","precision highp float;","#else","precision mediump float;","#endif","varying vec2 v_uv;","uniform sampler2D u_source;","uniform sampler2D u_blurSource;","uniform sampler2D u_lut;","uniform vec2 u_resolution;","uniform vec2 u_uvScale;","uniform vec2 u_uvOffset;","uniform float u_blurReady;","uniform float u_lutEnabled;","uniform float u_lutSize;","uniform vec2 u_lutTextureSize;","uniform vec3 u_lutDomainMin;","uniform vec3 u_lutDomainMax;","uniform float u_lutIntensity;","uniform float u_exposure;","uniform float u_contrast;","uniform float u_highlights;","uniform float u_shadows;","uniform float u_whites;","uniform float u_blacks;","uniform float u_temperature;","uniform float u_tint;","uniform float u_vibrance;","uniform float u_saturation;","uniform float u_vignette;","uniform float u_vignetteMidpoint;","uniform float u_vignetteRoundness;","uniform float u_vignetteFeather;","uniform float u_grain;","uniform float u_grainSize;","uniform float u_grainRoughness;","uniform float u_grainSeed;","uniform float u_blur;","uniform float u_pixelate;","uniform float u_intensity;","uniform float u_compareEnabled;","uniform float u_comparePosition;","uniform float u_compareSoftness;","uniform float u_compareLineWidth;","float lumaOf(vec3 c){ return dot(c, vec3(0.2126, 0.7152, 0.0722)); }","float grainHash(vec2 p){ return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123); }","float colorSaturation(vec3 c){ return max(max(c.r, c.g), c.b) - min(min(c.r, c.g), c.b); }","vec2 clampUv(vec2 uv){ return clamp(uv, vec2(0.0), vec2(1.0)); }","vec4 sampleSource(vec2 uv){ return texture2D(u_source, clampUv(uv)); }","vec4 sampleBlur(vec2 uv){ return texture2D(u_blurSource, clampUv(uv)); }","vec4 sampleMedia(vec2 uv){"," float pixel = clamp(u_pixelate, 0.0, 1.0);"," vec2 sampleUv = uv;"," if (pixel > 0.0) {"," float blockSize = mix(1.0, 48.0, pixel);"," vec2 cells = max(u_resolution / blockSize, vec2(1.0));"," sampleUv = (floor(clamp(uv, vec2(0.0), vec2(0.999999)) * cells) + 0.5) / cells;"," }"," vec4 base = sampleSource(sampleUv);"," float blur = clamp(u_blur, 0.0, 1.0);"," if (blur > 0.0 && u_blurReady > 0.5) {"," base = mix(base, sampleBlur(sampleUv), blur);"," }"," return base;","}","vec3 sampleLut(float r, float g, float b){"," float size = max(u_lutSize, 2.0);"," float x = (r + b * size + 0.5) / max(u_lutTextureSize.x, 1.0);"," float y = (g + 0.5) / max(u_lutTextureSize.y, 1.0);"," return texture2D(u_lut, vec2(x, y)).rgb;","}","vec3 applyLut(vec3 color){"," if (u_lutEnabled < 0.5) return color;"," float size = max(u_lutSize, 2.0);"," vec3 span = max(u_lutDomainMax - u_lutDomainMin, vec3(0.00001));"," vec3 scaled = clamp((color - u_lutDomainMin) / span, 0.0, 1.0) * (size - 1.0);"," vec3 lo = floor(scaled);"," vec3 hi = min(lo + 1.0, vec3(size - 1.0));"," vec3 f = scaled - lo;"," vec3 c000 = sampleLut(lo.r, lo.g, lo.b);"," vec3 c100 = sampleLut(hi.r, lo.g, lo.b);"," vec3 c010 = sampleLut(lo.r, hi.g, lo.b);"," vec3 c110 = sampleLut(hi.r, hi.g, lo.b);"," vec3 c001 = sampleLut(lo.r, lo.g, hi.b);"," vec3 c101 = sampleLut(hi.r, lo.g, hi.b);"," vec3 c011 = sampleLut(lo.r, hi.g, hi.b);"," vec3 c111 = sampleLut(hi.r, hi.g, hi.b);"," vec3 c00 = mix(c000, c100, f.r);"," vec3 c10 = mix(c010, c110, f.r);"," vec3 c01 = mix(c001, c101, f.r);"," vec3 c11 = mix(c011, c111, f.r);"," vec3 c0 = mix(c00, c10, f.g);"," vec3 c1 = mix(c01, c11, f.g);"," vec3 lutColor = mix(c0, c1, f.b);"," return mix(color, lutColor, clamp(u_lutIntensity, 0.0, 1.0));","}","void main(){"," vec2 uv = (v_uv - u_uvOffset) / u_uvScale;"," if (uv.x < 0.0 || uv.y < 0.0 || uv.x > 1.0 || uv.y > 1.0) {"," gl_FragColor = vec4(0.0);"," return;"," }"," vec4 originalSample = sampleSource(uv);"," vec4 sampleColor = sampleMedia(uv);"," vec3 original = originalSample.rgb;"," vec3 color = sampleColor.rgb * pow(2.0, u_exposure);"," float y = lumaOf(color);"," float shadowMask = 1.0 - smoothstep(0.0, 0.65, y);"," float highlightMask = smoothstep(0.35, 1.0, y);"," color += u_shadows * 0.35 * shadowMask;"," color += u_highlights * 0.35 * highlightMask;"," float blackPoint = clamp(u_blacks * 0.18, -0.18, 0.18);"," float whitePoint = clamp(1.0 - u_whites * 0.18, 0.82, 1.18);"," color = (color - blackPoint) / max(whitePoint - blackPoint, 0.2);"," color.r += u_temperature * 0.08 + u_tint * 0.04;"," color.b -= u_temperature * 0.08 - u_tint * 0.04;"," color.g -= u_tint * 0.08;"," color = (color - 0.5) * max(0.0, 1.0 + u_contrast) + 0.5;"," float satLuma = lumaOf(color);"," float currentSat = clamp(colorSaturation(color), 0.0, 1.0);"," float skinLike = smoothstep(0.02, 0.18, color.r - color.g) * smoothstep(0.0, 0.16, color.g - color.b) * smoothstep(0.18, 0.82, satLuma);"," float vibranceWeight = (1.0 - currentSat * 0.72) * mix(1.0, 0.55, skinLike);"," color = mix(vec3(satLuma), color, max(0.0, 1.0 + u_vibrance * vibranceWeight));"," color = mix(vec3(satLuma), color, max(0.0, 1.0 + u_saturation));"," color = clamp(color, 0.0, 1.0);"," color = clamp(applyLut(color), 0.0, 1.0);"," vec2 vignetteAspect = u_resolution.x > u_resolution.y"," ? vec2(u_resolution.x / max(u_resolution.y, 1.0), 1.0)"," : vec2(1.0, u_resolution.y / max(u_resolution.x, 1.0));"," vec2 vignetteUv = abs((v_uv - vec2(0.5)) * 2.0) * vignetteAspect;"," float vignettePower = mix(8.0, 1.8, clamp(u_vignetteRoundness * 0.5 + 0.5, 0.0, 1.0));"," float vignetteDistance = pow(pow(vignetteUv.x, vignettePower) + pow(vignetteUv.y, vignettePower), 1.0 / vignettePower);"," float vignetteMidpoint = mix(0.22, 1.08, clamp(u_vignetteMidpoint, 0.0, 1.0));"," float vignetteFeather = mix(0.08, 0.72, clamp(u_vignetteFeather, 0.0, 1.0));"," float vignetteMask = smoothstep(vignetteMidpoint, vignetteMidpoint + vignetteFeather, vignetteDistance);"," color *= 1.0 - vignetteMask * clamp(u_vignette, 0.0, 1.0) * 0.75;"," float grainAmount = clamp(u_grain, 0.0, 1.0);"," if (grainAmount > 0.0) {"," float grainPixelSize = mix(1.0, 6.0, clamp(u_grainSize, 0.0, 1.0));"," vec2 grainCoord = floor(gl_FragCoord.xy / grainPixelSize) + vec2(u_grainSeed, u_grainSeed * 1.37);"," float grainBase = grainHash(grainCoord) - grainHash(grainCoord + vec2(19.19, 73.31));"," float grainFine = grainHash(gl_FragCoord.xy + vec2(u_grainSeed * 2.11, u_grainSeed * 0.71)) - 0.5;"," float grain = mix(grainBase * 0.7, grainBase + grainFine * 0.35, clamp(u_grainRoughness, 0.0, 1.0));"," float grainLuma = lumaOf(color);"," float grainMask = smoothstep(0.02, 0.55, grainLuma) * (1.0 - smoothstep(0.88, 1.0, grainLuma));"," color += grain * grainAmount * mix(0.025, 0.08, grainMask);"," }"," color = clamp(color, 0.0, 1.0);"," vec3 graded = mix(original, color, u_intensity);"," if (u_compareEnabled > 0.5) {"," float pos = clamp(u_comparePosition, 0.0, 1.0);"," float softness = max(u_compareSoftness, 0.00001);"," float afterMask = smoothstep(pos - softness, pos + softness, v_uv.x);"," vec3 splitColor = mix(original, graded, afterMask);"," float lineMask = 0.0;"," if (u_compareLineWidth > 0.0) {"," float lineWidth = max(u_compareLineWidth / max(u_resolution.x, 1.0), 0.00001);"," lineMask = 1.0 - smoothstep(lineWidth, lineWidth * 1.8, abs(v_uv.x - pos));"," }"," gl_FragColor = vec4(mix(splitColor, vec3(1.0), lineMask * 0.82), sampleColor.a);"," return;"," }"," gl_FragColor = vec4(graded, sampleColor.a);","}"].join(`\n`),md=["#ifdef GL_FRAGMENT_PRECISION_HIGH","precision highp float;","#else","precision mediump float;","#endif","varying vec2 v_uv;","uniform sampler2D u_source;","uniform vec2 u_resolution;","uniform vec2 u_direction;","uniform float u_radius;","vec4 readSource(vec2 uv){"," vec4 color = texture2D(u_source, clamp(uv, vec2(0.0), vec2(1.0)));"," color.rgb *= color.a;"," return color;","}","void main(){"," vec2 stepUv = u_direction * max(u_radius, 0.0) / max(u_resolution, vec2(1.0)) / 12.0;"," vec4 color = readSource(v_uv) * 0.08077993;"," color += readSource(v_uv + stepUv * 1.0) * 0.07918038;"," color += readSource(v_uv - stepUv * 1.0) * 0.07918038;"," color += readSource(v_uv + stepUv * 2.0) * 0.07456928;"," color += readSource(v_uv - stepUv * 2.0) * 0.07456928;"," color += readSource(v_uv + stepUv * 3.0) * 0.06747307;"," color += readSource(v_uv - stepUv * 3.0) * 0.06747307;"," color += readSource(v_uv + stepUv * 4.0) * 0.05865827;"," color += readSource(v_uv - stepUv * 4.0) * 0.05865827;"," color += readSource(v_uv + stepUv * 5.0) * 0.04899551;"," color += readSource(v_uv - stepUv * 5.0) * 0.04899551;"," color += readSource(v_uv + stepUv * 6.0) * 0.03931982;"," color += readSource(v_uv - stepUv * 6.0) * 0.03931982;"," color += readSource(v_uv + stepUv * 7.0) * 0.03031761;"," color += readSource(v_uv - stepUv * 7.0) * 0.03031761;"," color += readSource(v_uv + stepUv * 8.0) * 0.02245983;"," color += readSource(v_uv - stepUv * 8.0) * 0.02245983;"," color += readSource(v_uv + stepUv * 9.0) * 0.01598624;"," color += readSource(v_uv - stepUv * 9.0) * 0.01598624;"," color += readSource(v_uv + stepUv * 10.0) * 0.01093238;"," color += readSource(v_uv - stepUv * 10.0) * 0.01093238;"," color += readSource(v_uv + stepUv * 11.0) * 0.00718308;"," color += readSource(v_uv - stepUv * 11.0) * 0.00718308;"," color += readSource(v_uv + stepUv * 12.0) * 0.00453456;"," color += readSource(v_uv - stepUv * 12.0) * 0.00453456;"," if (color.a > 0.0001) color.rgb /= color.a;"," gl_FragColor = color;","}"].join(`\n`);function ct(e){return e instanceof HTMLVideoElement||e instanceof HTMLImageElement}function Ys(e,t,n){let i=e.createShader(n);return i?(e.shaderSource(i,t),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(L("runtime.colorGrading.compileShader",e.getShaderInfoLog(i)),e.deleteShader(i),null)):null}function ra(e,t=fd){let n=Ys(e,dd,e.VERTEX_SHADER),i=Ys(e,t,e.FRAGMENT_SHADER);if(!n||!i)return n&&e.deleteShader(n),i&&e.deleteShader(i),null;let r=e.createProgram();return r?(e.attachShader(r,n),e.attachShader(r,i),e.linkProgram(r),e.deleteShader(n),e.deleteShader(i),e.getProgramParameter(r,e.LINK_STATUS)?r:(L("runtime.colorGrading.linkProgram",e.getProgramInfoLog(r)),e.deleteProgram(r),null)):null}function Qi(e,t=e.LINEAR){let n=e.createTexture();return n?(e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,t),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,null),n):null}function pd(e,t){let n=ra(e,md);return n?{program:n,quad:t,position:e.getAttribLocation(n,"a_pos"),source:e.getUniformLocation(n,"u_source"),resolution:e.getUniformLocation(n,"u_resolution"),direction:e.getUniformLocation(n,"u_direction"),radius:e.getUniformLocation(n,"u_radius")}:null}function Qs(e){let t=Qi(e),n=e.createFramebuffer();if(!t||!n)return t&&e.deleteTexture(t),n&&e.deleteFramebuffer(n),null;e.bindFramebuffer(e.FRAMEBUFFER,n),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER);return e.bindFramebuffer(e.FRAMEBUFFER,null),i!==e.FRAMEBUFFER_COMPLETE?(e.deleteTexture(t),e.deleteFramebuffer(n),null):{texture:t,framebuffer:n,width:1,height:1}}function Zs(e,t,n,i){t.width===n&&t.height===i||(t.width=n,t.height=i,e.bindTexture(e.TEXTURE_2D,t.texture),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n,i,0,e.RGBA,e.UNSIGNED_BYTE,null))}function oa(e){let t=e.getContext("webgl",{alpha:!0,premultipliedAlpha:!1,preserveDrawingBuffer:!0});if(!t)return null;let n=ra(t),i=Qi(t),r=Qi(t,t.NEAREST);if(!n||!i||!r)return n&&t.deleteProgram(n),i&&t.deleteTexture(i),r&&t.deleteTexture(r),null;let o=t.createBuffer();return o?(t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),t.STATIC_DRAW),{gl:t,program:{program:n,texture:i,lutTexture:r,quad:o,position:t.getAttribLocation(n,"a_pos"),source:t.getUniformLocation(n,"u_source"),blurSource:t.getUniformLocation(n,"u_blurSource"),lut:t.getUniformLocation(n,"u_lut"),resolution:t.getUniformLocation(n,"u_resolution"),uvScale:t.getUniformLocation(n,"u_uvScale"),uvOffset:t.getUniformLocation(n,"u_uvOffset"),blurReady:t.getUniformLocation(n,"u_blurReady"),lutEnabled:t.getUniformLocation(n,"u_lutEnabled"),lutSize:t.getUniformLocation(n,"u_lutSize"),lutTextureSize:t.getUniformLocation(n,"u_lutTextureSize"),lutDomainMin:t.getUniformLocation(n,"u_lutDomainMin"),lutDomainMax:t.getUniformLocation(n,"u_lutDomainMax"),lutIntensity:t.getUniformLocation(n,"u_lutIntensity"),exposure:t.getUniformLocation(n,"u_exposure"),contrast:t.getUniformLocation(n,"u_contrast"),highlights:t.getUniformLocation(n,"u_highlights"),shadows:t.getUniformLocation(n,"u_shadows"),whites:t.getUniformLocation(n,"u_whites"),blacks:t.getUniformLocation(n,"u_blacks"),temperature:t.getUniformLocation(n,"u_temperature"),tint:t.getUniformLocation(n,"u_tint"),vibrance:t.getUniformLocation(n,"u_vibrance"),saturation:t.getUniformLocation(n,"u_saturation"),vignette:t.getUniformLocation(n,"u_vignette"),vignetteMidpoint:t.getUniformLocation(n,"u_vignetteMidpoint"),vignetteRoundness:t.getUniformLocation(n,"u_vignetteRoundness"),vignetteFeather:t.getUniformLocation(n,"u_vignetteFeather"),grain:t.getUniformLocation(n,"u_grain"),grainSize:t.getUniformLocation(n,"u_grainSize"),grainRoughness:t.getUniformLocation(n,"u_grainRoughness"),grainSeed:t.getUniformLocation(n,"u_grainSeed"),blur:t.getUniformLocation(n,"u_blur"),pixelate:t.getUniformLocation(n,"u_pixelate"),intensity:t.getUniformLocation(n,"u_intensity"),compareEnabled:t.getUniformLocation(n,"u_compareEnabled"),comparePosition:t.getUniformLocation(n,"u_comparePosition"),compareSoftness:t.getUniformLocation(n,"u_compareSoftness"),compareLineWidth:t.getUniformLocation(n,"u_compareLineWidth")}}):(t.deleteProgram(n),t.deleteTexture(i),t.deleteTexture(r),null)}function hd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function gd(e){if(!hd(e))return{...en};let t=(n,i,r,o)=>{let s=typeof n=="number"?n:Number(n);return Math.min(o,Math.max(r,Number.isFinite(s)?s:i))};return{enabled:e.enabled===!0,position:t(e.position,en.position,0,1),softness:t(e.softness,en.softness,0,.25),lineWidth:t(e.lineWidth,en.lineWidth,0,12)}}function sa(e){try{let t=new URL(e,document.baseURI);return t.protocol==="data:"?{href:t.href}:t.protocol!=="http:"&&t.protocol!=="https:"?{error:"LUT must be project-local or a data URL"}:t.origin!==window.location.origin?{error:"Remote LUT URLs are not supported"}:{href:t.href}}catch{return{error:"Invalid LUT URL"}}}function er(e){return e instanceof Error?e.message:"LUT failed to load"}function xd(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0)%1e4}function bd(e){let t=e.id||e.currentSrc||e.getAttribute("src")||`${e.tagName}:${Array.prototype.indexOf.call(e.parentNode?.children??[],e)}`;return xd(t)}function yd(e){let t=sa(e);if("error"in t)return{state:"error",message:t.error};let n=qe.get(t.href);if(n)return n;let i=fetch(t.href,{credentials:"same-origin"}).then(o=>{if(!o.ok)throw new Error(`Failed to load LUT (${o.status})`);return o.text()}).then(o=>Js(o,{maxSize:Ji})),r={state:"pending",promise:i};for(;qe.size>=ud;){let o=qe.keys().next().value;if(!o)break;qe.delete(o)}return qe.set(t.href,r),i.then(o=>{qe.get(t.href)===r&&qe.set(t.href,{state:"ready",lut:o})},o=>{qe.get(t.href)===r&&qe.set(t.href,{state:"error",message:er(o)})}),r}function ea(e,t,n){if(e.lut?.src===t)return e.lut;let i=Xs(n),{gl:r,program:o}=e;try{return r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,o.lutTexture),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!1),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,i.width,i.height,0,r.RGBA,r.UNSIGNED_BYTE,i.data),e.lut={src:t,size:n.size,domainMin:n.domainMin,domainMax:n.domainMax,textureWidth:i.width,textureHeight:i.height},e.lutError=null,e.lutLoadingSrc=null,e.lut}catch(s){return e.lut=null,e.lutError=er(s),e.lutLoadingSrc=null,L("runtime.colorGrading.uploadLut",s),null}}function Ln(e,t){e.deleteTexture(t.texture),e.deleteFramebuffer(t.framebuffer)}function aa(e){let t=e.effectTargets;t&&(e.gl.deleteProgram(t.blurProgram.program),Ln(e.gl,t.scratch),Ln(e.gl,t.blur),e.effectTargets=null)}function la(e){aa(e),e.gl.deleteTexture(e.program.texture),e.gl.deleteTexture(e.program.lutTexture),e.gl.deleteBuffer(e.program.quad),e.gl.deleteProgram(e.program.program)}function Sd(e){let t=oa(e.canvas);return t?(la(e),e.gl=t.gl,e.program=t.program,e.lut=null,e.lutLoadingSrc=null,e.lutError=null,e.effectError=null,!0):!1}function Zi(e){if(!e.sourceHidden)return;e.element.removeAttribute(ia);let t=e.element.style.getPropertyValue("opacity"),n=e.element.style.getPropertyPriority("opacity");t==="0"&&n==="important"&&(e.sourceInlineOpacity===null?e.element.style.removeProperty("opacity"):e.element.style.setProperty("opacity",e.sourceInlineOpacity,e.sourceInlineOpacityPriority)),e.sourceHidden=!1}function Ed(e){if(e.effectTargets)return e.effectTargets;let{gl:t}=e,n=pd(t,e.program.quad),i=Qs(t),r=Qs(t);return!n||!i||!r?(n&&t.deleteProgram(n.program),i&&Ln(t,i),r&&Ln(t,r),e.effectError="Framebuffer effects unavailable",null):(e.effectError=null,e.effectTargets={blurProgram:n,scratch:i,blur:r},e.effectTargets)}function Ad(e,t,n,i,r){let o=Math.max(1,Math.ceil(i)),s=Math.max(1,Math.ceil(r));return Zs(e,t,o,s),Zs(e,n,o,s),{width:o,height:s}}function ta(e,t,n,i,r,o,s){e.bindFramebuffer(e.FRAMEBUFFER,i.framebuffer),e.viewport(0,0,r.width,r.height),e.useProgram(t.program),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,n),e.uniform1i(t.source,0),e.uniform2f(t.resolution,r.width,r.height),e.uniform2f(t.direction,o.x,o.y),e.uniform1f(t.radius,s),e.bindBuffer(e.ARRAY_BUFFER,t.quad),e.enableVertexAttribArray(t.position),e.vertexAttribPointer(t.position,2,e.FLOAT,!1,0,0),e.drawArrays(e.TRIANGLE_STRIP,0,4)}function wd(e,t,n,i,r,o,s){let u=n;for(let a=0;a<Math.max(1,Math.floor(s));a++)ta(e,t.blurProgram,u,t.scratch,r,{x:1,y:0},o),ta(e,t.blurProgram,t.scratch.texture,i,r,{x:0,y:1},o),u=i.texture}function Fd(e){let t=e.grading.lut?.src.trim()??"",n=e.grading.lut?.intensity??1;if(!t||n<=0)return e.lut=null,e.lutLoadingSrc=null,e.lutError=null,null;let i=sa(t);if("error"in i)return e.lut=null,e.lutLoadingSrc=null,e.lutError=i.error,null;if(e.lut?.src===i.href)return e.lut;e.lut=null;let r=yd(t);return r.state==="ready"?ea(e,i.href,r.lut):r.state==="error"?(e.lutError=r.message,e.lutLoadingSrc=null,null):(e.lutLoadingSrc!==i.href&&(e.lutLoadingSrc=i.href,e.lutError=null,r.promise.then(o=>{e.destroyed||e.grading.lut?.src.trim()!==t||(ea(e,i.href,o),We(e))},o=>{e.destroyed||e.grading.lut?.src.trim()!==t||(e.lut=null,e.lutError=er(o),e.lutLoadingSrc=null,We(e))})),null)}function Yi(e){if(!e)return null;if(typeof e=="string"){let t=e.trim();if(!t)return null;let n=document.getElementById(t.replace(/^#/,""));if(n&&ct(n))return n;try{let i=document.querySelector(t);return i&&ct(i)?i:null}catch{return null}}if(e.hfId){let t=document.querySelector(`[data-hf-id="${CSS.escape(e.hfId)}"]`);if(t&&ct(t))return t}if(e.id){let t=document.getElementById(e.id);if(t&&ct(t))return t}if(!e.selector)return null;try{let t=Array.from(document.querySelectorAll(e.selector)),n=Math.max(0,Math.floor(Number(e.selectorIndex??0)||0)),i=t[n]??null;return i&&ct(i)?i:null}catch{return null}}function Cd(e){return e instanceof HTMLVideoElement?e.videoWidth>0&&e.videoHeight>0?{width:e.videoWidth,height:e.videoHeight}:null:e instanceof HTMLImageElement&&e.naturalWidth>0&&e.naturalHeight>0?{width:e.naturalWidth,height:e.naturalHeight}:null}function ua(e){return e instanceof HTMLVideoElement?e.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA&&e.videoWidth>0&&e.videoHeight>0:e instanceof HTMLImageElement?e.complete&&e.naturalWidth>0&&e.naturalHeight>0:!1}function _d(e){if(!e.id)return null;let t=document.getElementById(`__render_frame_${e.id}__`);return t instanceof HTMLImageElement&&ua(t)?t:null}function Md(e){return e instanceof HTMLImageElement&&e.classList.contains("__render_frame__")}function vd(e,t){t.parentNode&&t.nextSibling!==e.canvas&&t.parentNode.insertBefore(e.canvas,t.nextSibling)}function Td(e){if(e instanceof HTMLVideoElement){let t=_d(e);if(t)return t}return ua(e)?e:null}function na(e,t){let n=e.toLowerCase();if(n==="center")return .5;if(t==="x"){if(n==="left")return 0;if(n==="right")return 1}else{if(n==="top")return 0;if(n==="bottom")return 1}if(n.endsWith("%")){let i=Number.parseFloat(n);return Number.isFinite(i)?i/100:null}return null}function Nd(e){let t=e.trim().split(/\\s+/).filter(Boolean),n=.5,i=.5;for(let r=0;r<t.length;r++){let o=t[r]??"",s=na(o,"x"),u=na(o,"y");if(s!==null&&(o==="left"||o==="right"||o.endsWith("%")&&r===0)){n=s;continue}if(u!==null&&(o==="top"||o==="bottom"||o.endsWith("%")&&r>0)){i=u;continue}}return{x:n,y:i}}function Ld(e,t,n,i,r,o){if(e<=0||t<=0||n<=0||i<=0)return{scaleX:1,scaleY:1,offsetX:0,offsetY:0};let s=r||"fill",u=e,a=t;if(s==="contain"||s==="cover"||s==="scale-down"){let f=s==="cover"?Math.max(e/n,t/i):Math.min(e/n,t/i);u=n*f,a=i*f,s==="scale-down"&&u>n&&a>i&&(u=n,a=i)}else s==="none"&&(u=n,a=i);let l=Nd(o||"center"),c=(e-u)*l.x/e,p=(t-a)*l.y/t;return{scaleX:u/e,scaleY:a/t,offsetX:c,offsetY:p}}function Rd(e,t){window.getComputedStyle(t).position==="static"&&(e.touchedParent||(e.touchedParent=t,e.parentInlinePosition=t.style.position||null),t.style.position="relative")}function kd(e,t){let{element:n,canvas:i}=e,r=n.parentElement;r&&Rd(e,r);let o=window.getComputedStyle(t);Vr(i.style,o),i.style.pointerEvents="none",i.style.position="absolute",i.style.inset="auto",i.style.left=`${n.offsetLeft}px`,i.style.top=`${n.offsetTop}px`,i.style.right="auto",i.style.bottom="auto",i.style.width=`${n.offsetWidth}px`,i.style.height=`${n.offsetHeight}px`,i.style.display="block",i.style.opacity=e.sourceOpacityForCanvas,i.style.visibility=e.sourceVisibleForCanvas?"visible":"hidden";let s=n.getBoundingClientRect(),u=Math.max(0,Math.round(n.offsetWidth||s.width)),a=Math.max(0,Math.round(n.offsetHeight||s.height));return u<=0||a<=0?(i.style.display="none",null):(i.width!==u&&(i.width=u),i.height!==a&&(i.height=a),{width:u,height:a})}function Dd(e,t,n,i,r,o,s,u,a){e.uniform1i(t.source,0),e.uniform1i(t.blurSource,1),e.uniform1i(t.lut,2),e.uniform2f(t.resolution,s.width,s.height),e.uniform2f(t.uvScale,u.scaleX,u.scaleY),e.uniform2f(t.uvOffset,u.offsetX,u.offsetY),e.uniform1f(t.blurReady,r?1:0),e.uniform1f(t.lutEnabled,i?1:0),e.uniform1f(t.lutSize,i?.size??2),e.uniform2f(t.lutTextureSize,i?.textureWidth??1,i?.textureHeight??1),e.uniform3f(t.lutDomainMin,i?.domainMin[0]??0,i?.domainMin[1]??0,i?.domainMin[2]??0),e.uniform3f(t.lutDomainMax,i?.domainMax[0]??1,i?.domainMax[1]??1,i?.domainMax[2]??1),e.uniform1f(t.lutIntensity,n.lut?.intensity??0),e.uniform1f(t.exposure,n.adjust.exposure),e.uniform1f(t.contrast,n.adjust.contrast),e.uniform1f(t.highlights,n.adjust.highlights),e.uniform1f(t.shadows,n.adjust.shadows),e.uniform1f(t.whites,n.adjust.whites),e.uniform1f(t.blacks,n.adjust.blacks),e.uniform1f(t.temperature,n.adjust.temperature),e.uniform1f(t.tint,n.adjust.tint),e.uniform1f(t.vibrance,n.adjust.vibrance),e.uniform1f(t.saturation,n.adjust.saturation),e.uniform1f(t.vignette,n.details.vignette),e.uniform1f(t.vignetteMidpoint,n.details.vignetteMidpoint),e.uniform1f(t.vignetteRoundness,n.details.vignetteRoundness),e.uniform1f(t.vignetteFeather,n.details.vignetteFeather),e.uniform1f(t.grain,n.details.grain),e.uniform1f(t.grainSize,n.details.grainSize),e.uniform1f(t.grainRoughness,n.details.grainRoughness),e.uniform1f(t.grainSeed,a),e.uniform1f(t.blur,n.effects.blur),e.uniform1f(t.pixelate,n.effects.pixelate),e.uniform1f(t.intensity,n.intensity),e.uniform1f(t.compareEnabled,o.enabled?1:0),e.uniform1f(t.comparePosition,o.position),e.uniform1f(t.compareSoftness,o.softness),e.uniform1f(t.compareLineWidth,o.lineWidth)}function Id(e){e.sourceHidden||(e.sourceInlineOpacity=e.element.style.getPropertyValue("opacity")||null,e.sourceInlineOpacityPriority=e.element.style.getPropertyPriority("opacity")),e.element.setAttribute(ia,"true"),e.element.style.setProperty("opacity","0","important"),e.sourceHidden=!0}function We(e){if(e.destroyed||e.contextLost)return!1;let t=Td(e.element);if(!t)return e.hasDrawn||(e.canvas.style.display="none"),!1;let n=Cd(t);if(!n)return!1;let i=t instanceof HTMLElement?t:e.element,r=e.element.style.getPropertyValue("opacity"),o=e.element.style.getPropertyPriority("opacity"),s=e.sourceHidden&&r==="0"&&o==="important",u=e.element.style.getPropertyValue("visibility"),a=Md(t);if(a&&vd(e,t),a||!s){let E=window.getComputedStyle(a?t:e.element);e.sourceOpacityForCanvas=E.opacity||"1",e.sourceVisibleForCanvas=(a||u!=="hidden")&&E.visibility!=="hidden"}let l=kd(e,i);if(!l)return!1;let c=window.getComputedStyle(i),p=Ld(l.width,l.height,n.width,n.height,c.objectFit,c.objectPosition),{gl:f,program:x}=e;try{let E=Fd(e);f.activeTexture(f.TEXTURE0),f.bindTexture(f.TEXTURE_2D,x.texture),f.pixelStorei(f.UNPACK_FLIP_Y_WEBGL,!0),f.texImage2D(f.TEXTURE_2D,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,t);let b=!1,g=Math.min(1,Math.max(0,e.grading.effects.blur));if(g>0){let C=Ed(e);if(C){let N=Ad(f,C.scratch,C.blur,l.width,l.height);wd(f,C,x.texture,C.blur,N,.75+Math.pow(g,1.35)*32,g>.55?3:2),b=!0}}else e.effectError=null,e.effectTargets&&aa(e);f.bindFramebuffer(f.FRAMEBUFFER,null),f.viewport(0,0,l.width,l.height),f.useProgram(x.program),f.activeTexture(f.TEXTURE0),f.bindTexture(f.TEXTURE_2D,x.texture),f.activeTexture(f.TEXTURE1),f.bindTexture(f.TEXTURE_2D,e.effectTargets?.blur.texture??x.texture),f.activeTexture(f.TEXTURE2),f.bindTexture(f.TEXTURE_2D,x.lutTexture);let A=e.grainSeed+(e.element instanceof HTMLVideoElement?Math.floor(e.element.currentTime*60):0);return Dd(f,x,e.grading,E,b,e.compare,l,p,A),f.bindBuffer(f.ARRAY_BUFFER,x.quad),f.enableVertexAttribArray(x.position),f.vertexAttribPointer(x.position,2,f.FLOAT,!1,0,0),f.drawArrays(f.TRIANGLE_STRIP,0,4),Id(e),e.hasDrawn=!0,e.drawError=null,!0}catch(E){return e.drawError=E instanceof Error?E.message:"Shader draw failed",L("runtime.colorGrading.drawEntry",E),!1}}function Ge(e,t,n,i){t.addEventListener(n,i),e.cleanup.push(()=>t.removeEventListener(n,i))}function Pd(e){e.animationFrame!==null&&(window.cancelAnimationFrame(e.animationFrame),e.animationFrame=null),e.videoFrameHandle!==null&&e.element instanceof HTMLVideoElement&&(e.element.cancelVideoFrameCallback?.(e.videoFrameHandle),e.videoFrameHandle=null)}function tn(e){if(e.destroyed||!(e.element instanceof HTMLVideoElement)||e.videoFrameHandle!==null||e.animationFrame!==null)return;let t=e.element,n=t;if(typeof n.requestVideoFrameCallback=="function"){e.videoFrameHandle=n.requestVideoFrameCallback(()=>{e.videoFrameHandle=null,We(e),!e.destroyed&&!t.paused&&!t.ended&&tn(e)});return}e.animationFrame=window.requestAnimationFrame(()=>{e.animationFrame=null,We(e),!e.destroyed&&!t.paused&&!t.ended&&tn(e)})}function Od(e){let t=()=>{We(e)};Ge(e,e.element,"load",t),Ge(e,e.element,"loadedmetadata",t),Ge(e,e.element,"loadeddata",t),Ge(e,e.element,"seeked",t),Ge(e,e.element,"timeupdate",t),Ge(e,window,"resize",t),e.element instanceof HTMLVideoElement&&(Ge(e,e.element,"play",()=>tn(e)),Ge(e,e.element,"pause",t)),Ge(e,e.canvas,"webglcontextlost",n=>{n.preventDefault(),e.contextLost=!0,e.drawError="WebGL context lost",e.canvas.style.display="none",Zi(e)}),Ge(e,e.canvas,"webglcontextrestored",()=>{if(e.contextLost=!1,!Sd(e)){e.contextLost=!0,e.drawError="WebGL context restore failed",Zi(e);return}e.drawError=null,We(e)}),typeof ResizeObserver<"u"&&(e.resizeObserver=new ResizeObserver(t),e.resizeObserver.observe(e.element))}function Bd(e){if(!e.destroyed){e.destroyed=!0,Pd(e),e.resizeObserver?.disconnect();for(let t of e.cleanup)t();e.cleanup.length=0,e.canvas.remove(),la(e),Zi(e),e.touchedParent&&(e.parentInlinePosition===null?e.touchedParent.style.removeProperty("position"):e.touchedParent.style.position=e.parentInlinePosition)}}function Hd(e){let t=document.createElement("canvas");return e.id&&(t.id=`${Us}${e.id}`),t.className=ld,t.setAttribute(ad,"true"),t.setAttribute("data-hyperframes-ignore",""),t.setAttribute("data-hyperframes-picker-ignore",""),t.setAttribute("data-hf-ignore",""),t.setAttribute("aria-hidden","true"),t.style.pointerEvents="none",t.style.display="none",e.parentNode?.insertBefore(t,e.nextSibling),t}function ca(){let e=new WeakMap,t=new Set,n=null,i=!1,r=(b,g,A)=>{let C=e.get(b);if(C)return C.grading=g,C.source=A,We(C),b instanceof HTMLVideoElement&&!b.paused&&tn(C),!0;let N=Hd(b),$=oa(N);if(!$)return N.remove(),!1;let B={element:b,canvas:N,gl:$.gl,program:$.program,grading:g,compare:{...en},lut:null,lutLoadingSrc:null,lutError:null,drawError:null,effectTargets:null,effectError:null,source:A,animationFrame:null,videoFrameHandle:null,resizeObserver:null,cleanup:[],touchedParent:null,parentInlinePosition:null,sourceHidden:!1,sourceInlineOpacity:null,sourceInlineOpacityPriority:"",sourceOpacityForCanvas:window.getComputedStyle(b).opacity||"1",sourceVisibleForCanvas:window.getComputedStyle(b).visibility!=="hidden",hasDrawn:!1,contextLost:!1,grainSeed:bd(b),destroyed:!1};return e.set(b,B),t.add(b),Od(B),We(B),b instanceof HTMLVideoElement&&!b.paused&&tn(B),!0},o=(b,g)=>{if(i)return!1;let A=Yi(b);if(!A)return!1;let C=e.get(A);if(!C){let N=Xi(A);if(!Zt(N)||!r(A,N,"attribute"))return!1;C=e.get(A)}return C?(C.compare=gd(g),We(C),!0):!1},s=b=>{let g=e.get(b);g&&(Bd(g),e.delete(b),t.delete(b))},u=()=>{if(i)return 0;let b=new Set;document.querySelectorAll(`video[${Qt}], img[${Qt}]`).forEach(A=>{if(!ct(A))return;b.add(A);let C=Xi(A);Zt(C)?r(A,C,"attribute"):s(A)});for(let A of Array.from(t)){let C=e.get(A);C&&(!A.isConnected||C.source==="attribute"&&!b.has(A))&&s(A)}return t.size},a=()=>{if(i)return 0;let b=0;for(let g of Array.from(t,A=>e.get(A)))g&&We(g)&&(b+=1);return b},l=(b,g)=>{if(i)return!1;let A=Yi(b);if(!A)return!1;let C=$i(g);return Zt(C)?r(A,C,"live"):(s(A),!0)},c=(b,g)=>{if(!ct(b))return!1;let A=e.get(b);return A?(A.sourceVisibleForCanvas=g,!0):!1},p=b=>{let g=Yi(b);if(!g)return{state:"missing",message:"Media not found"};let A=e.get(g);if(A)return A.effectError?{state:"unavailable",message:A.effectError}:A.drawError?{state:"unavailable",message:A.drawError}:A.lutError?{state:"unavailable",message:`LUT error: ${A.lutError}`}:A.grading.lut&&A.lutLoadingSrc?{state:"pending",message:"Loading LUT"}:A.canvas.style.display==="none"?{state:"pending",message:"Waiting for media frame"}:{state:"active",message:A.lut?"Shader + LUT active":"Shader active"};let C=Xi(g);return Zt(C)?{state:"unavailable",message:"WebGL unavailable"}:{state:"inactive",message:"No grading applied"}},f=()=>{if(!i){i=!0,n?.disconnect(),n=null;for(let b of Array.from(t))s(b)}};document.body&&(n=new MutationObserver(()=>u()),n.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[Qt]}));let x={refresh:u,redraw:a,setGrading:l,setCompare:o,setSourceVisibility:c,getStatus:p,destroy:f},E=window;return E.__hf=E.__hf||{},E.__hf.colorGrading=x,u(),x}var Rn=class{constructor(t){xe(this,"_baseTime",0);xe(this,"_playStartMs",null);xe(this,"_rate",1);xe(this,"_duration",1/0);xe(this,"_nowMs");xe(this,"_audioSource",null);this._baseTime=t?.initialTime??0,this._rate=t?.rate??1,this._duration=t?.duration??1/0,this._nowMs=t?.nowMs??(()=>performance.now())}now(){if(this._playStartMs===null)return this._baseTime;if(this._audioSource){let i=null;if("currentTimeSeconds"in this._audioSource)i=this._audioSource.currentTimeSeconds;else{let{el:r,compositionStart:o,mediaStart:s}=this._audioSource;!r.paused&&Number.isFinite(r.currentTime)&&(i=(r.currentTime-s)/(r.playbackRate>0?r.playbackRate:1)*this._rate+o)}if(i!==null)return Number.isFinite(this._duration)&&i>=this._duration?this._duration:Math.max(0,i)}let t=(this._nowMs()-this._playStartMs)/1e3,n=this._baseTime+t*this._rate;return Number.isFinite(this._duration)&&n>=this._duration?this._duration:Math.max(0,n)}play(){return this._playStartMs!==null||Number.isFinite(this._duration)&&this._baseTime>=this._duration?!1:(this._playStartMs=this._nowMs(),!0)}pause(){return this._playStartMs===null?!1:(this._baseTime=this.now(),this._playStartMs=null,!0)}seek(t){let n=Number.isFinite(this._duration)?Math.max(0,Math.min(t,this._duration)):Math.max(0,t);this._baseTime=n,this._playStartMs!==null&&(this._playStartMs=this._nowMs())}isPlaying(){return this._playStartMs!==null}setRate(t){let n=Number.isFinite(t)&&t>0?Math.max(.1,Math.min(5,t)):1;this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._rate=n}getRate(){return this._rate}setDuration(t){this._duration=Number.isFinite(t)&&t>0?t:1/0,this._baseTime>this._duration&&(this._baseTime=this._duration)}getDuration(){return this._duration}attachAudioSource(t){this._audioSource=t}detachAudioSource(){this._audioSource&&this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._audioSource=null}hasAudioSource(){return this._audioSource!==null}getSource(){if(this._audioSource&&this._playStartMs!==null){if("currentTimeSeconds"in this._audioSource)return"audio";let{el:t}=this._audioSource;if(!t.paused&&Number.isFinite(t.currentTime))return"audio"}return"monotonic"}snapshot(){return{time:this.now(),playing:this.isPlaying(),rate:this._rate,duration:this._duration,source:this.getSource()}}reachedEnd(){return Number.isFinite(this._duration)&&this.now()>=this._duration}};function da(e){return!Number.isFinite(e)||e<=0?1:e}function Gd(e,t){t||e.paused||!un().__hfDebug||console.debug("[hyperframes] webAudioTransport claimed fallback-playing element:",e.currentSrc||e.getAttribute("src")||"")}function Wd(e,t){let{elapsed:n,mediaStart:i,scheduledAt:r,safeRate:o,clipDuration:s}=t,u=Number.isFinite(s)&&s>0,a=s*o;if(n>=0){let c=a-n;return u&&c<=0?!1:(u?e.start(0,n+i,c):e.start(0,n+i),!0)}let l=-n/o;return u?e.start(r+l,i,a):e.start(r+l,i),!0}var kn=class{constructor(){xe(this,"_ctx",null);xe(this,"_bufferCache",new Map);xe(this,"_failedSrcs",new Set);xe(this,"_activeSources",[]);xe(this,"_masterGain",null);xe(this,"_rateAnchorCtx",0);xe(this,"_rateAnchorComp",0);xe(this,"_rate",1);xe(this,"_paused",!0);xe(this,"_playGeneration",0)}async init(){try{return this._ctx=new AudioContext,this._masterGain=this._ctx.createGain(),this._masterGain.connect(this._ctx.destination),!0}catch{return!1}}get context(){return this._ctx}getTime(){return!this._ctx||this._paused?-1:this._rateAnchorComp+(this._ctx.currentTime-this._rateAnchorCtx)*this._rate}async decodeAudioElement(t){let n=t.currentSrc||t.getAttribute("src");if(!n)return null;if(this._bufferCache.has(n))return this._bufferCache.get(n);if(this._failedSrcs.has(n)||!this._ctx)return null;let i;try{let r=await fetch(n,{cache:"no-store"});if(!r.ok)return L("webAudioTransport.fetch",new Error(`${r.status} ${n}`)),null;i=await r.arrayBuffer()}catch(r){return L("webAudioTransport.fetch",r),null}try{let r=await this._ctx.decodeAudioData(i);return this._bufferCache.set(n,r),r}catch(r){return this._failedSrcs.add(n),L("webAudioTransport.decode",r),null}}startGeneration(){return this._playGeneration+=1,this._playGeneration}currentGeneration(){return this._playGeneration}async schedulePlayback(t,n,i,r,o,s,u,a=1,l=Number.POSITIVE_INFINITY){if(!this._ctx||!this._masterGain||u!==this._playGeneration)return null;try{if(this._ctx.state==="suspended"&&await this._ctx.resume(),u!==this._playGeneration)return null;let c=da(a),p=this._ctx.createBufferSource();p.buffer=n,p.playbackRate.value=c;let f=this._ctx.createGain();f.gain.value=s,p.connect(f),f.connect(this._masterGain);let x=o-i,E=this._ctx.currentTime;if(this._rate=c,this._rateAnchorCtx=E,this._rateAnchorComp=o,!Wd(p,{elapsed:x,mediaStart:r,scheduledAt:E,safeRate:c,clipDuration:l}))return p.disconnect(),f.disconnect(),null;let b=t.muted;t.muted=!0,Gd(t,b);let g={el:t,sourceNode:p,gainNode:f,compositionStart:i,mediaStart:r,scheduledAt:E,priorMuted:b,bounded:Number.isFinite(l)&&l>0};return this._activeSources.push(g),this._paused=!1,p.addEventListener("ended",()=>{let A=this._activeSources.indexOf(g);A!==-1&&(this._activeSources.splice(A,1),t.muted=b,this._activeSources.length===0&&(this._paused=!0))}),g}catch(c){return L("webAudioTransport.schedule",c),null}}setRate(t){let n=da(t);if(n===this._rate)return!1;this._ctx&&!this._paused&&(this._rateAnchorComp=this.getTime(),this._rateAnchorCtx=this._ctx.currentTime),this._rate=n;for(let i of this._activeSources)try{i.sourceNode.playbackRate.value=n}catch(r){L("webAudioTransport.setRate",r)}return!0}hasBoundedActiveSources(){return this._activeSources.some(t=>t.bounded)}stopAll(){for(let t of this._activeSources){try{t.sourceNode.stop(),t.sourceNode.disconnect(),t.gainNode.disconnect()}catch{}t.el.muted=t.priorMuted}this._activeSources=[],this._paused=!0}setVolume(t){this._masterGain&&(this._masterGain.gain.value=Math.max(0,Math.min(1,t)))}setElementVolume(t,n){let i=Math.max(0,Math.min(1,n));for(let r of this._activeSources)if(r.el===t)try{r.gainNode.gain.value=i}catch(o){L("webAudioTransport.setElementVolume",o)}}setMuted(t){this._masterGain&&(this._masterGain.gain.value=t?0:1)}isActive(){return this._activeSources.length>0&&!this._paused}ownsElement(t){return!this._paused&&this._activeSources.some(n=>n.el===t)}destroy(){if(this.stopAll(),this._bufferCache.clear(),this._failedSrcs.clear(),this._ctx)try{this._ctx.close()}catch{}this._ctx=null,this._masterGain=null}};var fa="data-hf-studio-manual-edit-gesture";var tr="data-hf-authored-duration",nr="data-hf-authored-end";function Ud(){let e=window.__HF_EXPORT_RENDER_SEEK_CONFIG,t=e?.fps,n=e?.fpsSource,i=Number(t);return!e||t==null?{fps:null,source:"default",rawFpsSource:n,rawFps:t,fallbackReason:"missing"}:!Number.isFinite(i)||i<=0?{fps:null,source:"default",rawFpsSource:n,rawFps:t,fallbackReason:"invalid"}:{fps:i,source:n==="render-options"||n==="default"?n:"unknown",rawFpsSource:n,rawFps:t,fallbackReason:e.fpsFallbackReason}}function ma(){let e=jr();zi(document);let t=Ud();e.canonicalFps=t.fps??e.canonicalFps,window.__HF_EXPORT_RENDER_SEEK_CONFIG&&console.info("[hyperframes] render runtime fps",{canonicalFps:e.canonicalFps,source:t.source,rawFpsSource:t.rawFpsSource,rawFps:t.rawFps,fallbackReason:t.fallbackReason});let n=null,i=null,r=null,o=[],s=new Set,u=null;if(typeof window.__hfRuntimeTeardown=="function")try{window.__hfRuntimeTeardown()}catch(d){L("runtime.init.site1",d)}(()=>{let d=window.gsap,m=window;if(!(!d?.registerPlugin||m.__hfAutoNoopRegistered))try{d.registerPlugin({name:"_auto",init:()=>!1}),m.__hfAutoNoopRegistered=!0}catch{}})(),document.documentElement&&(document.documentElement.style.margin="0",document.documentElement.style.padding="0",document.documentElement.style.overflow="hidden"),document.body&&(document.body.style.margin="0",document.body.style.padding="0",document.body.style.overflow="hidden"),window.__timelines=window.__timelines||{};let l=()=>{let d=document.querySelector(\'[data-composition-id][data-root="true"]\');if(d instanceof HTMLElement)return d;let m=Array.from(document.querySelectorAll("[data-composition-id]"));return m.find(h=>!h.parentElement?.closest("[data-composition-id]"))??m[0]??null};if(Array.isArray(window.__timelines)){let d=window.__timelines,m=l()?.getAttribute("data-composition-id")??"root",h={};if(d.length===1)h[m]=d[0];else for(let y=0;y<d.length;y++)h[`tl-${y}`]=d[y];window.__timelines=h}let c=l();c&&!c.hasAttribute("data-start")&&c.setAttribute("data-start","0");let p=d=>{o.push(d)},f=(d,m,h)=>{let y=h??`${d}:${JSON.stringify(m)}`;s.has(y)||(s.add(y),Fe({source:"hf-preview",type:"diagnostic",code:d,details:m}))},x=d=>{let m={scale:1,focusX:960,focusY:540},h=[],y=[],w={time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying(),renderMode:!1,timelineDirty:!1};return{play:d.play,pause:d.pause,seek:d.seek,getTime:d.getTime,getDuration:d.getDuration,isPlaying:d.isPlaying,getMainTimeline:()=>null,getElementBounds:()=>{},getElementsAtPoint:()=>{},setElementPosition:()=>{},previewElementPosition:()=>{},setElementKeyframes:()=>{},setElementScale:()=>{},setElementFontSize:()=>{},setElementTextContent:()=>{},setElementTextColor:()=>{},setElementTextShadow:()=>{},setElementTextFontWeight:()=>{},setElementTextFontFamily:()=>{},setElementTextOutline:()=>{},setElementTextHighlight:()=>{},setElementVolume:()=>{},setStageZoom:()=>{},getStageZoom:()=>m,setStageZoomKeyframes:()=>{},getStageZoomKeyframes:()=>h,addElement:()=>!1,removeElement:()=>!1,updateElementTiming:()=>!1,setElementTiming:()=>{},updateElementSrc:()=>!1,updateElementLayer:()=>!1,updateElementBasePosition:()=>!1,markTimelineDirty:()=>{},isTimelineDirty:()=>!1,rebuildTimeline:()=>{},ensureTimeline:()=>{},enableRenderMode:()=>{},disableRenderMode:()=>{},renderSeek:d.renderSeek,getElementVisibility:()=>({visible:!1}),getVisibleElements:()=>y,getRenderState:()=>({...w,time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying()})}},E=1/60,b=.75,g=2,A=.05,C=100,N=240,$=d=>{if(d instanceof Error)return d.message||String(d);if(typeof d=="string")return d;try{return JSON.stringify(d)}catch{return String(d??"")}},B=d=>{let m=d.toLowerCase();return m.includes("cannot read properties of null")||m.includes("cannot set properties of null")?{code:"runtime_null_dom_access",category:"dom-null-access"}:m.includes("failed to execute \'queryselector\'")?{code:"runtime_invalid_selector",category:"selector-invalid"}:m.includes("is not defined")?{code:"runtime_reference_missing",category:"reference-missing"}:{code:"runtime_script_error",category:"script-error"}},v=d=>{if(d==null||d.trim()==="")return null;let m=Number.parseFloat(d);return!Number.isFinite(m)||m<=0?null:`${m}px`},S=()=>l(),F=()=>{let d=S();if(!d)return;let m=v(d.getAttribute("data-width")),h=v(d.getAttribute("data-height"));m&&(d.style.width=m),h&&(d.style.height=h),m&&d.style.setProperty("--comp-width",m),h&&d.style.setProperty("--comp-height",h)},_=()=>{let d=S(),m=Array.from(document.querySelectorAll("[data-composition-id]")).filter(h=>h.hasAttribute("data-duration")||h.hasAttribute("data-end"));for(let h of m){if(d&&h===d)continue;let y=h.getAttribute("data-duration"),w=h.getAttribute("data-end");y!=null&&!h.hasAttribute(tr)&&h.setAttribute(tr,y),w!=null&&!h.hasAttribute(nr)&&h.setAttribute(nr,w),h.removeAttribute("data-duration"),h.removeAttribute("data-end")}},T=()=>{let d=S();if(!d)return;d.style.position||(d.style.position="relative"),d.style.overflow="hidden";let m=v(d.getAttribute("data-width")),h=v(d.getAttribute("data-height"));m&&(d.style.width=m),h&&(d.style.height=h);let y=Array.from(d.children);for(let w of y){let M=w.tagName.toLowerCase();if(M==="script"||M==="style"||M==="link"||M==="meta"||!w.hasAttribute("data-start")||w.hasAttribute("data-hf-autostamped"))continue;let k=(w.style.top==="0px"||w.style.top==="0")&&(w.style.left==="0px"||w.style.left==="0")&&w.style.width==="100%"&&w.style.height==="100%",J=/translate\\(\\s*-50%\\s*,\\s*-50%\\s*\\)/.test(w.style.transform);if(k&&J&&!w.hasAttribute("data-width")&&!w.hasAttribute("data-height")){let be=w.style.top,rt=w.style.left,we=w.style.width,_t=w.style.height;w.style.top="",w.style.left="",w.style.width="",w.style.height="";let ne=window.getComputedStyle(w);ne.top!=="auto"||ne.bottom!=="auto"||ne.left!=="auto"||ne.right!=="auto"||ne.width!=="0px"||ne.height!=="0px"||(w.style.top=be,w.style.left=rt,w.style.width=we,w.style.height=_t)}let K=window.getComputedStyle(w),me=K.position;if(me!=="absolute"&&me!=="fixed"&&(w.style.position="absolute"),!!w.style.top||!!w.style.bottom||K.top!=="auto"||K.bottom!=="auto"||(w.style.top="0"),!!w.style.left||!!w.style.right||K.left!=="auto"||K.right!=="auto"||(w.style.left="0"),M!=="audio"){let be=v(w.getAttribute("data-width")),rt=v(w.getAttribute("data-height")),we=K.width!=="0px"&&K.width!=="auto",_t=K.height!=="0px"&&K.height!=="auto";be?!w.style.width&&!we&&(w.style.width=be):!w.style.width&&K.width==="0px"&&(w.style.width="100%"),rt?!w.style.height&&!_t&&(w.style.height=rt):!w.style.height&&K.height==="0px"&&(w.style.height="100%")}}},R=(d,m=0,h)=>$e({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:h?.includeAuthoredTimingAttrs??!0}).resolveStartForElement(d,m),W=(d,m)=>$e({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:m?.includeAuthoredTimingAttrs??!0}).resolveDurationForElement(d),q=(d,m=0)=>!d.hasAttribute("data-hf-auto-start")&&d.hasAttribute("data-start")?Math.max(0,Number(d.getAttribute("data-start")??0)||0)+m:R(d,m),ie=(d,m)=>{let h=d.tagName.toLowerCase();if(h==="script"||h==="style"||h==="link"||h==="meta")return!1;let y=h==="video"||h==="audio"?q(d,0):R(d,0),w=W(d),M=d.getAttribute("data-composition-id");if(M){let J=(window.__timelines??{})[M],K=null;if(J&&typeof J.duration=="function"){let ye=Number(J.duration());Number.isFinite(ye)&&ye>0&&(K=ye)}!(d.hasAttribute("data-duration")||d.hasAttribute("data-end")||d.hasAttribute(tr)||d.hasAttribute(nr))&&(w==null||w<=0)&&K!=null&&(w=K)}let k=w!=null&&w>0?y+w:Number.POSITIVE_INFINITY;return m>=y&&(Number.isFinite(k)?m<=k:!0)},P=!!document.querySelector("[data-composition-src]"),se=!1;{let d=document.querySelectorAll("[data-composition-id]:not([data-composition-src])");for(let m of d){let h=m.getAttribute("data-composition-id");if(h&&m.children.length===0&&document.querySelector(`template#${CSS.escape(h)}-template`)){se=!0;break}}}let Ee=!P&&!se,H=d=>{if(!d||typeof d.duration!="function")return null;try{let m=Number(d.duration());return Number.isFinite(m)?Math.max(0,m):null}catch{return null}},U=d=>typeof d=="number"&&Number.isFinite(d)&&d>E,V=d=>{let m=Number(d.getAttribute("data-duration"));if(Number.isFinite(m)&&m>0)return m;let h=Number(d.getAttribute("data-playback-start")??d.getAttribute("data-media-start")??"0"),y=Number.isFinite(h)?Math.max(0,h):0;return Number.isFinite(d.duration)&&d.duration>y?Math.max(0,d.duration-y):null},re=()=>{let d=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(d.length===0)return null;let m=0;for(let h of d){let y=q(h,0);if(!Number.isFinite(y))continue;let w=V(h);w==null||w<=E||(m=Math.max(m,Math.max(0,y)+w))}return m>E?m:null},_e=()=>{let d=S();if(!d)return null;let m=window.__timelines??{},h=$e({timelineRegistry:m,includeAuthoredTimingAttrs:!0}),y=0,w=Number.parseFloat(d.getAttribute("data-duration")??"");Number.isFinite(w)&&w>0&&(y=w);let M=Array.from(d.querySelectorAll("[data-composition-id][data-start]"));for(let k of M){if(!(k instanceof Element)||k.parentElement?.closest("[data-composition-id]")!==d)continue;let K=h.resolveStartForElement(k,0),me=h.resolveDurationForElement(k);!Number.isFinite(K)||me==null||me<=0||(y=Math.max(y,Math.max(0,K)+me))}return y>E?y:null},O=()=>{let d=re();return typeof d!="number"||!Number.isFinite(d)||d<=E?null:d},D=d=>U(d)?Math.max(E,d*b):E,G=()=>{let d=0;for(let m of e.deterministicAdapters){let h=m.getInferredDurationSeconds;if(typeof h!="function")continue;let y=null;try{y=h()}catch(w){L("runtime.init.adapterDuration",w)}typeof y=="number"&&Number.isFinite(y)&&y>0&&(d=Math.max(d,y))}return d>E?d:null},Q=(d,m=0)=>{let h=H(d),y=O(),w=_e(),M=G(),k=Math.max(y??0,w??0,M??0),J=Number.isFinite(m)&&m>E?m:0,K=0;return U(h)?K=Math.max(h,k,J):U(k)?K=Math.max(k,J):K=J,K>0?Math.max(0,K):0},ae=()=>{let d=window.__timelines??{},m=ne=>{let ee=Object.entries(d).filter(ge=>!!ge[1]&&typeof ge[1].play=="function"&&typeof ge[1].pause=="function");if(ee.length!==1)return{timeline:null};let[fe,pe]=ee[0];return{timeline:pe,selectedTimelineIds:[fe],selectedDurationSeconds:H(pe),diagnostics:{code:"root_timeline_sole_registered_fallback",details:{reason:ne,soleTimelineId:fe}}}},h=$e({timelineRegistry:d,includeAuthoredTimingAttrs:!0}),y=O(),w=_e(),M=Math.max(y??0,w??0)||null,k=D(M),J=ne=>{let ee=document.querySelector(`[data-composition-id="${CSS.escape(ne)}"]`);return ee?h.resolveStartForElement(ee,0):0},K=ne=>{let ee=window.gsap;if(!ee||typeof ee.timeline!="function")return null;let fe=ee.timeline({paused:!0});for(let pe of ne)fe.add(pe.timeline,J(pe.compositionId));return fe},me=(ne,ee)=>{if(!U(ne))return null;let fe=window.gsap;if(!fe||typeof fe.timeline!="function")return null;let pe=fe.timeline({paused:!0});if(ee)try{pe.add(ee,0)}catch(ue){L("runtime.init.site2",ue)}let ge=pe;if(typeof ge.to=="function")try{ge.to({},{duration:ne})}catch(ue){L("runtime.init.site3",ue)}return pe},ye=(ne,ee)=>{let fe=ne;if(typeof fe.getChildren!="function")return[];try{let pe=fe.getChildren(!0,!0,!0)??[];if(!Array.isArray(pe))return[];let ge=[];for(let ue of ee)if(!pe.some(Re=>Re===ue.timeline))try{let Re=J(ue.compositionId);ne.add(ue.timeline,Re),ge.push(ue.compositionId)}catch(Re){L("runtime.init.site4",Re)}return ge}catch{return[]}},oe=S(),Z=oe?.getAttribute("data-composition-id")??null;if(!Z)return m("root_missing_composition_id");let be=d[Z]??null,we=(()=>{if(!oe)return[];let ne=new Set,ee=Array.from(oe.querySelectorAll("[data-composition-id]")),fe=[];for(let pe of ee){let ge=pe.getAttribute("data-composition-id");if(!ge||ge===Z||ne.has(ge))continue;ne.add(ge);let ue=d[ge]??null;if(!ue||typeof ue.play!="function"||typeof ue.pause!="function")continue;let ve=H(ue);fe.push({compositionId:ge,timeline:ue,durationSeconds:ve??0})}return fe})(),_t=ne=>{for(let ee of ne){let fe=ee.timeline;if(typeof fe.paused=="function")try{fe.paused(!1)}catch(pe){L("runtime.init.site5",pe)}}};if(we.length>0&&_t(we),be){let ne=we.length>0?ye(be,we):[];if((we.length>0||!document.querySelector("[data-composition-id]:not([data-composition-id=\'"+Z+"\'])"))&&(j=!0),ne.length>0)try{let ue=be.time();be.seek(ue,!1)}catch{}let ee=H(be);if(!U(ee)&&we.length>0){let ue=we.map(Ya=>Ya.compositionId),ve=K(we),Re=H(ve);if(ve&&U(Re))return{timeline:ve,selectedTimelineIds:ue,selectedDurationSeconds:Re,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_unusable_fallback",details:{rootCompositionId:Z,rootDurationSeconds:ee,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:k,selectedDurationSeconds:Re,mediaDurationFloorSeconds:y,authoredCompositionDurationFloorSeconds:w,selectedTimelineIds:ue,autoNestedChildren:ne}}};let $n=me(M??0,be),Kn=H($n);if($n&&U(Kn))return{timeline:$n,selectedTimelineIds:[Z],selectedDurationSeconds:Kn,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:Z,rootDurationSeconds:ee,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:y,authoredCompositionDurationFloorSeconds:w,selectedDurationSeconds:Kn,selectedTimelineIds:[Z],autoNestedChildren:ne}}}}if(!U(ee)&&we.length===0){let ue=me(M??0,be),ve=H(ue);if(ue&&U(ve))return{timeline:ue,selectedTimelineIds:[Z],selectedDurationSeconds:ve,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:Z,rootDurationSeconds:ee,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:y,authoredCompositionDurationFloorSeconds:w,selectedDurationSeconds:ve,selectedTimelineIds:[Z]}}}}let fe=oe?.getAttribute("data-duration"),pe=fe?parseFloat(fe):null,ge=Math.max(U(pe)?pe:0,w??0);if(ge>0&&U(ge)&&U(ee)&&ge>=ee+.5){let ue=be;if(typeof ue.to=="function")try{ue.to({},{duration:0},ge)}catch(Re){L("runtime.init.site6",Re)}let ve=H(be);if(U(ve))return{timeline:be,selectedTimelineIds:[Z],selectedDurationSeconds:ve,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_padded_to_declared_duration",details:{rootCompositionId:Z,rootDurationSeconds:ee,rootDeclaredDur:pe,authoredCompositionDurationFloorSeconds:w,newDur:ve}}}}return{timeline:be,selectedTimelineIds:[Z],selectedDurationSeconds:ee,mediaDurationFloorSeconds:y,diagnostics:ne.length>0?{code:"root_timeline_auto_nested_children",details:{rootCompositionId:Z,selectedDurationSeconds:ee,autoNestedChildren:ne}}:void 0}}if(we.length>0){let ne=we.map(pe=>pe.compositionId),ee=K(we),fe=H(ee);if(ee)return{timeline:ee,selectedTimelineIds:ne,selectedDurationSeconds:fe,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_missing_fallback",details:{rootCompositionId:Z,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:k,selectedDurationSeconds:fe,mediaDurationFloorSeconds:y,selectedTimelineIds:ne}}}}return m("root_composition_id_unmatched_in_registry")},j=!1,z=()=>{if(!Ee)return!1;let d=e.capturedTimeline,m=H(d),h=U(m);if(d&&h&&j)return!1;let y=ae();if(!y.timeline)return!1;if(d&&d===y.timeline)return typeof d.timeScale=="function"&&d.timeScale(e.playbackRate),!1;e.capturedTimeline=y.timeline,typeof e.capturedTimeline.timeScale=="function"&&e.capturedTimeline.timeScale(e.playbackRate);let w=Q(e.capturedTimeline,0);if(w<=0&&typeof e.capturedTimeline.progress=="function"&&(e.capturedTimeline.progress(1,!0),e.capturedTimeline.progress(0,!1),e.capturedTimeline.pause()),w>0){try{I.setDuration(w)}catch{}if(typeof e.capturedTimeline.totalTime=="function"){typeof e.capturedTimeline.progress=="function"&&e.capturedTimeline.progress(1e-4,!0);let k=Math.max(0,e.currentTime||0);e.capturedTimeline.totalTime(k,!1),e.capturedTimeline.pause()}let M=window.__hfStudioManualEditsApply;typeof M=="function"&&M(),zi(document)}if(y.diagnostics&&Fe({source:"hf-preview",type:"diagnostic",code:y.diagnostics.code,details:y.diagnostics.details}),Fe({source:"hf-preview",type:"diagnostic",code:"timeline_bound",details:{selectedTimelineIds:y.selectedTimelineIds??[],selectedDurationSeconds:y.selectedDurationSeconds??null,mediaDurationFloorSeconds:y.mediaDurationFloorSeconds??null}}),window.parent!==window){let M=S(),k=w>0?w:0,J=String(k>0?k:1),K=new Set,me=new Set(document.querySelectorAll("[data-start]")),ye=oe=>{let Z=oe.parentElement;for(;Z&&Z!==M;){if(me.has(Z))return!0;Z=Z.parentElement}return!1};if(e.capturedTimeline.getChildren)try{for(let oe of e.capturedTimeline.getChildren(!0))if(typeof oe.targets=="function")for(let Z of oe.targets())Z instanceof HTMLElement&&Z!==M&&(Z.hasAttribute("data-start")||ye(Z)||K.has(Z)||(K.add(Z),Z.setAttribute("data-start","0"),Z.setAttribute("data-duration",J),Z.setAttribute("data-hf-autostamped","1")))}catch{}if(M instanceof HTMLElement)for(let oe of M.querySelectorAll("[id]"))oe instanceof HTMLElement&&oe!==M&&(oe.hasAttribute("data-start")||ye(oe)||K.has(oe)||oe.tagName==="SCRIPT"||oe.tagName==="STYLE"||oe.tagName==="LINK"||(K.add(oe),oe.setAttribute("data-start","0"),oe.setAttribute("data-duration",J),oe.setAttribute("data-hf-autostamped","1")))}for(let M of wt)on.delete(M),fr(M);return!0};window.__hfForceTimelineRebind=()=>{j=!1,z()};let Y=()=>{let d=S();if(!(d instanceof HTMLElement))return;let m=d.getBoundingClientRect(),h=Number(d.getAttribute("data-width")),y=Number(d.getAttribute("data-height")),w=window.getComputedStyle(d),M=Number.isFinite(h)&&h>0&&Number.isFinite(y)&&y>0,k=m.width<=0||m.height<=0||d.clientWidth<=0||d.clientHeight<=0;!M||!k||f("root_stage_layout_zero",{compositionId:d.getAttribute("data-composition-id")??null,declaredWidth:h,declaredHeight:y,rectWidth:Math.round(m.width),rectHeight:Math.round(m.height),clientWidth:d.clientWidth,clientHeight:d.clientHeight,display:w.display,visibility:w.visibility,overflow:w.overflow},`root-stage-layout-zero:${d.getAttribute("data-composition-id")??"unknown"}`)},Pe=()=>{e.tornDown||(u!=null&&window.cancelAnimationFrame(u),u=window.requestAnimationFrame(()=>{u=null,Y()}))},Me=()=>{i=d=>{let m=$(d.error??d.message).slice(0,N);if(!m)return;let h=B(m);Fe({source:"hf-preview",type:"diagnostic",code:h.code,details:{category:h.category,message:m,filename:d.filename||null,line:Number.isFinite(d.lineno)?d.lineno:null,column:Number.isFinite(d.colno)?d.colno:null}})},r=d=>{let m=$(d.reason).slice(0,N);if(!m)return;let h=B(m);Fe({source:"hf-preview",type:"diagnostic",code:`${h.code}_unhandled_rejection`,details:{category:`${h.category}-unhandled-rejection`,message:m}})},window.addEventListener("error",i),window.addEventListener("unhandledrejection",r)},At=()=>{let d=Array.from(document.querySelectorAll("img, video, audio, source, link[rel=\'stylesheet\']"));for(let h of d){let y=()=>{if(!(h instanceof Element))return;let w=h.tagName.toLowerCase(),M=h.getAttribute("src")??h.getAttribute("href")??h.getAttribute("poster")??null,k=w==="link"?"runtime_stylesheet_load_failed":"runtime_asset_load_failed";f(k,{tagName:w,assetUrl:M,currentSrc:(h instanceof HTMLImageElement||h instanceof HTMLMediaElement)&&h.currentSrc||null,readyState:h instanceof HTMLMediaElement?h.readyState:null,networkState:h instanceof HTMLMediaElement?h.networkState:null},`${k}:${w}:${M??"unknown"}`)};h.addEventListener("error",y),p(()=>{h.removeEventListener("error",y)})}let m=document.fonts;m&&m.ready.then(()=>{if(e.tornDown)return;let h=Array.from(m).filter(y=>y.status==="error").map(y=>y.family).filter(y=>!!y).slice(0,10);h.length!==0&&f("runtime_font_load_issue",{failedFamilies:h,totalFaces:Array.from(m).length},`runtime-font-load-issue:${h.join("|")}`)}).catch(()=>{})},Ue=(d,m)=>{if(!d.timeline)return!1;let h=e.capturedTimeline;if(h&&h===d.timeline)return!1;let y=Math.max(0,e.currentTime||0),w=e.isPlaying;e.capturedTimeline=d.timeline,typeof e.capturedTimeline.timeScale=="function"&&e.capturedTimeline.timeScale(e.playbackRate);try{e.capturedTimeline.pause(),e.capturedTimeline.seek(y,!1),w&&e.capturedTimeline.play()}catch(M){L("runtime.init.site7",M)}return Fe({source:"hf-preview",type:"diagnostic",code:"timeline_loop_guard_rebind",details:{reason:m,previousTime:y,selectedTimelineIds:d.selectedTimelineIds??[],selectedDurationSeconds:d.selectedDurationSeconds??null,mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),!0},tt=null,dr=!1,wt=new Set,on=new WeakMap,sn=()=>{e.tornDown||(tt!=null&&window.clearTimeout(tt),tt=window.setTimeout(()=>{if(e.tornDown)return;tt=null;let d=ae();if(!d.timeline||!U(d.mediaDurationFloorSeconds??null))return;if(!e.capturedTimeline){z()&&(dt(),Te(!0));return}if(dr)return;let h=H(e.capturedTimeline),y=d.selectedDurationSeconds??H(d.timeline);U(y)&&(!U(h)||y>=h+A)&&Ue(d,"manual")&&(dr=!0,Fe({source:"hf-preview",type:"diagnostic",code:"timeline_rebind_after_media_metadata",details:{previousDurationSeconds:h??null,selectedDurationSeconds:y??null,selectedTimelineIds:d.selectedTimelineIds??[],mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),dt(),Te(!0))},C))},Ga=()=>{for(let d of wt)d.removeEventListener("loadedmetadata",sn),d.removeEventListener("durationchange",sn);wt.clear()},Hn=()=>{if(e.tornDown)return;let d=Array.from(document.querySelectorAll("video, audio"));for(let m of d){if(wt.has(m))continue;wt.add(m);let h=Number.parseFloat(m.dataset.volume??"");Number.isFinite(h)&&(m.volume=Math.max(0,Math.min(1,h))),m.addEventListener("loadedmetadata",sn),m.addEventListener("durationchange",sn),m.preload!=="auto"&&(m.preload="auto"),m.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&m.load(),fr(m)}},fr=d=>{on.has(d)||Hr(d,e.capturedTimeline,Q(e.capturedTimeline,0),on)},Gn=new WeakMap,mr=d=>{let m=Gn.get(d);if(m!==void 0)return m;let h=window.getComputedStyle(d).position,y=h==="static"||h==="relative"||h==="sticky";return Gn.set(d,y),y},Wn=new WeakMap,Wa=d=>{let m=Wn.get(d);if(m!==void 0)return m;let h=d.querySelector("[data-start]")===null;return Wn.set(d,h),h},Ua=()=>{Gn=new WeakMap,Wn=new WeakMap},Le=()=>{let d=M=>{let k=M.closest("[data-composition-id]"),J=k?R(k,0):null,K=k?W(k,{includeAuthoredTimingAttrs:!0}):null;return{compositionRoot:k,inheritedStart:J,inheritedDuration:K}},m=Gr({shouldIncludeElement:M=>M.hasAttribute("data-start")||!!d(M).compositionRoot,resolveStartSeconds:M=>{let k=d(M);return q(M,k.inheritedStart??0)},resolveDurationSeconds:M=>{let k=d(M),J=q(M,k.inheritedStart??0),K=Number.parseFloat(M.dataset.playbackStart??M.dataset.mediaStart??"0")||0,me=k.inheritedStart!=null&&k.inheritedDuration!=null&&k.inheritedDuration>0?Math.max(0,k.inheritedStart+k.inheritedDuration-J):null,ye=Number.isFinite(M.duration)&&M.duration>K?Math.max(0,M.duration-K):null,oe=Number.parseFloat(M.dataset.duration??""),Z=Number.isFinite(oe)&&oe>0?oe:null,be=[ye,me,Z].filter(rt=>rt!=null);return be.length>0?Math.min(...be):null}});for(let M of m.mediaClips){let k=on.get(M.el);k&&(M.volumeKeyframes=k)}let h=e.mediaForceSyncNextTick;h&&(e.mediaForceSyncNextTick=!1),e.nativeMediaSyncDisabled||Wr({clips:m.mediaClips,timeSeconds:e.currentTime,playing:e.isPlaying,playbackRate:e.playbackRate,outputMuted:e.mediaOutputMuted||!e.webAudioMediaDisabled&&!e.nativeMediaSyncDisabled&&de.isActive(),userMuted:e.bridgeMuted,userVolume:e.bridgeVolume,forceSync:h,onElementVolume:(M,k)=>de.setElementVolume(M,k),isWebAudioOwned:M=>de.ownsElement(M),onAutoplayBlocked:()=>{e.mediaAutoplayBlockedPosted||(e.mediaAutoplayBlockedPosted=!0,Fe({source:"hf-preview",type:"media-autoplay-blocked"}))}});let y=Array.from(document.querySelectorAll("[data-start]")),w=S();for(let M of y){if(!(M instanceof HTMLElement))continue;let k=ie(M,e.currentTime);if(k){let J=M.parentElement;for(;J&&J!==w;){if(J instanceof HTMLElement&&J.hasAttribute("data-start")&&!ie(J,e.currentTime)){k=!1;break}J=J.parentElement}}M.style.visibility=k?"visible":"hidden",(M instanceof HTMLVideoElement||M instanceof HTMLImageElement)&&n?.setSourceVisibility(M,k),k?mr(M)&&M.style.removeProperty("display"):mr(M)&&Wa(M)&&(M.style.display="none")}},Te=d=>{let m=Math.max(0,Math.round((e.currentTime||0)*e.canonicalFps)),h=Date.now();(d||m!==e.bridgeLastPostedFrame||e.isPlaying!==e.bridgeLastPostedPlaying||e.bridgeMuted!==e.bridgeLastPostedMuted||h-e.bridgeLastPostedAt>=e.bridgeMaxPostIntervalMs)&&(e.bridgeLastPostedFrame=m,e.bridgeLastPostedPlaying=e.isPlaying,e.bridgeLastPostedMuted=e.bridgeMuted,e.bridgeLastPostedAt=h,Fe({source:"hf-preview",type:"state",frame:m,isPlaying:e.isPlaying,muted:e.bridgeMuted,playbackRate:e.playbackRate}))},Un="",Va=()=>{let d="";for(let m of document.querySelectorAll("[data-start]"))d+=`${m.id}:${m.tagName}|`;return d},dt=()=>{_(),F(),T();let d=S();if(d){let y=v(d.getAttribute("data-width")),w=v(d.getAttribute("data-height")),M=y?parseInt(y,10):0,k=w?parseInt(w,10):0;M>0&&k>0&&Fe({source:"hf-preview",type:"stage-size",width:M,height:k})}z();let m=Yr({canonicalFps:e.canonicalFps});window.__clipManifest=m;let h=Va();if(Un!==h&&Ua(),!window.__clipTree||Un!==h){let y=window;window.__clipTree=$r({startResolver:$e({timelineRegistry:y.__timelines??{},includeAuthoredTimingAttrs:!0}),timelineRegistry:y.__timelines??{},rootDuration:m.durationInFrames/e.canonicalFps}),Un=h}Fe(m),Pe()},Oe=(d,m=0)=>{for(let h of e.deterministicAdapters){try{d==="discover"&&h.discover(),d==="pause"&&h.pause(),d==="play"&&h.play&&h.play()}catch(y){L("runtime.init.site8",y)}if(d==="discover")try{h.seek({time:m})}catch(y){L("runtime.init.site9",y)}}},nt=()=>{window.__renderReady=!1},Ft=null,Ct=!0,za=()=>{let d=[];for(let m of e.deterministicAdapters){let h=m.getReadyPromise;if(typeof h=="function")try{let y=h();y&&d.push(y)}catch(y){L("runtime.init.adapterReady",y)}}return d},qa=()=>{let d=za();if(d.length===0)return Ft=null,Ct=!0,!0;let m=d.length===1?d[0]:Promise.all(d);return m!==Ft&&(Ft=m,Ct=!1,Promise.resolve(m).then(()=>{Ft===m&&(Ct=!0,nt())},h=>{Ft===m&&(Ct=!0,L("runtime.init.adapterReady",h),nt())})),Ct};if(Ee)Wi();else{let d={injectedStyles:e.injectedCompStyles,injectedScripts:e.injectedCompScripts,parseDimensionPx:v,onDiagnostic:({code:m,details:h})=>{Fe({source:"hf-preview",type:"diagnostic",code:m,details:h})}};Os(d).then(()=>Ps(d)).finally(()=>{Ee=!0,Hn(),At(),Wi(),nt()})}let an=Ur({postMessage:d=>Fe(d)});an.installPickerApi();let Ve=ca();n=Ve,p(()=>{Ve.destroy(),n=null});let Vn=d=>{let m=Number(d);!Number.isFinite(m)||m<=0?e.playbackRate=1:e.playbackRate=Math.max(.1,Math.min(5,m)),e.mediaForceSyncNextTick=!0,e.capturedTimeline&&typeof e.capturedTimeline.timeScale=="function"&&e.capturedTimeline.timeScale(e.playbackRate);let h=document.querySelectorAll("video, audio");for(let y of h)if(y instanceof HTMLMediaElement)try{y.playbackRate=e.playbackRate}catch(w){L("runtime.init.site10",w)}},he=qr({getTimeline:()=>e.capturedTimeline,setTimeline:d=>{e.capturedTimeline=d},getTimelineRegistry:()=>window.__timelines??{},getIsPlaying:()=>e.isPlaying,setIsPlaying:d=>{e.isPlaying!==d&&(e.mediaForceSyncNextTick=!0),e.isPlaying=d},getPlaybackRate:()=>e.playbackRate,setPlaybackRate:Vn,getCanonicalFps:()=>e.canonicalFps,onSyncMedia:(d,m)=>{e.currentTime=Math.max(0,Number(d)||0),e.isPlaying!==m&&(e.mediaForceSyncNextTick=!0),e.isPlaying=m,Le()},onStatePost:Te,onDeterministicSeek:d=>{for(let m of e.deterministicAdapters)try{m.seek({time:Number(d)||0})}catch(h){L("runtime.init.site11",h)}},onDeterministicPause:()=>Oe("pause"),onDeterministicPlay:()=>Oe("play"),onRenderFrameSeek:()=>{Ve.redraw()},onShowNativeVideos:()=>{},getSafeDuration:()=>Q(e.capturedTimeline,0)});window.__player=x(he),window.__playerReady=!0,Sr(Fe),ot("composition_loaded",{duration:he.getDuration(),compositionId:document.querySelector("[data-composition-id]")?.getAttribute("data-composition-id")??null}),e.controlBridgeHandler=yr({onPlay:()=>{he.play(),ot("composition_played",{time:he.getTime()})},onPause:()=>{he.pause(),ot("composition_paused",{time:he.getTime()})},onStopMedia:()=>{de.stopAll();let d=document.querySelectorAll("video, audio");for(let m of d)m instanceof HTMLMediaElement&&!m.paused&&m.pause()},onSeek:(d,m)=>{let h=Math.max(0,d)/e.canonicalFps;he.seek(h),ot("composition_seeked",{time:h})},onSetMuted:d=>{e.bridgeMuted=d;let m=d||e.mediaOutputMuted;de.setMuted(m);let h=document.querySelectorAll("video, audio");for(let y of h)y instanceof HTMLMediaElement&&(y.muted=m||y.defaultMuted)},onSetVolume:d=>{e.bridgeVolume=d,de.setVolume(d);let m=document.querySelectorAll("video, audio");for(let h of m){if(!(h instanceof HTMLMediaElement))continue;let y=parseFloat(h.dataset.volume??""),w=Number.isFinite(y)?y:1;h.volume=w*d}},onSetMediaOutputMuted:d=>{e.mediaOutputMuted=d;let m=d||e.bridgeMuted;de.setMuted(m);let h=document.querySelectorAll("video, audio");for(let y of h)y instanceof HTMLMediaElement&&(y.muted=m||y.defaultMuted)},onSetNativeMediaSyncDisabled:d=>{e.nativeMediaSyncDisabled!==d&&(e.nativeMediaSyncDisabled=d,e.mediaForceSyncNextTick=!0,d?(de.stopAll(),I.detachAudioSource()):Le())},onSetWebAudioMediaDisabled:d=>{e.webAudioMediaDisabled!==d&&(e.webAudioMediaDisabled=d,e.mediaForceSyncNextTick=!0,d&&(de.stopAll(),I.detachAudioSource()),Le())},onSetPlaybackRate:d=>{Vn(d),e.transportClock&&e.transportClock.setRate(e.playbackRate),xr()},onSetColorGrading:(d,m)=>{Ve.setGrading(d,m)},onSetColorGradingCompare:(d,m)=>{Ve.setCompare(d,m)},onTick:()=>{if(e.tornDown||!I.isPlaying())return;let d=I.now();if(e.currentTime=d,it(d),I.reachedEnd()){de.stopAll(),I.detachAudioSource(),I.pause(),e.isPlaying=!1;let m=I.getDuration();Number.isFinite(m)&&(I.seek(m),e.currentTime=m,it(m)),Oe("pause"),Le(),Te(!0)}},onEnablePickMode:()=>an.enablePickMode(),onDisablePickMode:()=>an.disablePickMode()}),e.deterministicAdapters=[Or(),Er({resolveStartSeconds:d=>R(d,0)}),wr(),Cr(),Mr(),vr(),Tr(),Nr(),Lr(),Rr(),kr(),Ar({getTimeline:()=>e.capturedTimeline})],Ir(),Pr(),window.__hfReseekGpu=d=>{let m=Math.max(0,Number(d)||0);window.__hfThreeTime=m,window.__hfTypegpuTime=m,_r(m)},Me(),Hn(),Oe("discover");let I=new Rn;e.transportClock=I;let de=new kn,zn=!1;de.init().then(d=>{zn=d});let ja=()=>{let d=e.capturedTimeline,m=z();e.capturedTimeline&&(m||e.capturedTimeline!==d||!he._timeline)&&(he._timeline=e.capturedTimeline);let h=Q(e.capturedTimeline,0);if(h>0&&I.setDuration(h),Oe("discover",e.currentTime),!e.capturedTimeline){let y=window.__timelines??{},w=Object.keys(y).filter(M=>y[M]);if(w.length>0){let k=S()?.getAttribute("data-composition-id")??null;f("root_timeline_unbound_registry_present",{reason:k?"root data-composition-id has no matching key in window.__timelines":"root composition element has no data-composition-id attribute",rootCompositionId:k,registeredTimelineKeys:w},"root_timeline_unbound_registry_present"),console.warn("[hyperframes] Root timeline not bound \\u2014 render will freeze at t=0. "+(k?`Root data-composition-id is "${k}" but window.__timelines has no such key. `:"Root composition element has no data-composition-id. ")+`Registered timeline keys: [${w.join(", ")}]. Register the root timeline under its data-composition-id (window.__timelines["${k??"<root-id>"}"] = tl).`)}}window.__renderReady=!0,dt(),Te(!0)};if(nt=()=>{if(!Ee||window.__hfTimelinesBuilding){window.__renderReady=!1;return}if(Oe("discover",e.currentTime),!qa()){window.__renderReady=!1;return}ja()},window.__hfTimelinesBuilding){window.__renderReady=!1;let d=()=>{window.removeEventListener("hf-timelines-built",d),nt()};window.addEventListener("hf-timelines-built",d)}nt(),Ee&&setTimeout(()=>{nt()},0);let ln=0,qn=!1,$a=(d,m,h)=>{try{d.pause(),typeof d.totalTime=="function"?d.totalTime(m,!1):d.seek(m,!1)}catch(y){L(h,y)}},Ka=d=>{let m=window.__timelines??{},h=S()?.getAttribute("data-composition-id")??null;for(let[y,w]of Object.entries(m)){if(!w||y===h)continue;let M=document.querySelector(`[data-composition-id="${CSS.escape(y)}"]`);if(!M)continue;let k=R(M,0);if(!Number.isFinite(k))continue;let J=W(M,{includeAuthoredTimingAttrs:!0}),K=H(w),me=J!=null&&J>0?J:K,ye=Math.max(0,me!=null&&me>0?Math.min(me,d-k):d-k);$a(w,ye,"runtime.init.transport.childTimeline")}},Ja=d=>{let m=window.__timelines??{};for(let h of Object.values(m))if(!(!h||h===d))try{h.play()}catch(y){L("runtime.init.activateSiblings",y)}},it=(d,m)=>{let h=e.capturedTimeline;if(h){m?.activateChildren&&Ja(h);let y=h,w=d;if(typeof y.totalDuration=="function")try{let M=Number(y.totalDuration());Number.isFinite(M)&&M>0&&d>M&&(w=M)}catch(M){L("runtime.init.transport.clampDuration",M)}try{typeof h.totalTime=="function"?h.totalTime(w,!1):h.seek(w,!1)}catch(M){L("runtime.init.transport.seek",M)}}else Ka(d);for(let y of e.deterministicAdapters)try{y.seek({time:d})}catch(w){L("runtime.init.transport.adapter",w)}},Xa=()=>{try{return document.querySelector(`[${fa}]`)!=null}catch{return!1}},pr=()=>{if(!(e.tornDown||qn)){qn=!0;try{if(e.transportRafId=window.requestAnimationFrame(pr),ln+=1,ln%60===0&&!(I.isPlaying()&&e.capturedTimeline!=null&&I.now()<g)){let h=e.capturedTimeline;if(z()){e.capturedTimeline&&!he._timeline&&(he._timeline=e.capturedTimeline),e.capturedTimeline&&e.capturedTimeline!==h&&e.capturedTimeline.pause();let y=Q(e.capturedTimeline,0);y>0&&I.setDuration(y),dt()}}if(ln%20===0&&dt(),ln%30===0&&Hn(),e.capturedTimeline){let m=Q(e.capturedTimeline,0);m>0&&(!I.isPlaying()||m>=I.getDuration())&&I.setDuration(m)}if(I.isPlaying()&&!e.mediaOutputMuted)if(!e.nativeMediaSyncDisabled&&!e.webAudioMediaDisabled&&de.isActive()&&de.context){let m=de.getTime();m>=0&&I.attachAudioSource({currentTimeSeconds:m})}else{let m=document.querySelectorAll("audio[data-start]"),h=!1;for(let y of m){if(!(y instanceof HTMLMediaElement)||!y.isConnected)continue;let w=Number.parseFloat(y.dataset.start??""),M=Number.parseFloat(y.dataset.duration??""),k=Number.isFinite(M)&&M>0?w+M:1/0,J=Number.parseFloat(y.dataset.playbackStart??y.dataset.mediaStart??"0")||0;if(Number.isFinite(w)&&e.currentTime>=w&&e.currentTime<=k){y.paused?!y.error&&y.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&(I.attachAudioSource({currentTimeSeconds:e.currentTime}),h=!0):(I.attachAudioSource({el:y,compositionStart:w,mediaStart:J}),h=!0);break}}!h&&I.hasAudioSource()&&I.detachAudioSource()}else I.hasAudioSource()&&I.detachAudioSource();let d=I.now();if(e.currentTime=d,(I.isPlaying()||!Xa())&&it(d),I.isPlaying()&&I.reachedEnd()){de.stopAll(),I.detachAudioSource(),I.pause(),e.isPlaying=!1;let m=I.getDuration();Number.isFinite(m)&&(I.seek(m),e.currentTime=m,it(m)),Oe("pause"),Le(),Te(!0);return}I.isPlaying()&&Le(),Te(!1)}finally{qn=!1}}},hr=d=>{let m=document.querySelectorAll("video, audio");for(let h of m){if(!(h instanceof HTMLMediaElement)||!h.isConnected)continue;let y=Number.parseFloat(h.dataset.start??"");if(!Number.isFinite(y))continue;let w=Number.parseFloat(h.dataset.duration??""),M=Number.isFinite(w)&&w>0?y+w:1/0;if(d<y||d>=M)continue;let k=Number.parseFloat(h.dataset.playbackStart??h.dataset.mediaStart??"0")||0,J=d-y+k;if(J>=0)try{h.currentTime=J}catch{}}},gr=()=>{if(e.nativeMediaSyncDisabled||e.webAudioMediaDisabled)return;let d=de.startGeneration(),m=document.querySelectorAll("audio[data-start]");for(let h of m){if(!(h instanceof HTMLMediaElement)||!h.isConnected)continue;let y=Number.parseFloat(h.dataset.start??"");if(!Number.isFinite(y))continue;let w=Number.parseFloat(h.dataset.playbackStart??h.dataset.mediaStart??"0")||0,M=Number.parseFloat(h.dataset.volume??""),k=Number.isFinite(M)?M:1,J=Number.parseFloat(h.dataset.duration??""),K=Number.isFinite(J)&&J>0?J:Number.POSITIVE_INFINITY,me=h.closest("[data-composition-id]");if(me){let ye=R(me,0),oe=W(me,{includeAuthoredTimingAttrs:!0});oe!=null&&oe>0&&(K=Math.min(K,Math.max(0,ye+oe-y)))}de.decodeAudioElement(h).then(ye=>{!ye||!I.isPlaying()||de.schedulePlayback(h,ye,y,w,I.now(),k*e.bridgeVolume,d,e.playbackRate,K)})}},xr=()=>{de.setRate(e.playbackRate)&&!e.nativeMediaSyncDisabled&&!e.webAudioMediaDisabled&&zn&&I.isPlaying()&&de.hasBoundedActiveSources()&&(de.stopAll(),gr())};if(he.play=()=>{let d=e.capturedTimeline;if(I.isPlaying())return;let m=Q(d,0);if(m>0)I.setDuration(m),I.reachedEnd()&&(I.seek(0),e.currentTime=0,it(0));else{let h=S(),y=Number(h?.getAttribute("data-duration")??0);y>0&&I.setDuration(y)}d&&d.pause(),I.play()&&(e.isPlaying=!0,e.mediaForceSyncNextTick=!0,hr(I.now()),zn&&!e.nativeMediaSyncDisabled&&!e.webAudioMediaDisabled&&gr(),Oe("play"),Le(),Ve.redraw(),Te(!0))},he.pause=()=>{if(!I.isPlaying())return;de.stopAll(),I.detachAudioSource(),I.pause(),e.isPlaying=!1,e.currentTime=I.now(),e.mediaForceSyncNextTick=!0,hr(e.currentTime);let d=e.capturedTimeline;d&&d.pause(),Oe("pause"),Le(),Ve.redraw(),Te(!0)},he.seek=d=>{let m=mt(Math.max(0,Number(d)||0),e.canonicalFps);de.stopAll(),I.detachAudioSource(),I.isPlaying()&&I.pause(),I.seek(m),e.currentTime=I.now(),e.isPlaying=!1,e.mediaForceSyncNextTick=!0;let y=e.capturedTimeline;y&&y.pause(),it(e.currentTime),Oe("pause"),Le(),Ve.redraw(),Te(!0)},he.renderSeek=d=>{let m=mt(Math.max(0,Number(d)||0),e.canonicalFps);I.isPlaying()&&I.pause(),I.seek(m),e.currentTime=I.now(),e.isPlaying=!1,e.mediaForceSyncNextTick=!0,it(e.currentTime,{activateChildren:!0}),Le(),Ve.redraw(),Te(!0)},he.getTime=()=>I.now(),he.getDuration=()=>{let d=I.getDuration();return Number.isFinite(d)?d:0},he.isPlaying=()=>I.isPlaying(),he.setPlaybackRate=d=>{Vn(d),I.setRate(e.playbackRate),xr()},e.capturedTimeline){let d=Q(e.capturedTimeline,0);d>0&&I.setDuration(d),e.capturedTimeline.pause()}let br=window.__player;if(br){let d=["play","pause","seek","renderSeek","getTime","getDuration","isPlaying"];for(let m of d)Object.defineProperty(br,m,{get:()=>he[m],set:h=>{he[m]=h},configurable:!0})}e.transportRafId=window.requestAnimationFrame(pr),dt(),Te(!0);let jn=()=>{if(!e.tornDown){e.tornDown=!0,e.transportRafId!=null&&(window.cancelAnimationFrame(e.transportRafId),e.transportRafId=null),e.transportClock=null,de.destroy(),tt!=null&&(window.clearTimeout(tt),tt=null),u!=null&&(window.cancelAnimationFrame(u),u=null),Ga(),e.controlBridgeHandler&&(window.removeEventListener("message",e.controlBridgeHandler),e.controlBridgeHandler=null),i&&(window.removeEventListener("error",i),i=null),r&&(window.removeEventListener("unhandledrejection",r),r=null),e.beforeUnloadHandler&&(window.removeEventListener("beforeunload",e.beforeUnloadHandler),e.beforeUnloadHandler=null),an.disablePickMode();for(let d of e.deterministicAdapters)if(!(!d||typeof d.revert!="function"))try{d.revert()}catch(m){L("runtime.init.site12",m)}e.deterministicAdapters=[];for(let d of o.splice(0))try{d()}catch(m){L("runtime.init.site13",m)}for(let d of e.injectedCompStyles)try{d.remove()}catch(m){L("runtime.init.site14",m)}e.injectedCompStyles=[];for(let d of e.injectedCompScripts)try{d.remove()}catch(m){L("runtime.init.site15",m)}e.injectedCompScripts=[],e.capturedTimeline=null,window.__hfRuntimeTeardown===jn&&(window.__hfRuntimeTeardown=null)}};window.__hfRuntimeTeardown=jn,e.beforeUnloadHandler=jn,window.addEventListener("beforeunload",e.beforeUnloadHandler)}var pa=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","BN","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],ir=[[697,698,"ON"],[706,719,"ON"],[722,735,"ON"],[741,749,"ON"],[751,767,"ON"],[768,879,"NSM"],[884,885,"ON"],[894,894,"ON"],[900,901,"ON"],[903,903,"ON"],[1014,1014,"ON"],[1155,1161,"NSM"],[1418,1418,"ON"],[1421,1422,"ON"],[1423,1423,"ET"],[1424,1424,"R"],[1425,1469,"NSM"],[1470,1470,"R"],[1471,1471,"NSM"],[1472,1472,"R"],[1473,1474,"NSM"],[1475,1475,"R"],[1476,1477,"NSM"],[1478,1478,"R"],[1479,1479,"NSM"],[1480,1535,"R"],[1536,1541,"AN"],[1542,1543,"ON"],[1544,1544,"AL"],[1545,1546,"ET"],[1547,1547,"AL"],[1548,1548,"CS"],[1549,1549,"AL"],[1550,1551,"ON"],[1552,1562,"NSM"],[1563,1610,"AL"],[1611,1631,"NSM"],[1632,1641,"AN"],[1642,1642,"ET"],[1643,1644,"AN"],[1645,1647,"AL"],[1648,1648,"NSM"],[1649,1749,"AL"],[1750,1756,"NSM"],[1757,1757,"AN"],[1758,1758,"ON"],[1759,1764,"NSM"],[1765,1766,"AL"],[1767,1768,"NSM"],[1769,1769,"ON"],[1770,1773,"NSM"],[1774,1775,"AL"],[1776,1785,"EN"],[1786,1808,"AL"],[1809,1809,"NSM"],[1810,1839,"AL"],[1840,1866,"NSM"],[1867,1957,"AL"],[1958,1968,"NSM"],[1969,1983,"AL"],[1984,2026,"R"],[2027,2035,"NSM"],[2036,2037,"R"],[2038,2041,"ON"],[2042,2044,"R"],[2045,2045,"NSM"],[2046,2069,"R"],[2070,2073,"NSM"],[2074,2074,"R"],[2075,2083,"NSM"],[2084,2084,"R"],[2085,2087,"NSM"],[2088,2088,"R"],[2089,2093,"NSM"],[2094,2136,"R"],[2137,2139,"NSM"],[2140,2143,"R"],[2144,2191,"AL"],[2192,2193,"AN"],[2194,2198,"AL"],[2199,2207,"NSM"],[2208,2249,"AL"],[2250,2273,"NSM"],[2274,2274,"AN"],[2275,2306,"NSM"],[2362,2362,"NSM"],[2364,2364,"NSM"],[2369,2376,"NSM"],[2381,2381,"NSM"],[2385,2391,"NSM"],[2402,2403,"NSM"],[2433,2433,"NSM"],[2492,2492,"NSM"],[2497,2500,"NSM"],[2509,2509,"NSM"],[2530,2531,"NSM"],[2546,2547,"ET"],[2555,2555,"ET"],[2558,2558,"NSM"],[2561,2562,"NSM"],[2620,2620,"NSM"],[2625,2626,"NSM"],[2631,2632,"NSM"],[2635,2637,"NSM"],[2641,2641,"NSM"],[2672,2673,"NSM"],[2677,2677,"NSM"],[2689,2690,"NSM"],[2748,2748,"NSM"],[2753,2757,"NSM"],[2759,2760,"NSM"],[2765,2765,"NSM"],[2786,2787,"NSM"],[2801,2801,"ET"],[2810,2815,"NSM"],[2817,2817,"NSM"],[2876,2876,"NSM"],[2879,2879,"NSM"],[2881,2884,"NSM"],[2893,2893,"NSM"],[2901,2902,"NSM"],[2914,2915,"NSM"],[2946,2946,"NSM"],[3008,3008,"NSM"],[3021,3021,"NSM"],[3059,3064,"ON"],[3065,3065,"ET"],[3066,3066,"ON"],[3072,3072,"NSM"],[3076,3076,"NSM"],[3132,3132,"NSM"],[3134,3136,"NSM"],[3142,3144,"NSM"],[3146,3149,"NSM"],[3157,3158,"NSM"],[3170,3171,"NSM"],[3192,3198,"ON"],[3201,3201,"NSM"],[3260,3260,"NSM"],[3276,3277,"NSM"],[3298,3299,"NSM"],[3328,3329,"NSM"],[3387,3388,"NSM"],[3393,3396,"NSM"],[3405,3405,"NSM"],[3426,3427,"NSM"],[3457,3457,"NSM"],[3530,3530,"NSM"],[3538,3540,"NSM"],[3542,3542,"NSM"],[3633,3633,"NSM"],[3636,3642,"NSM"],[3647,3647,"ET"],[3655,3662,"NSM"],[3761,3761,"NSM"],[3764,3772,"NSM"],[3784,3790,"NSM"],[3864,3865,"NSM"],[3893,3893,"NSM"],[3895,3895,"NSM"],[3897,3897,"NSM"],[3898,3901,"ON"],[3953,3966,"NSM"],[3968,3972,"NSM"],[3974,3975,"NSM"],[3981,3991,"NSM"],[3993,4028,"NSM"],[4038,4038,"NSM"],[4141,4144,"NSM"],[4146,4151,"NSM"],[4153,4154,"NSM"],[4157,4158,"NSM"],[4184,4185,"NSM"],[4190,4192,"NSM"],[4209,4212,"NSM"],[4226,4226,"NSM"],[4229,4230,"NSM"],[4237,4237,"NSM"],[4253,4253,"NSM"],[4957,4959,"NSM"],[5008,5017,"ON"],[5120,5120,"ON"],[5760,5760,"WS"],[5787,5788,"ON"],[5906,5908,"NSM"],[5938,5939,"NSM"],[5970,5971,"NSM"],[6002,6003,"NSM"],[6068,6069,"NSM"],[6071,6077,"NSM"],[6086,6086,"NSM"],[6089,6099,"NSM"],[6107,6107,"ET"],[6109,6109,"NSM"],[6128,6137,"ON"],[6144,6154,"ON"],[6155,6157,"NSM"],[6158,6158,"BN"],[6159,6159,"NSM"],[6277,6278,"NSM"],[6313,6313,"NSM"],[6432,6434,"NSM"],[6439,6440,"NSM"],[6450,6450,"NSM"],[6457,6459,"NSM"],[6464,6464,"ON"],[6468,6469,"ON"],[6622,6655,"ON"],[6679,6680,"NSM"],[6683,6683,"NSM"],[6742,6742,"NSM"],[6744,6750,"NSM"],[6752,6752,"NSM"],[6754,6754,"NSM"],[6757,6764,"NSM"],[6771,6780,"NSM"],[6783,6783,"NSM"],[6832,6877,"NSM"],[6880,6891,"NSM"],[6912,6915,"NSM"],[6964,6964,"NSM"],[6966,6970,"NSM"],[6972,6972,"NSM"],[6978,6978,"NSM"],[7019,7027,"NSM"],[7040,7041,"NSM"],[7074,7077,"NSM"],[7080,7081,"NSM"],[7083,7085,"NSM"],[7142,7142,"NSM"],[7144,7145,"NSM"],[7149,7149,"NSM"],[7151,7153,"NSM"],[7212,7219,"NSM"],[7222,7223,"NSM"],[7376,7378,"NSM"],[7380,7392,"NSM"],[7394,7400,"NSM"],[7405,7405,"NSM"],[7412,7412,"NSM"],[7416,7417,"NSM"],[7616,7679,"NSM"],[8125,8125,"ON"],[8127,8129,"ON"],[8141,8143,"ON"],[8157,8159,"ON"],[8173,8175,"ON"],[8189,8190,"ON"],[8192,8202,"WS"],[8203,8205,"BN"],[8207,8207,"R"],[8208,8231,"ON"],[8232,8232,"WS"],[8233,8233,"B"],[8234,8238,"BN"],[8239,8239,"CS"],[8240,8244,"ET"],[8245,8259,"ON"],[8260,8260,"CS"],[8261,8286,"ON"],[8287,8287,"WS"],[8288,8303,"BN"],[8304,8304,"EN"],[8308,8313,"EN"],[8314,8315,"ES"],[8316,8318,"ON"],[8320,8329,"EN"],[8330,8331,"ES"],[8332,8334,"ON"],[8352,8399,"ET"],[8400,8432,"NSM"],[8448,8449,"ON"],[8451,8454,"ON"],[8456,8457,"ON"],[8468,8468,"ON"],[8470,8472,"ON"],[8478,8483,"ON"],[8485,8485,"ON"],[8487,8487,"ON"],[8489,8489,"ON"],[8494,8494,"ET"],[8506,8507,"ON"],[8512,8516,"ON"],[8522,8525,"ON"],[8528,8543,"ON"],[8585,8587,"ON"],[8592,8721,"ON"],[8722,8722,"ES"],[8723,8723,"ET"],[8724,9013,"ON"],[9083,9108,"ON"],[9110,9257,"ON"],[9280,9290,"ON"],[9312,9351,"ON"],[9352,9371,"EN"],[9450,9899,"ON"],[9901,10239,"ON"],[10496,11123,"ON"],[11126,11263,"ON"],[11493,11498,"ON"],[11503,11505,"NSM"],[11513,11519,"ON"],[11647,11647,"NSM"],[11744,11775,"NSM"],[11776,11869,"ON"],[11904,11929,"ON"],[11931,12019,"ON"],[12032,12245,"ON"],[12272,12287,"ON"],[12288,12288,"WS"],[12289,12292,"ON"],[12296,12320,"ON"],[12330,12333,"NSM"],[12336,12336,"ON"],[12342,12343,"ON"],[12349,12351,"ON"],[12441,12442,"NSM"],[12443,12444,"ON"],[12448,12448,"ON"],[12539,12539,"ON"],[12736,12773,"ON"],[12783,12783,"ON"],[12829,12830,"ON"],[12880,12895,"ON"],[12924,12926,"ON"],[12977,12991,"ON"],[13004,13007,"ON"],[13175,13178,"ON"],[13278,13279,"ON"],[13311,13311,"ON"],[19904,19967,"ON"],[42128,42182,"ON"],[42509,42511,"ON"],[42607,42610,"NSM"],[42611,42611,"ON"],[42612,42621,"NSM"],[42622,42623,"ON"],[42654,42655,"NSM"],[42736,42737,"NSM"],[42752,42785,"ON"],[42888,42888,"ON"],[43010,43010,"NSM"],[43014,43014,"NSM"],[43019,43019,"NSM"],[43045,43046,"NSM"],[43048,43051,"ON"],[43052,43052,"NSM"],[43064,43065,"ET"],[43124,43127,"ON"],[43204,43205,"NSM"],[43232,43249,"NSM"],[43263,43263,"NSM"],[43302,43309,"NSM"],[43335,43345,"NSM"],[43392,43394,"NSM"],[43443,43443,"NSM"],[43446,43449,"NSM"],[43452,43453,"NSM"],[43493,43493,"NSM"],[43561,43566,"NSM"],[43569,43570,"NSM"],[43573,43574,"NSM"],[43587,43587,"NSM"],[43596,43596,"NSM"],[43644,43644,"NSM"],[43696,43696,"NSM"],[43698,43700,"NSM"],[43703,43704,"NSM"],[43710,43711,"NSM"],[43713,43713,"NSM"],[43756,43757,"NSM"],[43766,43766,"NSM"],[43882,43883,"ON"],[44005,44005,"NSM"],[44008,44008,"NSM"],[44013,44013,"NSM"],[64285,64285,"R"],[64286,64286,"NSM"],[64287,64296,"R"],[64297,64297,"ES"],[64298,64335,"R"],[64336,64450,"AL"],[64451,64466,"ON"],[64467,64829,"AL"],[64830,64847,"ON"],[64848,64911,"AL"],[64912,64913,"ON"],[64914,64967,"AL"],[64968,64975,"ON"],[64976,65007,"BN"],[65008,65020,"AL"],[65021,65023,"ON"],[65024,65039,"NSM"],[65040,65049,"ON"],[65056,65071,"NSM"],[65072,65103,"ON"],[65104,65104,"CS"],[65105,65105,"ON"],[65106,65106,"CS"],[65108,65108,"ON"],[65109,65109,"CS"],[65110,65118,"ON"],[65119,65119,"ET"],[65120,65121,"ON"],[65122,65123,"ES"],[65124,65126,"ON"],[65128,65128,"ON"],[65129,65130,"ET"],[65131,65131,"ON"],[65136,65278,"AL"],[65279,65279,"BN"],[65281,65282,"ON"],[65283,65285,"ET"],[65286,65290,"ON"],[65291,65291,"ES"],[65292,65292,"CS"],[65293,65293,"ES"],[65294,65295,"CS"],[65296,65305,"EN"],[65306,65306,"CS"],[65307,65312,"ON"],[65339,65344,"ON"],[65371,65381,"ON"],[65504,65505,"ET"],[65506,65508,"ON"],[65509,65510,"ET"],[65512,65518,"ON"],[65520,65528,"BN"],[65529,65533,"ON"],[65534,65535,"BN"],[65793,65793,"ON"],[65856,65932,"ON"],[65936,65948,"ON"],[65952,65952,"ON"],[66045,66045,"NSM"],[66272,66272,"NSM"],[66273,66299,"EN"],[66422,66426,"NSM"],[67584,67870,"R"],[67871,67871,"ON"],[67872,68096,"R"],[68097,68099,"NSM"],[68100,68100,"R"],[68101,68102,"NSM"],[68103,68107,"R"],[68108,68111,"NSM"],[68112,68151,"R"],[68152,68154,"NSM"],[68155,68158,"R"],[68159,68159,"NSM"],[68160,68324,"R"],[68325,68326,"NSM"],[68327,68408,"R"],[68409,68415,"ON"],[68416,68863,"R"],[68864,68899,"AL"],[68900,68903,"NSM"],[68904,68911,"AL"],[68912,68921,"AN"],[68922,68927,"AL"],[68928,68937,"AN"],[68938,68968,"R"],[68969,68973,"NSM"],[68974,68974,"ON"],[68975,69215,"R"],[69216,69246,"AN"],[69247,69290,"R"],[69291,69292,"NSM"],[69293,69311,"R"],[69312,69327,"AL"],[69328,69336,"ON"],[69337,69369,"AL"],[69370,69375,"NSM"],[69376,69423,"R"],[69424,69445,"AL"],[69446,69456,"NSM"],[69457,69487,"AL"],[69488,69505,"R"],[69506,69509,"NSM"],[69510,69631,"R"],[69633,69633,"NSM"],[69688,69702,"NSM"],[69714,69733,"ON"],[69744,69744,"NSM"],[69747,69748,"NSM"],[69759,69761,"NSM"],[69811,69814,"NSM"],[69817,69818,"NSM"],[69826,69826,"NSM"],[69888,69890,"NSM"],[69927,69931,"NSM"],[69933,69940,"NSM"],[70003,70003,"NSM"],[70016,70017,"NSM"],[70070,70078,"NSM"],[70089,70092,"NSM"],[70095,70095,"NSM"],[70191,70193,"NSM"],[70196,70196,"NSM"],[70198,70199,"NSM"],[70206,70206,"NSM"],[70209,70209,"NSM"],[70367,70367,"NSM"],[70371,70378,"NSM"],[70400,70401,"NSM"],[70459,70460,"NSM"],[70464,70464,"NSM"],[70502,70508,"NSM"],[70512,70516,"NSM"],[70587,70592,"NSM"],[70606,70606,"NSM"],[70608,70608,"NSM"],[70610,70610,"NSM"],[70625,70626,"NSM"],[70712,70719,"NSM"],[70722,70724,"NSM"],[70726,70726,"NSM"],[70750,70750,"NSM"],[70835,70840,"NSM"],[70842,70842,"NSM"],[70847,70848,"NSM"],[70850,70851,"NSM"],[71090,71093,"NSM"],[71100,71101,"NSM"],[71103,71104,"NSM"],[71132,71133,"NSM"],[71219,71226,"NSM"],[71229,71229,"NSM"],[71231,71232,"NSM"],[71264,71276,"ON"],[71339,71339,"NSM"],[71341,71341,"NSM"],[71344,71349,"NSM"],[71351,71351,"NSM"],[71453,71453,"NSM"],[71455,71455,"NSM"],[71458,71461,"NSM"],[71463,71467,"NSM"],[71727,71735,"NSM"],[71737,71738,"NSM"],[71995,71996,"NSM"],[71998,71998,"NSM"],[72003,72003,"NSM"],[72148,72151,"NSM"],[72154,72155,"NSM"],[72160,72160,"NSM"],[72193,72198,"NSM"],[72201,72202,"NSM"],[72243,72248,"NSM"],[72251,72254,"NSM"],[72263,72263,"NSM"],[72273,72278,"NSM"],[72281,72283,"NSM"],[72330,72342,"NSM"],[72344,72345,"NSM"],[72544,72544,"NSM"],[72546,72548,"NSM"],[72550,72550,"NSM"],[72752,72758,"NSM"],[72760,72765,"NSM"],[72850,72871,"NSM"],[72874,72880,"NSM"],[72882,72883,"NSM"],[72885,72886,"NSM"],[73009,73014,"NSM"],[73018,73018,"NSM"],[73020,73021,"NSM"],[73023,73029,"NSM"],[73031,73031,"NSM"],[73104,73105,"NSM"],[73109,73109,"NSM"],[73111,73111,"NSM"],[73459,73460,"NSM"],[73472,73473,"NSM"],[73526,73530,"NSM"],[73536,73536,"NSM"],[73538,73538,"NSM"],[73562,73562,"NSM"],[73685,73692,"ON"],[73693,73696,"ET"],[73697,73713,"ON"],[78912,78912,"NSM"],[78919,78933,"NSM"],[90398,90409,"NSM"],[90413,90415,"NSM"],[92912,92916,"NSM"],[92976,92982,"NSM"],[94031,94031,"NSM"],[94095,94098,"NSM"],[94178,94178,"ON"],[94180,94180,"NSM"],[113821,113822,"NSM"],[113824,113827,"BN"],[117760,117973,"ON"],[118e3,118009,"EN"],[118010,118012,"ON"],[118016,118451,"ON"],[118458,118480,"ON"],[118496,118512,"ON"],[118528,118573,"NSM"],[118576,118598,"NSM"],[119143,119145,"NSM"],[119155,119162,"BN"],[119163,119170,"NSM"],[119173,119179,"NSM"],[119210,119213,"NSM"],[119273,119274,"ON"],[119296,119361,"ON"],[119362,119364,"NSM"],[119365,119365,"ON"],[119552,119638,"ON"],[120513,120513,"ON"],[120539,120539,"ON"],[120571,120571,"ON"],[120597,120597,"ON"],[120629,120629,"ON"],[120655,120655,"ON"],[120687,120687,"ON"],[120713,120713,"ON"],[120745,120745,"ON"],[120771,120771,"ON"],[120782,120831,"EN"],[121344,121398,"NSM"],[121403,121452,"NSM"],[121461,121461,"NSM"],[121476,121476,"NSM"],[121499,121503,"NSM"],[121505,121519,"NSM"],[122880,122886,"NSM"],[122888,122904,"NSM"],[122907,122913,"NSM"],[122915,122916,"NSM"],[122918,122922,"NSM"],[123023,123023,"NSM"],[123184,123190,"NSM"],[123566,123566,"NSM"],[123628,123631,"NSM"],[123647,123647,"ET"],[124140,124143,"NSM"],[124398,124399,"NSM"],[124643,124643,"NSM"],[124646,124646,"NSM"],[124654,124655,"NSM"],[124661,124661,"NSM"],[124928,125135,"R"],[125136,125142,"NSM"],[125143,125251,"R"],[125252,125258,"NSM"],[125259,126063,"R"],[126064,126143,"AL"],[126144,126207,"R"],[126208,126287,"AL"],[126288,126463,"R"],[126464,126703,"AL"],[126704,126705,"ON"],[126706,126719,"AL"],[126720,126975,"R"],[126976,127019,"ON"],[127024,127123,"ON"],[127136,127150,"ON"],[127153,127167,"ON"],[127169,127183,"ON"],[127185,127221,"ON"],[127232,127242,"EN"],[127243,127247,"ON"],[127279,127279,"ON"],[127338,127343,"ON"],[127405,127405,"ON"],[127584,127589,"ON"],[127744,128728,"ON"],[128732,128748,"ON"],[128752,128764,"ON"],[128768,128985,"ON"],[128992,129003,"ON"],[129008,129008,"ON"],[129024,129035,"ON"],[129040,129095,"ON"],[129104,129113,"ON"],[129120,129159,"ON"],[129168,129197,"ON"],[129200,129211,"ON"],[129216,129217,"ON"],[129232,129240,"ON"],[129280,129623,"ON"],[129632,129645,"ON"],[129648,129660,"ON"],[129664,129674,"ON"],[129678,129734,"ON"],[129736,129736,"ON"],[129741,129756,"ON"],[129759,129770,"ON"],[129775,129784,"ON"],[129792,129938,"ON"],[129940,130031,"ON"],[130032,130041,"EN"],[130042,130042,"ON"],[131070,131071,"BN"],[196606,196607,"BN"],[262142,262143,"BN"],[327678,327679,"BN"],[393214,393215,"BN"],[458750,458751,"BN"],[524286,524287,"BN"],[589822,589823,"BN"],[655358,655359,"BN"],[720894,720895,"BN"],[786430,786431,"BN"],[851966,851967,"BN"],[917502,917759,"BN"],[917760,917999,"NSM"],[918e3,921599,"BN"],[983038,983039,"BN"],[1048574,1048575,"BN"],[1114110,1114111,"BN"]];function Vd(e){if(e<=255)return pa[e];let t=0,n=ir.length-1;for(;t<=n;){let i=t+n>>1,r=ir[i];if(e<r[0]){n=i-1;continue}if(e>r[1]){t=i+1;continue}return r[2]}return"L"}function zd(e){let t=e.length;if(t===0)return null;let n=new Array(t),i=!1;for(let l=0;l<t;){let c=e.charCodeAt(l),p=c,f=1;if(c>=55296&&c<=56319&&l+1<t){let E=e.charCodeAt(l+1);E>=56320&&E<=57343&&(p=(c-55296<<10)+(E-56320)+65536,f=2)}let x=Vd(p);(x==="R"||x==="AL"||x==="AN")&&(i=!0);for(let E=0;E<f;E++)n[l+E]=x;l+=f}if(!i)return null;let r=0;for(let l=0;l<t;l++){let c=n[l];if(c==="L"){r=0;break}if(c==="R"||c==="AL"){r=1;break}}let o=new Int8Array(t);for(let l=0;l<t;l++)o[l]=r;let s=r&1?"R":"L",u=s,a=u;for(let l=0;l<t;l++)n[l]==="NSM"?n[l]=a:a=n[l];a=u;for(let l=0;l<t;l++){let c=n[l];c==="EN"?n[l]=a==="AL"?"AN":"EN":(c==="R"||c==="L"||c==="AL")&&(a=c)}for(let l=0;l<t;l++)n[l]==="AL"&&(n[l]="R");for(let l=1;l<t-1;l++)n[l]==="ES"&&n[l-1]==="EN"&&n[l+1]==="EN"&&(n[l]="EN"),n[l]==="CS"&&(n[l-1]==="EN"||n[l-1]==="AN")&&n[l+1]===n[l-1]&&(n[l]=n[l-1]);for(let l=0;l<t;l++){if(n[l]!=="EN")continue;let c;for(c=l-1;c>=0&&n[c]==="ET";c--)n[c]="EN";for(c=l+1;c<t&&n[c]==="ET";c++)n[c]="EN"}for(let l=0;l<t;l++){let c=n[l];(c==="WS"||c==="ES"||c==="ET"||c==="CS")&&(n[l]="ON")}a=u;for(let l=0;l<t;l++){let c=n[l];c==="EN"?n[l]=a==="L"?"L":"EN":(c==="R"||c==="L")&&(a=c)}for(let l=0;l<t;l++){if(n[l]!=="ON")continue;let c=l+1;for(;c<t&&n[c]==="ON";)c++;let p=l>0?n[l-1]:u,f=c<t?n[c]:u,x=p!=="L"?"R":"L";if(x===(f!=="L"?"R":"L"))for(let b=l;b<c;b++)n[b]=x;l=c-1}for(let l=0;l<t;l++)n[l]==="ON"&&(n[l]=s);for(let l=0;l<t;l++){let c=n[l];(o[l]&1)===0?c==="R"?o[l]++:(c==="AN"||c==="EN")&&(o[l]+=2):(c==="L"||c==="AN"||c==="EN")&&o[l]++}return o}function ha(e,t){let n=zd(e);if(n===null)return null;let i=new Int8Array(t.length);for(let r=0;r<t.length;r++)i[r]=n[t[r]];return i}var qd=/[ \\t\\n\\r\\f]+/g,jd=/[\\t\\n\\r\\f]| {2,}|^ | $/;function $d(e){let t=e??"normal";return t==="pre-wrap"?{mode:t,preserveOrdinarySpaces:!0,preserveHardBreaks:!0}:{mode:t,preserveOrdinarySpaces:!1,preserveHardBreaks:!1}}function Kd(e){if(!jd.test(e))return e;let t=e.replace(qd," ");return t.charCodeAt(0)===32&&(t=t.slice(1)),t.length>0&&t.charCodeAt(t.length-1)===32&&(t=t.slice(0,-1)),t}function Jd(e){return/[\\r\\f]/.test(e)?e.replace(/\\r\\n/g,`\n`).replace(/[\\r\\f]/g,`\n`):e.replace(/\\r\\n/g,`\n`)}var rr=null,Xd;function Yd(){return rr===null&&(rr=new Intl.Segmenter(Xd,{granularity:"word"})),rr}var Qd=/\\p{Script=Arabic}/u,Dn=/\\p{M}/u,wa=/\\p{Nd}/u;function ga(e){return Qd.test(e)}function xa(e){return e>=19968&&e<=40959||e>=13312&&e<=19903||e>=131072&&e<=173791||e>=173824&&e<=177983||e>=177984&&e<=178207||e>=178208&&e<=183983||e>=183984&&e<=191471||e>=191472&&e<=192093||e>=194560&&e<=195103||e>=196608&&e<=201551||e>=201552&&e<=205743||e>=205744&&e<=210041||e>=63744&&e<=64255||e>=12288&&e<=12351||e>=12352&&e<=12447||e>=12448&&e<=12543||e>=44032&&e<=55215||e>=65280&&e<=65519}function Ie(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(!(n<12288)){if(n>=55296&&n<=56319&&t+1<e.length){let i=e.charCodeAt(t+1);if(i>=56320&&i<=57343){let r=(n-55296<<10)+(i-56320)+65536;if(xa(r))return!0;t++;continue}}if(xa(n))return!0}}return!1}function Zd(e){let t=On(e);return t!==null&&(Pn.has(t)||Ze.has(t))}var ef=new Set(["\\xA0","\\u202F","\\u2060","\\uFEFF"]);function tf(e){return Ie(e)}function nf(e){let t=On(e);return t!==null&&ef.has(t)}function In(e){return!Zd(e)&&!nf(e)}var Pn=new Set(["\\uFF0C","\\uFF0E","\\uFF01","\\uFF1A","\\uFF1B","\\uFF1F","\\u3001","\\u3002","\\u30FB","\\uFF09","\\u3015","\\u3009","\\u300B","\\u300D","\\u300F","\\u3011","\\u3017","\\u3019","\\u301B","\\u30FC","\\u3005","\\u303B","\\u309D","\\u309E","\\u30FD","\\u30FE"]),rn=new Set([\'"\',"(","[","{","\\u201C","\\u2018","\\xAB","\\u2039","\\uFF08","\\u3014","\\u3008","\\u300A","\\u300C","\\u300E","\\u3010","\\u3016","\\u3018","\\u301A"]),sr=new Set(["\'","\\u2019"]),Ze=new Set([".",",","!","?",":",";","\\u060C","\\u061B","\\u061F","\\u0964","\\u0965","\\u104A","\\u104B","\\u104C","\\u104D","\\u104F",")","]","}","%",\'"\',"\\u201D","\\u2019","\\xBB","\\u203A","\\u2026"]),rf=new Set([":",".","\\u060C","\\u061B"]),of=new Set(["\\u104F"]),sf=new Set(["\\u201D","\\u2019","\\xBB","\\u203A","\\u300D","\\u300F","\\u3011","\\u300B","\\u3009","\\u3015","\\uFF09"]);function af(e){if(ar(e))return!0;let t=!1;for(let n of e){if(Ze.has(n)){t=!0;continue}if(!(t&&Dn.test(n)))return!1}return t}function lf(e){for(let t of e)if(!Pn.has(t)&&!Ze.has(t))return!1;return e.length>0}function uf(e){if(ar(e))return!0;for(let t of e)if(!rn.has(t)&&!sr.has(t)&&!Dn.test(t))return!1;return e.length>0}function ar(e){let t=!1;for(let n of e)if(!(n==="\\\\"||Dn.test(n))){if(rn.has(n)||Ze.has(n)||sr.has(n)){t=!0;continue}return!1}return t}function Fa(e,t){let n=t-1;if(n<=0)return Math.max(n,0);let i=e.charCodeAt(n);if(i<56320||i>57343)return n;let r=n-1;if(r<0)return n;let o=e.charCodeAt(r);return o>=55296&&o<=56319?r:n}function On(e){if(e.length===0)return null;let t=Fa(e,e.length);return e.slice(t)}function cf(e){let t=Array.from(e),n=t.length;for(;n>0;){let i=t[n-1];if(Dn.test(i)){n--;continue}if(rn.has(i)||sr.has(i)){n--;continue}break}return n<=0||n===t.length?null:{head:t.slice(0,n).join(""),tail:t.slice(n).join("")}}function df(e,t,n){return n==="text"&&!t&&e.length===1&&e!=="-"&&e!=="\\u2014"?e:null}function ba(e,t,n,i){let r=t[i],o=e[i];if(r==null)return o;let s=n[i];if(o.length===s)return o;let u=r.repeat(s);return e[i]=u,u}function ya(e,t){return e&&t!==null&&rf.has(t)}function ff(e){let t=On(e);return t!==null&&of.has(t)}function mf(e){if(e.length<2||e[0]!==" ")return null;let t=e.slice(1);return/^\\p{M}+$/u.test(t)?{space:" ",marks:t}:null}function Bn(e){let t=e.length;for(;t>0;){let n=Fa(e,t),i=e.slice(n,t);if(sf.has(i))return!0;if(!Ze.has(i))return!1;t=n}return!1}function pf(e,t){if(t.preserveOrdinarySpaces||t.preserveHardBreaks){if(e===" ")return"preserved-space";if(e===" ")return"tab";if(t.preserveHardBreaks&&e===`\n`)return"hard-break"}return e===" "?"space":e==="\\xA0"||e==="\\u202F"||e==="\\u2060"||e==="\\uFEFF"?"glue":e==="\\u200B"?"zero-width-break":e==="\\xAD"?"soft-hyphen":"text"}var hf=/[\\x20\\t\\n\\xA0\\xAD\\u200B\\u202F\\u2060\\uFEFF]/;function Ne(e){return e.length===1?e[0]:e.join("")}function gf(e,t){let n=[];for(let i=e.length-1;i>=0;i--)n.push(e[i]);return n.push(t),Ne(n)}function xf(e,t,n,i){if(!hf.test(e))return[{text:e,isWordLike:t,kind:"text",start:n}];let r=[],o=null,s=[],u=n,a=!1,l=0;for(let c of e){let p=pf(c,i),f=p==="text"&&t;if(o!==null&&p===o&&f===a){s.push(c),l+=c.length;continue}o!==null&&r.push({text:Ne(s),isWordLike:a,kind:o,start:u}),o=p,s=[c],u=n+l,a=f,l+=c.length}return o!==null&&r.push({text:Ne(s),isWordLike:a,kind:o,start:u}),r}function or(e){return e==="space"||e==="preserved-space"||e==="zero-width-break"||e==="hard-break"}var bf=/^[A-Za-z][A-Za-z0-9+.-]*:$/;function yf(e,t){let n=e.texts[t];return n.startsWith("www.")?!0:bf.test(n)&&t+1<e.len&&e.kinds[t+1]==="text"&&e.texts[t+1]==="//"}function Sf(e){return e.includes("?")&&(e.includes("://")||e.startsWith("www."))}function Ef(e){let t=e.texts.slice(),n=e.isWordLike.slice(),i=e.kinds.slice(),r=e.starts.slice();for(let s=0;s<e.len;s++){if(i[s]!=="text"||!yf(e,s))continue;let u=[t[s]],a=s+1;for(;a<e.len&&!or(i[a]);){u.push(t[a]),n[s]=!0;let l=t[a].includes("?");if(i[a]="text",t[a]="",a++,l)break}t[s]=Ne(u)}let o=0;for(let s=0;s<t.length;s++){let u=t[s];u.length!==0&&(o!==s&&(t[o]=u,n[o]=n[s],i[o]=i[s],r[o]=r[s]),o++)}return t.length=o,n.length=o,i.length=o,r.length=o,{len:o,texts:t,isWordLike:n,kinds:i,starts:r}}function Af(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o];if(t.push(s),n.push(e.isWordLike[o]),i.push(e.kinds[o]),r.push(e.starts[o]),!Sf(s))continue;let u=o+1;if(u>=e.len||or(e.kinds[u]))continue;let a=[],l=e.starts[u],c=u;for(;c<e.len&&!or(e.kinds[c]);)a.push(e.texts[c]),c++;a.length>0&&(t.push(Ne(a)),n.push(!0),i.push("text"),r.push(l),o=c-1)}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}var wf=new Set([":","-","/","\\xD7",",",".","+","\\u2013","\\u2014"]),Sa=/^[A-Za-z0-9_]+[,:;]*$/,Ea=/[,:;]+$/;function Ca(e){for(let t of e)if(wa.test(t))return!0;return!1}function nn(e){if(e.length===0)return!1;for(let t of e)if(!(wa.test(t)||wf.has(t)))return!1;return!0}function Ff(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o],u=e.kinds[o];if(u==="text"&&nn(s)&&Ca(s)){let a=[s],l=o+1;for(;l<e.len&&e.kinds[l]==="text"&&nn(e.texts[l]);)a.push(e.texts[l]),l++;t.push(Ne(a)),n.push(!0),i.push("text"),r.push(e.starts[o]),o=l-1;continue}t.push(s),n.push(e.isWordLike[o]),i.push(u),r.push(e.starts[o])}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function Cf(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o],u=e.kinds[o],a=e.isWordLike[o];if(u==="text"&&a&&Sa.test(s)){let l=[s],c=Ea.test(s),p=o+1;for(;c&&p<e.len&&e.kinds[p]==="text"&&e.isWordLike[p]&&Sa.test(e.texts[p]);){let f=e.texts[p];l.push(f),c=Ea.test(f),p++}t.push(Ne(l)),n.push(!0),i.push("text"),r.push(e.starts[o]),o=p-1;continue}t.push(s),n.push(a),i.push(u),r.push(e.starts[o])}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function _f(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o];if(e.kinds[o]==="text"&&s.includes("-")){let u=s.split("-"),a=u.length>1;for(let l=0;l<u.length;l++){let c=u[l];if(!a)break;(c.length===0||!Ca(c)||!nn(c))&&(a=!1)}if(a){let l=0;for(let c=0;c<u.length;c++){let p=u[c],f=c<u.length-1?`${p}-`:p;t.push(f),n.push(!0),i.push("text"),r.push(e.starts[o]+l),l+=f.length}continue}}t.push(s),n.push(e.isWordLike[o]),i.push(e.kinds[o]),r.push(e.starts[o])}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function Mf(e){let t=[],n=[],i=[],r=[],o=0;for(;o<e.len;){let s=[e.texts[o]],u=e.isWordLike[o],a=e.kinds[o],l=e.starts[o];if(a==="glue"){let c=[s[0]],p=l;for(o++;o<e.len&&e.kinds[o]==="glue";)c.push(e.texts[o]),o++;let f=Ne(c);if(o<e.len&&e.kinds[o]==="text")s[0]=f,s.push(e.texts[o]),u=e.isWordLike[o],a="text",l=p,o++;else{t.push(f),n.push(!1),i.push("glue"),r.push(p);continue}}else o++;if(a==="text")for(;o<e.len&&e.kinds[o]==="glue";){let c=[];for(;o<e.len&&e.kinds[o]==="glue";)c.push(e.texts[o]),o++;let p=Ne(c);if(o<e.len&&e.kinds[o]==="text"){s.push(p,e.texts[o]),u=u||e.isWordLike[o],o++;continue}s.push(p)}t.push(Ne(s)),n.push(u),i.push(a),r.push(l)}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function vf(e){let t=e.texts.slice(),n=e.isWordLike.slice(),i=e.kinds.slice(),r=e.starts.slice();for(let o=0;o<t.length-1;o++){if(i[o]!=="text"||i[o+1]!=="text"||!Ie(t[o])||!Ie(t[o+1]))continue;let s=cf(t[o]);s!==null&&(t[o]=s.head,t[o+1]=s.tail+t[o+1],r[o+1]=r[o]+s.head.length)}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function Aa(e,t,n){let i=Yd(),r=0,o=[],s=[],u=[],a=[],l=[],c=[],p=[],f=[],x=[],E=[],b=[],g=[];for(let v of i.segment(e))for(let S of xf(v.segment,v.isWordLike??!1,v.index,n)){let se=function(){c[P]!==null&&(s[P]=[ba(o,c,p,P)],c[P]=null),s[P].push(S.text),u[P]=u[P]||S.isWordLike,f[P]=f[P]||T,x[P]=x[P]||R,E[P]=q,b[P]=ie,g[P]=ya(x[P],W)},F=S.kind==="text",_=df(S.text,S.isWordLike,S.kind),T=Ie(S.text),R=ga(S.text),W=On(S.text),q=Bn(S.text),ie=ff(S.text),P=r-1;t.carryCJKAfterClosingQuote&&F&&r>0&&a[P]==="text"&&T&&f[P]&&E[P]||F&&r>0&&a[P]==="text"&&lf(S.text)&&f[P]||F&&r>0&&a[P]==="text"&&b[P]?se():F&&r>0&&a[P]==="text"&&S.isWordLike&&R&&g[P]?(se(),u[P]=!0):_!==null&&r>0&&a[P]==="text"&&c[P]===_?p[P]=(p[P]??1)+1:F&&!S.isWordLike&&r>0&&a[P]==="text"&&(af(S.text)||S.text==="-"&&u[P])?se():(o[r]=S.text,s[r]=[S.text],u[r]=S.isWordLike,a[r]=S.kind,l[r]=S.start,c[r]=_,p[r]=_===null?0:1,f[r]=T,x[r]=R,E[r]=q,b[r]=ie,g[r]=ya(R,W),r++)}for(let v=0;v<r;v++){if(c[v]!==null){o[v]=ba(o,c,p,v);continue}o[v]=Ne(s[v])}for(let v=1;v<r;v++)a[v]==="text"&&!u[v]&&ar(o[v])&&a[v-1]==="text"&&(o[v-1]+=o[v],u[v-1]=u[v-1]||u[v],o[v]="");let A=Array.from({length:r},()=>null),C=-1;for(let v=r-1;v>=0;v--){let S=o[v];if(S.length!==0){if(a[v]==="text"&&!u[v]&&uf(S)&&C>=0&&a[C]==="text"){let F=A[C]??[];F.push(S),A[C]=F,l[C]=l[v],o[v]="";continue}C=v}}for(let v=0;v<r;v++){let S=A[v];S!=null&&(o[v]=gf(S,o[v]))}let N=0;for(let v=0;v<r;v++){let S=o[v];S.length!==0&&(N!==v&&(o[N]=S,u[N]=u[v],a[N]=a[v],l[N]=l[v]),N++)}o.length=N,u.length=N,a.length=N,l.length=N;let $=Mf({len:N,texts:o,isWordLike:u,kinds:a,starts:l}),B=vf(Cf(_f(Ff(Af(Ef($))))));for(let v=0;v<B.len-1;v++){let S=mf(B.texts[v]);S!==null&&(B.kinds[v]!=="space"&&B.kinds[v]!=="preserved-space"||B.kinds[v+1]!=="text"||!ga(B.texts[v+1])||(B.texts[v]=S.space,B.isWordLike[v]=!1,B.kinds[v]=B.kinds[v]==="preserved-space"?"preserved-space":"space",B.texts[v+1]=S.marks+B.texts[v+1],B.starts[v+1]=B.starts[v]+S.space.length))}return B}function Tf(e,t){if(e.len===0)return[];if(!t.preserveHardBreaks)return[{startSegmentIndex:0,endSegmentIndex:e.len,consumedEndSegmentIndex:e.len}];let n=[],i=0;for(let r=0;r<e.len;r++)e.kinds[r]==="hard-break"&&(n.push({startSegmentIndex:i,endSegmentIndex:r,consumedEndSegmentIndex:r+1}),i=r+1);return i<e.len&&n.push({startSegmentIndex:i,endSegmentIndex:e.len,consumedEndSegmentIndex:e.len}),n}function Nf(e){if(e.len<=1)return e;let t=[],n=[],i=[],r=[],o=null,s=!1,u=0,a=!1,l=!1;function c(){o!==null&&(t.push(Ne(o)),n.push(s),i.push("text"),r.push(u),o=null)}for(let p=0;p<e.len;p++){let f=e.texts[p],x=e.kinds[p],E=e.isWordLike[p],b=e.starts[p];if(x==="text"){let g=tf(f),A=In(f);if(o!==null&&a&&l){o.push(f),s=s||E,a=a||g,l=A;continue}c(),o=[f],s=E,u=b,a=g,l=A;continue}c(),t.push(f),n.push(E),i.push(x),r.push(b)}return c(),{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function _a(e,t,n="normal",i="normal"){let r=$d(n),o=r.mode==="pre-wrap"?Jd(e):Kd(e);if(o.length===0)return{normalized:o,chunks:[],len:0,texts:[],isWordLike:[],kinds:[],starts:[]};let s=i==="keep-all"?Nf(Aa(o,t,r)):Aa(o,t,r);return{normalized:o,chunks:Tf(s,r),...s}}var yt=null,Ma=new Map,St=null,Lf=96,Rf=/\\p{Emoji_Presentation}/u,kf=/[\\p{Emoji_Presentation}\\p{Extended_Pictographic}\\p{Regional_Indicator}\\uFE0F\\u20E3]/u,lr=null,va=new Map;function ur(){if(yt!==null)return yt;if(typeof OffscreenCanvas<"u")return yt=new OffscreenCanvas(1,1).getContext("2d"),yt;if(typeof document<"u")return yt=document.createElement("canvas").getContext("2d"),yt;throw new Error("Text measurement requires OffscreenCanvas or a DOM canvas context.")}function Df(e){let t=Ma.get(e);return t||(t=new Map,Ma.set(e,t)),t}function je(e,t){let n=t.get(e);return n===void 0&&(n={width:ur().measureText(e).width,containsCJK:Ie(e)},t.set(e,n)),n}function Et(){if(St!==null)return St;if(typeof navigator>"u")return St={lineFitEpsilon:.005,carryCJKAfterClosingQuote:!1,preferPrefixWidthsForBreakableRuns:!1,preferEarlySoftHyphenBreak:!1},St;let e=navigator.userAgent,n=navigator.vendor==="Apple Computer, Inc."&&e.includes("Safari/")&&!e.includes("Chrome/")&&!e.includes("Chromium/")&&!e.includes("CriOS/")&&!e.includes("FxiOS/")&&!e.includes("EdgiOS/"),i=e.includes("Chrome/")||e.includes("Chromium/")||e.includes("CriOS/")||e.includes("Edg/");return St={lineFitEpsilon:n?1/64:.005,carryCJKAfterClosingQuote:i,preferPrefixWidthsForBreakableRuns:n,preferEarlySoftHyphenBreak:n},St}function If(e){let t=e.match(/(\\d+(?:\\.\\d+)?)\\s*px/);return t?parseFloat(t[1]):16}function Ta(){return lr===null&&(lr=new Intl.Segmenter(void 0,{granularity:"grapheme"})),lr}function Pf(e){return Rf.test(e)||e.includes("\\uFE0F")}function Na(e){return kf.test(e)}function Of(e,t){let n=va.get(e);if(n!==void 0)return n;let i=ur();i.font=e;let r=i.measureText("\\u{1F600}").width;if(n=0,r>t+.5&&typeof document<"u"&&document.body!==null){let o=document.createElement("span");o.style.font=e,o.style.display="inline-block",o.style.visibility="hidden",o.style.position="absolute",o.textContent="\\u{1F600}",document.body.appendChild(o);let s=o.getBoundingClientRect().width;document.body.removeChild(o),r-s>.5&&(n=r-s)}return va.set(e,n),n}function Bf(e){let t=0,n=Ta();for(let i of n.segment(e))Pf(i.segment)&&t++;return t}function Hf(e,t){return t.emojiCount===void 0&&(t.emojiCount=Bf(e)),t.emojiCount}function et(e,t,n){return n===0?t.width:t.width-Hf(e,t)*n}function La(e,t,n,i,r){if(t.breakableFitAdvances!==void 0)return t.breakableFitAdvances;let o=Ta(),s=[];for(let c of o.segment(e))s.push(c.segment);if(s.length<=1)return t.breakableFitAdvances=null,t.breakableFitAdvances;if(r==="sum-graphemes"){let c=[];for(let p of s){let f=je(p,n);c.push(et(p,f,i))}return t.breakableFitAdvances=c,t.breakableFitAdvances}if(r==="pair-context"||s.length>Lf){let c=[],p=null,f=0;for(let x of s){let E=je(x,n),b=et(x,E,i);if(p===null)c.push(b);else{let g=p+x,A=je(g,n);c.push(et(g,A,i)-f)}p=x,f=b}return t.breakableFitAdvances=c,t.breakableFitAdvances}let u=[],a="",l=0;for(let c of s){a+=c;let p=je(a,n),f=et(a,p,i);u.push(f-l),l=f}return t.breakableFitAdvances=u,t.breakableFitAdvances}function Ra(e,t){let n=ur();n.font=e;let i=Df(e),r=If(e),o=t?Of(e,r):0;return{cache:i,fontSize:r,emojiCorrection:o}}function Gf(e,t){for(;t<e.widths.length;){let n=e.kinds[t];if(n!=="space"&&n!=="zero-width-break"&&n!=="soft-hyphen")break;t++}return t}function Wf(e,t){if(t<=0)return 0;let n=e%t;return Math.abs(n)<=1e-6?t:t-n}function Uf(e,t,n,i,r){let o=0,s=t;for(;o<e.length;){let u=s+e[o];if((o+1<e.length?u+r:u)>n+i)break;s=u,o++}return{fitCount:o,fittedWidth:s}}function ka(e,t){return e.simpleLineWalkFastPath?Da(e,t):Ia(e,t)}function Da(e,t,n){let{widths:i,kinds:r,breakableFitAdvances:o}=e;if(i.length===0)return 0;let u=Et().lineFitEpsilon,a=t+u,l=0,c=0,p=!1,f=0,x=0,E=0,b=0,g=-1,A=0;function C(){g=-1,A=0}function N(_=E,T=b,R=c){l++,n?.({startSegmentIndex:f,startGraphemeIndex:x,endSegmentIndex:_,endGraphemeIndex:T,width:R}),c=0,p=!1,C()}function $(_,T){p=!0,f=_,x=0,E=_+1,b=0,c=T}function B(_,T,R){p=!0,f=_,x=T,E=_,b=T+1,c=R}function v(_,T){if(!p){$(_,T);return}c+=T,E=_+1,b=0}function S(_,T){let R=o[_];for(let W=T;W<R.length;W++){let q=R[W];p?c+q>a?(N(),B(_,W,q)):(c+=q,E=_,b=W+1):B(_,W,q)}p&&E===_&&b===R.length&&(E=_+1,b=0)}let F=0;for(;F<i.length&&!(!p&&(F=Gf(e,F),F>=i.length));){let _=i[F],T=r[F],R=T==="space"||T==="preserved-space"||T==="tab"||T==="zero-width-break"||T==="soft-hyphen";if(!p){_>t&&o[F]!==null?S(F,0):$(F,_),R&&(g=F+1,A=c-_),F++;continue}if(c+_>a){if(R){v(F,_),N(F+1,0,c-_),F++;continue}if(g>=0){if(E>g||E===g&&b>0){N();continue}N(g,0,A);continue}if(_>t&&o[F]!==null){N(),S(F,0),F++;continue}N();continue}v(F,_),R&&(g=F+1,A=c-_),F++}return p&&N(),l}function Ia(e,t,n){if(e.simpleLineWalkFastPath)return Da(e,t,n);let{widths:i,lineEndFitAdvances:r,lineEndPaintAdvances:o,kinds:s,breakableFitAdvances:u,discretionaryHyphenWidth:a,tabStopAdvance:l,chunks:c}=e;if(i.length===0||c.length===0)return 0;let p=Et(),f=p.lineFitEpsilon,x=t+f,E=0,b=0,g=!1,A=0,C=0,N=0,$=0,B=-1,v=0,S=0,F=null;function _(){B=-1,v=0,S=0,F=null}function T(H=N,U=$,V=b){E++,n?.({startSegmentIndex:A,startGraphemeIndex:C,endSegmentIndex:H,endGraphemeIndex:U,width:V}),b=0,g=!1,_()}function R(H,U){g=!0,A=H,C=0,N=H+1,$=0,b=U}function W(H,U,V){g=!0,A=H,C=U,N=H,$=U+1,b=V}function q(H,U){if(!g){R(H,U);return}b+=U,N=H+1,$=0}function ie(H,U,V,re){if(!U)return;let _e=H==="tab"?0:r[V],O=H==="tab"?re:o[V];B=V+1,v=b-re+_e,S=b-re+O,F=H}function P(H,U){let V=u[H];for(let re=U;re<V.length;re++){let _e=V[re];g?b+_e>x?(T(),W(H,re,_e)):(b+=_e,N=H,$=re+1):W(H,re,_e)}g&&N===H&&$===V.length&&(N=H+1,$=0)}function se(H){if(F!=="soft-hyphen")return!1;let U=u[H];if(U==null)return!1;let{fitCount:V,fittedWidth:re}=Uf(U,b,t,f,a);return V===0?!1:(b=re,N=H,$=V,_(),V===U.length?(N=H+1,$=0,!0):(T(H,V,re+a),P(H,V),!0))}function Ee(H){E++,n?.({startSegmentIndex:H.startSegmentIndex,startGraphemeIndex:0,endSegmentIndex:H.consumedEndSegmentIndex,endGraphemeIndex:0,width:0}),_()}for(let H=0;H<c.length;H++){let U=c[H];if(U.startSegmentIndex===U.endSegmentIndex){Ee(U);continue}g=!1,b=0,A=U.startSegmentIndex,C=0,N=U.startSegmentIndex,$=0,_();let V=U.startSegmentIndex;for(;V<U.endSegmentIndex;){let re=s[V],_e=re==="space"||re==="preserved-space"||re==="tab"||re==="zero-width-break"||re==="soft-hyphen",O=re==="tab"?Wf(b,l):i[V];if(re==="soft-hyphen"){g&&(N=V+1,$=0,B=V+1,v=b+a,S=b+a,F=re),V++;continue}if(!g){O>t&&u[V]!==null?P(V,0):R(V,O),ie(re,_e,V,O),V++;continue}if(b+O>x){let G=b+(re==="tab"?0:r[V]),Q=b+(re==="tab"?O:o[V]);if(F==="soft-hyphen"&&p.preferEarlySoftHyphenBreak&&v<=x){T(B,0,S);continue}if(F==="soft-hyphen"&&se(V)){V++;continue}if(_e&&G<=x){q(V,O),T(V+1,0,Q),V++;continue}if(B>=0&&v<=x){if(N>B||N===B&&$>0){T();continue}let ae=B;T(ae,0,S),V=ae;continue}if(O>t&&u[V]!==null){T(),P(V,0),V++;continue}T();continue}q(V,O),ie(re,_e,V,O),V++}if(g){let re=B===U.consumedEndSegmentIndex?S:b;T(U.consumedEndSegmentIndex,0,re)}}return E}var cr=null;function Vf(){return cr===null&&(cr=new Intl.Segmenter(void 0,{granularity:"grapheme"})),cr}function zf(e){return e?{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[],segments:[]}:{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[]}}function qf(e,t){let n=[],i=[],r=0,o=!1,s=!1,u=!1;function a(){i.length!==0&&(n.push({text:i.length===1?i[0]:i.join(""),start:r}),i=[],o=!1,s=!1,u=!1)}function l(p,f,x){i=[p],r=f,o=x,s=Bn(p),u=rn.has(p)}function c(p,f){i.push(p),o=o||f;let x=Bn(p);p.length===1&&Ze.has(p)?s=s||x:s=x,u=!1}for(let p of Vf().segment(e)){let f=p.segment,x=Ie(f);if(i.length===0){l(f,p.index,x);continue}if(u||Pn.has(f)||Ze.has(f)||t.carryCJKAfterClosingQuote&&x&&s){c(f,x);continue}if(!o&&!x){c(f,x);continue}a(),l(f,p.index,x)}return a(),n}function jf(e){if(e.length<=1)return e;let t=[],n=[e[0].text],i=e[0].start,r=Ie(e[0].text),o=In(e[0].text);function s(){t.push({text:n.length===1?n[0]:n.join(""),start:i})}for(let u=1;u<e.length;u++){let a=e[u],l=Ie(a.text),c=In(a.text);if(r&&o){n.push(a.text),r=r||l,o=c;continue}s(),n=[a.text],i=a.start,r=l,o=c}return s(),t}function $f(e,t,n,i){let r=Et(),{cache:o,emojiCorrection:s}=Ra(t,Na(e.normalized)),u=et("-",je("-",o),s),l=et(" ",je(" ",o),s)*8;if(e.len===0)return zf(n);let c=[],p=[],f=[],x=[],E=e.chunks.length<=1,b=n?[]:null,g=[],A=n?[]:null,C=Array.from({length:e.len});function N(S,F,_,T,R,W,q){R!=="text"&&R!=="space"&&R!=="zero-width-break"&&(E=!1),c.push(F),p.push(_),f.push(T),x.push(R),b?.push(W),g.push(q),A!==null&&A.push(S)}function $(S,F,_,T,R){let W=je(S,o),q=et(S,W,s),ie=F==="space"||F==="preserved-space"||F==="zero-width-break"?0:q,P=F==="space"||F==="zero-width-break"?0:q;if(R&&T&&S.length>1){let se="sum-graphemes";nn(S)?se="pair-context":r.preferPrefixWidthsForBreakableRuns&&(se="segment-prefixes");let Ee=La(S,W,o,s,se);N(S,q,ie,P,F,_,Ee);return}N(S,q,ie,P,F,_,null)}for(let S=0;S<e.len;S++){C[S]=c.length;let F=e.texts[S],_=e.isWordLike[S],T=e.kinds[S],R=e.starts[S];if(T==="soft-hyphen"){N(F,0,u,u,T,R,null);continue}if(T==="hard-break"){N(F,0,0,0,T,R,null);continue}if(T==="tab"){N(F,0,0,0,T,R,null);continue}let W=je(F,o);if(T==="text"&&W.containsCJK){let q=qf(F,r),ie=i==="keep-all"?jf(q):q;for(let P=0;P<ie.length;P++){let se=ie[P];$(se.text,"text",R+se.start,_,i==="keep-all"||!Ie(se.text))}continue}$(F,T,R,_,!0)}let B=Kf(e.chunks,C,c.length),v=b===null?null:ha(e.normalized,b);return A!==null?{widths:c,lineEndFitAdvances:p,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:E,segLevels:v,breakableFitAdvances:g,discretionaryHyphenWidth:u,tabStopAdvance:l,chunks:B,segments:A}:{widths:c,lineEndFitAdvances:p,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:E,segLevels:v,breakableFitAdvances:g,discretionaryHyphenWidth:u,tabStopAdvance:l,chunks:B}}function Kf(e,t,n){let i=[];for(let r=0;r<e.length;r++){let o=e[r],s=o.startSegmentIndex<t.length?t[o.startSegmentIndex]:n,u=o.endSegmentIndex<t.length?t[o.endSegmentIndex]:n,a=o.consumedEndSegmentIndex<t.length?t[o.consumedEndSegmentIndex]:n;i.push({startSegmentIndex:s,endSegmentIndex:u,consumedEndSegmentIndex:a})}return i}function Jf(e,t,n,i){let r=i?.wordBreak??"normal",o=_a(e,Et(),i?.whiteSpace,r);return $f(o,t,n,r)}function Pa(e,t,n){return Jf(e,t,!1,n)}function Oa(e,t,n){let i=ka(e,t);return{lineCount:i,height:i*n}}var Xf={maxWidth:1600,baseFontSize:78,minFontSize:42,fontWeight:900,fontFamily:"Outfit",step:2};function Ba(e,t){let n={...Xf,...t},i=1.2;for(let r=n.baseFontSize;r>=n.minFontSize;r-=n.step){let o=`${n.fontWeight} ${r}px ${n.fontFamily}`,s=Pa(e,o),{lineCount:u}=Oa(s,n.maxWidth,r*i);if(u<=1)return{fontSize:r,fits:!0}}return{fontSize:n.minFontSize,fits:!1}}window.__timelines=window.__timelines||{};window.__hyperframes={fitTextFontSize:Ba,getVariables:vs};function Ha(){let e=window;e.__hyperframeRuntimeBootstrapped||(e.__hyperframeRuntimeBootstrapped=!0,ma())}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Ha,{once:!0}):Ha();})();\n';
56111
+ RUNTIME_IIFE = '"use strict";(()=>{var el=Object.create;var Yn=Object.defineProperty;var tl=Object.getOwnPropertyDescriptor;var nl=Object.getOwnPropertyNames;var il=Object.getPrototypeOf,rl=Object.prototype.hasOwnProperty;var ol=(e,t,n)=>t in e?Yn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var te=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var sl=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of nl(t))!rl.call(e,r)&&r!==n&&Yn(e,r,{get:()=>t[r],enumerable:!(i=tl(t,r))||i.enumerable});return e};var al=(e,t,n)=>(n=e!=null?el(il(e)):{},sl(t||!e||!e.__esModule?Yn(n,"default",{value:e,enumerable:!0}):n,e));var xe=(e,t,n)=>ol(e,typeof t!="symbol"?t+"":t,n);var to=te((lp,ci)=>{var X=String,eo=function(){return{isColorSupported:!1,reset:X,bold:X,dim:X,italic:X,underline:X,inverse:X,hidden:X,strikethrough:X,black:X,red:X,green:X,yellow:X,blue:X,magenta:X,cyan:X,white:X,gray:X,bgBlack:X,bgRed:X,bgGreen:X,bgYellow:X,bgBlue:X,bgMagenta:X,bgCyan:X,bgWhite:X,blackBright:X,redBright:X,greenBright:X,yellowBright:X,blueBright:X,magentaBright:X,cyanBright:X,whiteBright:X,bgBlackBright:X,bgRedBright:X,bgGreenBright:X,bgYellowBright:X,bgBlueBright:X,bgMagentaBright:X,bgCyanBright:X,bgWhiteBright:X}};ci.exports=eo();ci.exports.createColors=eo});var di=te(()=>{});var fn=te((dp,ro)=>{"use strict";var no=to(),io=di(),Dt=class e extends Error{constructor(t,n,i,r,o,s){super(t),this.name="CssSyntaxError",this.reason=t,o&&(this.file=o),r&&(this.source=r),s&&(this.plugin=s),typeof n<"u"&&typeof i<"u"&&(typeof n=="number"?(this.line=n,this.column=i):(this.line=n.line,this.column=n.column,this.endLine=i.line,this.endColumn=i.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(t){if(!this.source)return"";let n=this.source;t==null&&(t=no.isColorSupported);let i=c=>c,r=c=>c,o=c=>c;if(t){let{bold:c,gray:p,red:f}=no.createColors(!0);r=x=>c(f(x)),i=x=>p(x),io&&(o=x=>io(x))}let s=n.split(/\\r?\\n/),u=Math.max(this.line-3,0),a=Math.min(this.line+2,s.length),l=String(a).length;return s.slice(u,a).map((c,p)=>{let f=u+1+p,x=" "+(" "+f).slice(-l)+" | ";if(f===this.line){if(c.length>160){let b=20,g=Math.max(0,this.column-b),A=Math.max(this.column+b,this.endColumn+b),_=c.slice(g,A),N=i(x.replace(/\\d/g," "))+c.slice(0,Math.min(this.column-1,b-1)).replace(/[^\\t]/g," ");return r(">")+i(x)+o(_)+`\n `+N+r("^")}let E=i(x.replace(/\\d/g," "))+c.slice(0,this.column-1).replace(/[^\\t]/g," ");return r(">")+i(x)+o(c)+`\n `+E+r("^")}return" "+i(x)+o(c)}).join(`\n`)}toString(){let t=this.showSourceCode();return t&&(t=`\n\n`+t+`\n`),this.name+": "+this.message+t}};ro.exports=Dt;Dt.default=Dt});var fi=te((fp,so)=>{"use strict";var Wl=/(<)(\\/?style\\b)/gi,Ul=/(<)(!--)/g;function Ke(e){return typeof e!="string"||!e.includes("<")?e:e.replace(Wl,"\\\\3c $2").replace(Ul,"\\\\3c $2")}var oo={after:`\n`,beforeClose:`\n`,beforeComment:`\n`,beforeDecl:`\n`,beforeOpen:" ",beforeRule:`\n`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};function Vl(e){return e[0].toUpperCase()+e.slice(1)}var It=class{constructor(t){this.builder=t}atrule(t,n){let i=t.raws,r="@"+t.name,o=t.params?this.rawValue(t,"params"):"";if(typeof i.afterName<"u"?r+=i.afterName:o&&(r+=" "),t.nodes)this.block(t,r+o);else{let s=(i.between||"")+(n?";":"");this.builder(Ke(r+o+s),t)}}beforeAfter(t,n){let i;t.type==="decl"?i=this.raw(t,null,"beforeDecl"):t.type==="comment"?i=this.raw(t,null,"beforeComment"):n==="before"?i=this.raw(t,null,"beforeRule"):i=this.raw(t,null,"beforeClose");let r=t.parent,o=0;for(;r&&r.type!=="root";)o+=1,r=r.parent;if(i.includes(`\n`)){let s=this.raw(t,null,"indent");if(s.length)for(let u=0;u<o;u++)i+=s}return i}block(t,n){let i=this.raw(t,"between","beforeOpen");this.builder(Ke(n+i)+"{",t,"start");let r;t.nodes&&t.nodes.length?(this.body(t),r=this.raw(t,"after")):r=this.raw(t,"after","emptyBody"),r&&this.builder(Ke(r)),this.builder("}",t,"end")}body(t){let n=t.nodes,i=n.length-1;for(;i>0&&n[i].type==="comment";)i-=1;let r=this.raw(t,"semicolon"),o=t.type==="document";for(let s=0;s<n.length;s++){let u=n[s],a=this.raw(u,"before");a&&this.builder(o?a:Ke(a)),this.stringify(u,i!==s||r)}}comment(t){let n=this.raw(t,"left","commentLeft"),i=this.raw(t,"right","commentRight");this.builder(Ke("/*"+n+t.text+i+"*/"),t)}decl(t,n){let i=t.raws,r=this.raw(t,"between","colon"),o=t.prop+r+this.rawValue(t,"value");t.important&&(o+=i.important||" !important"),n&&(o+=";"),this.builder(Ke(o),t)}document(t){this.body(t)}raw(t,n,i){let r;if(i||(i=n),n&&(r=t.raws[n],typeof r<"u"))return r;let o=t.parent;if(i==="before"&&(!o||o.type==="root"&&o.first===t||o&&o.type==="document"))return"";if(!o)return oo[i];let s=t.root(),u=s.rawCache||(s.rawCache={});if(typeof u[i]<"u")return u[i];if(i==="before"||i==="after")return this.beforeAfter(t,i);{let a="raw"+Vl(i);this[a]?r=this[a](s,t):s.walk(l=>{if(r=l.raws[n],typeof r<"u")return!1})}return typeof r>"u"&&(r=oo[i]),u[i]=r,r}rawBeforeClose(t){let n;return t.walk(i=>{if(i.nodes&&i.nodes.length>0&&typeof i.raws.after<"u")return n=i.raws.after,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawBeforeComment(t,n){let i;return t.walkComments(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeDecl"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeDecl(t,n){let i;return t.walkDecls(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeRule"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeOpen(t){let n;return t.walk(i=>{if(i.type!=="decl"&&(n=i.raws.between,typeof n<"u"))return!1}),n}rawBeforeRule(t){let n;return t.walk(i=>{if(i.nodes&&(i.parent!==t||t.first!==i)&&typeof i.raws.before<"u")return n=i.raws.before,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawColon(t){let n;return t.walkDecls(i=>{if(typeof i.raws.between<"u")return n=i.raws.between.replace(/[^\\s:]/g,""),!1}),n}rawEmptyBody(t){let n;return t.walk(i=>{if(i.nodes&&i.nodes.length===0&&(n=i.raws.after,typeof n<"u"))return!1}),n}rawIndent(t){if(t.raws.indent)return t.raws.indent;let n;return t.walk(i=>{let r=i.parent;if(r&&r!==t&&r.parent&&r.parent===t&&typeof i.raws.before<"u"){let o=i.raws.before.split(`\n`);return n=o[o.length-1],n=n.replace(/\\S/g,""),!1}}),n}rawSemicolon(t){let n;return t.walk(i=>{if(i.nodes&&i.nodes.length&&i.last.type==="decl"&&(n=i.raws.semicolon,typeof n<"u"))return!1}),n}rawValue(t,n){let i=t[n],r=t.raws[n];return r&&r.value===i?r.raw:i}root(t){if(this.body(t),t.raws.after){let n=t.raws.after,i=t.parent&&t.parent.type==="document";this.builder(i?n:Ke(n))}}rule(t){this.block(t,this.rawValue(t,"selector")),t.raws.ownSemicolon&&this.builder(Ke(t.raws.ownSemicolon),t,"end")}stringify(t,n){if(!this[t.type])throw new Error("Unknown AST node type "+t.type+". Maybe you need to change PostCSS stringifier.");this[t.type](t,n)}};so.exports=It;It.default=It});var Pt=te((mp,ao)=>{"use strict";var zl=fi();function mi(e,t){new zl(t).stringify(e)}ao.exports=mi;mi.default=mi});var mn=te((pp,pi)=>{"use strict";pi.exports.isClean=Symbol("isClean");pi.exports.my=Symbol("my")});var Ht=te((hp,lo)=>{"use strict";var ql=fn(),jl=fi(),$l=Pt(),{isClean:Ot,my:Kl}=mn();function hi(e,t){let n=new e.constructor;for(let i in e){if(!Object.prototype.hasOwnProperty.call(e,i)||i==="proxyCache")continue;let r=e[i],o=typeof r;i==="parent"&&o==="object"?t&&(n[i]=t):i==="source"?n[i]=r:Array.isArray(r)?n[i]=r.map(s=>hi(s,n)):(o==="object"&&r!==null&&(r=hi(r)),n[i]=r)}return n}function ze(e,t){if(t&&typeof t.offset<"u")return t.offset;let n=1,i=1,r=0;for(let o=0;o<e.length;o++){if(i===t.line&&n===t.column){r=o;break}e[o]===`\n`?(n=1,i+=1):n+=1}return r}var Bt=class{get proxyOf(){return this}constructor(t={}){this.raws={},this[Ot]=!1,this[Kl]=!0;for(let n in t)if(n==="nodes"){this.nodes=[];for(let i of t[n])typeof i.clone=="function"?this.append(i.clone()):this.append(i)}else this[n]=t[n]}addToError(t){if(t.postcssNode=this,t.stack&&this.source&&/\\n\\s{4}at /.test(t.stack)){let n=this.source;t.stack=t.stack.replace(/\\n\\s{4}at /,`$&${n.input.from}:${n.start.line}:${n.start.column}$&`)}return t}after(t){return this.parent.insertAfter(this,t),this}assign(t={}){for(let n in t)this[n]=t[n];return this}before(t){return this.parent.insertBefore(this,t),this}cleanRaws(t){delete this.raws.before,delete this.raws.after,t||delete this.raws.between}clone(t={}){let n=hi(this);for(let i in t)n[i]=t[i];return n}cloneAfter(t={}){let n=this.clone(t);return this.parent.insertAfter(this,n),n}cloneBefore(t={}){let n=this.clone(t);return this.parent.insertBefore(this,n),n}error(t,n={}){if(this.source){let{end:i,start:r}=this.rangeBy(n);return this.source.input.error(t,{column:r.column,line:r.line},{column:i.column,line:i.line},n)}return new ql(t)}getProxyProcessor(){return{get(t,n){return n==="proxyOf"?t:n==="root"?()=>t.root().toProxy():t[n]},set(t,n,i){return t[n]===i||(t[n]=i,(n==="prop"||n==="value"||n==="name"||n==="params"||n==="important"||n==="text")&&t.markDirty()),!0}}}markClean(){this[Ot]=!0}markDirty(){if(this[Ot]){this[Ot]=!1;let t=this;for(;t=t.parent;)t[Ot]=!1}}next(){if(!this.parent)return;let t=this.parent.index(this);return this.parent.nodes[t+1]}positionBy(t={}){let n=this.source.start;if(t.index)n=this.positionInside(t.index);else if(t.word){let i="document"in this.source.input?this.source.input.document:this.source.input.css,o=i.slice(ze(i,this.source.start),ze(i,this.source.end)).indexOf(t.word);o!==-1&&(n=this.positionInside(o))}return n}positionInside(t){let n=this.source.start.column,i=this.source.start.line,r="document"in this.source.input?this.source.input.document:this.source.input.css,o=ze(r,this.source.start),s=o+t;for(let u=o;u<s;u++)r[u]===`\n`?(n=1,i+=1):n+=1;return{column:n,line:i,offset:s}}prev(){if(!this.parent)return;let t=this.parent.index(this);return this.parent.nodes[t-1]}rangeBy(t={}){let n="document"in this.source.input?this.source.input.document:this.source.input.css,i={column:this.source.start.column,line:this.source.start.line,offset:ze(n,this.source.start)},r=this.source.end?{column:this.source.end.column+1,line:this.source.end.line,offset:typeof this.source.end.offset=="number"?this.source.end.offset:ze(n,this.source.end)+1}:{column:i.column+1,line:i.line,offset:i.offset+1};if(t.word){let s=n.slice(ze(n,this.source.start),ze(n,this.source.end)).indexOf(t.word);s!==-1&&(i=this.positionInside(s),r=this.positionInside(s+t.word.length))}else t.start?i={column:t.start.column,line:t.start.line,offset:ze(n,t.start)}:t.index&&(i=this.positionInside(t.index)),t.end?r={column:t.end.column,line:t.end.line,offset:ze(n,t.end)}:typeof t.endIndex=="number"?r=this.positionInside(t.endIndex):t.index&&(r=this.positionInside(t.index+1));return(r.line<i.line||r.line===i.line&&r.column<=i.column)&&(r={column:i.column+1,line:i.line,offset:i.offset+1}),{end:r,start:i}}raw(t,n){return new jl().raw(this,t,n)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}replaceWith(...t){if(this.parent){let n=this,i=!1;for(let r of t)r===this?i=!0:i?(this.parent.insertAfter(n,r),n=r):this.parent.insertBefore(n,r);i||this.remove()}return this}root(){let t=this;for(;t.parent&&t.parent.type!=="document";)t=t.parent;return t}toJSON(t,n){let i={},r=n==null;n=n||new Map;let o=0;for(let s in this){if(!Object.prototype.hasOwnProperty.call(this,s)||s==="parent"||s==="proxyCache")continue;let u=this[s];if(Array.isArray(u))i[s]=u.map(a=>typeof a=="object"&&a.toJSON?a.toJSON(null,n):a);else if(typeof u=="object"&&u.toJSON)i[s]=u.toJSON(null,n);else if(s==="source"){if(u==null)continue;let a=n.get(u.input);a==null&&(a=o,n.set(u.input,o),o++),i[s]={end:u.end,inputId:a,start:u.start}}else i[s]=u}return r&&(i.inputs=[...n.keys()].map(s=>s.toJSON())),i}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(t=$l){t.stringify&&(t=t.stringify);let n="";return t(this,i=>{n+=i}),n}warn(t,n,i={}){let r={node:this};for(let o in i)r[o]=i[o];return t.warn(n,r)}};lo.exports=Bt;Bt.default=Bt});var Wt=te((gp,uo)=>{"use strict";var Jl=Ht(),Gt=class extends Jl{constructor(t){super(t),this.type="comment"}};uo.exports=Gt;Gt.default=Gt});var Vt=te((xp,co)=>{"use strict";var Xl=Ht(),Ut=class extends Xl{get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}constructor(t){t&&typeof t.value<"u"&&typeof t.value!="string"&&(t={...t,value:String(t.value)}),super(t),this.type="decl"}};co.exports=Ut;Ut.default=Ut});var Je=te((bp,So)=>{"use strict";var fo=Wt(),mo=Vt(),Yl=Ht(),{isClean:po,my:ho}=mn(),gi,go,xo,xi;function bo(e){return e.map(t=>(t.nodes&&(t.nodes=bo(t.nodes)),delete t.source,t))}function yo(e){if(e[po]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)yo(t)}var De=class e extends Yl{get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}append(...t){for(let n of t){let i=this.normalize(n,this.last);for(let r of i)this.proxyOf.nodes.push(r)}return this.markDirty(),this}cleanRaws(t){if(super.cleanRaws(t),this.nodes)for(let n of this.nodes)n.cleanRaws(t)}each(t){if(!this.proxyOf.nodes)return;let n=this.getIterator(),i,r;for(;this.indexes[n]<this.proxyOf.nodes.length&&(i=this.indexes[n],r=t(this.proxyOf.nodes[i],i),r!==!1);)this.indexes[n]+=1;return delete this.indexes[n],r}every(t){return this.nodes.every(t)}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let t=this.lastEach;return this.indexes[t]=0,t}getProxyProcessor(){return{get(t,n){return n==="proxyOf"?t:t[n]?n==="each"||typeof n=="string"&&n.startsWith("walk")?(...i)=>t[n](...i.map(r=>typeof r=="function"?(o,s)=>r(o.toProxy(),s):r)):n==="every"||n==="some"?i=>t[n]((r,...o)=>i(r.toProxy(),...o)):n==="root"?()=>t.root().toProxy():n==="nodes"?t.nodes.map(i=>i.toProxy()):n==="first"||n==="last"?t[n].toProxy():t[n]:t[n]},set(t,n,i){return t[n]===i||(t[n]=i,(n==="name"||n==="params"||n==="selector")&&t.markDirty()),!0}}}index(t){return typeof t=="number"?t:(t.proxyOf&&(t=t.proxyOf),this.proxyOf.nodes.indexOf(t))}insertAfter(t,n){let i=this.index(t),r=this.normalize(n,this.proxyOf.nodes[i]).reverse();i=this.index(t);for(let s of r)this.proxyOf.nodes.splice(i+1,0,s);let o;for(let s in this.indexes)o=this.indexes[s],i<o&&(this.indexes[s]=o+r.length);return this.markDirty(),this}insertBefore(t,n){let i=this.index(t),r=i===0?"prepend":!1,o=this.normalize(n,this.proxyOf.nodes[i],r).reverse();i=this.index(t);for(let u of o)this.proxyOf.nodes.splice(i,0,u);let s;for(let u in this.indexes)s=this.indexes[u],i<=s&&(this.indexes[u]=s+o.length);return this.markDirty(),this}normalize(t,n){if(typeof t=="string")t=bo(go(t).nodes);else if(typeof t>"u")t=[];else if(Array.isArray(t)){t=t.slice(0);for(let r of t)r.parent&&r.parent.removeChild(r,"ignore")}else if(t.type==="root"&&this.type!=="document"){t=t.nodes.slice(0);for(let r of t)r.parent&&r.parent.removeChild(r,"ignore")}else if(t.type)t=[t];else if(t.prop){if(typeof t.value>"u")throw new Error("Value field is missed in node creation");typeof t.value!="string"&&(t.value=String(t.value)),t=[new mo(t)]}else if(t.selector||t.selectors)t=[new xi(t)];else if(t.name)t=[new gi(t)];else if(t.text)t=[new fo(t)];else throw new Error("Unknown node type in node creation");return t.map(r=>(r[ho]||e.rebuild(r),r=r.proxyOf,r.parent&&r.parent.removeChild(r),r[po]&&yo(r),r.raws||(r.raws={}),typeof r.raws.before>"u"&&n&&typeof n.raws.before<"u"&&(r.raws.before=n.raws.before.replace(/\\S/g,"")),r.parent=this.proxyOf,r))}prepend(...t){t=t.reverse();for(let n of t){let i=this.normalize(n,this.first,"prepend").reverse();for(let r of i)this.proxyOf.nodes.unshift(r);for(let r in this.indexes)this.indexes[r]=this.indexes[r]+i.length}return this.markDirty(),this}push(t){return t.parent=this,this.proxyOf.nodes.push(t),this}removeAll(){for(let t of this.proxyOf.nodes)t.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(t){t=this.index(t),this.proxyOf.nodes[t].parent=void 0,this.proxyOf.nodes.splice(t,1);let n;for(let i in this.indexes)n=this.indexes[i],n>=t&&(this.indexes[i]=n-1);return this.markDirty(),this}replaceValues(t,n,i){return i||(i=n,n={}),this.walkDecls(r=>{n.props&&!n.props.includes(r.prop)||n.fast&&!r.value.includes(n.fast)||(r.value=r.value.replace(t,i))}),this.markDirty(),this}some(t){return this.nodes.some(t)}walk(t){return this.each((n,i)=>{let r;try{r=t(n,i)}catch(o){throw n.addToError(o)}return r!==!1&&n.walk&&(r=n.walk(t)),r})}walkAtRules(t,n){return n?t instanceof RegExp?this.walk((i,r)=>{if(i.type==="atrule"&&t.test(i.name))return n(i,r)}):this.walk((i,r)=>{if(i.type==="atrule"&&i.name===t)return n(i,r)}):(n=t,this.walk((i,r)=>{if(i.type==="atrule")return n(i,r)}))}walkComments(t){return this.walk((n,i)=>{if(n.type==="comment")return t(n,i)})}walkDecls(t,n){return n?t instanceof RegExp?this.walk((i,r)=>{if(i.type==="decl"&&t.test(i.prop))return n(i,r)}):this.walk((i,r)=>{if(i.type==="decl"&&i.prop===t)return n(i,r)}):(n=t,this.walk((i,r)=>{if(i.type==="decl")return n(i,r)}))}walkRules(t,n){return n?t instanceof RegExp?this.walk((i,r)=>{if(i.type==="rule"&&t.test(i.selector))return n(i,r)}):this.walk((i,r)=>{if(i.type==="rule"&&i.selector===t)return n(i,r)}):(n=t,this.walk((i,r)=>{if(i.type==="rule")return n(i,r)}))}};De.registerParse=e=>{go=e};De.registerRule=e=>{xi=e};De.registerAtRule=e=>{gi=e};De.registerRoot=e=>{xo=e};So.exports=De;De.default=De;De.rebuild=e=>{e.type==="atrule"?Object.setPrototypeOf(e,gi.prototype):e.type==="rule"?Object.setPrototypeOf(e,xi.prototype):e.type==="decl"?Object.setPrototypeOf(e,mo.prototype):e.type==="comment"?Object.setPrototypeOf(e,fo.prototype):e.type==="root"&&Object.setPrototypeOf(e,xo.prototype),e[ho]=!0,e.nodes&&e.nodes.forEach(t=>{De.rebuild(t)})}});var pn=te((yp,Ao)=>{"use strict";var Eo=Je(),pt=class extends Eo{constructor(t){super(t),this.type="atrule"}append(...t){return this.proxyOf.nodes||(this.nodes=[]),super.append(...t)}prepend(...t){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...t)}};Ao.exports=pt;pt.default=pt;Eo.registerAtRule(pt)});var hn=te((Sp,Co)=>{"use strict";var Ql=Je(),wo,Fo,at=class extends Ql{constructor(t){super({type:"document",...t}),this.nodes||(this.nodes=[])}toResult(t={}){return new wo(new Fo,this,t).stringify()}};at.registerLazyResult=e=>{wo=e};at.registerProcessor=e=>{Fo=e};Co.exports=at;at.default=at});var Mo=te((Ep,_o)=>{var Zl="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",eu=(e,t=21)=>(n=t)=>{let i="",r=n|0;for(;r--;)i+=e[Math.random()*e.length|0];return i},tu=(e=21)=>{let t="",n=e|0;for(;n--;)t+=Zl[Math.random()*64|0];return t};_o.exports={nanoid:tu,customAlphabet:eu}});var gn=te(()=>{});var xn=te(()=>{});var bi=te(()=>{});var vo=te(()=>{});var Si=te((Np,Lo)=>{"use strict";var{existsSync:nu,readFileSync:iu}=vo(),{dirname:yi,join:ru}=gn(),{SourceMapConsumer:To,SourceMapGenerator:No}=xn();function ou(e){return Buffer?Buffer.from(e,"base64").toString():window.atob(e)}var zt=class{constructor(t,n){if(n.map===!1)return;n.unsafeMap&&(this.unsafeMap=!0),this.loadAnnotation(t),this.inline=this.startWith(this.annotation,"data:");let i=n.map?n.map.prev:void 0,r=this.loadMap(n.from,i);!this.mapFile&&n.from&&(this.mapFile=n.from),this.mapFile&&(this.root=yi(this.mapFile)),r&&(this.text=r)}consumer(){return this.consumerCache||(this.consumerCache=new To(this.json||this.text)),this.consumerCache}decodeInline(t){let n=/^data:application\\/json;charset=utf-?8;base64,/,i=/^data:application\\/json;base64,/,r=/^data:application\\/json;charset=utf-?8,/,o=/^data:application\\/json,/,s=t.match(r)||t.match(o);if(s)return decodeURIComponent(t.substr(s[0].length));let u=t.match(n)||t.match(i);if(u)return ou(t.substr(u[0].length));let a=t.slice(22);throw a=a.slice(0,a.indexOf(",")),new Error("Unsupported source map encoding "+a)}getAnnotationURL(t){return t.replace(/^\\/\\*\\s*# sourceMappingURL=/,"").trim()}isMap(t){return typeof t!="object"?!1:typeof t.mappings=="string"||typeof t._mappings=="string"||Array.isArray(t.sections)}loadAnnotation(t){let n=t.match(/\\/\\*\\s*# sourceMappingURL=/g);if(!n)return;let i=t.lastIndexOf(n.pop()),r=t.indexOf("*/",i);i>-1&&r>-1&&(this.annotation=this.getAnnotationURL(t.substring(i,r)))}loadFile(t,n,i){if(!(!i&&!this.unsafeMap&&!/\\.map$/i.test(t))&&(this.root=yi(t),nu(t)))return this.mapFile=t,iu(t,"utf-8").toString().trim()}loadMap(t,n){if(n===!1)return!1;if(n){if(typeof n=="string")return n;if(typeof n=="function"){let i=n(t);if(i){let r=this.loadFile(i,t,!0);if(!r)throw new Error("Unable to load previous source map: "+i.toString());return r}}else{if(n instanceof To)return No.fromSourceMap(n).toString();if(n instanceof No)return n.toString();if(this.isMap(n))return JSON.stringify(n);throw new Error("Unsupported previous source map format: "+n.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let i=this.annotation;t&&(i=ru(yi(t),i));let r=this.loadFile(i,t,!1);if(r)try{this.json=JSON.parse(r.replace(/^\\)]}\'[^\\n]*\\n/,""))}catch{return}return r}}}startWith(t,n){return t?t.substr(0,n.length)===n:!1}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};Lo.exports=zt;zt.default=zt});var qt=te((Lp,Po)=>{"use strict";var{nanoid:su}=Mo(),{isAbsolute:wi,resolve:Fi}=gn(),{SourceMapConsumer:au,SourceMapGenerator:lu}=xn(),{fileURLToPath:Ro,pathToFileURL:bn}=bi(),ko=fn(),uu=Si(),Ei=di(),Ai=Symbol("lineToIndexCache"),cu=!!(au&&lu),Do=!!(Fi&&wi);function Io(e){if(e[Ai])return e[Ai];let t=e.css.split(`\n`),n=new Array(t.length),i=0;for(let r=0,o=t.length;r<o;r++)n[r]=i,i+=t[r].length+1;return e[Ai]=n,n}var ht=class{get from(){return this.file||this.id}constructor(t,n={}){if(t===null||typeof t>"u"||typeof t=="object"&&!t.toString)throw new Error(`PostCSS received ${t} instead of CSS string`);if(this.css=t.toString(),this.css[0]==="\\uFEFF"||this.css[0]==="\\uFFFE"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,this.document=this.css,n.document&&(this.document=n.document.toString()),n.from&&(!Do||/^\\w+:\\/\\//.test(n.from)||wi(n.from)?this.file=n.from:this.file=Fi(n.from)),Do&&cu){let i=new uu(this.css,n);if(i.text){this.map=i;let r=i.consumer().file;!this.file&&r&&(this.file=this.mapResolve(r))}}this.file||(this.id="<input css "+su(6)+">"),this.map&&(this.map.file=this.from)}error(t,n,i,r={}){let o,s,u,a,l;if(n&&typeof n=="object"){let p=n,f=i;if(typeof p.offset=="number"){a=p.offset;let x=this.fromOffset(a);n=x.line,i=x.col}else n=p.line,i=p.column,a=this.fromLineAndColumn(n,i);if(typeof f.offset=="number"){u=f.offset;let x=this.fromOffset(u);s=x.line,o=x.col}else s=f.line,o=f.column,u=this.fromLineAndColumn(f.line,f.column)}else if(i)a=this.fromLineAndColumn(n,i);else{a=n;let p=this.fromOffset(a);n=p.line,i=p.col}let c=this.origin(n,i,s,o);return c?l=new ko(t,c.endLine===void 0?c.line:{column:c.column,line:c.line},c.endLine===void 0?c.column:{column:c.endColumn,line:c.endLine},c.source,c.file,r.plugin):l=new ko(t,s===void 0?n:{column:i,line:n},s===void 0?i:{column:o,line:s},this.css,this.file,r.plugin),l.input={column:i,endColumn:o,endLine:s,endOffset:u,line:n,offset:a,source:this.css},this.file&&(bn&&(l.input.url=bn(this.file).toString()),l.input.file=this.file),l}fromLineAndColumn(t,n){return Io(this)[t-1]+n-1}fromOffset(t){let n=Io(this),i=n[n.length-1],r=0;if(t>=i)r=n.length-1;else{let o=n.length-2,s;for(;r<o;)if(s=r+(o-r>>1),t<n[s])o=s-1;else if(t>=n[s+1])r=s+1;else{r=s;break}}return{col:t-n[r]+1,line:r+1}}mapResolve(t){return/^\\w+:\\/\\//.test(t)?t:Fi(this.map.consumer().sourceRoot||this.map.root||".",t)}origin(t,n,i,r){if(!this.map)return!1;let o=this.map.consumer(),s=o.originalPositionFor({column:n,line:t});if(!s.source)return!1;let u;typeof i=="number"&&(u=o.originalPositionFor({column:r,line:i}));let a;wi(s.source)?a=bn(s.source):a=new URL(s.source,this.map.consumer().sourceRoot||bn(this.map.mapFile));let l={column:s.column,endColumn:u&&u.column,endLine:u&&u.line,line:s.line,url:a.toString()};if(a.protocol==="file:")if(Ro)l.file=Ro(a);else throw new Error("file: protocol is not available in this PostCSS build");let c=o.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let t={};for(let n of["hasBOM","css","file","id"])this[n]!=null&&(t[n]=this[n]);return this.map&&(t.map={...this.map},t.map.consumerCache&&(t.map.consumerCache=void 0)),t}};Po.exports=ht;ht.default=ht;Ei&&Ei.registerInput&&Ei.registerInput(ht)});var gt=te((Rp,Go)=>{"use strict";var Oo=Je(),Bo,Ho,Xe=class extends Oo{constructor(t){super(t),this.type="root",this.nodes||(this.nodes=[])}normalize(t,n,i){let r=super.normalize(t);if(n){if(i==="prepend")this.nodes.length>1?n.raws.before=this.nodes[1].raws.before:delete n.raws.before;else if(this.first!==n)for(let o of r)o.raws.before=n.raws.before}return r}removeChild(t,n){let i=this.index(t);return!n&&i===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[i].raws.before),super.removeChild(t)}toResult(t={}){return new Bo(new Ho,this,t).stringify()}};Xe.registerLazyResult=e=>{Bo=e};Xe.registerProcessor=e=>{Ho=e};Go.exports=Xe;Xe.default=Xe;Oo.registerRoot(Xe)});var Ci=te((kp,Wo)=>{"use strict";var jt={comma(e){return jt.split(e,[","],!0)},space(e){let t=[" ",`\n`," "];return jt.split(e,t)},split(e,t,n){let i=[],r="",o=!1,s=0,u=!1,a="",l=!1;for(let c of e)l?l=!1:c==="\\\\"?l=!0:u?c===a&&(u=!1):c===\'"\'||c==="\'"?(u=!0,a=c):c==="("?s+=1:c===")"?s>0&&(s-=1):s===0&&t.includes(c)&&(o=!0),o?(r!==""&&i.push(r.trim()),r="",o=!1):r+=c;return(n||r!=="")&&i.push(r.trim()),i}};Wo.exports=jt;jt.default=jt});var yn=te((Dp,Vo)=>{"use strict";var Uo=Je(),du=Ci(),xt=class extends Uo{get selectors(){return du.comma(this.selector)}set selectors(t){let n=this.selector?this.selector.match(/,\\s*/):null,i=n?n[0]:","+this.raw("between","beforeOpen");this.selector=t.join(i)}constructor(t){super(t),this.type="rule",this.nodes||(this.nodes=[])}};Vo.exports=xt;xt.default=xt;Uo.registerRule(xt)});var qo=te((Ip,zo)=>{"use strict";var fu=pn(),mu=Wt(),pu=Vt(),hu=qt(),gu=Si(),xu=gt(),bu=yn();function $t(e,t){if(Array.isArray(e))return e.map(r=>$t(r));let{inputs:n,...i}=e;if(n){t=[];for(let r of n){let o={...r,__proto__:hu.prototype};o.map&&(o.map={...o.map,__proto__:gu.prototype}),t.push(o)}}if(i.nodes&&(i.nodes=e.nodes.map(r=>$t(r,t))),i.source){let{inputId:r,...o}=i.source;i.source=o,r!=null&&(i.source.input=t[r])}if(i.type==="root")return new xu(i);if(i.type==="decl")return new pu(i);if(i.type==="rule")return new bu(i);if(i.type==="comment")return new mu(i);if(i.type==="atrule")return new fu(i);throw new Error("Unknown node type: "+e.type)}zo.exports=$t;$t.default=$t});var Mi=te((Pp,Yo)=>{"use strict";var{dirname:Sn,relative:$o,resolve:Ko,sep:Jo}=gn(),{SourceMapConsumer:Xo,SourceMapGenerator:En}=xn(),{pathToFileURL:jo}=bi(),yu=qt(),Su=!!(Xo&&En),Eu=!!(Sn&&Ko&&$o&&Jo),_i=class{constructor(t,n,i,r){this.stringify=t,this.mapOpts=i.map||{},this.root=n,this.opts=i,this.css=r,this.originalCSS=r,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let t;this.isInline()?t="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?t=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?t=this.mapOpts.annotation(this.opts.to,this.root):t=this.outputFile()+".map";let n=`\n`;this.css.includes(`\\r\n`)&&(n=`\\r\n`),this.css+=n+"/*# sourceMappingURL="+t+" */"}applyPrevMaps(){for(let t of this.previous()){let n=this.toUrl(this.path(t.file)),i=t.root||Sn(t.file),r;this.mapOpts.sourcesContent===!1?(r=new Xo(t.text),r.sourcesContent&&(r.sourcesContent=null)):r=t.consumer(),this.map.applySourceMap(r,n,this.toUrl(this.path(i)))}}clearAnnotation(){if(this.mapOpts.annotation!==!1){if(this.root){let t;for(let n=this.root.nodes.length-1;n>=0;n--)t=this.root.nodes[n],t.type==="comment"&&t.text.startsWith("# sourceMappingURL=")&&this.root.removeChild(n)}else if(this.css){let t;for(;(t=this.css.lastIndexOf("/*#"))!==-1;){let n=this.css.indexOf("*/",t+3);if(n===-1)break;for(;t>0&&this.css[t-1]===`\n`;)t--;this.css=this.css.slice(0,t)+this.css.slice(n+2)}}}}generate(){if(this.clearAnnotation(),Eu&&Su&&this.isMap())return this.generateMap();{let t="";return this.stringify(this.root,n=>{t+=n}),[t]}}generateMap(){if(this.root)this.generateString();else if(this.previous().length===1){let t=this.previous()[0].consumer();t.file=this.outputFile(),this.map=En.fromSourceMap(t,{ignoreInvalidMapping:!0})}else this.map=new En({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>"});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new En({file:this.outputFile(),ignoreInvalidMapping:!0});let t=1,n=1,i="<no source>",r={generated:{column:0,line:0},original:{column:0,line:0},source:""},o,s;this.stringify(this.root,(u,a,l)=>{if(this.css+=u,a&&l!=="end"&&(r.generated.line=t,r.generated.column=n-1,a.source&&a.source.start?(r.source=this.sourcePath(a),r.original.line=a.source.start.line,r.original.column=a.source.start.column-1,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,this.map.addMapping(r))),s=u.match(/\\n/g),s?(t+=s.length,o=u.lastIndexOf(`\n`),n=u.length-o):n+=u.length,a&&l!=="start"){let c=a.parent||{raws:{}};(!(a.type==="decl"||a.type==="atrule"&&!a.nodes)||a!==c.last||c.raws.semicolon)&&(a.source&&a.source.end?(r.source=this.sourcePath(a),r.original.line=a.source.end.line,r.original.column=a.source.end.column-1,r.generated.line=t,r.generated.column=n-2,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,r.generated.line=t,r.generated.column=n-1,this.map.addMapping(r)))}})}isAnnotation(){return this.isInline()?!0:typeof this.mapOpts.annotation<"u"?this.mapOpts.annotation:this.previous().length?this.previous().some(t=>t.annotation):!0}isInline(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;let t=this.mapOpts.annotation;return typeof t<"u"&&t!==!0?!1:this.previous().length?this.previous().some(n=>n.inline):!0}isMap(){return typeof this.opts.map<"u"?!!this.opts.map:this.previous().length>0}isSourcesContent(){return typeof this.mapOpts.sourcesContent<"u"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(t=>t.withContent()):!0}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(t){if(this.mapOpts.absolute||t.charCodeAt(0)===60||/^\\w+:\\/\\//.test(t))return t;let n=this.memoizedPaths.get(t);if(n)return n;let i=this.opts.to?Sn(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(i=Sn(Ko(i,this.mapOpts.annotation)));let r=$o(i,t);return this.memoizedPaths.set(t,r),r}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(t=>{if(t.source&&t.source.input.map){let n=t.source.input.map;this.previousMaps.includes(n)||this.previousMaps.push(n)}});else{let t=new yu(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps}setSourcesContent(){let t={};if(this.root)this.root.walk(n=>{if(n.source){let i=n.source.input.from;if(i&&!t[i]){t[i]=!0;let r=this.usesFileUrls?this.toFileUrl(i):this.toUrl(this.path(i));this.map.setSourceContent(r,n.source.input.css)}}});else if(this.css){let n=this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>";this.map.setSourceContent(n,this.css)}}sourcePath(t){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(t.source.input.from):this.toUrl(this.path(t.source.input.from))}toBase64(t){return Buffer?Buffer.from(t).toString("base64"):window.btoa(unescape(encodeURIComponent(t)))}toFileUrl(t){let n=this.memoizedFileURLs.get(t);if(n)return n;if(jo){let i=jo(t).toString();return this.memoizedFileURLs.set(t,i),i}else throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(t){let n=this.memoizedURLs.get(t);if(n)return n;Jo==="\\\\"&&(t=t.replace(/\\\\/g,"/"));let i=encodeURI(t).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(t,i),i}};Yo.exports=_i});var es=te((Op,Zo)=>{"use strict";var An=/[\\t\\n\\f\\r "#\'()/;[\\\\\\]{}]/g,wn=/[\\t\\n\\f\\r !"#\'():;@[\\\\\\]{}]|\\/(?=\\*)/g,Au=/.[\\r\\n"\'(/\\\\]/,Qo=/[\\da-f]/i;Zo.exports=function(t,n={}){let i=t.css.valueOf(),r=n.ignoreErrors,o,s,u,a,l,c,p,f,x,E,b=i.length,g=0,A=[],_=[],N=-1;function $(){return g}function B(M){throw t.error("Unclosed "+M,g)}function v(){return _.length===0&&g>=b}function S(M){if(_.length)return _.pop();if(g>=b)return;let T=M?M.ignoreUnclosed:!1;switch(o=i.charCodeAt(g),o){case 10:case 32:case 9:case 13:case 12:{a=g;do a+=1,o=i.charCodeAt(a);while(o===32||o===10||o===9||o===13||o===12);c=["space",i.slice(g,a)],g=a-1;break}case 91:case 93:case 123:case 125:case 58:case 59:case 41:{let R=String.fromCharCode(o);c=[R,R,g];break}case 40:{if(E=A.length?A.pop()[1]:"",x=i.charCodeAt(g+1),E==="url"&&x!==39&&x!==34&&x!==32&&x!==10&&x!==9&&x!==12&&x!==13){a=g;do{if(p=!1,a=i.indexOf(")",a+1),a===-1)if(r||T){a=g;break}else B("bracket");for(f=a;i.charCodeAt(f-1)===92;)f-=1,p=!p}while(p);c=["brackets",i.slice(g,a+1),g,a],g=a}else g<=N?c=["(","(",g]:(a=i.indexOf(")",g+1),s=i.slice(g,a+1),a===-1||Au.test(s)?(N=a===-1?b:a,c=["(","(",g]):(c=["brackets",s,g,a],g=a));break}case 39:case 34:{l=o===39?"\'":\'"\',a=g;do{if(p=!1,a=i.indexOf(l,a+1),a===-1)if(r||T){a=g+1;break}else B("string");for(f=a;i.charCodeAt(f-1)===92;)f-=1,p=!p}while(p);c=["string",i.slice(g,a+1),g,a],g=a;break}case 64:{An.lastIndex=g+1,An.test(i),An.lastIndex===0?a=i.length-1:a=An.lastIndex-2,c=["at-word",i.slice(g,a+1),g,a],g=a;break}case 92:{for(a=g,u=!0;i.charCodeAt(a+1)===92;)a+=1,u=!u;if(o=i.charCodeAt(a+1),u&&o!==47&&o!==32&&o!==10&&o!==9&&o!==13&&o!==12&&(a+=1,Qo.test(i.charAt(a)))){for(;Qo.test(i.charAt(a+1));)a+=1;i.charCodeAt(a+1)===32&&(a+=1)}c=["word",i.slice(g,a+1),g,a],g=a;break}default:{o===47&&i.charCodeAt(g+1)===42?(a=i.indexOf("*/",g+2)+1,a===0&&(r||T?a=i.length:B("comment")),c=["comment",i.slice(g,a+1),g,a],g=a):(wn.lastIndex=g+1,wn.test(i),wn.lastIndex===0?a=i.length-1:a=wn.lastIndex-2,c=["word",i.slice(g,a+1),g,a],A.push(c),g=a);break}}return g++,c}function C(M){_.push(M)}return{back:C,endOfFile:v,nextToken:S,position:$}}});var rs=te((Bp,is)=>{"use strict";var wu=pn(),Fu=Wt(),Cu=Vt(),_u=gt(),ts=yn(),Mu=es(),ns={empty:!0,space:!0};function vu(e){for(let t=e.length-1;t>=0;t--){let n=e[t],i=n[3]||n[2];if(i)return i}}var vi=class{constructor(t){this.input=t,this.root=new _u,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:t,start:{column:1,line:1,offset:0}}}atrule(t){let n=new wu;n.name=t[1].slice(1),n.name===""&&this.unnamedAtrule(n,t),this.init(n,t[2]);let i,r,o,s=!1,u=!1,a=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=this.tokenizer.nextToken(),i=t[0],i==="("||i==="["?l.push(i==="("?")":"]"):i==="{"&&l.length>0?l.push("}"):i===l[l.length-1]&&l.pop(),l.length===0)if(i===";"){n.source.end=this.getPosition(t[2]),n.source.end.offset++,this.semicolon=!0;break}else if(i==="{"){u=!0;break}else if(i==="}"){if(a.length>0){for(o=a.length-1,r=a[o];r&&r[0]==="space";)r=a[--o];r&&(n.source.end=this.getPosition(r[3]||r[2]),n.source.end.offset++)}this.end(t);break}else a.push(t);else a.push(t);if(this.tokenizer.endOfFile()){s=!0;break}}n.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(n.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(n,"params",a),s&&(t=a[a.length-1],n.source.end=this.getPosition(t[3]||t[2]),n.source.end.offset++,this.spaces=n.raws.between,n.raws.between="")):(n.raws.afterName="",n.params=""),u&&(n.nodes=[],this.current=n)}checkMissedSemicolon(t){let n=this.colon(t);if(n===!1)return;let i=0,r;for(let o=n-1;o>=0&&(r=t[o],!(r[0]!=="space"&&(i+=1,i===2)));o--);throw this.input.error("Missed semicolon",r[0]==="word"?r[3]+1:r[2])}colon(t){let n=0,i,r,o;for(let[s,u]of t.entries()){if(r=u,o=r[0],o==="("&&(n+=1),o===")"&&(n-=1),n===0&&o===":")if(!i)this.doubleColon(r);else{if(i[0]==="word"&&i[1]==="progid")continue;return s}i=r}return!1}comment(t){let n=new Fu;this.init(n,t[2]),n.source.end=this.getPosition(t[3]||t[2]),n.source.end.offset++;let i=t[1].slice(2,-2);if(!i.trim())n.text="",n.raws.left=i,n.raws.right="";else{let r=i.match(/^(\\s*)([^]*\\S)(\\s*)$/);n.text=r[2],n.raws.left=r[1],n.raws.right=r[3]}}createTokenizer(){this.tokenizer=Mu(this.input)}decl(t,n){let i=new Cu;this.init(i,t[0][2]);let r=t[t.length-1];for(r[0]===";"&&(this.semicolon=!0,t.pop()),i.source.end=this.getPosition(r[3]||r[2]||vu(t)),i.source.end.offset++;t[0][0]!=="word";)t.length===1&&this.unknownWord(t),i.raws.before+=t.shift()[1];for(i.source.start=this.getPosition(t[0][2]),i.prop="";t.length;){let l=t[0][0];if(l===":"||l==="space"||l==="comment")break;i.prop+=t.shift()[1]}i.raws.between="";let o;for(;t.length;)if(o=t.shift(),o[0]===":"){i.raws.between+=o[1];break}else o[0]==="word"&&/\\w/.test(o[1])&&this.unknownWord([o]),i.raws.between+=o[1];(i.prop[0]==="_"||i.prop[0]==="*")&&(i.raws.before+=i.prop[0],i.prop=i.prop.slice(1));let s=[],u;for(;t.length&&(u=t[0][0],!(u!=="space"&&u!=="comment"));)s.push(t.shift());this.precheckMissedSemicolon(t);for(let l=t.length-1;l>=0;l--){if(o=t[l],o[1].toLowerCase()==="!important"){i.important=!0;let c=this.stringFrom(t,l);c=this.spacesFromEnd(t)+c,c!==" !important"&&(i.raws.important=c);break}else if(o[1].toLowerCase()==="important"){let c=t.slice(0),p="";for(let f=l;f>0;f--){let x=c[f][0];if(p.trim().startsWith("!")&&x!=="space")break;p=c.pop()[1]+p}p.trim().startsWith("!")&&(i.important=!0,i.raws.important=p,t=c)}if(o[0]!=="space"&&o[0]!=="comment")break}t.some(l=>l[0]!=="space"&&l[0]!=="comment")&&(i.raws.between+=s.map(l=>l[1]).join(""),s=[]),this.raw(i,"value",s.concat(t),n),i.value.includes(":")&&!n&&this.checkMissedSemicolon(t)}doubleColon(t){throw this.input.error("Double colon",{offset:t[2]},{offset:t[2]+t[1].length})}emptyRule(t){let n=new ts;this.init(n,t[2]),n.selector="",n.raws.between="",this.current=n}end(t){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(t[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(t)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(t){if(this.spaces+=t[1],this.current.nodes){let n=this.current.nodes[this.current.nodes.length-1];n&&n.type==="rule"&&!n.raws.ownSemicolon&&(n.raws.ownSemicolon=this.spaces,this.spaces="",n.source.end=this.getPosition(t[2]),n.source.end.offset+=n.raws.ownSemicolon.length)}}getPosition(t){let n=this.input.fromOffset(t);return{column:n.col,line:n.line,offset:t}}init(t,n){this.current.push(t),t.source={input:this.input,start:this.getPosition(n)},t.raws.before=this.spaces,this.spaces="",t.type!=="comment"&&(this.semicolon=!1)}other(t){let n=!1,i=null,r=!1,o=null,s=[],u=t[1].startsWith("--"),a=[],l=t;for(;l;){if(i=l[0],a.push(l),i==="("||i==="[")o||(o=l),s.push(i==="("?")":"]");else if(u&&r&&i==="{")o||(o=l),s.push("}");else if(s.length===0)if(i===";")if(r){this.decl(a,u);return}else break;else if(i==="{"){this.rule(a);return}else if(i==="}"){this.tokenizer.back(a.pop()),n=!0;break}else i===":"&&(r=!0);else i===s[s.length-1]&&(s.pop(),s.length===0&&(o=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(n=!0),s.length>0&&this.unclosedBracket(o),n&&r){if(!u)for(;a.length&&(l=a[a.length-1][0],!(l!=="space"&&l!=="comment"));)this.tokenizer.back(a.pop());this.decl(a,u)}else this.unknownWord(a)}parse(){let t;for(;!this.tokenizer.endOfFile();)switch(t=this.tokenizer.nextToken(),t[0]){case"space":this.spaces+=t[1];break;case";":this.freeSemicolon(t);break;case"}":this.end(t);break;case"comment":this.comment(t);break;case"at-word":this.atrule(t);break;case"{":this.emptyRule(t);break;default:this.other(t);break}this.endFile()}precheckMissedSemicolon(){}raw(t,n,i,r){let o,s,u=i.length,a="",l=!0,c,p;for(let f=0;f<u;f+=1)o=i[f],s=o[0],s==="space"&&f===u-1&&!r?l=!1:s==="comment"?(p=i[f-1]?i[f-1][0]:"empty",c=i[f+1]?i[f+1][0]:"empty",!ns[p]&&!ns[c]?a.slice(-1)===","?l=!1:a+=o[1]:l=!1):a+=o[1];if(!l){let f=i.reduce((x,E)=>x+E[1],"");t.raws[n]={raw:f,value:a}}t[n]=a}rule(t){t.pop();let n=new ts;this.init(n,t[0][2]),n.raws.between=this.spacesAndCommentsFromEnd(t),this.raw(n,"selector",t),this.current=n}spacesAndCommentsFromEnd(t){let n,i="";for(;t.length&&(n=t[t.length-1][0],!(n!=="space"&&n!=="comment"));)i=t.pop()[1]+i;return i}spacesAndCommentsFromStart(t){let n,i="";for(;t.length&&(n=t[0][0],!(n!=="space"&&n!=="comment"));)i+=t.shift()[1];return i}spacesFromEnd(t){let n,i="";for(;t.length&&(n=t[t.length-1][0],n==="space");)i=t.pop()[1]+i;return i}stringFrom(t,n){let i="";for(let r=n;r<t.length;r++)i+=t[r][1];return t.splice(n,t.length-n),i}unclosedBlock(){let t=this.current.source.start;throw this.input.error("Unclosed block",t.line,t.column)}unclosedBracket(t){throw this.input.error("Unclosed bracket",{offset:t[2]},{offset:t[2]+1})}unexpectedClose(t){throw this.input.error("Unexpected }",{offset:t[2]},{offset:t[2]+1})}unknownWord(t){throw this.input.error("Unknown word "+t[0][1],{offset:t[0][2]},{offset:t[0][2]+t[0][1].length})}unnamedAtrule(t,n){throw this.input.error("At-rule without name",{offset:n[2]},{offset:n[2]+n[1].length})}};is.exports=vi});var Cn=te((Hp,os)=>{"use strict";var Tu=Je(),Nu=qt(),Lu=rs();function Fn(e,t){let n=new Nu(e,t),i=new Lu(n);try{i.parse()}catch(r){throw r}return i.root}os.exports=Fn;Fn.default=Fn;Tu.registerParse(Fn)});var Ti=te((Gp,ss)=>{"use strict";var Kt=class{constructor(t,n={}){if(this.type="warning",this.text=t,n.node&&n.node.source){let i=n.node.rangeBy(n);this.line=i.start.line,this.column=i.start.column,this.endLine=i.end.line,this.endColumn=i.end.column}for(let i in n)this[i]=n[i]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};ss.exports=Kt;Kt.default=Kt});var _n=te((Wp,as)=>{"use strict";var Ru=Ti(),Jt=class{get content(){return this.css}constructor(t,n,i){this.processor=t,this.messages=[],this.root=n,this.opts=i,this.css="",this.map=void 0}toString(){return this.css}warn(t,n={}){n.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(n.plugin=this.lastPlugin.postcssPlugin);let i=new Ru(t,n);return this.messages.push(i),i}warnings(){return this.messages.filter(t=>t.type==="warning")}};as.exports=Jt;Jt.default=Jt});var Ni=te((Up,us)=>{"use strict";var ls={};us.exports=function(t){ls[t]||(ls[t]=!0,typeof console<"u"&&console.warn&&console.warn(t))}});var ki=te((zp,ms)=>{"use strict";var ku=Je(),Du=hn(),Iu=Mi(),Pu=Cn(),cs=_n(),Ou=gt(),Bu=Pt(),{isClean:He,my:Hu}=mn(),Vp=Ni(),Gu={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},Wu={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},Uu={Once:!0,postcssPlugin:!0,prepare:!0},bt=0;function Xt(e){return typeof e=="object"&&typeof e.then=="function"}function fs(e){let t=!1,n=Gu[e.type];return e.type==="decl"?t=e.prop.toLowerCase():e.type==="atrule"&&(t=e.name.toLowerCase()),t&&e.append?[n,n+"-"+t,bt,n+"Exit",n+"Exit-"+t]:t?[n,n+"-"+t,n+"Exit",n+"Exit-"+t]:e.append?[n,bt,n+"Exit"]:[n,n+"Exit"]}function ds(e){let t;return e.type==="document"?t=["Document",bt,"DocumentExit"]:e.type==="root"?t=["Root",bt,"RootExit"]:t=fs(e),{eventIndex:0,events:t,iterator:0,node:e,visitorIndex:0,visitors:[]}}function Li(e){return e[He]=!1,e.nodes&&e.nodes.forEach(t=>Li(t)),e}var Ri={},Ye=class e{get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}constructor(t,n,i){this.stringified=!1,this.processed=!1;let r;if(typeof n=="object"&&n!==null&&(n.type==="root"||n.type==="document"))r=Li(n);else if(n instanceof e||n instanceof cs)r=Li(n.root),n.map&&(typeof i.map>"u"&&(i.map={}),i.map.inline||(i.map.inline=!1),i.map.prev=n.map);else{let o=Pu;i.syntax&&(o=i.syntax.parse),i.parser&&(o=i.parser),o.parse&&(o=o.parse);try{r=o(n,i)}catch(s){this.processed=!0,this.error=s}r&&!r[Hu]&&ku.rebuild(r)}this.result=new cs(t,r,i),this.helpers={...Ri,postcss:Ri,result:this.result},this.plugins=this.processor.plugins.map(o=>typeof o=="object"&&o.prepare?{...o,...o.prepare(this.result)}:o)}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(t){return this.async().catch(t)}finally(t){return this.async().then(t,t)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(t,n){let i=this.result.lastPlugin;try{n&&n.addToError(t),this.error=t,t.name==="CssSyntaxError"&&!t.plugin?(t.plugin=i.postcssPlugin,t.setMessage()):i.postcssVersion}catch(r){console&&console.error&&console.error(r)}return t}prepareVisitors(){this.listeners={};let t=(n,i,r)=>{this.listeners[i]||(this.listeners[i]=[]),this.listeners[i].push([n,r])};for(let n of this.plugins)if(typeof n=="object")for(let i in n){if(!Wu[i]&&/^[A-Z]/.test(i))throw new Error(`Unknown event ${i} in ${n.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Uu[i])if(typeof n[i]=="object")for(let r in n[i])r==="*"?t(n,i,n[i][r]):t(n,i+"-"+r.toLowerCase(),n[i][r]);else typeof n[i]=="function"&&t(n,i,n[i])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let t=0;t<this.plugins.length;t++){let n=this.plugins[t],i=this.runOnRoot(n);if(Xt(i))try{await i}catch(r){throw this.handleError(r)}}if(this.prepareVisitors(),this.hasListener){let t=this.result.root;for(;!t[He];){t[He]=!0;let n=[ds(t)];for(;n.length>0;){let i=this.visitTick(n);if(Xt(i))try{await i}catch(r){let o=n[n.length-1].node;throw this.handleError(r,o)}}}if(this.listeners.OnceExit)for(let[n,i]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if(t.type==="document"){let r=t.nodes.map(o=>i(o,this.helpers));await Promise.all(r)}else await i(t,this.helpers)}catch(r){throw this.handleError(r)}}}return this.processed=!0,this.stringify()}runOnRoot(t){this.result.lastPlugin=t;try{if(typeof t=="object"&&t.Once){if(this.result.root.type==="document"){let n=this.result.root.nodes.map(i=>t.Once(i,this.helpers));return Xt(n[0])?Promise.all(n):n}return t.Once(this.result.root,this.helpers)}else if(typeof t=="function")return t(this.result.root,this.result)}catch(n){throw this.handleError(n)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let t=this.result.opts,n=Bu;t.syntax&&(n=t.syntax.stringify),t.stringifier&&(n=t.stringifier),n.stringify&&(n=n.stringify);let i=this.result.root.source;if(t.map===void 0&&!(i&&i.input&&i.input.map)){let s="";return n(this.result.root,u=>{s+=u}),this.result.css=s,this.result}let o=new Iu(n,this.result.root,this.result.opts).generate();return this.result.css=o[0],this.result.map=o[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let t of this.plugins){let n=this.runOnRoot(t);if(Xt(n))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let t=this.result.root;for(;!t[He];)t[He]=!0,this.walkSync(t);if(this.listeners.OnceExit)if(t.type==="document")for(let n of t.nodes)this.visitSync(this.listeners.OnceExit,n);else this.visitSync(this.listeners.OnceExit,t)}return this.result}then(t,n){return this.async().then(t,n)}toString(){return this.css}visitSync(t,n){for(let[i,r]of t){this.result.lastPlugin=i;let o;try{o=r(n,this.helpers)}catch(s){throw this.handleError(s,n.proxyOf)}if(n.type!=="root"&&n.type!=="document"&&!n.parent)return!0;if(Xt(o))throw this.getAsyncError()}}visitTick(t){let n=t[t.length-1],{node:i,visitors:r}=n;if(i.type!=="root"&&i.type!=="document"&&!i.parent){t.pop();return}if(r.length>0&&n.visitorIndex<r.length){let[s,u]=r[n.visitorIndex];n.visitorIndex+=1,n.visitorIndex===r.length&&(n.visitors=[],n.visitorIndex=0),this.result.lastPlugin=s;try{return u(i.toProxy(),this.helpers)}catch(a){throw this.handleError(a,i)}}if(n.iterator!==0){let s=n.iterator,u;for(;u=i.nodes[i.indexes[s]];)if(i.indexes[s]+=1,!u[He]){u[He]=!0,t.push(ds(u));return}n.iterator=0,delete i.indexes[s]}let o=n.events;for(;n.eventIndex<o.length;){let s=o[n.eventIndex];if(n.eventIndex+=1,s===bt){i.nodes&&i.nodes.length&&(i[He]=!0,n.iterator=i.getIterator());return}else if(this.listeners[s]){n.visitors=this.listeners[s];return}}t.pop()}walkSync(t){t[He]=!0;let n=fs(t);for(let i of n)if(i===bt)t.nodes&&t.each(r=>{r[He]||this.walkSync(r)});else{let r=this.listeners[i];if(r&&this.visitSync(r,t.toProxy()))return}}warnings(){return this.sync().warnings()}};Ye.registerPostcss=e=>{Ri=e};ms.exports=Ye;Ye.default=Ye;Ou.registerLazyResult(Ye);Du.registerLazyResult(Ye)});var hs=te((jp,ps)=>{"use strict";var Vu=Mi(),zu=Cn(),qu=_n(),ju=Pt(),qp=Ni(),Yt=class{get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let t,n=zu;try{t=n(this._css,this._opts)}catch(i){this.error=i}if(this.error)throw this.error;return this._root=t,t}get[Symbol.toStringTag](){return"NoWorkResult"}constructor(t,n,i){n=n.toString(),this.stringified=!1,this._processor=t,this._css=n,this._opts=i,this._map=void 0;let r=ju;this.result=new qu(this._processor,void 0,this._opts),this.result.css=n;let o=this;Object.defineProperty(this.result,"root",{get(){return o.root}});let s=new Vu(r,void 0,this._opts,n);if(s.isMap()){let[u,a]=s.generate();u&&(this.result.css=u),a&&(this.result.map=a)}else s.clearAnnotation(),this.result.css=s.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(t){return this.async().catch(t)}finally(t){return this.async().then(t,t)}sync(){if(this.error)throw this.error;return this.result}then(t,n){return this.async().then(t,n)}toString(){return this._css}warnings(){return[]}};ps.exports=Yt;Yt.default=Yt});var xs=te(($p,gs)=>{"use strict";var $u=hn(),Ku=ki(),Ju=hs(),Xu=gt(),lt=class{constructor(t=[]){this.version="8.5.14",this.plugins=this.normalize(t)}normalize(t){let n=[];for(let i of t)if(i.postcss===!0?i=i():i.postcss&&(i=i.postcss),typeof i=="object"&&Array.isArray(i.plugins))n=n.concat(i.plugins);else if(typeof i=="object"&&i.postcssPlugin)n.push(i);else if(typeof i=="function")n.push(i);else if(!(typeof i=="object"&&(i.parse||i.stringify)))throw new Error(i+" is not a PostCSS plugin");return n}process(t,n={}){return!this.plugins.length&&!n.parser&&!n.stringifier&&!n.syntax?new Ju(this,t,n):new Ku(this,t,n)}use(t){return this.plugins=this.plugins.concat(this.normalize([t])),this}};gs.exports=lt;lt.default=lt;Xu.registerProcessor(lt);$u.registerProcessor(lt)});var Cs=te((Kp,Fs)=>{"use strict";var bs=pn(),ys=Wt(),Yu=Je(),Qu=fn(),Ss=Vt(),Es=hn(),Zu=qo(),ec=qt(),tc=ki(),nc=Ci(),ic=Ht(),rc=Cn(),Di=xs(),oc=_n(),As=gt(),ws=yn(),sc=Pt(),ac=Ti();function le(...e){return e.length===1&&Array.isArray(e[0])&&(e=e[0]),new Di(e)}le.plugin=function(t,n){let i=!1;function r(...s){console&&console.warn&&!i&&(i=!0,console.warn(t+`: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(t+`: \\u91CC\\u9762 postcss.plugin \\u88AB\\u5F03\\u7528. \\u8FC1\\u79FB\\u6307\\u5357:\nhttps://www.w3ctech.com/topic/2226`));let u=n(...s);return u.postcssPlugin=t,u.postcssVersion=new Di().version,u}let o;return Object.defineProperty(r,"postcss",{get(){return o||(o=r()),o}}),r.process=function(s,u,a){return le([r(a)]).process(s,u)},r};le.stringify=sc;le.parse=rc;le.fromJSON=Zu;le.list=nc;le.comment=e=>new ys(e);le.atRule=e=>new bs(e);le.decl=e=>new Ss(e);le.rule=e=>new ws(e);le.root=e=>new As(e);le.document=e=>new Es(e);le.CssSyntaxError=Qu;le.Declaration=Ss;le.Container=Yu;le.Processor=Di;le.Document=Es;le.Comment=ys;le.Warning=ac;le.AtRule=bs;le.Result=oc;le.Input=ec;le.Rule=ws;le.Root=As;le.Node=ic;tc.registerPostcss(le);Fs.exports=le;le.default=le});function cn(){return globalThis}function L(e,t){if(typeof window>"u")return;let n=cn(),i=n.__hf?.onSwallowed;if(i)try{i({label:e,error:t})}catch(r){}(n.__hfDebug||n.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${e} swallowed:`,t)}function Fe(e){try{window.parent.postMessage(e,"*")}catch(t){L("bridge.postMessage",t)}}var ll={play:(e,t)=>t.onPlay(),pause:(e,t)=>t.onPause(),"stop-media":(e,t)=>t.onStopMedia(),seek:(e,t)=>t.onSeek(Number(e.frame??0),e.seekMode??"commit"),tick:(e,t)=>t.onTick(),"set-muted":(e,t)=>t.onSetMuted(!!e.muted),"set-volume":(e,t)=>t.onSetVolume(Math.max(0,Math.min(1,Number(e.volume??1)))),"set-media-output-muted":(e,t)=>t.onSetMediaOutputMuted(!!e.muted),"set-native-media-sync-disabled":(e,t)=>t.onSetNativeMediaSyncDisabled(!!e.disabled),"set-web-audio-media-disabled":(e,t)=>t.onSetWebAudioMediaDisabled(!!e.disabled),"set-playback-rate":(e,t)=>t.onSetPlaybackRate(Number(e.playbackRate??1)),"set-color-grading":(e,t)=>t.onSetColorGrading(e.target??null,e.grading??null),"set-color-grading-compare":(e,t)=>t.onSetColorGradingCompare(e.target??null,e.compare??null),"enable-pick-mode":(e,t)=>t.onEnablePickMode(),"disable-pick-mode":(e,t)=>t.onDisablePickMode(),"flash-elements":e=>ul(e)};function ul(e){let t=e.selectors,n=e.duration||800;t&&cl(t,n)}function Er(e){let t=n=>{let i=n.data;if(!i||i.source!=="hf-parent"||i.type!=="control")return;let r=i.action;if(typeof r!="string")return;let o=ll[r];o&&o(i,e)};return window.addEventListener("message",t),Fe({source:"hf-preview",type:"ready"}),t}function cl(e,t){if(!document.getElementById("__hf-flash-styles")){let n=document.createElement("style");n.id="__hf-flash-styles",n.textContent=`\n .__hf-flash {\n outline: 2px solid rgba(59, 130, 246, 0.6) !important;\n outline-offset: 2px !important;\n animation: __hf-flash-pulse ${t}ms ease-out forwards !important;\n }\n @keyframes __hf-flash-pulse {\n 0% { outline-color: rgba(59, 130, 246, 0.8); }\n 100% { outline-color: transparent; }\n }\n `,document.head.appendChild(n)}for(let n of e)try{document.querySelectorAll(n).forEach(r=>{r.classList.add("__hf-flash"),setTimeout(()=>r.classList.remove("__hf-flash"),t)})}catch(i){L("bridge.flashElements.querySelector",i)}}var Qn=null;function Ar(e){Qn=e}function ot(e,t){if(Qn)try{Qn({source:"hf-preview",type:"analytics",event:e,properties:t??{}})}catch(n){L("runtime.analytics.site1",n)}}function wr(e){let t=[],n=l=>{if(typeof l.getAnimations!="function")return[];try{return l.getAnimations()}catch{return[]}},i=l=>e?.resolveStartSeconds?e.resolveStartSeconds(l):Number.parseFloat(l.getAttribute("data-start")??"0")||0,r=(l,c)=>{let p=null;try{p=l.effect?.getComputedTiming?.()??null}catch(x){L("runtime.adapters.css.site5",x)}if(!p)return{};let f=Number(p.endTime);return Number.isFinite(f)?{endSeconds:c+f/1e3}:{unbounded:!0}},o=(l,c)=>{for(let p of l){try{p.currentTime=c}catch(f){L("runtime.adapters.css.site1",f)}try{p.pause()}catch(f){L("runtime.adapters.css.site2",f)}}},s=l=>{for(let c of l)try{c.play()}catch(p){L("runtime.adapters.css.site3",p)}},u=l=>{for(let c of l)try{c.pause()}catch(p){L("runtime.adapters.css.site4",p)}},a=l=>{l.baseDelay?l.el.style.animationDelay=l.baseDelay:l.el.style.removeProperty("animation-delay"),l.basePlayState?l.el.style.animationPlayState=l.basePlayState:l.el.style.removeProperty("animation-play-state")};return{name:"css",discover:()=>{t=[];let l=document.querySelectorAll("*");for(let c of l){if(!(c instanceof HTMLElement))continue;let p=window.getComputedStyle(c);!p.animationName||p.animationName==="none"||t.push({el:c,baseDelay:c.style.animationDelay||"",basePlayState:c.style.animationPlayState||"",animations:n(c)})}},getInferredDurationSeconds:()=>{let l=0;for(let c of t){if(!c.el.isConnected)continue;let p=i(c.el);for(let f of n(c.el)){let x=r(f,p);x.endSeconds!=null&&(l=Math.max(l,x.endSeconds))}}return l>0?l:null},seek:l=>{let c=Number(l.time)||0;for(let p of t){if(!p.el.isConnected)continue;let f=i(p.el),x=Math.max(0,c-f)*1e3,E=p.animations;if(E.length>0){o(E,x);continue}p.el.style.animationPlayState="paused",p.el.style.animationDelay=`-${(x/1e3).toFixed(3)}s`}},pause:()=>{for(let l of t){if(!l.el.isConnected)continue;let c=l.animations;c.length>0&&u(c),a(l)}},play:()=>{for(let l of t)l.el.isConnected&&(a(l),s(l.animations))},revert:()=>{t=[]}}}function Fr(e){return{name:"gsap",discover:()=>{},seek:t=>{let n=e.getTimeline();if(!n)return;n.pause();let i=Math.max(0,Number(t.time)||0);typeof n.totalTime=="function"?(n.totalTime(i+.001,!0),n.totalTime(i,!1)):n.seek(i,!1)},pause:()=>{let t=e.getTimeline();t&&t.pause()}}}function Cr(){return{name:"animejs",discover:()=>{try{let e=window.anime;if(!e||typeof e.running>"u")return;let t=e.running;if(!Array.isArray(t)||t.length===0)return;let n=window.__hfAnime??[],i=new Set(n);for(let r of t)i.has(r)||n.push(r);window.__hfAnime=n}catch(e){L("runtime.adapters.animejs.site1",e)}},seek:e=>{let t=Math.max(0,(Number(e.time)||0)*1e3),n=window.__hfAnime;if(!(!n||n.length===0))for(let i of n)try{typeof i.seek=="function"&&i.seek(t)}catch(r){L("runtime.adapters.animejs.site2",r)}},pause:()=>{let e=window.__hfAnime;if(!(!e||e.length===0))for(let t of e)try{typeof t.pause=="function"&&t.pause()}catch(n){L("runtime.adapters.animejs.site3",n)}},play:()=>{let e=window.__hfAnime;if(!(!e||e.length===0))for(let t of e)try{typeof t.play=="function"&&t.play()}catch(n){L("runtime.adapters.animejs.site4",n)}},revert:()=>{}}}function Mr(){return{name:"lottie",discover:()=>{try{let e=window.lottie;if(e&&typeof e.getRegisteredAnimations=="function"){let t=e.getRegisteredAnimations();if(Array.isArray(t)&&t.length>0){let n=window.__hfLottie??[],i=new Set(n);for(let r of t)i.has(r)||n.push(r);window.__hfLottie=n}}}catch(e){L("runtime.adapters.lottie.site1",e)}},seek:e=>{let t=Math.max(0,Number(e.time)||0),n=window.__hfLottie;if(!(!n||n.length===0))for(let i of n)try{if(Zn(i))i.goToAndStop(t*1e3,!1);else if(ei(i)){if(typeof i.setCurrentRawFrameValue=="function"){let r=i.totalFrames??0,o=i.frameRate??30,s=t*o;r>0&&i.setCurrentRawFrameValue(Math.min(s,r-1))}else if(typeof i.seek=="function"){let r=i.duration??1,o=Math.min(100,t/r*100);i.seek(o)}}}catch(r){L("runtime.adapters.lottie.site2",r)}},pause:()=>{let e=window.__hfLottie;if(!(!e||e.length===0))for(let t of e)try{(Zn(t)||ei(t))&&t.pause()}catch(n){L("runtime.adapters.lottie.site3",n)}},revert:()=>{},getInferredDurationSeconds:()=>{let e=window.__hfLottie;if(!e||e.length===0)return null;let t=0,n=!1;for(let i of e){let r=null;try{r=dl(i)}catch(o){L("runtime.adapters.lottie.site4",o)}r!=null&&(n=!0,t=Math.max(t,r))}return n?t:null}}}function _r(e,t){return!Number.isFinite(e)||!e||e<=0||!Number.isFinite(t)||!t||t<=0?null:e/t}function dl(e){return Zn(e)?_r(e.totalFrames,e.frameRate):ei(e)?Number.isFinite(e.duration)&&(e.duration??0)>0?e.duration??null:_r(e.totalFrames,e.frameRate):null}function Zn(e){return typeof e=="object"&&e!==null&&typeof e.goToAndStop=="function"}function ei(e){return typeof e=="object"&&e!==null&&typeof e.pause=="function"&&("totalFrames"in e||"duration"in e)}var ti=-1;function dn(e){if(e!==ti){ti=e;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:e}}))}catch(t){L("runtime.adapters.seek-dispatch.site1",t)}}}function vr(e){ti=e;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:e}}))}catch(t){L("runtime.adapters.seek-dispatch.force",t)}}function Tr(){let e=null,t=0,n=null,i=null,r=null,o=null,s=()=>{if(typeof window>"u")return null;let c=window.THREE?.DefaultLoadingManager;return!c||typeof c!="object"||typeof c.itemsLoaded!="number"||typeof c.itemsTotal!="number"?null:c},u=l=>{o||l.itemsTotal<=l.itemsLoaded||(o=new Promise(c=>{l.onLoad=function(){try{r?.call(this)}finally{o=null,l.onLoad=r??null,c()}}}))},a=l=>{n!==l&&(n=l,i=l.onStart??null,r=l.onLoad??null,l.onStart=function(c,p,f){try{i?.call(this,c,p,f)}finally{u(l)}})};return{name:"three",discover:()=>{let l=s();l&&(a(l),u(l))},seek:l=>{e=Math.max(0,Number(l.time)||0),t=e,window.__hfThreeTime=e,dn(e)},pause:()=>{e==null&&(e=Math.max(0,t))},play:()=>{e=null},revert:()=>{e=null,t=0},getReadyPromise:()=>{let l=s();return!l||l.itemsTotal<=l.itemsLoaded?null:(o||u(l),o)}}}function Be(e){let t=null,n=new WeakSet;return{name:e.name,discover:()=>{},seek:()=>{},pause:()=>{},play:()=>{},revert:()=>{},getReadyPromise:()=>{let i=e.getInstances();if(i.length===0)return null;let r=i.filter(o=>!n.has(o));return r.length===0?null:t||(t=Promise.allSettled(r.map(o=>e.waitFor(o).then(()=>{n.add(o)}))).then(()=>{t=null}),t)}}}function Nr(){return Be({name:"mapbox",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfMapbox;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>{if(e.loaded()){t();return}e.on("load",t)})})}function Lr(){return Be({name:"leaflet",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfLeaflet;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>e.whenReady(t))})}function Rr(){return Be({name:"google-maps",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfGoogleMaps;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>{let n=e.addListener("tilesloaded",()=>{n.remove(),t()})})})}function kr(){return Be({name:"maplibre",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfMaplibre;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>{if(e.loaded()){t();return}e.on("load",t)})})}function Dr(){return Be({name:"d3",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfD3;return Array.isArray(e)?e:[]},waitFor:e=>e.end()})}function Ir(){let e=null,t=0;return{name:"typegpu",discover:()=>{},seek:n=>{e=Math.max(0,Number(n.time)||0),t=e,window.__hfTypegpuTime=e,dn(e)},pause:()=>{e==null&&(e=Math.max(0,t))},play:()=>{e=null},revert:()=>{e=null,t=0}}}function Pr(e){let t=e.nextElementSibling;if(t instanceof HTMLImageElement&&t.classList.contains("__render_frame__")&&t.complete&&t.naturalWidth>0)return t;if(e.id){let n=document.getElementById(`__render_frame_${e.id}__`);if(n instanceof HTMLImageElement&&n.complete&&n.naturalWidth>0)return n}return null}function Or(){let e=globalThis.GPUQueue;if(!e?.prototype?.copyExternalImageToTexture)return;let t=e.prototype.copyExternalImageToTexture;e.prototype.copyExternalImageToTexture=function(n,i,r){if(n?.source instanceof HTMLVideoElement){let o=Pr(n.source);if(o)return t.call(this,{...n,source:o},i,r)}return t.call(this,n,i,r)}}function Br(){let e=[globalThis.WebGL2RenderingContext,globalThis.WebGLRenderingContext],t=["texImage2D","texSubImage2D"];for(let n of e){let i=n?.prototype;if(i)for(let r of t){let o=i[r];if(typeof o!="function"||o.__hfVideoPatched)continue;let s=function(...u){let a=u.length-1,l=u[a];if(l instanceof HTMLVideoElement){let c=Pr(l);c&&(u[a]=c)}return o.apply(this,u)};s.__hfVideoPatched=!0,i[r]=s}}}function Hr(){let e=!1,t=0,n=!1,i,r,o,s=new Set,u=new WeakMap,a=()=>{if(!document.getAnimations)return[];try{return document.getAnimations()}catch{return[]}},l=g=>{let A=Number(g.currentTime);return Number.isFinite(A)&&A>0?A:0},c=(g,A)=>A<=0?g:g>=A?Math.max(0,g-A):g,p=(g,A)=>{let _=u.get(g);if(_)return _;let N={compositionTimeMs:A,animationTimeMs:e?c(l(g),A):l(g)};return u.set(g,N),N},f=(g,A)=>{if(!s.has(g)){s.add(g);let _=()=>{s.delete(g)};try{g.addEventListener("finish",_,{once:!0}),g.addEventListener("cancel",_,{once:!0})}catch(N){L("runtime.adapters.waapi.site4",N)}}p(g,A)},x=(g,A)=>{for(let _ of g)f(_,A)},E=()=>{if(n||typeof Element>"u")return;let g=Element.prototype;if(typeof g.animate!="function"||g.__hfOriginalAnimate)return;let A=g.animate;try{Object.defineProperty(g,"__hfOriginalAnimate",{value:A,configurable:!0});let _=function(...N){let $=A.apply(this,N);return f($,t),$};g.animate=_,i=g,r=A,o=_,n=!0}catch{}},b=g=>{let A=null;try{A=g.effect?.getComputedTiming?.()??null}catch($){L("runtime.adapters.waapi.site4",$)}if(!A)return{};let _=Number(A.endTime);return Number.isFinite(_)?{endSeconds:(u.get(g)?.compositionTimeMs??0)/1e3+_/1e3}:{unbounded:!0}};return{name:"waapi",discover:()=>{e=!0,E(),x(a(),t)},seek:g=>{let A=Math.max(0,(Number(g.time)||0)*1e3);t=A,(!e||s.size>0)&&x(a(),e?A:0);for(let _ of s){let N=e?p(_,A):p(_,0),$=N.animationTimeMs+Math.max(0,A-N.compositionTimeMs);try{_.currentTime=$}catch(B){L("runtime.adapters.waapi.site1",B)}try{_.pause()}catch(B){L("runtime.adapters.waapi.site2",B)}}},pause:()=>{e||x(a(),t);for(let g of s)try{g.pause()}catch(A){L("runtime.adapters.waapi.site3",A)}},revert:()=>{if(s.clear(),u=new WeakMap,e=!1,t=0,i&&r&&o&&i.animate===o)try{i.animate=r,i.__hfOriginalAnimate===r&&delete i.__hfOriginalAnimate}catch(g){L("runtime.adapters.waapi.site5",g)}i=void 0,r=void 0,o=void 0,n=!1},getInferredDurationSeconds:()=>{let g=0;for(let A of a()){let _=b(A);_.endSeconds!=null&&(g=Math.max(g,_.endSeconds))}return g>0?g:null}}}function Gr(e,t){if(e.length===0)return 1;let n=0;for(;n<e.length-2&&t>=e[n+1].time;)n+=1;let i=e[n],r=e[n+1]??i,o=r.time-i.time,s=o<=0?0:Math.min(1,Math.max(0,(t-i.time)/o));return i.volume+(r.volume-i.volume)*s}function fl(e,t,n,i){let r=Number.parseFloat(e.dataset.start??"0")||0,o=Number.parseFloat(e.dataset.end??""),s=Number.parseFloat(e.dataset.duration??""),u=Number.isFinite(o)&&o>r?o:Number.isFinite(s)&&s>0?r+s:n,a=Number.parseFloat(e.dataset.volume??""),l=Number.isFinite(a)?Math.max(0,Math.min(1,a)):1;e.volume=l;let c=1/Math.min(60,Math.max(1,i)),p=Math.max(0,r),f=Math.min(n,u),x=[];for(let b=p;b<=f+1e-6;b+=c){let g=Math.min(f,b);t(g);let A=Number(e.volume);if(!Number.isFinite(A))continue;let _=Math.max(0,Math.min(1,A)),N=x.at(-1);if((!N||Math.abs(N.volume-_)>1e-4||g===f)&&x.push({time:Number(g.toFixed(6)),volume:Number(_.toFixed(6))}),g===f)break}return x.some(b=>Math.abs(b.volume-l)>1e-4)?x:null}function Wr(e,t,n,i){if(!t||!(e instanceof HTMLAudioElement)&&!(e instanceof HTMLVideoElement)||n<=0)return;let o=fl(e,s=>{try{typeof t.totalTime=="function"?t.totalTime(s,!0):typeof t.seek=="function"&&t.seek(s,!0)}catch{}},n,60);o&&i.set(e,o)}function Tt(e){let t=e.defaultPlaybackRate;return Number.isFinite(t)&&t>0?Math.max(.1,Math.min(5,t)):1}function Ur(e){let t=Array.from(document.querySelectorAll("video, audio")),n=e?.shouldIncludeElement?t.filter(s=>e.shouldIncludeElement?.(s)):t.filter(s=>s.hasAttribute("data-start")),i=[],r=[],o=0;for(let s of n){let u=e?.resolveStartSeconds?e.resolveStartSeconds(s):Number.parseFloat(s.dataset.start??"0");if(!Number.isFinite(u))continue;let a=Number.parseFloat(s.dataset.playbackStart??s.dataset.mediaStart??"0")||0,l=Tt(s),c=s.loop,p=Number.isFinite(s.duration)&&s.duration>0?s.duration:null,f=e?.resolveDurationSeconds?.(s)??Number.parseFloat(s.dataset.duration??"");(!Number.isFinite(f)||f<=0)&&p!=null&&(f=Math.max(0,(p-a)/l));let x=Number.isFinite(f)&&f>0?u+f:Number.POSITIVE_INFINITY,E=Number.parseFloat(s.dataset.volume??""),b={el:s,start:u,mediaStart:a,duration:Number.isFinite(f)&&f>0?f:Number.POSITIVE_INFINITY,end:x,volume:Number.isFinite(E)?E:null,playbackRate:l,loop:c,sourceDuration:p};i.push(b),s.tagName==="VIDEO"&&r.push(b),Number.isFinite(x)&&(o=Math.max(o,x))}return{timedMediaEls:n,mediaClips:i,videoClips:r,maxMediaEnd:o}}var ni=new WeakMap,Mt=new WeakMap,ii=new WeakSet,ft=new WeakSet;function ml(e){if(ft.has(e))return;ft.add(e);let t=()=>ft.delete(e);e.addEventListener("playing",t,{once:!0}),e.addEventListener("pause",t,{once:!0}),e.addEventListener("error",t,{once:!0})}var pl=3;function hl(e){return e.error!=null||e.networkState===pl}var ri=new WeakMap;function vt(e){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):1}function Vr(e){let t=!!(e.outputMuted||e.userMuted);for(let n of e.clips){let{el:i}=n;if(!i.isConnected)continue;let r=(e.timeSeconds-n.start)*n.playbackRate+n.mediaStart;if(e.timeSeconds>=n.start&&e.timeSeconds<=n.end&&r>=0&&(!i.ended||n.loop)){if(n.loop&&n.sourceDuration!=null&&n.sourceDuration>0){let T=n.sourceDuration-n.mediaStart;T>0&&r>=n.sourceDuration&&(r=n.mediaStart+(r-n.mediaStart)%T)}let s=vt(e.userVolume??1),u=vt(n.volume??1),a=ri.get(i),l=vt(i.volume),c;n.volumeKeyframes&&n.volumeKeyframes.length>0?c=vt(Gr(n.volumeKeyframes,r)):a===void 0||Math.abs(l-a)>1e-4?c=l:c=u;let p=vt(c*s);i.volume=p,ri.set(i,p),e.onElementVolume?.(i,p),(t||e.isWebAudioOwned?.(i))&&(i.muted=!0),i.preload!=="auto"&&(i.preload="auto");try{i.playbackRate=n.playbackRate*e.playbackRate}catch(T){L("runtime.media.site1",T)}let f=.04,x=2,E=i.currentTime||0,b=Math.abs(E-r),g=r-E,A=ni.get(i);ni.set(i,g);let _=A===void 0,N=!_&&Math.abs(g-A)>.5,$=b>3,B=b>.5&&(_||N||$),v=i.tagName==="VIDEO"&&!i.paused,S=A!==void 0&&Math.abs(g-A)<.004,C=!1;if(!v&&!B&&!_&&S&&b>f){let T=(Mt.get(i)??0)+1;Mt.set(i,T),T>=x&&(C=!0,Mt.set(i,0))}else b<=f&&Mt.set(i,0);let M=!v&&e.forceSync&&b>.02;if(B||C||M){if(!(i.tagName==="VIDEO"&&i.id&&!!document.getElementById(`__render_frame_${i.id}__`))){try{i.currentTime=r}catch(R){L("runtime.media.site2",R)}if(Math.abs(i.currentTime-r)>.5&&!ii.has(i)){ii.add(i),i.load();try{i.currentTime=r}catch(R){L("runtime.media.site3",R)}}}ft.delete(i)}e.playing&&i.paused&&!ft.has(i)&&!hl(i)?(ml(i),i.play().catch(T=>{ft.delete(i),(T&&typeof T=="object"&&"name"in T?String(T.name??""):"")==="NotAllowedError"&&e.onAutoplayBlocked?.()})):!e.playing&&!i.paused&&i.pause();continue}ni.delete(i),Mt.delete(i),ii.delete(i),ri.delete(i),i.paused||i.pause()}}var gl=["[data-hyperframes-ignore]","[data-hyperframes-picker-ignore]","[data-hf-ignore]","[data-no-inspect]","[data-no-pick]","[data-hyper-shader-loading]"].join(","),xl=["[data-hyperframes-picker-block]","[data-hyper-shader-loading]"].join(","),bl="data-hf-color-grading-source-hidden";function zr(e){let t=!1,n=null,i=null,r=null,o=null;function s(S,C){try{window.dispatchEvent(new CustomEvent(S,{detail:C}))}catch(M){L("runtime.picker.site1",M)}}function u(S){r=S,s("hyperframe:picker:hovered",{elementInfo:r,isPickMode:t,timestamp:Date.now()})}function a(S){o=S,s("hyperframe:picker:selected",{elementInfo:o,isPickMode:t,timestamp:Date.now()})}function l(S){let C=S.ownerDocument.defaultView;if(!C)return!1;let M=S;for(;M&&M!==document.body&&M!==document.documentElement;){let T=C.getComputedStyle(M);if(T.display==="none"||T.visibility==="hidden"||T.pointerEvents==="none")return!0;let R=Number.parseFloat(T.opacity);if(Number.isFinite(R)&&R<=.01&&!M.hasAttribute(bl))return!0;M=M.parentElement}return!1}function c(S){if(!S||S===document.body||S===document.documentElement)return!1;let C=S.tagName.toLowerCase();return!(C==="script"||C==="style"||C==="link"||C==="meta"||S.classList.contains("__hf-pick-highlight")||S.closest(gl)||l(S))}function p(S){return!!S?.closest(xl)}function f(S){let C=S;if(C.id)return`#${C.id}`;let M=S.getAttribute("data-composition-id");if(M)return`[data-composition-id="${CSS.escape(M)}"]`;let T=S.getAttribute("data-composition-src");if(T)return`[data-composition-src="${CSS.escape(T)}"]`;let R=S.getAttribute("data-track-index");if(R)return`[data-track-index="${CSS.escape(R)}"]`;let W=S.tagName.toLowerCase(),q=S.parentElement;if(!q)return W;let ie=q.querySelectorAll(`:scope > ${W}`);if(ie.length===1)return W;for(let P=0;P<ie.length;P+=1)if(ie[P]===S)return`${W}:nth-of-type(${P+1})`;return W}function x(S){let C=S.tagName.toLowerCase(),M=(S.textContent??"").trim().replace(/\\s+/g," "),T=(R,W)=>R.length>W?`${R.slice(0,W-1)}\\u2026`:R;return C==="h1"||C==="h2"||C==="h3"?"Heading":C==="p"||C==="span"||C==="div"?M.length>0?T(M,56):"Text":C==="img"?"Image":C==="video"?"Video":C==="audio"?"Audio":C==="svg"?"Shape":S.getAttribute("data-composition-src")?"Composition":C==="section"?"Section":`${C.charAt(0).toUpperCase()}${C.slice(1)}`}function E(S,C,M){let T=typeof M=="number"&&M>0?M:8,R=[];if(document.elementsFromPoint)R=document.elementsFromPoint(S,C);else if(document.elementFromPoint){let ie=document.elementFromPoint(S,C);R=ie?[ie]:[]}if(p(R[0]??null))return[];let W={},q=[];for(let ie=0;ie<R.length;ie+=1){let P=R[ie];if(!c(P))continue;let se=`${P.tagName}::${P.id||""}::${ie}`;if(!W[se]&&(W[se]=!0,q.push(P),q.length>=T))break}return q}function b(S){let C=S.getBoundingClientRect(),M={};for(let R=0;R<S.attributes.length;R+=1){let W=S.attributes[R];W.name.startsWith("data-")&&(M[W.name]=W.value)}return{id:S.id||null,tagName:S.tagName.toLowerCase(),selector:f(S),label:x(S),boundingBox:{x:C.left,y:C.top,width:C.width,height:C.height},textContent:S.textContent?S.textContent.trim().slice(0,200):null,src:S.getAttribute("src")||S.getAttribute("data-composition-src")||null,dataAttributes:M}}function g(S,C,M){return E(S,C,M).map(b)}function A(S){if(!t)return;let M=E(S.clientX,S.clientY,1)[0]??(S.target instanceof Element?S.target:null);if(!c(M)||n===M)return;n&&n.classList.remove("__hf-pick-highlight"),n=M,M.classList.add("__hf-pick-highlight");let T=b(M);u(T),e.postMessage({source:"hf-preview",type:"element-hovered",elementInfo:T})}function _(S){if(!t)return;S.preventDefault(),S.stopPropagation(),S.stopImmediatePropagation();let C=g(S.clientX,S.clientY,8);C.length!==0&&(u(C[0]??null),e.postMessage({source:"hf-preview",type:"element-pick-candidates",candidates:C,selectedIndex:0,point:{x:S.clientX,y:S.clientY}}))}function N(S){S.key==="Escape"&&(B(),e.postMessage({source:"hf-preview",type:"pick-mode-cancelled"}))}function $(){t||(t=!0,i=document.createElement("style"),i.textContent=[".__hf-pick-highlight { outline: 2px solid #4f8cf7 !important; outline-offset: 2px; cursor: crosshair !important; }",".__hf-pick-active * { cursor: crosshair !important; }"].join(`\n`),document.head.appendChild(i),document.body.classList.add("__hf-pick-active"),document.addEventListener("mousemove",A,!0),document.addEventListener("click",_,!0),document.addEventListener("keydown",N,!0),s("hyperframe:picker:mode",{isPickMode:!0,timestamp:Date.now()}))}function B(){t&&(t=!1,n&&(n.classList.remove("__hf-pick-highlight"),n=null),i&&(i.remove(),i=null),document.body.classList.remove("__hf-pick-active"),document.removeEventListener("mousemove",A,!0),document.removeEventListener("click",_,!0),document.removeEventListener("keydown",N,!0),s("hyperframe:picker:mode",{isPickMode:!1,timestamp:Date.now()}))}function v(){window.__HF_PICKER_API={enable:$,disable:B,isActive:()=>t,getHovered:()=>r,getSelected:()=>o,getCandidatesAtPoint:(S,C,M)=>Number.isFinite(S)&&Number.isFinite(C)?g(S,C,M):[],pickAtPoint:(S,C,M)=>{if(!Number.isFinite(S)||!Number.isFinite(C))return null;let T=g(S,C,8);if(!T.length)return null;let R=Math.max(0,Math.min(T.length-1,Number(M??0))),W=T[R]??null;return W?(a(W),e.postMessage({source:"hf-preview",type:"element-picked",elementInfo:W}),B(),W):null},pickManyAtPoint:(S,C,M)=>{if(!Number.isFinite(S)||!Number.isFinite(C))return[];let T=g(S,C,8);if(!T.length)return[];let R=[],W=Array.isArray(M)?M:[0];for(let q of W){let ie=Math.max(0,Math.min(T.length-1,Math.floor(Number(q)))),P=T[ie];if(!P)continue;R.some(Ee=>Ee.selector===P.selector&&Ee.tagName===P.tagName)||R.push(P)}return R.length?(a(R[0]??null),e.postMessage({source:"hf-preview",type:"element-picked-many",elementInfos:R}),B(),R):[]}},s("hyperframe:picker:api-ready",{hasApi:!0,timestamp:Date.now()})}return{enablePickMode:$,disablePickMode:B,installPickerApi:v}}var yl=["width","height","top","left","right","bottom","inset","object-fit","object-position","z-index","opacity","visibility","filter","mix-blend-mode","backdrop-filter","border-radius","overflow","clip-path","mask","mask-image","mask-size","mask-position","mask-repeat","transform","transform-origin","translate","rotate","scale","box-sizing"];function mt(e,t){let n=Number.isFinite(t)&&t>0?t:30,i=Number.isFinite(e)&&e>0?e:0;return Math.floor(i*n+1e-9)/n}function qr(e,t,n=yl){for(let i of n){let r=t.getPropertyValue(i);r&&e.setProperty(i,r)}}function Nt(e,t,n){let i=e?.[t];return typeof i=="function"?Number(i.call(e))||n:typeof i=="number"&&Number.isFinite(i)?i:(i!=null&&L("runtime.player.nonConformantNum",{prop:t,actual:typeof i}),n)}function ke(e,t){let n=e?.[t];if(typeof n=="function"){n.call(e);return}n!==void 0&&L("runtime.player.nonConformantVoid",{method:t,actual:typeof n})}function Lt(e,t,n){if(e){for(let i of Object.values(e))if(!(!i||i===t))try{n(i)}catch(r){L("runtime.player.site1",r)}}}function jr(e,t,n){let i=mt(t,n);return ke(e,"pause"),typeof e.totalTime=="function"?e.totalTime(i,!1):typeof e.seek=="function"&&e.seek(i,!1),i}function Sl(e,t,n,i){let r=[];Lt(e,t,o=>{ke(o,"play"),r.push(o)});try{return jr(t,n,i)}finally{for(let o of r)try{ke(o,"pause")}catch(s){L("runtime.player.site2",s)}}}function El(e,t){Lt(e,t,n=>{ke(n,"play")})}function $r(e){return{_timeline:null,play:()=>{let t=e.getTimeline();if(!t||e.getIsPlaying())return;let n=Math.max(0,Number(e.getSafeDuration?.()??Nt(t,"duration",0))||0);n>0&&Math.max(0,Nt(t,"time",0))>=n&&(ke(t,"pause"),typeof t.seek=="function"&&t.seek(0,!1),e.onDeterministicSeek(0),e.setIsPlaying(!1),e.onSyncMedia(0,!1),e.onRenderFrameSeek(0)),typeof t.timeScale=="function"&&t.timeScale(e.getPlaybackRate()),ke(t,"play"),Lt(e.getTimelineRegistry?.(),t,i=>{typeof i.timeScale=="function"&&i.timeScale(e.getPlaybackRate()),ke(i,"play")}),e.onDeterministicPlay(),e.setIsPlaying(!0),e.onShowNativeVideos(),e.onStatePost(!0)},pause:()=>{let t=e.getTimeline();if(!t)return;ke(t,"pause"),Lt(e.getTimelineRegistry?.(),t,i=>{ke(i,"pause")});let n=Math.max(0,Nt(t,"time",0));e.onDeterministicSeek(n),e.onDeterministicPause(),e.setIsPlaying(!1),e.onSyncMedia(n,!1),e.onRenderFrameSeek(n),e.onStatePost(!0)},seek:(t,n)=>{let i=e.getTimeline();if(!i)return;let r=Math.max(0,Number(t)||0),o=e.getIsPlaying(),s=Sl(e.getTimelineRegistry?.(),i,r,e.getCanonicalFps());e.onDeterministicSeek(s),n?.keepPlaying&&o?(typeof i.timeScale=="function"&&i.timeScale(e.getPlaybackRate()),ke(i,"play"),Lt(e.getTimelineRegistry?.(),i,u=>{typeof u.timeScale=="function"&&u.timeScale(e.getPlaybackRate()),ke(u,"play")}),e.onDeterministicPlay(),e.onShowNativeVideos(),e.onSyncMedia(s,!0)):(e.setIsPlaying(!1),e.onSyncMedia(s,!1)),e.onRenderFrameSeek(s),e.onStatePost(!0)},renderSeek:t=>{let n=e.getTimeline(),i=e.getCanonicalFps(),r=n?(El(e.getTimelineRegistry?.(),n),jr(n,t,i)):mt(Math.max(0,Number(t)||0),i);e.onDeterministicSeek(r),e.setIsPlaying(!1),e.onSyncMedia(r,!1),e.onRenderFrameSeek(r),e.onStatePost(!0)},getTime:()=>Nt(e.getTimeline(),"time",0),getDuration:()=>Nt(e.getTimeline(),"duration",0),isPlaying:()=>e.getIsPlaying(),setPlaybackRate:t=>e.setPlaybackRate(t),getPlaybackRate:()=>e.getPlaybackRate()}}function Kr(){return{capturedTimeline:null,isPlaying:!1,currentTime:0,deterministicAdapters:[],canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,nativeMediaSyncDisabled:!1,webAudioMediaDisabled:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,beforeUnloadHandler:null,injectedCompStyles:[],injectedCompScripts:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,transportClock:null,transportRafId:null}}var Al=new Set(["SCRIPT","STYLE","LINK","META","TEMPLATE","NOSCRIPT"]);function si(e){return e.id||e.getAttribute("data-hf-id")||null}function oi(e){if(e==null)return null;let t=Number(e);return Number.isFinite(t)?t:null}function wl(e,t){let n=e.getAttribute("data-composition-id");if(!n)return null;let i=Number(t[n]?.duration?.());return Number.isFinite(i)&&i>0?i:null}function Fl(e){if(!(e instanceof HTMLMediaElement)||!Number.isFinite(e.duration))return null;let t=oi(e.getAttribute("data-playback-start"))??oi(e.getAttribute("data-media-start"))??0;return e.duration>t?e.duration-t:null}function Cl(e,t,n,i){let r=oi(e.getAttribute("data-duration"));return r!=null&&r>0?r:wl(e,t)??Fl(e)??Math.max(0,n-i)}function _l(e){for(let[t,n]of e){let i=t.parentElement;for(;i;){let r=e.get(i);if(r){n.parentId=r.id,r.children.push(n);break}i=i.parentElement}}}function Jr(e){let{startResolver:t,timelineRegistry:n,rootDuration:i}=e,r=new Map,o=document.querySelector("[data-composition-id]"),s=0;for(let u of document.querySelectorAll("[data-start]")){if(u===o||Al.has(u.tagName))continue;let a=t.resolveStartForElement(u,0);if(Cl(u,n,i,a)<=0)continue;let l={id:si(u)??`__clip-${s++}`,element:u,parentId:null,children:[]};r.set(u,l)}return _l(r),{roots:Array.from(r.values()).filter(u=>u.parentId===null)}}var Ml="data-hf-authored-duration",vl="data-hf-authored-end";function st(e){if(e==null||e==="")return null;let t=Number(e);return Number.isFinite(t)?t:null}function Tl(e){return st(e.getAttribute("data-duration"))}function Nl(e){return st(e.getAttribute("data-end"))}function Ll(e){return st(e.getAttribute(Ml))}function Rl(e){return st(e.getAttribute(vl))}function kl(e){let t=(e??"").trim();if(!t)return null;let n=st(t);if(n!=null)return{kind:"absolute",value:n};let i=t.match(/^([A-Za-z0-9_.:-]+)(?:\\s*([+-])\\s*([0-9]*\\.?[0-9]+))?$/);if(!i)return null;let r=(i[1]??"").trim();if(!r)return null;let o=i[2]??"+",s=i[3]??"0",u=Number.parseFloat(s),a=Number.isFinite(u)?Math.max(0,u):0,l=o==="-"?-a:a;return{kind:"reference",refId:r,offset:l}}function $e(e){let t=e.timelineRegistry??{},n=e.includeAuthoredTimingAttrs??!1,i=new WeakMap,r=new WeakMap,o=new Set,s=c=>{let p=document.getElementById(c);return p||(document.querySelector(`[data-composition-id="${CSS.escape(c)}"]`)??null)},u=c=>{let p=r.get(c);if(p!==void 0)return p;let f=null,x=Tl(c)??(n?Ll(c):null);if(x!=null&&x>0&&(f=x),f==null||f<=0){let E=Nl(c)??(n?Rl(c):null);if(E!=null){let b=l(c,0),g=E-b;Number.isFinite(g)&&g>0&&(f=g)}}if((f==null||f<=0)&&c instanceof HTMLMediaElement){let E=st(c.getAttribute("data-playback-start"))??st(c.getAttribute("data-media-start"))??0;Number.isFinite(c.duration)&&c.duration>E&&(f=(c.duration-E)/Tt(c))}if(f==null||f<=0){let E=c.getAttribute("data-composition-id");if(E){let b=t[E]??null;if(b&&typeof b.duration=="function")try{let g=Number(b.duration());Number.isFinite(g)&&g>0&&(f=g)}catch(g){L("runtime.startResolver.site1",g)}}}return f!=null&&Number.isFinite(f)&&f>0?(r.set(c,f),f):(r.set(c,null),null)},a=(c,p)=>{if(c.hasAttribute("data-composition-id")){let x=c.parentElement?.closest("[data-composition-id]");return x?l(x,p):0}let f=c.closest("[data-composition-id]");return f?l(f,p):0},l=(c,p)=>{let f=i.get(c);if(f!==void 0)return f??p;if(o.has(c))return p;o.add(c);try{let x=kl(c.getAttribute("data-start"));if(!x){if(c.hasAttribute("data-composition-id")){let _=c.parentElement;if(_&&(_.hasAttribute("data-composition-src")||_.hasAttribute("data-composition-id")||_.hasAttribute("data-composition-file"))){let N=l(_,p);return i.set(c,N),N}}return i.set(c,p),p}if(x.kind==="absolute"){let _=Math.max(0,x.value),N=Math.max(0,a(c,p)+_);return i.set(c,N),N}let E=s(x.refId);if(!E)return i.set(c,p),p;let b=l(E,0),g=u(E);if(g==null||g<=0){let _=Math.max(0,b+x.offset);return i.set(c,_),_}let A=Math.max(0,b+g+x.offset);return i.set(c,A),A}finally{o.delete(c)}};return{resolveStartForElement:(c,p=0)=>l(c,Math.max(0,p)),resolveDurationForElement:c=>u(c)}}function ai(e){let t=e.trim().toLowerCase();return!(!t||t==="main"||t.includes("caption")||t.includes("ambient"))}var Dl="data-hf-authored-duration",Il="data-hf-authored-end";function Ce(e){if(e==null||e==="")return null;let t=Number(e);return Number.isFinite(t)?t:null}function li(e){return Ce(e.getAttribute("data-duration"))??Ce(e.getAttribute(Dl))}function Xr(e){return Ce(e.getAttribute("data-end"))??Ce(e.getAttribute(Il))}function ui(...e){let t=e.filter(n=>Number.isFinite(n??null));return t.length===0?null:Math.max(...t)}var Yr={composition:0,video:1,image:2,element:3,audio:4};function Pl(e){if(e.length===0)return;let t=new Map;for(let s of e){let u=t.get(s.track)??new Set;u.add(s.kind),t.set(s.track,u)}if(!Array.from(t.values()).some(s=>s.size>1))return;let i=0,r=new Map,o=[...t.keys()].sort((s,u)=>s-u);for(let s of o){let u=t.get(s);if(u.size===1)r.set(`${s}:${[...u][0]}`,i++);else{let a=[...u].sort((l,c)=>(Yr[l]??99)-(Yr[c]??99));for(let l of a)r.set(`${s}:${l}`,i++)}}for(let s of e){let u=`${s.track}:${s.kind}`,a=r.get(u);a!=null&&(s.track=a)}}function kt(e){let t=String(e??"").trim();if(!t)return null;let n=t.toLowerCase();if(n.startsWith("data:")||n.startsWith("javascript:"))return null;try{return new URL(t,document.baseURI).toString()}catch{return t}}function Qr(e){let t=e.getAttribute("src")??e.getAttribute("data-src");if(t)return kt(t);let n=e.getAttribute("data-composition-src");if(n)return kt(n);let i=e.querySelector("img[src], video[src], audio[src], source[src]");return i?kt(i.getAttribute("src")):null}function Ol(e){let t=e.className;return typeof t!="string"?null:t.split(/\\s+/).map(n=>n.trim()).find(n=>n&&n!=="clip"&&!n.startsWith("__hf-"))??null}function Bl(e){if(!e)return null;try{return new URL(e,document.baseURI).pathname.split("/").filter(Boolean).at(-1)??null}catch{return e.split(/[\\\\/]/).filter(Boolean).at(-1)??null}}function Hl(e){let t=e.textContent?.replace(/\\s+/g," ").trim();return t?t.length>32?`${t.slice(0,31)}...`:t:null}function Rt(e){let t=e.replace(/\\.[^.]+$/i,"").replace(/[-_]+/g," ").replace(/\\s+/g," ").trim();return t?t.replace(/\\b\\w/g,n=>n.toUpperCase()):e}function Gl(e,t,n){let i=e.getAttribute("data-timeline-label")??e.getAttribute("data-label")??e.getAttribute("aria-label")??null;if(i?.trim())return i.trim();let r=e.getAttribute("data-composition-id");if(r)return Rt(r);let o=e.id;if(o)return Rt(o);let s=Ol(e);if(s)return Rt(s);let u=Bl(Qr(e));if(u)return Rt(u);let a=Hl(e);return a||`${Rt(t)} ${n+1}`}function Zr(e){let n=window.__timelines??{},i=$e({timelineRegistry:n,includeAuthoredTimingAttrs:!0}),r=O=>{if(!O)return null;let D=n[O]??null;if(!D||typeof D.duration!="function")return null;try{let G=Number(D.duration());return Number.isFinite(G)&&G>0?G:null}catch{return null}},o=O=>{let D=Ce(O.getAttribute("data-duration"));if(D!=null&&D>0)return D;let G=Ce(O.getAttribute("data-playback-start"))??Ce(O.getAttribute("data-media-start"))??0;return Number.isFinite(O.duration)&&O.duration>G?Math.max(0,(O.duration-G)/Tt(O)):null},s=()=>{let O=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(O.length===0)return null;let D=0;for(let G of O){let Q=G.hasAttribute("data-hf-auto-start")?i.resolveStartForElement(G,0):Math.max(0,Number(G.getAttribute("data-start")??0)||0);if(!Number.isFinite(Q))continue;let ae=o(G);ae==null||ae<=0||(D=Math.max(D,Math.max(0,Q)+ae))}return D>0?D:null},u=(O,D)=>{let G=[],Q=null,ae=null,j=null,z=O.parentElement;for(;z;){let Y=z.getAttribute("data-composition-id");Y&&(G.push(Y),!j&&z!==D&&(j=Y),Q==null&&(Q=i.resolveStartForElement(z,0)),ae==null&&(ae=Ce(z.getAttribute("data-duration"))??r(Y)??null)),z=z.parentElement}return{parentCompositionId:j,compositionAncestors:G.reverse(),inheritedStart:Q,inheritedDuration:ae}},a=document.querySelector("[data-composition-id]"),l=Array.from(document.querySelectorAll("[data-composition-id]")),c=a?.getAttribute("data-composition-id")??null,p=a?i.resolveStartForElement(a,0):0,f=s(),x=f!=null?Math.max(0,f-Math.max(0,p)):null,E=r(c),b=li(a??document.body),g=ui(...l.filter(O=>O!==a).map(O=>{let D=i.resolveStartForElement(O,0),G=i.resolveDurationForElement(O)??r(O.getAttribute("data-composition-id"))??null;return!Number.isFinite(D)||G==null||G<=0?null:Math.max(0,D)+G})),A=g!=null?Math.max(0,g-Math.max(0,p)):null,_=typeof E=="number"&&Number.isFinite(E)&&E>0?E:null,N=typeof b=="number"&&Number.isFinite(b)&&b>0?b:null,$=typeof x=="number"&&Number.isFinite(x)&&x>0?x:null,B=typeof A=="number"&&Number.isFinite(A)&&A>0?A:null,v=ui($,B),S=_!=null&&v!=null&&_>v+1,M=N??(S?v:ui(_,$,B))??null,R=(M!=null?p+M:null)??(typeof f=="number"&&Number.isFinite(f)&&f>0?f:null),W=(O,D)=>!Number.isFinite(D)||D<=0?0:R==null||!Number.isFinite(R)?D:!Number.isFinite(O)||O>=R?0:Math.max(0,Math.min(D,R-O)),q=[],ie=[],P=Array.from(document.querySelectorAll("[data-start], [data-track-index], [data-composition-id], video, audio, img")),se=0;for(let O=0;O<P.length;O+=1){let D=P[O];if(D===a||["SCRIPT","STYLE","LINK","META","TEMPLATE","NOSCRIPT"].includes(D.tagName))continue;let G=u(D,a),Q=i.resolveStartForElement(D,G.inheritedStart??0),ae=D.getAttribute("data-composition-id"),j=li(D);if((j==null||j<=0)&&ae&&ae!==c&&(j=r(ae)),(j==null||j<=0)&&D instanceof HTMLMediaElement){let Me=Ce(D.getAttribute("data-playback-start"))??Ce(D.getAttribute("data-media-start"))??0;Number.isFinite(D.duration)&&D.duration>0&&(j=Math.max(0,D.duration-Me))}if(j==null||j<=0){let Me=G.inheritedDuration;if(Me!=null&&Me>0){let Ue=(G.inheritedStart??0)+Me;j=Math.max(0,Ue-Q)}}if(j==null||j<=0||(j=W(Q,j),j<=0))continue;let z=Q+j;se=Math.max(se,z);let Y=D.tagName.toLowerCase(),Pe=ae&&ae!==c?"composition":Y==="video"?"video":Y==="audio"?"audio":Y==="img"?"image":"element";q.push({id:si(D)??ae??null,label:Gl(D,Pe,q.length),start:Q,duration:j,track:Number.parseInt(D.getAttribute("data-track-index")??D.getAttribute("data-track")??String(O),10)||0,kind:Pe,tagName:Y,compositionId:D.getAttribute("data-composition-id"),compositionAncestors:G.compositionAncestors,parentCompositionId:G.parentCompositionId,nodePath:null,compositionSrc:kt(D.getAttribute("data-composition-src")),assetUrl:Qr(D),timelineRole:D.getAttribute("data-timeline-role"),timelineLabel:D.getAttribute("data-timeline-label"),timelineGroup:D.getAttribute("data-timeline-group"),timelinePriority:Ce(D.getAttribute("data-timeline-priority"))})}let Ee=new Set(q.map(O=>O.id)),H=a?.getAttribute("data-composition-id")??null,U=H?n[H]??null:null;if(U&&a){let O=U;if(typeof O.getChildren=="function")try{let D=O.getChildren(!0,!0,!1)??[],G=new Map;for(let j of a.children){let z=j;if(!z.id)continue;let Y=z.tagName.toLowerCase();Y==="script"||Y==="style"||Y==="link"||G.set(z,{id:z.id,start:1/0,end:-1/0})}let Q=j=>{let z=j;for(;z;){if(G.has(z))return z;if(z===a)return null;z=z.parentElement}return null};for(let j of D){if(typeof j.targets!="function"||typeof j.startTime!="function"||typeof j.duration!="function")continue;let z=j.startTime(),Y=j.parent;for(;Y&&Y!==U&&typeof Y.startTime=="function";)z+=Y.startTime(),Y=Y.parent;let Pe=z+j.duration();if(!(!Number.isFinite(z)||!Number.isFinite(Pe)))for(let Me of j.targets()){if(!(Me instanceof Element))continue;let At=Q(Me);if(!At)continue;let Ue=G.get(At);Ue&&(Ue.start=Math.min(Ue.start,z),Ue.end=Math.max(Ue.end,Pe))}}let ae=q.length>0?Math.max(...q.map(j=>j.track))+1:0;for(let[j,z]of G){if(z.start===1/0||z.end===-1/0)continue;let Y=j;if(Ee.has(Y.id))continue;let Pe=Math.max(0,z.end-z.start);if(Pe<=0)continue;let Me=W(z.start,Pe);Me<=0||(se=Math.max(se,z.start+Me),q.push({id:Y.id,label:Y.getAttribute("data-timeline-label")??Y.getAttribute("data-label")??Y.getAttribute("aria-label")??Y.id,start:z.start,duration:Me,track:Number.parseInt(Y.getAttribute("data-track-index")??Y.getAttribute("data-track")??"",10)||ae,kind:"element",tagName:Y.tagName.toLowerCase(),compositionId:Y.getAttribute("data-composition-id"),compositionAncestors:H?[H]:[],parentCompositionId:H,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:Y.getAttribute("data-timeline-role"),timelineLabel:Y.getAttribute("data-timeline-label"),timelineGroup:Y.getAttribute("data-timeline-group"),timelinePriority:Ce(Y.getAttribute("data-timeline-priority"))}),Ee.add(Y.id))}}catch(D){L("runtime.timeline.site1",D)}}if(a&&M!=null&&M>0){let O=q.length>0?Math.max(...q.map(D=>D.track))+1:0;for(let D of a.children){let G=D;if(!G.id||Ee.has(G.id))continue;let Q=G.getAttribute("data-timeline-role");if(Q!=="overlay"&&Q!=="persistent-overlay")continue;let ae=G.tagName.toLowerCase();if(ae==="script"||ae==="style"||ae==="link"||ae==="meta"||window.getComputedStyle(G).display==="none")continue;let z=W(0,M);z<=0||(se=Math.max(se,z),q.push({id:G.id,label:G.getAttribute("data-timeline-label")??G.getAttribute("data-label")??G.getAttribute("aria-label")??G.id,start:0,duration:z,track:Number.parseInt(G.getAttribute("data-track-index")??G.getAttribute("data-track")??"",10)||O,kind:"element",tagName:ae,compositionId:G.getAttribute("data-composition-id"),compositionAncestors:H?[H]:[],parentCompositionId:H,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:Q,timelineLabel:G.getAttribute("data-timeline-label"),timelineGroup:G.getAttribute("data-timeline-group"),timelinePriority:Ce(G.getAttribute("data-timeline-priority"))}),Ee.add(G.id))}}Pl(q);for(let O of l){if(O===a)continue;let D=O.getAttribute("data-composition-id");if(!D||!ai(D))continue;let G=i.resolveStartForElement(O,0),Q=li(O);if((Q==null||Q<=0)&&Xr(O)!=null){let Y=Xr(O);Q=Math.max(0,Y-G)}let ae=r(D),j=Q&&Q>0?Q:ae;if(j==null||j<=0)continue;let z=W(G,j);z<=0||ie.push({id:D,label:O.getAttribute("data-label")??D,start:G,duration:z,thumbnailUrl:kt(O.getAttribute("data-thumbnail-url")),avatarName:null})}let V=Math.max(1,se||1,M??0);return{source:"hf-preview",type:"timeline",durationInFrames:S&&N==null?Number.POSITIVE_INFINITY:Math.max(1,Math.ceil(V*Math.max(1,e.canonicalFps))),clips:q,scenes:ie,compositionWidth:Ce(a?.getAttribute("data-width"))??1920,compositionHeight:Ce(a?.getAttribute("data-height"))??1080}}var ce=al(Cs(),1),_s=ce.default,Jp=ce.default.stringify,Xp=ce.default.fromJSON,Yp=ce.default.plugin,Qp=ce.default.parse,Zp=ce.default.list,eh=ce.default.document,th=ce.default.comment,nh=ce.default.atRule,ih=ce.default.rule,rh=ce.default.decl,oh=ce.default.root,sh=ce.default.CssSyntaxError,ah=ce.default.Declaration,lh=ce.default.Container,uh=ce.default.Processor,ch=ce.default.Document,dh=ce.default.Comment,fh=ce.default.Warning,mh=ce.default.AtRule,ph=ce.default.Result,hh=ce.default.Input,gh=ce.default.Rule,xh=ce.default.Root,bh=ce.default.Node;var Ii="data-hf-authored-id",Ms="data-hf-inner-root";function Pi(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,"\\\\$&")}function Oi(e){return e.replace(/\\\\/g,"\\\\\\\\").replace(/"/g,\'\\\\"\')}function lc(e){return e&&e.replace(/[^a-zA-Z0-9_-]/g,n=>`\\\\${n}`).replace(/^-?\\d/,n=>`\\\\${n}`)}function vs(e){let t=e.trim();return t?Array.from(new Set([t,lc(t)])).filter(Boolean):[]}function uc(e){return!!e&&/[\\w-]/.test(e)}function cc(e,t,n){let i=vs(t).sort((u,a)=>a.length-u.length);if(i.length===0)return e;let r="",o=0,s=null;for(let u=0;u<e.length;u+=1){let a=e[u],l=u>0?e[u-1]:"";if(s){r+=a,a===s&&l!=="\\\\"&&(s=null);continue}if(a===\'"\'||a==="\'"){s=a,r+=a;continue}if(a==="["){o+=1,r+=a;continue}if(a==="]"){o=Math.max(0,o-1),r+=a;continue}if(a==="#"&&o===0){let c=i.find(p=>e.startsWith(p,u+1));if(c){let p=e[u+1+c.length];if(!uc(p)){r+=n,u+=c.length;continue}}}r+=a}return r}function dc(e,t){let n=t?.trim();return n?cc(e,n,`[${Ii}="${Oi(n)}"]`):e}function fc(e,t,n,i,r){let o=dc(e,i),s=mc(o,t,n),u=s.trim();if(!u||/^(html|body|:root|\\*)$/i.test(u))return e;let a=new RegExp(`\\\\[\\\\s*data-composition-id\\\\s*=\\\\s*(["\'])${Pi(n)}\\\\1\\\\s*\\\\]`,"g");if(a.test(u))return u.replace(a,"").trim()===""?`${t}:not(:has([${Ms}])), ${t} > [${Ms}]`:s.replace(a,t);let l=s.match(/^\\s*/)?.[0]??"",c=s.match(/\\s*$/)?.[0]??"";if(r){let p=i?`[${Ii}="${Oi(i)}"]`:null;if(p&&u.startsWith(p)){let f=u.slice(p.length);return`${l}${t}${p}${f}${c}`}}return`${l}${t} ${u}${c}`}function mc(e,t,n){let i=Pi(n),r=String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${i}"|\'${i}\')\\s*\\]`,o=String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`;return e.replace(new RegExp(`${r}(?:${o})+`,"g"),t).replace(new RegExp(`(?:${o})+${r}`,"g"),t)}var pc=new Set(["keyframes","-webkit-keyframes","font-face"]);function hc(e){return e?.type==="atrule"}function gc(e){let t=e.parent;for(;t;){if(hc(t)&&pc.has(t.name.toLowerCase()))return!0;t=t.parent}return!1}function Bi(e,t,n,i,r){let o=t.trim();if(!e||!o)return e;let s=n||`[data-composition-id="${Oi(o)}"]`,u=_s.parse(e);return u.walkRules(a=>{gc(a)||(a.selectors=a.selectors.map(l=>fc(l,s,o,i,r?.compoundAuthoredRoot)))}),u.toResult({map:!1}).css}function Ts(e,t,n="[HyperFrames] composition script error:",i,r=t,o){let s=JSON.stringify(t),u=JSON.stringify(r),a=JSON.stringify(n),l=Pi(t),c=JSON.stringify(o?.trim()||null),p=JSON.stringify(i??null),f=JSON.stringify(String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${l}"|\'${l}\')\\s*\\]`),x=JSON.stringify(String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`),E=JSON.stringify(vs(o?.trim()||""));return`(function(){\n var __hfCompId = ${s};\n var __hfTimelineCompId = ${u};\n var __hfErrorLabel = ${a};\n var __hfAuthoredRootId = ${c};\n var __hfAuthoredRootAttr = ${JSON.stringify(Ii)};\n var __hfEscapeAttr = function(value) {\n return (value + "").replace(/\\\\\\\\/g, "\\\\\\\\\\\\\\\\").replace(/"/g, "\\\\\\\\\\\\"");\n };\n var __hfRootSelector = ${p} || (__hfCompId\n ? \'[data-composition-id="\' + __hfEscapeAttr(__hfCompId) + \'"]\'\n : "");\n var __hfRoot = null;\n var __hfRootSelectorPattern = ${f};\n var __hfTimingSelectorPattern = ${x};\n var __hfAuthoredRootIdForms = ${E};\n var __hfAuthoredRootSelector = __hfAuthoredRootId\n ? "[" + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(__hfAuthoredRootId) + \'"]\'\n : "";\n var __hfIsSelectorNameChar = function(char) {\n return !!char && /[\\\\w-]/.test(char);\n };\n var __hfReplaceAuthoredRootIdSelectors = function(selector) {\n if (!__hfAuthoredRootSelector || !__hfAuthoredRootIdForms.length || typeof selector !== "string") {\n return selector;\n }\n var result = "";\n var bracketDepth = 0;\n var quote = null;\n for (var index = 0; index < selector.length; index += 1) {\n var char = selector[index];\n var previousChar = index > 0 ? selector[index - 1] : "";\n if (quote) {\n result += char;\n if (char === quote && previousChar !== "\\\\\\\\") {\n quote = null;\n }\n continue;\n }\n if (char === \'"\' || char === "\'") {\n quote = char;\n result += char;\n continue;\n }\n if (char === "[") {\n bracketDepth += 1;\n result += char;\n continue;\n }\n if (char === "]") {\n bracketDepth = Math.max(0, bracketDepth - 1);\n result += char;\n continue;\n }\n if (char === "#" && bracketDepth === 0) {\n var matchedForm = null;\n for (var formIndex = 0; formIndex < __hfAuthoredRootIdForms.length; formIndex += 1) {\n var form = __hfAuthoredRootIdForms[formIndex];\n if (selector.slice(index + 1, index + 1 + form.length) === form) {\n matchedForm = form;\n break;\n }\n }\n if (matchedForm) {\n var nextChar = selector[index + 1 + matchedForm.length];\n if (!__hfIsSelectorNameChar(nextChar)) {\n result += __hfAuthoredRootSelector;\n index += matchedForm.length;\n continue;\n }\n }\n }\n result += char;\n }\n return result;\n };\n var __hfNormalizeSelector = function(selector) {\n if (!__hfCompId || typeof selector !== "string") return selector;\n var normalized = selector\n .replace(new RegExp(__hfRootSelectorPattern + \'(?:\' + __hfTimingSelectorPattern + \')+\', \'g\'), __hfRootSelector)\n .replace(new RegExp(\'(?:\' + __hfTimingSelectorPattern + \')+\' + __hfRootSelectorPattern, \'g\'), __hfRootSelector);\n if (__hfAuthoredRootSelector) {\n normalized = __hfReplaceAuthoredRootIdSelectors(normalized);\n }\n return normalized;\n };\n var __hfFindRoot = function() {\n if (!__hfRoot && __hfRootSelector) {\n __hfRoot = window.document.querySelector(__hfRootSelector);\n }\n return __hfRoot;\n };\n var __hfContains = function(node) {\n var root = __hfFindRoot();\n return !root || node === root || root.contains(node);\n };\n var __hfQueryAll = function(selector) {\n var root = __hfFindRoot();\n if (!root || typeof selector !== "string") {\n return window.document.querySelectorAll(selector);\n }\n return Array.prototype.filter.call(window.document.querySelectorAll(__hfNormalizeSelector(selector)), function(node) {\n return __hfContains(node);\n });\n };\n var __hfQueryOne = function(selector) {\n var matches = __hfQueryAll(selector);\n return matches[0] || null;\n };\n var __hfGetElementById = function(id) {\n var found = window.document.getElementById(id);\n if (found && __hfContains(found)) return found;\n var root = __hfFindRoot();\n if (!root) return found || null;\n var idValue = id + "";\n if (__hfAuthoredRootId && __hfAuthoredRootId === idValue && root.getAttribute && root.getAttribute(__hfAuthoredRootAttr) === idValue) {\n return root;\n }\n if (root.id === idValue) return root;\n if (typeof root.querySelector !== "function") return null;\n try {\n var authoredRootMatch = root.querySelector(\'[\' + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(idValue) + \'"]\');\n if (authoredRootMatch) return authoredRootMatch;\n } catch {}\n if (typeof CSS !== "undefined" && CSS && typeof CSS.escape === "function") {\n try {\n return root.querySelector("#" + CSS.escape(idValue)) || null;\n } catch {}\n }\n try {\n return root.querySelector(\'[id="\' + __hfEscapeAttr(idValue) + \'"]\') || null;\n } catch {}\n return null;\n };\n var __hfScopedDocument = typeof Proxy === "function"\n ? new Proxy(window.document, {\n get: function(target, prop, receiver) {\n if (prop === "querySelector") return __hfQueryOne;\n if (prop === "querySelectorAll") return __hfQueryAll;\n if (prop === "getElementById") return __hfGetElementById;\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n })\n : window.document;\n var __hfTimelineRegistryProxy = null;\n var __hfGetTimelineRegistry = function() {\n window.__timelines = window.__timelines || {};\n if (!__hfCompId || __hfCompId === __hfTimelineCompId || typeof Proxy !== "function") {\n return window.__timelines;\n }\n if (!__hfTimelineRegistryProxy) {\n __hfTimelineRegistryProxy = new Proxy(window.__timelines, {\n get: function(target, prop, receiver) {\n return Reflect.get(target, prop === __hfCompId ? __hfTimelineCompId : prop, target);\n },\n set: function(target, prop, value, receiver) {\n return Reflect.set(target, prop === __hfCompId ? __hfTimelineCompId : prop, value, target);\n },\n });\n }\n return __hfTimelineRegistryProxy;\n };\n var __hfScopedWindow = typeof Proxy === "function"\n ? new Proxy(window, {\n get: function(target, prop, receiver) {\n if (prop === "__timelines") return __hfGetTimelineRegistry();\n // Inside a sub-composition, __hyperframes is passed as a bare script\n // param bound to the SCOPED variant (per-comp getVariables). But\n // authors routinely write the documented window.__hyperframes.\n // getVariables() form, which would otherwise fall through to the host\n // page\'s base __hyperframes and return the WRONG (or empty) variables\n // for this instance. Route it to the scoped variant too so both\n // spellings resolve to this composition\'s own variables.\n // (__hfScopedHyperframes is a hoisted var assigned below, before any\n // sub-comp script -- the only code that reads this -- runs.)\n if (prop === "__hyperframes") return __hfScopedHyperframes;\n return Reflect.get(target, prop, target);\n },\n set: function(target, prop, value, receiver) {\n if (prop === "__timelines") {\n target.__timelines = value || {};\n __hfTimelineRegistryProxy = null;\n return true;\n }\n return Reflect.set(target, prop, value, target);\n },\n })\n : window;\n var __hfResolveGsapTarget = function(target) {\n if (typeof target !== "string") return target;\n return __hfQueryAll(target);\n };\n var __hfScopeTimeline = function(timeline) {\n if (!timeline || timeline.__hfScopedCompositionRoot === __hfFindRoot()) return timeline;\n ["to", "from", "fromTo", "set"].forEach(function(method) {\n var original = timeline[method];\n if (typeof original !== "function") return;\n timeline[method] = function(target) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(target);\n return original.apply(timeline, args);\n };\n });\n try {\n Object.defineProperty(timeline, "__hfScopedCompositionRoot", {\n value: __hfFindRoot(),\n configurable: true,\n });\n } catch {\n // Best-effort: timelines coming from user code may have a frozen target\n // or a non-extensible defineProperty path. Swallow \\u2014 the scoped root\n // is an enrichment, not a correctness invariant for playback.\n }\n return timeline;\n };\n var __hfBaseGsap = typeof gsap === "undefined" ? window.gsap : gsap;\n var __hfScopedGsap = !__hfBaseGsap || typeof Proxy !== "function"\n ? __hfBaseGsap\n : new Proxy(__hfBaseGsap, {\n get: function(target, prop, receiver) {\n if (prop === "timeline") {\n return function() {\n return __hfScopeTimeline(target.timeline.apply(target, arguments));\n };\n }\n if (prop === "to" || prop === "from" || prop === "fromTo" || prop === "set") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return target[prop].apply(target, args);\n };\n }\n if (prop === "utils" && target.utils && typeof Proxy === "function") {\n return new Proxy(target.utils, {\n get: function(utilsTarget, utilsProp, utilsReceiver) {\n if (utilsProp === "toArray") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return utilsTarget.toArray.apply(utilsTarget, args);\n };\n }\n if (utilsProp === "selector") {\n return function(base) {\n var baseEl = typeof base === "string" ? __hfQueryOne(base) : base;\n var root = baseEl || __hfFindRoot();\n return function(selector) {\n if (!root || typeof selector !== "string") return [];\n return Array.prototype.filter.call(\n window.document.querySelectorAll(__hfNormalizeSelector(selector)),\n function(node) {\n return node === root || (typeof root.contains === "function" && root.contains(node));\n },\n );\n };\n };\n }\n var value = Reflect.get(utilsTarget, utilsProp, utilsTarget);\n return typeof value === "function" ? value.bind(utilsTarget) : value;\n },\n });\n }\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n });\n var __hfBaseHyperframes = window.__hyperframes;\n var __hfScopedHyperframes = !__hfBaseHyperframes\n ? __hfBaseHyperframes\n : Object.assign({}, __hfBaseHyperframes, {\n getVariables: function() {\n var byComp = window.__hfVariablesByComp;\n var scoped = byComp && __hfTimelineCompId ? byComp[__hfTimelineCompId] : null;\n return scoped ? Object.assign({}, scoped) : {};\n },\n });\n var __hfRun = function() {\n try {\n (function(document, gsap, window, __hyperframes) {\n${e.replace(/<\\/(script)/gi,"<\\\\/$1")}\n }).call(window, __hfScopedDocument, __hfScopedGsap, __hfScopedWindow, __hfScopedHyperframes);\n } catch (_err) {\n console.error(__hfErrorLabel, __hfCompId, _err);\n }\n };\n __hfFindRoot();\n __hfRun();\n})();`}function Ns(){if(typeof document>"u")return{};let e=Hi(document.documentElement),t=xc();return{...e,...t}}function Hi(e){if(!e)return{};let t=e.getAttribute("data-composition-variables");if(!t)return{};let n;try{n=JSON.parse(t)}catch{return{}}if(!Array.isArray(n))return{};let i={};for(let r of n){if(!r||typeof r!="object")continue;let o=r;typeof o.id!="string"||!("default"in o)||(i[o.id]=o.default)}return i}function xc(){if(typeof window>"u")return{};let e=window.__hfVariables;return!e||typeof e!="object"||Array.isArray(e)?{}:e}var bc=8e3,yc=/^(?![a-zA-Z][a-zA-Z\\d+\\-.]*:)(?!\\/\\/)(?!\\/)(?!\\.\\.?\\/).+/,Sc=/\\burl\\(\\s*(["\']?)([^)"\']+)\\1\\s*\\)/g,Ec=["src","href"];function Ac(e){return!e||e.startsWith("http://")||e.startsWith("https://")||e.startsWith("//")||e.startsWith("data:")||e.startsWith("#")||e.startsWith("/")}function Rs(e,t){if(!t)return e;let n=e.trim();if(Ac(n)||!n.startsWith("../")&&n!=="..")return e;try{return new URL(n,t).href}catch{return e}}function ks(e,t){return!t||!e?e:e.replace(Sc,(n,i,r)=>{let o=Rs(r||"",t);return o===r?n:`url(${i||""}${o}${i||""})`})}function wc(e,t){for(let n of Array.from(e.querySelectorAll("[src], [href]")))for(let i of Ec){let r=n.getAttribute(i);if(r==null)continue;let o=Rs(r,t);o!==r&&n.setAttribute(i,o)}}function Fc(e,t){for(let n of Array.from(e.querySelectorAll("[style]"))){let i=n.getAttribute("style");if(i==null)continue;let r=ks(i,t);r!==i&&n.setAttribute("style",r)}}function Cc(e,t){for(let n of Array.from(e.querySelectorAll("style"))){let i=n.textContent||"",r=ks(i,t);r!==i&&(n.textContent=r)}}function Ds(e,t){if(t){wc(e,t),Fc(e,t),Cc(e,t);for(let n of Array.from(e.querySelectorAll("template")))Ds(n.content,t)}}function _c(e,t){return`${e}__hf${t}`}var Mc=e=>new Promise(t=>{let n=!1,i=Date.now(),r=null,o=s=>{n||(n=!0,r!=null&&window.clearTimeout(r),t({status:s,elapsedMs:Math.max(0,Date.now()-i)}))};e.addEventListener("load",()=>o("load"),{once:!0}),e.addEventListener("error",()=>o("error"),{once:!0}),r=window.setTimeout(()=>o("timeout"),bc)});function Gi(e){for(;e.firstChild;)e.removeChild(e.firstChild);e.textContent=""}var vc=["data-composition-id","data-composition-file","data-start","data-duration","data-end","data-track-index","data-track","data-composition-src","data-hf-authored-duration","data-hf-authored-end"];function Tc(e){let t=document.importNode(e,!0),n=t.getAttribute("id")?.trim();for(let o of vc)t.removeAttribute(o);n&&(t.removeAttribute("id"),t.setAttribute("data-hf-authored-id",n)),t.setAttribute("data-hf-inner-root","true");let i=t.getAttribute("data-width"),r=t.getAttribute("data-height");return t.style.width=i?`${i}px`:"100%",t.style.height=r?`${r}px`:"100%",t}function Ls(e,t){let n=e.trim();if(!n)return e;try{return yc.test(n)?new URL(n,document.baseURI).toString():t?new URL(n,t).toString():new URL(n,document.baseURI).toString()}catch{return e}}function Nc(e){let t=e.getAttribute("data-variable-values");if(!t)return{};let n;try{n=JSON.parse(t)}catch{return{}}return!n||typeof n!="object"||Array.isArray(n)?{}:n}function Mn(e){let t=(e.getAttribute("data-composition-id")||"").trim()||null;return{authoredCompositionId:(e.getAttribute("data-hf-original-composition-id")||t||"").trim()||null,runtimeCompositionId:t}}function Lc(e){let t=new Map;for(let n of e){let i=Mn(n).authoredCompositionId||"";i&&t.set(i,(t.get(i)||0)+1)}return t}function Is(e){let t=Mn(e).authoredCompositionId;return t?!!document.querySelector(`template#${CSS.escape(t)}-template`):!1}function Rc(e){return!!e.querySelector(\'[data-hf-inner-root="true"]\')}function kc(e){return e.hasAttribute("data-composition-src")?!0:Is(e)?e.children.length===0||e.hasAttribute("data-hf-original-composition-id")?!0:Rc(e):!1}function Ui(){return Array.from(document.querySelectorAll("[data-composition-src], [data-composition-id]")).filter(t=>t.hasAttribute("data-composition-src")?!0:Is(t))}function Ps(){let e=window.__hfVariablesByComp;if(!e)return;let t=new Set(Ui().map(n=>Mn(n).runtimeCompositionId).filter(n=>!!n));for(let n of Object.keys(e))t.has(n)||delete e[n]}function Os(e,t=Lc(e)){let n=new Map,i=new Map;for(let r of e){let{authoredCompositionId:o,runtimeCompositionId:s}=Mn(r),u=kc(r);if(!o){i.set(r,{authoredCompositionId:null,runtimeCompositionId:s});continue}let a=(t.get(o)||0)>1,l=s||o;if(u){let c=a?(n.get(o)||0)+1:0;a&&n.set(o,c),l=a?_c(o,c):o,a?r.setAttribute("data-hf-original-composition-id",o):r.removeAttribute("data-hf-original-composition-id"),r.setAttribute("data-composition-id",l),s&&s!==l&&window.__hfVariablesByComp&&delete window.__hfVariablesByComp[s]}i.set(r,{authoredCompositionId:o,runtimeCompositionId:l})}return i}async function Wi(e){let t=null;e.authoredCompositionId&&(t=Array.from(e.sourceNode.querySelectorAll("[data-composition-id]")).find(x=>x.getAttribute("data-composition-id")===e.authoredCompositionId)??null);let n=t??e.sourceNode,i=t?.getAttribute("data-composition-id")?.trim()||e.authoredCompositionId||null,r=e.runtimeCompositionId||i||null,o=t?.getAttribute("id")?.trim()||null,s=r?`[data-composition-id="${CSS.escape(r)}"]`:void 0;if(e.headLinks)for(let f of e.headLinks){let x=f.getAttribute("href")||"";x&&(document.head.querySelector(`link[href="${CSS.escape(x)}"]`)||document.head.appendChild(f.cloneNode(!0)))}if(e.headStyles)for(let f of e.headStyles){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=Bi(x.textContent||"",i,s,o)),document.head.appendChild(x),e.injectedStyles.push(x))}let u=Array.from(n.querySelectorAll("style"));for(let f of u){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=Bi(x.textContent||"",i,s,o)),document.head.appendChild(x),e.injectedStyles.push(x))}let a=[];if(e.headScripts)for(let f of e.headScripts){let x=f.getAttribute("type")?.trim()??"",E=f.getAttribute("src")?.trim()??"";if(E){let b=Ls(E,e.compositionUrl);a.push({kind:"external",src:b,type:x})}else{let b=f.textContent?.trim()??"";b&&a.push({kind:"inline",content:b,type:x,scopeCompositionId:i})}}let l=Array.from(n.querySelectorAll("script")),c=[...a];for(let f of l){let x=f.getAttribute("type")?.trim()??"",E=f.getAttribute("src")?.trim()??"";if(E){let b=Ls(E,e.compositionUrl);c.push({kind:"external",src:b,type:x})}else{let b=f.textContent?.trim()??"";b&&c.push({kind:"inline",content:b,type:x,scopeCompositionId:i})}f.parentNode?.removeChild(f)}let p=Array.from(n.querySelectorAll("style"));for(let f of p)f.parentNode?.removeChild(f);if(t){let f=t.getAttribute("data-width"),x=t.getAttribute("data-height"),E=e.parseDimensionPx(f),b=e.parseDimensionPx(x);f&&e.host.setAttribute("data-width",f),x&&e.host.setAttribute("data-height",x),E&&e.host instanceof HTMLElement&&(e.host.style.width=E),b&&e.host instanceof HTMLElement&&(e.host.style.height=b),t.hasAttribute("data-timeline-locked")&&e.host.setAttribute("data-timeline-locked",""),e.host.appendChild(Tc(t))}else e.hasTemplate?e.host.appendChild(document.importNode(n,!0)):e.host.innerHTML=e.fallbackBodyInnerHtml;if(r){let f={...e.declaredVariableDefaults??{},...Nc(e.host)};Object.keys(f).length>0?(window.__hfVariablesByComp||(window.__hfVariablesByComp={}),window.__hfVariablesByComp[r]=f):window.__hfVariablesByComp&&delete window.__hfVariablesByComp[r]}for(let f of c){let x=document.createElement("script");if(f.type&&(x.type=f.type),x.async=!1,f.kind==="external"?x.src=f.src:f.type.toLowerCase()==="module"?x.textContent=f.content:f.scopeCompositionId?x.textContent=Ts(f.content,f.scopeCompositionId,"[HyperFrames] composition script error:",s,r||f.scopeCompositionId,o):x.textContent=`(function(){${f.content}})();`,document.body.appendChild(x),e.injectedScripts.push(x),f.kind==="external"){let E=await Mc(x);E.status!=="load"&&e.onDiagnostic?.({code:"external_composition_script_load_issue",details:{hostCompositionId:e.authoredCompositionId,runtimeCompositionId:e.runtimeCompositionId,hostCompositionSrc:e.hostCompositionSrc,resolvedScriptSrc:f.src,loadStatus:E.status,elapsedMs:E.elapsedMs}})}}}async function Bs(e){let t=Ui();if(Ps(),t.length===0)return;let n=Os(t),i=t.filter(r=>{if(r.hasAttribute("data-composition-src")||r.children.length>0)return!1;let o=n.get(r)?.authoredCompositionId;return o?!!document.querySelector(`template#${CSS.escape(o)}-template`):!1});if(i.length!==0)for(let r of i){let o=n.get(r),s=o?.authoredCompositionId;if(!s)continue;let u=document.querySelector(`template#${CSS.escape(s)}-template`);Gi(r),await Wi({host:r,authoredCompositionId:s,runtimeCompositionId:o?.runtimeCompositionId||s,hostCompositionSrc:`template#${s}-template`,sourceNode:u.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:null,injectedStyles:e.injectedStyles,injectedScripts:e.injectedScripts,parseDimensionPx:e.parseDimensionPx,onDiagnostic:e.onDiagnostic})}}async function Hs(e){let t=Ui();if(Ps(),t.length===0)return;let n=Os(t),i=t.filter(r=>r.hasAttribute("data-composition-src"));i.length!==0&&await Promise.all(i.map(async r=>{let o=r.getAttribute("data-composition-src");if(!o)return;let s=n.get(r),u=s?.authoredCompositionId||null,a=s?.runtimeCompositionId||u||null,l=null;try{l=new URL(o,document.baseURI)}catch{l=null}Gi(r);try{let c=u!=null?document.querySelector(`template#${CSS.escape(u)}-template`):null;if(c){await Wi({host:r,authoredCompositionId:u,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:c.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:l,injectedStyles:e.injectedStyles,injectedScripts:e.injectedScripts,parseDimensionPx:e.parseDimensionPx,onDiagnostic:e.onDiagnostic});return}let p=await fetch(o);if(!p.ok)throw new Error(`HTTP ${p.status}`);let f=await p.text(),E=new DOMParser().parseFromString(f,"text/html");Ds(E,l);let b=(u?E.querySelector(`template#${CSS.escape(u)}-template`):null)??E.querySelector("template"),g=b?b.content:E.body,A=b?void 0:Array.from(E.head.querySelectorAll("style")),_=b?void 0:Array.from(E.head.querySelectorAll("script")),N=b?void 0:Array.from(E.head.querySelectorAll(\'link[rel="stylesheet"], link[rel="preconnect"]\'));await Wi({host:r,authoredCompositionId:u,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:g,hasTemplate:!!b,fallbackBodyInnerHtml:E.body.innerHTML,compositionUrl:l,injectedStyles:e.injectedStyles,injectedScripts:e.injectedScripts,parseDimensionPx:e.parseDimensionPx,headStyles:A,headScripts:_,headLinks:N,declaredVariableDefaults:Hi(E.documentElement),onDiagnostic:e.onDiagnostic})}catch(c){e.onDiagnostic?.({code:"external_composition_load_failed",details:{hostCompositionId:u,runtimeCompositionId:a,hostCompositionSrc:o,errorMessage:c instanceof Error?c.message:"unknown_error"}}),Gi(r)}}))}function Dc(e){return e instanceof HTMLElement?e.dataset.captionWrapper!=="true"?e:e.querySelector(":scope > span")??null:null}function Ic(){let e=[],t=document.querySelectorAll(".caption-group");for(let n of t)for(let i of n.children){if(!(i instanceof HTMLElement))continue;let r=i.dataset.captionWrapper==="true"?i.querySelector(":scope > span"):i.tagName==="SPAN"?i:null;r&&e.push(r)}return e}function Pc(e){let t=e.parentElement;if(t?.dataset.captionWrapper==="true")return t;let n=document.createElement("span");return n.style.display="inline-block",n.dataset.captionWrapper="true",e.parentNode?.insertBefore(n,e),n.appendChild(e),n}function Vi(){let e=window.gsap;e&&document.querySelectorAll(".caption-group").length!==0&&fetch("caption-overrides.json").then(t=>t.ok?t.json():null).then(t=>{if(!t||!Array.isArray(t)||t.length===0)return;let n=Ic();for(let i of t){let r=null;if(i.wordId&&(r=Dc(document.getElementById(i.wordId))),!r&&i.wordIndex!==void 0&&(r=n[i.wordIndex]??null),!r)continue;let o={},s={};if(i.x!==void 0&&(o.x=i.x),i.y!==void 0&&(o.y=i.y),i.scale!==void 0&&(o.scale=i.scale),i.rotation!==void 0&&(o.rotation=i.rotation),i.opacity!==void 0&&(s.opacity=i.opacity),i.fontSize!==void 0&&(s.fontSize=`${i.fontSize}px`),i.fontWeight!==void 0&&(s.fontWeight=i.fontWeight),i.fontFamily!==void 0&&(s.fontFamily=i.fontFamily),i.activeColor||i.dimColor){let a=e.getTweensOf(r).filter(c=>c.vars.color!==void 0).sort((c,p)=>c.startTime()-p.startTime()),l=a.length>0?String(a[0].vars.color):"";for(let c of a)String(c.vars.color)===l?i.dimColor&&(c.vars.color=i.dimColor):i.activeColor&&(c.vars.color=i.activeColor);i.dimColor&&e.set(r,{color:i.dimColor})}if(Object.keys(s).length>0&&e.set(r,s),Object.keys(o).length>0){let u=Pc(r);e.set(u,o)}}}).catch(()=>{})}var Us="data-hf-edit-base-x",Vs="data-hf-edit-base-y",zi="data-hf-edit-original-translate",vn=e=>{let t=parseFloat(e??"");return Number.isFinite(t)?t:0},Oc=e=>{let t=[],n=0,i="";for(let r of e.trim())r==="("&&(n+=1),r===")"&&(n=Math.max(0,n-1)),/\\s/.test(r)&&n===0?(i&&t.push(i),i=""):i+=r;return i&&t.push(i),t},Gs=/^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)px$/,qi=(e,t)=>Gs.test(e)&&Gs.test(t)?`${parseFloat(e)+parseFloat(t)}px`:`calc(${e} + ${t})`,Bc=(e,t,n)=>{if(!e||e==="none")return`${t} ${n}`;let[i,r,o]=Oc(e);if(i===void 0)return`${t} ${n}`;if(r===void 0)return`${qi(i,t)} ${n}`;let s=o===void 0?"":` ${o}`;return`${qi(i,t)} ${qi(r,n)}${s}`},Hc=e=>{try{e.ownerDocument.defaultView?.gsap?.getProperty?.(e,"x")}catch{}},Gc=e=>{let t=e.style.getPropertyValue("translate").trim();if(t)return t==="none"?"":t;try{let n=e.ownerDocument.defaultView,i=n?n.getComputedStyle(e).getPropertyValue("translate").trim():"";return i==="none"?"":i}catch{return""}},Ws=new WeakMap;function Wc(e,t){let n=Ws.get(e);if(!t?.force&&n!==void 0&&e.style.getPropertyValue("translate")!==n){ot("position_edit_fold_skipped",{hfId:e.getAttribute("data-hf-id")});return}let i=vn(e.getAttribute("data-x"))-vn(e.getAttribute(Us)),r=vn(e.getAttribute("data-y"))-vn(e.getAttribute(Vs));e.hasAttribute(zi)||e.setAttribute(zi,Gc(e)),n===void 0&&Hc(e);let o=e.getAttribute(zi)??"",s=Bc(o,`${i}px`,`${r}px`);e.style.setProperty("translate",s),Ws.set(e,e.style.getPropertyValue("translate"))}function ji(e){let t=e.querySelectorAll(`[${Us}], [${Vs}]`),n=0;for(let i=0;i<t.length;i++){let r=t[i];r instanceof HTMLElement&&(Wc(r),n+=1)}return n}var Qt="data-color-grading",zs="__hf_color_grading_",Uc="rec709",Tn={exposure:0,contrast:0,highlights:0,shadows:0,whites:0,blacks:0,temperature:0,tint:0,vibrance:0,saturation:0},Nn={vignette:0,vignetteMidpoint:.5,vignetteRoundness:0,vignetteFeather:.65,grain:0,grainSize:.25,grainRoughness:.5},Ln={blur:0,pixelate:0},qs=Object.keys(Tn),Vc=Object.keys(Nn),js=Object.keys(Ln);function Ae(e,t,n={},i={}){return{id:e,label:t,adjust:{...Tn,...n},details:{...Nn,...i},effects:{...Ln}}}var zc=[Ae("neutral","Neutral"),Ae("natural-lift","Natural Lift",{exposure:.04,contrast:.06,highlights:-.06,shadows:.08,saturation:.05}),Ae("fresh-pop","Fresh Pop",{exposure:.08,contrast:.12,whites:.06,shadows:.04,temperature:-.02,vibrance:.08,saturation:.16}),Ae("warm-daylight","Warm Daylight",{exposure:.06,contrast:.07,highlights:-.06,shadows:.08,temperature:.18,saturation:.08}),Ae("clean-studio","Clean Studio",{contrast:.08,highlights:-.08,shadows:.06,temperature:-.08,tint:.03,saturation:.04}),Ae("skin-soft","Skin Soft",{exposure:.04,contrast:-.03,highlights:-.12,shadows:.12,temperature:.08,tint:.02,saturation:.04}),Ae("food-pop","Food Pop",{exposure:.06,contrast:.1,shadows:.06,temperature:.14,vibrance:.1,saturation:.18}),Ae("night-lift","Night Lift",{exposure:.08,contrast:.08,highlights:-.18,shadows:.2,blacks:-.08,saturation:.04},{vignette:.12}),Ae("muted-editorial","Muted Editorial",{exposure:-.02,contrast:.08,highlights:-.08,shadows:.06,blacks:-.05,temperature:-.03,saturation:-.12},{vignette:.1}),Ae("vintage-wash","Vintage Wash",{exposure:.03,contrast:-.12,highlights:-.1,shadows:.16,whites:-.04,blacks:.08,temperature:.13,vibrance:-.08,saturation:-.08},{vignette:.18}),Ae("mono-clean","Mono Clean",{contrast:.12,highlights:-.04,shadows:.04,blacks:-.08,saturation:-1}),Ae("mono-fade","Mono Fade",{contrast:-.04,highlights:-.06,shadows:.1,blacks:.12,saturation:-1},{vignette:.08}),Ae("warm-clean","Warm Clean",{exposure:.05,contrast:.08,highlights:-.08,shadows:.08,temperature:.16,vibrance:.04,saturation:.06}),Ae("cool-clean","Cool Clean",{contrast:.06,highlights:-.06,shadows:.06,temperature:-.12,tint:.04,saturation:.04}),Ae("soft-boost","Soft Boost",{exposure:.06,contrast:-.04,highlights:-.14,shadows:.16,vibrance:.08,saturation:.1}),Ae("bright-pop","Bright Pop",{exposure:.12,contrast:.12,whites:.08,blacks:-.04,vibrance:.08,saturation:.14}),Ae("deep-contrast","Deep Contrast",{exposure:-.03,contrast:.2,highlights:-.08,shadows:-.08,blacks:-.12,saturation:.06})],qc=new Map(zc.map(e=>[e.id,e])),jc=/^\\$(?:\\{([A-Za-z0-9_.:-]+)\\}|([A-Za-z0-9_.:-]+))$/,$c={exposure:{min:-2,max:2},contrast:{min:-1,max:1},highlights:{min:-1,max:1},shadows:{min:-1,max:1},whites:{min:-1,max:1},blacks:{min:-1,max:1},temperature:{min:-1,max:1},tint:{min:-1,max:1},vibrance:{min:-1,max:1},saturation:{min:-1,max:1}},Kc={vignette:{min:0,max:1},vignetteMidpoint:{min:0,max:1},vignetteRoundness:{min:-1,max:1},vignetteFeather:{min:0,max:1},grain:{min:0,max:1},grainSize:{min:0,max:1},grainRoughness:{min:0,max:1}},Jc={blur:{min:0,max:1},pixelate:{min:0,max:1}};function ut(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Xc(e,t,n){return Number.isFinite(e)?Math.min(n,Math.max(t,e)):0}function $s(e,t){let n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?Math.min(1,Math.max(0,n)):t}function $i(e,t){let n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?Xc(n,t.min,t.max):0}function Yc(e){if(e==null)return null;let t=String(e).trim();return t||null}function Qc(e){if(e==null)return null;if(typeof e=="string"){let n=e.trim();return n?{src:n,intensity:1}:null}if(!ut(e))return null;let t=e.src;return typeof t!="string"||t.trim()===""?null:{src:t.trim(),intensity:$s(e.intensity,1)}}function Zc(e){if(typeof e=="string"){let t=e.trim();if(!t)return null;if(t.startsWith("{"))try{let n=JSON.parse(t);return ut(n)?n:null}catch{return null}return{preset:t,intensity:1}}return ut(e)?e:null}function ed(e,t){let n=e.trim().match(jc);if(!n)return e;let i=n[1]??n[2]??"";return i&&Object.hasOwn(t,i)?t[i]:e}function Ki(e,t){if(typeof e=="string"){let i=ed(e,t);if(i!==e)return i;let r=e.trim();if(!r.startsWith("{"))return e;try{return Ki(JSON.parse(r),t)}catch{return e}}if(!ut(e))return e;let n={};for(let[i,r]of Object.entries(e))n[i]=Ki(r,t);return n}function td(e){return e?qc.get(e)??null:null}function Ji(e){let t=Zc(e);if(!t||t.enabled===!1)return null;let n=Yc(t.preset),i=td(n),r=i?.adjust??Tn,o=i?.details??Nn,s=i?.effects??Ln,u=ut(t.adjust)?t.adjust:{},a=ut(t.details)?t.details:{},l=ut(t.effects)?t.effects:{},c=qs.reduce((x,E)=>(x[E]=$i(u[E]??r[E],$c[E]),x),{...Tn}),p=Vc.reduce((x,E)=>(x[E]=$i(a[E]??o[E],Kc[E]),x),{...Nn}),f=js.reduce((x,E)=>(x[E]=$i(l[E]??s[E],Jc[E]),x),{...Ln});return{enabled:!0,preset:n,intensity:$s(t.intensity,1),adjust:c,details:p,effects:f,lut:Qc(t.lut),colorSpace:typeof t.colorSpace=="string"&&t.colorSpace.trim()?t.colorSpace.trim():Uc}}function Ks(e,t){return Ji(Ki(e,t))}function Zt(e){return!e?.enabled||e.intensity===0?!1:e.lut&&e.lut.intensity!==0?!0:qs.some(t=>Math.abs(e.adjust[t])>1e-4)||Math.abs(e.details.vignette)>1e-4||Math.abs(e.details.grain)>1e-4||js.some(t=>Math.abs(e.effects[t])>1e-4)}var Se=class extends Error{constructor(n,i=null){super(i==null?n:`${n} at line ${i}`);xe(this,"lineNumber");this.name="CubeLutParseError",this.lineNumber=i}},nd=[0,0,0],id=[1,1,1],Yi=64;function rd(e){let t=!1;for(let n=0;n<e.length;n++){let i=e[n];if(i===\'"\'&&(t=!t),i==="#"&&!t)return e.slice(0,n)}return e}function Qe(e,t){let n=Number(e);if(!Number.isFinite(n))throw new Se(`Invalid number "${e}"`,t);return n}function Js(e,t,n){if(e.length!==3)throw new Se(`${t} expects three numbers`,n);return[Qe(e[0],n),Qe(e[1],n),Qe(e[2],n)]}function Xs(e,t,n){if(!e)throw new Se(`${t} expects a size`,n);let i=Number(e);if(!Number.isInteger(i)||i<2)throw new Se(`${t} must be an integer greater than 1`,n);return i}function od(e,t){if(t[0]<=e[0]||t[1]<=e[1]||t[2]<=e[2])throw new Se("DOMAIN_MAX values must be greater than DOMAIN_MIN values")}function sd(e){let t=/^TITLE\\s+"([^"]*)"\\s*$/i.exec(e);if(t)return t[1]??null;let n=/^TITLE\\s+(.+)\\s*$/i.exec(e);return n&&(n[1]??"").trim()||null}function ad(e){return/^[+-]?(?:\\d|\\.\\d)/.test(e)}function Ys(e,t={}){let n=t.maxSize??Yi,i=null,r=nd,o=id,s=null,u=null,a=[],l=e.replace(/^\\uFEFF/,"").split(/\\r?\\n/);for(let p=0;p<l.length;p++){let f=p+1,x=rd(l[p]??"").trim();if(!x)continue;let E=x.split(/\\s+/),b=(E[0]??"").toUpperCase(),g=E.slice(1);if(b==="TITLE"){i=sd(x);continue}if(b==="DOMAIN_MIN"){r=Js(g,b,f);continue}if(b==="DOMAIN_MAX"){o=Js(g,b,f);continue}if(b==="LUT_3D_INPUT_RANGE"){if(g.length!==2)throw new Se(`${b} expects two numbers`,f);let A=Qe(g[0],f),_=Qe(g[1],f);if(_<=A)throw new Se("LUT_3D_INPUT_RANGE max must exceed min",f);r=[A,A,A],o=[_,_,_];continue}if(b==="LUT_1D_SIZE"){s=Xs(g[0],b,f);continue}if(b==="LUT_3D_SIZE"){if(u=Xs(g[0],b,f),u>n)throw new Se(`LUT_3D_SIZE ${u} exceeds max ${n}`,f);continue}if(!ad(b)){if(b.startsWith("LUT_"))throw new Se(`Unsupported cube keyword ${b}`,f);continue}if(!u)throw s?new Se("1D cube LUTs are not supported yet",f):new Se("LUT data appears before LUT_3D_SIZE",f);if(E.length!==3)throw new Se("LUT data rows must contain three numbers",f);a.push(Qe(E[0],f),Qe(E[1],f),Qe(E[2],f))}if(s&&u)throw new Se("Mixed 1D and 3D cube LUTs are not supported yet");if(!u)throw s?new Se("1D cube LUTs are not supported yet"):new Se("Missing LUT_3D_SIZE");od(r,o);let c=u*u*u;if(a.length!==c*3)throw new Se(`Expected ${c} LUT rows for size ${u}, found ${a.length/3}`);return{title:i,size:u,domainMin:r,domainMax:o,data:new Float32Array(a)}}function ld(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function Xi(e){return Math.round(ld(e)*255)}function Qs(e){let t=e.size,n=t*t,i=t,r=new Uint8Array(n*i*4);for(let o=0;o<t;o++)for(let s=0;s<t;s++)for(let u=0;u<t;u++){let a=((o*t+s)*t+u)*3,l=(s*n+o*t+u)*4;r[l]=Xi(e.data[a]??0),r[l+1]=Xi(e.data[a+1]??0),r[l+2]=Xi(e.data[a+2]??0),r[l+3]=255}return{width:n,height:i,data:r}}var qe=new Map,ud="data-hf-color-grading-canvas",oa="data-hf-color-grading-source-hidden",cd="__hf_color_grading_canvas__",dd=16,en={enabled:!1,position:.5,softness:0,lineWidth:2};function fd(e){let t=window,i=e.closest("[data-composition-id]")?.getAttribute("data-composition-id")?.trim()??"",r=i?t.__hfVariablesByComp?.[i]:void 0;if(r)return r;let o=t.__hyperframes?.getVariables?.();return o&&typeof o=="object"?o:t.__hfVariables??{}}function Qi(e){let t=e.getAttribute(Qt);return t==null?null:Ks(t,fd(e))}var md=["attribute vec2 a_pos;","varying vec2 v_uv;","void main(){"," v_uv = a_pos * 0.5 + 0.5;"," gl_Position = vec4(a_pos, 0.0, 1.0);","}"].join(`\n`),pd=["#ifdef GL_FRAGMENT_PRECISION_HIGH","precision highp float;","#else","precision mediump float;","#endif","varying vec2 v_uv;","uniform sampler2D u_source;","uniform sampler2D u_blurSource;","uniform sampler2D u_lut;","uniform vec2 u_resolution;","uniform vec2 u_uvScale;","uniform vec2 u_uvOffset;","uniform float u_blurReady;","uniform float u_lutEnabled;","uniform float u_lutSize;","uniform vec2 u_lutTextureSize;","uniform vec3 u_lutDomainMin;","uniform vec3 u_lutDomainMax;","uniform float u_lutIntensity;","uniform float u_exposure;","uniform float u_contrast;","uniform float u_highlights;","uniform float u_shadows;","uniform float u_whites;","uniform float u_blacks;","uniform float u_temperature;","uniform float u_tint;","uniform float u_vibrance;","uniform float u_saturation;","uniform float u_vignette;","uniform float u_vignetteMidpoint;","uniform float u_vignetteRoundness;","uniform float u_vignetteFeather;","uniform float u_grain;","uniform float u_grainSize;","uniform float u_grainRoughness;","uniform float u_grainSeed;","uniform float u_blur;","uniform float u_pixelate;","uniform float u_intensity;","uniform float u_compareEnabled;","uniform float u_comparePosition;","uniform float u_compareSoftness;","uniform float u_compareLineWidth;","float lumaOf(vec3 c){ return dot(c, vec3(0.2126, 0.7152, 0.0722)); }","float grainHash(vec2 p){ return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123); }","float colorSaturation(vec3 c){ return max(max(c.r, c.g), c.b) - min(min(c.r, c.g), c.b); }","vec2 clampUv(vec2 uv){ return clamp(uv, vec2(0.0), vec2(1.0)); }","vec4 sampleSource(vec2 uv){ return texture2D(u_source, clampUv(uv)); }","vec4 sampleBlur(vec2 uv){ return texture2D(u_blurSource, clampUv(uv)); }","vec4 sampleMedia(vec2 uv){"," float pixel = clamp(u_pixelate, 0.0, 1.0);"," vec2 sampleUv = uv;"," if (pixel > 0.0) {"," float blockSize = mix(1.0, 48.0, pixel);"," vec2 cells = max(u_resolution / blockSize, vec2(1.0));"," sampleUv = (floor(clamp(uv, vec2(0.0), vec2(0.999999)) * cells) + 0.5) / cells;"," }"," vec4 base = sampleSource(sampleUv);"," float blur = clamp(u_blur, 0.0, 1.0);"," if (blur > 0.0 && u_blurReady > 0.5) {"," base = mix(base, sampleBlur(sampleUv), blur);"," }"," return base;","}","vec3 sampleLut(float r, float g, float b){"," float size = max(u_lutSize, 2.0);"," float x = (r + b * size + 0.5) / max(u_lutTextureSize.x, 1.0);"," float y = (g + 0.5) / max(u_lutTextureSize.y, 1.0);"," return texture2D(u_lut, vec2(x, y)).rgb;","}","vec3 applyLut(vec3 color){"," if (u_lutEnabled < 0.5) return color;"," float size = max(u_lutSize, 2.0);"," vec3 span = max(u_lutDomainMax - u_lutDomainMin, vec3(0.00001));"," vec3 scaled = clamp((color - u_lutDomainMin) / span, 0.0, 1.0) * (size - 1.0);"," vec3 lo = floor(scaled);"," vec3 hi = min(lo + 1.0, vec3(size - 1.0));"," vec3 f = scaled - lo;"," vec3 c000 = sampleLut(lo.r, lo.g, lo.b);"," vec3 c100 = sampleLut(hi.r, lo.g, lo.b);"," vec3 c010 = sampleLut(lo.r, hi.g, lo.b);"," vec3 c110 = sampleLut(hi.r, hi.g, lo.b);"," vec3 c001 = sampleLut(lo.r, lo.g, hi.b);"," vec3 c101 = sampleLut(hi.r, lo.g, hi.b);"," vec3 c011 = sampleLut(lo.r, hi.g, hi.b);"," vec3 c111 = sampleLut(hi.r, hi.g, hi.b);"," vec3 c00 = mix(c000, c100, f.r);"," vec3 c10 = mix(c010, c110, f.r);"," vec3 c01 = mix(c001, c101, f.r);"," vec3 c11 = mix(c011, c111, f.r);"," vec3 c0 = mix(c00, c10, f.g);"," vec3 c1 = mix(c01, c11, f.g);"," vec3 lutColor = mix(c0, c1, f.b);"," return mix(color, lutColor, clamp(u_lutIntensity, 0.0, 1.0));","}","void main(){"," vec2 uv = (v_uv - u_uvOffset) / u_uvScale;"," if (uv.x < 0.0 || uv.y < 0.0 || uv.x > 1.0 || uv.y > 1.0) {"," gl_FragColor = vec4(0.0);"," return;"," }"," vec4 originalSample = sampleSource(uv);"," vec4 sampleColor = sampleMedia(uv);"," vec3 original = originalSample.rgb;"," vec3 color = sampleColor.rgb * pow(2.0, u_exposure);"," float y = lumaOf(color);"," float shadowMask = 1.0 - smoothstep(0.0, 0.65, y);"," float highlightMask = smoothstep(0.35, 1.0, y);"," color += u_shadows * 0.35 * shadowMask;"," color += u_highlights * 0.35 * highlightMask;"," float blackPoint = clamp(u_blacks * 0.18, -0.18, 0.18);"," float whitePoint = clamp(1.0 - u_whites * 0.18, 0.82, 1.18);"," color = (color - blackPoint) / max(whitePoint - blackPoint, 0.2);"," color.r += u_temperature * 0.08 + u_tint * 0.04;"," color.b -= u_temperature * 0.08 - u_tint * 0.04;"," color.g -= u_tint * 0.08;"," color = (color - 0.5) * max(0.0, 1.0 + u_contrast) + 0.5;"," float satLuma = lumaOf(color);"," float currentSat = clamp(colorSaturation(color), 0.0, 1.0);"," float skinLike = smoothstep(0.02, 0.18, color.r - color.g) * smoothstep(0.0, 0.16, color.g - color.b) * smoothstep(0.18, 0.82, satLuma);"," float vibranceWeight = (1.0 - currentSat * 0.72) * mix(1.0, 0.55, skinLike);"," color = mix(vec3(satLuma), color, max(0.0, 1.0 + u_vibrance * vibranceWeight));"," color = mix(vec3(satLuma), color, max(0.0, 1.0 + u_saturation));"," color = clamp(color, 0.0, 1.0);"," color = clamp(applyLut(color), 0.0, 1.0);"," vec2 vignetteAspect = u_resolution.x > u_resolution.y"," ? vec2(u_resolution.x / max(u_resolution.y, 1.0), 1.0)"," : vec2(1.0, u_resolution.y / max(u_resolution.x, 1.0));"," vec2 vignetteUv = abs((v_uv - vec2(0.5)) * 2.0) * vignetteAspect;"," float vignettePower = mix(8.0, 1.8, clamp(u_vignetteRoundness * 0.5 + 0.5, 0.0, 1.0));"," float vignetteDistance = pow(pow(vignetteUv.x, vignettePower) + pow(vignetteUv.y, vignettePower), 1.0 / vignettePower);"," float vignetteMidpoint = mix(0.22, 1.08, clamp(u_vignetteMidpoint, 0.0, 1.0));"," float vignetteFeather = mix(0.08, 0.72, clamp(u_vignetteFeather, 0.0, 1.0));"," float vignetteMask = smoothstep(vignetteMidpoint, vignetteMidpoint + vignetteFeather, vignetteDistance);"," color *= 1.0 - vignetteMask * clamp(u_vignette, 0.0, 1.0) * 0.75;"," float grainAmount = clamp(u_grain, 0.0, 1.0);"," if (grainAmount > 0.0) {"," float grainPixelSize = mix(1.0, 6.0, clamp(u_grainSize, 0.0, 1.0));"," vec2 grainCoord = floor(gl_FragCoord.xy / grainPixelSize) + vec2(u_grainSeed, u_grainSeed * 1.37);"," float grainBase = grainHash(grainCoord) - grainHash(grainCoord + vec2(19.19, 73.31));"," float grainFine = grainHash(gl_FragCoord.xy + vec2(u_grainSeed * 2.11, u_grainSeed * 0.71)) - 0.5;"," float grain = mix(grainBase * 0.7, grainBase + grainFine * 0.35, clamp(u_grainRoughness, 0.0, 1.0));"," float grainLuma = lumaOf(color);"," float grainMask = smoothstep(0.02, 0.55, grainLuma) * (1.0 - smoothstep(0.88, 1.0, grainLuma));"," color += grain * grainAmount * mix(0.025, 0.08, grainMask);"," }"," color = clamp(color, 0.0, 1.0);"," vec3 graded = mix(original, color, u_intensity);"," if (u_compareEnabled > 0.5) {"," float pos = clamp(u_comparePosition, 0.0, 1.0);"," float softness = max(u_compareSoftness, 0.00001);"," float afterMask = smoothstep(pos - softness, pos + softness, v_uv.x);"," vec3 splitColor = mix(original, graded, afterMask);"," float lineMask = 0.0;"," if (u_compareLineWidth > 0.0) {"," float lineWidth = max(u_compareLineWidth / max(u_resolution.x, 1.0), 0.00001);"," lineMask = 1.0 - smoothstep(lineWidth, lineWidth * 1.8, abs(v_uv.x - pos));"," }"," gl_FragColor = vec4(mix(splitColor, vec3(1.0), lineMask * 0.82), sampleColor.a);"," return;"," }"," gl_FragColor = vec4(graded, sampleColor.a);","}"].join(`\n`),hd=["#ifdef GL_FRAGMENT_PRECISION_HIGH","precision highp float;","#else","precision mediump float;","#endif","varying vec2 v_uv;","uniform sampler2D u_source;","uniform vec2 u_resolution;","uniform vec2 u_direction;","uniform float u_radius;","vec4 readSource(vec2 uv){"," vec4 color = texture2D(u_source, clamp(uv, vec2(0.0), vec2(1.0)));"," color.rgb *= color.a;"," return color;","}","void main(){"," vec2 stepUv = u_direction * max(u_radius, 0.0) / max(u_resolution, vec2(1.0)) / 12.0;"," vec4 color = readSource(v_uv) * 0.08077993;"," color += readSource(v_uv + stepUv * 1.0) * 0.07918038;"," color += readSource(v_uv - stepUv * 1.0) * 0.07918038;"," color += readSource(v_uv + stepUv * 2.0) * 0.07456928;"," color += readSource(v_uv - stepUv * 2.0) * 0.07456928;"," color += readSource(v_uv + stepUv * 3.0) * 0.06747307;"," color += readSource(v_uv - stepUv * 3.0) * 0.06747307;"," color += readSource(v_uv + stepUv * 4.0) * 0.05865827;"," color += readSource(v_uv - stepUv * 4.0) * 0.05865827;"," color += readSource(v_uv + stepUv * 5.0) * 0.04899551;"," color += readSource(v_uv - stepUv * 5.0) * 0.04899551;"," color += readSource(v_uv + stepUv * 6.0) * 0.03931982;"," color += readSource(v_uv - stepUv * 6.0) * 0.03931982;"," color += readSource(v_uv + stepUv * 7.0) * 0.03031761;"," color += readSource(v_uv - stepUv * 7.0) * 0.03031761;"," color += readSource(v_uv + stepUv * 8.0) * 0.02245983;"," color += readSource(v_uv - stepUv * 8.0) * 0.02245983;"," color += readSource(v_uv + stepUv * 9.0) * 0.01598624;"," color += readSource(v_uv - stepUv * 9.0) * 0.01598624;"," color += readSource(v_uv + stepUv * 10.0) * 0.01093238;"," color += readSource(v_uv - stepUv * 10.0) * 0.01093238;"," color += readSource(v_uv + stepUv * 11.0) * 0.00718308;"," color += readSource(v_uv - stepUv * 11.0) * 0.00718308;"," color += readSource(v_uv + stepUv * 12.0) * 0.00453456;"," color += readSource(v_uv - stepUv * 12.0) * 0.00453456;"," if (color.a > 0.0001) color.rgb /= color.a;"," gl_FragColor = color;","}"].join(`\n`);function ct(e){return e instanceof HTMLVideoElement||e instanceof HTMLImageElement}function Zs(e,t,n){let i=e.createShader(n);return i?(e.shaderSource(i,t),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(L("runtime.colorGrading.compileShader",e.getShaderInfoLog(i)),e.deleteShader(i),null)):null}function sa(e,t=pd){let n=Zs(e,md,e.VERTEX_SHADER),i=Zs(e,t,e.FRAGMENT_SHADER);if(!n||!i)return n&&e.deleteShader(n),i&&e.deleteShader(i),null;let r=e.createProgram();return r?(e.attachShader(r,n),e.attachShader(r,i),e.linkProgram(r),e.deleteShader(n),e.deleteShader(i),e.getProgramParameter(r,e.LINK_STATUS)?r:(L("runtime.colorGrading.linkProgram",e.getProgramInfoLog(r)),e.deleteProgram(r),null)):null}function er(e,t=e.LINEAR){let n=e.createTexture();return n?(e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,t),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,null),n):null}function gd(e,t){let n=sa(e,hd);return n?{program:n,quad:t,position:e.getAttribLocation(n,"a_pos"),source:e.getUniformLocation(n,"u_source"),resolution:e.getUniformLocation(n,"u_resolution"),direction:e.getUniformLocation(n,"u_direction"),radius:e.getUniformLocation(n,"u_radius")}:null}function ea(e){let t=er(e),n=e.createFramebuffer();if(!t||!n)return t&&e.deleteTexture(t),n&&e.deleteFramebuffer(n),null;e.bindFramebuffer(e.FRAMEBUFFER,n),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER);return e.bindFramebuffer(e.FRAMEBUFFER,null),i!==e.FRAMEBUFFER_COMPLETE?(e.deleteTexture(t),e.deleteFramebuffer(n),null):{texture:t,framebuffer:n,width:1,height:1}}function ta(e,t,n,i){t.width===n&&t.height===i||(t.width=n,t.height=i,e.bindTexture(e.TEXTURE_2D,t.texture),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n,i,0,e.RGBA,e.UNSIGNED_BYTE,null))}function aa(e){let t=e.getContext("webgl",{alpha:!0,premultipliedAlpha:!1,preserveDrawingBuffer:!0});if(!t)return null;let n=sa(t),i=er(t),r=er(t,t.NEAREST);if(!n||!i||!r)return n&&t.deleteProgram(n),i&&t.deleteTexture(i),r&&t.deleteTexture(r),null;let o=t.createBuffer();return o?(t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),t.STATIC_DRAW),{gl:t,program:{program:n,texture:i,lutTexture:r,quad:o,position:t.getAttribLocation(n,"a_pos"),source:t.getUniformLocation(n,"u_source"),blurSource:t.getUniformLocation(n,"u_blurSource"),lut:t.getUniformLocation(n,"u_lut"),resolution:t.getUniformLocation(n,"u_resolution"),uvScale:t.getUniformLocation(n,"u_uvScale"),uvOffset:t.getUniformLocation(n,"u_uvOffset"),blurReady:t.getUniformLocation(n,"u_blurReady"),lutEnabled:t.getUniformLocation(n,"u_lutEnabled"),lutSize:t.getUniformLocation(n,"u_lutSize"),lutTextureSize:t.getUniformLocation(n,"u_lutTextureSize"),lutDomainMin:t.getUniformLocation(n,"u_lutDomainMin"),lutDomainMax:t.getUniformLocation(n,"u_lutDomainMax"),lutIntensity:t.getUniformLocation(n,"u_lutIntensity"),exposure:t.getUniformLocation(n,"u_exposure"),contrast:t.getUniformLocation(n,"u_contrast"),highlights:t.getUniformLocation(n,"u_highlights"),shadows:t.getUniformLocation(n,"u_shadows"),whites:t.getUniformLocation(n,"u_whites"),blacks:t.getUniformLocation(n,"u_blacks"),temperature:t.getUniformLocation(n,"u_temperature"),tint:t.getUniformLocation(n,"u_tint"),vibrance:t.getUniformLocation(n,"u_vibrance"),saturation:t.getUniformLocation(n,"u_saturation"),vignette:t.getUniformLocation(n,"u_vignette"),vignetteMidpoint:t.getUniformLocation(n,"u_vignetteMidpoint"),vignetteRoundness:t.getUniformLocation(n,"u_vignetteRoundness"),vignetteFeather:t.getUniformLocation(n,"u_vignetteFeather"),grain:t.getUniformLocation(n,"u_grain"),grainSize:t.getUniformLocation(n,"u_grainSize"),grainRoughness:t.getUniformLocation(n,"u_grainRoughness"),grainSeed:t.getUniformLocation(n,"u_grainSeed"),blur:t.getUniformLocation(n,"u_blur"),pixelate:t.getUniformLocation(n,"u_pixelate"),intensity:t.getUniformLocation(n,"u_intensity"),compareEnabled:t.getUniformLocation(n,"u_compareEnabled"),comparePosition:t.getUniformLocation(n,"u_comparePosition"),compareSoftness:t.getUniformLocation(n,"u_compareSoftness"),compareLineWidth:t.getUniformLocation(n,"u_compareLineWidth")}}):(t.deleteProgram(n),t.deleteTexture(i),t.deleteTexture(r),null)}function xd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function bd(e){if(!xd(e))return{...en};let t=(n,i,r,o)=>{let s=typeof n=="number"?n:Number(n);return Math.min(o,Math.max(r,Number.isFinite(s)?s:i))};return{enabled:e.enabled===!0,position:t(e.position,en.position,0,1),softness:t(e.softness,en.softness,0,.25),lineWidth:t(e.lineWidth,en.lineWidth,0,12)}}function la(e){try{let t=new URL(e,document.baseURI);return t.protocol==="data:"?{href:t.href}:t.protocol!=="http:"&&t.protocol!=="https:"?{error:"LUT must be project-local or a data URL"}:t.origin!==window.location.origin?{error:"Remote LUT URLs are not supported"}:{href:t.href}}catch{return{error:"Invalid LUT URL"}}}function nr(e){return e instanceof Error?e.message:"LUT failed to load"}function yd(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0)%1e4}function Sd(e){let t=e.id||e.currentSrc||e.getAttribute("src")||`${e.tagName}:${Array.prototype.indexOf.call(e.parentNode?.children??[],e)}`;return yd(t)}function Ed(e){let t=la(e);if("error"in t)return{state:"error",message:t.error};let n=qe.get(t.href);if(n)return n;let i=fetch(t.href,{credentials:"same-origin"}).then(o=>{if(!o.ok)throw new Error(`Failed to load LUT (${o.status})`);return o.text()}).then(o=>Ys(o,{maxSize:Yi})),r={state:"pending",promise:i};for(;qe.size>=dd;){let o=qe.keys().next().value;if(!o)break;qe.delete(o)}return qe.set(t.href,r),i.then(o=>{qe.get(t.href)===r&&qe.set(t.href,{state:"ready",lut:o})},o=>{qe.get(t.href)===r&&qe.set(t.href,{state:"error",message:nr(o)})}),r}function na(e,t,n){if(e.lut?.src===t)return e.lut;let i=Qs(n),{gl:r,program:o}=e;try{return r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,o.lutTexture),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!1),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,i.width,i.height,0,r.RGBA,r.UNSIGNED_BYTE,i.data),e.lut={src:t,size:n.size,domainMin:n.domainMin,domainMax:n.domainMax,textureWidth:i.width,textureHeight:i.height},e.lutError=null,e.lutLoadingSrc=null,e.lut}catch(s){return e.lut=null,e.lutError=nr(s),e.lutLoadingSrc=null,L("runtime.colorGrading.uploadLut",s),null}}function Rn(e,t){e.deleteTexture(t.texture),e.deleteFramebuffer(t.framebuffer)}function ua(e){let t=e.effectTargets;t&&(e.gl.deleteProgram(t.blurProgram.program),Rn(e.gl,t.scratch),Rn(e.gl,t.blur),e.effectTargets=null)}function ca(e){ua(e),e.gl.deleteTexture(e.program.texture),e.gl.deleteTexture(e.program.lutTexture),e.gl.deleteBuffer(e.program.quad),e.gl.deleteProgram(e.program.program)}function Ad(e){let t=aa(e.canvas);return t?(ca(e),e.gl=t.gl,e.program=t.program,e.lut=null,e.lutLoadingSrc=null,e.lutError=null,e.effectError=null,!0):!1}function tr(e){if(!e.sourceHidden)return;e.element.removeAttribute(oa);let t=e.element.style.getPropertyValue("opacity"),n=e.element.style.getPropertyPriority("opacity");t==="0"&&n==="important"&&(e.sourceInlineOpacity===null?e.element.style.removeProperty("opacity"):e.element.style.setProperty("opacity",e.sourceInlineOpacity,e.sourceInlineOpacityPriority)),e.sourceHidden=!1}function wd(e){if(e.effectTargets)return e.effectTargets;let{gl:t}=e,n=gd(t,e.program.quad),i=ea(t),r=ea(t);return!n||!i||!r?(n&&t.deleteProgram(n.program),i&&Rn(t,i),r&&Rn(t,r),e.effectError="Framebuffer effects unavailable",null):(e.effectError=null,e.effectTargets={blurProgram:n,scratch:i,blur:r},e.effectTargets)}function Fd(e,t,n,i,r){let o=Math.max(1,Math.ceil(i)),s=Math.max(1,Math.ceil(r));return ta(e,t,o,s),ta(e,n,o,s),{width:o,height:s}}function ia(e,t,n,i,r,o,s){e.bindFramebuffer(e.FRAMEBUFFER,i.framebuffer),e.viewport(0,0,r.width,r.height),e.useProgram(t.program),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,n),e.uniform1i(t.source,0),e.uniform2f(t.resolution,r.width,r.height),e.uniform2f(t.direction,o.x,o.y),e.uniform1f(t.radius,s),e.bindBuffer(e.ARRAY_BUFFER,t.quad),e.enableVertexAttribArray(t.position),e.vertexAttribPointer(t.position,2,e.FLOAT,!1,0,0),e.drawArrays(e.TRIANGLE_STRIP,0,4)}function Cd(e,t,n,i,r,o,s){let u=n;for(let a=0;a<Math.max(1,Math.floor(s));a++)ia(e,t.blurProgram,u,t.scratch,r,{x:1,y:0},o),ia(e,t.blurProgram,t.scratch.texture,i,r,{x:0,y:1},o),u=i.texture}function _d(e){let t=e.grading.lut?.src.trim()??"",n=e.grading.lut?.intensity??1;if(!t||n<=0)return e.lut=null,e.lutLoadingSrc=null,e.lutError=null,null;let i=la(t);if("error"in i)return e.lut=null,e.lutLoadingSrc=null,e.lutError=i.error,null;if(e.lut?.src===i.href)return e.lut;e.lut=null;let r=Ed(t);return r.state==="ready"?na(e,i.href,r.lut):r.state==="error"?(e.lutError=r.message,e.lutLoadingSrc=null,null):(e.lutLoadingSrc!==i.href&&(e.lutLoadingSrc=i.href,e.lutError=null,r.promise.then(o=>{e.destroyed||e.grading.lut?.src.trim()!==t||(na(e,i.href,o),We(e))},o=>{e.destroyed||e.grading.lut?.src.trim()!==t||(e.lut=null,e.lutError=nr(o),e.lutLoadingSrc=null,We(e))})),null)}function Zi(e){if(!e)return null;if(typeof e=="string"){let t=e.trim();if(!t)return null;let n=document.getElementById(t.replace(/^#/,""));if(n&&ct(n))return n;try{let i=document.querySelector(t);return i&&ct(i)?i:null}catch{return null}}if(e.hfId){let t=document.querySelector(`[data-hf-id="${CSS.escape(e.hfId)}"]`);if(t&&ct(t))return t}if(e.id){let t=document.getElementById(e.id);if(t&&ct(t))return t}if(!e.selector)return null;try{let t=Array.from(document.querySelectorAll(e.selector)),n=Math.max(0,Math.floor(Number(e.selectorIndex??0)||0)),i=t[n]??null;return i&&ct(i)?i:null}catch{return null}}function Md(e){return e instanceof HTMLVideoElement?e.videoWidth>0&&e.videoHeight>0?{width:e.videoWidth,height:e.videoHeight}:null:e instanceof HTMLImageElement&&e.naturalWidth>0&&e.naturalHeight>0?{width:e.naturalWidth,height:e.naturalHeight}:null}function da(e){return e instanceof HTMLVideoElement?e.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA&&e.videoWidth>0&&e.videoHeight>0:e instanceof HTMLImageElement?e.complete&&e.naturalWidth>0&&e.naturalHeight>0:!1}function vd(e){if(!e.id)return null;let t=document.getElementById(`__render_frame_${e.id}__`);return t instanceof HTMLImageElement&&da(t)?t:null}function Td(e){return e instanceof HTMLImageElement&&e.classList.contains("__render_frame__")}function Nd(e,t){t.parentNode&&t.nextSibling!==e.canvas&&t.parentNode.insertBefore(e.canvas,t.nextSibling)}function Ld(e){if(e instanceof HTMLVideoElement){let t=vd(e);if(t)return t}return da(e)?e:null}function ra(e,t){let n=e.toLowerCase();if(n==="center")return .5;if(t==="x"){if(n==="left")return 0;if(n==="right")return 1}else{if(n==="top")return 0;if(n==="bottom")return 1}if(n.endsWith("%")){let i=Number.parseFloat(n);return Number.isFinite(i)?i/100:null}return null}function Rd(e){let t=e.trim().split(/\\s+/).filter(Boolean),n=.5,i=.5;for(let r=0;r<t.length;r++){let o=t[r]??"",s=ra(o,"x"),u=ra(o,"y");if(s!==null&&(o==="left"||o==="right"||o.endsWith("%")&&r===0)){n=s;continue}if(u!==null&&(o==="top"||o==="bottom"||o.endsWith("%")&&r>0)){i=u;continue}}return{x:n,y:i}}function kd(e,t,n,i,r,o){if(e<=0||t<=0||n<=0||i<=0)return{scaleX:1,scaleY:1,offsetX:0,offsetY:0};let s=r||"fill",u=e,a=t;if(s==="contain"||s==="cover"||s==="scale-down"){let f=s==="cover"?Math.max(e/n,t/i):Math.min(e/n,t/i);u=n*f,a=i*f,s==="scale-down"&&u>n&&a>i&&(u=n,a=i)}else s==="none"&&(u=n,a=i);let l=Rd(o||"center"),c=(e-u)*l.x/e,p=(t-a)*l.y/t;return{scaleX:u/e,scaleY:a/t,offsetX:c,offsetY:p}}function Dd(e,t){window.getComputedStyle(t).position==="static"&&(e.touchedParent||(e.touchedParent=t,e.parentInlinePosition=t.style.position||null),t.style.position="relative")}function Id(e,t){let{element:n,canvas:i}=e,r=n.parentElement;r&&Dd(e,r);let o=window.getComputedStyle(t);qr(i.style,o),i.style.pointerEvents="none",i.style.position="absolute",i.style.inset="auto",i.style.left=`${n.offsetLeft}px`,i.style.top=`${n.offsetTop}px`,i.style.right="auto",i.style.bottom="auto",i.style.width=`${n.offsetWidth}px`,i.style.height=`${n.offsetHeight}px`,i.style.display="block",i.style.opacity=e.sourceOpacityForCanvas,i.style.visibility=e.sourceVisibleForCanvas?"visible":"hidden";let s=n.getBoundingClientRect(),u=Math.max(0,Math.round(n.offsetWidth||s.width)),a=Math.max(0,Math.round(n.offsetHeight||s.height));return u<=0||a<=0?(i.style.display="none",null):(i.width!==u&&(i.width=u),i.height!==a&&(i.height=a),{width:u,height:a})}function Pd(e,t,n,i,r,o,s,u,a){e.uniform1i(t.source,0),e.uniform1i(t.blurSource,1),e.uniform1i(t.lut,2),e.uniform2f(t.resolution,s.width,s.height),e.uniform2f(t.uvScale,u.scaleX,u.scaleY),e.uniform2f(t.uvOffset,u.offsetX,u.offsetY),e.uniform1f(t.blurReady,r?1:0),e.uniform1f(t.lutEnabled,i?1:0),e.uniform1f(t.lutSize,i?.size??2),e.uniform2f(t.lutTextureSize,i?.textureWidth??1,i?.textureHeight??1),e.uniform3f(t.lutDomainMin,i?.domainMin[0]??0,i?.domainMin[1]??0,i?.domainMin[2]??0),e.uniform3f(t.lutDomainMax,i?.domainMax[0]??1,i?.domainMax[1]??1,i?.domainMax[2]??1),e.uniform1f(t.lutIntensity,n.lut?.intensity??0),e.uniform1f(t.exposure,n.adjust.exposure),e.uniform1f(t.contrast,n.adjust.contrast),e.uniform1f(t.highlights,n.adjust.highlights),e.uniform1f(t.shadows,n.adjust.shadows),e.uniform1f(t.whites,n.adjust.whites),e.uniform1f(t.blacks,n.adjust.blacks),e.uniform1f(t.temperature,n.adjust.temperature),e.uniform1f(t.tint,n.adjust.tint),e.uniform1f(t.vibrance,n.adjust.vibrance),e.uniform1f(t.saturation,n.adjust.saturation),e.uniform1f(t.vignette,n.details.vignette),e.uniform1f(t.vignetteMidpoint,n.details.vignetteMidpoint),e.uniform1f(t.vignetteRoundness,n.details.vignetteRoundness),e.uniform1f(t.vignetteFeather,n.details.vignetteFeather),e.uniform1f(t.grain,n.details.grain),e.uniform1f(t.grainSize,n.details.grainSize),e.uniform1f(t.grainRoughness,n.details.grainRoughness),e.uniform1f(t.grainSeed,a),e.uniform1f(t.blur,n.effects.blur),e.uniform1f(t.pixelate,n.effects.pixelate),e.uniform1f(t.intensity,n.intensity),e.uniform1f(t.compareEnabled,o.enabled?1:0),e.uniform1f(t.comparePosition,o.position),e.uniform1f(t.compareSoftness,o.softness),e.uniform1f(t.compareLineWidth,o.lineWidth)}function Od(e){e.sourceHidden||(e.sourceInlineOpacity=e.element.style.getPropertyValue("opacity")||null,e.sourceInlineOpacityPriority=e.element.style.getPropertyPriority("opacity")),e.element.setAttribute(oa,"true"),e.element.style.setProperty("opacity","0","important"),e.sourceHidden=!0}function We(e){if(e.destroyed||e.contextLost)return!1;let t=Ld(e.element);if(!t)return e.hasDrawn||(e.canvas.style.display="none"),!1;let n=Md(t);if(!n)return!1;let i=t instanceof HTMLElement?t:e.element,r=e.element.style.getPropertyValue("opacity"),o=e.element.style.getPropertyPriority("opacity"),s=e.sourceHidden&&r==="0"&&o==="important",u=e.element.style.getPropertyValue("visibility"),a=Td(t);if(a&&Nd(e,t),a||!s){let E=window.getComputedStyle(a?t:e.element);e.sourceOpacityForCanvas=E.opacity||"1",e.sourceVisibleForCanvas=(a||u!=="hidden")&&E.visibility!=="hidden"}let l=Id(e,i);if(!l)return!1;let c=window.getComputedStyle(i),p=kd(l.width,l.height,n.width,n.height,c.objectFit,c.objectPosition),{gl:f,program:x}=e;try{let E=_d(e);f.activeTexture(f.TEXTURE0),f.bindTexture(f.TEXTURE_2D,x.texture),f.pixelStorei(f.UNPACK_FLIP_Y_WEBGL,!0),f.texImage2D(f.TEXTURE_2D,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,t);let b=!1,g=Math.min(1,Math.max(0,e.grading.effects.blur));if(g>0){let _=wd(e);if(_){let N=Fd(f,_.scratch,_.blur,l.width,l.height);Cd(f,_,x.texture,_.blur,N,.75+Math.pow(g,1.35)*32,g>.55?3:2),b=!0}}else e.effectError=null,e.effectTargets&&ua(e);f.bindFramebuffer(f.FRAMEBUFFER,null),f.viewport(0,0,l.width,l.height),f.useProgram(x.program),f.activeTexture(f.TEXTURE0),f.bindTexture(f.TEXTURE_2D,x.texture),f.activeTexture(f.TEXTURE1),f.bindTexture(f.TEXTURE_2D,e.effectTargets?.blur.texture??x.texture),f.activeTexture(f.TEXTURE2),f.bindTexture(f.TEXTURE_2D,x.lutTexture);let A=e.grainSeed+(e.element instanceof HTMLVideoElement?Math.floor(e.element.currentTime*60):0);return Pd(f,x,e.grading,E,b,e.compare,l,p,A),f.bindBuffer(f.ARRAY_BUFFER,x.quad),f.enableVertexAttribArray(x.position),f.vertexAttribPointer(x.position,2,f.FLOAT,!1,0,0),f.drawArrays(f.TRIANGLE_STRIP,0,4),Od(e),e.hasDrawn=!0,e.drawError=null,!0}catch(E){return e.drawError=E instanceof Error?E.message:"Shader draw failed",L("runtime.colorGrading.drawEntry",E),!1}}function Ge(e,t,n,i){t.addEventListener(n,i),e.cleanup.push(()=>t.removeEventListener(n,i))}function Bd(e){e.animationFrame!==null&&(window.cancelAnimationFrame(e.animationFrame),e.animationFrame=null),e.videoFrameHandle!==null&&e.element instanceof HTMLVideoElement&&(e.element.cancelVideoFrameCallback?.(e.videoFrameHandle),e.videoFrameHandle=null)}function tn(e){if(e.destroyed||!(e.element instanceof HTMLVideoElement)||e.videoFrameHandle!==null||e.animationFrame!==null)return;let t=e.element,n=t;if(typeof n.requestVideoFrameCallback=="function"){e.videoFrameHandle=n.requestVideoFrameCallback(()=>{e.videoFrameHandle=null,We(e),!e.destroyed&&!t.paused&&!t.ended&&tn(e)});return}e.animationFrame=window.requestAnimationFrame(()=>{e.animationFrame=null,We(e),!e.destroyed&&!t.paused&&!t.ended&&tn(e)})}function Hd(e){let t=()=>{We(e)};Ge(e,e.element,"load",t),Ge(e,e.element,"loadedmetadata",t),Ge(e,e.element,"loadeddata",t),Ge(e,e.element,"seeked",t),Ge(e,e.element,"timeupdate",t),Ge(e,window,"resize",t),e.element instanceof HTMLVideoElement&&(Ge(e,e.element,"play",()=>tn(e)),Ge(e,e.element,"pause",t)),Ge(e,e.canvas,"webglcontextlost",n=>{n.preventDefault(),e.contextLost=!0,e.drawError="WebGL context lost",e.canvas.style.display="none",tr(e)}),Ge(e,e.canvas,"webglcontextrestored",()=>{if(e.contextLost=!1,!Ad(e)){e.contextLost=!0,e.drawError="WebGL context restore failed",tr(e);return}e.drawError=null,We(e)}),typeof ResizeObserver<"u"&&(e.resizeObserver=new ResizeObserver(t),e.resizeObserver.observe(e.element))}function Gd(e){if(!e.destroyed){e.destroyed=!0,Bd(e),e.resizeObserver?.disconnect();for(let t of e.cleanup)t();e.cleanup.length=0,e.canvas.remove(),ca(e),tr(e),e.touchedParent&&(e.parentInlinePosition===null?e.touchedParent.style.removeProperty("position"):e.touchedParent.style.position=e.parentInlinePosition)}}function Wd(e){let t=document.createElement("canvas");return e.id&&(t.id=`${zs}${e.id}`),t.className=cd,t.setAttribute(ud,"true"),t.setAttribute("data-hyperframes-ignore",""),t.setAttribute("data-hyperframes-picker-ignore",""),t.setAttribute("data-hf-ignore",""),t.setAttribute("aria-hidden","true"),t.style.pointerEvents="none",t.style.display="none",e.parentNode?.insertBefore(t,e.nextSibling),t}function fa(){let e=new WeakMap,t=new Set,n=null,i=!1,r=(b,g,A)=>{let _=e.get(b);if(_)return _.grading=g,_.source=A,We(_),b instanceof HTMLVideoElement&&!b.paused&&tn(_),!0;let N=Wd(b),$=aa(N);if(!$)return N.remove(),!1;let B={element:b,canvas:N,gl:$.gl,program:$.program,grading:g,compare:{...en},lut:null,lutLoadingSrc:null,lutError:null,drawError:null,effectTargets:null,effectError:null,source:A,animationFrame:null,videoFrameHandle:null,resizeObserver:null,cleanup:[],touchedParent:null,parentInlinePosition:null,sourceHidden:!1,sourceInlineOpacity:null,sourceInlineOpacityPriority:"",sourceOpacityForCanvas:window.getComputedStyle(b).opacity||"1",sourceVisibleForCanvas:window.getComputedStyle(b).visibility!=="hidden",hasDrawn:!1,contextLost:!1,grainSeed:Sd(b),destroyed:!1};return e.set(b,B),t.add(b),Hd(B),We(B),b instanceof HTMLVideoElement&&!b.paused&&tn(B),!0},o=(b,g)=>{if(i)return!1;let A=Zi(b);if(!A)return!1;let _=e.get(A);if(!_){let N=Qi(A);if(!Zt(N)||!r(A,N,"attribute"))return!1;_=e.get(A)}return _?(_.compare=bd(g),We(_),!0):!1},s=b=>{let g=e.get(b);g&&(Gd(g),e.delete(b),t.delete(b))},u=()=>{if(i)return 0;let b=new Set;document.querySelectorAll(`video[${Qt}], img[${Qt}]`).forEach(A=>{if(!ct(A))return;b.add(A);let _=Qi(A);Zt(_)?r(A,_,"attribute"):s(A)});for(let A of Array.from(t)){let _=e.get(A);_&&(!A.isConnected||_.source==="attribute"&&!b.has(A))&&s(A)}return t.size},a=()=>{if(i)return 0;let b=0;for(let g of Array.from(t,A=>e.get(A)))g&&We(g)&&(b+=1);return b},l=(b,g)=>{if(i)return!1;let A=Zi(b);if(!A)return!1;let _=Ji(g);return Zt(_)?r(A,_,"live"):(s(A),!0)},c=(b,g)=>{if(!ct(b))return!1;let A=e.get(b);return A?(A.sourceVisibleForCanvas=g,!0):!1},p=b=>{let g=Zi(b);if(!g)return{state:"missing",message:"Media not found"};let A=e.get(g);if(A)return A.effectError?{state:"unavailable",message:A.effectError}:A.drawError?{state:"unavailable",message:A.drawError}:A.lutError?{state:"unavailable",message:`LUT error: ${A.lutError}`}:A.grading.lut&&A.lutLoadingSrc?{state:"pending",message:"Loading LUT"}:A.canvas.style.display==="none"?{state:"pending",message:"Waiting for media frame"}:{state:"active",message:A.lut?"Shader + LUT active":"Shader active"};let _=Qi(g);return Zt(_)?{state:"unavailable",message:"WebGL unavailable"}:{state:"inactive",message:"No grading applied"}},f=()=>{if(!i){i=!0,n?.disconnect(),n=null;for(let b of Array.from(t))s(b)}};document.body&&(n=new MutationObserver(()=>u()),n.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[Qt]}));let x={refresh:u,redraw:a,setGrading:l,setCompare:o,setSourceVisibility:c,getStatus:p,destroy:f},E=window;return E.__hf=E.__hf||{},E.__hf.colorGrading=x,u(),x}var kn=class{constructor(t){xe(this,"_baseTime",0);xe(this,"_playStartMs",null);xe(this,"_rate",1);xe(this,"_duration",1/0);xe(this,"_nowMs");xe(this,"_audioSource",null);this._baseTime=t?.initialTime??0,this._rate=t?.rate??1,this._duration=t?.duration??1/0,this._nowMs=t?.nowMs??(()=>performance.now())}now(){if(this._playStartMs===null)return this._baseTime;if(this._audioSource){let i=null;if("currentTimeSeconds"in this._audioSource)i=this._audioSource.currentTimeSeconds;else{let{el:r,compositionStart:o,mediaStart:s}=this._audioSource;!r.paused&&Number.isFinite(r.currentTime)&&(i=(r.currentTime-s)/(r.playbackRate>0?r.playbackRate:1)*this._rate+o)}if(i!==null)return Number.isFinite(this._duration)&&i>=this._duration?this._duration:Math.max(0,i)}let t=(this._nowMs()-this._playStartMs)/1e3,n=this._baseTime+t*this._rate;return Number.isFinite(this._duration)&&n>=this._duration?this._duration:Math.max(0,n)}play(){return this._playStartMs!==null||Number.isFinite(this._duration)&&this._baseTime>=this._duration?!1:(this._playStartMs=this._nowMs(),!0)}pause(){return this._playStartMs===null?!1:(this._baseTime=this.now(),this._playStartMs=null,!0)}seek(t){let n=Number.isFinite(this._duration)?Math.max(0,Math.min(t,this._duration)):Math.max(0,t);this._baseTime=n,this._playStartMs!==null&&(this._playStartMs=this._nowMs())}isPlaying(){return this._playStartMs!==null}setRate(t){let n=Number.isFinite(t)&&t>0?Math.max(.1,Math.min(5,t)):1;this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._rate=n}getRate(){return this._rate}setDuration(t){this._duration=Number.isFinite(t)&&t>0?t:1/0,this._baseTime>this._duration&&(this._baseTime=this._duration)}getDuration(){return this._duration}attachAudioSource(t){this._audioSource=t}detachAudioSource(){this._audioSource&&this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._audioSource=null}hasAudioSource(){return this._audioSource!==null}getSource(){if(this._audioSource&&this._playStartMs!==null){if("currentTimeSeconds"in this._audioSource)return"audio";let{el:t}=this._audioSource;if(!t.paused&&Number.isFinite(t.currentTime))return"audio"}return"monotonic"}snapshot(){return{time:this.now(),playing:this.isPlaying(),rate:this._rate,duration:this._duration,source:this.getSource()}}reachedEnd(){return Number.isFinite(this._duration)&&this.now()>=this._duration}};function ma(e){return!Number.isFinite(e)||e<=0?1:e}function Ud(e,t){t||e.paused||!cn().__hfDebug||console.debug("[hyperframes] webAudioTransport claimed fallback-playing element:",e.currentSrc||e.getAttribute("src")||"")}function Vd(e,t){let{elapsed:n,mediaStart:i,scheduledAt:r,safeRate:o,clipDuration:s}=t,u=Number.isFinite(s)&&s>0,a=s*o;if(n>=0){let c=a-n;return u&&c<=0?!1:(u?e.start(0,n+i,c):e.start(0,n+i),!0)}let l=-n/o;return u?e.start(r+l,i,a):e.start(r+l,i),!0}var Dn=class{constructor(){xe(this,"_ctx",null);xe(this,"_bufferCache",new Map);xe(this,"_failedSrcs",new Set);xe(this,"_activeSources",[]);xe(this,"_masterGain",null);xe(this,"_rateAnchorCtx",0);xe(this,"_rateAnchorComp",0);xe(this,"_rate",1);xe(this,"_paused",!0);xe(this,"_playGeneration",0)}async init(){try{return this._ctx=new AudioContext,this._masterGain=this._ctx.createGain(),this._masterGain.connect(this._ctx.destination),!0}catch{return!1}}get context(){return this._ctx}getTime(){return!this._ctx||this._paused?-1:this._rateAnchorComp+(this._ctx.currentTime-this._rateAnchorCtx)*this._rate}async decodeAudioElement(t){let n=t.currentSrc||t.getAttribute("src");if(!n)return null;if(this._bufferCache.has(n))return this._bufferCache.get(n);if(this._failedSrcs.has(n)||!this._ctx)return null;let i;try{let r=await fetch(n,{cache:"no-store"});if(!r.ok)return L("webAudioTransport.fetch",new Error(`${r.status} ${n}`)),null;i=await r.arrayBuffer()}catch(r){return L("webAudioTransport.fetch",r),null}try{let r=await this._ctx.decodeAudioData(i);return this._bufferCache.set(n,r),r}catch(r){return this._failedSrcs.add(n),L("webAudioTransport.decode",r),null}}startGeneration(){return this._playGeneration+=1,this._playGeneration}currentGeneration(){return this._playGeneration}async schedulePlayback(t,n,i,r,o,s,u,a=1,l=Number.POSITIVE_INFINITY){if(!this._ctx||!this._masterGain||u!==this._playGeneration)return null;try{if(this._ctx.state==="suspended"&&await this._ctx.resume(),u!==this._playGeneration)return null;let c=ma(a),p=this._ctx.createBufferSource();p.buffer=n,p.playbackRate.value=c;let f=this._ctx.createGain();f.gain.value=s,p.connect(f),f.connect(this._masterGain);let x=o-i,E=this._ctx.currentTime;if(this._rate=c,this._rateAnchorCtx=E,this._rateAnchorComp=o,!Vd(p,{elapsed:x,mediaStart:r,scheduledAt:E,safeRate:c,clipDuration:l}))return p.disconnect(),f.disconnect(),null;let b=t.muted;t.muted=!0,Ud(t,b);let g={el:t,sourceNode:p,gainNode:f,compositionStart:i,mediaStart:r,scheduledAt:E,priorMuted:b,bounded:Number.isFinite(l)&&l>0};return this._activeSources.push(g),this._paused=!1,p.addEventListener("ended",()=>{let A=this._activeSources.indexOf(g);A!==-1&&(this._activeSources.splice(A,1),t.muted=b,this._activeSources.length===0&&(this._paused=!0))}),g}catch(c){return L("webAudioTransport.schedule",c),null}}setRate(t){let n=ma(t);if(n===this._rate)return!1;this._ctx&&!this._paused&&(this._rateAnchorComp=this.getTime(),this._rateAnchorCtx=this._ctx.currentTime),this._rate=n;for(let i of this._activeSources)try{i.sourceNode.playbackRate.value=n}catch(r){L("webAudioTransport.setRate",r)}return!0}hasBoundedActiveSources(){return this._activeSources.some(t=>t.bounded)}stopAll(){for(let t of this._activeSources){try{t.sourceNode.stop(),t.sourceNode.disconnect(),t.gainNode.disconnect()}catch{}t.el.muted=t.priorMuted}this._activeSources=[],this._paused=!0}setVolume(t){this._masterGain&&(this._masterGain.gain.value=Math.max(0,Math.min(1,t)))}setElementVolume(t,n){let i=Math.max(0,Math.min(1,n));for(let r of this._activeSources)if(r.el===t)try{r.gainNode.gain.value=i}catch(o){L("webAudioTransport.setElementVolume",o)}}setMuted(t){this._masterGain&&(this._masterGain.gain.value=t?0:1)}isActive(){return this._activeSources.length>0&&!this._paused}ownsElement(t){return!this._paused&&this._activeSources.some(n=>n.el===t)}destroy(){if(this.stopAll(),this._bufferCache.clear(),this._failedSrcs.clear(),this._ctx)try{this._ctx.close()}catch{}this._ctx=null,this._masterGain=null}};var pa="data-hf-studio-manual-edit-gesture";var ir="data-hf-authored-duration",rr="data-hf-authored-end";function zd(){let e=window.__HF_EXPORT_RENDER_SEEK_CONFIG,t=e?.fps,n=e?.fpsSource,i=Number(t);return!e||t==null?{fps:null,source:"default",rawFpsSource:n,rawFps:t,fallbackReason:"missing"}:!Number.isFinite(i)||i<=0?{fps:null,source:"default",rawFpsSource:n,rawFps:t,fallbackReason:"invalid"}:{fps:i,source:n==="render-options"||n==="default"?n:"unknown",rawFpsSource:n,rawFps:t,fallbackReason:e.fpsFallbackReason}}function ha(){let e=Kr();ji(document);let t=zd();e.canonicalFps=t.fps??e.canonicalFps,window.__HF_EXPORT_RENDER_SEEK_CONFIG&&console.info("[hyperframes] render runtime fps",{canonicalFps:e.canonicalFps,source:t.source,rawFpsSource:t.rawFpsSource,rawFps:t.rawFps,fallbackReason:t.fallbackReason});let n=null,i=null,r=null,o=[],s=new Set,u=null;if(typeof window.__hfRuntimeTeardown=="function")try{window.__hfRuntimeTeardown()}catch(d){L("runtime.init.site1",d)}(()=>{let d=window.gsap,m=window;if(!(!d?.registerPlugin||m.__hfAutoNoopRegistered))try{d.registerPlugin({name:"_auto",init:()=>!1}),m.__hfAutoNoopRegistered=!0}catch{}})(),document.documentElement&&(document.documentElement.style.margin="0",document.documentElement.style.padding="0",document.documentElement.style.overflow="hidden"),document.body&&(document.body.style.margin="0",document.body.style.padding="0",document.body.style.overflow="hidden"),window.__timelines=window.__timelines||{};let l=()=>{let d=document.querySelector(\'[data-composition-id][data-root="true"]\');if(d instanceof HTMLElement)return d;let m=Array.from(document.querySelectorAll("[data-composition-id]"));return m.find(h=>!h.parentElement?.closest("[data-composition-id]"))??m[0]??null};if(Array.isArray(window.__timelines)){let d=window.__timelines,m=l()?.getAttribute("data-composition-id")??"root",h={};if(d.length===1)h[m]=d[0];else for(let y=0;y<d.length;y++)h[`tl-${y}`]=d[y];window.__timelines=h}let c=l();c&&!c.hasAttribute("data-start")&&c.setAttribute("data-start","0");let p=d=>{o.push(d)},f=(d,m,h)=>{let y=h??`${d}:${JSON.stringify(m)}`;s.has(y)||(s.add(y),Fe({source:"hf-preview",type:"diagnostic",code:d,details:m}))},x=d=>{let m={scale:1,focusX:960,focusY:540},h=[],y=[],w={time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying(),renderMode:!1,timelineDirty:!1};return{play:d.play,pause:d.pause,seek:d.seek,getTime:d.getTime,getDuration:d.getDuration,isPlaying:d.isPlaying,getMainTimeline:()=>null,getElementBounds:()=>{},getElementsAtPoint:()=>{},setElementPosition:()=>{},previewElementPosition:()=>{},setElementKeyframes:()=>{},setElementScale:()=>{},setElementFontSize:()=>{},setElementTextContent:()=>{},setElementTextColor:()=>{},setElementTextShadow:()=>{},setElementTextFontWeight:()=>{},setElementTextFontFamily:()=>{},setElementTextOutline:()=>{},setElementTextHighlight:()=>{},setElementVolume:()=>{},setStageZoom:()=>{},getStageZoom:()=>m,setStageZoomKeyframes:()=>{},getStageZoomKeyframes:()=>h,addElement:()=>!1,removeElement:()=>!1,updateElementTiming:()=>!1,setElementTiming:()=>{},updateElementSrc:()=>!1,updateElementLayer:()=>!1,updateElementBasePosition:()=>!1,markTimelineDirty:()=>{},isTimelineDirty:()=>!1,rebuildTimeline:()=>{},ensureTimeline:()=>{},enableRenderMode:()=>{},disableRenderMode:()=>{},renderSeek:d.renderSeek,getElementVisibility:()=>({visible:!1}),getVisibleElements:()=>y,getRenderState:()=>({...w,time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying()})}},E=1/60,b=.75,g=2,A=.05,_=100,N=240,$=d=>{if(d instanceof Error)return d.message||String(d);if(typeof d=="string")return d;try{return JSON.stringify(d)}catch{return String(d??"")}},B=d=>{let m=d.toLowerCase();return m.includes("cannot read properties of null")||m.includes("cannot set properties of null")?{code:"runtime_null_dom_access",category:"dom-null-access"}:m.includes("failed to execute \'queryselector\'")?{code:"runtime_invalid_selector",category:"selector-invalid"}:m.includes("is not defined")?{code:"runtime_reference_missing",category:"reference-missing"}:{code:"runtime_script_error",category:"script-error"}},v=d=>{if(d==null||d.trim()==="")return null;let m=Number.parseFloat(d);return!Number.isFinite(m)||m<=0?null:`${m}px`},S=()=>l(),C=()=>{let d=S();if(!d)return;let m=v(d.getAttribute("data-width")),h=v(d.getAttribute("data-height"));m&&(d.style.width=m),h&&(d.style.height=h),m&&d.style.setProperty("--comp-width",m),h&&d.style.setProperty("--comp-height",h)},M=()=>{let d=S(),m=Array.from(document.querySelectorAll("[data-composition-id]")).filter(h=>h.hasAttribute("data-duration")||h.hasAttribute("data-end"));for(let h of m){if(d&&h===d)continue;let y=h.getAttribute("data-duration"),w=h.getAttribute("data-end");y!=null&&!h.hasAttribute(ir)&&h.setAttribute(ir,y),w!=null&&!h.hasAttribute(rr)&&h.setAttribute(rr,w),h.removeAttribute("data-duration"),h.removeAttribute("data-end")}},T=()=>{let d=S();if(!d)return;d.style.position||(d.style.position="relative"),d.style.overflow="hidden";let m=v(d.getAttribute("data-width")),h=v(d.getAttribute("data-height"));m&&(d.style.width=m),h&&(d.style.height=h);let y=Array.from(d.children);for(let w of y){let F=w.tagName.toLowerCase();if(F==="script"||F==="style"||F==="link"||F==="meta"||!w.hasAttribute("data-start")||w.hasAttribute("data-hf-autostamped"))continue;let k=(w.style.top==="0px"||w.style.top==="0")&&(w.style.left==="0px"||w.style.left==="0")&&w.style.width==="100%"&&w.style.height==="100%",K=/translate\\(\\s*-50%\\s*,\\s*-50%\\s*\\)/.test(w.style.transform);if(k&&K&&!w.hasAttribute("data-width")&&!w.hasAttribute("data-height")){let be=w.style.top,rt=w.style.left,we=w.style.width,_t=w.style.height;w.style.top="",w.style.left="",w.style.width="",w.style.height="";let ne=window.getComputedStyle(w);ne.top!=="auto"||ne.bottom!=="auto"||ne.left!=="auto"||ne.right!=="auto"||ne.width!=="0px"||ne.height!=="0px"||(w.style.top=be,w.style.left=rt,w.style.width=we,w.style.height=_t)}let J=window.getComputedStyle(w),me=J.position;if(me!=="absolute"&&me!=="fixed"&&(w.style.position="absolute"),!!w.style.top||!!w.style.bottom||J.top!=="auto"||J.bottom!=="auto"||(w.style.top="0"),!!w.style.left||!!w.style.right||J.left!=="auto"||J.right!=="auto"||(w.style.left="0"),F!=="audio"){let be=v(w.getAttribute("data-width")),rt=v(w.getAttribute("data-height")),we=J.width!=="0px"&&J.width!=="auto",_t=J.height!=="0px"&&J.height!=="auto";be?!w.style.width&&!we&&(w.style.width=be):!w.style.width&&J.width==="0px"&&(w.style.width="100%"),rt?!w.style.height&&!_t&&(w.style.height=rt):!w.style.height&&J.height==="0px"&&(w.style.height="100%")}}},R=(d,m=0,h)=>$e({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:h?.includeAuthoredTimingAttrs??!0}).resolveStartForElement(d,m),W=(d,m)=>$e({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:m?.includeAuthoredTimingAttrs??!0}).resolveDurationForElement(d),q=(d,m=0)=>!d.hasAttribute("data-hf-auto-start")&&d.hasAttribute("data-start")?Math.max(0,Number(d.getAttribute("data-start")??0)||0)+m:R(d,m),ie=(d,m)=>{let h=d.tagName.toLowerCase();if(h==="script"||h==="style"||h==="link"||h==="meta")return!1;let y=h==="video"||h==="audio"?q(d,0):R(d,0),w=W(d),F=d.getAttribute("data-composition-id");if(F){let K=(window.__timelines??{})[F],J=null;if(K&&typeof K.duration=="function"){let ye=Number(K.duration());Number.isFinite(ye)&&ye>0&&(J=ye)}!(d.hasAttribute("data-duration")||d.hasAttribute("data-end")||d.hasAttribute(ir)||d.hasAttribute(rr))&&(w==null||w<=0)&&J!=null&&(w=J)}let k=w!=null&&w>0?y+w:Number.POSITIVE_INFINITY;return m>=y&&(Number.isFinite(k)?m<=k:!0)},P=!!document.querySelector("[data-composition-src]"),se=!1;{let d=document.querySelectorAll("[data-composition-id]:not([data-composition-src])");for(let m of d){let h=m.getAttribute("data-composition-id");if(h&&m.children.length===0&&document.querySelector(`template#${CSS.escape(h)}-template`)){se=!0;break}}}let Ee=!P&&!se,H=d=>{if(!d||typeof d.duration!="function")return null;try{let m=Number(d.duration());return Number.isFinite(m)?Math.max(0,m):null}catch{return null}},U=d=>typeof d=="number"&&Number.isFinite(d)&&d>E,V=d=>{let m=Number(d.getAttribute("data-duration"));if(Number.isFinite(m)&&m>0)return m;let h=Number(d.getAttribute("data-playback-start")??d.getAttribute("data-media-start")??"0"),y=Number.isFinite(h)?Math.max(0,h):0;return Number.isFinite(d.duration)&&d.duration>y?Math.max(0,d.duration-y):null},re=()=>{let d=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(d.length===0)return null;let m=0;for(let h of d){let y=q(h,0);if(!Number.isFinite(y))continue;let w=V(h);w==null||w<=E||(m=Math.max(m,Math.max(0,y)+w))}return m>E?m:null},_e=()=>{let d=S();if(!d)return null;let m=window.__timelines??{},h=$e({timelineRegistry:m,includeAuthoredTimingAttrs:!0}),y=0,w=Number.parseFloat(d.getAttribute("data-duration")??"");Number.isFinite(w)&&w>0&&(y=w);let F=Array.from(d.querySelectorAll("[data-composition-id][data-start]"));for(let k of F){if(!(k instanceof Element)||k.parentElement?.closest("[data-composition-id]")!==d)continue;let J=h.resolveStartForElement(k,0),me=h.resolveDurationForElement(k);!Number.isFinite(J)||me==null||me<=0||(y=Math.max(y,Math.max(0,J)+me))}return y>E?y:null},O=()=>{let d=re();return typeof d!="number"||!Number.isFinite(d)||d<=E?null:d},D=d=>U(d)?Math.max(E,d*b):E,G=()=>{let d=0;for(let m of e.deterministicAdapters){let h=m.getInferredDurationSeconds;if(typeof h!="function")continue;let y=null;try{y=h()}catch(w){L("runtime.init.adapterDuration",w)}typeof y=="number"&&Number.isFinite(y)&&y>0&&(d=Math.max(d,y))}return d>E?d:null},Q=(d,m=0)=>{let h=H(d),y=O(),w=_e(),F=G(),k=Math.max(y??0,w??0,F??0),K=Number.isFinite(m)&&m>E?m:0,J=0;return U(h)?J=Math.max(h,k,K):U(k)?J=Math.max(k,K):J=K,J>0?Math.max(0,J):0},ae=()=>{let d=window.__timelines??{},m=ne=>{let ee=Object.entries(d).filter(ge=>!!ge[1]&&typeof ge[1].play=="function"&&typeof ge[1].pause=="function");if(ee.length!==1)return{timeline:null};let[fe,pe]=ee[0];return{timeline:pe,selectedTimelineIds:[fe],selectedDurationSeconds:H(pe),diagnostics:{code:"root_timeline_sole_registered_fallback",details:{reason:ne,soleTimelineId:fe}}}},h=$e({timelineRegistry:d,includeAuthoredTimingAttrs:!0}),y=O(),w=_e(),F=Math.max(y??0,w??0)||null,k=D(F),K=ne=>{let ee=document.querySelector(`[data-composition-id="${CSS.escape(ne)}"]`);return ee?h.resolveStartForElement(ee,0):0},J=ne=>{let ee=window.gsap;if(!ee||typeof ee.timeline!="function")return null;let fe=ee.timeline({paused:!0});for(let pe of ne)fe.add(pe.timeline,K(pe.compositionId));return fe},me=(ne,ee)=>{if(!U(ne))return null;let fe=window.gsap;if(!fe||typeof fe.timeline!="function")return null;let pe=fe.timeline({paused:!0});if(ee)try{pe.add(ee,0)}catch(ue){L("runtime.init.site2",ue)}let ge=pe;if(typeof ge.to=="function")try{ge.to({},{duration:ne})}catch(ue){L("runtime.init.site3",ue)}return pe},ye=(ne,ee)=>{let fe=ne;if(typeof fe.getChildren!="function")return[];try{let pe=fe.getChildren(!0,!0,!0)??[];if(!Array.isArray(pe))return[];let ge=[];for(let ue of ee)if(!pe.some(Re=>Re===ue.timeline))try{let Re=K(ue.compositionId);ne.add(ue.timeline,Re),ge.push(ue.compositionId)}catch(Re){L("runtime.init.site4",Re)}return ge}catch{return[]}},oe=S(),Z=oe?.getAttribute("data-composition-id")??null;if(!Z)return m("root_missing_composition_id");let be=d[Z]??null,we=(()=>{if(!oe)return[];let ne=new Set,ee=Array.from(oe.querySelectorAll("[data-composition-id]")),fe=[];for(let pe of ee){let ge=pe.getAttribute("data-composition-id");if(!ge||ge===Z||ne.has(ge))continue;ne.add(ge);let ue=d[ge]??null;if(!ue||typeof ue.play!="function"||typeof ue.pause!="function")continue;let ve=H(ue);fe.push({compositionId:ge,timeline:ue,durationSeconds:ve??0})}return fe})(),_t=ne=>{for(let ee of ne){let fe=ee.timeline;if(typeof fe.paused=="function")try{fe.paused(!1)}catch(pe){L("runtime.init.site5",pe)}}};if(we.length>0&&_t(we),be){let ne=we.length>0?ye(be,we):[];if((we.length>0||!document.querySelector("[data-composition-id]:not([data-composition-id=\'"+Z+"\'])"))&&(j=!0),ne.length>0)try{let ue=be.time();be.seek(ue,!1)}catch{}let ee=H(be);if(!U(ee)&&we.length>0){let ue=we.map(Za=>Za.compositionId),ve=J(we),Re=H(ve);if(ve&&U(Re))return{timeline:ve,selectedTimelineIds:ue,selectedDurationSeconds:Re,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_unusable_fallback",details:{rootCompositionId:Z,rootDurationSeconds:ee,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:k,selectedDurationSeconds:Re,mediaDurationFloorSeconds:y,authoredCompositionDurationFloorSeconds:w,selectedTimelineIds:ue,autoNestedChildren:ne}}};let Jn=me(F??0,be),Xn=H(Jn);if(Jn&&U(Xn))return{timeline:Jn,selectedTimelineIds:[Z],selectedDurationSeconds:Xn,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:Z,rootDurationSeconds:ee,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:y,authoredCompositionDurationFloorSeconds:w,selectedDurationSeconds:Xn,selectedTimelineIds:[Z],autoNestedChildren:ne}}}}if(!U(ee)&&we.length===0){let ue=me(F??0,be),ve=H(ue);if(ue&&U(ve))return{timeline:ue,selectedTimelineIds:[Z],selectedDurationSeconds:ve,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:Z,rootDurationSeconds:ee,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:y,authoredCompositionDurationFloorSeconds:w,selectedDurationSeconds:ve,selectedTimelineIds:[Z]}}}}let fe=oe?.getAttribute("data-duration"),pe=fe?parseFloat(fe):null,ge=Math.max(U(pe)?pe:0,w??0);if(ge>0&&U(ge)&&U(ee)&&ge>=ee+.5){let ue=be;if(typeof ue.to=="function")try{ue.to({},{duration:0},ge)}catch(Re){L("runtime.init.site6",Re)}let ve=H(be);if(U(ve))return{timeline:be,selectedTimelineIds:[Z],selectedDurationSeconds:ve,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_padded_to_declared_duration",details:{rootCompositionId:Z,rootDurationSeconds:ee,rootDeclaredDur:pe,authoredCompositionDurationFloorSeconds:w,newDur:ve}}}}return{timeline:be,selectedTimelineIds:[Z],selectedDurationSeconds:ee,mediaDurationFloorSeconds:y,diagnostics:ne.length>0?{code:"root_timeline_auto_nested_children",details:{rootCompositionId:Z,selectedDurationSeconds:ee,autoNestedChildren:ne}}:void 0}}if(we.length>0){let ne=we.map(pe=>pe.compositionId),ee=J(we),fe=H(ee);if(ee)return{timeline:ee,selectedTimelineIds:ne,selectedDurationSeconds:fe,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_missing_fallback",details:{rootCompositionId:Z,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:k,selectedDurationSeconds:fe,mediaDurationFloorSeconds:y,selectedTimelineIds:ne}}}}return m("root_composition_id_unmatched_in_registry")},j=!1,z=()=>{if(!Ee)return!1;let d=e.capturedTimeline,m=H(d),h=U(m);if(d&&h&&j)return!1;let y=ae();if(!y.timeline)return!1;if(d&&d===y.timeline)return typeof d.timeScale=="function"&&d.timeScale(e.playbackRate),!1;e.capturedTimeline=y.timeline,typeof e.capturedTimeline.timeScale=="function"&&e.capturedTimeline.timeScale(e.playbackRate);let w=Q(e.capturedTimeline,0);if(w<=0&&typeof e.capturedTimeline.progress=="function"&&(e.capturedTimeline.progress(1,!0),e.capturedTimeline.progress(0,!1),e.capturedTimeline.pause()),w>0){try{I.setDuration(w)}catch{}if(typeof e.capturedTimeline.totalTime=="function"){typeof e.capturedTimeline.progress=="function"&&e.capturedTimeline.progress(1e-4,!0);let k=Math.max(0,e.currentTime||0);e.capturedTimeline.totalTime(k,!1),e.capturedTimeline.pause()}let F=window.__hfStudioManualEditsApply;typeof F=="function"&&F(),ji(document)}if(y.diagnostics&&Fe({source:"hf-preview",type:"diagnostic",code:y.diagnostics.code,details:y.diagnostics.details}),Fe({source:"hf-preview",type:"diagnostic",code:"timeline_bound",details:{selectedTimelineIds:y.selectedTimelineIds??[],selectedDurationSeconds:y.selectedDurationSeconds??null,mediaDurationFloorSeconds:y.mediaDurationFloorSeconds??null}}),window.parent!==window){let F=S(),k=w>0?w:0,K=String(k>0?k:1),J=new Set,me=new Set(document.querySelectorAll("[data-start]")),ye=oe=>{let Z=oe.parentElement;for(;Z&&Z!==F;){if(me.has(Z))return!0;Z=Z.parentElement}return!1};if(e.capturedTimeline.getChildren)try{for(let oe of e.capturedTimeline.getChildren(!0))if(typeof oe.targets=="function")for(let Z of oe.targets())Z instanceof HTMLElement&&Z!==F&&(Z.hasAttribute("data-start")||ye(Z)||J.has(Z)||(J.add(Z),Z.setAttribute("data-start","0"),Z.setAttribute("data-duration",K),Z.setAttribute("data-hf-autostamped","1")))}catch{}if(F instanceof HTMLElement)for(let oe of F.querySelectorAll("[id]"))oe instanceof HTMLElement&&oe!==F&&(oe.hasAttribute("data-start")||ye(oe)||J.has(oe)||oe.tagName==="SCRIPT"||oe.tagName==="STYLE"||oe.tagName==="LINK"||(J.add(oe),oe.setAttribute("data-start","0"),oe.setAttribute("data-duration",K),oe.setAttribute("data-hf-autostamped","1")))}for(let F of wt)on.delete(F),pr(F);return!0};window.__hfForceTimelineRebind=()=>{j=!1,z()};let Y=()=>{let d=S();if(!(d instanceof HTMLElement))return;let m=d.getBoundingClientRect(),h=Number(d.getAttribute("data-width")),y=Number(d.getAttribute("data-height")),w=window.getComputedStyle(d),F=Number.isFinite(h)&&h>0&&Number.isFinite(y)&&y>0,k=m.width<=0||m.height<=0||d.clientWidth<=0||d.clientHeight<=0;!F||!k||f("root_stage_layout_zero",{compositionId:d.getAttribute("data-composition-id")??null,declaredWidth:h,declaredHeight:y,rectWidth:Math.round(m.width),rectHeight:Math.round(m.height),clientWidth:d.clientWidth,clientHeight:d.clientHeight,display:w.display,visibility:w.visibility,overflow:w.overflow},`root-stage-layout-zero:${d.getAttribute("data-composition-id")??"unknown"}`)},Pe=()=>{e.tornDown||(u!=null&&window.cancelAnimationFrame(u),u=window.requestAnimationFrame(()=>{u=null,Y()}))},Me=()=>{i=d=>{let m=$(d.error??d.message).slice(0,N);if(!m)return;let h=B(m);Fe({source:"hf-preview",type:"diagnostic",code:h.code,details:{category:h.category,message:m,filename:d.filename||null,line:Number.isFinite(d.lineno)?d.lineno:null,column:Number.isFinite(d.colno)?d.colno:null}})},r=d=>{let m=$(d.reason).slice(0,N);if(!m)return;let h=B(m);Fe({source:"hf-preview",type:"diagnostic",code:`${h.code}_unhandled_rejection`,details:{category:`${h.category}-unhandled-rejection`,message:m}})},window.addEventListener("error",i),window.addEventListener("unhandledrejection",r)},At=()=>{let d=Array.from(document.querySelectorAll("img, video, audio, source, link[rel=\'stylesheet\']"));for(let h of d){let y=()=>{if(!(h instanceof Element))return;let w=h.tagName.toLowerCase(),F=h.getAttribute("src")??h.getAttribute("href")??h.getAttribute("poster")??null,k=w==="link"?"runtime_stylesheet_load_failed":"runtime_asset_load_failed";f(k,{tagName:w,assetUrl:F,currentSrc:(h instanceof HTMLImageElement||h instanceof HTMLMediaElement)&&h.currentSrc||null,readyState:h instanceof HTMLMediaElement?h.readyState:null,networkState:h instanceof HTMLMediaElement?h.networkState:null},`${k}:${w}:${F??"unknown"}`)};h.addEventListener("error",y),p(()=>{h.removeEventListener("error",y)})}let m=document.fonts;m&&m.ready.then(()=>{if(e.tornDown)return;let h=Array.from(m).filter(y=>y.status==="error").map(y=>y.family).filter(y=>!!y).slice(0,10);h.length!==0&&f("runtime_font_load_issue",{failedFamilies:h,totalFaces:Array.from(m).length},`runtime-font-load-issue:${h.join("|")}`)}).catch(()=>{})},Ue=(d,m)=>{if(!d.timeline)return!1;let h=e.capturedTimeline;if(h&&h===d.timeline)return!1;let y=Math.max(0,e.currentTime||0),w=e.isPlaying;e.capturedTimeline=d.timeline,typeof e.capturedTimeline.timeScale=="function"&&e.capturedTimeline.timeScale(e.playbackRate);try{e.capturedTimeline.pause(),e.capturedTimeline.seek(y,!1),w&&e.capturedTimeline.play()}catch(F){L("runtime.init.site7",F)}return Fe({source:"hf-preview",type:"diagnostic",code:"timeline_loop_guard_rebind",details:{reason:m,previousTime:y,selectedTimelineIds:d.selectedTimelineIds??[],selectedDurationSeconds:d.selectedDurationSeconds??null,mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),!0},tt=null,mr=!1,wt=new Set,on=new WeakMap,sn=()=>{e.tornDown||(tt!=null&&window.clearTimeout(tt),tt=window.setTimeout(()=>{if(e.tornDown)return;tt=null;let d=ae();if(!d.timeline||!U(d.mediaDurationFloorSeconds??null))return;if(!e.capturedTimeline){z()&&(dt(),Te(!0));return}if(mr)return;let h=H(e.capturedTimeline),y=d.selectedDurationSeconds??H(d.timeline);U(y)&&(!U(h)||y>=h+A)&&Ue(d,"manual")&&(mr=!0,Fe({source:"hf-preview",type:"diagnostic",code:"timeline_rebind_after_media_metadata",details:{previousDurationSeconds:h??null,selectedDurationSeconds:y??null,selectedTimelineIds:d.selectedTimelineIds??[],mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),dt(),Te(!0))},_))},Ua=()=>{for(let d of wt)d.removeEventListener("loadedmetadata",sn),d.removeEventListener("durationchange",sn);wt.clear()},Gn=()=>{if(e.tornDown)return;let d=Array.from(document.querySelectorAll("video, audio"));for(let m of d){if(wt.has(m))continue;wt.add(m);let h=Number.parseFloat(m.dataset.volume??"");Number.isFinite(h)&&(m.volume=Math.max(0,Math.min(1,h))),m.addEventListener("loadedmetadata",sn),m.addEventListener("durationchange",sn),m.preload!=="auto"&&(m.preload="auto"),m.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&m.load(),pr(m)}},pr=d=>{on.has(d)||Wr(d,e.capturedTimeline,Q(e.capturedTimeline,0),on)},Wn=new WeakMap,hr=d=>{let m=Wn.get(d);if(m!==void 0)return m;let h=window.getComputedStyle(d).position,y=h==="static"||h==="relative"||h==="sticky";return Wn.set(d,y),y},Un=new WeakMap,Va=d=>{let m=Un.get(d);if(m!==void 0)return m;let h=d.querySelector("[data-start]")===null;return Un.set(d,h),h},za=()=>{Wn=new WeakMap,Un=new WeakMap},Vn=new WeakMap,an=new WeakSet,Le=()=>{let d=F=>{let k=F.closest("[data-composition-id]"),K=k?R(k,0):null,J=k?W(k,{includeAuthoredTimingAttrs:!0}):null;return{compositionRoot:k,inheritedStart:K,inheritedDuration:J}},m=Ur({shouldIncludeElement:F=>F.hasAttribute("data-start")||!!d(F).compositionRoot,resolveStartSeconds:F=>{let k=d(F);return q(F,k.inheritedStart??0)},resolveDurationSeconds:F=>{let k=d(F),K=q(F,k.inheritedStart??0),J=Number.parseFloat(F.dataset.playbackStart??F.dataset.mediaStart??"0")||0,me=k.inheritedStart!=null&&k.inheritedDuration!=null&&k.inheritedDuration>0?Math.max(0,k.inheritedStart+k.inheritedDuration-K):null,ye=Number.isFinite(F.duration)&&F.duration>J?Math.max(0,F.duration-J):null,oe=Number.parseFloat(F.dataset.duration??""),Z=Number.isFinite(oe)&&oe>0?oe:null,be=[ye,me,Z].filter(rt=>rt!=null);return be.length>0?Math.min(...be):null}});for(let F of m.mediaClips){let k=on.get(F.el);k&&(F.volumeKeyframes=k)}let h=e.mediaForceSyncNextTick;h&&(e.mediaForceSyncNextTick=!1),e.nativeMediaSyncDisabled||Vr({clips:m.mediaClips,timeSeconds:e.currentTime,playing:e.isPlaying,playbackRate:e.playbackRate,outputMuted:e.mediaOutputMuted||!e.webAudioMediaDisabled&&!e.nativeMediaSyncDisabled&&de.isActive(),userMuted:e.bridgeMuted,userVolume:e.bridgeVolume,forceSync:h,onElementVolume:(F,k)=>de.setElementVolume(F,k),isWebAudioOwned:F=>de.ownsElement(F),onAutoplayBlocked:()=>{e.mediaAutoplayBlockedPosted||(e.mediaAutoplayBlockedPosted=!0,Fe({source:"hf-preview",type:"media-autoplay-blocked"}))}});let y=Array.from(document.querySelectorAll("[data-start]")),w=S();for(let F of y){if(!(F instanceof HTMLElement))continue;if(F.hasAttribute("data-hidden")){an.has(F)||(Vn.set(F,F.style.getPropertyValue("display")),an.add(F)),F.style.display="none",(F instanceof HTMLVideoElement||F instanceof HTMLImageElement)&&n?.setSourceVisibility(F,!1);continue}if(an.has(F)){let K=Vn.get(F);K?F.style.display=K:F.style.removeProperty("display"),Vn.delete(F),an.delete(F)}let k=ie(F,e.currentTime);if(k){let K=F.parentElement;for(;K&&K!==w;){if(K instanceof HTMLElement&&K.hasAttribute("data-start")&&!ie(K,e.currentTime)){k=!1;break}K=K.parentElement}}F.style.visibility=k?"visible":"hidden",(F instanceof HTMLVideoElement||F instanceof HTMLImageElement)&&n?.setSourceVisibility(F,k),k?hr(F)&&F.style.removeProperty("display"):hr(F)&&Va(F)&&(F.style.display="none")}},Te=d=>{let m=Math.max(0,Math.round((e.currentTime||0)*e.canonicalFps)),h=Date.now();(d||m!==e.bridgeLastPostedFrame||e.isPlaying!==e.bridgeLastPostedPlaying||e.bridgeMuted!==e.bridgeLastPostedMuted||h-e.bridgeLastPostedAt>=e.bridgeMaxPostIntervalMs)&&(e.bridgeLastPostedFrame=m,e.bridgeLastPostedPlaying=e.isPlaying,e.bridgeLastPostedMuted=e.bridgeMuted,e.bridgeLastPostedAt=h,Fe({source:"hf-preview",type:"state",frame:m,isPlaying:e.isPlaying,muted:e.bridgeMuted,playbackRate:e.playbackRate}))},zn="",qa=()=>{let d="";for(let m of document.querySelectorAll("[data-start]"))d+=`${m.id}:${m.tagName}|`;return d},dt=()=>{M(),C(),T();let d=S();if(d){let y=v(d.getAttribute("data-width")),w=v(d.getAttribute("data-height")),F=y?parseInt(y,10):0,k=w?parseInt(w,10):0;F>0&&k>0&&Fe({source:"hf-preview",type:"stage-size",width:F,height:k})}z();let m=Zr({canonicalFps:e.canonicalFps});window.__clipManifest=m;let h=qa();if(zn!==h&&za(),!window.__clipTree||zn!==h){let y=window;window.__clipTree=Jr({startResolver:$e({timelineRegistry:y.__timelines??{},includeAuthoredTimingAttrs:!0}),timelineRegistry:y.__timelines??{},rootDuration:m.durationInFrames/e.canonicalFps}),zn=h}Fe(m),Pe()},Oe=(d,m=0)=>{for(let h of e.deterministicAdapters){try{d==="discover"&&h.discover(),d==="pause"&&h.pause(),d==="play"&&h.play&&h.play()}catch(y){L("runtime.init.site8",y)}if(d==="discover")try{h.seek({time:m})}catch(y){L("runtime.init.site9",y)}}},nt=()=>{window.__renderReady=!1},Ft=null,Ct=!0,ja=()=>{let d=[];for(let m of e.deterministicAdapters){let h=m.getReadyPromise;if(typeof h=="function")try{let y=h();y&&d.push(y)}catch(y){L("runtime.init.adapterReady",y)}}return d},$a=()=>{let d=ja();if(d.length===0)return Ft=null,Ct=!0,!0;let m=d.length===1?d[0]:Promise.all(d);return m!==Ft&&(Ft=m,Ct=!1,Promise.resolve(m).then(()=>{Ft===m&&(Ct=!0,nt())},h=>{Ft===m&&(Ct=!0,L("runtime.init.adapterReady",h),nt())})),Ct};if(Ee)Vi();else{let d={injectedStyles:e.injectedCompStyles,injectedScripts:e.injectedCompScripts,parseDimensionPx:v,onDiagnostic:({code:m,details:h})=>{Fe({source:"hf-preview",type:"diagnostic",code:m,details:h})}};Hs(d).then(()=>Bs(d)).finally(()=>{Ee=!0,Gn(),At(),Vi(),nt()})}let ln=zr({postMessage:d=>Fe(d)});ln.installPickerApi();let Ve=fa();n=Ve,p(()=>{Ve.destroy(),n=null});let qn=d=>{let m=Number(d);!Number.isFinite(m)||m<=0?e.playbackRate=1:e.playbackRate=Math.max(.1,Math.min(5,m)),e.mediaForceSyncNextTick=!0,e.capturedTimeline&&typeof e.capturedTimeline.timeScale=="function"&&e.capturedTimeline.timeScale(e.playbackRate);let h=document.querySelectorAll("video, audio");for(let y of h)if(y instanceof HTMLMediaElement)try{y.playbackRate=e.playbackRate}catch(w){L("runtime.init.site10",w)}},he=$r({getTimeline:()=>e.capturedTimeline,setTimeline:d=>{e.capturedTimeline=d},getTimelineRegistry:()=>window.__timelines??{},getIsPlaying:()=>e.isPlaying,setIsPlaying:d=>{e.isPlaying!==d&&(e.mediaForceSyncNextTick=!0),e.isPlaying=d},getPlaybackRate:()=>e.playbackRate,setPlaybackRate:qn,getCanonicalFps:()=>e.canonicalFps,onSyncMedia:(d,m)=>{e.currentTime=Math.max(0,Number(d)||0),e.isPlaying!==m&&(e.mediaForceSyncNextTick=!0),e.isPlaying=m,Le()},onStatePost:Te,onDeterministicSeek:d=>{for(let m of e.deterministicAdapters)try{m.seek({time:Number(d)||0})}catch(h){L("runtime.init.site11",h)}},onDeterministicPause:()=>Oe("pause"),onDeterministicPlay:()=>Oe("play"),onRenderFrameSeek:()=>{Ve.redraw()},onShowNativeVideos:()=>{},getSafeDuration:()=>Q(e.capturedTimeline,0)});window.__player=x(he),window.__playerReady=!0,Ar(Fe),ot("composition_loaded",{duration:he.getDuration(),compositionId:document.querySelector("[data-composition-id]")?.getAttribute("data-composition-id")??null}),e.controlBridgeHandler=Er({onPlay:()=>{he.play(),ot("composition_played",{time:he.getTime()})},onPause:()=>{he.pause(),ot("composition_paused",{time:he.getTime()})},onStopMedia:()=>{de.stopAll();let d=document.querySelectorAll("video, audio");for(let m of d)m instanceof HTMLMediaElement&&!m.paused&&m.pause()},onSeek:(d,m)=>{let h=Math.max(0,d)/e.canonicalFps;he.seek(h),ot("composition_seeked",{time:h})},onSetMuted:d=>{e.bridgeMuted=d;let m=d||e.mediaOutputMuted;de.setMuted(m);let h=document.querySelectorAll("video, audio");for(let y of h)y instanceof HTMLMediaElement&&(y.muted=m||y.defaultMuted)},onSetVolume:d=>{e.bridgeVolume=d,de.setVolume(d);let m=document.querySelectorAll("video, audio");for(let h of m){if(!(h instanceof HTMLMediaElement))continue;let y=parseFloat(h.dataset.volume??""),w=Number.isFinite(y)?y:1;h.volume=w*d}},onSetMediaOutputMuted:d=>{e.mediaOutputMuted=d;let m=d||e.bridgeMuted;de.setMuted(m);let h=document.querySelectorAll("video, audio");for(let y of h)y instanceof HTMLMediaElement&&(y.muted=m||y.defaultMuted)},onSetNativeMediaSyncDisabled:d=>{e.nativeMediaSyncDisabled!==d&&(e.nativeMediaSyncDisabled=d,e.mediaForceSyncNextTick=!0,d?(de.stopAll(),I.detachAudioSource()):Le())},onSetWebAudioMediaDisabled:d=>{e.webAudioMediaDisabled!==d&&(e.webAudioMediaDisabled=d,e.mediaForceSyncNextTick=!0,d&&(de.stopAll(),I.detachAudioSource()),Le())},onSetPlaybackRate:d=>{qn(d),e.transportClock&&e.transportClock.setRate(e.playbackRate),yr()},onSetColorGrading:(d,m)=>{Ve.setGrading(d,m)},onSetColorGradingCompare:(d,m)=>{Ve.setCompare(d,m)},onTick:()=>{if(e.tornDown||!I.isPlaying())return;let d=I.now();if(e.currentTime=d,it(d),I.reachedEnd()){de.stopAll(),I.detachAudioSource(),I.pause(),e.isPlaying=!1;let m=I.getDuration();Number.isFinite(m)&&(I.seek(m),e.currentTime=m,it(m)),Oe("pause"),Le(),Te(!0)}},onEnablePickMode:()=>ln.enablePickMode(),onDisablePickMode:()=>ln.disablePickMode()}),e.deterministicAdapters=[Hr(),wr({resolveStartSeconds:d=>R(d,0)}),Cr(),Mr(),Tr(),Nr(),Lr(),Rr(),kr(),Dr(),Ir(),Fr({getTimeline:()=>e.capturedTimeline})],Or(),Br(),window.__hfReseekGpu=d=>{let m=Math.max(0,Number(d)||0);window.__hfThreeTime=m,window.__hfTypegpuTime=m,vr(m)},Me(),Gn(),Oe("discover");let I=new kn;e.transportClock=I;let de=new Dn,jn=!1;de.init().then(d=>{jn=d});let Ka=()=>{let d=e.capturedTimeline,m=z();e.capturedTimeline&&(m||e.capturedTimeline!==d||!he._timeline)&&(he._timeline=e.capturedTimeline);let h=Q(e.capturedTimeline,0);if(h>0&&I.setDuration(h),Oe("discover",e.currentTime),!e.capturedTimeline){let y=window.__timelines??{},w=Object.keys(y).filter(F=>y[F]);if(w.length>0){let k=S()?.getAttribute("data-composition-id")??null;f("root_timeline_unbound_registry_present",{reason:k?"root data-composition-id has no matching key in window.__timelines":"root composition element has no data-composition-id attribute",rootCompositionId:k,registeredTimelineKeys:w},"root_timeline_unbound_registry_present"),console.warn("[hyperframes] Root timeline not bound \\u2014 render will freeze at t=0. "+(k?`Root data-composition-id is "${k}" but window.__timelines has no such key. `:"Root composition element has no data-composition-id. ")+`Registered timeline keys: [${w.join(", ")}]. Register the root timeline under its data-composition-id (window.__timelines["${k??"<root-id>"}"] = tl).`)}}window.__renderReady=!0,dt(),Te(!0)};if(nt=()=>{if(!Ee||window.__hfTimelinesBuilding){window.__renderReady=!1;return}if(Oe("discover",e.currentTime),!$a()){window.__renderReady=!1;return}Ka()},window.__hfTimelinesBuilding){window.__renderReady=!1;let d=()=>{window.removeEventListener("hf-timelines-built",d),nt()};window.addEventListener("hf-timelines-built",d)}nt(),Ee&&setTimeout(()=>{nt()},0);let un=0,$n=!1,Ja=(d,m,h)=>{try{d.pause(),typeof d.totalTime=="function"?d.totalTime(m,!1):d.seek(m,!1)}catch(y){L(h,y)}},Xa=d=>{let m=window.__timelines??{},h=S()?.getAttribute("data-composition-id")??null;for(let[y,w]of Object.entries(m)){if(!w||y===h)continue;let F=document.querySelector(`[data-composition-id="${CSS.escape(y)}"]`);if(!F)continue;let k=R(F,0);if(!Number.isFinite(k))continue;let K=W(F,{includeAuthoredTimingAttrs:!0}),J=H(w),me=K!=null&&K>0?K:J,ye=Math.max(0,me!=null&&me>0?Math.min(me,d-k):d-k);Ja(w,ye,"runtime.init.transport.childTimeline")}},Ya=d=>{let m=window.__timelines??{};for(let h of Object.values(m))if(!(!h||h===d))try{h.play()}catch(y){L("runtime.init.activateSiblings",y)}},it=(d,m)=>{let h=e.capturedTimeline;if(h){m?.activateChildren&&Ya(h);let y=h,w=d;if(typeof y.totalDuration=="function")try{let F=Number(y.totalDuration());Number.isFinite(F)&&F>0&&d>F&&(w=F)}catch(F){L("runtime.init.transport.clampDuration",F)}try{typeof h.totalTime=="function"?h.totalTime(w,!1):h.seek(w,!1)}catch(F){L("runtime.init.transport.seek",F)}}else Xa(d);for(let y of e.deterministicAdapters)try{y.seek({time:d})}catch(w){L("runtime.init.transport.adapter",w)}},Qa=()=>{try{return document.querySelector(`[${pa}]`)!=null}catch{return!1}},gr=()=>{if(!(e.tornDown||$n)){$n=!0;try{if(e.transportRafId=window.requestAnimationFrame(gr),un+=1,un%60===0&&!(I.isPlaying()&&e.capturedTimeline!=null&&I.now()<g)){let h=e.capturedTimeline;if(z()){e.capturedTimeline&&!he._timeline&&(he._timeline=e.capturedTimeline),e.capturedTimeline&&e.capturedTimeline!==h&&e.capturedTimeline.pause();let y=Q(e.capturedTimeline,0);y>0&&I.setDuration(y),dt()}}if(un%20===0&&dt(),un%30===0&&Gn(),e.capturedTimeline){let m=Q(e.capturedTimeline,0);m>0&&(!I.isPlaying()||m>=I.getDuration())&&I.setDuration(m)}if(I.isPlaying()&&!e.mediaOutputMuted)if(!e.nativeMediaSyncDisabled&&!e.webAudioMediaDisabled&&de.isActive()&&de.context){let m=de.getTime();m>=0&&I.attachAudioSource({currentTimeSeconds:m})}else{let m=document.querySelectorAll("audio[data-start]"),h=!1;for(let y of m){if(!(y instanceof HTMLMediaElement)||!y.isConnected)continue;let w=Number.parseFloat(y.dataset.start??""),F=Number.parseFloat(y.dataset.duration??""),k=Number.isFinite(F)&&F>0?w+F:1/0,K=Number.parseFloat(y.dataset.playbackStart??y.dataset.mediaStart??"0")||0;if(Number.isFinite(w)&&e.currentTime>=w&&e.currentTime<=k){y.paused?!y.error&&y.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&(I.attachAudioSource({currentTimeSeconds:e.currentTime}),h=!0):(I.attachAudioSource({el:y,compositionStart:w,mediaStart:K}),h=!0);break}}!h&&I.hasAudioSource()&&I.detachAudioSource()}else I.hasAudioSource()&&I.detachAudioSource();let d=I.now();if(e.currentTime=d,(I.isPlaying()||!Qa())&&it(d),I.isPlaying()&&I.reachedEnd()){de.stopAll(),I.detachAudioSource(),I.pause(),e.isPlaying=!1;let m=I.getDuration();Number.isFinite(m)&&(I.seek(m),e.currentTime=m,it(m)),Oe("pause"),Le(),Te(!0);return}I.isPlaying()&&Le(),Te(!1)}finally{$n=!1}}},xr=d=>{let m=document.querySelectorAll("video, audio");for(let h of m){if(!(h instanceof HTMLMediaElement)||!h.isConnected)continue;let y=Number.parseFloat(h.dataset.start??"");if(!Number.isFinite(y))continue;let w=Number.parseFloat(h.dataset.duration??""),F=Number.isFinite(w)&&w>0?y+w:1/0;if(d<y||d>=F)continue;let k=Number.parseFloat(h.dataset.playbackStart??h.dataset.mediaStart??"0")||0,K=d-y+k;if(K>=0)try{h.currentTime=K}catch{}}},br=()=>{if(e.nativeMediaSyncDisabled||e.webAudioMediaDisabled)return;let d=de.startGeneration(),m=document.querySelectorAll("audio[data-start]");for(let h of m){if(!(h instanceof HTMLMediaElement)||!h.isConnected)continue;let y=Number.parseFloat(h.dataset.start??"");if(!Number.isFinite(y))continue;let w=Number.parseFloat(h.dataset.playbackStart??h.dataset.mediaStart??"0")||0,F=Number.parseFloat(h.dataset.volume??""),k=Number.isFinite(F)?F:1,K=Number.parseFloat(h.dataset.duration??""),J=Number.isFinite(K)&&K>0?K:Number.POSITIVE_INFINITY,me=h.closest("[data-composition-id]");if(me){let ye=R(me,0),oe=W(me,{includeAuthoredTimingAttrs:!0});oe!=null&&oe>0&&(J=Math.min(J,Math.max(0,ye+oe-y)))}de.decodeAudioElement(h).then(ye=>{!ye||!I.isPlaying()||de.schedulePlayback(h,ye,y,w,I.now(),k*e.bridgeVolume,d,e.playbackRate,J)})}},yr=()=>{de.setRate(e.playbackRate)&&!e.nativeMediaSyncDisabled&&!e.webAudioMediaDisabled&&jn&&I.isPlaying()&&de.hasBoundedActiveSources()&&(de.stopAll(),br())};if(he.play=()=>{let d=e.capturedTimeline;if(I.isPlaying())return;let m=Q(d,0);if(m>0)I.setDuration(m),I.reachedEnd()&&(I.seek(0),e.currentTime=0,it(0));else{let h=S(),y=Number(h?.getAttribute("data-duration")??0);y>0&&I.setDuration(y)}d&&d.pause(),I.play()&&(e.isPlaying=!0,e.mediaForceSyncNextTick=!0,xr(I.now()),jn&&!e.nativeMediaSyncDisabled&&!e.webAudioMediaDisabled&&br(),Oe("play"),Le(),Ve.redraw(),Te(!0))},he.pause=()=>{if(!I.isPlaying())return;de.stopAll(),I.detachAudioSource(),I.pause(),e.isPlaying=!1,e.currentTime=I.now(),e.mediaForceSyncNextTick=!0,xr(e.currentTime);let d=e.capturedTimeline;d&&d.pause(),Oe("pause"),Le(),Ve.redraw(),Te(!0)},he.seek=d=>{let m=mt(Math.max(0,Number(d)||0),e.canonicalFps);de.stopAll(),I.detachAudioSource(),I.isPlaying()&&I.pause(),I.seek(m),e.currentTime=I.now(),e.isPlaying=!1,e.mediaForceSyncNextTick=!0;let y=e.capturedTimeline;y&&y.pause(),it(e.currentTime),Oe("pause"),Le(),Ve.redraw(),Te(!0)},he.renderSeek=d=>{let m=mt(Math.max(0,Number(d)||0),e.canonicalFps);I.isPlaying()&&I.pause(),I.seek(m),e.currentTime=I.now(),e.isPlaying=!1,e.mediaForceSyncNextTick=!0,it(e.currentTime,{activateChildren:!0}),Le(),Ve.redraw(),Te(!0)},he.getTime=()=>I.now(),he.getDuration=()=>{let d=I.getDuration();return Number.isFinite(d)?d:0},he.isPlaying=()=>I.isPlaying(),he.setPlaybackRate=d=>{qn(d),I.setRate(e.playbackRate),yr()},e.capturedTimeline){let d=Q(e.capturedTimeline,0);d>0&&I.setDuration(d),e.capturedTimeline.pause()}let Sr=window.__player;if(Sr){let d=["play","pause","seek","renderSeek","getTime","getDuration","isPlaying"];for(let m of d)Object.defineProperty(Sr,m,{get:()=>he[m],set:h=>{he[m]=h},configurable:!0})}e.transportRafId=window.requestAnimationFrame(gr),dt(),Te(!0);let Kn=()=>{if(!e.tornDown){e.tornDown=!0,e.transportRafId!=null&&(window.cancelAnimationFrame(e.transportRafId),e.transportRafId=null),e.transportClock=null,de.destroy(),tt!=null&&(window.clearTimeout(tt),tt=null),u!=null&&(window.cancelAnimationFrame(u),u=null),Ua(),e.controlBridgeHandler&&(window.removeEventListener("message",e.controlBridgeHandler),e.controlBridgeHandler=null),i&&(window.removeEventListener("error",i),i=null),r&&(window.removeEventListener("unhandledrejection",r),r=null),e.beforeUnloadHandler&&(window.removeEventListener("beforeunload",e.beforeUnloadHandler),e.beforeUnloadHandler=null),ln.disablePickMode();for(let d of e.deterministicAdapters)if(!(!d||typeof d.revert!="function"))try{d.revert()}catch(m){L("runtime.init.site12",m)}e.deterministicAdapters=[];for(let d of o.splice(0))try{d()}catch(m){L("runtime.init.site13",m)}for(let d of e.injectedCompStyles)try{d.remove()}catch(m){L("runtime.init.site14",m)}e.injectedCompStyles=[];for(let d of e.injectedCompScripts)try{d.remove()}catch(m){L("runtime.init.site15",m)}e.injectedCompScripts=[],e.capturedTimeline=null,window.__hfRuntimeTeardown===Kn&&(window.__hfRuntimeTeardown=null)}};window.__hfRuntimeTeardown=Kn,e.beforeUnloadHandler=Kn,window.addEventListener("beforeunload",e.beforeUnloadHandler)}var ga=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","BN","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],or=[[697,698,"ON"],[706,719,"ON"],[722,735,"ON"],[741,749,"ON"],[751,767,"ON"],[768,879,"NSM"],[884,885,"ON"],[894,894,"ON"],[900,901,"ON"],[903,903,"ON"],[1014,1014,"ON"],[1155,1161,"NSM"],[1418,1418,"ON"],[1421,1422,"ON"],[1423,1423,"ET"],[1424,1424,"R"],[1425,1469,"NSM"],[1470,1470,"R"],[1471,1471,"NSM"],[1472,1472,"R"],[1473,1474,"NSM"],[1475,1475,"R"],[1476,1477,"NSM"],[1478,1478,"R"],[1479,1479,"NSM"],[1480,1535,"R"],[1536,1541,"AN"],[1542,1543,"ON"],[1544,1544,"AL"],[1545,1546,"ET"],[1547,1547,"AL"],[1548,1548,"CS"],[1549,1549,"AL"],[1550,1551,"ON"],[1552,1562,"NSM"],[1563,1610,"AL"],[1611,1631,"NSM"],[1632,1641,"AN"],[1642,1642,"ET"],[1643,1644,"AN"],[1645,1647,"AL"],[1648,1648,"NSM"],[1649,1749,"AL"],[1750,1756,"NSM"],[1757,1757,"AN"],[1758,1758,"ON"],[1759,1764,"NSM"],[1765,1766,"AL"],[1767,1768,"NSM"],[1769,1769,"ON"],[1770,1773,"NSM"],[1774,1775,"AL"],[1776,1785,"EN"],[1786,1808,"AL"],[1809,1809,"NSM"],[1810,1839,"AL"],[1840,1866,"NSM"],[1867,1957,"AL"],[1958,1968,"NSM"],[1969,1983,"AL"],[1984,2026,"R"],[2027,2035,"NSM"],[2036,2037,"R"],[2038,2041,"ON"],[2042,2044,"R"],[2045,2045,"NSM"],[2046,2069,"R"],[2070,2073,"NSM"],[2074,2074,"R"],[2075,2083,"NSM"],[2084,2084,"R"],[2085,2087,"NSM"],[2088,2088,"R"],[2089,2093,"NSM"],[2094,2136,"R"],[2137,2139,"NSM"],[2140,2143,"R"],[2144,2191,"AL"],[2192,2193,"AN"],[2194,2198,"AL"],[2199,2207,"NSM"],[2208,2249,"AL"],[2250,2273,"NSM"],[2274,2274,"AN"],[2275,2306,"NSM"],[2362,2362,"NSM"],[2364,2364,"NSM"],[2369,2376,"NSM"],[2381,2381,"NSM"],[2385,2391,"NSM"],[2402,2403,"NSM"],[2433,2433,"NSM"],[2492,2492,"NSM"],[2497,2500,"NSM"],[2509,2509,"NSM"],[2530,2531,"NSM"],[2546,2547,"ET"],[2555,2555,"ET"],[2558,2558,"NSM"],[2561,2562,"NSM"],[2620,2620,"NSM"],[2625,2626,"NSM"],[2631,2632,"NSM"],[2635,2637,"NSM"],[2641,2641,"NSM"],[2672,2673,"NSM"],[2677,2677,"NSM"],[2689,2690,"NSM"],[2748,2748,"NSM"],[2753,2757,"NSM"],[2759,2760,"NSM"],[2765,2765,"NSM"],[2786,2787,"NSM"],[2801,2801,"ET"],[2810,2815,"NSM"],[2817,2817,"NSM"],[2876,2876,"NSM"],[2879,2879,"NSM"],[2881,2884,"NSM"],[2893,2893,"NSM"],[2901,2902,"NSM"],[2914,2915,"NSM"],[2946,2946,"NSM"],[3008,3008,"NSM"],[3021,3021,"NSM"],[3059,3064,"ON"],[3065,3065,"ET"],[3066,3066,"ON"],[3072,3072,"NSM"],[3076,3076,"NSM"],[3132,3132,"NSM"],[3134,3136,"NSM"],[3142,3144,"NSM"],[3146,3149,"NSM"],[3157,3158,"NSM"],[3170,3171,"NSM"],[3192,3198,"ON"],[3201,3201,"NSM"],[3260,3260,"NSM"],[3276,3277,"NSM"],[3298,3299,"NSM"],[3328,3329,"NSM"],[3387,3388,"NSM"],[3393,3396,"NSM"],[3405,3405,"NSM"],[3426,3427,"NSM"],[3457,3457,"NSM"],[3530,3530,"NSM"],[3538,3540,"NSM"],[3542,3542,"NSM"],[3633,3633,"NSM"],[3636,3642,"NSM"],[3647,3647,"ET"],[3655,3662,"NSM"],[3761,3761,"NSM"],[3764,3772,"NSM"],[3784,3790,"NSM"],[3864,3865,"NSM"],[3893,3893,"NSM"],[3895,3895,"NSM"],[3897,3897,"NSM"],[3898,3901,"ON"],[3953,3966,"NSM"],[3968,3972,"NSM"],[3974,3975,"NSM"],[3981,3991,"NSM"],[3993,4028,"NSM"],[4038,4038,"NSM"],[4141,4144,"NSM"],[4146,4151,"NSM"],[4153,4154,"NSM"],[4157,4158,"NSM"],[4184,4185,"NSM"],[4190,4192,"NSM"],[4209,4212,"NSM"],[4226,4226,"NSM"],[4229,4230,"NSM"],[4237,4237,"NSM"],[4253,4253,"NSM"],[4957,4959,"NSM"],[5008,5017,"ON"],[5120,5120,"ON"],[5760,5760,"WS"],[5787,5788,"ON"],[5906,5908,"NSM"],[5938,5939,"NSM"],[5970,5971,"NSM"],[6002,6003,"NSM"],[6068,6069,"NSM"],[6071,6077,"NSM"],[6086,6086,"NSM"],[6089,6099,"NSM"],[6107,6107,"ET"],[6109,6109,"NSM"],[6128,6137,"ON"],[6144,6154,"ON"],[6155,6157,"NSM"],[6158,6158,"BN"],[6159,6159,"NSM"],[6277,6278,"NSM"],[6313,6313,"NSM"],[6432,6434,"NSM"],[6439,6440,"NSM"],[6450,6450,"NSM"],[6457,6459,"NSM"],[6464,6464,"ON"],[6468,6469,"ON"],[6622,6655,"ON"],[6679,6680,"NSM"],[6683,6683,"NSM"],[6742,6742,"NSM"],[6744,6750,"NSM"],[6752,6752,"NSM"],[6754,6754,"NSM"],[6757,6764,"NSM"],[6771,6780,"NSM"],[6783,6783,"NSM"],[6832,6877,"NSM"],[6880,6891,"NSM"],[6912,6915,"NSM"],[6964,6964,"NSM"],[6966,6970,"NSM"],[6972,6972,"NSM"],[6978,6978,"NSM"],[7019,7027,"NSM"],[7040,7041,"NSM"],[7074,7077,"NSM"],[7080,7081,"NSM"],[7083,7085,"NSM"],[7142,7142,"NSM"],[7144,7145,"NSM"],[7149,7149,"NSM"],[7151,7153,"NSM"],[7212,7219,"NSM"],[7222,7223,"NSM"],[7376,7378,"NSM"],[7380,7392,"NSM"],[7394,7400,"NSM"],[7405,7405,"NSM"],[7412,7412,"NSM"],[7416,7417,"NSM"],[7616,7679,"NSM"],[8125,8125,"ON"],[8127,8129,"ON"],[8141,8143,"ON"],[8157,8159,"ON"],[8173,8175,"ON"],[8189,8190,"ON"],[8192,8202,"WS"],[8203,8205,"BN"],[8207,8207,"R"],[8208,8231,"ON"],[8232,8232,"WS"],[8233,8233,"B"],[8234,8238,"BN"],[8239,8239,"CS"],[8240,8244,"ET"],[8245,8259,"ON"],[8260,8260,"CS"],[8261,8286,"ON"],[8287,8287,"WS"],[8288,8303,"BN"],[8304,8304,"EN"],[8308,8313,"EN"],[8314,8315,"ES"],[8316,8318,"ON"],[8320,8329,"EN"],[8330,8331,"ES"],[8332,8334,"ON"],[8352,8399,"ET"],[8400,8432,"NSM"],[8448,8449,"ON"],[8451,8454,"ON"],[8456,8457,"ON"],[8468,8468,"ON"],[8470,8472,"ON"],[8478,8483,"ON"],[8485,8485,"ON"],[8487,8487,"ON"],[8489,8489,"ON"],[8494,8494,"ET"],[8506,8507,"ON"],[8512,8516,"ON"],[8522,8525,"ON"],[8528,8543,"ON"],[8585,8587,"ON"],[8592,8721,"ON"],[8722,8722,"ES"],[8723,8723,"ET"],[8724,9013,"ON"],[9083,9108,"ON"],[9110,9257,"ON"],[9280,9290,"ON"],[9312,9351,"ON"],[9352,9371,"EN"],[9450,9899,"ON"],[9901,10239,"ON"],[10496,11123,"ON"],[11126,11263,"ON"],[11493,11498,"ON"],[11503,11505,"NSM"],[11513,11519,"ON"],[11647,11647,"NSM"],[11744,11775,"NSM"],[11776,11869,"ON"],[11904,11929,"ON"],[11931,12019,"ON"],[12032,12245,"ON"],[12272,12287,"ON"],[12288,12288,"WS"],[12289,12292,"ON"],[12296,12320,"ON"],[12330,12333,"NSM"],[12336,12336,"ON"],[12342,12343,"ON"],[12349,12351,"ON"],[12441,12442,"NSM"],[12443,12444,"ON"],[12448,12448,"ON"],[12539,12539,"ON"],[12736,12773,"ON"],[12783,12783,"ON"],[12829,12830,"ON"],[12880,12895,"ON"],[12924,12926,"ON"],[12977,12991,"ON"],[13004,13007,"ON"],[13175,13178,"ON"],[13278,13279,"ON"],[13311,13311,"ON"],[19904,19967,"ON"],[42128,42182,"ON"],[42509,42511,"ON"],[42607,42610,"NSM"],[42611,42611,"ON"],[42612,42621,"NSM"],[42622,42623,"ON"],[42654,42655,"NSM"],[42736,42737,"NSM"],[42752,42785,"ON"],[42888,42888,"ON"],[43010,43010,"NSM"],[43014,43014,"NSM"],[43019,43019,"NSM"],[43045,43046,"NSM"],[43048,43051,"ON"],[43052,43052,"NSM"],[43064,43065,"ET"],[43124,43127,"ON"],[43204,43205,"NSM"],[43232,43249,"NSM"],[43263,43263,"NSM"],[43302,43309,"NSM"],[43335,43345,"NSM"],[43392,43394,"NSM"],[43443,43443,"NSM"],[43446,43449,"NSM"],[43452,43453,"NSM"],[43493,43493,"NSM"],[43561,43566,"NSM"],[43569,43570,"NSM"],[43573,43574,"NSM"],[43587,43587,"NSM"],[43596,43596,"NSM"],[43644,43644,"NSM"],[43696,43696,"NSM"],[43698,43700,"NSM"],[43703,43704,"NSM"],[43710,43711,"NSM"],[43713,43713,"NSM"],[43756,43757,"NSM"],[43766,43766,"NSM"],[43882,43883,"ON"],[44005,44005,"NSM"],[44008,44008,"NSM"],[44013,44013,"NSM"],[64285,64285,"R"],[64286,64286,"NSM"],[64287,64296,"R"],[64297,64297,"ES"],[64298,64335,"R"],[64336,64450,"AL"],[64451,64466,"ON"],[64467,64829,"AL"],[64830,64847,"ON"],[64848,64911,"AL"],[64912,64913,"ON"],[64914,64967,"AL"],[64968,64975,"ON"],[64976,65007,"BN"],[65008,65020,"AL"],[65021,65023,"ON"],[65024,65039,"NSM"],[65040,65049,"ON"],[65056,65071,"NSM"],[65072,65103,"ON"],[65104,65104,"CS"],[65105,65105,"ON"],[65106,65106,"CS"],[65108,65108,"ON"],[65109,65109,"CS"],[65110,65118,"ON"],[65119,65119,"ET"],[65120,65121,"ON"],[65122,65123,"ES"],[65124,65126,"ON"],[65128,65128,"ON"],[65129,65130,"ET"],[65131,65131,"ON"],[65136,65278,"AL"],[65279,65279,"BN"],[65281,65282,"ON"],[65283,65285,"ET"],[65286,65290,"ON"],[65291,65291,"ES"],[65292,65292,"CS"],[65293,65293,"ES"],[65294,65295,"CS"],[65296,65305,"EN"],[65306,65306,"CS"],[65307,65312,"ON"],[65339,65344,"ON"],[65371,65381,"ON"],[65504,65505,"ET"],[65506,65508,"ON"],[65509,65510,"ET"],[65512,65518,"ON"],[65520,65528,"BN"],[65529,65533,"ON"],[65534,65535,"BN"],[65793,65793,"ON"],[65856,65932,"ON"],[65936,65948,"ON"],[65952,65952,"ON"],[66045,66045,"NSM"],[66272,66272,"NSM"],[66273,66299,"EN"],[66422,66426,"NSM"],[67584,67870,"R"],[67871,67871,"ON"],[67872,68096,"R"],[68097,68099,"NSM"],[68100,68100,"R"],[68101,68102,"NSM"],[68103,68107,"R"],[68108,68111,"NSM"],[68112,68151,"R"],[68152,68154,"NSM"],[68155,68158,"R"],[68159,68159,"NSM"],[68160,68324,"R"],[68325,68326,"NSM"],[68327,68408,"R"],[68409,68415,"ON"],[68416,68863,"R"],[68864,68899,"AL"],[68900,68903,"NSM"],[68904,68911,"AL"],[68912,68921,"AN"],[68922,68927,"AL"],[68928,68937,"AN"],[68938,68968,"R"],[68969,68973,"NSM"],[68974,68974,"ON"],[68975,69215,"R"],[69216,69246,"AN"],[69247,69290,"R"],[69291,69292,"NSM"],[69293,69311,"R"],[69312,69327,"AL"],[69328,69336,"ON"],[69337,69369,"AL"],[69370,69375,"NSM"],[69376,69423,"R"],[69424,69445,"AL"],[69446,69456,"NSM"],[69457,69487,"AL"],[69488,69505,"R"],[69506,69509,"NSM"],[69510,69631,"R"],[69633,69633,"NSM"],[69688,69702,"NSM"],[69714,69733,"ON"],[69744,69744,"NSM"],[69747,69748,"NSM"],[69759,69761,"NSM"],[69811,69814,"NSM"],[69817,69818,"NSM"],[69826,69826,"NSM"],[69888,69890,"NSM"],[69927,69931,"NSM"],[69933,69940,"NSM"],[70003,70003,"NSM"],[70016,70017,"NSM"],[70070,70078,"NSM"],[70089,70092,"NSM"],[70095,70095,"NSM"],[70191,70193,"NSM"],[70196,70196,"NSM"],[70198,70199,"NSM"],[70206,70206,"NSM"],[70209,70209,"NSM"],[70367,70367,"NSM"],[70371,70378,"NSM"],[70400,70401,"NSM"],[70459,70460,"NSM"],[70464,70464,"NSM"],[70502,70508,"NSM"],[70512,70516,"NSM"],[70587,70592,"NSM"],[70606,70606,"NSM"],[70608,70608,"NSM"],[70610,70610,"NSM"],[70625,70626,"NSM"],[70712,70719,"NSM"],[70722,70724,"NSM"],[70726,70726,"NSM"],[70750,70750,"NSM"],[70835,70840,"NSM"],[70842,70842,"NSM"],[70847,70848,"NSM"],[70850,70851,"NSM"],[71090,71093,"NSM"],[71100,71101,"NSM"],[71103,71104,"NSM"],[71132,71133,"NSM"],[71219,71226,"NSM"],[71229,71229,"NSM"],[71231,71232,"NSM"],[71264,71276,"ON"],[71339,71339,"NSM"],[71341,71341,"NSM"],[71344,71349,"NSM"],[71351,71351,"NSM"],[71453,71453,"NSM"],[71455,71455,"NSM"],[71458,71461,"NSM"],[71463,71467,"NSM"],[71727,71735,"NSM"],[71737,71738,"NSM"],[71995,71996,"NSM"],[71998,71998,"NSM"],[72003,72003,"NSM"],[72148,72151,"NSM"],[72154,72155,"NSM"],[72160,72160,"NSM"],[72193,72198,"NSM"],[72201,72202,"NSM"],[72243,72248,"NSM"],[72251,72254,"NSM"],[72263,72263,"NSM"],[72273,72278,"NSM"],[72281,72283,"NSM"],[72330,72342,"NSM"],[72344,72345,"NSM"],[72544,72544,"NSM"],[72546,72548,"NSM"],[72550,72550,"NSM"],[72752,72758,"NSM"],[72760,72765,"NSM"],[72850,72871,"NSM"],[72874,72880,"NSM"],[72882,72883,"NSM"],[72885,72886,"NSM"],[73009,73014,"NSM"],[73018,73018,"NSM"],[73020,73021,"NSM"],[73023,73029,"NSM"],[73031,73031,"NSM"],[73104,73105,"NSM"],[73109,73109,"NSM"],[73111,73111,"NSM"],[73459,73460,"NSM"],[73472,73473,"NSM"],[73526,73530,"NSM"],[73536,73536,"NSM"],[73538,73538,"NSM"],[73562,73562,"NSM"],[73685,73692,"ON"],[73693,73696,"ET"],[73697,73713,"ON"],[78912,78912,"NSM"],[78919,78933,"NSM"],[90398,90409,"NSM"],[90413,90415,"NSM"],[92912,92916,"NSM"],[92976,92982,"NSM"],[94031,94031,"NSM"],[94095,94098,"NSM"],[94178,94178,"ON"],[94180,94180,"NSM"],[113821,113822,"NSM"],[113824,113827,"BN"],[117760,117973,"ON"],[118e3,118009,"EN"],[118010,118012,"ON"],[118016,118451,"ON"],[118458,118480,"ON"],[118496,118512,"ON"],[118528,118573,"NSM"],[118576,118598,"NSM"],[119143,119145,"NSM"],[119155,119162,"BN"],[119163,119170,"NSM"],[119173,119179,"NSM"],[119210,119213,"NSM"],[119273,119274,"ON"],[119296,119361,"ON"],[119362,119364,"NSM"],[119365,119365,"ON"],[119552,119638,"ON"],[120513,120513,"ON"],[120539,120539,"ON"],[120571,120571,"ON"],[120597,120597,"ON"],[120629,120629,"ON"],[120655,120655,"ON"],[120687,120687,"ON"],[120713,120713,"ON"],[120745,120745,"ON"],[120771,120771,"ON"],[120782,120831,"EN"],[121344,121398,"NSM"],[121403,121452,"NSM"],[121461,121461,"NSM"],[121476,121476,"NSM"],[121499,121503,"NSM"],[121505,121519,"NSM"],[122880,122886,"NSM"],[122888,122904,"NSM"],[122907,122913,"NSM"],[122915,122916,"NSM"],[122918,122922,"NSM"],[123023,123023,"NSM"],[123184,123190,"NSM"],[123566,123566,"NSM"],[123628,123631,"NSM"],[123647,123647,"ET"],[124140,124143,"NSM"],[124398,124399,"NSM"],[124643,124643,"NSM"],[124646,124646,"NSM"],[124654,124655,"NSM"],[124661,124661,"NSM"],[124928,125135,"R"],[125136,125142,"NSM"],[125143,125251,"R"],[125252,125258,"NSM"],[125259,126063,"R"],[126064,126143,"AL"],[126144,126207,"R"],[126208,126287,"AL"],[126288,126463,"R"],[126464,126703,"AL"],[126704,126705,"ON"],[126706,126719,"AL"],[126720,126975,"R"],[126976,127019,"ON"],[127024,127123,"ON"],[127136,127150,"ON"],[127153,127167,"ON"],[127169,127183,"ON"],[127185,127221,"ON"],[127232,127242,"EN"],[127243,127247,"ON"],[127279,127279,"ON"],[127338,127343,"ON"],[127405,127405,"ON"],[127584,127589,"ON"],[127744,128728,"ON"],[128732,128748,"ON"],[128752,128764,"ON"],[128768,128985,"ON"],[128992,129003,"ON"],[129008,129008,"ON"],[129024,129035,"ON"],[129040,129095,"ON"],[129104,129113,"ON"],[129120,129159,"ON"],[129168,129197,"ON"],[129200,129211,"ON"],[129216,129217,"ON"],[129232,129240,"ON"],[129280,129623,"ON"],[129632,129645,"ON"],[129648,129660,"ON"],[129664,129674,"ON"],[129678,129734,"ON"],[129736,129736,"ON"],[129741,129756,"ON"],[129759,129770,"ON"],[129775,129784,"ON"],[129792,129938,"ON"],[129940,130031,"ON"],[130032,130041,"EN"],[130042,130042,"ON"],[131070,131071,"BN"],[196606,196607,"BN"],[262142,262143,"BN"],[327678,327679,"BN"],[393214,393215,"BN"],[458750,458751,"BN"],[524286,524287,"BN"],[589822,589823,"BN"],[655358,655359,"BN"],[720894,720895,"BN"],[786430,786431,"BN"],[851966,851967,"BN"],[917502,917759,"BN"],[917760,917999,"NSM"],[918e3,921599,"BN"],[983038,983039,"BN"],[1048574,1048575,"BN"],[1114110,1114111,"BN"]];function qd(e){if(e<=255)return ga[e];let t=0,n=or.length-1;for(;t<=n;){let i=t+n>>1,r=or[i];if(e<r[0]){n=i-1;continue}if(e>r[1]){t=i+1;continue}return r[2]}return"L"}function jd(e){let t=e.length;if(t===0)return null;let n=new Array(t),i=!1;for(let l=0;l<t;){let c=e.charCodeAt(l),p=c,f=1;if(c>=55296&&c<=56319&&l+1<t){let E=e.charCodeAt(l+1);E>=56320&&E<=57343&&(p=(c-55296<<10)+(E-56320)+65536,f=2)}let x=qd(p);(x==="R"||x==="AL"||x==="AN")&&(i=!0);for(let E=0;E<f;E++)n[l+E]=x;l+=f}if(!i)return null;let r=0;for(let l=0;l<t;l++){let c=n[l];if(c==="L"){r=0;break}if(c==="R"||c==="AL"){r=1;break}}let o=new Int8Array(t);for(let l=0;l<t;l++)o[l]=r;let s=r&1?"R":"L",u=s,a=u;for(let l=0;l<t;l++)n[l]==="NSM"?n[l]=a:a=n[l];a=u;for(let l=0;l<t;l++){let c=n[l];c==="EN"?n[l]=a==="AL"?"AN":"EN":(c==="R"||c==="L"||c==="AL")&&(a=c)}for(let l=0;l<t;l++)n[l]==="AL"&&(n[l]="R");for(let l=1;l<t-1;l++)n[l]==="ES"&&n[l-1]==="EN"&&n[l+1]==="EN"&&(n[l]="EN"),n[l]==="CS"&&(n[l-1]==="EN"||n[l-1]==="AN")&&n[l+1]===n[l-1]&&(n[l]=n[l-1]);for(let l=0;l<t;l++){if(n[l]!=="EN")continue;let c;for(c=l-1;c>=0&&n[c]==="ET";c--)n[c]="EN";for(c=l+1;c<t&&n[c]==="ET";c++)n[c]="EN"}for(let l=0;l<t;l++){let c=n[l];(c==="WS"||c==="ES"||c==="ET"||c==="CS")&&(n[l]="ON")}a=u;for(let l=0;l<t;l++){let c=n[l];c==="EN"?n[l]=a==="L"?"L":"EN":(c==="R"||c==="L")&&(a=c)}for(let l=0;l<t;l++){if(n[l]!=="ON")continue;let c=l+1;for(;c<t&&n[c]==="ON";)c++;let p=l>0?n[l-1]:u,f=c<t?n[c]:u,x=p!=="L"?"R":"L";if(x===(f!=="L"?"R":"L"))for(let b=l;b<c;b++)n[b]=x;l=c-1}for(let l=0;l<t;l++)n[l]==="ON"&&(n[l]=s);for(let l=0;l<t;l++){let c=n[l];(o[l]&1)===0?c==="R"?o[l]++:(c==="AN"||c==="EN")&&(o[l]+=2):(c==="L"||c==="AN"||c==="EN")&&o[l]++}return o}function xa(e,t){let n=jd(e);if(n===null)return null;let i=new Int8Array(t.length);for(let r=0;r<t.length;r++)i[r]=n[t[r]];return i}var $d=/[ \\t\\n\\r\\f]+/g,Kd=/[\\t\\n\\r\\f]| {2,}|^ | $/;function Jd(e){let t=e??"normal";return t==="pre-wrap"?{mode:t,preserveOrdinarySpaces:!0,preserveHardBreaks:!0}:{mode:t,preserveOrdinarySpaces:!1,preserveHardBreaks:!1}}function Xd(e){if(!Kd.test(e))return e;let t=e.replace($d," ");return t.charCodeAt(0)===32&&(t=t.slice(1)),t.length>0&&t.charCodeAt(t.length-1)===32&&(t=t.slice(0,-1)),t}function Yd(e){return/[\\r\\f]/.test(e)?e.replace(/\\r\\n/g,`\n`).replace(/[\\r\\f]/g,`\n`):e.replace(/\\r\\n/g,`\n`)}var sr=null,Qd;function Zd(){return sr===null&&(sr=new Intl.Segmenter(Qd,{granularity:"word"})),sr}var ef=/\\p{Script=Arabic}/u,In=/\\p{M}/u,Ca=/\\p{Nd}/u;function ba(e){return ef.test(e)}function ya(e){return e>=19968&&e<=40959||e>=13312&&e<=19903||e>=131072&&e<=173791||e>=173824&&e<=177983||e>=177984&&e<=178207||e>=178208&&e<=183983||e>=183984&&e<=191471||e>=191472&&e<=192093||e>=194560&&e<=195103||e>=196608&&e<=201551||e>=201552&&e<=205743||e>=205744&&e<=210041||e>=63744&&e<=64255||e>=12288&&e<=12351||e>=12352&&e<=12447||e>=12448&&e<=12543||e>=44032&&e<=55215||e>=65280&&e<=65519}function Ie(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(!(n<12288)){if(n>=55296&&n<=56319&&t+1<e.length){let i=e.charCodeAt(t+1);if(i>=56320&&i<=57343){let r=(n-55296<<10)+(i-56320)+65536;if(ya(r))return!0;t++;continue}}if(ya(n))return!0}}return!1}function tf(e){let t=Bn(e);return t!==null&&(On.has(t)||Ze.has(t))}var nf=new Set(["\\xA0","\\u202F","\\u2060","\\uFEFF"]);function rf(e){return Ie(e)}function of(e){let t=Bn(e);return t!==null&&nf.has(t)}function Pn(e){return!tf(e)&&!of(e)}var On=new Set(["\\uFF0C","\\uFF0E","\\uFF01","\\uFF1A","\\uFF1B","\\uFF1F","\\u3001","\\u3002","\\u30FB","\\uFF09","\\u3015","\\u3009","\\u300B","\\u300D","\\u300F","\\u3011","\\u3017","\\u3019","\\u301B","\\u30FC","\\u3005","\\u303B","\\u309D","\\u309E","\\u30FD","\\u30FE"]),rn=new Set([\'"\',"(","[","{","\\u201C","\\u2018","\\xAB","\\u2039","\\uFF08","\\u3014","\\u3008","\\u300A","\\u300C","\\u300E","\\u3010","\\u3016","\\u3018","\\u301A"]),lr=new Set(["\'","\\u2019"]),Ze=new Set([".",",","!","?",":",";","\\u060C","\\u061B","\\u061F","\\u0964","\\u0965","\\u104A","\\u104B","\\u104C","\\u104D","\\u104F",")","]","}","%",\'"\',"\\u201D","\\u2019","\\xBB","\\u203A","\\u2026"]),sf=new Set([":",".","\\u060C","\\u061B"]),af=new Set(["\\u104F"]),lf=new Set(["\\u201D","\\u2019","\\xBB","\\u203A","\\u300D","\\u300F","\\u3011","\\u300B","\\u3009","\\u3015","\\uFF09"]);function uf(e){if(ur(e))return!0;let t=!1;for(let n of e){if(Ze.has(n)){t=!0;continue}if(!(t&&In.test(n)))return!1}return t}function cf(e){for(let t of e)if(!On.has(t)&&!Ze.has(t))return!1;return e.length>0}function df(e){if(ur(e))return!0;for(let t of e)if(!rn.has(t)&&!lr.has(t)&&!In.test(t))return!1;return e.length>0}function ur(e){let t=!1;for(let n of e)if(!(n==="\\\\"||In.test(n))){if(rn.has(n)||Ze.has(n)||lr.has(n)){t=!0;continue}return!1}return t}function _a(e,t){let n=t-1;if(n<=0)return Math.max(n,0);let i=e.charCodeAt(n);if(i<56320||i>57343)return n;let r=n-1;if(r<0)return n;let o=e.charCodeAt(r);return o>=55296&&o<=56319?r:n}function Bn(e){if(e.length===0)return null;let t=_a(e,e.length);return e.slice(t)}function ff(e){let t=Array.from(e),n=t.length;for(;n>0;){let i=t[n-1];if(In.test(i)){n--;continue}if(rn.has(i)||lr.has(i)){n--;continue}break}return n<=0||n===t.length?null:{head:t.slice(0,n).join(""),tail:t.slice(n).join("")}}function mf(e,t,n){return n==="text"&&!t&&e.length===1&&e!=="-"&&e!=="\\u2014"?e:null}function Sa(e,t,n,i){let r=t[i],o=e[i];if(r==null)return o;let s=n[i];if(o.length===s)return o;let u=r.repeat(s);return e[i]=u,u}function Ea(e,t){return e&&t!==null&&sf.has(t)}function pf(e){let t=Bn(e);return t!==null&&af.has(t)}function hf(e){if(e.length<2||e[0]!==" ")return null;let t=e.slice(1);return/^\\p{M}+$/u.test(t)?{space:" ",marks:t}:null}function Hn(e){let t=e.length;for(;t>0;){let n=_a(e,t),i=e.slice(n,t);if(lf.has(i))return!0;if(!Ze.has(i))return!1;t=n}return!1}function gf(e,t){if(t.preserveOrdinarySpaces||t.preserveHardBreaks){if(e===" ")return"preserved-space";if(e===" ")return"tab";if(t.preserveHardBreaks&&e===`\n`)return"hard-break"}return e===" "?"space":e==="\\xA0"||e==="\\u202F"||e==="\\u2060"||e==="\\uFEFF"?"glue":e==="\\u200B"?"zero-width-break":e==="\\xAD"?"soft-hyphen":"text"}var xf=/[\\x20\\t\\n\\xA0\\xAD\\u200B\\u202F\\u2060\\uFEFF]/;function Ne(e){return e.length===1?e[0]:e.join("")}function bf(e,t){let n=[];for(let i=e.length-1;i>=0;i--)n.push(e[i]);return n.push(t),Ne(n)}function yf(e,t,n,i){if(!xf.test(e))return[{text:e,isWordLike:t,kind:"text",start:n}];let r=[],o=null,s=[],u=n,a=!1,l=0;for(let c of e){let p=gf(c,i),f=p==="text"&&t;if(o!==null&&p===o&&f===a){s.push(c),l+=c.length;continue}o!==null&&r.push({text:Ne(s),isWordLike:a,kind:o,start:u}),o=p,s=[c],u=n+l,a=f,l+=c.length}return o!==null&&r.push({text:Ne(s),isWordLike:a,kind:o,start:u}),r}function ar(e){return e==="space"||e==="preserved-space"||e==="zero-width-break"||e==="hard-break"}var Sf=/^[A-Za-z][A-Za-z0-9+.-]*:$/;function Ef(e,t){let n=e.texts[t];return n.startsWith("www.")?!0:Sf.test(n)&&t+1<e.len&&e.kinds[t+1]==="text"&&e.texts[t+1]==="//"}function Af(e){return e.includes("?")&&(e.includes("://")||e.startsWith("www."))}function wf(e){let t=e.texts.slice(),n=e.isWordLike.slice(),i=e.kinds.slice(),r=e.starts.slice();for(let s=0;s<e.len;s++){if(i[s]!=="text"||!Ef(e,s))continue;let u=[t[s]],a=s+1;for(;a<e.len&&!ar(i[a]);){u.push(t[a]),n[s]=!0;let l=t[a].includes("?");if(i[a]="text",t[a]="",a++,l)break}t[s]=Ne(u)}let o=0;for(let s=0;s<t.length;s++){let u=t[s];u.length!==0&&(o!==s&&(t[o]=u,n[o]=n[s],i[o]=i[s],r[o]=r[s]),o++)}return t.length=o,n.length=o,i.length=o,r.length=o,{len:o,texts:t,isWordLike:n,kinds:i,starts:r}}function Ff(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o];if(t.push(s),n.push(e.isWordLike[o]),i.push(e.kinds[o]),r.push(e.starts[o]),!Af(s))continue;let u=o+1;if(u>=e.len||ar(e.kinds[u]))continue;let a=[],l=e.starts[u],c=u;for(;c<e.len&&!ar(e.kinds[c]);)a.push(e.texts[c]),c++;a.length>0&&(t.push(Ne(a)),n.push(!0),i.push("text"),r.push(l),o=c-1)}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}var Cf=new Set([":","-","/","\\xD7",",",".","+","\\u2013","\\u2014"]),Aa=/^[A-Za-z0-9_]+[,:;]*$/,wa=/[,:;]+$/;function Ma(e){for(let t of e)if(Ca.test(t))return!0;return!1}function nn(e){if(e.length===0)return!1;for(let t of e)if(!(Ca.test(t)||Cf.has(t)))return!1;return!0}function _f(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o],u=e.kinds[o];if(u==="text"&&nn(s)&&Ma(s)){let a=[s],l=o+1;for(;l<e.len&&e.kinds[l]==="text"&&nn(e.texts[l]);)a.push(e.texts[l]),l++;t.push(Ne(a)),n.push(!0),i.push("text"),r.push(e.starts[o]),o=l-1;continue}t.push(s),n.push(e.isWordLike[o]),i.push(u),r.push(e.starts[o])}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function Mf(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o],u=e.kinds[o],a=e.isWordLike[o];if(u==="text"&&a&&Aa.test(s)){let l=[s],c=wa.test(s),p=o+1;for(;c&&p<e.len&&e.kinds[p]==="text"&&e.isWordLike[p]&&Aa.test(e.texts[p]);){let f=e.texts[p];l.push(f),c=wa.test(f),p++}t.push(Ne(l)),n.push(!0),i.push("text"),r.push(e.starts[o]),o=p-1;continue}t.push(s),n.push(a),i.push(u),r.push(e.starts[o])}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function vf(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o];if(e.kinds[o]==="text"&&s.includes("-")){let u=s.split("-"),a=u.length>1;for(let l=0;l<u.length;l++){let c=u[l];if(!a)break;(c.length===0||!Ma(c)||!nn(c))&&(a=!1)}if(a){let l=0;for(let c=0;c<u.length;c++){let p=u[c],f=c<u.length-1?`${p}-`:p;t.push(f),n.push(!0),i.push("text"),r.push(e.starts[o]+l),l+=f.length}continue}}t.push(s),n.push(e.isWordLike[o]),i.push(e.kinds[o]),r.push(e.starts[o])}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function Tf(e){let t=[],n=[],i=[],r=[],o=0;for(;o<e.len;){let s=[e.texts[o]],u=e.isWordLike[o],a=e.kinds[o],l=e.starts[o];if(a==="glue"){let c=[s[0]],p=l;for(o++;o<e.len&&e.kinds[o]==="glue";)c.push(e.texts[o]),o++;let f=Ne(c);if(o<e.len&&e.kinds[o]==="text")s[0]=f,s.push(e.texts[o]),u=e.isWordLike[o],a="text",l=p,o++;else{t.push(f),n.push(!1),i.push("glue"),r.push(p);continue}}else o++;if(a==="text")for(;o<e.len&&e.kinds[o]==="glue";){let c=[];for(;o<e.len&&e.kinds[o]==="glue";)c.push(e.texts[o]),o++;let p=Ne(c);if(o<e.len&&e.kinds[o]==="text"){s.push(p,e.texts[o]),u=u||e.isWordLike[o],o++;continue}s.push(p)}t.push(Ne(s)),n.push(u),i.push(a),r.push(l)}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function Nf(e){let t=e.texts.slice(),n=e.isWordLike.slice(),i=e.kinds.slice(),r=e.starts.slice();for(let o=0;o<t.length-1;o++){if(i[o]!=="text"||i[o+1]!=="text"||!Ie(t[o])||!Ie(t[o+1]))continue;let s=ff(t[o]);s!==null&&(t[o]=s.head,t[o+1]=s.tail+t[o+1],r[o+1]=r[o]+s.head.length)}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function Fa(e,t,n){let i=Zd(),r=0,o=[],s=[],u=[],a=[],l=[],c=[],p=[],f=[],x=[],E=[],b=[],g=[];for(let v of i.segment(e))for(let S of yf(v.segment,v.isWordLike??!1,v.index,n)){let se=function(){c[P]!==null&&(s[P]=[Sa(o,c,p,P)],c[P]=null),s[P].push(S.text),u[P]=u[P]||S.isWordLike,f[P]=f[P]||T,x[P]=x[P]||R,E[P]=q,b[P]=ie,g[P]=Ea(x[P],W)},C=S.kind==="text",M=mf(S.text,S.isWordLike,S.kind),T=Ie(S.text),R=ba(S.text),W=Bn(S.text),q=Hn(S.text),ie=pf(S.text),P=r-1;t.carryCJKAfterClosingQuote&&C&&r>0&&a[P]==="text"&&T&&f[P]&&E[P]||C&&r>0&&a[P]==="text"&&cf(S.text)&&f[P]||C&&r>0&&a[P]==="text"&&b[P]?se():C&&r>0&&a[P]==="text"&&S.isWordLike&&R&&g[P]?(se(),u[P]=!0):M!==null&&r>0&&a[P]==="text"&&c[P]===M?p[P]=(p[P]??1)+1:C&&!S.isWordLike&&r>0&&a[P]==="text"&&(uf(S.text)||S.text==="-"&&u[P])?se():(o[r]=S.text,s[r]=[S.text],u[r]=S.isWordLike,a[r]=S.kind,l[r]=S.start,c[r]=M,p[r]=M===null?0:1,f[r]=T,x[r]=R,E[r]=q,b[r]=ie,g[r]=Ea(R,W),r++)}for(let v=0;v<r;v++){if(c[v]!==null){o[v]=Sa(o,c,p,v);continue}o[v]=Ne(s[v])}for(let v=1;v<r;v++)a[v]==="text"&&!u[v]&&ur(o[v])&&a[v-1]==="text"&&(o[v-1]+=o[v],u[v-1]=u[v-1]||u[v],o[v]="");let A=Array.from({length:r},()=>null),_=-1;for(let v=r-1;v>=0;v--){let S=o[v];if(S.length!==0){if(a[v]==="text"&&!u[v]&&df(S)&&_>=0&&a[_]==="text"){let C=A[_]??[];C.push(S),A[_]=C,l[_]=l[v],o[v]="";continue}_=v}}for(let v=0;v<r;v++){let S=A[v];S!=null&&(o[v]=bf(S,o[v]))}let N=0;for(let v=0;v<r;v++){let S=o[v];S.length!==0&&(N!==v&&(o[N]=S,u[N]=u[v],a[N]=a[v],l[N]=l[v]),N++)}o.length=N,u.length=N,a.length=N,l.length=N;let $=Tf({len:N,texts:o,isWordLike:u,kinds:a,starts:l}),B=Nf(Mf(vf(_f(Ff(wf($))))));for(let v=0;v<B.len-1;v++){let S=hf(B.texts[v]);S!==null&&(B.kinds[v]!=="space"&&B.kinds[v]!=="preserved-space"||B.kinds[v+1]!=="text"||!ba(B.texts[v+1])||(B.texts[v]=S.space,B.isWordLike[v]=!1,B.kinds[v]=B.kinds[v]==="preserved-space"?"preserved-space":"space",B.texts[v+1]=S.marks+B.texts[v+1],B.starts[v+1]=B.starts[v]+S.space.length))}return B}function Lf(e,t){if(e.len===0)return[];if(!t.preserveHardBreaks)return[{startSegmentIndex:0,endSegmentIndex:e.len,consumedEndSegmentIndex:e.len}];let n=[],i=0;for(let r=0;r<e.len;r++)e.kinds[r]==="hard-break"&&(n.push({startSegmentIndex:i,endSegmentIndex:r,consumedEndSegmentIndex:r+1}),i=r+1);return i<e.len&&n.push({startSegmentIndex:i,endSegmentIndex:e.len,consumedEndSegmentIndex:e.len}),n}function Rf(e){if(e.len<=1)return e;let t=[],n=[],i=[],r=[],o=null,s=!1,u=0,a=!1,l=!1;function c(){o!==null&&(t.push(Ne(o)),n.push(s),i.push("text"),r.push(u),o=null)}for(let p=0;p<e.len;p++){let f=e.texts[p],x=e.kinds[p],E=e.isWordLike[p],b=e.starts[p];if(x==="text"){let g=rf(f),A=Pn(f);if(o!==null&&a&&l){o.push(f),s=s||E,a=a||g,l=A;continue}c(),o=[f],s=E,u=b,a=g,l=A;continue}c(),t.push(f),n.push(E),i.push(x),r.push(b)}return c(),{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function va(e,t,n="normal",i="normal"){let r=Jd(n),o=r.mode==="pre-wrap"?Yd(e):Xd(e);if(o.length===0)return{normalized:o,chunks:[],len:0,texts:[],isWordLike:[],kinds:[],starts:[]};let s=i==="keep-all"?Rf(Fa(o,t,r)):Fa(o,t,r);return{normalized:o,chunks:Lf(s,r),...s}}var yt=null,Ta=new Map,St=null,kf=96,Df=/\\p{Emoji_Presentation}/u,If=/[\\p{Emoji_Presentation}\\p{Extended_Pictographic}\\p{Regional_Indicator}\\uFE0F\\u20E3]/u,cr=null,Na=new Map;function dr(){if(yt!==null)return yt;if(typeof OffscreenCanvas<"u")return yt=new OffscreenCanvas(1,1).getContext("2d"),yt;if(typeof document<"u")return yt=document.createElement("canvas").getContext("2d"),yt;throw new Error("Text measurement requires OffscreenCanvas or a DOM canvas context.")}function Pf(e){let t=Ta.get(e);return t||(t=new Map,Ta.set(e,t)),t}function je(e,t){let n=t.get(e);return n===void 0&&(n={width:dr().measureText(e).width,containsCJK:Ie(e)},t.set(e,n)),n}function Et(){if(St!==null)return St;if(typeof navigator>"u")return St={lineFitEpsilon:.005,carryCJKAfterClosingQuote:!1,preferPrefixWidthsForBreakableRuns:!1,preferEarlySoftHyphenBreak:!1},St;let e=navigator.userAgent,n=navigator.vendor==="Apple Computer, Inc."&&e.includes("Safari/")&&!e.includes("Chrome/")&&!e.includes("Chromium/")&&!e.includes("CriOS/")&&!e.includes("FxiOS/")&&!e.includes("EdgiOS/"),i=e.includes("Chrome/")||e.includes("Chromium/")||e.includes("CriOS/")||e.includes("Edg/");return St={lineFitEpsilon:n?1/64:.005,carryCJKAfterClosingQuote:i,preferPrefixWidthsForBreakableRuns:n,preferEarlySoftHyphenBreak:n},St}function Of(e){let t=e.match(/(\\d+(?:\\.\\d+)?)\\s*px/);return t?parseFloat(t[1]):16}function La(){return cr===null&&(cr=new Intl.Segmenter(void 0,{granularity:"grapheme"})),cr}function Bf(e){return Df.test(e)||e.includes("\\uFE0F")}function Ra(e){return If.test(e)}function Hf(e,t){let n=Na.get(e);if(n!==void 0)return n;let i=dr();i.font=e;let r=i.measureText("\\u{1F600}").width;if(n=0,r>t+.5&&typeof document<"u"&&document.body!==null){let o=document.createElement("span");o.style.font=e,o.style.display="inline-block",o.style.visibility="hidden",o.style.position="absolute",o.textContent="\\u{1F600}",document.body.appendChild(o);let s=o.getBoundingClientRect().width;document.body.removeChild(o),r-s>.5&&(n=r-s)}return Na.set(e,n),n}function Gf(e){let t=0,n=La();for(let i of n.segment(e))Bf(i.segment)&&t++;return t}function Wf(e,t){return t.emojiCount===void 0&&(t.emojiCount=Gf(e)),t.emojiCount}function et(e,t,n){return n===0?t.width:t.width-Wf(e,t)*n}function ka(e,t,n,i,r){if(t.breakableFitAdvances!==void 0)return t.breakableFitAdvances;let o=La(),s=[];for(let c of o.segment(e))s.push(c.segment);if(s.length<=1)return t.breakableFitAdvances=null,t.breakableFitAdvances;if(r==="sum-graphemes"){let c=[];for(let p of s){let f=je(p,n);c.push(et(p,f,i))}return t.breakableFitAdvances=c,t.breakableFitAdvances}if(r==="pair-context"||s.length>kf){let c=[],p=null,f=0;for(let x of s){let E=je(x,n),b=et(x,E,i);if(p===null)c.push(b);else{let g=p+x,A=je(g,n);c.push(et(g,A,i)-f)}p=x,f=b}return t.breakableFitAdvances=c,t.breakableFitAdvances}let u=[],a="",l=0;for(let c of s){a+=c;let p=je(a,n),f=et(a,p,i);u.push(f-l),l=f}return t.breakableFitAdvances=u,t.breakableFitAdvances}function Da(e,t){let n=dr();n.font=e;let i=Pf(e),r=Of(e),o=t?Hf(e,r):0;return{cache:i,fontSize:r,emojiCorrection:o}}function Uf(e,t){for(;t<e.widths.length;){let n=e.kinds[t];if(n!=="space"&&n!=="zero-width-break"&&n!=="soft-hyphen")break;t++}return t}function Vf(e,t){if(t<=0)return 0;let n=e%t;return Math.abs(n)<=1e-6?t:t-n}function zf(e,t,n,i,r){let o=0,s=t;for(;o<e.length;){let u=s+e[o];if((o+1<e.length?u+r:u)>n+i)break;s=u,o++}return{fitCount:o,fittedWidth:s}}function Ia(e,t){return e.simpleLineWalkFastPath?Pa(e,t):Oa(e,t)}function Pa(e,t,n){let{widths:i,kinds:r,breakableFitAdvances:o}=e;if(i.length===0)return 0;let u=Et().lineFitEpsilon,a=t+u,l=0,c=0,p=!1,f=0,x=0,E=0,b=0,g=-1,A=0;function _(){g=-1,A=0}function N(M=E,T=b,R=c){l++,n?.({startSegmentIndex:f,startGraphemeIndex:x,endSegmentIndex:M,endGraphemeIndex:T,width:R}),c=0,p=!1,_()}function $(M,T){p=!0,f=M,x=0,E=M+1,b=0,c=T}function B(M,T,R){p=!0,f=M,x=T,E=M,b=T+1,c=R}function v(M,T){if(!p){$(M,T);return}c+=T,E=M+1,b=0}function S(M,T){let R=o[M];for(let W=T;W<R.length;W++){let q=R[W];p?c+q>a?(N(),B(M,W,q)):(c+=q,E=M,b=W+1):B(M,W,q)}p&&E===M&&b===R.length&&(E=M+1,b=0)}let C=0;for(;C<i.length&&!(!p&&(C=Uf(e,C),C>=i.length));){let M=i[C],T=r[C],R=T==="space"||T==="preserved-space"||T==="tab"||T==="zero-width-break"||T==="soft-hyphen";if(!p){M>t&&o[C]!==null?S(C,0):$(C,M),R&&(g=C+1,A=c-M),C++;continue}if(c+M>a){if(R){v(C,M),N(C+1,0,c-M),C++;continue}if(g>=0){if(E>g||E===g&&b>0){N();continue}N(g,0,A);continue}if(M>t&&o[C]!==null){N(),S(C,0),C++;continue}N();continue}v(C,M),R&&(g=C+1,A=c-M),C++}return p&&N(),l}function Oa(e,t,n){if(e.simpleLineWalkFastPath)return Pa(e,t,n);let{widths:i,lineEndFitAdvances:r,lineEndPaintAdvances:o,kinds:s,breakableFitAdvances:u,discretionaryHyphenWidth:a,tabStopAdvance:l,chunks:c}=e;if(i.length===0||c.length===0)return 0;let p=Et(),f=p.lineFitEpsilon,x=t+f,E=0,b=0,g=!1,A=0,_=0,N=0,$=0,B=-1,v=0,S=0,C=null;function M(){B=-1,v=0,S=0,C=null}function T(H=N,U=$,V=b){E++,n?.({startSegmentIndex:A,startGraphemeIndex:_,endSegmentIndex:H,endGraphemeIndex:U,width:V}),b=0,g=!1,M()}function R(H,U){g=!0,A=H,_=0,N=H+1,$=0,b=U}function W(H,U,V){g=!0,A=H,_=U,N=H,$=U+1,b=V}function q(H,U){if(!g){R(H,U);return}b+=U,N=H+1,$=0}function ie(H,U,V,re){if(!U)return;let _e=H==="tab"?0:r[V],O=H==="tab"?re:o[V];B=V+1,v=b-re+_e,S=b-re+O,C=H}function P(H,U){let V=u[H];for(let re=U;re<V.length;re++){let _e=V[re];g?b+_e>x?(T(),W(H,re,_e)):(b+=_e,N=H,$=re+1):W(H,re,_e)}g&&N===H&&$===V.length&&(N=H+1,$=0)}function se(H){if(C!=="soft-hyphen")return!1;let U=u[H];if(U==null)return!1;let{fitCount:V,fittedWidth:re}=zf(U,b,t,f,a);return V===0?!1:(b=re,N=H,$=V,M(),V===U.length?(N=H+1,$=0,!0):(T(H,V,re+a),P(H,V),!0))}function Ee(H){E++,n?.({startSegmentIndex:H.startSegmentIndex,startGraphemeIndex:0,endSegmentIndex:H.consumedEndSegmentIndex,endGraphemeIndex:0,width:0}),M()}for(let H=0;H<c.length;H++){let U=c[H];if(U.startSegmentIndex===U.endSegmentIndex){Ee(U);continue}g=!1,b=0,A=U.startSegmentIndex,_=0,N=U.startSegmentIndex,$=0,M();let V=U.startSegmentIndex;for(;V<U.endSegmentIndex;){let re=s[V],_e=re==="space"||re==="preserved-space"||re==="tab"||re==="zero-width-break"||re==="soft-hyphen",O=re==="tab"?Vf(b,l):i[V];if(re==="soft-hyphen"){g&&(N=V+1,$=0,B=V+1,v=b+a,S=b+a,C=re),V++;continue}if(!g){O>t&&u[V]!==null?P(V,0):R(V,O),ie(re,_e,V,O),V++;continue}if(b+O>x){let G=b+(re==="tab"?0:r[V]),Q=b+(re==="tab"?O:o[V]);if(C==="soft-hyphen"&&p.preferEarlySoftHyphenBreak&&v<=x){T(B,0,S);continue}if(C==="soft-hyphen"&&se(V)){V++;continue}if(_e&&G<=x){q(V,O),T(V+1,0,Q),V++;continue}if(B>=0&&v<=x){if(N>B||N===B&&$>0){T();continue}let ae=B;T(ae,0,S),V=ae;continue}if(O>t&&u[V]!==null){T(),P(V,0),V++;continue}T();continue}q(V,O),ie(re,_e,V,O),V++}if(g){let re=B===U.consumedEndSegmentIndex?S:b;T(U.consumedEndSegmentIndex,0,re)}}return E}var fr=null;function qf(){return fr===null&&(fr=new Intl.Segmenter(void 0,{granularity:"grapheme"})),fr}function jf(e){return e?{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[],segments:[]}:{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[]}}function $f(e,t){let n=[],i=[],r=0,o=!1,s=!1,u=!1;function a(){i.length!==0&&(n.push({text:i.length===1?i[0]:i.join(""),start:r}),i=[],o=!1,s=!1,u=!1)}function l(p,f,x){i=[p],r=f,o=x,s=Hn(p),u=rn.has(p)}function c(p,f){i.push(p),o=o||f;let x=Hn(p);p.length===1&&Ze.has(p)?s=s||x:s=x,u=!1}for(let p of qf().segment(e)){let f=p.segment,x=Ie(f);if(i.length===0){l(f,p.index,x);continue}if(u||On.has(f)||Ze.has(f)||t.carryCJKAfterClosingQuote&&x&&s){c(f,x);continue}if(!o&&!x){c(f,x);continue}a(),l(f,p.index,x)}return a(),n}function Kf(e){if(e.length<=1)return e;let t=[],n=[e[0].text],i=e[0].start,r=Ie(e[0].text),o=Pn(e[0].text);function s(){t.push({text:n.length===1?n[0]:n.join(""),start:i})}for(let u=1;u<e.length;u++){let a=e[u],l=Ie(a.text),c=Pn(a.text);if(r&&o){n.push(a.text),r=r||l,o=c;continue}s(),n=[a.text],i=a.start,r=l,o=c}return s(),t}function Jf(e,t,n,i){let r=Et(),{cache:o,emojiCorrection:s}=Da(t,Ra(e.normalized)),u=et("-",je("-",o),s),l=et(" ",je(" ",o),s)*8;if(e.len===0)return jf(n);let c=[],p=[],f=[],x=[],E=e.chunks.length<=1,b=n?[]:null,g=[],A=n?[]:null,_=Array.from({length:e.len});function N(S,C,M,T,R,W,q){R!=="text"&&R!=="space"&&R!=="zero-width-break"&&(E=!1),c.push(C),p.push(M),f.push(T),x.push(R),b?.push(W),g.push(q),A!==null&&A.push(S)}function $(S,C,M,T,R){let W=je(S,o),q=et(S,W,s),ie=C==="space"||C==="preserved-space"||C==="zero-width-break"?0:q,P=C==="space"||C==="zero-width-break"?0:q;if(R&&T&&S.length>1){let se="sum-graphemes";nn(S)?se="pair-context":r.preferPrefixWidthsForBreakableRuns&&(se="segment-prefixes");let Ee=ka(S,W,o,s,se);N(S,q,ie,P,C,M,Ee);return}N(S,q,ie,P,C,M,null)}for(let S=0;S<e.len;S++){_[S]=c.length;let C=e.texts[S],M=e.isWordLike[S],T=e.kinds[S],R=e.starts[S];if(T==="soft-hyphen"){N(C,0,u,u,T,R,null);continue}if(T==="hard-break"){N(C,0,0,0,T,R,null);continue}if(T==="tab"){N(C,0,0,0,T,R,null);continue}let W=je(C,o);if(T==="text"&&W.containsCJK){let q=$f(C,r),ie=i==="keep-all"?Kf(q):q;for(let P=0;P<ie.length;P++){let se=ie[P];$(se.text,"text",R+se.start,M,i==="keep-all"||!Ie(se.text))}continue}$(C,T,R,M,!0)}let B=Xf(e.chunks,_,c.length),v=b===null?null:xa(e.normalized,b);return A!==null?{widths:c,lineEndFitAdvances:p,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:E,segLevels:v,breakableFitAdvances:g,discretionaryHyphenWidth:u,tabStopAdvance:l,chunks:B,segments:A}:{widths:c,lineEndFitAdvances:p,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:E,segLevels:v,breakableFitAdvances:g,discretionaryHyphenWidth:u,tabStopAdvance:l,chunks:B}}function Xf(e,t,n){let i=[];for(let r=0;r<e.length;r++){let o=e[r],s=o.startSegmentIndex<t.length?t[o.startSegmentIndex]:n,u=o.endSegmentIndex<t.length?t[o.endSegmentIndex]:n,a=o.consumedEndSegmentIndex<t.length?t[o.consumedEndSegmentIndex]:n;i.push({startSegmentIndex:s,endSegmentIndex:u,consumedEndSegmentIndex:a})}return i}function Yf(e,t,n,i){let r=i?.wordBreak??"normal",o=va(e,Et(),i?.whiteSpace,r);return Jf(o,t,n,r)}function Ba(e,t,n){return Yf(e,t,!1,n)}function Ha(e,t,n){let i=Ia(e,t);return{lineCount:i,height:i*n}}var Qf={maxWidth:1600,baseFontSize:78,minFontSize:42,fontWeight:900,fontFamily:"Outfit",step:2};function Ga(e,t){let n={...Qf,...t},i=1.2;for(let r=n.baseFontSize;r>=n.minFontSize;r-=n.step){let o=`${n.fontWeight} ${r}px ${n.fontFamily}`,s=Ba(e,o),{lineCount:u}=Ha(s,n.maxWidth,r*i);if(u<=1)return{fontSize:r,fits:!0}}return{fontSize:n.minFontSize,fits:!1}}window.__timelines=window.__timelines||{};window.__hyperframes={fitTextFontSize:Ga,getVariables:Ns};function Wa(){let e=window;e.__hyperframeRuntimeBootstrapped||(e.__hyperframeRuntimeBootstrapped=!0,ha())}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Wa,{once:!0}):Wa();})();\n';
56112
56112
  }
56113
56113
  });
56114
56114
 
@@ -61191,6 +61191,18 @@ async function injectDrawElementCanvas(page, width, height) {
61191
61191
  tick.id = "__hf_de_tick";
61192
61192
  tick.style.cssText = "position:absolute;left:0px;top:0;width:1px;height:1px;background:#000;opacity:0.01;pointer-events:none";
61193
61193
  canvas.appendChild(tick);
61194
+ window.__hfDeInvalidate = () => {
61195
+ tick.style.backgroundColor = tick.style.backgroundColor === "rgb(0, 0, 0)" ? "rgb(1, 1, 1)" : "rgb(0, 0, 0)";
61196
+ const cvp = canvas;
61197
+ if (typeof cvp.requestPaint === "function") {
61198
+ try {
61199
+ cvp.requestPaint();
61200
+ return true;
61201
+ } catch {
61202
+ }
61203
+ }
61204
+ return false;
61205
+ };
61194
61206
  },
61195
61207
  { w: width, h: height }
61196
61208
  );
@@ -61210,6 +61222,7 @@ async function captureDrawElementFrame(page, width, height, format = "jpeg", qua
61210
61222
  const ctx = canvas.getContext("2d");
61211
61223
  if (!ctx) throw new Error("drawElement: 2d context unavailable");
61212
61224
  const aw = window;
61225
+ let usedRequestPaint = false;
61213
61226
  aw.__hf3d?.update();
61214
61227
  const accel = (aw.__hf_accel_canvases ?? []).filter((c3) => root.contains(c3));
61215
61228
  if (!sync) {
@@ -61252,19 +61265,20 @@ async function captureDrawElementFrame(page, width, height, format = "jpeg", qua
61252
61265
  } catch {
61253
61266
  }
61254
61267
  }
61255
- const __rw = window;
61256
- let __appliedAlpha = false;
61257
61268
  let __appliedTransform = false;
61258
- if (__rw.__HF_ROOT_PROPS__) {
61269
+ let __appliedAlpha = false;
61270
+ if (aw.__HF_ROOT_PROPS__) {
61259
61271
  try {
61260
61272
  const rcs = getComputedStyle(root);
61261
- const baseOp = __rw.__HF_ROOT_BASE_OPACITY__ ?? 1;
61262
- const curOp = parseFloat(rcs.opacity);
61263
- if (baseOp > 1e-3 && Number.isFinite(curOp)) {
61264
- const ratio = curOp / baseOp;
61265
- if (Math.abs(ratio - 1) > 2e-3) {
61266
- ctx.globalAlpha = Math.max(0, Math.min(1, ratio));
61267
- __appliedAlpha = true;
61273
+ if (!usedRequestPaint) {
61274
+ const baseOp = aw.__HF_ROOT_BASE_OPACITY__ ?? 1;
61275
+ const curOp = parseFloat(rcs.opacity);
61276
+ if (baseOp > 1e-3 && Number.isFinite(curOp)) {
61277
+ const ratio = curOp / baseOp;
61278
+ if (Math.abs(ratio - 1) > 2e-3) {
61279
+ ctx.globalAlpha = Math.max(0, Math.min(1, ratio));
61280
+ __appliedAlpha = true;
61281
+ }
61268
61282
  }
61269
61283
  }
61270
61284
  const curTransform = rcs.transform;
@@ -61315,10 +61329,7 @@ async function captureDrawElementFrame(page, width, height, format = "jpeg", qua
61315
61329
  drawAndEncode();
61316
61330
  };
61317
61331
  canvas.addEventListener("paint", onPaint);
61318
- const tick = document.getElementById("__hf_de_tick");
61319
- if (tick) {
61320
- tick.style.backgroundColor = tick.style.backgroundColor === "rgb(0, 0, 0)" ? "rgb(1, 1, 1)" : "rgb(0, 0, 0)";
61321
- }
61332
+ usedRequestPaint = aw.__hfDeInvalidate?.() === true;
61322
61333
  setTimeout(() => {
61323
61334
  canvas.removeEventListener("paint", onPaint);
61324
61335
  drawAndEncode();
@@ -61473,6 +61484,7 @@ async function produceDrawElementFrame(page, width, height, quality = 80, syncTo
61473
61484
  }
61474
61485
  return new Promise((resolveCapture, rejectCapture) => {
61475
61486
  let settled = false;
61487
+ let usedRequestPaint = false;
61476
61488
  const drawAndKick = () => {
61477
61489
  if (settled) return;
61478
61490
  settled = true;
@@ -61500,19 +61512,20 @@ async function produceDrawElementFrame(page, width, height, quality = 80, syncTo
61500
61512
  } catch {
61501
61513
  }
61502
61514
  }
61503
- const __rw = window;
61504
- let __appliedAlpha = false;
61505
61515
  let __appliedTransform = false;
61506
- if (__rw.__HF_ROOT_PROPS__) {
61516
+ let __appliedAlpha = false;
61517
+ if (aw.__HF_ROOT_PROPS__) {
61507
61518
  try {
61508
61519
  const rcs = getComputedStyle(root);
61509
- const baseOp = __rw.__HF_ROOT_BASE_OPACITY__ ?? 1;
61510
- const curOp = parseFloat(rcs.opacity);
61511
- if (baseOp > 1e-3 && Number.isFinite(curOp)) {
61512
- const ratio = curOp / baseOp;
61513
- if (Math.abs(ratio - 1) > 2e-3) {
61514
- ctx.globalAlpha = Math.max(0, Math.min(1, ratio));
61515
- __appliedAlpha = true;
61520
+ if (!usedRequestPaint) {
61521
+ const baseOp = aw.__HF_ROOT_BASE_OPACITY__ ?? 1;
61522
+ const curOp = parseFloat(rcs.opacity);
61523
+ if (baseOp > 1e-3 && Number.isFinite(curOp)) {
61524
+ const ratio = curOp / baseOp;
61525
+ if (Math.abs(ratio - 1) > 2e-3) {
61526
+ ctx.globalAlpha = Math.max(0, Math.min(1, ratio));
61527
+ __appliedAlpha = true;
61528
+ }
61516
61529
  }
61517
61530
  }
61518
61531
  const curTransform = rcs.transform;
@@ -61566,10 +61579,7 @@ async function produceDrawElementFrame(page, width, height, quality = 80, syncTo
61566
61579
  drawAndKick();
61567
61580
  };
61568
61581
  canvas.addEventListener("paint", onPaint);
61569
- const tick = document.getElementById("__hf_de_tick");
61570
- if (tick) {
61571
- tick.style.backgroundColor = tick.style.backgroundColor === "rgb(0, 0, 0)" ? "rgb(1, 1, 1)" : "rgb(0, 0, 0)";
61572
- }
61582
+ usedRequestPaint = aw.__hfDeInvalidate?.() === true;
61573
61583
  setTimeout(() => {
61574
61584
  canvas.removeEventListener("paint", onPaint);
61575
61585
  drawAndKick();
@@ -61626,6 +61636,7 @@ async function produceDrawElementFrameBatch(page, times, width, height, quality
61626
61636
  const ctx = canvas.getContext("2d");
61627
61637
  if (!ctx) return { failedAt: 0, error: "drawElement: 2d context unavailable" };
61628
61638
  const aw = window;
61639
+ let usedRequestPaint = false;
61629
61640
  const waitPaint = () => new Promise((res) => {
61630
61641
  let done = false;
61631
61642
  const settle = () => {
@@ -61635,10 +61646,7 @@ async function produceDrawElementFrameBatch(page, times, width, height, quality
61635
61646
  res();
61636
61647
  };
61637
61648
  canvas.addEventListener("paint", settle);
61638
- const tick = document.getElementById("__hf_de_tick");
61639
- if (tick) {
61640
- tick.style.backgroundColor = tick.style.backgroundColor === "rgb(0, 0, 0)" ? "rgb(1, 1, 1)" : "rgb(0, 0, 0)";
61641
- }
61649
+ usedRequestPaint = aw.__hfDeInvalidate?.() === true;
61642
61650
  setTimeout(settle, 250);
61643
61651
  });
61644
61652
  let prevBitmap = Promise.resolve();
@@ -61681,18 +61689,20 @@ async function produceDrawElementFrameBatch(page, times, width, height, quality
61681
61689
  } catch {
61682
61690
  }
61683
61691
  }
61684
- let appliedAlpha = false;
61685
61692
  let appliedTransform = false;
61693
+ let appliedAlpha = false;
61686
61694
  if (aw.__HF_ROOT_PROPS__) {
61687
61695
  try {
61688
61696
  const rcs = getComputedStyle(root);
61689
- const baseOp = aw.__HF_ROOT_BASE_OPACITY__ ?? 1;
61690
- const curOp = parseFloat(rcs.opacity);
61691
- if (baseOp > 1e-3 && Number.isFinite(curOp)) {
61692
- const ratio = curOp / baseOp;
61693
- if (Math.abs(ratio - 1) > 2e-3) {
61694
- ctx.globalAlpha = Math.max(0, Math.min(1, ratio));
61695
- appliedAlpha = true;
61697
+ if (!usedRequestPaint) {
61698
+ const baseOp = aw.__HF_ROOT_BASE_OPACITY__ ?? 1;
61699
+ const curOp = parseFloat(rcs.opacity);
61700
+ if (baseOp > 1e-3 && Number.isFinite(curOp)) {
61701
+ const ratio = curOp / baseOp;
61702
+ if (Math.abs(ratio - 1) > 2e-3) {
61703
+ ctx.globalAlpha = Math.max(0, Math.min(1, ratio));
61704
+ appliedAlpha = true;
61705
+ }
61696
61706
  }
61697
61707
  }
61698
61708
  const curTransform = rcs.transform;
@@ -62632,11 +62642,6 @@ async function initDrawElementOrTransparentBackground(session, page, logInitPhas
62632
62642
  "[engine] fast capture: falling back to screenshot \u2014 render-mode compatibility hint forced screenshot capture (e.g. raw requestAnimationFrame composition)."
62633
62643
  );
62634
62644
  }
62635
- async function retractAutoAlphaFlag() {
62636
- await page.evaluate(() => {
62637
- window.__HF_FAST_CAPTURE_AUTOALPHA__ = false;
62638
- });
62639
- }
62640
62645
  if (useDrawElement) {
62641
62646
  session.isSwiftShader = await detectSwiftShader(page);
62642
62647
  const transparent = session.options.format === "png";
@@ -62645,7 +62650,6 @@ async function initDrawElementOrTransparentBackground(session, page, logInitPhas
62645
62650
  if (transparent) {
62646
62651
  await initTransparentBackground(session.page);
62647
62652
  }
62648
- await retractAutoAlphaFlag();
62649
62653
  if (session.launchCaptureMode === "screenshot") {
62650
62654
  await armStaticDedup(session, page, logInitPhase);
62651
62655
  }
@@ -62701,37 +62705,59 @@ async function initDrawElementOrTransparentBackground(session, page, logInitPhas
62701
62705
  );
62702
62706
  }
62703
62707
  await armStaticDedup(session, page, logInitPhase);
62704
- {
62705
- const verifyStart = Date.now();
62706
- await captureDeVerificationFrames(session, page, logInitPhase);
62707
- session.deVerifyInitMs = Date.now() - verifyStart;
62708
- }
62709
- await injectDrawElementCanvas(page, session.options.width, session.options.height);
62710
- if (transparent) {
62711
- await initTransparentBackground(session.page);
62712
- }
62713
- session.captureMode = "drawelement";
62714
- session.drawElementReady = true;
62715
- logInitPhase("drawElement canvas injected");
62716
- if (process.env.HF_FAST_CAPTURE_BOUNDARY_SS !== "false" && !forceDE) {
62717
- const fps = fpsToNumber(session.options.fps);
62718
- const boundaryFrames = await computeClipBoundaryFrames(page, fps);
62719
- if (boundaryFrames.size > 0) {
62720
- session.clipBoundaryFrames = boundaryFrames;
62721
- logInitPhase(`screenshot fallback: ${boundaryFrames.size} clip-boundary frame(s)`);
62708
+ if (!session.onBeforeCapture && !forceDE) {
62709
+ const hasVideos = await page.evaluate(() => document.querySelector("video") !== null);
62710
+ if (hasVideos) {
62711
+ session.deInitDeferred = true;
62712
+ logInitPhase("drawElement init deferred: video comp awaiting frame injector");
62713
+ return;
62722
62714
  }
62723
62715
  }
62724
- const workerEncodeEnabled = (session.config?.enableDrawElementWorkerEncode ?? false) && !transparent && session.beginFrameTimeTicks === 0;
62725
- if (workerEncodeEnabled) {
62726
- await initDrawElementWorkerEncode(page);
62727
- session.workerEncodeEnabled = true;
62728
- logInitPhase("drawElement worker encode initialized");
62729
- }
62716
+ await finalizeDrawElementInit(session, page, logInitPhase, { transparent, forceDE });
62730
62717
  }
62731
62718
  } else if (session.options.format === "png") {
62732
62719
  await initTransparentBackground(session.page);
62733
62720
  }
62734
62721
  }
62722
+ async function finalizeDrawElementInit(session, page, logInitPhase, opts) {
62723
+ const { transparent, forceDE } = opts;
62724
+ {
62725
+ const verifyStart = Date.now();
62726
+ await captureDeVerificationFrames(session, page, logInitPhase);
62727
+ session.deVerifyInitMs = Date.now() - verifyStart;
62728
+ }
62729
+ await injectDrawElementCanvas(page, session.options.width, session.options.height);
62730
+ if (transparent) {
62731
+ await initTransparentBackground(session.page);
62732
+ }
62733
+ session.captureMode = "drawelement";
62734
+ session.drawElementReady = true;
62735
+ logInitPhase("drawElement canvas injected");
62736
+ if (process.env.HF_FAST_CAPTURE_BOUNDARY_SS !== "false" && !forceDE) {
62737
+ const fps = fpsToNumber(session.options.fps);
62738
+ const boundaryFrames = await computeClipBoundaryFrames(page, fps);
62739
+ if (boundaryFrames.size > 0) {
62740
+ session.clipBoundaryFrames = boundaryFrames;
62741
+ logInitPhase(`screenshot fallback: ${boundaryFrames.size} clip-boundary frame(s)`);
62742
+ }
62743
+ }
62744
+ const workerEncodeEnabled = (session.config?.enableDrawElementWorkerEncode ?? false) && !transparent && session.beginFrameTimeTicks === 0;
62745
+ if (workerEncodeEnabled) {
62746
+ await initDrawElementWorkerEncode(page);
62747
+ session.workerEncodeEnabled = true;
62748
+ logInitPhase("drawElement worker encode initialized");
62749
+ }
62750
+ }
62751
+ async function completeDeferredDrawElementInit(session) {
62752
+ if (!session.deInitDeferred || !session.onBeforeCapture) return;
62753
+ const page = session.page;
62754
+ const logInitPhase = (phase) => console.log(`[initSession:${session.captureMode}] ${phase} (deferred drawElement init)`);
62755
+ await finalizeDrawElementInit(session, page, logInitPhase, {
62756
+ transparent: session.options.format === "png",
62757
+ forceDE: process.env.HF_FORCE_DRAWELEMENT === "1"
62758
+ });
62759
+ session.deInitDeferred = false;
62760
+ }
62735
62761
  async function createCaptureSession(serverUrl, outputDir, options, onBeforeCapture = null, config) {
62736
62762
  if (!existsSync4(outputDir)) mkdirSync2(outputDir, { recursive: true });
62737
62763
  const headlessShell = resolveHeadlessShellPath(config);
@@ -62766,10 +62792,10 @@ async function createCaptureSession(serverUrl, outputDir, options, onBeforeCaptu
62766
62792
  if (useDrawElement) {
62767
62793
  await page.evaluateOnNewDocument(instrumentAcceleratedCanvases);
62768
62794
  }
62769
- if (useDrawElement && process.env.HF_FAST_CAPTURE_AUTOALPHA === "true") {
62770
- await page.evaluateOnNewDocument(() => {
62771
- window.__HF_FAST_CAPTURE_AUTOALPHA__ = true;
62772
- });
62795
+ if (process.env.HF_FAST_CAPTURE_AUTOALPHA !== void 0) {
62796
+ console.warn(
62797
+ "[engine] HF_FAST_CAPTURE_AUTOALPHA is retired and ignored \u2014 the requestPaint paint contract captures animated opacity natively (see drawElementService.ts)."
62798
+ );
62773
62799
  }
62774
62800
  if (useDrawElement && process.env.HF_FAST_CAPTURE_ROOT_PROPS !== "false") {
62775
62801
  await page.evaluateOnNewDocument(() => {
@@ -62819,7 +62845,8 @@ async function createCaptureSession(serverUrl, outputDir, options, onBeforeCaptu
62819
62845
  seekMs: 0,
62820
62846
  beforeCaptureMs: 0,
62821
62847
  screenshotMs: 0,
62822
- totalMs: 0
62848
+ totalMs: 0,
62849
+ frameMs: []
62823
62850
  },
62824
62851
  captureMode,
62825
62852
  launchCaptureMode: captureMode,
@@ -63707,6 +63734,7 @@ async function captureFrameCore(session, frameIndex, time) {
63707
63734
  session.capturePerf.beforeCaptureMs += beforeCaptureMs;
63708
63735
  session.capturePerf.screenshotMs += screenshotMs;
63709
63736
  session.capturePerf.totalMs += captureTimeMs;
63737
+ session.capturePerf.frameMs.push(captureTimeMs);
63710
63738
  if (session.staticFrames) session.lastFrameBuffer = screenshotBuffer;
63711
63739
  return { buffer: screenshotBuffer, quantizedTime, captureTimeMs };
63712
63740
  } catch (captureError) {
@@ -63760,7 +63788,11 @@ async function captureFrameToBufferPipelined(session, frameIndex, time) {
63760
63788
  session.capturePerf.frames += 1;
63761
63789
  session.capturePerf.seekMs += seekMs;
63762
63790
  session.capturePerf.beforeCaptureMs += beforeCaptureMs;
63763
- session.capturePerf.totalMs += Date.now() - startTime;
63791
+ {
63792
+ const boundaryMs = Date.now() - startTime;
63793
+ session.capturePerf.totalMs += boundaryMs;
63794
+ session.capturePerf.frameMs.push(boundaryMs);
63795
+ }
63764
63796
  const boundaryResult = Promise.resolve(buffer);
63765
63797
  if (session.staticFrames) session.lastEncodeResult = boundaryResult;
63766
63798
  return { encodeResult: boundaryResult, captureTimeMs: Date.now() - startTime };
@@ -63778,6 +63810,7 @@ async function captureFrameToBufferPipelined(session, frameIndex, time) {
63778
63810
  session.capturePerf.beforeCaptureMs += beforeCaptureMs;
63779
63811
  session.capturePerf.screenshotMs += captureTimeMs - seekMs - beforeCaptureMs;
63780
63812
  session.capturePerf.totalMs += captureTimeMs;
63813
+ session.capturePerf.frameMs.push(captureTimeMs);
63781
63814
  if (session.staticFrames) session.lastEncodeResult = encodeResult;
63782
63815
  return { encodeResult, captureTimeMs };
63783
63816
  } catch (captureError) {
@@ -63835,6 +63868,10 @@ async function captureFramesBatchPipelined(session, frameIndices, times) {
63835
63868
  session.capturePerf.frames += okCount;
63836
63869
  session.capturePerf.screenshotMs += elapsed;
63837
63870
  session.capturePerf.totalMs += elapsed;
63871
+ if (okCount > 0) {
63872
+ const perFrame = elapsed / okCount;
63873
+ for (let s2 = 0; s2 < okCount; s2++) session.capturePerf.frameMs.push(perFrame);
63874
+ }
63838
63875
  const results = [];
63839
63876
  for (let i2 = 0; i2 < okCount; i2++) {
63840
63877
  const frameIndex = frameIndices[i2];
@@ -63921,7 +63958,8 @@ function prepareCaptureSessionForReuse(session, outputDir, onBeforeCapture) {
63921
63958
  seekMs: 0,
63922
63959
  beforeCaptureMs: 0,
63923
63960
  screenshotMs: 0,
63924
- totalMs: 0
63961
+ totalMs: 0,
63962
+ frameMs: []
63925
63963
  };
63926
63964
  session.beginFrameHasDamageCount = 0;
63927
63965
  session.beginFrameNoDamageCount = 0;
@@ -63985,6 +64023,11 @@ async function captureDeVerificationFrames(session, page, logInitPhase) {
63985
64023
  `drawElement self-verify armed: ${frames.size} ground-truth frame(s) @ [${[...frames.keys()].join(", ")}] of ${totalFrames}`
63986
64024
  );
63987
64025
  }
64026
+ function medianOf(samples) {
64027
+ if (samples.length === 0) return 0;
64028
+ const sorted = [...samples].sort((a, b2) => a - b2);
64029
+ return Math.round(sorted[Math.floor(sorted.length / 2)] ?? 0);
64030
+ }
63988
64031
  function getCapturePerfSummary(session) {
63989
64032
  const frames = Math.max(1, session.capturePerf.frames);
63990
64033
  return {
@@ -63993,6 +64036,7 @@ function getCapturePerfSummary(session) {
63993
64036
  avgSeekMs: Math.round(session.capturePerf.seekMs / frames),
63994
64037
  avgBeforeCaptureMs: Math.round(session.capturePerf.beforeCaptureMs / frames),
63995
64038
  avgScreenshotMs: Math.round(session.capturePerf.screenshotMs / frames),
64039
+ p50TotalMs: medianOf(session.capturePerf.frameMs),
63996
64040
  staticDedupReused: session.staticDedupCount ?? 0,
63997
64041
  staticDedupEnabled: session.staticDedupEnabled ?? false,
63998
64042
  // armed ⟺ a non-empty static set survived verification; predicted === its size.
@@ -77489,6 +77533,7 @@ __export(src_exports, {
77489
77533
  captureScreenshotWithAlpha: () => captureScreenshotWithAlpha,
77490
77534
  cdpSessionCache: () => cdpSessionCache,
77491
77535
  closeCaptureSession: () => closeCaptureSession,
77536
+ completeDeferredDrawElementInit: () => completeDeferredDrawElementInit,
77492
77537
  convertTransfer: () => convertTransfer,
77493
77538
  createCaptureSession: () => createCaptureSession,
77494
77539
  createFileServer: () => createFileServer,
@@ -78126,7 +78171,10 @@ function showTelemetryNotice() {
78126
78171
  writeConfig(config);
78127
78172
  console.log();
78128
78173
  console.log(` ${c.dim("Hyperframes collects anonymous usage data to improve the tool.")}`);
78129
- console.log(` ${c.dim("No personal info, file paths, or content is collected.")}`);
78174
+ console.log(` ${c.dim("File paths and composition content are never collected.")}`);
78175
+ console.log(
78176
+ ` ${c.dim("If you sign in to HeyGen, your account (email, or username) is linked to your usage.")}`
78177
+ );
78130
78178
  console.log();
78131
78179
  console.log(` ${c.dim("Disable anytime:")} ${c.accent("hyperframes telemetry disable")}`);
78132
78180
  console.log();
@@ -78152,6 +78200,7 @@ var init_client = __esm({
78152
78200
  // src/telemetry/events.ts
78153
78201
  var events_exports = {};
78154
78202
  __export(events_exports, {
78203
+ identifyUser: () => identifyUser,
78155
78204
  trackAuthLoginCompleted: () => trackAuthLoginCompleted,
78156
78205
  trackAuthLoginFailed: () => trackAuthLoginFailed,
78157
78206
  trackAuthLoginStarted: () => trackAuthLoginStarted,
@@ -78259,6 +78308,8 @@ function trackRenderComplete(props) {
78259
78308
  total_frames: props.totalFrames,
78260
78309
  speed_ratio: props.speedRatio,
78261
78310
  capture_avg_ms: props.captureAvgMs,
78311
+ capture_p50_ms: props.captureP50Ms,
78312
+ video_count: props.videoCount,
78262
78313
  capture_peak_ms: props.capturePeakMs,
78263
78314
  peak_memory_mb: props.peakMemoryMb,
78264
78315
  memory_free_mb: props.memoryFreeMb,
@@ -78350,6 +78401,10 @@ function trackAuthLoginCompleted(method, distinctId) {
78350
78401
  function trackAuthLoginFailed(method, reason, distinctId) {
78351
78402
  trackEvent("auth_login_failed", { method, reason }, distinctId);
78352
78403
  }
78404
+ function identifyUser(distinctId) {
78405
+ if (!distinctId) return;
78406
+ trackEvent("$identify", { $anon_distinct_id: readConfig().anonymousId }, distinctId);
78407
+ }
78353
78408
  function trackRenderPreflightRejected(props) {
78354
78409
  trackEvent("render_preflight_rejected", { kind: props.kind });
78355
78410
  }
@@ -78373,7 +78428,8 @@ function trackFigmaImport(props) {
78373
78428
  ...props.tokensMode !== void 0 ? { tokens_mode: props.tokensMode } : {},
78374
78429
  ...props.entryCount !== void 0 ? { entry_count: props.entryCount } : {},
78375
78430
  ...props.unresolvedBindings !== void 0 ? { unresolved_bindings: props.unresolvedBindings } : {},
78376
- ...props.rasterizedNodes !== void 0 ? { rasterized_nodes: props.rasterizedNodes } : {}
78431
+ ...props.rasterizedNodes !== void 0 ? { rasterized_nodes: props.rasterizedNodes } : {},
78432
+ ...props.rasterizeFailures !== void 0 ? { rasterize_failures: props.rasterizeFailures } : {}
78377
78433
  });
78378
78434
  }
78379
78435
  function trackCommandFailure(command2, err) {
@@ -78414,6 +78470,7 @@ var init_events = __esm({
78414
78470
  "use strict";
78415
78471
  init_dist3();
78416
78472
  init_client();
78473
+ init_config();
78417
78474
  }
78418
78475
  });
78419
78476
 
@@ -93563,6 +93620,9 @@ import { existsSync as existsSync92, mkdirSync as mkdirSync72 } from "fs";
93563
93620
  import { basename as basename22, dirname as dirname22, extname as extname32, join as join132 } from "path";
93564
93621
  import { spawnSync as spawnSync2 } from "child_process";
93565
93622
  import { extname as extname22 } from "path";
93623
+ import { existsSync as existsSync102, readFileSync as readFileSync122 } from "fs";
93624
+ import { homedir as homedir9 } from "os";
93625
+ import { join as join142 } from "path";
93566
93626
  function shouldIgnoreDir(rel) {
93567
93627
  return rel === ".hyperframes/backup";
93568
93628
  }
@@ -97849,6 +97909,26 @@ function registerMediaRoutes(api, adapter2, options = {}) {
97849
97909
  });
97850
97910
  });
97851
97911
  }
97912
+ function readGlobalAssets(home = homedir9()) {
97913
+ const manifestPath2 = join142(home, ".media", "manifest.jsonl");
97914
+ if (!existsSync102(manifestPath2)) return [];
97915
+ const out = [];
97916
+ for (const line2 of readFileSync122(manifestPath2, "utf8").split("\n")) {
97917
+ if (!line2.trim()) continue;
97918
+ try {
97919
+ const rec = JSON.parse(line2);
97920
+ if (rec && rec.reusable) out.push(rec);
97921
+ } catch {
97922
+ }
97923
+ }
97924
+ return out;
97925
+ }
97926
+ function toPublicAsset(r2) {
97927
+ return { id: r2.id, type: r2.type, description: r2.description, sha: r2.sha, entity: r2.entity };
97928
+ }
97929
+ function registerGlobalAssetRoutes(api) {
97930
+ api.get("/assets/global", (c3) => c3.json({ assets: readGlobalAssets().map(toPublicAsset) }));
97931
+ }
97852
97932
  function createStudioApi(adapter2) {
97853
97933
  const api = new Hono2();
97854
97934
  registerProjectRoutes(api, adapter2);
@@ -97863,6 +97943,7 @@ function createStudioApi(adapter2) {
97863
97943
  registerWaveformRoutes(api, adapter2);
97864
97944
  registerFontRoutes(api);
97865
97945
  registerRegistryRoutes(api, adapter2);
97946
+ registerGlobalAssetRoutes(api);
97866
97947
  return api;
97867
97948
  }
97868
97949
  function getElementScreenshotClip(selector, selectorIndex) {
@@ -98246,7 +98327,7 @@ var HF_EARLY_STUB_IIFE;
98246
98327
  var init_hf_early_stub_inline = __esm({
98247
98328
  "../producer/src/generated/hf-early-stub-inline.ts"() {
98248
98329
  "use strict";
98249
- HF_EARLY_STUB_IIFE = '"use strict";(()=>{var b=100,O=[],u=[],w=!1,f=!1,c=new Set,p=new Set;function y(n){let e=window.__HF_VIRTUAL_TIME__?.originalRequestAnimationFrame;return typeof e=="function"?e(n):requestAnimationFrame(n)}function x(n){let e=window.__HF_VIRTUAL_TIME__?.originalSetTimeout;if(typeof e=="function"){e(n,0);return}setTimeout(n,0)}function S(n){return n!==null&&typeof n=="object"&&"__hfIsProxy"in n?n.__hfReal:n}function _(n){if(n===null||typeof n!="object"||Array.isArray(n))return n;let e=n;if(!("opacity"in e)||"autoAlpha"in e||"visibility"in e)return n;let o={};for(let t of Object.keys(e))t==="opacity"?o.autoAlpha=e[t]:o[t]=e[t];return o}function T(n,e){if(n!=="add"&&v(e),window.__HF_FAST_CAPTURE_AUTOALPHA__!==!0||n==="add")return e;let o=e.slice(),t=!1;if(o.length>1){let i=_(o[1]);i!==o[1]&&(t=!0),o[1]=i}if(n==="fromTo"&&o.length>2){let i=_(o[2]);i!==o[2]&&(t=!0),o[2]=i}return t&&o[0]!==null&&o[0]!==void 0&&c.add(o[0]),o}function h(n){if(n===null||typeof n!="object"||Array.isArray(n))return!1;let e=n;return"rotationX"in e||"rotationY"in e||"transformPerspective"in e}var m=new Set;function v(n){let e=n[0];if(e==null)return;let o=window;m.has(e)||(m.add(e),o.__hfAllTweenTargets=Array.from(m)),(h(n[1])||h(n[2]))&&(p.add(e),o.__hf3dTweenTargets=Array.from(p))}function R(n){if(typeof n=="string")try{return Array.from(document.querySelectorAll(n))}catch{return[]}if(n instanceof Element)return[n];if(Array.isArray(n)||typeof NodeList<"u"&&n instanceof NodeList){let e=[];for(let o of n)o instanceof Element&&e.push(o);return e}return[]}function F(){if(window.__HF_FAST_CAPTURE_AUTOALPHA__!==!0||c.size===0)return;let n=Array.from(c);c.clear();for(let e of n)for(let o of R(e)){let t=o;if(!t.style||t.style.visibility!=="")continue;let i="";try{i=getComputedStyle(o).opacity}catch{continue}i==="0"&&(t.style.visibility="hidden")}}function g(n){let e=n.proxy.__hfReal,o=e[n.method];if(typeof o=="function"){let t=n.method==="add"?n.args.map(S):n.args;o.call(e,...t)}}function l(n,e,o){let t={proxy:n,method:e,args:T(e,o)};return n.__hfQueue.push(t),u.push(t),I(),n}function A(n){let e=n.proxy.__hfQueue.indexOf(n);e>=0&&n.proxy.__hfQueue.splice(e,1)}function r(){for(;u.length>0;){let n=u.shift();n&&(A(n),g(n))}E()}function k(){f=!1,F(),window.__hfTimelinesBuilding=!1;try{window.dispatchEvent(new CustomEvent("hf-timelines-built"))}catch{}}function E(){f||(f=!0,x(()=>{u.length===0?k():f=!1}))}function P(){w=!1;let n=u.splice(0,b);for(let e of n)A(e),g(e);u.length>0?(w=!0,y(P)):k()}function I(){w||(w=!0,window.__hfTimelinesBuilding=!0,y(P))}var C=new Set(["to","from","fromTo","set","add"]);function G(n,e){let o=e;for(;o!==null&&o!==Object.prototype;){for(let t of Object.getOwnPropertyNames(o)){if(t==="constructor"||t==="then"||t in n||C.has(t)||t.charAt(0)==="_")continue;let i=Object.getOwnPropertyDescriptor(o,t);if(!i||typeof i.value!="function")continue;let s=i.value;n[t]=function(...d){r();let a=s.call(e,...d);return a===e?n:a}}o=Object.getPrototypeOf(o)}}function H(n){let e={__hfReal:n,__hfQueue:[],__hfIsProxy:!0,to(...o){return l(e,"to",o)},from(...o){return l(e,"from",o)},fromTo(...o){return l(e,"fromTo",o)},set(...o){return l(e,"set",o)},add(...o){return l(e,"add",o)},pause(...o){return r(),n.pause(...o),e},play(...o){return r(),n.play(...o),e},seek(...o){return r(),n.seek(...o),e},totalTime(...o){return r(),o.length>0?(n.totalTime(...o),e):n.totalTime()},time(...o){return r(),o.length>0?(n.time(...o),e):n.time()},duration(...o){return r(),o.length>0?(n.duration(...o),e):n.duration()},getChildren(...o){r();let t=n.getChildren(...o);return Array.isArray(t)?t:[]},paused(...o){return r(),o.length>0?(n.paused(...o),e):n.paused()},timeScale(...o){return r(),o.length>0?(n.timeScale(...o),e):n.timeScale()},kill(){r(),n.kill()}};return G(e,n),O.push(e),e}if(typeof window<"u"){window.__hf||(window.__hf={}),window.__hfTimelinesBuilding=!1,window.__hfFlushSync=()=>{r(),u.length===0&&window.__hfTimelinesBuilding&&k()};let n=null;try{Object.defineProperty(window,"gsap",{configurable:!0,enumerable:!0,get(){return n},set(e){if(n=e,!e||typeof e.timeline!="function")return;let o=e.timeline.bind(e);e.timeline=i=>H(o(i));for(let i of["to","from","set"]){let s=e[i];if(typeof s!="function")continue;let d=s.bind(e);e[i]=(...a)=>d(...T(i,a))}let t=e.fromTo;if(typeof t=="function"){let i=t.bind(e);e.fromTo=(...s)=>i(...T("fromTo",s))}}})}catch{}}})();\n';
98330
+ HF_EARLY_STUB_IIFE = '"use strict";(()=>{var P=100,x=[],s=[],w=!1,f=!1,T=new Set;function p(n){let e=window.__HF_VIRTUAL_TIME__?.originalRequestAnimationFrame;return typeof e=="function"?e(n):requestAnimationFrame(n)}function b(n){let e=window.__HF_VIRTUAL_TIME__?.originalSetTimeout;if(typeof e=="function"){e(n,0);return}setTimeout(n,0)}function O(n){return n!==null&&typeof n=="object"&&"__hfIsProxy"in n?n.__hfReal:n}function m(n,e){n!=="add"&&v(e)}function h(n){if(n===null||typeof n!="object"||Array.isArray(n))return!1;let e=n;return"rotationX"in e||"rotationY"in e||"transformPerspective"in e}var d=new Set;function v(n){let e=n[0];if(e==null)return;let o=window;d.has(e)||(d.add(e),o.__hfAllTweenTargets=Array.from(d)),(h(n[1])||h(n[2]))&&(T.add(e),o.__hf3dTweenTargets=Array.from(T))}function _(n){let e=n.proxy.__hfReal,o=e[n.method];if(typeof o=="function"){let i=n.method==="add"?n.args.map(O):n.args;o.call(e,...i)}}function l(n,e,o){m(e,o);let i={proxy:n,method:e,args:o};return n.__hfQueue.push(i),s.push(i),R(),n}function y(n){let e=n.proxy.__hfQueue.indexOf(n);e>=0&&n.proxy.__hfQueue.splice(e,1)}function t(){for(;s.length>0;){let n=s.shift();n&&(y(n),_(n))}A()}function k(){f=!1,window.__hfTimelinesBuilding=!1;try{window.dispatchEvent(new CustomEvent("hf-timelines-built"))}catch{}}function A(){f||(f=!0,b(()=>{s.length===0?k():f=!1}))}function g(){w=!1;let n=s.splice(0,P);for(let e of n)y(e),_(e);s.length>0?(w=!0,p(g)):k()}function R(){w||(w=!0,window.__hfTimelinesBuilding=!0,p(g))}var S=new Set(["to","from","fromTo","set","add"]);function I(n,e){let o=e;for(;o!==null&&o!==Object.prototype;){for(let i of Object.getOwnPropertyNames(o)){if(i==="constructor"||i==="then"||i in n||S.has(i)||i.charAt(0)==="_")continue;let u=Object.getOwnPropertyDescriptor(o,i);if(!u||typeof u.value!="function")continue;let r=u.value;n[i]=function(...c){t();let a=r.call(e,...c);return a===e?n:a}}o=Object.getPrototypeOf(o)}}function G(n){let e={__hfReal:n,__hfQueue:[],__hfIsProxy:!0,to(...o){return l(e,"to",o)},from(...o){return l(e,"from",o)},fromTo(...o){return l(e,"fromTo",o)},set(...o){return l(e,"set",o)},add(...o){return l(e,"add",o)},pause(...o){return t(),n.pause(...o),e},play(...o){return t(),n.play(...o),e},seek(...o){return t(),n.seek(...o),e},totalTime(...o){return t(),o.length>0?(n.totalTime(...o),e):n.totalTime()},time(...o){return t(),o.length>0?(n.time(...o),e):n.time()},duration(...o){return t(),o.length>0?(n.duration(...o),e):n.duration()},getChildren(...o){t();let i=n.getChildren(...o);return Array.isArray(i)?i:[]},paused(...o){return t(),o.length>0?(n.paused(...o),e):n.paused()},timeScale(...o){return t(),o.length>0?(n.timeScale(...o),e):n.timeScale()},kill(){t(),n.kill()}};return I(e,n),x.push(e),e}if(typeof window<"u"){window.__hf||(window.__hf={}),window.__hfTimelinesBuilding=!1,window.__hfFlushSync=()=>{t(),s.length===0&&window.__hfTimelinesBuilding&&k()};let n=null;try{Object.defineProperty(window,"gsap",{configurable:!0,enumerable:!0,get(){return n},set(e){if(n=e,!e||typeof e.timeline!="function")return;let o=e.timeline.bind(e);e.timeline=u=>G(o(u));for(let u of["to","from","set"]){let r=e[u];if(typeof r!="function")continue;let c=r.bind(e);e[u]=(...a)=>(m(u,a),c(...a))}let i=e.fromTo;if(typeof i=="function"){let u=i.bind(e);e.fromTo=(...r)=>(m("fromTo",r),u(...r))}}})}catch{}}})();\n';
98250
98331
  }
98251
98332
  });
98252
98333
 
@@ -99431,6 +99512,11 @@ function buildRenderPerfSummary(input2) {
99431
99512
  captureAvgMs: input2.totalFrames > 0 ? Math.round(
99432
99513
  (input2.perfStages.captureFrameMs ?? input2.perfStages.captureMs ?? 0) / input2.totalFrames
99433
99514
  ) : void 0,
99515
+ captureP50Ms: (() => {
99516
+ const withSamples = input2.dedupPerfs.filter((p2) => (p2.p50TotalMs ?? 0) > 0);
99517
+ if (withSamples.length === 0) return void 0;
99518
+ return withSamples.reduce((a, b2) => b2.frames > a.frames ? b2 : a).p50TotalMs;
99519
+ })(),
99434
99520
  peakRssMb: Math.round(input2.peakRssBytes / (1024 * 1024)),
99435
99521
  peakHeapUsedMb: Math.round(input2.peakHeapUsedBytes / (1024 * 1024)),
99436
99522
  staticDedup: aggregateDedup(input2.dedupPerfs),
@@ -103265,7 +103351,7 @@ __export(deterministicFonts_exports, {
103265
103351
  });
103266
103352
  import { createHash as createHash8 } from "crypto";
103267
103353
  import { existsSync as existsSync35, mkdirSync as mkdirSync16, readFileSync as readFileSync21, writeFileSync as writeFileSync13 } from "fs";
103268
- import { homedir as homedir9, tmpdir as tmpdir4 } from "os";
103354
+ import { homedir as homedir10, tmpdir as tmpdir4 } from "os";
103269
103355
  import { join as join34 } from "path";
103270
103356
  import postcss4 from "postcss";
103271
103357
  function parseFontFamilyValue(value) {
@@ -103583,7 +103669,7 @@ function warnUnresolvedFonts(unresolved) {
103583
103669
  );
103584
103670
  }
103585
103671
  function resolveFontCacheRoot() {
103586
- return process.env.HYPERFRAMES_FONT_CACHE_DIR ?? (process.env.AWS_LAMBDA_FUNCTION_NAME ? join34(tmpdir4(), "hyperframes", "fonts") : join34(homedir9(), ".cache", "hyperframes", "fonts"));
103672
+ return process.env.HYPERFRAMES_FONT_CACHE_DIR ?? (process.env.AWS_LAMBDA_FUNCTION_NAME ? join34(tmpdir4(), "hyperframes", "fonts") : join34(homedir10(), ".cache", "hyperframes", "fonts"));
103587
103673
  }
103588
103674
  function fontSlug(familyName) {
103589
103675
  return familyName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
@@ -105515,6 +105601,7 @@ async function discoverMediaFromBrowser(page) {
105515
105601
  const loop = htmlEl.hasAttribute("loop");
105516
105602
  const hasAudio = htmlEl.getAttribute("data-has-audio") === "true";
105517
105603
  const volume = parseFloat(htmlEl.getAttribute("data-volume") || "1");
105604
+ const muted = htmlEl.hasAttribute("muted") || htmlEl.muted;
105518
105605
  results.push({
105519
105606
  id,
105520
105607
  tagName: htmlEl.tagName.toLowerCase(),
@@ -105525,7 +105612,8 @@ async function discoverMediaFromBrowser(page) {
105525
105612
  mediaStart,
105526
105613
  loop,
105527
105614
  hasAudio,
105528
- volume
105615
+ volume,
105616
+ muted
105529
105617
  });
105530
105618
  });
105531
105619
  return results;
@@ -106104,8 +106192,10 @@ async function runProbeStage(input2) {
106104
106192
  if (browserMedia.length > 0) {
106105
106193
  const existingVideoIds = new Set(composition.videos.map((v2) => v2.id));
106106
106194
  const existingAudioIds = new Set(composition.audios.map((a) => a.id));
106195
+ pruneMutedBrowserMedia(composition, browserMedia, existingAudioIds);
106107
106196
  for (const el of browserMedia) {
106108
106197
  if (!el.src || el.src === "about:blank") continue;
106198
+ if (el.muted && el.tagName === "audio") continue;
106109
106199
  let src = el.src;
106110
106200
  if (fileServer && src.startsWith(fileServer.url)) {
106111
106201
  src = src.slice(fileServer.url.length).replace(/^\//, "");
@@ -106128,7 +106218,7 @@ async function runProbeStage(input2) {
106128
106218
  if (el.mediaStart > 0 && (existing.mediaStart <= 0 || Math.abs(existing.mediaStart - el.mediaStart) > BROWSER_MEDIA_EPSILON)) {
106129
106219
  existing.mediaStart = el.mediaStart;
106130
106220
  }
106131
- if (el.hasAudio && !existing.hasAudio) {
106221
+ if (el.hasAudio && !el.muted && !existing.hasAudio) {
106132
106222
  existing.hasAudio = true;
106133
106223
  }
106134
106224
  if (el.loop && !existing.loop) {
@@ -106143,7 +106233,7 @@ async function runProbeStage(input2) {
106143
106233
  end: el.end,
106144
106234
  mediaStart: el.mediaStart,
106145
106235
  loop: el.loop,
106146
- hasAudio: el.hasAudio
106236
+ hasAudio: el.hasAudio && !el.muted
106147
106237
  });
106148
106238
  existingVideoIds.add(el.id);
106149
106239
  }
@@ -106294,6 +106384,19 @@ async function runProbeStage(input2) {
106294
106384
  beginFrameStalled
106295
106385
  };
106296
106386
  }
106387
+ function pruneMutedBrowserMedia(composition, browserMedia, existingAudioIds) {
106388
+ for (const el of browserMedia) {
106389
+ if (!el.muted) continue;
106390
+ if (el.tagName === "video") {
106391
+ const existing = composition.videos.find((v2) => v2.id === el.id);
106392
+ if (existing) existing.hasAudio = false;
106393
+ } else {
106394
+ const idx = composition.audios.findIndex((a) => a.id === el.id);
106395
+ if (idx >= 0) composition.audios.splice(idx, 1);
106396
+ existingAudioIds?.delete(el.id);
106397
+ }
106398
+ }
106399
+ }
106297
106400
  var init_probeStage = __esm({
106298
106401
  "../producer/src/services/render/stages/probeStage.ts"() {
106299
106402
  "use strict";
@@ -106576,6 +106679,8 @@ async function runCaptureStage(input2) {
106576
106679
  try {
106577
106680
  if (!session.isInitialized) {
106578
106681
  await initializeSession(session);
106682
+ } else if (process.env.PRODUCER_EXPERIMENTAL_FAST_CAPTURE === "true") {
106683
+ await completeDeferredDrawElementInit(session);
106579
106684
  }
106580
106685
  assertNotAborted();
106581
106686
  lastBrowserConsole = session.browserConsoleBuffer;
@@ -107634,6 +107739,7 @@ async function runCaptureStreamingStage(input2) {
107634
107739
  if (!session.isInitialized) {
107635
107740
  await initializeSession(session);
107636
107741
  }
107742
+ await completeDeferredDrawElementInit(session);
107637
107743
  assertNotAborted();
107638
107744
  lastBrowserConsole = session.browserConsoleBuffer;
107639
107745
  if (session.workerEncodeEnabled) {
@@ -113242,7 +113348,7 @@ __export(manager_exports2, {
113242
113348
  import { execSync as execSync5, spawnSync as spawnSync3 } from "child_process";
113243
113349
  import { existsSync as existsSync53, mkdirSync as mkdirSync29, readdirSync as readdirSync20, rmSync as rmSync17, statSync as statSync17 } from "fs";
113244
113350
  import { basename as basename7 } from "path";
113245
- import { homedir as homedir10 } from "os";
113351
+ import { homedir as homedir11 } from "os";
113246
113352
  import { join as join63 } from "path";
113247
113353
  async function loadPuppeteerBrowsers() {
113248
113354
  try {
@@ -113585,9 +113691,9 @@ var init_manager2 = __esm({
113585
113691
  "use strict";
113586
113692
  init_errorMessage();
113587
113693
  CHROME_VERSION = "131.0.6778.85";
113588
- CACHE_ROOT_DIR = join63(homedir10(), ".cache", "hyperframes");
113589
- CACHE_DIR2 = join63(homedir10(), ".cache", "hyperframes", "chrome");
113590
- PUPPETEER_CACHE_DIR = join63(homedir10(), ".cache", "puppeteer", "chrome-headless-shell");
113694
+ CACHE_ROOT_DIR = join63(homedir11(), ".cache", "hyperframes");
113695
+ CACHE_DIR2 = join63(homedir11(), ".cache", "hyperframes", "chrome");
113696
+ PUPPETEER_CACHE_DIR = join63(homedir11(), ".cache", "puppeteer", "chrome-headless-shell");
113591
113697
  INSTALL_LOCK_DIR = join63(CACHE_ROOT_DIR, ".chrome.install.lock");
113592
113698
  INSTALL_RECLAIM_LOCK_DIR = join63(CACHE_ROOT_DIR, ".chrome.install.reclaim.lock");
113593
113699
  INSTALL_LOCK_TIMEOUT_MS = 12e4;
@@ -113616,7 +113722,7 @@ __export(manager_exports3, {
113616
113722
  selectProviders: () => selectProviders
113617
113723
  });
113618
113724
  import { existsSync as existsSync54, mkdirSync as mkdirSync30 } from "fs";
113619
- import { homedir as homedir11, platform as platform6, arch } from "os";
113725
+ import { homedir as homedir12, platform as platform6, arch } from "os";
113620
113726
  import { join as join64 } from "path";
113621
113727
  function isDevice(value) {
113622
113728
  return typeof value === "string" && DEVICES2.includes(value);
@@ -113675,7 +113781,7 @@ var init_manager3 = __esm({
113675
113781
  "src/background-removal/manager.ts"() {
113676
113782
  "use strict";
113677
113783
  init_download();
113678
- MODELS_DIR2 = join64(homedir11(), ".cache", "hyperframes", "background-removal", "models");
113784
+ MODELS_DIR2 = join64(homedir12(), ".cache", "hyperframes", "background-removal", "models");
113679
113785
  DEFAULT_MODEL2 = "u2net_human_seg";
113680
113786
  MODEL_URLS = {
113681
113787
  u2net_human_seg: "https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net_human_seg.onnx"
@@ -119411,6 +119517,8 @@ function trackRenderMetrics(job, elapsedMs, options, docker) {
119411
119517
  totalFrames: perf?.totalFrames,
119412
119518
  speedRatio,
119413
119519
  captureAvgMs: perf?.captureAvgMs,
119520
+ captureP50Ms: perf?.captureP50Ms,
119521
+ videoCount: perf?.videoCount,
119414
119522
  capturePeakMs: perf?.capturePeakMs,
119415
119523
  tmpPeakBytes: perf?.tmpPeakBytes,
119416
119524
  stageCompileMs: stages.compileMs,
@@ -120777,7 +120885,7 @@ function uniqueSortedTimes(times) {
120777
120885
  function buildTransitionSampleTimes({
120778
120886
  duration,
120779
120887
  boundaries,
120780
- cap
120888
+ cap: cap2
120781
120889
  }) {
120782
120890
  if (!Number.isFinite(duration) || duration <= 0) return { times: [], dropped: 0 };
120783
120891
  const inRange = uniqueSortedTimes(
@@ -120791,10 +120899,10 @@ function buildTransitionSampleTimes({
120791
120899
  withMidpoints.push(roundTime((current2 + next) / 2));
120792
120900
  }
120793
120901
  const merged = uniqueSortedTimes(withMidpoints);
120794
- if (cap === void 0 || merged.length <= Math.max(2, cap)) {
120902
+ if (cap2 === void 0 || merged.length <= Math.max(2, cap2)) {
120795
120903
  return { times: merged, dropped: 0 };
120796
120904
  }
120797
- const limit = Math.max(2, cap);
120905
+ const limit = Math.max(2, cap2);
120798
120906
  const strided = [];
120799
120907
  for (let i2 = 0; i2 < limit; i2++) {
120800
120908
  const pick = merged[Math.floor(i2 * (merged.length - 1) / (limit - 1))];
@@ -125110,17 +125218,17 @@ __export(remove_background_exports, {
125110
125218
  import { resolve as resolve50 } from "path";
125111
125219
  import { existsSync as existsSync75 } from "fs";
125112
125220
  async function showInfo(json) {
125113
- const { selectProviders: selectProviders2, listAvailableProviders: listAvailableProviders2, DEFAULT_MODEL: DEFAULT_MODEL4, MODEL_MEMORY_MB: MODEL_MEMORY_MB2, modelPath: modelPath2 } = await Promise.resolve().then(() => (init_manager3(), manager_exports3));
125221
+ const { selectProviders: selectProviders2, listAvailableProviders: listAvailableProviders2, DEFAULT_MODEL: DEFAULT_MODEL5, MODEL_MEMORY_MB: MODEL_MEMORY_MB2, modelPath: modelPath2 } = await Promise.resolve().then(() => (init_manager3(), manager_exports3));
125114
125222
  const providers = listAvailableProviders2();
125115
125223
  const auto = selectProviders2("auto");
125116
125224
  const cached2 = existsSync75(modelPath2());
125117
125225
  if (json) {
125118
125226
  console.log(
125119
125227
  JSON.stringify({
125120
- defaultModel: DEFAULT_MODEL4,
125228
+ defaultModel: DEFAULT_MODEL5,
125121
125229
  modelCached: cached2,
125122
125230
  modelPath: modelPath2(),
125123
- peakMemoryMb: MODEL_MEMORY_MB2[DEFAULT_MODEL4],
125231
+ peakMemoryMb: MODEL_MEMORY_MB2[DEFAULT_MODEL5],
125124
125232
  availableProviders: providers,
125125
125233
  autoProvider: auto.label
125126
125234
  })
@@ -125129,8 +125237,8 @@ async function showInfo(json) {
125129
125237
  }
125130
125238
  console.log(c.bold("hyperframes remove-background \u2014 system info"));
125131
125239
  console.log("");
125132
- console.log(` ${c.dim("Default model:")} ${c.accent(DEFAULT_MODEL4)}`);
125133
- console.log(` ${c.dim("Peak memory:")} ~${MODEL_MEMORY_MB2[DEFAULT_MODEL4]} MB`);
125240
+ console.log(` ${c.dim("Default model:")} ${c.accent(DEFAULT_MODEL5)}`);
125241
+ console.log(` ${c.dim("Peak memory:")} ~${MODEL_MEMORY_MB2[DEFAULT_MODEL5]} MB`);
125134
125242
  console.log(
125135
125243
  ` ${c.dim("Weights cached:")} ${cached2 ? c.success("yes") : c.dim("no (will download on first run)")}`
125136
125244
  );
@@ -125316,14 +125424,111 @@ var init_remove_background = __esm({
125316
125424
  }
125317
125425
  });
125318
125426
 
125427
+ // src/whisper/parakeet.ts
125428
+ import { execFileSync as execFileSync10 } from "child_process";
125429
+ import { existsSync as existsSync76, mkdtempSync as mkdtempSync6, readFileSync as readFileSync50, rmSync as rmSync19, writeFileSync as writeFileSync27 } from "fs";
125430
+ import { homedir as homedir13, tmpdir as tmpdir8 } from "os";
125431
+ import { basename as basename15, extname as extname12, join as join79 } from "path";
125432
+ function isRunnable(bin) {
125433
+ try {
125434
+ execFileSync10(bin, ["--help"], { stdio: ["ignore", "ignore", "ignore"], timeout: 1e4 });
125435
+ return true;
125436
+ } catch {
125437
+ return false;
125438
+ }
125439
+ }
125440
+ function findParakeet() {
125441
+ const candidates = [
125442
+ process.env.HYPERFRAMES_PARAKEET,
125443
+ join79(homedir13(), ".venvs", "parakeet", "bin", "parakeet-mlx")
125444
+ ].filter((p2) => Boolean(p2));
125445
+ for (const path2 of candidates) {
125446
+ if (existsSync76(path2) && isRunnable(path2)) return path2;
125447
+ }
125448
+ try {
125449
+ const which = process.platform === "win32" ? "where" : "which";
125450
+ const out = execFileSync10(which, ["parakeet-mlx"], {
125451
+ encoding: "utf-8",
125452
+ stdio: ["ignore", "pipe", "ignore"],
125453
+ timeout: 5e3
125454
+ });
125455
+ const first = out.split(/\r?\n/).map((s2) => s2.trim()).find(Boolean);
125456
+ if (first && existsSync76(first)) return first;
125457
+ } catch {
125458
+ }
125459
+ return void 0;
125460
+ }
125461
+ function tokenBounds(token) {
125462
+ const text2 = typeof token.text === "string" ? token.text : "";
125463
+ const start = typeof token.start === "number" ? token.start : 0;
125464
+ const end = typeof token.end === "number" ? token.end : start;
125465
+ return { text: text2, start, end };
125466
+ }
125467
+ function mergeTokensToWords(parakeet) {
125468
+ const words = [];
125469
+ for (const sentence of parakeet.sentences ?? []) {
125470
+ for (const token of sentence.tokens ?? []) {
125471
+ const { text: text2, start, end } = tokenBounds(token);
125472
+ if (text2.startsWith(" ") || words.length === 0) {
125473
+ words.push({ text: text2.trim(), start, end });
125474
+ } else {
125475
+ const w3 = words[words.length - 1];
125476
+ w3.text += text2;
125477
+ w3.end = end;
125478
+ }
125479
+ }
125480
+ }
125481
+ return words.filter((w3) => w3.text.length > 0);
125482
+ }
125483
+ function transcribeWithParakeet(inputPath, dir, options) {
125484
+ const runner = findParakeet();
125485
+ if (!runner) {
125486
+ throw new Error(
125487
+ `parakeet-mlx not found. Enable the Parakeet engine with:
125488
+ ${PARAKEET_INSTALL}
125489
+ (or use --engine whisper)`
125490
+ );
125491
+ }
125492
+ const model = options?.model ?? DEFAULT_MODEL3;
125493
+ const cached2 = existsSync76(
125494
+ join79(homedir13(), ".cache", "huggingface", "hub", `models--${model.replace(/\//g, "--")}`)
125495
+ );
125496
+ options?.onProgress?.(
125497
+ cached2 ? "Transcribing with Parakeet..." : "Downloading Parakeet model (first run, ~600MB)..."
125498
+ );
125499
+ const workDir = mkdtempSync6(join79(tmpdir8(), "hyperframes-parakeet-"));
125500
+ try {
125501
+ const argv2 = [inputPath, "--model", model, "--output-format", "json", "--output-dir", workDir];
125502
+ if (options?.language) argv2.push("--language", options.language);
125503
+ execFileSync10(runner, argv2, { stdio: ["ignore", "pipe", "pipe"], timeout: 18e5 });
125504
+ const produced = join79(workDir, `${basename15(inputPath, extname12(inputPath))}.json`);
125505
+ if (!existsSync76(produced)) throw new Error("Parakeet did not produce output.");
125506
+ const words = mergeTokensToWords(JSON.parse(readFileSync50(produced, "utf-8")));
125507
+ const transcriptPath = join79(dir, "transcript.json");
125508
+ writeFileSync27(transcriptPath, JSON.stringify(words, null, 2));
125509
+ const durationSeconds = words.length > 0 ? words[words.length - 1].end : 0;
125510
+ return { transcriptPath, wordCount: words.length, durationSeconds, speechOnsetSeconds: null };
125511
+ } finally {
125512
+ rmSync19(workDir, { recursive: true, force: true });
125513
+ }
125514
+ }
125515
+ var DEFAULT_MODEL3, PARAKEET_INSTALL;
125516
+ var init_parakeet = __esm({
125517
+ "src/whisper/parakeet.ts"() {
125518
+ "use strict";
125519
+ DEFAULT_MODEL3 = "mlx-community/parakeet-tdt-0.6b-v3";
125520
+ PARAKEET_INSTALL = "uv venv ~/.venvs/parakeet && VIRTUAL_ENV=~/.venvs/parakeet uv pip install parakeet-mlx";
125521
+ }
125522
+ });
125523
+
125319
125524
  // src/commands/transcribe.ts
125320
125525
  var transcribe_exports2 = {};
125321
125526
  __export(transcribe_exports2, {
125322
125527
  default: () => transcribe_default,
125323
125528
  examples: () => examples20
125324
125529
  });
125325
- import { existsSync as existsSync76, writeFileSync as writeFileSync27 } from "fs";
125326
- import { resolve as resolve51, join as join79, extname as extname12, dirname as dirname36 } from "path";
125530
+ import { existsSync as existsSync77, writeFileSync as writeFileSync28 } from "fs";
125531
+ import { resolve as resolve51, join as join80, extname as extname13, dirname as dirname36 } from "path";
125327
125532
  function failWith(message, json) {
125328
125533
  trackCommandFailure("transcribe", message);
125329
125534
  if (json) {
@@ -125346,8 +125551,8 @@ async function importTranscript(inputPath, dir, json) {
125346
125551
  const { loadTranscript: loadTranscript2, patchCaptionHtml: patchCaptionHtml2 } = await Promise.resolve().then(() => (init_normalize(), normalize_exports));
125347
125552
  const { words, format } = loadTranscript2(inputPath);
125348
125553
  if (words.length === 0) exitNoWords(json);
125349
- const outPath = join79(dir, "transcript.json");
125350
- writeFileSync27(outPath, JSON.stringify(words, null, 2));
125554
+ const outPath = join80(dir, "transcript.json");
125555
+ writeFileSync28(outPath, JSON.stringify(words, null, 2));
125351
125556
  patchCaptionHtml2(dir, words);
125352
125557
  if (json) {
125353
125558
  console.log(
@@ -125364,9 +125569,9 @@ async function exportTranscript(inputPath, dir, to, output, json, preserveCues)
125364
125569
  const { words, format } = loadTranscript2(inputPath);
125365
125570
  if (words.length === 0) exitNoWords(json);
125366
125571
  const preGrouped = preserveCues || format === "srt" || format === "vtt" || void 0;
125367
- const outPath = resolve51(output ?? join79(dir, `transcript.${to}`));
125572
+ const outPath = resolve51(output ?? join80(dir, `transcript.${to}`));
125368
125573
  const content = to === "srt" ? formatSrt2(words, { preGrouped }) : formatVtt2(words, { preGrouped });
125369
- writeFileSync27(outPath, content);
125574
+ writeFileSync28(outPath, content);
125370
125575
  if (json) {
125371
125576
  console.log(
125372
125577
  JSON.stringify({ ok: true, format: to, wordCount: words.length, outputPath: outPath })
@@ -125380,11 +125585,25 @@ async function exportTranscript(inputPath, dir, to, output, json, preserveCues)
125380
125585
  async function transcribeAudio(inputPath, dir, opts) {
125381
125586
  const { transcribe: transcribe2 } = await Promise.resolve().then(() => (init_transcribe(), transcribe_exports));
125382
125587
  const { loadTranscript: loadTranscript2, patchCaptionHtml: patchCaptionHtml2, stripBeforeOnset: stripBeforeOnset2 } = await Promise.resolve().then(() => (init_normalize(), normalize_exports));
125588
+ const engine = (opts.engine ?? "auto").toLowerCase();
125589
+ if (engine !== "auto" && engine !== "parakeet" && engine !== "whisper") {
125590
+ failWith(`Unknown --engine: ${opts.engine}. Use auto, parakeet, or whisper.`, !!opts.json);
125591
+ }
125592
+ const useParakeet = engine === "parakeet" || engine === "auto" && !!findParakeet();
125383
125593
  const model = opts.model ?? DEFAULT_MODEL;
125594
+ if (useParakeet && opts.model && !opts.json) {
125595
+ console.error(
125596
+ c.dim(` Note: --model applies to the whisper engine only; ignored under Parakeet.`)
125597
+ );
125598
+ }
125599
+ const label2 = useParakeet ? "Parakeet" : model;
125384
125600
  const spin = opts.json ? null : ft();
125385
- spin?.start(`Transcribing with ${c.accent(model)}...`);
125601
+ spin?.start(`Transcribing with ${c.accent(label2)}...`);
125386
125602
  try {
125387
- const result = await transcribe2(inputPath, dir, {
125603
+ const result = useParakeet ? transcribeWithParakeet(inputPath, dir, {
125604
+ language: opts.language,
125605
+ onProgress: spin ? (msg) => spin.message(msg) : void 0
125606
+ }) : await transcribe2(inputPath, dir, {
125388
125607
  model,
125389
125608
  language: opts.language,
125390
125609
  onProgress: spin ? (msg) => spin.message(msg) : void 0
@@ -125400,13 +125619,14 @@ async function transcribeAudio(inputPath, dir, opts) {
125400
125619
  );
125401
125620
  }
125402
125621
  }
125403
- writeFileSync27(result.transcriptPath, JSON.stringify(words, null, 2));
125622
+ writeFileSync28(result.transcriptPath, JSON.stringify(words, null, 2));
125404
125623
  patchCaptionHtml2(dir, words);
125405
125624
  if (opts.json) {
125406
125625
  console.log(
125407
125626
  JSON.stringify({
125408
125627
  ok: true,
125409
- model,
125628
+ engine: useParakeet ? "parakeet" : "whisper",
125629
+ model: useParakeet ? "parakeet-tdt-0.6b-v3" : model,
125410
125630
  wordCount: words.length,
125411
125631
  durationSeconds: result.durationSeconds,
125412
125632
  speechOnsetSeconds: result.speechOnsetSeconds,
@@ -125422,7 +125642,10 @@ async function transcribeAudio(inputPath, dir, opts) {
125422
125642
  );
125423
125643
  }
125424
125644
  } catch (err) {
125425
- const message = err instanceof Error ? err.message : String(err);
125645
+ const stderr = err && typeof err === "object" && "stderr" in err && err.stderr ? String(err.stderr).trim().split("\n").slice(-3).join("\n") : "";
125646
+ const base2 = err instanceof Error ? err.message : String(err);
125647
+ const message = stderr ? `${base2}
125648
+ ${stderr}` : base2;
125426
125649
  if (isWhisperUnavailable(err)) {
125427
125650
  trackTranscribeUnavailable({ optional: opts.optional === true });
125428
125651
  if (opts.json) {
@@ -125447,6 +125670,7 @@ var init_transcribe2 = __esm({
125447
125670
  "src/commands/transcribe.ts"() {
125448
125671
  "use strict";
125449
125672
  init_dist();
125673
+ init_parakeet();
125450
125674
  init_dist8();
125451
125675
  init_colors();
125452
125676
  init_manager();
@@ -125480,6 +125704,11 @@ var init_transcribe2 = __esm({
125480
125704
  description: "Project directory (default: current directory)",
125481
125705
  alias: "d"
125482
125706
  },
125707
+ engine: {
125708
+ type: "string",
125709
+ description: "ASR engine: auto (Parakeet if installed, else whisper), parakeet, or whisper. Default: auto. Parakeet is more accurate and faster; enable with `uv pip install parakeet-mlx`.",
125710
+ alias: "e"
125711
+ },
125483
125712
  model: {
125484
125713
  type: "string",
125485
125714
  description: `Whisper model (default: ${DEFAULT_MODEL}). Options: tiny.en, base.en, small.en, medium.en, large-v3`,
@@ -125517,14 +125746,14 @@ var init_transcribe2 = __esm({
125517
125746
  },
125518
125747
  async run({ args }) {
125519
125748
  const inputPath = resolve51(args.input);
125520
- if (!existsSync76(inputPath)) {
125749
+ if (!existsSync77(inputPath)) {
125521
125750
  const message = `File not found: ${args.input}`;
125522
125751
  trackCommandFailure("transcribe", message);
125523
125752
  console.error(c.error(message));
125524
125753
  process.exit(1);
125525
125754
  }
125526
125755
  const dir = resolve51(args.dir ?? dirname36(inputPath));
125527
- const ext = extname12(inputPath).toLowerCase();
125756
+ const ext = extname13(inputPath).toLowerCase();
125528
125757
  const isImport = ext === ".json" || ext === ".srt" || ext === ".vtt";
125529
125758
  const to = parseExportFormat(args.to, args.json);
125530
125759
  if (to) {
@@ -125540,6 +125769,7 @@ var init_transcribe2 = __esm({
125540
125769
  return importTranscript(inputPath, dir, args.json);
125541
125770
  }
125542
125771
  return transcribeAudio(inputPath, dir, {
125772
+ engine: args.engine,
125543
125773
  model: args.model,
125544
125774
  language: args.language,
125545
125775
  json: args.json,
@@ -125551,9 +125781,9 @@ var init_transcribe2 = __esm({
125551
125781
  });
125552
125782
 
125553
125783
  // src/tts/manager.ts
125554
- import { existsSync as existsSync77, mkdirSync as mkdirSync37 } from "fs";
125555
- import { homedir as homedir12 } from "os";
125556
- import { join as join80 } from "path";
125784
+ import { existsSync as existsSync78, mkdirSync as mkdirSync37 } from "fs";
125785
+ import { homedir as homedir14 } from "os";
125786
+ import { join as join81 } from "path";
125557
125787
  function inferLangFromVoiceId(voiceId) {
125558
125788
  const first = voiceId.charAt(0).toLowerCase();
125559
125789
  return VOICE_PREFIX_LANG[first] ?? "en-us";
@@ -125561,9 +125791,9 @@ function inferLangFromVoiceId(voiceId) {
125561
125791
  function isSupportedLang(value) {
125562
125792
  return SUPPORTED_LANGS.includes(value);
125563
125793
  }
125564
- async function ensureModel3(model = DEFAULT_MODEL3, options) {
125565
- const modelPath2 = join80(MODELS_DIR3, `${model}.onnx`);
125566
- if (existsSync77(modelPath2)) return modelPath2;
125794
+ async function ensureModel3(model = DEFAULT_MODEL4, options) {
125795
+ const modelPath2 = join81(MODELS_DIR3, `${model}.onnx`);
125796
+ if (existsSync78(modelPath2)) return modelPath2;
125567
125797
  const url = MODEL_URLS2[model];
125568
125798
  if (!url) {
125569
125799
  throw new Error(
@@ -125573,31 +125803,31 @@ async function ensureModel3(model = DEFAULT_MODEL3, options) {
125573
125803
  mkdirSync37(MODELS_DIR3, { recursive: true });
125574
125804
  options?.onProgress?.(`Downloading TTS model ${model} (~311 MB)...`);
125575
125805
  await downloadFile(url, modelPath2);
125576
- if (!existsSync77(modelPath2)) {
125806
+ if (!existsSync78(modelPath2)) {
125577
125807
  throw new Error(`Model download failed: ${model}`);
125578
125808
  }
125579
125809
  return modelPath2;
125580
125810
  }
125581
125811
  async function ensureVoices(options) {
125582
- const voicesPath = join80(VOICES_DIR, "voices-v1.0.bin");
125583
- if (existsSync77(voicesPath)) return voicesPath;
125812
+ const voicesPath = join81(VOICES_DIR, "voices-v1.0.bin");
125813
+ if (existsSync78(voicesPath)) return voicesPath;
125584
125814
  mkdirSync37(VOICES_DIR, { recursive: true });
125585
125815
  options?.onProgress?.("Downloading voice data (~27 MB)...");
125586
125816
  await downloadFile(VOICES_URL, voicesPath);
125587
- if (!existsSync77(voicesPath)) {
125817
+ if (!existsSync78(voicesPath)) {
125588
125818
  throw new Error("Voice data download failed");
125589
125819
  }
125590
125820
  return voicesPath;
125591
125821
  }
125592
- var CACHE_DIR3, MODELS_DIR3, VOICES_DIR, DEFAULT_MODEL3, MODEL_URLS2, VOICES_URL, SUPPORTED_LANGS, VOICE_PREFIX_LANG, BUNDLED_VOICES, DEFAULT_VOICE;
125822
+ var CACHE_DIR3, MODELS_DIR3, VOICES_DIR, DEFAULT_MODEL4, MODEL_URLS2, VOICES_URL, SUPPORTED_LANGS, VOICE_PREFIX_LANG, BUNDLED_VOICES, DEFAULT_VOICE;
125593
125823
  var init_manager4 = __esm({
125594
125824
  "src/tts/manager.ts"() {
125595
125825
  "use strict";
125596
125826
  init_download();
125597
- CACHE_DIR3 = join80(homedir12(), ".cache", "hyperframes", "tts");
125598
- MODELS_DIR3 = join80(CACHE_DIR3, "models");
125599
- VOICES_DIR = join80(CACHE_DIR3, "voices");
125600
- DEFAULT_MODEL3 = "kokoro-v1.0";
125827
+ CACHE_DIR3 = join81(homedir14(), ".cache", "hyperframes", "tts");
125828
+ MODELS_DIR3 = join81(CACHE_DIR3, "models");
125829
+ VOICES_DIR = join81(CACHE_DIR3, "voices");
125830
+ DEFAULT_MODEL4 = "kokoro-v1.0";
125601
125831
  MODEL_URLS2 = {
125602
125832
  "kokoro-v1.0": "https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0/kokoro-v1.0.onnx"
125603
125833
  };
@@ -125652,19 +125882,31 @@ var init_manager4 = __esm({
125652
125882
  });
125653
125883
 
125654
125884
  // src/tts/python.ts
125655
- import { execFileSync as execFileSync10 } from "child_process";
125885
+ import { execFileSync as execFileSync11 } from "child_process";
125656
125886
  function findPython() {
125887
+ const override = process.env.HYPERFRAMES_PYTHON;
125888
+ if (override) {
125889
+ try {
125890
+ const version2 = execFileSync11(override, ["--version"], {
125891
+ encoding: "utf-8",
125892
+ stdio: ["pipe", "pipe", "pipe"],
125893
+ timeout: 5e3
125894
+ });
125895
+ if (/Python 3/.test(version2)) return override;
125896
+ } catch {
125897
+ }
125898
+ }
125657
125899
  for (const name of ["python3", "python"]) {
125658
125900
  try {
125659
125901
  const cmd = process.platform === "win32" ? "where" : "which";
125660
- const output = execFileSync10(cmd, [name], {
125902
+ const output = execFileSync11(cmd, [name], {
125661
125903
  encoding: "utf-8",
125662
125904
  stdio: ["pipe", "pipe", "pipe"],
125663
125905
  timeout: 5e3
125664
125906
  });
125665
125907
  const first = output.split(/\r?\n/).map((s2) => s2.trim()).find(Boolean);
125666
125908
  if (!first) continue;
125667
- const version2 = execFileSync10(first, ["--version"], {
125909
+ const version2 = execFileSync11(first, ["--version"], {
125668
125910
  encoding: "utf-8",
125669
125911
  stdio: ["pipe", "pipe", "pipe"],
125670
125912
  timeout: 5e3
@@ -125677,7 +125919,7 @@ function findPython() {
125677
125919
  }
125678
125920
  function hasPythonPackage(python, pkg) {
125679
125921
  try {
125680
- execFileSync10(python, ["-c", `import ${pkg}`], {
125922
+ execFileSync11(python, ["-c", `import ${pkg}`], {
125681
125923
  stdio: ["pipe", "pipe", "pipe"],
125682
125924
  timeout: 1e4
125683
125925
  });
@@ -125692,7 +125934,7 @@ function hasPythonModules(modules) {
125692
125934
  const list = JSON.stringify(modules);
125693
125935
  const probe = `import importlib.util,sys; sys.exit(0 if all(importlib.util.find_spec(m) for m in ${list}) else 1)`;
125694
125936
  try {
125695
- execFileSync10(python, ["-c", probe], {
125937
+ execFileSync11(python, ["-c", probe], {
125696
125938
  stdio: ["pipe", "pipe", "pipe"],
125697
125939
  timeout: 1e4
125698
125940
  });
@@ -125712,20 +125954,20 @@ var synthesize_exports = {};
125712
125954
  __export(synthesize_exports, {
125713
125955
  synthesize: () => synthesize
125714
125956
  });
125715
- import { execFileSync as execFileSync11 } from "child_process";
125716
- import { existsSync as existsSync78, writeFileSync as writeFileSync28, mkdirSync as mkdirSync38, readdirSync as readdirSync27, unlinkSync as unlinkSync6 } from "fs";
125717
- import { join as join81, dirname as dirname37, basename as basename15 } from "path";
125718
- import { homedir as homedir13 } from "os";
125957
+ import { execFileSync as execFileSync12 } from "child_process";
125958
+ import { existsSync as existsSync79, writeFileSync as writeFileSync29, mkdirSync as mkdirSync38, readdirSync as readdirSync27, unlinkSync as unlinkSync6 } from "fs";
125959
+ import { join as join83, dirname as dirname37, basename as basename16 } from "path";
125960
+ import { homedir as homedir15 } from "os";
125719
125961
  function ensureSynthScript() {
125720
- if (!existsSync78(SCRIPT_PATH)) {
125962
+ if (!existsSync79(SCRIPT_PATH)) {
125721
125963
  mkdirSync38(SCRIPT_DIR, { recursive: true });
125722
- writeFileSync28(SCRIPT_PATH, SYNTH_SCRIPT);
125723
- const currentName = basename15(SCRIPT_PATH);
125964
+ writeFileSync29(SCRIPT_PATH, SYNTH_SCRIPT);
125965
+ const currentName = basename16(SCRIPT_PATH);
125724
125966
  try {
125725
125967
  for (const entry of readdirSync27(SCRIPT_DIR)) {
125726
125968
  if (entry !== currentName && /^synth(-v\d+)?\.py$/.test(entry)) {
125727
125969
  try {
125728
- unlinkSync6(join81(SCRIPT_DIR, entry));
125970
+ unlinkSync6(join83(SCRIPT_DIR, entry));
125729
125971
  } catch {
125730
125972
  }
125731
125973
  }
@@ -125743,12 +125985,12 @@ async function synthesize(text2, outputPath, options) {
125743
125985
  const python = findPython();
125744
125986
  if (!python) {
125745
125987
  throw new Error(
125746
- "Python 3 is required for text-to-speech. Install Python 3.8+ and run: pip install kokoro-onnx soundfile"
125988
+ "Python 3 is required for text-to-speech. Install Python 3.10+ and run: pip install kokoro-onnx soundfile (or point HYPERFRAMES_PYTHON at a venv python that has them)"
125747
125989
  );
125748
125990
  }
125749
125991
  if (!hasPythonPackage(python, "kokoro_onnx")) {
125750
125992
  throw new Error(
125751
- "The kokoro-onnx package is not installed. Run: pip install kokoro-onnx soundfile"
125993
+ "The kokoro-onnx package is not installed. Run: pip install kokoro-onnx soundfile (or point HYPERFRAMES_PYTHON at a venv python that has them)"
125752
125994
  );
125753
125995
  }
125754
125996
  if (!hasPythonPackage(python, "soundfile")) {
@@ -125762,7 +126004,7 @@ async function synthesize(text2, outputPath, options) {
125762
126004
  mkdirSync38(dirname37(outputPath), { recursive: true });
125763
126005
  options?.onProgress?.(`Generating speech with voice ${voice} (${lang})...`);
125764
126006
  try {
125765
- const stdout2 = execFileSync11(
126007
+ const stdout2 = execFileSync12(
125766
126008
  python,
125767
126009
  [scriptPath, modelPath2, voicesPath, text2, voice, String(speed), outputPath, lang],
125768
126010
  {
@@ -125771,7 +126013,7 @@ async function synthesize(text2, outputPath, options) {
125771
126013
  stdio: ["pipe", "pipe", "pipe"]
125772
126014
  }
125773
126015
  );
125774
- if (!existsSync78(outputPath)) {
126016
+ if (!existsSync79(outputPath)) {
125775
126017
  throw new Error("Synthesis completed but no output file was created");
125776
126018
  }
125777
126019
  const lines = stdout2.trim().split("\n");
@@ -125784,7 +126026,7 @@ async function synthesize(text2, outputPath, options) {
125784
126026
  langApplied: result.langApplied
125785
126027
  };
125786
126028
  } catch (err) {
125787
- if (err instanceof SyntaxError && existsSync78(outputPath)) {
126029
+ if (err instanceof SyntaxError && existsSync79(outputPath)) {
125788
126030
  throw new Error(
125789
126031
  "Speech was generated but metadata could not be read. Check the output file manually."
125790
126032
  );
@@ -125836,8 +126078,8 @@ print(json.dumps({
125836
126078
  "langApplied": bool(lang and supports_lang),
125837
126079
  }))
125838
126080
  `;
125839
- SCRIPT_DIR = join81(homedir13(), ".cache", "hyperframes", "tts");
125840
- SCRIPT_PATH = join81(SCRIPT_DIR, "synth-v2.py");
126081
+ SCRIPT_DIR = join83(homedir15(), ".cache", "hyperframes", "tts");
126082
+ SCRIPT_PATH = join83(SCRIPT_DIR, "synth-v2.py");
125841
126083
  }
125842
126084
  });
125843
126085
 
@@ -125847,8 +126089,8 @@ __export(tts_exports, {
125847
126089
  default: () => tts_default,
125848
126090
  examples: () => examples21
125849
126091
  });
125850
- import { existsSync as existsSync79, readFileSync as readFileSync50 } from "fs";
125851
- import { resolve as resolve52, extname as extname13 } from "path";
126092
+ import { existsSync as existsSync80, readFileSync as readFileSync51 } from "fs";
126093
+ import { resolve as resolve52, extname as extname14 } from "path";
125852
126094
  function listVoices(json) {
125853
126095
  const rows = BUNDLED_VOICES.map((v2) => ({ ...v2, defaultLang: inferLangFromVoiceId(v2.id) }));
125854
126096
  if (json) {
@@ -125919,7 +126161,7 @@ var init_tts = __esm({
125919
126161
  output: {
125920
126162
  type: "string",
125921
126163
  description: "Output file path (default: speech.wav in current directory)",
125922
- alias: "o"
126164
+ alias: ["o", "out"]
125923
126165
  },
125924
126166
  voice: {
125925
126167
  type: "string",
@@ -125947,6 +126189,7 @@ var init_tts = __esm({
125947
126189
  default: false
125948
126190
  }
125949
126191
  },
126192
+ // fallow-ignore-next-line complexity
125950
126193
  async run({ args }) {
125951
126194
  if (args.list) {
125952
126195
  return listVoices(args.json);
@@ -125957,8 +126200,8 @@ var init_tts = __esm({
125957
126200
  }
125958
126201
  let text2;
125959
126202
  const maybeFile = resolve52(args.input);
125960
- if (existsSync79(maybeFile) && extname13(maybeFile).toLowerCase() === ".txt") {
125961
- text2 = readFileSync50(maybeFile, "utf-8").trim();
126203
+ if (existsSync80(maybeFile) && extname14(maybeFile).toLowerCase() === ".txt") {
126204
+ text2 = readFileSync51(maybeFile, "utf-8").trim();
125962
126205
  if (!text2) {
125963
126206
  console.error(c.error("File is empty."));
125964
126207
  process.exit(1);
@@ -126050,15 +126293,15 @@ __export(docs_exports, {
126050
126293
  default: () => docs_default,
126051
126294
  examples: () => examples22
126052
126295
  });
126053
- import { readFileSync as readFileSync51, existsSync as existsSync80 } from "fs";
126054
- import { resolve as resolve53, dirname as dirname38, join as join83 } from "path";
126296
+ import { readFileSync as readFileSync53, existsSync as existsSync81 } from "fs";
126297
+ import { resolve as resolve53, dirname as dirname38, join as join84 } from "path";
126055
126298
  import { fileURLToPath as fileURLToPath13 } from "url";
126056
126299
  function docsDir() {
126057
126300
  const thisFile = fileURLToPath13(import.meta.url);
126058
126301
  const dir = dirname38(thisFile);
126059
126302
  const devPath = resolve53(dir, "..", "docs");
126060
126303
  const builtPath = resolve53(dir, "docs");
126061
- return existsSync80(devPath) ? devPath : builtPath;
126304
+ return existsSync81(devPath) ? devPath : builtPath;
126062
126305
  }
126063
126306
  function formatInlineCode(line2) {
126064
126307
  return line2.replace(/`([^`]+)`/g, (_match, code) => c.accent(code));
@@ -126155,12 +126398,12 @@ var init_docs = __esm({
126155
126398
  }
126156
126399
  process.exit(1);
126157
126400
  }
126158
- const filePath = join83(docsDir(), entry.file);
126159
- if (!existsSync80(filePath)) {
126401
+ const filePath = join84(docsDir(), entry.file);
126402
+ if (!existsSync81(filePath)) {
126160
126403
  console.error(c.error(`Doc file not found: ${filePath}`));
126161
126404
  process.exit(1);
126162
126405
  }
126163
- const content = readFileSync51(filePath, "utf-8");
126406
+ const content = readFileSync53(filePath, "utf-8");
126164
126407
  console.log();
126165
126408
  renderMarkdown(content);
126166
126409
  }
@@ -126485,7 +126728,7 @@ __export(upgrade_exports, {
126485
126728
  default: () => upgrade_default,
126486
126729
  examples: () => examples24
126487
126730
  });
126488
- import { execFileSync as execFileSync12 } from "child_process";
126731
+ import { execFileSync as execFileSync13 } from "child_process";
126489
126732
  var examples24, upgrade_default;
126490
126733
  var init_upgrade = __esm({
126491
126734
  "src/commands/upgrade.ts"() {
@@ -126556,7 +126799,7 @@ var init_upgrade = __esm({
126556
126799
  console.log(` ${c.dim("Running:")} ${c.accent(installCmd)}`);
126557
126800
  console.log();
126558
126801
  try {
126559
- execFileSync12("npm", installArgs, { stdio: "inherit", shell: false });
126802
+ execFileSync13("npm", installArgs, { stdio: "inherit", shell: false });
126560
126803
  ye(c.success(`Upgraded to v${result.latest}`));
126561
126804
  } catch {
126562
126805
  ye(c.dim("Install failed. Try running manually:"));
@@ -126576,6 +126819,42 @@ var init_upgrade = __esm({
126576
126819
  }
126577
126820
  });
126578
126821
 
126822
+ // src/utils/submitFeedback.ts
126823
+ function cap(value, max) {
126824
+ if (value === void 0) return void 0;
126825
+ return value.length > max ? value.slice(0, max) : value;
126826
+ }
126827
+ async function submitFeedback(input2) {
126828
+ try {
126829
+ const apiBaseUrl2 = getPublishApiBaseUrl();
126830
+ await fetch(`${apiBaseUrl2}/v1/hyperframes/feedback`, {
126831
+ method: "POST",
126832
+ body: JSON.stringify({
126833
+ rating: input2.rating,
126834
+ comment: cap(input2.comment, MAX_COMMENT),
126835
+ cli_version: cap(input2.cliVersion, MAX_CLI_VERSION),
126836
+ env: cap(input2.env, MAX_ENV)
126837
+ }),
126838
+ headers: {
126839
+ "content-type": "application/json",
126840
+ heygen_route: "canary"
126841
+ },
126842
+ signal: AbortSignal.timeout(5e3)
126843
+ });
126844
+ } catch {
126845
+ }
126846
+ }
126847
+ var MAX_COMMENT, MAX_CLI_VERSION, MAX_ENV;
126848
+ var init_submitFeedback = __esm({
126849
+ "src/utils/submitFeedback.ts"() {
126850
+ "use strict";
126851
+ init_publishProject();
126852
+ MAX_COMMENT = 2e3;
126853
+ MAX_CLI_VERSION = 100;
126854
+ MAX_ENV = 500;
126855
+ }
126856
+ });
126857
+
126579
126858
  // src/utils/feedbackIssue.ts
126580
126859
  function normalizeRepoUrl(repoUrl) {
126581
126860
  const trimmed = repoUrl.trim().replace(/\/$/, "").replace(/\.git$/, "");
@@ -126721,6 +127000,7 @@ var init_feedback2 = __esm({
126721
127000
  init_client();
126722
127001
  init_feedback();
126723
127002
  init_publishProject();
127003
+ init_submitFeedback();
126724
127004
  init_feedbackIssue();
126725
127005
  init_version();
126726
127006
  init_colors();
@@ -126775,6 +127055,7 @@ var init_feedback2 = __esm({
126775
127055
  trackRenderFeedback({ rating, comment, doctorSummary });
126776
127056
  await flush();
126777
127057
  console.log(c.dim("Thanks for the feedback!"));
127058
+ await submitFeedback({ rating, comment, cliVersion: VERSION, env: doctorSummary });
126778
127059
  if (args["file-issue"] === true) {
126779
127060
  await fileGithubIssue({
126780
127061
  rating,
@@ -126985,9 +127266,9 @@ __export(validate_exports, {
126985
127266
  shouldIgnoreRequestFailure: () => shouldIgnoreRequestFailure,
126986
127267
  waitForPreferredSeekTarget: () => waitForPreferredSeekTarget
126987
127268
  });
126988
- import { existsSync as existsSync81, mkdtempSync as mkdtempSync6, readFileSync as readFileSync53, rmSync as rmSync19 } from "fs";
126989
- import { tmpdir as tmpdir8 } from "os";
126990
- import { join as join84, dirname as dirname39 } from "path";
127269
+ import { existsSync as existsSync83, mkdtempSync as mkdtempSync7, readFileSync as readFileSync54, rmSync as rmSync20 } from "fs";
127270
+ import { tmpdir as tmpdir9 } from "os";
127271
+ import { join as join85, dirname as dirname39 } from "path";
126991
127272
  import { fileURLToPath as fileURLToPath14 } from "url";
126992
127273
  function resolveNavigationTimeoutMs(optTimeout) {
126993
127274
  return Math.max(NAV_TIMEOUT_FLOOR_MS, optTimeout ?? 0);
@@ -127145,11 +127426,11 @@ async function runContrastAudit(page) {
127145
127426
  }
127146
127427
  function loadContrastAuditScript() {
127147
127428
  const candidates = [
127148
- join84(__dirname3, "contrast-audit.browser.js"),
127149
- join84(__dirname3, "commands", "contrast-audit.browser.js")
127429
+ join85(__dirname3, "contrast-audit.browser.js"),
127430
+ join85(__dirname3, "commands", "contrast-audit.browser.js")
127150
127431
  ];
127151
127432
  for (const candidate of candidates) {
127152
- if (existsSync81(candidate)) return readFileSync53(candidate, "utf-8");
127433
+ if (existsSync83(candidate)) return readFileSync54(candidate, "utf-8");
127153
127434
  }
127154
127435
  throw new Error("Missing contrast audit browser script");
127155
127436
  }
@@ -127161,7 +127442,7 @@ async function localizeRemoteAssets(html) {
127161
127442
  try {
127162
127443
  const { loadProducer: loadProducer2 } = await Promise.resolve().then(() => (init_producer(), producer_exports));
127163
127444
  const { localizeRemoteMediaSources: localizeRemoteMediaSources2, localizeRemoteImageSources: localizeRemoteImageSources2, localizeRemoteFontFaces: localizeRemoteFontFaces2 } = await loadProducer2();
127164
- dir = mkdtempSync6(join84(tmpdir8(), "hf-validate-assets-"));
127445
+ dir = mkdtempSync7(join85(tmpdir9(), "hf-validate-assets-"));
127165
127446
  const assetDir = dir;
127166
127447
  const media = await localizeRemoteMediaSources2(html, assetDir);
127167
127448
  const images = await localizeRemoteImageSources2(media.html, assetDir);
@@ -127170,10 +127451,10 @@ async function localizeRemoteAssets(html) {
127170
127451
  return {
127171
127452
  html: fonts.html,
127172
127453
  assetRoots: count > 0 ? [assetDir] : [],
127173
- cleanup: () => rmSync19(assetDir, { recursive: true, force: true })
127454
+ cleanup: () => rmSync20(assetDir, { recursive: true, force: true })
127174
127455
  };
127175
127456
  } catch {
127176
- if (dir) rmSync19(dir, { recursive: true, force: true });
127457
+ if (dir) rmSync20(dir, { recursive: true, force: true });
127177
127458
  return { html, assetRoots: [], cleanup: () => {
127178
127459
  } };
127179
127460
  }
@@ -127412,8 +127693,8 @@ __export(contactSheet_exports, {
127412
127693
  createSvgContactSheet: () => createSvgContactSheet
127413
127694
  });
127414
127695
  import sharp from "sharp";
127415
- import { readdirSync as readdirSync28, readFileSync as readFileSync54, writeFileSync as writeFileSync29, unlinkSync as unlinkSync7, existsSync as existsSync83 } from "fs";
127416
- import { join as join85, extname as extname14, basename as basename16, dirname as dirname40 } from "path";
127696
+ import { readdirSync as readdirSync28, readFileSync as readFileSync55, writeFileSync as writeFileSync30, unlinkSync as unlinkSync7, existsSync as existsSync84 } from "fs";
127697
+ import { join as join86, extname as extname15, basename as basename17, dirname as dirname40 } from "path";
127417
127698
  async function createContactSheet(imagePaths, outputPath, opts = {}) {
127418
127699
  const {
127419
127700
  cols = 3,
@@ -127446,7 +127727,7 @@ async function createContactSheet(imagePaths, outputPath, opts = {}) {
127446
127727
  overlays.push({ input: resized, left: x3, top: y + labelH });
127447
127728
  let labelText = `${i2 + 1}`;
127448
127729
  if (labelMode === "filename") {
127449
- labelText = `${i2 + 1}. ${basename16(files[i2]).replace(extname14(files[i2]), "")}`;
127730
+ labelText = `${i2 + 1}. ${basename17(files[i2]).replace(extname15(files[i2]), "")}`;
127450
127731
  } else if (labelMode === "custom" && labels?.[i2]) {
127451
127732
  labelText = `${i2 + 1}. ${labels[i2]}`;
127452
127733
  }
@@ -127492,10 +127773,10 @@ async function createContactSheetPages(imagePaths, outputBasePath, opts = {}, la
127492
127773
  return results;
127493
127774
  }
127494
127775
  async function createScrollContactSheet(screenshotsDir, outputPath) {
127495
- if (!existsSync83(screenshotsDir)) return [];
127776
+ if (!existsSync84(screenshotsDir)) return [];
127496
127777
  const scrollFiles = readdirSync28(screenshotsDir).filter((f3) => f3.startsWith("scroll-") && f3.endsWith(".png")).sort();
127497
127778
  if (scrollFiles.length === 0) return [];
127498
- const paths = scrollFiles.map((f3) => join85(screenshotsDir, f3));
127779
+ const paths = scrollFiles.map((f3) => join86(screenshotsDir, f3));
127499
127780
  const labels = scrollFiles.map((f3) => {
127500
127781
  const m2 = f3.match(/scroll-(\d+)\.png/);
127501
127782
  return m2 ? `${m2[1]}% scroll` : f3;
@@ -127509,10 +127790,10 @@ async function createScrollContactSheet(screenshotsDir, outputPath) {
127509
127790
  );
127510
127791
  }
127511
127792
  async function createSnapshotContactSheet(snapshotsDir, outputPath) {
127512
- if (!existsSync83(snapshotsDir)) return [];
127793
+ if (!existsSync84(snapshotsDir)) return [];
127513
127794
  const snapshotFiles = readdirSync28(snapshotsDir).filter((f3) => f3.startsWith("frame-") && f3.endsWith(".png")).sort();
127514
127795
  if (snapshotFiles.length === 0) return [];
127515
- const paths = snapshotFiles.map((f3) => join85(snapshotsDir, f3));
127796
+ const paths = snapshotFiles.map((f3) => join86(snapshotsDir, f3));
127516
127797
  const labels = snapshotFiles.map((f3) => {
127517
127798
  const m2 = f3.match(/at-([\d.]+)s/);
127518
127799
  return m2 ? `${m2[1]}s` : f3;
@@ -127526,11 +127807,11 @@ async function createSnapshotContactSheet(snapshotsDir, outputPath) {
127526
127807
  );
127527
127808
  }
127528
127809
  async function createAssetContactSheet(assetsDir, outputPath) {
127529
- if (!existsSync83(assetsDir)) return [];
127810
+ if (!existsSync84(assetsDir)) return [];
127530
127811
  const imageExts = /* @__PURE__ */ new Set([".png", ".jpg", ".jpeg", ".webp"]);
127531
- const assetFiles = readdirSync28(assetsDir).filter((f3) => imageExts.has(extname14(f3).toLowerCase()) && !f3.includes("contact-sheet")).sort();
127812
+ const assetFiles = readdirSync28(assetsDir).filter((f3) => imageExts.has(extname15(f3).toLowerCase()) && !f3.includes("contact-sheet")).sort();
127532
127813
  if (assetFiles.length === 0) return [];
127533
- const paths = assetFiles.map((f3) => join85(assetsDir, f3));
127814
+ const paths = assetFiles.map((f3) => join86(assetsDir, f3));
127534
127815
  return createContactSheetPages(paths, outputPath, {
127535
127816
  cols: 4,
127536
127817
  cellWidth: 480,
@@ -127540,7 +127821,7 @@ async function createAssetContactSheet(assetsDir, outputPath) {
127540
127821
  }
127541
127822
  async function createSvgContactSheet(svgsDir, outputPath, assetsRootDir) {
127542
127823
  const dirsToScan = [svgsDir, assetsRootDir].filter(
127543
- (d2) => d2 !== void 0 && existsSync83(d2)
127824
+ (d2) => d2 !== void 0 && existsSync84(d2)
127544
127825
  );
127545
127826
  if (dirsToScan.length === 0) return [];
127546
127827
  const seen = /* @__PURE__ */ new Set();
@@ -127549,7 +127830,7 @@ async function createSvgContactSheet(svgsDir, outputPath, assetsRootDir) {
127549
127830
  for (const f3 of readdirSync28(dir).filter((f4) => f4.endsWith(".svg")).sort()) {
127550
127831
  if (!seen.has(f3)) {
127551
127832
  seen.add(f3);
127552
- svgPaths.push(join85(dir, f3));
127833
+ svgPaths.push(join86(dir, f3));
127553
127834
  }
127554
127835
  }
127555
127836
  }
@@ -127561,14 +127842,14 @@ async function createSvgContactSheet(svgsDir, outputPath, assetsRootDir) {
127561
127842
  const labels = [];
127562
127843
  for (let i2 = 0; i2 < svgPaths.length; i2++) {
127563
127844
  const svgPath = svgPaths[i2];
127564
- const tmpPath = join85(tmpDir, `.thumb-${i2}.png`);
127845
+ const tmpPath = join86(tmpDir, `.thumb-${i2}.png`);
127565
127846
  try {
127566
- const svgBuf = readFileSync54(svgPath);
127847
+ const svgBuf = readFileSync55(svgPath);
127567
127848
  const thumb = await sharp(svgBuf).resize(thumbSize, thumbSize, {
127568
127849
  fit: "contain",
127569
127850
  background: { r: 245, g: 245, b: 245, alpha: 1 }
127570
127851
  }).flatten({ background: { r: 245, g: 245, b: 245 } }).png().toBuffer();
127571
- writeFileSync29(tmpPath, thumb);
127852
+ writeFileSync30(tmpPath, thumb);
127572
127853
  tmpPaths.push(tmpPath);
127573
127854
  labels.push(svgFileNames[i2].replace(".svg", ""));
127574
127855
  } catch {
@@ -133764,7 +134045,7 @@ var require_node_domexception = __commonJS({
133764
134045
 
133765
134046
  // ../../node_modules/.bun/fetch-blob@3.2.0/node_modules/fetch-blob/from.js
133766
134047
  import { statSync as statSync26, createReadStream as createReadStream4, promises as fs2 } from "fs";
133767
- import { basename as basename17 } from "path";
134048
+ import { basename as basename18 } from "path";
133768
134049
  var import_node_domexception, stat, blobFromSync, blobFrom, fileFrom, fileFromSync, fromBlob, fromFile, BlobDataItem;
133769
134050
  var init_from = __esm({
133770
134051
  "../../node_modules/.bun/fetch-blob@3.2.0/node_modules/fetch-blob/from.js"() {
@@ -133788,7 +134069,7 @@ var init_from = __esm({
133788
134069
  size: stat3.size,
133789
134070
  lastModified: stat3.mtimeMs,
133790
134071
  start: 0
133791
- })], basename17(path2), { type, lastModified: stat3.mtimeMs });
134072
+ })], basename18(path2), { type, lastModified: stat3.mtimeMs });
133792
134073
  BlobDataItem = class _BlobDataItem {
133793
134074
  #path;
133794
134075
  #start;
@@ -167343,9 +167624,9 @@ __export(snapshot_exports, {
167343
167624
  tailFrameTime: () => tailFrameTime
167344
167625
  });
167345
167626
  import { spawn as spawn16 } from "child_process";
167346
- import { existsSync as existsSync84, mkdtempSync as mkdtempSync7, readFileSync as readFileSync55, mkdirSync as mkdirSync39, rmSync as rmSync20, writeFileSync as writeFileSync30 } from "fs";
167347
- import { tmpdir as tmpdir9 } from "os";
167348
- import { resolve as resolve55, join as join86, relative as relative15, isAbsolute as isAbsolute14, basename as basename19 } from "path";
167627
+ import { existsSync as existsSync85, mkdtempSync as mkdtempSync8, readFileSync as readFileSync56, mkdirSync as mkdirSync39, rmSync as rmSync21, writeFileSync as writeFileSync31 } from "fs";
167628
+ import { tmpdir as tmpdir10 } from "os";
167629
+ import { resolve as resolve55, join as join87, relative as relative15, isAbsolute as isAbsolute14, basename as basename20 } from "path";
167349
167630
  function orbitStageSource() {
167350
167631
  return `function(cam) {
167351
167632
  var root = document.querySelector("[data-composition-id]")
@@ -167368,8 +167649,8 @@ function orbitStageSource() {
167368
167649
  }`;
167369
167650
  }
167370
167651
  async function extractVideoFrameToBuffer(videoPath, timeSeconds, useVp9AlphaDecoder = false) {
167371
- const tmp = mkdtempSync7(join86(tmpdir9(), "hf-snapshot-frame-"));
167372
- const outPath = join86(tmp, "frame.png");
167652
+ const tmp = mkdtempSync8(join87(tmpdir10(), "hf-snapshot-frame-"));
167653
+ const outPath = join87(tmp, "frame.png");
167373
167654
  try {
167374
167655
  const ffmpegPath = findFFmpeg();
167375
167656
  if (!ffmpegPath) return null;
@@ -167411,11 +167692,11 @@ async function extractVideoFrameToBuffer(videoPath, timeSeconds, useVp9AlphaDeco
167411
167692
  });
167412
167693
  }
167413
167694
  );
167414
- if (result.code !== 0 || result.timedOut || !existsSync84(outPath)) return null;
167415
- return readFileSync55(outPath);
167695
+ if (result.code !== 0 || result.timedOut || !existsSync85(outPath)) return null;
167696
+ return readFileSync56(outPath);
167416
167697
  } finally {
167417
167698
  try {
167418
- rmSync20(tmp, { recursive: true, force: true });
167699
+ rmSync21(tmp, { recursive: true, force: true });
167419
167700
  } catch {
167420
167701
  }
167421
167702
  }
@@ -167544,13 +167825,13 @@ async function captureSnapshots(projectDir, opts) {
167544
167825
  );
167545
167826
  }
167546
167827
  const cameraExpr = opts.angle && (opts.angle.yaw !== 0 || opts.angle.pitch !== 0) ? `(${orbitStageSource()})(${JSON.stringify(opts.angle)})` : null;
167547
- const snapshotDir = opts.outputDir ?? join86(projectDir, "snapshots");
167828
+ const snapshotDir = opts.outputDir ?? join87(projectDir, "snapshots");
167548
167829
  mkdirSync39(snapshotDir, { recursive: true });
167549
167830
  try {
167550
167831
  const { readdirSync: readdirSync35 } = await import("fs");
167551
167832
  for (const file of readdirSync35(snapshotDir)) {
167552
167833
  if (/\.(png|jpg|jpeg)$/i.test(file)) {
167553
- rmSync20(join86(snapshotDir, file), { force: true });
167834
+ rmSync21(join87(snapshotDir, file), { force: true });
167554
167835
  }
167555
167836
  }
167556
167837
  } catch {
@@ -167633,7 +167914,7 @@ async function captureSnapshots(projectDir, opts) {
167633
167914
  const decodedPath = decodeURIComponent(url.pathname).replace(/^\//, "");
167634
167915
  const candidate = resolve55(projectDir, decodedPath);
167635
167916
  const rel2 = relative15(projectDir, candidate);
167636
- if (!rel2.startsWith("..") && !isAbsolute14(rel2) && existsSync84(candidate)) {
167917
+ if (!rel2.startsWith("..") && !isAbsolute14(rel2) && existsSync85(candidate)) {
167637
167918
  ffmpegInput = candidate;
167638
167919
  inputIsLocal = true;
167639
167920
  } else if (url.protocol === "http:" || url.protocol === "https:") {
@@ -167667,7 +167948,7 @@ async function captureSnapshots(projectDir, opts) {
167667
167948
  }
167668
167949
  const timeLabel = `${time.toFixed(1)}s`;
167669
167950
  const filename = `frame-${String(i2).padStart(2, "0")}-at-${timeLabel}.png`;
167670
- const framePath = join86(snapshotDir, filename);
167951
+ const framePath = join87(snapshotDir, filename);
167671
167952
  await page.screenshot({ path: framePath, type: "png" });
167672
167953
  const rel = relative15(projectDir, framePath);
167673
167954
  savedPaths.push(rel.startsWith("..") || isAbsolute14(rel) ? framePath : rel);
@@ -167753,7 +168034,7 @@ var init_snapshot = __esm({
167753
168034
  const angleLabel = camera && (camera.yaw !== 0 || camera.pitch !== 0) ? ` ${c.dim(`(angle yaw ${camera.yaw}\xB0 pitch ${camera.pitch}\xB0)`)}` : "";
167754
168035
  console.log(`${c.accent("\u25C6")} Capturing ${label2} from ${c.accent(project.name)}${angleLabel}`);
167755
168036
  try {
167756
- const snapshotDir = args.output ? resolve55(String(args.output)) : join86(project.dir, "snapshots");
168037
+ const snapshotDir = args.output ? resolve55(String(args.output)) : join87(project.dir, "snapshots");
167757
168038
  const paths = await captureSnapshots(project.dir, {
167758
168039
  frames,
167759
168040
  timeout,
@@ -167780,7 +168061,7 @@ ${c.success("\u25C7")} ${paths.length} snapshots saved to ${args.output ? snaps
167780
168061
  const { createSnapshotContactSheet: createSnapshotContactSheet2 } = await Promise.resolve().then(() => (init_contactSheet(), contactSheet_exports));
167781
168062
  const sheets = await createSnapshotContactSheet2(
167782
168063
  snapshotDir,
167783
- join86(snapshotDir, "contact-sheet.jpg")
168064
+ join87(snapshotDir, "contact-sheet.jpg")
167784
168065
  );
167785
168066
  if (sheets.length > 0) {
167786
168067
  const label3 = sheets.length === 1 ? "contact-sheet.jpg" : `contact-sheet-1..${sheets.length}.jpg`;
@@ -167815,10 +168096,10 @@ ${c.success("\u25C7")} ${paths.length} snapshots saved to ${args.output ? snaps
167815
168096
  }
167816
168097
  const results = await Promise.allSettled(
167817
168098
  paths.map(async (p2) => {
167818
- const filename = basename19(p2);
167819
- const filePath = join86(snapshotDir, filename);
167820
- if (!existsSync84(filePath)) return { filename, desc: "file not found" };
167821
- const raw = readFileSync55(filePath);
168099
+ const filename = basename20(p2);
168100
+ const filePath = join87(snapshotDir, filename);
168101
+ if (!existsSync85(filePath)) return { filename, desc: "file not found" };
168102
+ const raw = readFileSync56(filePath);
167822
168103
  let imageData;
167823
168104
  let mimeType = "image/png";
167824
168105
  if (sharpFn) {
@@ -167854,8 +168135,8 @@ ${c.success("\u25C7")} ${paths.length} snapshots saved to ${args.output ? snaps
167854
168135
  descriptions.push(`## (error)`, `Gemini call failed: ${errMsg.slice(0, 120)}`, ``);
167855
168136
  }
167856
168137
  }
167857
- const descPath = join86(snapshotDir, "descriptions.md");
167858
- writeFileSync30(descPath, descriptions.join("\n"));
168138
+ const descPath = join87(snapshotDir, "descriptions.md");
168139
+ writeFileSync31(descPath, descriptions.join("\n"));
167859
168140
  console.log(` ${c.dim("descriptions.md")} (Gemini frame analysis)`);
167860
168141
  }
167861
168142
  } catch (descErr) {
@@ -167875,19 +168156,19 @@ ${c.error("\u2717")} Snapshot failed: ${msg}`);
167875
168156
  });
167876
168157
 
167877
168158
  // src/capture/assetDownloader.ts
167878
- import { writeFileSync as writeFileSync31, mkdirSync as mkdirSync40 } from "fs";
167879
- import { join as join87, extname as extname15 } from "path";
168159
+ import { writeFileSync as writeFileSync33, mkdirSync as mkdirSync40 } from "fs";
168160
+ import { join as join88, extname as extname16 } from "path";
167880
168161
  import { createHash as createHash12 } from "crypto";
167881
168162
  function svgContentHashSlug(svgSource, isLogo) {
167882
168163
  const hash2 = createHash12("sha1").update(svgSource).digest("hex").slice(0, 8);
167883
168164
  return isLogo ? `logo-${hash2}` : `svg-${hash2}`;
167884
168165
  }
167885
168166
  async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks) {
167886
- const assetsDir = join87(outputDir, "assets");
168167
+ const assetsDir = join88(outputDir, "assets");
167887
168168
  mkdirSync40(assetsDir, { recursive: true });
167888
168169
  const assets = [];
167889
168170
  const downloadedUrls = /* @__PURE__ */ new Set();
167890
- mkdirSync40(join87(outputDir, "assets", "svgs"), { recursive: true });
168171
+ mkdirSync40(join88(outputDir, "assets", "svgs"), { recursive: true });
167891
168172
  const usedSvgNames = /* @__PURE__ */ new Set();
167892
168173
  for (let i2 = 0; i2 < tokens.svgs.length && i2 < 30; i2++) {
167893
168174
  const svg = tokens.svgs[i2];
@@ -167903,7 +168184,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
167903
168184
  const name = `${finalSlug}.svg`;
167904
168185
  const localPath = `assets/svgs/${name}`;
167905
168186
  try {
167906
- writeFileSync31(join87(outputDir, localPath), svg.outerHTML, "utf-8");
168187
+ writeFileSync33(join88(outputDir, localPath), svg.outerHTML, "utf-8");
167907
168188
  assets.push({ url: "", localPath, type: "svg" });
167908
168189
  } catch {
167909
168190
  }
@@ -167911,12 +168192,12 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
167911
168192
  for (const icon of faviconLinks || []) {
167912
168193
  if (!icon.href) continue;
167913
168194
  try {
167914
- const ext = extname15(new URL(icon.href).pathname) || ".ico";
168195
+ const ext = extname16(new URL(icon.href).pathname) || ".ico";
167915
168196
  const name = `favicon${ext}`;
167916
168197
  const localPath = `assets/${name}`;
167917
168198
  const buffer = await fetchBuffer(icon.href);
167918
168199
  if (buffer) {
167919
- writeFileSync31(join87(outputDir, localPath), buffer);
168200
+ writeFileSync33(join88(outputDir, localPath), buffer);
167920
168201
  assets.push({ url: icon.href, localPath, type: "favicon" });
167921
168202
  break;
167922
168203
  }
@@ -167955,7 +168236,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
167955
168236
  const results = await Promise.allSettled(
167956
168237
  batch.map(async ({ url, isPoster, catalog }) => {
167957
168238
  const parsedUrl = new URL(url);
167958
- const pathExt = extname15(parsedUrl.pathname);
168239
+ const pathExt = extname16(parsedUrl.pathname);
167959
168240
  const ext = pathExt && pathExt.length <= 5 ? pathExt : ".jpg";
167960
168241
  const buffer = await fetchBuffer(url);
167961
168242
  if (!buffer) return null;
@@ -167981,7 +168262,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
167981
168262
  const name = `${slug}${ext}`;
167982
168263
  usedNames.add(slug);
167983
168264
  const localPath = `assets/${name}`;
167984
- writeFileSync31(join87(outputDir, localPath), buffer);
168265
+ writeFileSync33(join88(outputDir, localPath), buffer);
167985
168266
  assets.push({ url, localPath, type: "image" });
167986
168267
  imgIdx++;
167987
168268
  } catch {
@@ -167990,11 +168271,11 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
167990
168271
  }
167991
168272
  if (tokens.ogImage && !downloadedUrls.has(normalizeUrl(tokens.ogImage))) {
167992
168273
  try {
167993
- const ext = extname15(new URL(tokens.ogImage).pathname) || ".jpg";
168274
+ const ext = extname16(new URL(tokens.ogImage).pathname) || ".jpg";
167994
168275
  const localPath = `assets/og-image${ext}`;
167995
168276
  const buffer = await fetchBuffer(tokens.ogImage);
167996
168277
  if (buffer && buffer.length > 5e3) {
167997
- writeFileSync31(join87(outputDir, localPath), buffer);
168278
+ writeFileSync33(join88(outputDir, localPath), buffer);
167998
168279
  assets.push({ url: tokens.ogImage, localPath, type: "image" });
167999
168280
  }
168000
168281
  } catch {
@@ -168017,7 +168298,7 @@ function normalizeUrl(u) {
168017
168298
  }
168018
168299
  }
168019
168300
  async function downloadAndRewriteFonts(css, outputDir) {
168020
- const assetsDir = join87(outputDir, "assets", "fonts");
168301
+ const assetsDir = join88(outputDir, "assets", "fonts");
168021
168302
  mkdirSync40(assetsDir, { recursive: true });
168022
168303
  const fontUrlRegex = /url\(['"]?(https?:\/\/[^'")\s]+\.(?:woff2?|ttf|otf)[^'")\s]*?)['"]?\)/g;
168023
168304
  const fontUrls = /* @__PURE__ */ new Set();
@@ -168053,11 +168334,11 @@ async function downloadAndRewriteFonts(css, outputDir) {
168053
168334
  try {
168054
168335
  const urlObj = new URL(fontUrl);
168055
168336
  const filename = urlObj.pathname.split("/").pop() || `font-${count}.woff2`;
168056
- const localPath = join87(assetsDir, filename);
168337
+ const localPath = join88(assetsDir, filename);
168057
168338
  const relativePath = `assets/fonts/${filename}`;
168058
168339
  const buffer = await fetchBuffer(fontUrl);
168059
168340
  if (buffer) {
168060
- writeFileSync31(localPath, buffer);
168341
+ writeFileSync33(localPath, buffer);
168061
168342
  rewritten = rewritten.split(fontUrl).join(relativePath);
168062
168343
  familyCounts.set(family, familyCount + 1);
168063
168344
  count++;
@@ -168211,8 +168492,8 @@ __export(video_exports, {
168211
168492
  runVideoMode: () => runVideoMode,
168212
168493
  safeFilename: () => safeFilename
168213
168494
  });
168214
- import { createWriteStream as createWriteStream4, existsSync as existsSync85, mkdirSync as mkdirSync41, readFileSync as readFileSync56, unlinkSync as unlinkSync8 } from "fs";
168215
- import { resolve as resolve56, join as join88, basename as basename20 } from "path";
168495
+ import { createWriteStream as createWriteStream4, existsSync as existsSync86, mkdirSync as mkdirSync41, readFileSync as readFileSync57, unlinkSync as unlinkSync8 } from "fs";
168496
+ import { resolve as resolve56, join as join89, basename as basename21 } from "path";
168216
168497
  async function streamToFile(url, destPath) {
168217
168498
  const r2 = await safeFetch(url, {
168218
168499
  signal: AbortSignal.timeout(12e4),
@@ -168290,9 +168571,9 @@ function safeFilename(name) {
168290
168571
  return decoded.replace(/[^A-Za-z0-9._-]+/g, "_");
168291
168572
  }
168292
168573
  function findFilenameCollision(manifest, selected) {
168293
- const selectedName = safeFilename(selected.filename || basename20(selected.url));
168574
+ const selectedName = safeFilename(selected.filename || basename21(selected.url));
168294
168575
  return manifest.filter(
168295
- (e3) => e3.index !== selected.index && safeFilename(e3.filename || basename20(e3.url)) === selectedName
168576
+ (e3) => e3.index !== selected.index && safeFilename(e3.filename || basename21(e3.url)) === selectedName
168296
168577
  );
168297
168578
  }
168298
168579
  function pickManifestEntry(manifest, args) {
@@ -168331,11 +168612,11 @@ function pickManifestEntry(manifest, args) {
168331
168612
  }
168332
168613
  async function runVideoMode(args) {
168333
168614
  const projectDir = resolve56(args.project);
168334
- const directPath = join88(projectDir, "extracted", "video-manifest.json");
168335
- const w2hPath = join88(projectDir, "capture", "extracted", "video-manifest.json");
168336
- const manifestPath2 = existsSync85(directPath) ? directPath : w2hPath;
168615
+ const directPath = join89(projectDir, "extracted", "video-manifest.json");
168616
+ const w2hPath = join89(projectDir, "capture", "extracted", "video-manifest.json");
168617
+ const manifestPath2 = existsSync86(directPath) ? directPath : w2hPath;
168337
168618
  const isW2hLayout = manifestPath2 === w2hPath;
168338
- if (!existsSync85(manifestPath2)) {
168619
+ if (!existsSync86(manifestPath2)) {
168339
168620
  console.error(
168340
168621
  `${c.error("\u2717")} no video-manifest.json at ${directPath} or ${w2hPath}
168341
168622
  Was this directory produced by \`hyperframes capture\`?`
@@ -168345,7 +168626,7 @@ async function runVideoMode(args) {
168345
168626
  }
168346
168627
  let manifest;
168347
168628
  try {
168348
- manifest = JSON.parse(readFileSync56(manifestPath2, "utf-8"));
168629
+ manifest = JSON.parse(readFileSync57(manifestPath2, "utf-8"));
168349
168630
  } catch (e3) {
168350
168631
  console.error(`${c.error("\u2717")} video-manifest.json is malformed: ${e3.message}`);
168351
168632
  process.exitCode = 1;
@@ -168381,15 +168662,15 @@ async function runVideoMode(args) {
168381
168662
  const collisions = findFilenameCollision(manifest, entry);
168382
168663
  if (collisions.length > 0) {
168383
168664
  console.error(
168384
- `${c.error("\u2717")} filename "${safeFilename(entry.filename || basename20(entry.url))}" collides with manifest entr${collisions.length === 1 ? "y" : "ies"} ${collisions.map((co) => `[${co.index}]`).join(", ")}. Refusing to download \u2014 the on-disk file's bytes would not match the requested entry.`
168665
+ `${c.error("\u2717")} filename "${safeFilename(entry.filename || basename21(entry.url))}" collides with manifest entr${collisions.length === 1 ? "y" : "ies"} ${collisions.map((co) => `[${co.index}]`).join(", ")}. Refusing to download \u2014 the on-disk file's bytes would not match the requested entry.`
168385
168666
  );
168386
168667
  process.exitCode = 1;
168387
168668
  return;
168388
168669
  }
168389
- const outDir = isW2hLayout ? join88(projectDir, "capture", "assets", "videos") : join88(projectDir, "assets", "videos");
168670
+ const outDir = isW2hLayout ? join89(projectDir, "capture", "assets", "videos") : join89(projectDir, "assets", "videos");
168390
168671
  mkdirSync41(outDir, { recursive: true });
168391
- const fname = safeFilename(entry.filename || basename20(entry.url));
168392
- const outPath = join88(outDir, fname);
168672
+ const fname = safeFilename(entry.filename || basename21(entry.url));
168673
+ const outPath = join89(outDir, fname);
168393
168674
  const relPath = isW2hLayout ? `capture/assets/videos/${fname}` : `assets/videos/${fname}`;
168394
168675
  console.log(
168395
168676
  `${c.accent("\u25B8")} downloading [${entry.index}] ${entry.filename} (${entry.sourceWidth || entry.width}\xD7${entry.sourceHeight || entry.height})`
@@ -169632,8 +169913,8 @@ var init_designStyleExtractor = __esm({
169632
169913
  });
169633
169914
 
169634
169915
  // src/capture/fontMetadataExtractor.ts
169635
- import { readdirSync as readdirSync29, readFileSync as readFileSync57, writeFileSync as writeFileSync33, existsSync as existsSync86 } from "fs";
169636
- import { join as join89 } from "path";
169916
+ import { readdirSync as readdirSync29, readFileSync as readFileSync58, writeFileSync as writeFileSync34, existsSync as existsSync87 } from "fs";
169917
+ import { join as join90 } from "path";
169637
169918
  import * as fontkit from "fontkit";
169638
169919
  function isFontCollection(value) {
169639
169920
  return value.type === "TTC" || value.type === "DFont";
@@ -169641,10 +169922,10 @@ function isFontCollection(value) {
169641
169922
  function extractFontMetadata(fontsDir, outputPath) {
169642
169923
  const files = [];
169643
169924
  const unidentified = [];
169644
- if (existsSync86(fontsDir)) {
169925
+ if (existsSync87(fontsDir)) {
169645
169926
  const fontFiles = readdirSync29(fontsDir).filter((f3) => /\.(woff2?|ttf|otf)$/i.test(f3));
169646
169927
  for (const filename of fontFiles) {
169647
- const fullPath = join89(fontsDir, filename);
169928
+ const fullPath = join90(fontsDir, filename);
169648
169929
  const meta = readSingleFont(fullPath, filename);
169649
169930
  if (meta.identified) {
169650
169931
  files.push(meta);
@@ -169666,7 +169947,7 @@ function extractFontMetadata(fontsDir, outputPath) {
169666
169947
  tool: "fontkit"
169667
169948
  }
169668
169949
  };
169669
- writeFileSync33(outputPath, JSON.stringify(manifest, null, 2), "utf-8");
169950
+ writeFileSync34(outputPath, JSON.stringify(manifest, null, 2), "utf-8");
169670
169951
  return manifest;
169671
169952
  }
169672
169953
  function readSingleFont(fullPath, filename) {
@@ -169683,7 +169964,7 @@ function readSingleFont(fullPath, filename) {
169683
169964
  isIcon: false
169684
169965
  };
169685
169966
  try {
169686
- const buf = readFileSync57(fullPath);
169967
+ const buf = readFileSync58(fullPath);
169687
169968
  const created = fontkit.create(buf);
169688
169969
  const font = isFontCollection(created) ? created.fonts[0] : created;
169689
169970
  if (!font) return empty2;
@@ -169955,8 +170236,8 @@ var init_animationCataloger = __esm({
169955
170236
  });
169956
170237
 
169957
170238
  // src/capture/mediaCapture.ts
169958
- import { mkdirSync as mkdirSync43, writeFileSync as writeFileSync34, readdirSync as readdirSync30, readFileSync as readFileSync58, statSync as statSync27 } from "fs";
169959
- import { join as join90, extname as extname16 } from "path";
170239
+ import { mkdirSync as mkdirSync43, writeFileSync as writeFileSync35, readdirSync as readdirSync30, readFileSync as readFileSync59, statSync as statSync27 } from "fs";
170240
+ import { join as join91, extname as extname17 } from "path";
169960
170241
  async function saveLottieAnimations(discoveredLotties, lottieDir) {
169961
170242
  let savedCount = 0;
169962
170243
  const savedHashes = /* @__PURE__ */ new Set();
@@ -169988,7 +170269,7 @@ async function saveLottieAnimations(discoveredLotties, lottieDir) {
169988
170269
  const hash2 = buf.toString("base64").slice(0, 100);
169989
170270
  if (savedHashes.has(hash2)) continue;
169990
170271
  savedHashes.add(hash2);
169991
- writeFileSync34(join90(lottieDir, `animation-${savedCount}.lottie`), buf);
170272
+ writeFileSync35(join91(lottieDir, `animation-${savedCount}.lottie`), buf);
169992
170273
  savedCount++;
169993
170274
  continue;
169994
170275
  }
@@ -170006,7 +170287,7 @@ async function saveLottieAnimations(discoveredLotties, lottieDir) {
170006
170287
  } catch {
170007
170288
  continue;
170008
170289
  }
170009
- writeFileSync34(join90(lottieDir, `animation-${savedCount}.json`), jsonData, "utf-8");
170290
+ writeFileSync35(join91(lottieDir, `animation-${savedCount}.json`), jsonData, "utf-8");
170010
170291
  savedCount++;
170011
170292
  }
170012
170293
  } catch {
@@ -170016,22 +170297,22 @@ async function saveLottieAnimations(discoveredLotties, lottieDir) {
170016
170297
  }
170017
170298
  async function renderLottiePreviews(chromeBrowser, lottieDir, outputDir) {
170018
170299
  const manifest = [];
170019
- const previewDir = join90(lottieDir, "previews");
170300
+ const previewDir = join91(lottieDir, "previews");
170020
170301
  mkdirSync43(previewDir, { recursive: true });
170021
170302
  for (const file of readdirSync30(lottieDir)) {
170022
170303
  if (!file.endsWith(".json")) continue;
170023
170304
  try {
170024
- const raw = JSON.parse(readFileSync58(join90(lottieDir, file), "utf-8"));
170305
+ const raw = JSON.parse(readFileSync59(join91(lottieDir, file), "utf-8"));
170025
170306
  const fr = raw.fr || 30;
170026
170307
  const dur = ((raw.op || 0) - (raw.ip || 0)) / fr;
170027
170308
  const previewName = file.replace(".json", "-preview.png");
170028
- const fileSize = statSync27(join90(lottieDir, file)).size;
170309
+ const fileSize = statSync27(join91(lottieDir, file)).size;
170029
170310
  if (fileSize > 2e6) continue;
170030
170311
  let previewPage;
170031
170312
  try {
170032
170313
  previewPage = await chromeBrowser.newPage();
170033
170314
  await previewPage.setViewport({ width: 400, height: 400 });
170034
- const animData = JSON.parse(readFileSync58(join90(lottieDir, file), "utf-8"));
170315
+ const animData = JSON.parse(readFileSync59(join91(lottieDir, file), "utf-8"));
170035
170316
  const midFrame = Math.floor(((raw.op || 0) - (raw.ip || 0)) * 0.3);
170036
170317
  await previewPage.setContent(
170037
170318
  `<!DOCTYPE html>
@@ -170061,7 +170342,7 @@ async function renderLottiePreviews(chromeBrowser, lottieDir, outputDir) {
170061
170342
  await previewPage.waitForFunction(() => window.__READY === true, { timeout: 5e3 }).catch(() => {
170062
170343
  });
170063
170344
  await previewPage.screenshot({
170064
- path: join90(previewDir, previewName),
170345
+ path: join91(previewDir, previewName),
170065
170346
  type: "png",
170066
170347
  omitBackground: true
170067
170348
  });
@@ -170084,8 +170365,8 @@ async function renderLottiePreviews(chromeBrowser, lottieDir, outputDir) {
170084
170365
  }
170085
170366
  }
170086
170367
  if (manifest.length > 0) {
170087
- writeFileSync34(
170088
- join90(outputDir, "extracted", "lottie-manifest.json"),
170368
+ writeFileSync35(
170369
+ join91(outputDir, "extracted", "lottie-manifest.json"),
170089
170370
  JSON.stringify(manifest, null, 2),
170090
170371
  "utf-8"
170091
170372
  );
@@ -170095,7 +170376,7 @@ async function downloadVideoBody(srcUrl, filename, videosDir) {
170095
170376
  if (isPrivateUrl(srcUrl)) return null;
170096
170377
  let ext = "";
170097
170378
  try {
170098
- ext = extname16(new URL(srcUrl).pathname).toLowerCase();
170379
+ ext = extname17(new URL(srcUrl).pathname).toLowerCase();
170099
170380
  } catch {
170100
170381
  return null;
170101
170382
  }
@@ -170120,7 +170401,7 @@ async function downloadVideoBody(srcUrl, filename, videosDir) {
170120
170401
  }
170121
170402
  if (total < 1024) return null;
170122
170403
  const safe = /\.[a-z0-9]+$/i.test(filename) ? filename.replace(/[^\w.-]/g, "_") : `video${ext}`;
170123
- writeFileSync34(join90(videosDir, safe), Buffer.concat(chunks));
170404
+ writeFileSync35(join91(videosDir, safe), Buffer.concat(chunks));
170124
170405
  return `assets/videos/${safe}`;
170125
170406
  } catch {
170126
170407
  return null;
@@ -170182,9 +170463,9 @@ async function captureVideoManifest(page, outputDir, progress, opts) {
170182
170463
  }
170183
170464
  const merged = [...byKey.values()];
170184
170465
  if (merged.length === 0) return;
170185
- const videoManifestDir = join90(outputDir, "assets", "videos");
170466
+ const videoManifestDir = join91(outputDir, "assets", "videos");
170186
170467
  mkdirSync43(videoManifestDir, { recursive: true });
170187
- const previewDir = join90(videoManifestDir, "previews");
170468
+ const previewDir = join91(videoManifestDir, "previews");
170188
170469
  mkdirSync43(previewDir, { recursive: true });
170189
170470
  const videoManifest = [];
170190
170471
  const dlStart = Date.now();
@@ -170207,7 +170488,7 @@ async function captureVideoManifest(page, outputDir, progress, opts) {
170207
170488
  if (rect && rect.width >= 10) {
170208
170489
  await new Promise((r2) => setTimeout(r2, 200));
170209
170490
  await page.screenshot({
170210
- path: join90(previewDir, previewName),
170491
+ path: join91(previewDir, previewName),
170211
170492
  clip: {
170212
170493
  x: Math.max(0, rect.x),
170213
170494
  y: Math.max(0, rect.y),
@@ -170238,8 +170519,8 @@ async function captureVideoManifest(page, outputDir, progress, opts) {
170238
170519
  });
170239
170520
  }
170240
170521
  if (videoManifest.length > 0) {
170241
- writeFileSync34(
170242
- join90(outputDir, "extracted", "video-manifest.json"),
170522
+ writeFileSync35(
170523
+ join91(outputDir, "extracted", "video-manifest.json"),
170243
170524
  JSON.stringify(videoManifest, null, 2),
170244
170525
  "utf-8"
170245
170526
  );
@@ -170307,8 +170588,8 @@ var init_mediaCapture = __esm({
170307
170588
  });
170308
170589
 
170309
170590
  // src/capture/contentExtractor.ts
170310
- import { existsSync as existsSync87, readdirSync as readdirSync31, statSync as statSync28, readFileSync as readFileSync59 } from "fs";
170311
- import { basename as basename21, join as join91 } from "path";
170591
+ import { existsSync as existsSync88, readdirSync as readdirSync31, statSync as statSync28, readFileSync as readFileSync60 } from "fs";
170592
+ import { basename as basename23, join as join93 } from "path";
170312
170593
  async function detectLibraries(page, capturedShaders) {
170313
170594
  let detectedLibraries = [];
170314
170595
  try {
@@ -170475,7 +170756,7 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
170475
170756
  return response.text?.trim() || "";
170476
170757
  };
170477
170758
  }
170478
- const imageFiles = readdirSync31(join91(outputDir, "assets")).filter(
170759
+ const imageFiles = readdirSync31(join93(outputDir, "assets")).filter(
170479
170760
  (f3) => /\.(png|jpg|jpeg|webp|gif)$/i.test(f3)
170480
170761
  );
170481
170762
  const BATCH_SIZE = 20;
@@ -170483,10 +170764,10 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
170483
170764
  const batch = imageFiles.slice(i2, i2 + BATCH_SIZE);
170484
170765
  const results = await Promise.allSettled(
170485
170766
  batch.map(async (file) => {
170486
- const filePath = join91(outputDir, "assets", file);
170767
+ const filePath = join93(outputDir, "assets", file);
170487
170768
  const stat3 = statSync28(filePath);
170488
170769
  if (stat3.size > 4e6) return { file, caption: "" };
170489
- const buffer = readFileSync59(filePath);
170770
+ const buffer = readFileSync60(filePath);
170490
170771
  const base64 = buffer.toString("base64");
170491
170772
  const ext = file.split(".").pop()?.toLowerCase() || "png";
170492
170773
  const mimeType = ext === "jpg" ? "image/jpeg" : `image/${ext}`;
@@ -170517,12 +170798,12 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
170517
170798
  `${Object.keys(geminiCaptions).length} images captioned with ${providerName}`
170518
170799
  );
170519
170800
  const svgFiles = [];
170520
- const assetsDir = join91(outputDir, "assets");
170801
+ const assetsDir = join93(outputDir, "assets");
170521
170802
  for (const f3 of readdirSync31(assetsDir)) {
170522
170803
  if (/\.svg$/i.test(f3)) svgFiles.push({ file: f3, relPath: f3 });
170523
170804
  }
170524
- const svgsSubdir = join91(assetsDir, "svgs");
170525
- if (existsSync87(svgsSubdir)) {
170805
+ const svgsSubdir = join93(assetsDir, "svgs");
170806
+ if (existsSync88(svgsSubdir)) {
170526
170807
  for (const f3 of readdirSync31(svgsSubdir)) {
170527
170808
  if (/\.svg$/i.test(f3)) svgFiles.push({ file: f3, relPath: `svgs/${f3}` });
170528
170809
  }
@@ -170545,10 +170826,10 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
170545
170826
  const batch = svgFiles.slice(i2, i2 + SVG_BATCH);
170546
170827
  const results = await Promise.allSettled(
170547
170828
  batch.map(async ({ relPath }) => {
170548
- const filePath = join91(assetsDir, relPath);
170829
+ const filePath = join93(assetsDir, relPath);
170549
170830
  let pngBase64;
170550
170831
  try {
170551
- const svgSource = readFileSync59(filePath, "utf-8");
170832
+ const svgSource = readFileSync60(filePath, "utf-8");
170552
170833
  const lightFillHits = (svgSource.match(/fill\s*=\s*["'](#fff(fff)?|white|#[ef][ef][ef]|#[ef]{6})["']/gi) || []).length;
170553
170834
  const darkFillHits = (svgSource.match(/fill\s*=\s*["'](#000(000)?|black|#[0-3]{6}|#[0-3]{3})["']/gi) || []).length;
170554
170835
  const bg = lightFillHits > darkFillHits ? { r: 32, g: 32, b: 32 } : { r: 255, g: 255, b: 255 };
@@ -170603,11 +170884,11 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
170603
170884
  const uncaptionedLines = [];
170604
170885
  const svgLines = [];
170605
170886
  const fontLines = [];
170606
- const assetsPath = join91(outputDir, "assets");
170887
+ const assetsPath = join93(outputDir, "assets");
170607
170888
  try {
170608
170889
  for (const file of readdirSync31(assetsPath)) {
170609
170890
  if (file === "svgs" || file === "fonts" || file === "lottie" || file === "videos") continue;
170610
- const filePath = join91(assetsPath, file);
170891
+ const filePath = join93(assetsPath, file);
170611
170892
  const stat3 = statSync28(filePath);
170612
170893
  if (!stat3.isFile()) continue;
170613
170894
  const sizeKb = Math.round(stat3.size / 1024);
@@ -170636,7 +170917,7 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
170636
170917
  } catch {
170637
170918
  }
170638
170919
  try {
170639
- const svgsPath = join91(assetsPath, "svgs");
170920
+ const svgsPath = join93(assetsPath, "svgs");
170640
170921
  for (const file of readdirSync31(svgsPath)) {
170641
170922
  if (!file.endsWith(".svg")) continue;
170642
170923
  const svgMatch = tokens.svgs.find(
@@ -170655,7 +170936,7 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
170655
170936
  } catch {
170656
170937
  }
170657
170938
  try {
170658
- const fontsPath = join91(assetsPath, "fonts");
170939
+ const fontsPath = join93(assetsPath, "fonts");
170659
170940
  for (const file of readdirSync31(fontsPath)) {
170660
170941
  fontLines.push(`fonts/${file} \u2014 font file`);
170661
170942
  }
@@ -170664,11 +170945,11 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
170664
170945
  const videoLines = [];
170665
170946
  try {
170666
170947
  const manifest = JSON.parse(
170667
- readFileSync59(join91(outputDir, "extracted", "video-manifest.json"), "utf-8")
170948
+ readFileSync60(join93(outputDir, "extracted", "video-manifest.json"), "utf-8")
170668
170949
  );
170669
170950
  for (const v2 of manifest) {
170670
170951
  if (!v2.localPath) continue;
170671
- const base2 = basename21(v2.localPath) || v2.filename || "";
170952
+ const base2 = basename23(v2.localPath) || v2.filename || "";
170672
170953
  if (!base2) continue;
170673
170954
  const desc = (v2.caption || v2.heading || "").trim().replace(/\s+/g, " ").slice(0, 140) || "motion clip";
170674
170955
  const dimW = v2.sourceWidth || v2.width;
@@ -170691,8 +170972,8 @@ var agentPromptGenerator_exports = {};
170691
170972
  __export(agentPromptGenerator_exports, {
170692
170973
  generateAgentPrompt: () => generateAgentPrompt
170693
170974
  });
170694
- import { writeFileSync as writeFileSync35, readdirSync as readdirSync33, existsSync as existsSync88 } from "fs";
170695
- import { join as join93 } from "path";
170975
+ import { writeFileSync as writeFileSync36, readdirSync as readdirSync33, existsSync as existsSync89 } from "fs";
170976
+ import { join as join94 } from "path";
170696
170977
  function inferColorRole(hex) {
170697
170978
  const r2 = parseInt(hex.slice(1, 3), 16) / 255;
170698
170979
  const g = parseInt(hex.slice(3, 5), 16) / 255;
@@ -170711,9 +170992,9 @@ function inferColorRole(hex) {
170711
170992
  }
170712
170993
  function generateAgentPrompt(outputDir, url, tokens, _animations, hasScreenshot, hasLottie, hasShaders, _catalogedAssets, _detectedLibraries) {
170713
170994
  const prompt = buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShaders);
170714
- writeFileSync35(join93(outputDir, "AGENTS.md"), prompt, "utf-8");
170715
- writeFileSync35(join93(outputDir, "CLAUDE.md"), prompt, "utf-8");
170716
- writeFileSync35(join93(outputDir, ".cursorrules"), prompt, "utf-8");
170995
+ writeFileSync36(join94(outputDir, "AGENTS.md"), prompt, "utf-8");
170996
+ writeFileSync36(join94(outputDir, "CLAUDE.md"), prompt, "utf-8");
170997
+ writeFileSync36(join94(outputDir, ".cursorrules"), prompt, "utf-8");
170717
170998
  }
170718
170999
  function buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShaders) {
170719
171000
  const title = tokens.title || new URL(url).hostname.replace(/^www\./, "");
@@ -170722,8 +171003,8 @@ function buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShader
170722
171003
  (f3) => f3.family + (f3.variable && f3.weightRange ? ` (${f3.weightRange[0]}-${f3.weightRange[1]} variable)` : f3.weights.length > 0 ? ` (${f3.weights.join(",")})` : "")
170723
171004
  ).join(", ") || "none detected";
170724
171005
  function contactSheetRows(dir, baseFile, label2) {
170725
- const fullDir = join93(outputDir, dir);
170726
- if (!existsSync88(fullDir)) return [];
171006
+ const fullDir = join94(outputDir, dir);
171007
+ if (!existsSync89(fullDir)) return [];
170727
171008
  const baseName = baseFile.replace(/\.jpg$/, "");
170728
171009
  const escapedBase = baseName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
170729
171010
  const paginatedRe = new RegExp(`^${escapedBase}(?:-(\\d+))?\\.jpg$`);
@@ -170755,7 +171036,7 @@ function buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShader
170755
171036
  tableRows.push(
170756
171037
  `| \`extracted/tokens.json\` | Design tokens: ${tokens.colors.length} colors, ${tokens.fonts.length} fonts, ${tokens.headings?.length ?? 0} headings, ${tokens.ctas?.length ?? 0} CTAs |`
170757
171038
  );
170758
- if (existsSync88(join93(outputDir, "extracted", "design-styles.json"))) {
171039
+ if (existsSync89(join94(outputDir, "extracted", "design-styles.json"))) {
170759
171040
  tableRows.push(
170760
171041
  "| `extracted/design-styles.json` | Computed styles from live DOM: typography hierarchy, button/card/nav styles, spacing scale, border-radius, box shadows. Primary data source for DESIGN.md. |"
170761
171042
  );
@@ -170826,15 +171107,15 @@ var init_agentPromptGenerator = __esm({
170826
171107
  });
170827
171108
 
170828
171109
  // src/capture/scaffolding.ts
170829
- import { existsSync as existsSync89, writeFileSync as writeFileSync36, readFileSync as readFileSync60 } from "fs";
170830
- import { join as join94, resolve as resolve57 } from "path";
171110
+ import { existsSync as existsSync90, writeFileSync as writeFileSync37, readFileSync as readFileSync61 } from "fs";
171111
+ import { join as join95, resolve as resolve57 } from "path";
170831
171112
  function loadEnvFile(startDir) {
170832
171113
  try {
170833
171114
  let dir = resolve57(startDir);
170834
171115
  for (let i2 = 0; i2 < 5; i2++) {
170835
171116
  const envPath = resolve57(dir, ".env");
170836
171117
  try {
170837
- const envContent = readFileSync60(envPath, "utf-8");
171118
+ const envContent = readFileSync61(envPath, "utf-8");
170838
171119
  for (const line2 of envContent.split("\n")) {
170839
171120
  const trimmed = line2.trim();
170840
171121
  if (!trimmed || trimmed.startsWith("#")) continue;
@@ -170853,10 +171134,10 @@ function loadEnvFile(startDir) {
170853
171134
  }
170854
171135
  }
170855
171136
  async function generateProjectScaffold(outputDir, url, tokens, animationCatalog, hasScreenshots, hasLotties, hasShaders, catalogedAssets, progress, warnings, detectedLibraries) {
170856
- const metaPath = join94(outputDir, "meta.json");
170857
- if (!existsSync89(metaPath)) {
171137
+ const metaPath = join95(outputDir, "meta.json");
171138
+ if (!existsSync90(metaPath)) {
170858
171139
  const hostname = new URL(url).hostname.replace(/^www\./, "");
170859
- writeFileSync36(
171140
+ writeFileSync37(
170860
171141
  metaPath,
170861
171142
  JSON.stringify({ id: hostname + "-video", name: tokens.title || hostname }, null, 2),
170862
171143
  "utf-8"
@@ -170891,10 +171172,10 @@ var screenshotCapture_exports = {};
170891
171172
  __export(screenshotCapture_exports, {
170892
171173
  captureScrollScreenshots: () => captureScrollScreenshots
170893
171174
  });
170894
- import { writeFileSync as writeFileSync37, mkdirSync as mkdirSync44 } from "fs";
170895
- import { join as join95 } from "path";
171175
+ import { writeFileSync as writeFileSync38, mkdirSync as mkdirSync44 } from "fs";
171176
+ import { join as join96 } from "path";
170896
171177
  async function captureScrollScreenshots(page, outputDir) {
170897
- const screenshotsDir = join95(outputDir, "screenshots");
171178
+ const screenshotsDir = join96(outputDir, "screenshots");
170898
171179
  mkdirSync44(screenshotsDir, { recursive: true });
170899
171180
  const MAX_SCREENSHOTS = 20;
170900
171181
  const filePaths = [];
@@ -170986,9 +171267,9 @@ async function captureScrollScreenshots(page, outputDir) {
170986
171267
  finalPositions[i2] / Math.max(1, scrollHeight - viewportHeight) * 100
170987
171268
  );
170988
171269
  const filename = `scroll-${String(Math.min(pct, 100)).padStart(3, "0")}.png`;
170989
- const filePath = join95(screenshotsDir, filename);
171270
+ const filePath = join96(screenshotsDir, filename);
170990
171271
  const buffer = await page.screenshot({ type: "png" });
170991
- writeFileSync37(filePath, buffer);
171272
+ writeFileSync38(filePath, buffer);
170992
171273
  filePaths.push(`screenshots/${filename}`);
170993
171274
  }
170994
171275
  await page.evaluate(`window.scrollTo(0, 0)`);
@@ -171335,8 +171616,8 @@ var capture_exports = {};
171335
171616
  __export(capture_exports, {
171336
171617
  captureWebsite: () => captureWebsite
171337
171618
  });
171338
- import { mkdirSync as mkdirSync45, writeFileSync as writeFileSync38, existsSync as existsSync90 } from "fs";
171339
- import { join as join96 } from "path";
171619
+ import { mkdirSync as mkdirSync45, writeFileSync as writeFileSync39, existsSync as existsSync91 } from "fs";
171620
+ import { join as join97 } from "path";
171340
171621
  async function captureWebsite(opts, onProgress) {
171341
171622
  const {
171342
171623
  url,
@@ -171353,9 +171634,9 @@ async function captureWebsite(opts, onProgress) {
171353
171634
  onProgress?.(stage, detail);
171354
171635
  };
171355
171636
  loadEnvFile(outputDir);
171356
- mkdirSync45(join96(outputDir, "extracted"), { recursive: true });
171357
- mkdirSync45(join96(outputDir, "screenshots"), { recursive: true });
171358
- mkdirSync45(join96(outputDir, "assets"), { recursive: true });
171637
+ mkdirSync45(join97(outputDir, "extracted"), { recursive: true });
171638
+ mkdirSync45(join97(outputDir, "screenshots"), { recursive: true });
171639
+ mkdirSync45(join97(outputDir, "assets"), { recursive: true });
171359
171640
  progress("browser", "Launching headless Chrome...");
171360
171641
  const { ensureBrowser: ensureBrowser2 } = await Promise.resolve().then(() => (init_manager2(), manager_exports2));
171361
171642
  const browser = await ensureBrowser2();
@@ -171515,7 +171796,7 @@ async function captureWebsite(opts, onProgress) {
171515
171796
  } catch {
171516
171797
  }
171517
171798
  if (discoveredLotties.length > 0) {
171518
- const lottieDir = join96(outputDir, "assets", "lottie");
171799
+ const lottieDir = join97(outputDir, "assets", "lottie");
171519
171800
  mkdirSync45(lottieDir, { recursive: true });
171520
171801
  const savedCount = await saveLottieAnimations(discoveredLotties, lottieDir);
171521
171802
  if (savedCount > 0) {
@@ -171534,8 +171815,8 @@ async function captureWebsite(opts, onProgress) {
171534
171815
  return true;
171535
171816
  });
171536
171817
  capturedShaders = unique;
171537
- writeFileSync38(
171538
- join96(outputDir, "extracted", "shaders.json"),
171818
+ writeFileSync39(
171819
+ join97(outputDir, "extracted", "shaders.json"),
171539
171820
  JSON.stringify(unique, null, 2),
171540
171821
  "utf-8"
171541
171822
  );
@@ -171549,16 +171830,16 @@ async function captureWebsite(opts, onProgress) {
171549
171830
  ...tokens,
171550
171831
  svgs: tokens.svgs.map(({ outerHTML: _, ...rest }) => rest)
171551
171832
  };
171552
- writeFileSync38(
171553
- join96(outputDir, "extracted", "tokens.json"),
171833
+ writeFileSync39(
171834
+ join97(outputDir, "extracted", "tokens.json"),
171554
171835
  JSON.stringify(tokensForDisk, null, 2),
171555
171836
  "utf-8"
171556
171837
  );
171557
171838
  progress("style", "Extracting design styles...");
171558
171839
  try {
171559
171840
  const designStyles = await extractDesignStyles(page1);
171560
- writeFileSync38(
171561
- join96(outputDir, "extracted", "design-styles.json"),
171841
+ writeFileSync39(
171842
+ join97(outputDir, "extracted", "design-styles.json"),
171562
171843
  JSON.stringify(designStyles, null, 2),
171563
171844
  "utf-8"
171564
171845
  );
@@ -171637,8 +171918,8 @@ ${err.stack}` : normalizeErrorMessage(err);
171637
171918
  extracted.headHtml = await downloadAndRewriteFonts(extracted.headHtml, outputDir);
171638
171919
  try {
171639
171920
  const fontsManifest = extractFontMetadata(
171640
- join96(outputDir, "assets", "fonts"),
171641
- join96(outputDir, "extracted", "fonts-manifest.json")
171921
+ join97(outputDir, "assets", "fonts"),
171922
+ join97(outputDir, "extracted", "fonts-manifest.json")
171642
171923
  );
171643
171924
  if (fontsManifest.families.length > 0) {
171644
171925
  const summary = fontsManifest.families.map((f3) => `${f3.family}${f3.variable ? " (variable)" : ""} \xD7 ${f3.fileCount}`).join(", ");
@@ -171664,8 +171945,8 @@ ${err.stack}` : normalizeErrorMessage(err);
171664
171945
  scrollTriggeredElements: (animationCatalog.scrollTargets || []).length,
171665
171946
  representativeAnimations: representativeAnims
171666
171947
  };
171667
- writeFileSync38(
171668
- join96(outputDir, "extracted", "animations.json"),
171948
+ writeFileSync39(
171949
+ join97(outputDir, "extracted", "animations.json"),
171669
171950
  JSON.stringify(leanCatalog, null, 2),
171670
171951
  "utf-8"
171671
171952
  );
@@ -171695,8 +171976,8 @@ ${err.stack}` : normalizeErrorMessage(err);
171695
171976
  ...tokens,
171696
171977
  svgs: tokens.svgs.map(({ outerHTML: _, ...rest }) => rest)
171697
171978
  };
171698
- writeFileSync38(
171699
- join96(outputDir, "extracted", "tokens.json"),
171979
+ writeFileSync39(
171980
+ join97(outputDir, "extracted", "tokens.json"),
171700
171981
  JSON.stringify(tokensForDisk2, null, 2),
171701
171982
  "utf-8"
171702
171983
  );
@@ -171712,12 +171993,12 @@ ${extracted.bodyHtml}
171712
171993
  </body>
171713
171994
  </html>
171714
171995
  `;
171715
- writeFileSync38(join96(outputDir, "extracted", "page.html"), pageHtml, "utf-8");
171996
+ writeFileSync39(join97(outputDir, "extracted", "page.html"), pageHtml, "utf-8");
171716
171997
  } catch (err) {
171717
171998
  warnings.push(`page.html write failed: ${err}`);
171718
171999
  }
171719
172000
  if (visibleTextContent) {
171720
- writeFileSync38(join96(outputDir, "extracted", "visible-text.txt"), visibleTextContent, "utf-8");
172001
+ writeFileSync39(join97(outputDir, "extracted", "visible-text.txt"), visibleTextContent, "utf-8");
171721
172002
  }
171722
172003
  const geminiCaptions = await captionImagesWithGemini(outputDir, progress, warnings);
171723
172004
  progress("design", "Generating asset descriptions...");
@@ -171726,8 +172007,8 @@ ${extracted.bodyHtml}
171726
172007
  if (lines.length > 0) {
171727
172008
  const hasGeminiKey = !!(process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY);
171728
172009
  const header = hasGeminiKey ? "# Asset Descriptions\n\nOne line per file. Read this instead of opening every image individually.\n\nTo find a specific brand or icon, **grep this file for the brand name in the description text** (e.g. `grep -i 'autodesk' asset-descriptions.md`). The Gemini Vision captions identify what's actually in each file \u2014 that's the agent's selector.\n\nThe `logo-<hash>.svg` filename prefix is a cheap structural hint (DOM said this SVG was inside a `<header>`, home-link `<a>`, or had an aria-label matching the page brand). It is NOT a content claim \u2014 many `logo-*` files are nav icons or decorative shapes. Trust the captions, not the filename prefix.\n\n" : "# Asset Descriptions\n\n\u26A0\uFE0F GEMINI_API_KEY not set \u2014 descriptions below are catalog-derived (alt text, headings, section context, filename) instead of Vision-generated. To get richer Vision descriptions on the next capture, set GEMINI_API_KEY (or GOOGLE_API_KEY) and re-run.\n\nThe `logo-<hash>.svg` filename prefix is a structural hint (DOM said this SVG was inside a `<header>`, home-link `<a>`, or had an aria-label matching the page brand). To pick the actual brand logo without Vision, open the `logo-*` candidates in a previewer or rasterize them with `sharp` before referencing \u2014 composing a fake logo ships off-brand in the final video.\n\n";
171729
- writeFileSync38(
171730
- join96(outputDir, "extracted", "asset-descriptions.md"),
172010
+ writeFileSync39(
172011
+ join97(outputDir, "extracted", "asset-descriptions.md"),
171731
172012
  header + lines.map((l) => "- " + l).join("\n") + "\n",
171732
172013
  "utf-8"
171733
172014
  );
@@ -171742,19 +172023,19 @@ ${extracted.bodyHtml}
171742
172023
  try {
171743
172024
  const { createScrollContactSheet: createScrollContactSheet2, createAssetContactSheet: createAssetContactSheet2, createSvgContactSheet: createSvgContactSheet2 } = await Promise.resolve().then(() => (init_contactSheet(), contactSheet_exports));
171744
172025
  const scrollSheets = await createScrollContactSheet2(
171745
- join96(outputDir, "screenshots"),
171746
- join96(outputDir, "screenshots", "contact-sheet.jpg")
172026
+ join97(outputDir, "screenshots"),
172027
+ join97(outputDir, "screenshots", "contact-sheet.jpg")
171747
172028
  );
171748
172029
  if (scrollSheets.length > 0)
171749
172030
  progress(
171750
172031
  "design",
171751
172032
  `Screenshot contact sheet generated (${scrollSheets.length} page${scrollSheets.length > 1 ? "s" : ""})`
171752
172033
  );
171753
- const assetsImgDir = join96(outputDir, "assets");
171754
- if (existsSync90(assetsImgDir)) {
172034
+ const assetsImgDir = join97(outputDir, "assets");
172035
+ if (existsSync91(assetsImgDir)) {
171755
172036
  const assetSheets = await createAssetContactSheet2(
171756
172037
  assetsImgDir,
171757
- join96(outputDir, "assets", "contact-sheet.jpg")
172038
+ join97(outputDir, "assets", "contact-sheet.jpg")
171758
172039
  );
171759
172040
  if (assetSheets.length > 0)
171760
172041
  progress(
@@ -171762,9 +172043,9 @@ ${extracted.bodyHtml}
171762
172043
  `Asset contact sheet generated (${assetSheets.length} page${assetSheets.length > 1 ? "s" : ""})`
171763
172044
  );
171764
172045
  }
171765
- const svgsDir = join96(outputDir, "assets", "svgs");
171766
- const assetsRootDir = join96(outputDir, "assets");
171767
- const svgOutputPath = existsSync90(svgsDir) ? join96(outputDir, "assets", "svgs", "contact-sheet.jpg") : join96(outputDir, "assets", "contact-sheet-svgs.jpg");
172046
+ const svgsDir = join97(outputDir, "assets", "svgs");
172047
+ const assetsRootDir = join97(outputDir, "assets");
172048
+ const svgOutputPath = existsSync91(svgsDir) ? join97(outputDir, "assets", "svgs", "contact-sheet.jpg") : join97(outputDir, "assets", "contact-sheet-svgs.jpg");
171768
172049
  const svgSheets = await createSvgContactSheet2(svgsDir, svgOutputPath, assetsRootDir);
171769
172050
  if (svgSheets.length > 0)
171770
172051
  progress(
@@ -171780,7 +172061,7 @@ ${extracted.bodyHtml}
171780
172061
  animationCatalog,
171781
172062
  screenshots.length > 0,
171782
172063
  discoveredLotties.length > 0,
171783
- existsSync90(join96(outputDir, "extracted", "shaders.json")),
172064
+ existsSync91(join97(outputDir, "extracted", "shaders.json")),
171784
172065
  catalogedAssets,
171785
172066
  progress,
171786
172067
  warnings,
@@ -171926,14 +172207,14 @@ var init_capture2 = __esm({
171926
172207
  let outputName = args.output ?? "capture";
171927
172208
  let outputDir = resolve58(outputName);
171928
172209
  if (isDefaultOutput) {
171929
- const { existsSync: existsSync105 } = await import("fs");
172210
+ const { existsSync: existsSync107 } = await import("fs");
171930
172211
  let n2 = 2;
171931
- while (existsSync105(outputDir) && n2 < 100) {
172212
+ while (existsSync107(outputDir) && n2 < 100) {
171932
172213
  outputName = `capture-${n2}`;
171933
172214
  outputDir = resolve58(outputName);
171934
172215
  n2++;
171935
172216
  }
171936
- if (existsSync105(outputDir)) {
172217
+ if (existsSync107(outputDir)) {
171937
172218
  console.error(`./capture-{2..99} are all taken. Pass -o <name> to pick a directory.`);
171938
172219
  process.exit(1);
171939
172220
  }
@@ -172018,11 +172299,11 @@ var init_capture2 = __esm({
172018
172299
  } catch (err) {
172019
172300
  const errMsg = normalizeErrorMessage(err);
172020
172301
  try {
172021
- const { mkdirSync: mkdirSync56, writeFileSync: writeFileSync48 } = await import("fs");
172302
+ const { mkdirSync: mkdirSync56, writeFileSync: writeFileSync49 } = await import("fs");
172022
172303
  mkdirSync56(outputDir, { recursive: true });
172023
172304
  const isTimeout = /timeout|timed out/i.test(errMsg);
172024
172305
  const reason = isTimeout ? "Page navigation timed out \u2014 the site may be blocking headless browsers or requires authentication." : `Capture failed: ${errMsg}`;
172025
- writeFileSync48(
172306
+ writeFileSync49(
172026
172307
  `${outputDir}/BLOCKED.md`,
172027
172308
  `# Capture Failed
172028
172309
 
@@ -172065,33 +172346,33 @@ __export(state_exports, {
172065
172346
  stateFilePath: () => stateFilePath,
172066
172347
  writeStackOutputs: () => writeStackOutputs
172067
172348
  });
172068
- import { existsSync as existsSync91, mkdirSync as mkdirSync46, readdirSync as readdirSync34, readFileSync as readFileSync61, rmSync as rmSync21, writeFileSync as writeFileSync39 } from "fs";
172069
- import { dirname as dirname41, join as join97 } from "path";
172349
+ import { existsSync as existsSync93, mkdirSync as mkdirSync46, readdirSync as readdirSync34, readFileSync as readFileSync63, rmSync as rmSync23, writeFileSync as writeFileSync40 } from "fs";
172350
+ import { dirname as dirname41, join as join98 } from "path";
172070
172351
  function stateFilePath(stackName = DEFAULT_STACK_NAME, cwd = process.cwd()) {
172071
- return join97(cwd, STATE_DIR_NAME, `${STATE_FILE_PREFIX}${stackName}.json`);
172352
+ return join98(cwd, STATE_DIR_NAME, `${STATE_FILE_PREFIX}${stackName}.json`);
172072
172353
  }
172073
172354
  function writeStackOutputs(outputs, cwd = process.cwd()) {
172074
172355
  const path2 = stateFilePath(outputs.stackName, cwd);
172075
172356
  mkdirSync46(dirname41(path2), { recursive: true });
172076
- writeFileSync39(path2, JSON.stringify(outputs, null, 2) + "\n");
172357
+ writeFileSync40(path2, JSON.stringify(outputs, null, 2) + "\n");
172077
172358
  return path2;
172078
172359
  }
172079
172360
  function readStackOutputs(stackName = DEFAULT_STACK_NAME, cwd = process.cwd()) {
172080
172361
  const path2 = stateFilePath(stackName, cwd);
172081
- if (!existsSync91(path2)) return null;
172362
+ if (!existsSync93(path2)) return null;
172082
172363
  try {
172083
- return JSON.parse(readFileSync61(path2, "utf-8"));
172364
+ return JSON.parse(readFileSync63(path2, "utf-8"));
172084
172365
  } catch {
172085
172366
  return null;
172086
172367
  }
172087
172368
  }
172088
172369
  function deleteStackOutputs(stackName = DEFAULT_STACK_NAME, cwd = process.cwd()) {
172089
172370
  const path2 = stateFilePath(stackName, cwd);
172090
- if (existsSync91(path2)) rmSync21(path2);
172371
+ if (existsSync93(path2)) rmSync23(path2);
172091
172372
  }
172092
172373
  function listStackNames(cwd = process.cwd()) {
172093
- const dir = join97(cwd, STATE_DIR_NAME);
172094
- if (!existsSync91(dir)) return [];
172374
+ const dir = join98(cwd, STATE_DIR_NAME);
172375
+ if (!existsSync93(dir)) return [];
172095
172376
  return readdirSync34(dir).filter((f3) => f3.startsWith(STATE_FILE_PREFIX) && f3.endsWith(".json")).map((f3) => f3.slice(STATE_FILE_PREFIX.length, -".json".length));
172096
172377
  }
172097
172378
  function requireStack(stackName, cwd = process.cwd()) {
@@ -172120,12 +172401,12 @@ var init_state = __esm({
172120
172401
  });
172121
172402
 
172122
172403
  // src/commands/lambda/sam.ts
172123
- import { execFileSync as execFileSync13, spawnSync as spawnSync5 } from "child_process";
172124
- import { existsSync as existsSync93 } from "fs";
172125
- import { join as join98 } from "path";
172404
+ import { execFileSync as execFileSync14, spawnSync as spawnSync5 } from "child_process";
172405
+ import { existsSync as existsSync94 } from "fs";
172406
+ import { join as join99 } from "path";
172126
172407
  function assertSamAvailable() {
172127
172408
  try {
172128
- execFileSync13("sam", ["--version"], { stdio: "ignore" });
172409
+ execFileSync14("sam", ["--version"], { stdio: "ignore" });
172129
172410
  } catch {
172130
172411
  throw new Error(
172131
172412
  "`sam` CLI not found on PATH. Install AWS SAM CLI from https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html and retry."
@@ -172134,7 +172415,7 @@ function assertSamAvailable() {
172134
172415
  }
172135
172416
  function assertAwsCliAvailable() {
172136
172417
  try {
172137
- execFileSync13("aws", ["--version"], { stdio: "ignore" });
172418
+ execFileSync14("aws", ["--version"], { stdio: "ignore" });
172138
172419
  } catch {
172139
172420
  throw new Error(
172140
172421
  "`aws` CLI not found on PATH. Install from https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html and configure credentials before retrying."
@@ -172142,8 +172423,8 @@ function assertAwsCliAvailable() {
172142
172423
  }
172143
172424
  }
172144
172425
  function locateSamTemplate(repoRoot2) {
172145
- const candidate = join98(repoRoot2, "examples", "aws-lambda", "template.yaml");
172146
- if (!existsSync93(candidate)) {
172426
+ const candidate = join99(repoRoot2, "examples", "aws-lambda", "template.yaml");
172427
+ if (!existsSync94(candidate)) {
172147
172428
  throw new Error(
172148
172429
  `[lambda] SAM template not found at ${candidate}. If you're running from an installed package, point --sam-template at your local copy of examples/aws-lambda/template.yaml.`
172149
172430
  );
@@ -172176,7 +172457,7 @@ function samDeploy(opts) {
172176
172457
  if (opts.awsProfile) {
172177
172458
  args.push("--profile", opts.awsProfile);
172178
172459
  }
172179
- const samDir = join98(opts.repoRoot, "examples", "aws-lambda");
172460
+ const samDir = join99(opts.repoRoot, "examples", "aws-lambda");
172180
172461
  const result = spawnSync5("sam", args, { cwd: samDir, stdio: opts.stdio ?? "inherit" });
172181
172462
  if (result.status !== 0) {
172182
172463
  throw new Error(`[lambda] sam deploy exited with code ${result.status ?? "unknown"}`);
@@ -172188,7 +172469,7 @@ function samDelete(opts) {
172188
172469
  if (opts.awsProfile) {
172189
172470
  args.push("--profile", opts.awsProfile);
172190
172471
  }
172191
- const samDir = join98(opts.repoRoot, "examples", "aws-lambda");
172472
+ const samDir = join99(opts.repoRoot, "examples", "aws-lambda");
172192
172473
  const result = spawnSync5("sam", args, { cwd: samDir, stdio: opts.stdio ?? "inherit" });
172193
172474
  if (result.status !== 0) {
172194
172475
  throw new Error(`[lambda] sam delete exited with code ${result.status ?? "unknown"}`);
@@ -172211,7 +172492,7 @@ function fetchStackOutputs(opts) {
172211
172492
  if (opts.awsProfile) {
172212
172493
  args.unshift("--profile", opts.awsProfile);
172213
172494
  }
172214
- const out = execFileSync13("aws", args, { encoding: "utf-8" });
172495
+ const out = execFileSync14("aws", args, { encoding: "utf-8" });
172215
172496
  const parsed = JSON.parse(out);
172216
172497
  const byKey = new Map(parsed.map((o) => [o.OutputKey, o.OutputValue]));
172217
172498
  const bucketName = byKey.get("RenderBucketName");
@@ -172238,17 +172519,17 @@ var init_sam = __esm({
172238
172519
  });
172239
172520
 
172240
172521
  // src/commands/lambda/repoRoot.ts
172241
- import { existsSync as existsSync94 } from "fs";
172522
+ import { existsSync as existsSync95 } from "fs";
172242
172523
  import { dirname as dirname42, resolve as resolve59 } from "path";
172243
172524
  import { fileURLToPath as fileURLToPath15 } from "url";
172244
172525
  function repoRoot() {
172245
172526
  const override = process.env.HYPERFRAMES_REPO_ROOT;
172246
- if (override && existsSync94(resolve59(override, "packages", "aws-lambda", "package.json"))) {
172527
+ if (override && existsSync95(resolve59(override, "packages", "aws-lambda", "package.json"))) {
172247
172528
  return override;
172248
172529
  }
172249
172530
  let dir = dirname42(fileURLToPath15(import.meta.url));
172250
172531
  for (let depth = 0; depth < 12; depth++) {
172251
- if (existsSync94(resolve59(dir, "packages", "aws-lambda", "package.json"))) {
172532
+ if (existsSync95(resolve59(dir, "packages", "aws-lambda", "package.json"))) {
172252
172533
  return dir;
172253
172534
  }
172254
172535
  const parent = dirname42(dir);
@@ -172271,8 +172552,8 @@ __export(deploy_exports, {
172271
172552
  runDeploy: () => runDeploy
172272
172553
  });
172273
172554
  import { spawnSync as spawnSync6 } from "child_process";
172274
- import { existsSync as existsSync95 } from "fs";
172275
- import { join as join99, resolve as resolve60 } from "path";
172555
+ import { existsSync as existsSync96 } from "fs";
172556
+ import { join as join100, resolve as resolve60 } from "path";
172276
172557
  async function runDeploy(args = {}) {
172277
172558
  const resolved = {
172278
172559
  stackName: args.stackName ?? DEFAULT_STACK_NAME,
@@ -172289,8 +172570,8 @@ async function runDeploy(args = {}) {
172289
172570
  console.log(c.dim("\u2192 Building handler ZIP"));
172290
172571
  buildHandlerZip(root);
172291
172572
  } else {
172292
- const zip = join99(root, "packages", "aws-lambda", "dist", "handler.zip");
172293
- if (!existsSync95(zip)) {
172573
+ const zip = join100(root, "packages", "aws-lambda", "dist", "handler.zip");
172574
+ if (!existsSync96(zip)) {
172294
172575
  throw new Error(
172295
172576
  `--skip-build set but ${zip} does not exist. Run \`bun run --cwd packages/aws-lambda build:zip\` first or drop --skip-build.`
172296
172577
  );
@@ -172333,7 +172614,7 @@ async function runDeploy(args = {}) {
172333
172614
  function buildHandlerZip(root) {
172334
172615
  const result = spawnSync6(
172335
172616
  "bun",
172336
- ["run", "--cwd", join99(root, "packages", "aws-lambda"), "build:zip"],
172617
+ ["run", "--cwd", join100(root, "packages", "aws-lambda"), "build:zip"],
172337
172618
  { stdio: "inherit" }
172338
172619
  );
172339
172620
  if (result.status !== 0) {
@@ -172402,14 +172683,14 @@ var init_sites = __esm({
172402
172683
  });
172403
172684
 
172404
172685
  // src/commands/lambda/_dimensions.ts
172405
- import { readFileSync as readFileSync63 } from "fs";
172406
- import { join as join100 } from "path";
172686
+ import { readFileSync as readFileSync64 } from "fs";
172687
+ import { join as join101 } from "path";
172407
172688
  function warnOnDimensionMismatch(args) {
172408
172689
  if (args.quiet) return;
172409
172690
  if (args.outputResolution) return;
172410
172691
  let html;
172411
172692
  try {
172412
- html = readFileSync63(join100(args.projectDir, "index.html"), "utf-8");
172693
+ html = readFileSync64(join101(args.projectDir, "index.html"), "utf-8");
172413
172694
  } catch {
172414
172695
  return;
172415
172696
  }
@@ -172437,8 +172718,8 @@ var render_exports2 = {};
172437
172718
  __export(render_exports2, {
172438
172719
  runRender: () => runRender
172439
172720
  });
172440
- import { existsSync as existsSync96 } from "fs";
172441
- import { join as join101, resolve as resolvePath2 } from "path";
172721
+ import { existsSync as existsSync97 } from "fs";
172722
+ import { join as join103, resolve as resolvePath2 } from "path";
172442
172723
  async function loadSDK2() {
172443
172724
  return import("@hyperframes/aws-lambda/sdk");
172444
172725
  }
@@ -172454,8 +172735,8 @@ async function runRender(args) {
172454
172735
  });
172455
172736
  const variables = resolveVariablesArg(args.variables, args.variablesFile);
172456
172737
  if (variables && Object.keys(variables).length > 0) {
172457
- const indexPath2 = join101(projectDir, "index.html");
172458
- if (existsSync96(indexPath2)) {
172738
+ const indexPath2 = join103(projectDir, "index.html");
172739
+ if (existsSync97(indexPath2)) {
172459
172740
  const issues = validateVariablesAgainstProject(indexPath2, variables);
172460
172741
  reportVariableIssues(issues, { strict: args.strictVariables ?? false, quiet: args.json });
172461
172742
  } else if (args.strictVariables && !args.json) {
@@ -172579,8 +172860,8 @@ __export(render_batch_exports, {
172579
172860
  runRenderBatch: () => runRenderBatch,
172580
172861
  runWithConcurrencyLimit: () => runWithConcurrencyLimit
172581
172862
  });
172582
- import { existsSync as existsSync97, readFileSync as readFileSync64 } from "fs";
172583
- import { join as join103, resolve as resolvePath3 } from "path";
172863
+ import { existsSync as existsSync98, readFileSync as readFileSync65 } from "fs";
172864
+ import { join as join104, resolve as resolvePath3 } from "path";
172584
172865
  async function loadSDK3() {
172585
172866
  return import("@hyperframes/aws-lambda/sdk");
172586
172867
  }
@@ -172588,7 +172869,7 @@ async function runRenderBatch(args) {
172588
172869
  const projectDir = resolvePath3(args.projectDir);
172589
172870
  const stack = requireStack(args.stackName);
172590
172871
  const batchPath = resolvePath3(args.batch);
172591
- if (!existsSync97(batchPath)) {
172872
+ if (!existsSync98(batchPath)) {
172592
172873
  errorBox("Batch file not found", `No such file: ${batchPath}`);
172593
172874
  process.exit(1);
172594
172875
  }
@@ -172604,7 +172885,7 @@ async function runRenderBatch(args) {
172604
172885
  outputResolution: args.outputResolution,
172605
172886
  quiet: args.json
172606
172887
  });
172607
- const schema = loadProjectVariableSchema(join103(projectDir, "index.html"));
172888
+ const schema = loadProjectVariableSchema(join104(projectDir, "index.html"));
172608
172889
  const strict = args.strictVariables ?? false;
172609
172890
  let hadStrictIssue = false;
172610
172891
  for (const { entry, lineNumber } of entries2) {
@@ -172732,7 +173013,7 @@ function makePlaceholderSiteHandle(siteId, bucketName) {
172732
173013
  };
172733
173014
  }
172734
173015
  function parseBatchFile(path2) {
172735
- const raw = readFileSync64(path2, "utf8");
173016
+ const raw = readFileSync65(path2, "utf8");
172736
173017
  const lines = raw.split(/\r?\n/);
172737
173018
  const out = [];
172738
173019
  for (let i2 = 0; i2 < lines.length; i2++) {
@@ -172924,7 +173205,7 @@ __export(policies_exports, {
172924
173205
  runPolicies: () => runPolicies,
172925
173206
  validatePolicy: () => validatePolicy
172926
173207
  });
172927
- import { readFileSync as readFileSync65 } from "fs";
173208
+ import { readFileSync as readFileSync66 } from "fs";
172928
173209
  function allRequiredActions() {
172929
173210
  const set = /* @__PURE__ */ new Set();
172930
173211
  for (const group of Object.values(REQUIRED_ACTIONS)) {
@@ -173030,7 +173311,7 @@ async function runPolicies(args) {
173030
173311
  }
173031
173312
  }
173032
173313
  function validatePolicy(policyPath) {
173033
- const raw = readFileSync65(policyPath, "utf-8");
173314
+ const raw = readFileSync66(policyPath, "utf-8");
173034
173315
  const parsed = JSON.parse(raw);
173035
173316
  const statements = Array.isArray(parsed.Statement) ? parsed.Statement : parsed.Statement ? [
173036
173317
  parsed.Statement
@@ -173625,18 +173906,18 @@ __export(cloudrun_exports, {
173625
173906
  });
173626
173907
  import { spawnSync as spawnSync7 } from "child_process";
173627
173908
  import { createRequire as createRequire4 } from "module";
173628
- import { existsSync as existsSync98, mkdirSync as mkdirSync47, readFileSync as readFileSync66, writeFileSync as writeFileSync40 } from "fs";
173629
- import { homedir as homedir14 } from "os";
173630
- import { dirname as dirname43, join as join104, resolve as resolve61 } from "path";
173909
+ import { existsSync as existsSync99, mkdirSync as mkdirSync47, readFileSync as readFileSync67, writeFileSync as writeFileSync41 } from "fs";
173910
+ import { homedir as homedir16 } from "os";
173911
+ import { dirname as dirname43, join as join105, resolve as resolve61 } from "path";
173631
173912
  function stateDir() {
173632
- return join104(homedir14(), ".hyperframes");
173913
+ return join105(homedir16(), ".hyperframes");
173633
173914
  }
173634
173915
  function statePath() {
173635
- return join104(stateDir(), "cloudrun-state.json");
173916
+ return join105(stateDir(), "cloudrun-state.json");
173636
173917
  }
173637
173918
  function writeState(state) {
173638
173919
  mkdirSync47(stateDir(), { recursive: true });
173639
- writeFileSync40(statePath(), JSON.stringify(state, null, 2));
173920
+ writeFileSync41(statePath(), JSON.stringify(state, null, 2));
173640
173921
  }
173641
173922
  function readState(args) {
173642
173923
  const overrides = {
@@ -173644,9 +173925,9 @@ function readState(args) {
173644
173925
  region: args.region
173645
173926
  };
173646
173927
  let base2 = {};
173647
- if (existsSync98(statePath())) {
173928
+ if (existsSync99(statePath())) {
173648
173929
  try {
173649
- base2 = JSON.parse(readFileSync66(statePath(), "utf8"));
173930
+ base2 = JSON.parse(readFileSync67(statePath(), "utf8"));
173650
173931
  } catch {
173651
173932
  }
173652
173933
  }
@@ -173666,7 +173947,7 @@ function stripUndefined2(o) {
173666
173947
  function terraformDir() {
173667
173948
  const require3 = createRequire4(import.meta.url);
173668
173949
  const pkgJson = require3.resolve("@hyperframes/gcp-cloud-run/package.json");
173669
- return join104(dirname43(pkgJson), "terraform");
173950
+ return join105(dirname43(pkgJson), "terraform");
173670
173951
  }
173671
173952
  function run(cmd, cmdArgs, opts = {}) {
173672
173953
  const res = spawnSync7(cmd, cmdArgs, { stdio: "inherit", cwd: opts.cwd });
@@ -173793,13 +174074,13 @@ function machineVars(args, project, region, image) {
173793
174074
  }
173794
174075
  function findRepoRoot(tfDir) {
173795
174076
  const candidate = resolve61(tfDir, "..", "..", "..");
173796
- if (existsSync98(join104(candidate, "packages", "gcp-cloud-run", "Dockerfile"))) return candidate;
174077
+ if (existsSync99(join105(candidate, "packages", "gcp-cloud-run", "Dockerfile"))) return candidate;
173797
174078
  return null;
173798
174079
  }
173799
174080
  function writeCloudBuildConfig(image) {
173800
- const cfgPath = join104(stateDir(), "cloudrun-cloudbuild.yaml");
174081
+ const cfgPath = join105(stateDir(), "cloudrun-cloudbuild.yaml");
173801
174082
  mkdirSync47(stateDir(), { recursive: true });
173802
- writeFileSync40(
174083
+ writeFileSync41(
173803
174084
  cfgPath,
173804
174085
  [
173805
174086
  "steps:",
@@ -173944,7 +174225,7 @@ async function runRenderBatch2(args) {
173944
174225
  console.error(`[cloudrun render-batch] --fps must be 24, 30, or 60; got ${fps}.`);
173945
174226
  process.exit(1);
173946
174227
  }
173947
- if (!existsSync98(resolve61(batchPath))) {
174228
+ if (!existsSync99(resolve61(batchPath))) {
173948
174229
  console.error(`[cloudrun render-batch] batch file not found: ${batchPath}`);
173949
174230
  process.exit(1);
173950
174231
  }
@@ -174011,7 +174292,7 @@ async function runRenderBatch2(args) {
174011
174292
  if (failed.length > 0) process.exit(1);
174012
174293
  }
174013
174294
  function parseBatchFile2(path2) {
174014
- const lines = readFileSync66(path2, "utf8").split(/\r?\n/);
174295
+ const lines = readFileSync67(path2, "utf8").split(/\r?\n/);
174015
174296
  const entries2 = [];
174016
174297
  lines.forEach((line2, idx) => {
174017
174298
  const trimmed = line2.trim();
@@ -174035,7 +174316,7 @@ function parseBatchFile2(path2) {
174035
174316
  }
174036
174317
  function runDestroy2(args) {
174037
174318
  const tfDir = terraformDir();
174038
- const state = existsSync98(statePath()) ? JSON.parse(readFileSync66(statePath(), "utf8")) : {};
174319
+ const state = existsSync99(statePath()) ? JSON.parse(readFileSync67(statePath(), "utf8")) : {};
174039
174320
  const project = args.project ?? state.projectId;
174040
174321
  const region = args.region ?? state.region ?? "us-central1";
174041
174322
  const image = args.image ?? "unused:latest";
@@ -174083,8 +174364,8 @@ function resolveAndValidateVariables(args, projectDir) {
174083
174364
  args["variables-file"]
174084
174365
  );
174085
174366
  if (variables && Object.keys(variables).length > 0) {
174086
- const indexPath2 = join104(projectDir, "index.html");
174087
- if (existsSync98(indexPath2)) {
174367
+ const indexPath2 = join105(projectDir, "index.html");
174368
+ if (existsSync99(indexPath2)) {
174088
174369
  const issues = validateVariablesAgainstProject(indexPath2, variables);
174089
174370
  reportVariableIssues(issues, {
174090
174371
  strict: Boolean(args["strict-variables"]),
@@ -174314,7 +174595,7 @@ ${HELP2}`);
174314
174595
  });
174315
174596
 
174316
174597
  // src/cloud/detectAspectRatio.ts
174317
- import { readFileSync as readFileSync67 } from "fs";
174598
+ import { readFileSync as readFileSync68 } from "fs";
174318
174599
  function extractAttributeNumber(tag, re2) {
174319
174600
  const match = tag.match(re2);
174320
174601
  if (!match) return null;
@@ -174326,7 +174607,7 @@ function extractAttributeNumber(tag, re2) {
174326
174607
  function detectAspectRatioFromHtml(entryHtmlPath) {
174327
174608
  let html;
174328
174609
  try {
174329
- html = readFileSync67(entryHtmlPath, "utf-8");
174610
+ html = readFileSync68(entryHtmlPath, "utf-8");
174330
174611
  } catch (err) {
174331
174612
  return { kind: "read-error", error: normalizeErrorMessage(err) };
174332
174613
  }
@@ -175097,15 +175378,15 @@ var init_browser2 = __esm({
175097
175378
  });
175098
175379
 
175099
175380
  // src/auth/paths.ts
175100
- import { homedir as homedir15 } from "os";
175101
- import { join as join105 } from "path";
175381
+ import { homedir as homedir17 } from "os";
175382
+ import { join as join106 } from "path";
175102
175383
  function configDir() {
175103
175384
  const override = process.env["HEYGEN_CONFIG_DIR"];
175104
175385
  if (override && override.length > 0) return override;
175105
- return join105(homedir15(), ".heygen");
175386
+ return join106(homedir17(), ".heygen");
175106
175387
  }
175107
175388
  function credentialPath() {
175108
- return join105(configDir(), CREDENTIAL_FILENAME);
175389
+ return join106(configDir(), CREDENTIAL_FILENAME);
175109
175390
  }
175110
175391
  var CREDENTIAL_FILENAME;
175111
175392
  var init_paths2 = __esm({
@@ -175982,7 +176263,7 @@ __export(render_exports3, {
175982
176263
  validateResolutionFormatCombo: () => validateResolutionFormatCombo
175983
176264
  });
175984
176265
  import { isAbsolute as isAbsolute15, resolve as resolvePath4 } from "path";
175985
- import { existsSync as existsSync99 } from "fs";
176266
+ import { existsSync as existsSync100 } from "fs";
175986
176267
  function parsePollIntervalMs(raw) {
175987
176268
  const n2 = parseNumericFlag(raw, { flag: "--poll-interval", min: 1 });
175988
176269
  return n2 === void 0 ? DEFAULT_POLL_INTERVAL_MS : Math.round(n2 * 1e3);
@@ -176024,7 +176305,7 @@ function resolveAspectRatioForSubmit(project, compositionArg, explicit, asJson)
176024
176305
  const dir = project.dir ?? ".";
176025
176306
  const entryRelative = compositionArg ?? "index.html";
176026
176307
  const entryPath = resolvePath4(dir, entryRelative);
176027
- if (!existsSync99(entryPath)) {
176308
+ if (!existsSync100(entryPath)) {
176028
176309
  errorBox(
176029
176310
  "Composition not found",
176030
176311
  `Entry file "${entryRelative}" does not exist in ${dir}.`,
@@ -176929,6 +177210,7 @@ __export(telemetry_exports2, {
176929
177210
  getFreeDiskMb: () => getFreeDiskMb,
176930
177211
  getShmSizeMb: () => getShmSizeMb,
176931
177212
  getSystemMeta: () => getSystemMeta,
177213
+ identifyUser: () => identifyUser,
176932
177214
  incrementCommandCount: () => incrementCommandCount,
176933
177215
  readConfig: () => readConfig,
176934
177216
  shouldTrack: () => shouldTrack,
@@ -176978,29 +177260,35 @@ async function runOAuthLogin() {
176978
177260
  await reportIdentity();
176979
177261
  }
176980
177262
  async function reportIdentity() {
176981
- const { trackAuthLoginCompleted: trackAuthLoginCompleted2, trackAuthLoginFailed: trackAuthLoginFailed2 } = await Promise.resolve().then(() => (init_telemetry2(), telemetry_exports2));
177263
+ const { trackAuthLoginCompleted: trackAuthLoginCompleted2, trackAuthLoginFailed: trackAuthLoginFailed2, identifyUser: identifyUser2 } = await Promise.resolve().then(() => (init_telemetry2(), telemetry_exports2));
176982
177264
  const credential = await tryResolveCredential();
176983
177265
  if (!credential) {
176984
177266
  trackAuthLoginFailed2("oauth", "no_credential");
176985
177267
  console.error(c.warn("Sign-in completed but no credential was persisted."));
176986
177268
  process.exit(1);
176987
177269
  }
176988
- trackAuthLoginCompleted2("oauth");
176989
177270
  const client = new AuthClient({
176990
177271
  onUnauthenticatedRefresh: async (rt2) => await refreshTokens(rt2)
176991
177272
  });
176992
177273
  try {
176993
177274
  const user = await client.getCurrentUser(credential);
176994
177275
  await persistUserInfo(user);
177276
+ const id = identityKey(user);
177277
+ if (id) identifyUser2(id);
177278
+ trackAuthLoginCompleted2("oauth", id);
176995
177279
  const identity = userDisplayName(toStoredUserInfo(user)) ?? "(unknown user)";
176996
177280
  console.log(c.success(`\u2713 Signed in as ${identity}.`));
176997
177281
  } catch (err) {
176998
177282
  await clearUserInfoBestEffort();
177283
+ trackAuthLoginCompleted2("oauth");
176999
177284
  console.error(
177000
177285
  c.warn(`Signed in. Identity check failed (transient): ${err.message}`)
177001
177286
  );
177002
177287
  }
177003
177288
  }
177289
+ function identityKey(user) {
177290
+ return user.email ?? user.username;
177291
+ }
177004
177292
  function toStoredUserInfo(user) {
177005
177293
  const out = {};
177006
177294
  if (user.email) out.email = user.email;
@@ -177029,7 +177317,7 @@ async function clearUserInfoBestEffort() {
177029
177317
  }
177030
177318
  }
177031
177319
  async function runApiKeyLogin(inlineKey) {
177032
- const { trackAuthLoginStarted: trackAuthLoginStarted2, trackAuthLoginCompleted: trackAuthLoginCompleted2, trackAuthLoginFailed: trackAuthLoginFailed2 } = await Promise.resolve().then(() => (init_telemetry2(), telemetry_exports2));
177320
+ const { trackAuthLoginStarted: trackAuthLoginStarted2, trackAuthLoginCompleted: trackAuthLoginCompleted2, trackAuthLoginFailed: trackAuthLoginFailed2, identifyUser: identifyUser2 } = await Promise.resolve().then(() => (init_telemetry2(), telemetry_exports2));
177033
177321
  trackAuthLoginStarted2("api_key");
177034
177322
  let key2;
177035
177323
  try {
@@ -177057,13 +177345,15 @@ async function runApiKeyLogin(inlineKey) {
177057
177345
  const previous = await snapshotStore();
177058
177346
  const next = { ...previous, api_key: key2 };
177059
177347
  await writeStore(next);
177060
- const verifyOk = await verifyAndReport(key2);
177061
- if (!verifyOk) {
177348
+ const user = await verifyAndReport(key2);
177349
+ if (!user) {
177062
177350
  trackAuthLoginFailed2("api_key", "rejected");
177063
177351
  await rollback(previous);
177064
177352
  process.exit(1);
177065
177353
  }
177066
- trackAuthLoginCompleted2("api_key");
177354
+ const id = identityKey(user);
177355
+ if (id) identifyUser2(id);
177356
+ trackAuthLoginCompleted2("api_key", id);
177067
177357
  }
177068
177358
  async function snapshotStore() {
177069
177359
  try {
@@ -177093,7 +177383,7 @@ async function verifyAndReport(key2) {
177093
177383
  await persistUserInfo(user);
177094
177384
  const identity = userDisplayName(toStoredUserInfo(user)) ?? "(unknown user)";
177095
177385
  console.log(c.success(`\u2713 API key saved. Authenticated as ${identity}.`));
177096
- return true;
177386
+ return user;
177097
177387
  } catch (err) {
177098
177388
  if (isAuthError(err) && err.code === "UNAUTHENTICATED") {
177099
177389
  console.error(
@@ -177101,7 +177391,7 @@ async function verifyAndReport(key2) {
177101
177391
  ${c.dim(err.message)}
177102
177392
  Run ${c.accent("hyperframes auth login --api-key")} again with a valid key.`
177103
177393
  );
177104
- return false;
177394
+ return null;
177105
177395
  }
177106
177396
  throw err;
177107
177397
  }
@@ -177189,11 +177479,11 @@ function offlineEngineLines(engines) {
177189
177479
  }
177190
177480
  const lines = ["Prefer offline? Workflows will use these local engines:"];
177191
177481
  for (const e3 of engines) {
177192
- const cap = e3.capability.padEnd(5);
177482
+ const cap2 = e3.capability.padEnd(5);
177193
177483
  if (e3.ready) {
177194
- lines.push(` ${cap} \u2192 ${e3.label} ${c.success("\u2713 ready")}`);
177484
+ lines.push(` ${cap2} \u2192 ${e3.label} ${c.success("\u2713 ready")}`);
177195
177485
  } else {
177196
- lines.push(` ${cap} \u2192 ${e3.label} ${c.warn("\u26A0 deps missing")}`);
177486
+ lines.push(` ${cap2} \u2192 ${e3.label} ${c.warn("\u26A0 deps missing")}`);
177197
177487
  if (e3.setupHint) lines.push(` ${c.dim(e3.setupHint)}`);
177198
177488
  }
177199
177489
  }
@@ -177404,8 +177694,8 @@ function pushCreditRow(rows, label2, credit) {
177404
177694
  function pushUsageRow(rows, user) {
177405
177695
  const current2 = user.usage_based?.spending_current_usd;
177406
177696
  if (current2 === void 0) return;
177407
- const cap = user.usage_based?.spending_cap_usd;
177408
- const capPart = cap !== void 0 ? ` / $${cap}` : "";
177697
+ const cap2 = user.usage_based?.spending_cap_usd;
177698
+ const capPart = cap2 !== void 0 ? ` / $${cap2}` : "";
177409
177699
  rows.push(["Usage: ", `$${current2}${capPart}`]);
177410
177700
  }
177411
177701
  var status_default, SOURCE_LABELS;
@@ -177807,7 +178097,7 @@ var init_parseFigmaRef = __esm({
177807
178097
  });
177808
178098
 
177809
178099
  // ../core/dist/figma/freeze.js
177810
- import { copyFileSync as copyFileSync8, mkdirSync as mkdirSync49, rmSync as rmSync23, statSync as statSync29, writeFileSync as writeFileSync41 } from "fs";
178100
+ import { copyFileSync as copyFileSync8, mkdirSync as mkdirSync49, rmSync as rmSync24, statSync as statSync29, writeFileSync as writeFileSync43 } from "fs";
177811
178101
  import { dirname as dirname46 } from "path";
177812
178102
  function exceedsFreezeCap(byteLength) {
177813
178103
  return byteLength > MAX_FREEZE_BYTES;
@@ -177819,12 +178109,12 @@ function freezeBytes(bytes, destPath) {
177819
178109
  throw new Error(`freeze failed: ${bytes.length} bytes exceeds ${MAX_FREEZE_BYTES} cap`);
177820
178110
  mkdirSync49(dirname46(destPath), { recursive: true });
177821
178111
  try {
177822
- writeFileSync41(destPath, bytes, { flag: "wx" });
178112
+ writeFileSync43(destPath, bytes, { flag: "wx" });
177823
178113
  } catch (err) {
177824
178114
  if (err.code !== "EEXIST")
177825
178115
  throw err;
177826
- rmSync23(destPath);
177827
- writeFileSync41(destPath, bytes, { flag: "wx" });
178116
+ rmSync24(destPath);
178117
+ writeFileSync43(destPath, bytes, { flag: "wx" });
177828
178118
  }
177829
178119
  return bytes.length;
177830
178120
  }
@@ -177837,12 +178127,12 @@ var init_freeze = __esm({
177837
178127
  });
177838
178128
 
177839
178129
  // ../core/dist/figma/jsonl.js
177840
- import { existsSync as existsSync100, readFileSync as readFileSync68 } from "fs";
178130
+ import { existsSync as existsSync101, readFileSync as readFileSync69 } from "fs";
177841
178131
  function readJsonlValues(path2) {
177842
- if (!existsSync100(path2))
178132
+ if (!existsSync101(path2))
177843
178133
  return [];
177844
178134
  const out = [];
177845
- for (const line2 of readFileSync68(path2, "utf8").split(/\r?\n/)) {
178135
+ for (const line2 of readFileSync69(path2, "utf8").split(/\r?\n/)) {
177846
178136
  const trimmed = line2.trim();
177847
178137
  if (trimmed.length === 0)
177848
178138
  continue;
@@ -177861,16 +178151,16 @@ var init_jsonl = __esm({
177861
178151
  });
177862
178152
 
177863
178153
  // ../core/dist/figma/manifest.js
177864
- import { appendFileSync as appendFileSync2, existsSync as existsSync101, mkdirSync as mkdirSync50, readFileSync as readFileSync69, writeFileSync as writeFileSync43 } from "fs";
177865
- import { join as join106 } from "path";
178154
+ import { appendFileSync as appendFileSync2, existsSync as existsSync103, mkdirSync as mkdirSync50, readFileSync as readFileSync70, writeFileSync as writeFileSync44 } from "fs";
178155
+ import { join as join107 } from "path";
177866
178156
  function mediaDir(projectDir) {
177867
- return join106(projectDir, ".media");
178157
+ return join107(projectDir, ".media");
177868
178158
  }
177869
178159
  function manifestPath(projectDir) {
177870
- return join106(mediaDir(projectDir), MANIFEST_FILE2);
178160
+ return join107(mediaDir(projectDir), MANIFEST_FILE2);
177871
178161
  }
177872
178162
  function typeDirPath(projectDir, type) {
177873
- return join106(mediaDir(projectDir), TYPE_DIRS[type]);
178163
+ return join107(mediaDir(projectDir), TYPE_DIRS[type]);
177874
178164
  }
177875
178165
  function isFigmaManifestRecord(value) {
177876
178166
  if (typeof value !== "object" || value === null)
@@ -177902,7 +178192,7 @@ function findAllByFigmaNode(projectDir, fileKey, nodeId) {
177902
178192
  }
177903
178193
  function updateRecord(projectDir, record) {
177904
178194
  const p2 = manifestPath(projectDir);
177905
- const lines = readFileSync69(p2, "utf8").split(/\r?\n/);
178195
+ const lines = readFileSync70(p2, "utf8").split(/\r?\n/);
177906
178196
  const out = lines.map((line2) => {
177907
178197
  const trimmed = line2.trim();
177908
178198
  if (trimmed.length === 0)
@@ -177915,15 +178205,15 @@ function updateRecord(projectDir, record) {
177915
178205
  }
177916
178206
  return line2;
177917
178207
  });
177918
- writeFileSync43(p2, out.join("\n"));
178208
+ writeFileSync44(p2, out.join("\n"));
177919
178209
  }
177920
178210
  function nextId(projectDir, type) {
177921
178211
  const re2 = new RegExp(`^${type}_(\\d+)$`);
177922
178212
  let max = 0;
177923
178213
  const p2 = manifestPath(projectDir);
177924
- if (!existsSync101(p2))
178214
+ if (!existsSync103(p2))
177925
178215
  return `${type}_001`;
177926
- for (const line2 of readFileSync69(p2, "utf8").split(/\r?\n/)) {
178216
+ for (const line2 of readFileSync70(p2, "utf8").split(/\r?\n/)) {
177927
178217
  const trimmed = line2.trim();
177928
178218
  if (trimmed.length === 0)
177929
178219
  continue;
@@ -177956,13 +178246,13 @@ var init_manifest = __esm({
177956
178246
  });
177957
178247
 
177958
178248
  // ../core/dist/figma/mediaIndex.js
177959
- import { mkdirSync as mkdirSync51, writeFileSync as writeFileSync44 } from "fs";
177960
- import { dirname as dirname47, join as join107 } from "path";
178249
+ import { mkdirSync as mkdirSync51, writeFileSync as writeFileSync45 } from "fs";
178250
+ import { dirname as dirname47, join as join108 } from "path";
177961
178251
  function isRow(value) {
177962
178252
  return typeof value === "object" && value !== null;
177963
178253
  }
177964
178254
  function indexPath(projectDir) {
177965
- return join107(mediaDir(projectDir), "index.md");
178255
+ return join108(mediaDir(projectDir), "index.md");
177966
178256
  }
177967
178257
  function pad(str, len2) {
177968
178258
  return String(str ?? "").padEnd(len2);
@@ -178008,7 +178298,7 @@ function regenerateIndex(projectDir) {
178008
178298
  const content = generateIndexContent(records);
178009
178299
  const p2 = indexPath(projectDir);
178010
178300
  mkdirSync51(dirname47(p2), { recursive: true });
178011
- writeFileSync44(p2, content);
178301
+ writeFileSync45(p2, content);
178012
178302
  return content;
178013
178303
  }
178014
178304
  var init_mediaIndex = __esm({
@@ -178073,10 +178363,10 @@ var init_sanitizeSvg = __esm({
178073
178363
  });
178074
178364
 
178075
178365
  // ../core/dist/figma/bindings.js
178076
- import { appendFileSync as appendFileSync3, mkdirSync as mkdirSync53, writeFileSync as writeFileSync45 } from "fs";
178077
- import { join as join108 } from "path";
178366
+ import { appendFileSync as appendFileSync3, mkdirSync as mkdirSync53, writeFileSync as writeFileSync46 } from "fs";
178367
+ import { join as join109 } from "path";
178078
178368
  function bindingsPath(projectDir) {
178079
- return join108(mediaDir(projectDir), BINDINGS_FILE);
178369
+ return join109(mediaDir(projectDir), BINDINGS_FILE);
178080
178370
  }
178081
178371
  function isRecord6(value) {
178082
178372
  return typeof value === "object" && value !== null;
@@ -178095,7 +178385,7 @@ function upsertBindings(projectDir, records) {
178095
178385
  const survivors = readLines(projectDir).filter((line2) => !(isBindingRecord(line2) && incoming.has(line2.figmaId)));
178096
178386
  mkdirSync53(mediaDir(projectDir), { recursive: true });
178097
178387
  const lines = [...survivors, ...records].map((r2) => JSON.stringify(r2)).join("\n");
178098
- writeFileSync45(bindingsPath(projectDir), lines.length > 0 ? lines + "\n" : "");
178388
+ writeFileSync46(bindingsPath(projectDir), lines.length > 0 ? lines + "\n" : "");
178099
178389
  }
178100
178390
  var BINDINGS_FILE;
178101
178391
  var init_bindings = __esm({
@@ -178643,8 +178933,8 @@ __export(asset_exports, {
178643
178933
  default: () => asset_default,
178644
178934
  runAssetImport: () => runAssetImport
178645
178935
  });
178646
- import { existsSync as existsSync102 } from "fs";
178647
- import { join as join109, relative as relative16 } from "path";
178936
+ import { existsSync as existsSync104 } from "fs";
178937
+ import { join as join110, relative as relative16 } from "path";
178648
178938
  async function runAssetImport(refInput, opts, deps) {
178649
178939
  const ref2 = parseFigmaRef(refInput);
178650
178940
  if (!ref2.nodeId)
@@ -178655,7 +178945,7 @@ async function runAssetImport(refInput, opts, deps) {
178655
178945
  const description = normalizeMeta(opts.description);
178656
178946
  const entity = normalizeMeta(opts.entity);
178657
178947
  const existing = findAllByFigmaNode(deps.projectDir, ref2.fileKey, ref2.nodeId).find(
178658
- (r2) => r2.provenance.format === opts.format && (r2.provenance.scale ?? 1) === (opts.scale ?? 1) && r2.provenance.version === version2 && existsSync102(join109(deps.projectDir, r2.path))
178948
+ (r2) => r2.provenance.format === opts.format && (r2.provenance.scale ?? 1) === (opts.scale ?? 1) && r2.provenance.version === version2 && existsSync104(join110(deps.projectDir, r2.path))
178659
178949
  );
178660
178950
  if (existing) {
178661
178951
  let record2 = existing;
@@ -178679,7 +178969,7 @@ async function runAssetImport(refInput, opts, deps) {
178679
178969
  bytes = new TextEncoder().encode(sanitizeSvg(new TextDecoder().decode(bytes)));
178680
178970
  }
178681
178971
  const id = nextId(deps.projectDir, "image");
178682
- const destAbs = join109(typeDirPath(deps.projectDir, "image"), `${id}.${rendered.ext}`);
178972
+ const destAbs = join110(typeDirPath(deps.projectDir, "image"), `${id}.${rendered.ext}`);
178683
178973
  freezeBytes(bytes, destAbs);
178684
178974
  const record = {
178685
178975
  id,
@@ -178778,12 +179068,12 @@ __export(tokens_exports, {
178778
179068
  default: () => tokens_default,
178779
179069
  runTokensImport: () => runTokensImport
178780
179070
  });
178781
- import { writeFileSync as writeFileSync46 } from "fs";
178782
- import { join as join110 } from "path";
179071
+ import { writeFileSync as writeFileSync47 } from "fs";
179072
+ import { join as join111 } from "path";
178783
179073
  async function runTokensImport(refInput, deps) {
178784
179074
  const { fileKey } = parseFigmaRef(refInput);
178785
179075
  const { version: version2 } = await deps.client.fileVersion(fileKey);
178786
- const sidecarPath = join110(deps.projectDir, "figma-tokens.json");
179076
+ const sidecarPath = join111(deps.projectDir, "figma-tokens.json");
178787
179077
  let vars = null;
178788
179078
  try {
178789
179079
  vars = await deps.client.variables(fileKey);
@@ -178793,7 +179083,7 @@ async function runTokensImport(refInput, deps) {
178793
179083
  if (vars !== null) {
178794
179084
  const out = tokensToVariables(vars, { fileKey, version: version2 });
178795
179085
  upsertBindings(deps.projectDir, out.bindings);
178796
- writeFileSync46(sidecarPath, JSON.stringify(out.sidecar, null, 2) + "\n");
179086
+ writeFileSync47(sidecarPath, JSON.stringify(out.sidecar, null, 2) + "\n");
178797
179087
  return { mode: "variables", entries: out.entries, sidecarPath };
178798
179088
  }
178799
179089
  const styles = await deps.client.styles(fileKey);
@@ -178807,7 +179097,7 @@ async function runTokensImport(refInput, deps) {
178807
179097
  value: null
178808
179098
  }))
178809
179099
  };
178810
- writeFileSync46(sidecarPath, JSON.stringify(sidecar, null, 2) + "\n");
179100
+ writeFileSync47(sidecarPath, JSON.stringify(sidecar, null, 2) + "\n");
178811
179101
  return { mode: "styles", entries: [], sidecarPath };
178812
179102
  }
178813
179103
  var tokens_default;
@@ -178857,8 +179147,8 @@ __export(component_exports, {
178857
179147
  default: () => component_default,
178858
179148
  runComponentImport: () => runComponentImport
178859
179149
  });
178860
- import { existsSync as existsSync103, mkdirSync as mkdirSync54, writeFileSync as writeFileSync47 } from "fs";
178861
- import { join as join111, relative as relative17 } from "path";
179150
+ import { existsSync as existsSync105, mkdirSync as mkdirSync54, writeFileSync as writeFileSync48 } from "fs";
179151
+ import { join as join113, relative as relative17 } from "path";
178862
179152
  function escapeAttr2(value) {
178863
179153
  return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
178864
179154
  }
@@ -178869,22 +179159,38 @@ async function runComponentImport(refInput, deps) {
178869
179159
  const bindings = resolveBindings(tree, readBindings(deps.projectDir));
178870
179160
  const mapped = nodeToHtml(tree, bindings);
178871
179161
  const name = slugify2(tree.name);
178872
- const componentDir = join111(deps.projectDir, "compositions", "components", name);
178873
- if (existsSync103(componentDir))
179162
+ const componentDir = join113(deps.projectDir, "compositions", "components", name);
179163
+ if (existsSync105(componentDir))
178874
179164
  console.warn(
178875
179165
  `component dir compositions/components/${name} already exists \u2014 overwriting (rename the figma frame for a separate import)`
178876
179166
  );
178877
179167
  mkdirSync54(componentDir, { recursive: true });
178878
179168
  let html = mapped.html;
178879
179169
  const frozenAssets = [];
179170
+ const failedRasterize = [];
178880
179171
  for (const req of mapped.rasterize) {
178881
- const asset = await runAssetImport(
178882
- `${ref2.fileKey}:${req.nodeId}`,
178883
- { format: "svg", description: req.name },
178884
- { projectDir: deps.projectDir, client: deps.client, download: deps.download }
178885
- );
179172
+ let asset = null;
179173
+ for (const format of ["svg", "png"]) {
179174
+ try {
179175
+ asset = await runAssetImport(
179176
+ `${ref2.fileKey}:${req.nodeId}`,
179177
+ { format, description: req.name },
179178
+ { projectDir: deps.projectDir, client: deps.client, download: deps.download }
179179
+ );
179180
+ break;
179181
+ } catch (err) {
179182
+ if (!(err instanceof FigmaClientError) || err.code !== "RENDER_FAILED") throw err;
179183
+ }
179184
+ }
179185
+ if (asset === null) {
179186
+ failedRasterize.push(req.nodeId);
179187
+ console.warn(
179188
+ `could not render node ${req.nodeId} ("${req.name}") as svg or png \u2014 leaving its placeholder without src`
179189
+ );
179190
+ continue;
179191
+ }
178886
179192
  frozenAssets.push(asset.record.path);
178887
- const srcRel = relative17(componentDir, join111(deps.projectDir, asset.record.path)).replaceAll(
179193
+ const srcRel = relative17(componentDir, join113(deps.projectDir, asset.record.path)).replaceAll(
178888
179194
  "\\",
178889
179195
  "/"
178890
179196
  );
@@ -178894,8 +179200,8 @@ async function runComponentImport(refInput, deps) {
178894
179200
  `data-figma-rasterize="${emittedId}" src="${escapeAttr2(srcRel)}" `
178895
179201
  );
178896
179202
  }
178897
- const htmlFile = join111(componentDir, `${name}.html`);
178898
- writeFileSync47(htmlFile, html + "\n");
179203
+ const htmlFile = join113(componentDir, `${name}.html`);
179204
+ writeFileSync48(htmlFile, html + "\n");
178899
179205
  const registryItem = {
178900
179206
  name,
178901
179207
  type: "hyperframes:component",
@@ -178915,15 +179221,16 @@ async function runComponentImport(refInput, deps) {
178915
179221
  }))
178916
179222
  ]
178917
179223
  };
178918
- writeFileSync47(
178919
- join111(componentDir, "registry-item.json"),
179224
+ writeFileSync48(
179225
+ join113(componentDir, "registry-item.json"),
178920
179226
  JSON.stringify(registryItem, null, 2) + "\n"
178921
179227
  );
178922
179228
  return {
178923
179229
  name,
178924
179230
  htmlPath: relative17(deps.projectDir, htmlFile),
178925
179231
  unresolved: bindings.unresolved,
178926
- rasterized: mapped.rasterize
179232
+ rasterized: mapped.rasterize,
179233
+ failedRasterize
178927
179234
  };
178928
179235
  }
178929
179236
  var component_default;
@@ -178951,8 +179258,12 @@ var init_component = __esm({
178951
179258
  download: downloadRender
178952
179259
  });
178953
179260
  console.log(`imported component "${result.name}" \u2192 ${result.htmlPath}`);
178954
- if (result.rasterized.length > 0)
178955
- console.log(`rasterized ${result.rasterized.length} node(s) via asset export`);
179261
+ if (result.rasterized.length > 0) {
179262
+ const ok = result.rasterized.length - result.failedRasterize.length;
179263
+ console.log(
179264
+ result.failedRasterize.length > 0 ? `rasterized ${ok}/${result.rasterized.length} node(s) via asset export \u2014 ${result.failedRasterize.length} skipped (unrenderable; placeholders have no src)` : `rasterized ${result.rasterized.length} node(s) via asset export`
179265
+ );
179266
+ }
178956
179267
  if (result.unresolved.length > 0) {
178957
179268
  console.log(
178958
179269
  `${result.unresolved.length} binding(s) reference tokens not yet imported \u2014 colors baked as literals (flagged data-figma-unresolved). Run \`hyperframes figma tokens\` on the source/library file, then re-import to link them.`
@@ -178963,6 +179274,7 @@ var init_component = __esm({
178963
179274
  phase: "component",
178964
179275
  unresolvedBindings: result.unresolved.length,
178965
179276
  rasterizedNodes: result.rasterized.length,
179277
+ rasterizeFailures: result.failedRasterize.length,
178966
179278
  durationMs: Date.now() - t0
178967
179279
  });
178968
179280
  });
@@ -179131,8 +179443,8 @@ __export(autoUpdate_exports, {
179131
179443
  });
179132
179444
  import { spawn as spawn17 } from "child_process";
179133
179445
  import { appendFileSync as appendFileSync4, mkdirSync as mkdirSync55, openSync as openSync4 } from "fs";
179134
- import { homedir as homedir16 } from "os";
179135
- import { join as join113 } from "path";
179446
+ import { homedir as homedir18 } from "os";
179447
+ import { join as join114 } from "path";
179136
179448
  import { compareVersions as compareVersions3 } from "compare-versions";
179137
179449
  function isAutoInstallDisabled() {
179138
179450
  if (isDevMode()) return true;
@@ -179155,7 +179467,7 @@ function log(line2) {
179155
179467
  }
179156
179468
  function launchDetachedInstall(installCommand, version2) {
179157
179469
  mkdirSync55(CONFIG_DIR2, { recursive: true, mode: 448 });
179158
- const configFile = join113(CONFIG_DIR2, "config.json");
179470
+ const configFile = join114(CONFIG_DIR2, "config.json");
179159
179471
  const nodeScript = `
179160
179472
  const { exec } = require("node:child_process");
179161
179473
  const { readFileSync, renameSync, writeFileSync } = require("node:fs");
@@ -179274,8 +179586,8 @@ var init_autoUpdate = __esm({
179274
179586
  init_config();
179275
179587
  init_env();
179276
179588
  init_installerDetection();
179277
- CONFIG_DIR2 = join113(homedir16(), ".hyperframes");
179278
- LOG_FILE = join113(CONFIG_DIR2, "auto-update.log");
179589
+ CONFIG_DIR2 = join114(homedir18(), ".hyperframes");
179590
+ LOG_FILE = join114(CONFIG_DIR2, "auto-update.log");
179279
179591
  PENDING_TIMEOUT_MS = 10 * 60 * 1e3;
179280
179592
  }
179281
179593
  });
@@ -179523,9 +179835,9 @@ var init_help = __esm({
179523
179835
  // src/cli.ts
179524
179836
  init_version();
179525
179837
  init_dist();
179526
- import { dirname as dirname48, join as join114 } from "path";
179838
+ import { dirname as dirname48, join as join115 } from "path";
179527
179839
  import { fileURLToPath as fileURLToPath16 } from "url";
179528
- import { existsSync as existsSync104 } from "fs";
179840
+ import { existsSync as existsSync106 } from "fs";
179529
179841
 
179530
179842
  // src/utils/command-failure-tracking.ts
179531
179843
  function trackCommandFailures(load, onFailure) {
@@ -179568,8 +179880,8 @@ for (const stream of [process.stdout, process.stderr]) {
179568
179880
  }
179569
179881
  (() => {
179570
179882
  const here = dirname48(fileURLToPath16(import.meta.url));
179571
- const shader = join114(here, "shaderTransitionWorker.js");
179572
- if (!process.env.HF_SHADER_WORKER_ENTRY && existsSync104(shader)) {
179883
+ const shader = join115(here, "shaderTransitionWorker.js");
179884
+ if (!process.env.HF_SHADER_WORKER_ENTRY && existsSync106(shader)) {
179573
179885
  process.env.HF_SHADER_WORKER_ENTRY = shader;
179574
179886
  }
179575
179887
  })();
@@ -179581,10 +179893,10 @@ if (rootVersionRequested) {
179581
179893
  process.exit(0);
179582
179894
  }
179583
179895
  try {
179584
- const { readFileSync: readFileSync70 } = await import("fs");
179896
+ const { readFileSync: readFileSync71 } = await import("fs");
179585
179897
  const { resolve: resolve62 } = await import("path");
179586
179898
  const envPath = resolve62(process.cwd(), ".env");
179587
- const envContent = readFileSync70(envPath, "utf-8");
179899
+ const envContent = readFileSync71(envPath, "utf-8");
179588
179900
  for (const rawLine of envContent.split("\n")) {
179589
179901
  let line2 = rawLine.trim();
179590
179902
  if (!line2 || line2.startsWith("#")) continue;