hyperframes 0.6.0 → 0.6.2

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
@@ -54,7 +54,7 @@ var VERSION;
54
54
  var init_version = __esm({
55
55
  "src/version.ts"() {
56
56
  "use strict";
57
- VERSION = true ? "0.6.0" : "0.0.0-dev";
57
+ VERSION = true ? "0.6.2" : "0.0.0-dev";
58
58
  }
59
59
  });
60
60
 
@@ -7357,7 +7357,7 @@ var RUNTIME_IIFE;
7357
7357
  var init_runtime_inline = __esm({
7358
7358
  "../core/src/generated/runtime-inline.ts"() {
7359
7359
  "use strict";
7360
- RUNTIME_IIFE = '"use strict";(()=>{var Bo=Object.create;var un=Object.defineProperty;var Oo=Object.getOwnPropertyDescriptor;var Po=Object.getOwnPropertyNames;var Io=Object.getPrototypeOf,Wo=Object.prototype.hasOwnProperty;var Ho=(t,e,n)=>e in t?un(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Y=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var qo=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Po(e))!Wo.call(t,r)&&r!==n&&un(t,r,{get:()=>e[r],enumerable:!(i=Oo(e,r))||i.enumerable});return t};var Uo=(t,e,n)=>(n=t!=null?Bo(Io(t)):{},qo(e||!t||!t.__esModule?un(n,"default",{value:t,enumerable:!0}):n,t));var Se=(t,e,n)=>Ho(t,typeof e!="symbol"?e+"":e,n);var Ni=Y((Du,hn)=>{var K=String,wi=function(){return{isColorSupported:!1,reset:K,bold:K,dim:K,italic:K,underline:K,inverse:K,hidden:K,strikethrough:K,black:K,red:K,green:K,yellow:K,blue:K,magenta:K,cyan:K,white:K,gray:K,bgBlack:K,bgRed:K,bgGreen:K,bgYellow:K,bgBlue:K,bgMagenta:K,bgCyan:K,bgWhite:K,blackBright:K,redBright:K,greenBright:K,yellowBright:K,blueBright:K,magentaBright:K,cyanBright:K,whiteBright:K,bgBlackBright:K,bgRedBright:K,bgGreenBright:K,bgYellowBright:K,bgBlueBright:K,bgMagentaBright:K,bgCyanBright:K,bgWhiteBright:K}};hn.exports=wi();hn.exports.createColors=wi});var xn=Y(()=>{});var Bt=Y((Ru,Ti)=>{"use strict";var Ci=Ni(),Mi=xn(),ft=class t extends Error{constructor(e,n,i,r,o,s){super(e),this.name="CssSyntaxError",this.reason=e,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,t)}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(e){if(!this.source)return"";let n=this.source;e==null&&(e=Ci.isColorSupported);let i=a=>a,r=a=>a,o=a=>a;if(e){let{bold:a,gray:f,red:p}=Ci.createColors(!0);r=g=>a(p(g)),i=g=>f(g),Mi&&(o=g=>Mi(g))}let s=n.split(/\\r?\\n/),c=Math.max(this.line-3,0),u=Math.min(this.line+2,s.length),l=String(u).length;return s.slice(c,u).map((a,f)=>{let p=c+1+f,g=" "+(" "+p).slice(-l)+" | ";if(p===this.line){if(a.length>160){let w=20,S=Math.max(0,this.column-w),U=Math.max(this.column+w,this.endColumn+w),B=a.slice(S,U),M=i(g.replace(/\\d/g," "))+a.slice(0,Math.min(this.column-1,w-1)).replace(/[^\\t]/g," ");return r(">")+i(g)+o(B)+`\n `+M+r("^")}let C=i(g.replace(/\\d/g," "))+a.slice(0,this.column-1).replace(/[^\\t]/g," ");return r(">")+i(g)+o(a)+`\n `+C+r("^")}return" "+i(g)+o(a)}).join(`\n`)}toString(){let e=this.showSourceCode();return e&&(e=`\n\n`+e+`\n`),this.name+": "+this.message+e}};Ti.exports=ft;ft.default=ft});var gn=Y((Bu,vi)=>{"use strict";var us=/(<)(\\/?style\\b)/gi,cs=/(<)(!--)/g;function He(t){return typeof t!="string"||!t.includes("<")?t:t.replace(us,"\\\\3c $2").replace(cs,"\\\\3c $2")}var ki={after:`\n`,beforeClose:`\n`,beforeComment:`\n`,beforeDecl:`\n`,beforeOpen:" ",beforeRule:`\n`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};function ds(t){return t[0].toUpperCase()+t.slice(1)}var mt=class{constructor(e){this.builder=e}atrule(e,n){let i=e.raws,r="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(typeof i.afterName<"u"?r+=i.afterName:o&&(r+=" "),e.nodes)this.block(e,r+o);else{let s=(i.between||"")+(n?";":"");this.builder(He(r+o+s),e)}}beforeAfter(e,n){let i;e.type==="decl"?i=this.raw(e,null,"beforeDecl"):e.type==="comment"?i=this.raw(e,null,"beforeComment"):n==="before"?i=this.raw(e,null,"beforeRule"):i=this.raw(e,null,"beforeClose");let r=e.parent,o=0;for(;r&&r.type!=="root";)o+=1,r=r.parent;if(i.includes(`\n`)){let s=this.raw(e,null,"indent");if(s.length)for(let c=0;c<o;c++)i+=s}return i}block(e,n){let i=this.raw(e,"between","beforeOpen");this.builder(He(n+i)+"{",e,"start");let r;e.nodes&&e.nodes.length?(this.body(e),r=this.raw(e,"after")):r=this.raw(e,"after","emptyBody"),r&&this.builder(He(r)),this.builder("}",e,"end")}body(e){let n=e.nodes,i=n.length-1;for(;i>0&&n[i].type==="comment";)i-=1;let r=this.raw(e,"semicolon"),o=e.type==="document";for(let s=0;s<n.length;s++){let c=n[s],u=this.raw(c,"before");u&&this.builder(o?u:He(u)),this.stringify(c,i!==s||r)}}comment(e){let n=this.raw(e,"left","commentLeft"),i=this.raw(e,"right","commentRight");this.builder(He("/*"+n+e.text+i+"*/"),e)}decl(e,n){let i=e.raws,r=this.raw(e,"between","colon"),o=e.prop+r+this.rawValue(e,"value");e.important&&(o+=i.important||" !important"),n&&(o+=";"),this.builder(He(o),e)}document(e){this.body(e)}raw(e,n,i){let r;if(i||(i=n),n&&(r=e.raws[n],typeof r<"u"))return r;let o=e.parent;if(i==="before"&&(!o||o.type==="root"&&o.first===e||o&&o.type==="document"))return"";if(!o)return ki[i];let s=e.root(),c=s.rawCache||(s.rawCache={});if(typeof c[i]<"u")return c[i];if(i==="before"||i==="after")return this.beforeAfter(e,i);{let u="raw"+ds(i);this[u]?r=this[u](s,e):s.walk(l=>{if(r=l.raws[n],typeof r<"u")return!1})}return typeof r>"u"&&(r=ki[i]),c[i]=r,r}rawBeforeClose(e){let n;return e.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(e,n){let i;return e.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(e,n){let i;return e.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(e){let n;return e.walk(i=>{if(i.type!=="decl"&&(n=i.raws.between,typeof n<"u"))return!1}),n}rawBeforeRule(e){let n;return e.walk(i=>{if(i.nodes&&(i.parent!==e||e.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(e){let n;return e.walkDecls(i=>{if(typeof i.raws.between<"u")return n=i.raws.between.replace(/[^\\s:]/g,""),!1}),n}rawEmptyBody(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length===0&&(n=i.raws.after,typeof n<"u"))return!1}),n}rawIndent(e){if(e.raws.indent)return e.raws.indent;let n;return e.walk(i=>{let r=i.parent;if(r&&r!==e&&r.parent&&r.parent===e&&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(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length&&i.last.type==="decl"&&(n=i.raws.semicolon,typeof n<"u"))return!1}),n}rawValue(e,n){let i=e[n],r=e.raws[n];return r&&r.value===i?r.raw:i}root(e){if(this.body(e),e.raws.after){let n=e.raws.after,i=e.parent&&e.parent.type==="document";this.builder(i?n:He(n))}}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(He(e.raws.ownSemicolon),e,"end")}stringify(e,n){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,n)}};vi.exports=mt;mt.default=mt});var pt=Y((Ou,Di)=>{"use strict";var fs=gn();function yn(t,e){new fs(e).stringify(t)}Di.exports=yn;yn.default=yn});var Ot=Y((Pu,Sn)=>{"use strict";Sn.exports.isClean=Symbol("isClean");Sn.exports.my=Symbol("my")});var gt=Y((Iu,Li)=>{"use strict";var ms=Bt(),ps=gn(),hs=pt(),{isClean:ht,my:xs}=Ot();function bn(t,e){let n=new t.constructor;for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i)||i==="proxyCache")continue;let r=t[i],o=typeof r;i==="parent"&&o==="object"?e&&(n[i]=e):i==="source"?n[i]=r:Array.isArray(r)?n[i]=r.map(s=>bn(s,n)):(o==="object"&&r!==null&&(r=bn(r)),n[i]=r)}return n}function Ie(t,e){if(e&&typeof e.offset<"u")return e.offset;let n=1,i=1,r=0;for(let o=0;o<t.length;o++){if(i===e.line&&n===e.column){r=o;break}t[o]===`\n`?(n=1,i+=1):n+=1}return r}var xt=class{get proxyOf(){return this}constructor(e={}){this.raws={},this[ht]=!1,this[xs]=!0;for(let n in e)if(n==="nodes"){this.nodes=[];for(let i of e[n])typeof i.clone=="function"?this.append(i.clone()):this.append(i)}else this[n]=e[n]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\\n\\s{4}at /.test(e.stack)){let n=this.source;e.stack=e.stack.replace(/\\n\\s{4}at /,`$&${n.input.from}:${n.start.line}:${n.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let n in e)this[n]=e[n];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let n=bn(this);for(let i in e)n[i]=e[i];return n}cloneAfter(e={}){let n=this.clone(e);return this.parent.insertAfter(this,n),n}cloneBefore(e={}){let n=this.clone(e);return this.parent.insertBefore(this,n),n}error(e,n={}){if(this.source){let{end:i,start:r}=this.rangeBy(n);return this.source.input.error(e,{column:r.column,line:r.line},{column:i.column,line:i.line},n)}return new ms(e)}getProxyProcessor(){return{get(e,n){return n==="proxyOf"?e:n==="root"?()=>e.root().toProxy():e[n]},set(e,n,i){return e[n]===i||(e[n]=i,(n==="prop"||n==="value"||n==="name"||n==="params"||n==="important"||n==="text")&&e.markDirty()),!0}}}markClean(){this[ht]=!0}markDirty(){if(this[ht]){this[ht]=!1;let e=this;for(;e=e.parent;)e[ht]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e={}){let n=this.source.start;if(e.index)n=this.positionInside(e.index);else if(e.word){let i="document"in this.source.input?this.source.input.document:this.source.input.css,o=i.slice(Ie(i,this.source.start),Ie(i,this.source.end)).indexOf(e.word);o!==-1&&(n=this.positionInside(o))}return n}positionInside(e){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=Ie(r,this.source.start),s=o+e;for(let c=o;c<s;c++)r[c]===`\n`?(n=1,i+=1):n+=1;return{column:n,line:i,offset:s}}prev(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e-1]}rangeBy(e={}){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:Ie(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:Ie(n,this.source.end)+1}:{column:i.column+1,line:i.line,offset:i.offset+1};if(e.word){let s=n.slice(Ie(n,this.source.start),Ie(n,this.source.end)).indexOf(e.word);s!==-1&&(i=this.positionInside(s),r=this.positionInside(s+e.word.length))}else e.start?i={column:e.start.column,line:e.start.line,offset:Ie(n,e.start)}:e.index&&(i=this.positionInside(e.index)),e.end?r={column:e.end.column,line:e.end.line,offset:Ie(n,e.end)}:typeof e.endIndex=="number"?r=this.positionInside(e.endIndex):e.index&&(r=this.positionInside(e.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(e,n){return new ps().raw(this,e,n)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}replaceWith(...e){if(this.parent){let n=this,i=!1;for(let r of e)r===this?i=!0:i?(this.parent.insertAfter(n,r),n=r):this.parent.insertBefore(n,r);i||this.remove()}return this}root(){let e=this;for(;e.parent&&e.parent.type!=="document";)e=e.parent;return e}toJSON(e,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 c=this[s];if(Array.isArray(c))i[s]=c.map(u=>typeof u=="object"&&u.toJSON?u.toJSON(null,n):u);else if(typeof c=="object"&&c.toJSON)i[s]=c.toJSON(null,n);else if(s==="source"){if(c==null)continue;let u=n.get(c.input);u==null&&(u=o,n.set(c.input,o),o++),i[s]={end:c.end,inputId:u,start:c.start}}else i[s]=c}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(e=hs){e.stringify&&(e=e.stringify);let n="";return e(this,i=>{n+=i}),n}warn(e,n,i={}){let r={node:this};for(let o in i)r[o]=i[o];return e.warn(n,r)}};Li.exports=xt;xt.default=xt});var St=Y((Wu,_i)=>{"use strict";var gs=gt(),yt=class extends gs{constructor(e){super(e),this.type="comment"}};_i.exports=yt;yt.default=yt});var At=Y((Hu,Ri)=>{"use strict";var ys=gt(),bt=class extends ys{get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}constructor(e){e&&typeof e.value<"u"&&typeof e.value!="string"&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}};Ri.exports=bt;bt.default=bt});var qe=Y((qu,zi)=>{"use strict";var Bi=St(),Oi=At(),Ss=gt(),{isClean:Pi,my:Ii}=Ot(),An,Wi,Hi,En;function qi(t){return t.map(e=>(e.nodes&&(e.nodes=qi(e.nodes)),delete e.source,e))}function Ui(t){if(t[Pi]=!1,t.proxyOf.nodes)for(let e of t.proxyOf.nodes)Ui(e)}var De=class t extends Ss{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(...e){for(let n of e){let i=this.normalize(n,this.last);for(let r of i)this.proxyOf.nodes.push(r)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let n of this.nodes)n.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let n=this.getIterator(),i,r;for(;this.indexes[n]<this.proxyOf.nodes.length&&(i=this.indexes[n],r=e(this.proxyOf.nodes[i],i),r!==!1);)this.indexes[n]+=1;return delete this.indexes[n],r}every(e){return this.nodes.every(e)}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let e=this.lastEach;return this.indexes[e]=0,e}getProxyProcessor(){return{get(e,n){return n==="proxyOf"?e:e[n]?n==="each"||typeof n=="string"&&n.startsWith("walk")?(...i)=>e[n](...i.map(r=>typeof r=="function"?(o,s)=>r(o.toProxy(),s):r)):n==="every"||n==="some"?i=>e[n]((r,...o)=>i(r.toProxy(),...o)):n==="root"?()=>e.root().toProxy():n==="nodes"?e.nodes.map(i=>i.toProxy()):n==="first"||n==="last"?e[n].toProxy():e[n]:e[n]},set(e,n,i){return e[n]===i||(e[n]=i,(n==="name"||n==="params"||n==="selector")&&e.markDirty()),!0}}}index(e){return typeof e=="number"?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,n){let i=this.index(e),r=this.normalize(n,this.proxyOf.nodes[i]).reverse();i=this.index(e);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(e,n){let i=this.index(e),r=i===0?"prepend":!1,o=this.normalize(n,this.proxyOf.nodes[i],r).reverse();i=this.index(e);for(let c of o)this.proxyOf.nodes.splice(i,0,c);let s;for(let c in this.indexes)s=this.indexes[c],i<=s&&(this.indexes[c]=s+o.length);return this.markDirty(),this}normalize(e,n){if(typeof e=="string")e=qi(Wi(e).nodes);else if(typeof e>"u")e=[];else if(Array.isArray(e)){e=e.slice(0);for(let r of e)r.parent&&r.parent.removeChild(r,"ignore")}else if(e.type==="root"&&this.type!=="document"){e=e.nodes.slice(0);for(let r of e)r.parent&&r.parent.removeChild(r,"ignore")}else if(e.type)e=[e];else if(e.prop){if(typeof e.value>"u")throw new Error("Value field is missed in node creation");typeof e.value!="string"&&(e.value=String(e.value)),e=[new Oi(e)]}else if(e.selector||e.selectors)e=[new En(e)];else if(e.name)e=[new An(e)];else if(e.text)e=[new Bi(e)];else throw new Error("Unknown node type in node creation");return e.map(r=>(r[Ii]||t.rebuild(r),r=r.proxyOf,r.parent&&r.parent.removeChild(r),r[Pi]&&Ui(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(...e){e=e.reverse();for(let n of e){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(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);let n;for(let i in this.indexes)n=this.indexes[i],n>=e&&(this.indexes[i]=n-1);return this.markDirty(),this}replaceValues(e,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(e,i))}),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each((n,i)=>{let r;try{r=e(n,i)}catch(o){throw n.addToError(o)}return r!==!1&&n.walk&&(r=n.walk(e)),r})}walkAtRules(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="atrule"&&e.test(i.name))return n(i,r)}):this.walk((i,r)=>{if(i.type==="atrule"&&i.name===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="atrule")return n(i,r)}))}walkComments(e){return this.walk((n,i)=>{if(n.type==="comment")return e(n,i)})}walkDecls(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="decl"&&e.test(i.prop))return n(i,r)}):this.walk((i,r)=>{if(i.type==="decl"&&i.prop===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="decl")return n(i,r)}))}walkRules(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="rule"&&e.test(i.selector))return n(i,r)}):this.walk((i,r)=>{if(i.type==="rule"&&i.selector===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="rule")return n(i,r)}))}};De.registerParse=t=>{Wi=t};De.registerRule=t=>{En=t};De.registerAtRule=t=>{An=t};De.registerRoot=t=>{Hi=t};zi.exports=De;De.default=De;De.rebuild=t=>{t.type==="atrule"?Object.setPrototypeOf(t,An.prototype):t.type==="rule"?Object.setPrototypeOf(t,En.prototype):t.type==="decl"?Object.setPrototypeOf(t,Oi.prototype):t.type==="comment"?Object.setPrototypeOf(t,Bi.prototype):t.type==="root"&&Object.setPrototypeOf(t,Hi.prototype),t[Ii]=!0,t.nodes&&t.nodes.forEach(e=>{De.rebuild(e)})}});var Pt=Y((Uu,Gi)=>{"use strict";var ji=qe(),Xe=class extends ji{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};Gi.exports=Xe;Xe.default=Xe;ji.registerAtRule(Xe)});var It=Y((zu,Ki)=>{"use strict";var bs=qe(),Vi,$i,Je=class extends bs{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new Vi(new $i,this,e).stringify()}};Je.registerLazyResult=t=>{Vi=t};Je.registerProcessor=t=>{$i=t};Ki.exports=Je;Je.default=Je});var Qi=Y((ju,Ji)=>{var As="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",Es=(t,e=21)=>(n=e)=>{let i="",r=n|0;for(;r--;)i+=t[Math.random()*t.length|0];return i},Fs=(t=21)=>{let e="",n=t|0;for(;n--;)e+=As[Math.random()*64|0];return e};Ji.exports={nanoid:Fs,customAlphabet:Es}});var Wt=Y(()=>{});var Ht=Y(()=>{});var Fn=Y(()=>{});var Yi=Y(()=>{});var Nn=Y((Xu,er)=>{"use strict";var{existsSync:ws,readFileSync:Ns}=Yi(),{dirname:wn,join:Cs}=Wt(),{SourceMapConsumer:Zi,SourceMapGenerator:Xi}=Ht();function Ms(t){return Buffer?Buffer.from(t,"base64").toString():window.atob(t)}var Et=class{constructor(e,n){if(n.map===!1)return;n.unsafeMap&&(this.unsafeMap=!0),this.loadAnnotation(e),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=wn(this.mapFile)),r&&(this.text=r)}consumer(){return this.consumerCache||(this.consumerCache=new Zi(this.json||this.text)),this.consumerCache}decodeInline(e){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=e.match(r)||e.match(o);if(s)return decodeURIComponent(e.substr(s[0].length));let c=e.match(n)||e.match(i);if(c)return Ms(e.substr(c[0].length));let u=e.slice(22);throw u=u.slice(0,u.indexOf(",")),new Error("Unsupported source map encoding "+u)}getAnnotationURL(e){return e.replace(/^\\/\\*\\s*# sourceMappingURL=/,"").trim()}isMap(e){return typeof e!="object"?!1:typeof e.mappings=="string"||typeof e._mappings=="string"||Array.isArray(e.sections)}loadAnnotation(e){let n=e.match(/\\/\\*\\s*# sourceMappingURL=/g);if(!n)return;let i=e.lastIndexOf(n.pop()),r=e.indexOf("*/",i);i>-1&&r>-1&&(this.annotation=this.getAnnotationURL(e.substring(i,r)))}loadFile(e,n,i){if(!(!i&&!this.unsafeMap&&!/\\.map$/i.test(e))&&(this.root=wn(e),ws(e)))return this.mapFile=e,Ns(e,"utf-8").toString().trim()}loadMap(e,n){if(n===!1)return!1;if(n){if(typeof n=="string")return n;if(typeof n=="function"){let i=n(e);if(i){let r=this.loadFile(i,e,!0);if(!r)throw new Error("Unable to load previous source map: "+i.toString());return r}}else{if(n instanceof Zi)return Xi.fromSourceMap(n).toString();if(n instanceof Xi)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;e&&(i=Cs(wn(e),i));let r=this.loadFile(i,e,!1);if(r)try{this.json=JSON.parse(r.replace(/^\\)]}\'[^\\n]*\\n/,""))}catch{return}return r}}}startWith(e,n){return e?e.substr(0,n.length)===n:!1}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};er.exports=Et;Et.default=Et});var Ft=Y((ec,or)=>{"use strict";var{nanoid:Ts}=Qi(),{isAbsolute:Tn,resolve:kn}=Wt(),{SourceMapConsumer:ks,SourceMapGenerator:vs}=Ht(),{fileURLToPath:tr,pathToFileURL:qt}=Fn(),nr=Bt(),Ds=Nn(),Cn=xn(),Mn=Symbol("lineToIndexCache"),Ls=!!(ks&&vs),ir=!!(kn&&Tn);function rr(t){if(t[Mn])return t[Mn];let e=t.css.split(`\n`),n=new Array(e.length),i=0;for(let r=0,o=e.length;r<o;r++)n[r]=i,i+=e[r].length+1;return t[Mn]=n,n}var et=class{get from(){return this.file||this.id}constructor(e,n={}){if(e===null||typeof e>"u"||typeof e=="object"&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.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&&(!ir||/^\\w+:\\/\\//.test(n.from)||Tn(n.from)?this.file=n.from:this.file=kn(n.from)),ir&&Ls){let i=new Ds(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 "+Ts(6)+">"),this.map&&(this.map.file=this.from)}error(e,n,i,r={}){let o,s,c,u,l;if(n&&typeof n=="object"){let f=n,p=i;if(typeof f.offset=="number"){u=f.offset;let g=this.fromOffset(u);n=g.line,i=g.col}else n=f.line,i=f.column,u=this.fromLineAndColumn(n,i);if(typeof p.offset=="number"){c=p.offset;let g=this.fromOffset(c);s=g.line,o=g.col}else s=p.line,o=p.column,c=this.fromLineAndColumn(p.line,p.column)}else if(i)u=this.fromLineAndColumn(n,i);else{u=n;let f=this.fromOffset(u);n=f.line,i=f.col}let a=this.origin(n,i,s,o);return a?l=new nr(e,a.endLine===void 0?a.line:{column:a.column,line:a.line},a.endLine===void 0?a.column:{column:a.endColumn,line:a.endLine},a.source,a.file,r.plugin):l=new nr(e,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:c,line:n,offset:u,source:this.css},this.file&&(qt&&(l.input.url=qt(this.file).toString()),l.input.file=this.file),l}fromLineAndColumn(e,n){return rr(this)[e-1]+n-1}fromOffset(e){let n=rr(this),i=n[n.length-1],r=0;if(e>=i)r=n.length-1;else{let o=n.length-2,s;for(;r<o;)if(s=r+(o-r>>1),e<n[s])o=s-1;else if(e>=n[s+1])r=s+1;else{r=s;break}}return{col:e-n[r]+1,line:r+1}}mapResolve(e){return/^\\w+:\\/\\//.test(e)?e:kn(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,n,i,r){if(!this.map)return!1;let o=this.map.consumer(),s=o.originalPositionFor({column:n,line:e});if(!s.source)return!1;let c;typeof i=="number"&&(c=o.originalPositionFor({column:r,line:i}));let u;Tn(s.source)?u=qt(s.source):u=new URL(s.source,this.map.consumer().sourceRoot||qt(this.map.mapFile));let l={column:s.column,endColumn:c&&c.column,endLine:c&&c.line,line:s.line,url:u.toString()};if(u.protocol==="file:")if(tr)l.file=tr(u);else throw new Error("file: protocol is not available in this PostCSS build");let a=o.sourceContentFor(s.source);return a&&(l.source=a),l}toJSON(){let e={};for(let n of["hasBOM","css","file","id"])this[n]!=null&&(e[n]=this[n]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}};or.exports=et;et.default=et;Cn&&Cn.registerInput&&Cn.registerInput(et)});var tt=Y((tc,ur)=>{"use strict";var sr=qe(),ar,lr,Ue=class extends sr{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,n,i){let r=super.normalize(e);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(e,n){let i=this.index(e);return!n&&i===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[i].raws.before),super.removeChild(e)}toResult(e={}){return new ar(new lr,this,e).stringify()}};Ue.registerLazyResult=t=>{ar=t};Ue.registerProcessor=t=>{lr=t};ur.exports=Ue;Ue.default=Ue;sr.registerRoot(Ue)});var vn=Y((nc,cr)=>{"use strict";var wt={comma(t){return wt.split(t,[","],!0)},space(t){let e=[" ",`\n`," "];return wt.split(t,e)},split(t,e,n){let i=[],r="",o=!1,s=0,c=!1,u="",l=!1;for(let a of t)l?l=!1:a==="\\\\"?l=!0:c?a===u&&(c=!1):a===\'"\'||a==="\'"?(c=!0,u=a):a==="("?s+=1:a===")"?s>0&&(s-=1):s===0&&e.includes(a)&&(o=!0),o?(r!==""&&i.push(r.trim()),r="",o=!1):r+=a;return(n||r!=="")&&i.push(r.trim()),i}};cr.exports=wt;wt.default=wt});var Ut=Y((ic,fr)=>{"use strict";var dr=qe(),_s=vn(),nt=class extends dr{get selectors(){return _s.comma(this.selector)}set selectors(e){let n=this.selector?this.selector.match(/,\\s*/):null,i=n?n[0]:","+this.raw("between","beforeOpen");this.selector=e.join(i)}constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}};fr.exports=nt;nt.default=nt;dr.registerRule(nt)});var pr=Y((rc,mr)=>{"use strict";var Rs=Pt(),Bs=St(),Os=At(),Ps=Ft(),Is=Nn(),Ws=tt(),Hs=Ut();function Nt(t,e){if(Array.isArray(t))return t.map(r=>Nt(r));let{inputs:n,...i}=t;if(n){e=[];for(let r of n){let o={...r,__proto__:Ps.prototype};o.map&&(o.map={...o.map,__proto__:Is.prototype}),e.push(o)}}if(i.nodes&&(i.nodes=t.nodes.map(r=>Nt(r,e))),i.source){let{inputId:r,...o}=i.source;i.source=o,r!=null&&(i.source.input=e[r])}if(i.type==="root")return new Ws(i);if(i.type==="decl")return new Os(i);if(i.type==="rule")return new Hs(i);if(i.type==="comment")return new Bs(i);if(i.type==="atrule")return new Rs(i);throw new Error("Unknown node type: "+t.type)}mr.exports=Nt;Nt.default=Nt});var Ln=Y((oc,br)=>{"use strict";var{dirname:zt,relative:xr,resolve:gr,sep:yr}=Wt(),{SourceMapConsumer:Sr,SourceMapGenerator:jt}=Ht(),{pathToFileURL:hr}=Fn(),qs=Ft(),Us=!!(Sr&&jt),zs=!!(zt&&gr&&xr&&yr),Dn=class{constructor(e,n,i,r){this.stringify=e,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 e;this.isInline()?e="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?e=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?e=this.mapOpts.annotation(this.opts.to,this.root):e=this.outputFile()+".map";let n=`\n`;this.css.includes(`\\r\n`)&&(n=`\\r\n`),this.css+=n+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let n=this.toUrl(this.path(e.file)),i=e.root||zt(e.file),r;this.mapOpts.sourcesContent===!1?(r=new Sr(e.text),r.sourcesContent&&(r.sourcesContent=null)):r=e.consumer(),this.map.applySourceMap(r,n,this.toUrl(this.path(i)))}}clearAnnotation(){if(this.mapOpts.annotation!==!1){if(this.root){let e;for(let n=this.root.nodes.length-1;n>=0;n--)e=this.root.nodes[n],e.type==="comment"&&e.text.startsWith("# sourceMappingURL=")&&this.root.removeChild(n)}else if(this.css){let e;for(;(e=this.css.lastIndexOf("/*#"))!==-1;){let n=this.css.indexOf("*/",e+3);if(n===-1)break;for(;e>0&&this.css[e-1]===`\n`;)e--;this.css=this.css.slice(0,e)+this.css.slice(n+2)}}}}generate(){if(this.clearAnnotation(),zs&&Us&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,n=>{e+=n}),[e]}}generateMap(){if(this.root)this.generateString();else if(this.previous().length===1){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=jt.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new jt({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 jt({file:this.outputFile(),ignoreInvalidMapping:!0});let e=1,n=1,i="<no source>",r={generated:{column:0,line:0},original:{column:0,line:0},source:""},o,s;this.stringify(this.root,(c,u,l)=>{if(this.css+=c,u&&l!=="end"&&(r.generated.line=e,r.generated.column=n-1,u.source&&u.source.start?(r.source=this.sourcePath(u),r.original.line=u.source.start.line,r.original.column=u.source.start.column-1,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,this.map.addMapping(r))),s=c.match(/\\n/g),s?(e+=s.length,o=c.lastIndexOf(`\n`),n=c.length-o):n+=c.length,u&&l!=="start"){let a=u.parent||{raws:{}};(!(u.type==="decl"||u.type==="atrule"&&!u.nodes)||u!==a.last||a.raws.semicolon)&&(u.source&&u.source.end?(r.source=this.sourcePath(u),r.original.line=u.source.end.line,r.original.column=u.source.end.column-1,r.generated.line=e,r.generated.column=n-2,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,r.generated.line=e,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(e=>e.annotation):!0}isInline(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;let e=this.mapOpts.annotation;return typeof e<"u"&&e!==!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(e=>e.withContent()):!0}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute||e.charCodeAt(0)===60||/^\\w+:\\/\\//.test(e))return e;let n=this.memoizedPaths.get(e);if(n)return n;let i=this.opts.to?zt(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(i=zt(gr(i,this.mapOpts.annotation)));let r=xr(i,e);return this.memoizedPaths.set(e,r),r}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(e=>{if(e.source&&e.source.input.map){let n=e.source.input.map;this.previousMaps.includes(n)||this.previousMaps.push(n)}});else{let e=new qs(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk(n=>{if(n.source){let i=n.source.input.from;if(i&&!e[i]){e[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(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let n=this.memoizedFileURLs.get(e);if(n)return n;if(hr){let i=hr(e).toString();return this.memoizedFileURLs.set(e,i),i}else throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let n=this.memoizedURLs.get(e);if(n)return n;yr==="\\\\"&&(e=e.replace(/\\\\/g,"/"));let i=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,i),i}};br.exports=Dn});var Fr=Y((sc,Er)=>{"use strict";var Gt=/[\\t\\n\\f\\r "#\'()/;[\\\\\\]{}]/g,Vt=/[\\t\\n\\f\\r !"#\'():;@[\\\\\\]{}]|\\/(?=\\*)/g,js=/.[\\r\\n"\'(/\\\\]/,Ar=/[\\da-f]/i;Er.exports=function(e,n={}){let i=e.css.valueOf(),r=n.ignoreErrors,o,s,c,u,l,a,f,p,g,C,w=i.length,S=0,U=[],B=[],M=-1;function X(){return S}function D(E){throw e.error("Unclosed "+E,S)}function F(){return B.length===0&&S>=w}function x(E){if(B.length)return B.pop();if(S>=w)return;let N=E?E.ignoreUnclosed:!1;switch(o=i.charCodeAt(S),o){case 10:case 32:case 9:case 13:case 12:{u=S;do u+=1,o=i.charCodeAt(u);while(o===32||o===10||o===9||o===13||o===12);a=["space",i.slice(S,u)],S=u-1;break}case 91:case 93:case 123:case 125:case 58:case 59:case 41:{let T=String.fromCharCode(o);a=[T,T,S];break}case 40:{if(C=U.length?U.pop()[1]:"",g=i.charCodeAt(S+1),C==="url"&&g!==39&&g!==34&&g!==32&&g!==10&&g!==9&&g!==12&&g!==13){u=S;do{if(f=!1,u=i.indexOf(")",u+1),u===-1)if(r||N){u=S;break}else D("bracket");for(p=u;i.charCodeAt(p-1)===92;)p-=1,f=!f}while(f);a=["brackets",i.slice(S,u+1),S,u],S=u}else S<=M?a=["(","(",S]:(u=i.indexOf(")",S+1),s=i.slice(S,u+1),u===-1||js.test(s)?(M=u===-1?w:u,a=["(","(",S]):(a=["brackets",s,S,u],S=u));break}case 39:case 34:{l=o===39?"\'":\'"\',u=S;do{if(f=!1,u=i.indexOf(l,u+1),u===-1)if(r||N){u=S+1;break}else D("string");for(p=u;i.charCodeAt(p-1)===92;)p-=1,f=!f}while(f);a=["string",i.slice(S,u+1),S,u],S=u;break}case 64:{Gt.lastIndex=S+1,Gt.test(i),Gt.lastIndex===0?u=i.length-1:u=Gt.lastIndex-2,a=["at-word",i.slice(S,u+1),S,u],S=u;break}case 92:{for(u=S,c=!0;i.charCodeAt(u+1)===92;)u+=1,c=!c;if(o=i.charCodeAt(u+1),c&&o!==47&&o!==32&&o!==10&&o!==9&&o!==13&&o!==12&&(u+=1,Ar.test(i.charAt(u)))){for(;Ar.test(i.charAt(u+1));)u+=1;i.charCodeAt(u+1)===32&&(u+=1)}a=["word",i.slice(S,u+1),S,u],S=u;break}default:{o===47&&i.charCodeAt(S+1)===42?(u=i.indexOf("*/",S+2)+1,u===0&&(r||N?u=i.length:D("comment")),a=["comment",i.slice(S,u+1),S,u],S=u):(Vt.lastIndex=S+1,Vt.test(i),Vt.lastIndex===0?u=i.length-1:u=Vt.lastIndex-2,a=["word",i.slice(S,u+1),S,u],U.push(a),S=u);break}}return S++,a}function b(E){B.push(E)}return{back:b,endOfFile:F,nextToken:x,position:X}}});var Mr=Y((ac,Cr)=>{"use strict";var Gs=Pt(),Vs=St(),$s=At(),Ks=tt(),wr=Ut(),Js=Fr(),Nr={empty:!0,space:!0};function Qs(t){for(let e=t.length-1;e>=0;e--){let n=t[e],i=n[3]||n[2];if(i)return i}}var _n=class{constructor(e){this.input=e,this.root=new Ks,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let n=new Gs;n.name=e[1].slice(1),n.name===""&&this.unnamedAtrule(n,e),this.init(n,e[2]);let i,r,o,s=!1,c=!1,u=[],l=[];for(;!this.tokenizer.endOfFile();){if(e=this.tokenizer.nextToken(),i=e[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(e[2]),n.source.end.offset++,this.semicolon=!0;break}else if(i==="{"){c=!0;break}else if(i==="}"){if(u.length>0){for(o=u.length-1,r=u[o];r&&r[0]==="space";)r=u[--o];r&&(n.source.end=this.getPosition(r[3]||r[2]),n.source.end.offset++)}this.end(e);break}else u.push(e);else u.push(e);if(this.tokenizer.endOfFile()){s=!0;break}}n.raws.between=this.spacesAndCommentsFromEnd(u),u.length?(n.raws.afterName=this.spacesAndCommentsFromStart(u),this.raw(n,"params",u),s&&(e=u[u.length-1],n.source.end=this.getPosition(e[3]||e[2]),n.source.end.offset++,this.spaces=n.raws.between,n.raws.between="")):(n.raws.afterName="",n.params=""),c&&(n.nodes=[],this.current=n)}checkMissedSemicolon(e){let n=this.colon(e);if(n===!1)return;let i=0,r;for(let o=n-1;o>=0&&(r=e[o],!(r[0]!=="space"&&(i+=1,i===2)));o--);throw this.input.error("Missed semicolon",r[0]==="word"?r[3]+1:r[2])}colon(e){let n=0,i,r,o;for(let[s,c]of e.entries()){if(r=c,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(e){let n=new Vs;this.init(n,e[2]),n.source.end=this.getPosition(e[3]||e[2]),n.source.end.offset++;let i=e[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=Js(this.input)}decl(e,n){let i=new $s;this.init(i,e[0][2]);let r=e[e.length-1];for(r[0]===";"&&(this.semicolon=!0,e.pop()),i.source.end=this.getPosition(r[3]||r[2]||Qs(e)),i.source.end.offset++;e[0][0]!=="word";)e.length===1&&this.unknownWord(e),i.raws.before+=e.shift()[1];for(i.source.start=this.getPosition(e[0][2]),i.prop="";e.length;){let l=e[0][0];if(l===":"||l==="space"||l==="comment")break;i.prop+=e.shift()[1]}i.raws.between="";let o;for(;e.length;)if(o=e.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=[],c;for(;e.length&&(c=e[0][0],!(c!=="space"&&c!=="comment"));)s.push(e.shift());this.precheckMissedSemicolon(e);for(let l=e.length-1;l>=0;l--){if(o=e[l],o[1].toLowerCase()==="!important"){i.important=!0;let a=this.stringFrom(e,l);a=this.spacesFromEnd(e)+a,a!==" !important"&&(i.raws.important=a);break}else if(o[1].toLowerCase()==="important"){let a=e.slice(0),f="";for(let p=l;p>0;p--){let g=a[p][0];if(f.trim().startsWith("!")&&g!=="space")break;f=a.pop()[1]+f}f.trim().startsWith("!")&&(i.important=!0,i.raws.important=f,e=a)}if(o[0]!=="space"&&o[0]!=="comment")break}e.some(l=>l[0]!=="space"&&l[0]!=="comment")&&(i.raws.between+=s.map(l=>l[1]).join(""),s=[]),this.raw(i,"value",s.concat(e),n),i.value.includes(":")&&!n&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let n=new wr;this.init(n,e[2]),n.selector="",n.raws.between="",this.current=n}end(e){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(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}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(e){if(this.spaces+=e[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(e[2]),n.source.end.offset+=n.raws.ownSemicolon.length)}}getPosition(e){let n=this.input.fromOffset(e);return{column:n.col,line:n.line,offset:e}}init(e,n){this.current.push(e),e.source={input:this.input,start:this.getPosition(n)},e.raws.before=this.spaces,this.spaces="",e.type!=="comment"&&(this.semicolon=!1)}other(e){let n=!1,i=null,r=!1,o=null,s=[],c=e[1].startsWith("--"),u=[],l=e;for(;l;){if(i=l[0],u.push(l),i==="("||i==="[")o||(o=l),s.push(i==="("?")":"]");else if(c&&r&&i==="{")o||(o=l),s.push("}");else if(s.length===0)if(i===";")if(r){this.decl(u,c);return}else break;else if(i==="{"){this.rule(u);return}else if(i==="}"){this.tokenizer.back(u.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(!c)for(;u.length&&(l=u[u.length-1][0],!(l!=="space"&&l!=="comment"));)this.tokenizer.back(u.pop());this.decl(u,c)}else this.unknownWord(u)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e);break}this.endFile()}precheckMissedSemicolon(){}raw(e,n,i,r){let o,s,c=i.length,u="",l=!0,a,f;for(let p=0;p<c;p+=1)o=i[p],s=o[0],s==="space"&&p===c-1&&!r?l=!1:s==="comment"?(f=i[p-1]?i[p-1][0]:"empty",a=i[p+1]?i[p+1][0]:"empty",!Nr[f]&&!Nr[a]?u.slice(-1)===","?l=!1:u+=o[1]:l=!1):u+=o[1];if(!l){let p=i.reduce((g,C)=>g+C[1],"");e.raws[n]={raw:p,value:u}}e[n]=u}rule(e){e.pop();let n=new wr;this.init(n,e[0][2]),n.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(n,"selector",e),this.current=n}spacesAndCommentsFromEnd(e){let n,i="";for(;e.length&&(n=e[e.length-1][0],!(n!=="space"&&n!=="comment"));)i=e.pop()[1]+i;return i}spacesAndCommentsFromStart(e){let n,i="";for(;e.length&&(n=e[0][0],!(n!=="space"&&n!=="comment"));)i+=e.shift()[1];return i}spacesFromEnd(e){let n,i="";for(;e.length&&(n=e[e.length-1][0],n==="space");)i=e.pop()[1]+i;return i}stringFrom(e,n){let i="";for(let r=n;r<e.length;r++)i+=e[r][1];return e.splice(n,e.length-n),i}unclosedBlock(){let e=this.current.source.start;throw this.input.error("Unclosed block",e.line,e.column)}unclosedBracket(e){throw this.input.error("Unclosed bracket",{offset:e[2]},{offset:e[2]+1})}unexpectedClose(e){throw this.input.error("Unexpected }",{offset:e[2]},{offset:e[2]+1})}unknownWord(e){throw this.input.error("Unknown word "+e[0][1],{offset:e[0][2]},{offset:e[0][2]+e[0][1].length})}unnamedAtrule(e,n){throw this.input.error("At-rule without name",{offset:n[2]},{offset:n[2]+n[1].length})}};Cr.exports=_n});var Kt=Y((lc,Tr)=>{"use strict";var Ys=qe(),Zs=Ft(),Xs=Mr();function $t(t,e){let n=new Zs(t,e),i=new Xs(n);try{i.parse()}catch(r){throw r}return i.root}Tr.exports=$t;$t.default=$t;Ys.registerParse($t)});var Rn=Y((uc,kr)=>{"use strict";var Ct=class{constructor(e,n={}){if(this.type="warning",this.text=e,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}};kr.exports=Ct;Ct.default=Ct});var Jt=Y((cc,vr)=>{"use strict";var ea=Rn(),Mt=class{get content(){return this.css}constructor(e,n,i){this.processor=e,this.messages=[],this.root=n,this.opts=i,this.css="",this.map=void 0}toString(){return this.css}warn(e,n={}){n.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(n.plugin=this.lastPlugin.postcssPlugin);let i=new ea(e,n);return this.messages.push(i),i}warnings(){return this.messages.filter(e=>e.type==="warning")}};vr.exports=Mt;Mt.default=Mt});var Bn=Y((dc,Lr)=>{"use strict";var Dr={};Lr.exports=function(e){Dr[e]||(Dr[e]=!0,typeof console<"u"&&console.warn&&console.warn(e))}});var In=Y((mc,Or)=>{"use strict";var ta=qe(),na=It(),ia=Ln(),ra=Kt(),_r=Jt(),oa=tt(),sa=pt(),{isClean:Be,my:aa}=Ot(),fc=Bn(),la={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},ua={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},ca={Once:!0,postcssPlugin:!0,prepare:!0},it=0;function Tt(t){return typeof t=="object"&&typeof t.then=="function"}function Br(t){let e=!1,n=la[t.type];return t.type==="decl"?e=t.prop.toLowerCase():t.type==="atrule"&&(e=t.name.toLowerCase()),e&&t.append?[n,n+"-"+e,it,n+"Exit",n+"Exit-"+e]:e?[n,n+"-"+e,n+"Exit",n+"Exit-"+e]:t.append?[n,it,n+"Exit"]:[n,n+"Exit"]}function Rr(t){let e;return t.type==="document"?e=["Document",it,"DocumentExit"]:t.type==="root"?e=["Root",it,"RootExit"]:e=Br(t),{eventIndex:0,events:e,iterator:0,node:t,visitorIndex:0,visitors:[]}}function On(t){return t[Be]=!1,t.nodes&&t.nodes.forEach(e=>On(e)),t}var Pn={},ze=class t{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(e,n,i){this.stringified=!1,this.processed=!1;let r;if(typeof n=="object"&&n!==null&&(n.type==="root"||n.type==="document"))r=On(n);else if(n instanceof t||n instanceof _r)r=On(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=ra;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[aa]&&ta.rebuild(r)}this.result=new _r(e,r,i),this.helpers={...Pn,postcss:Pn,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(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,n){let i=this.result.lastPlugin;try{n&&n.addToError(e),this.error=e,e.name==="CssSyntaxError"&&!e.plugin?(e.plugin=i.postcssPlugin,e.setMessage()):i.postcssVersion}catch(r){console&&console.error&&console.error(r)}return e}prepareVisitors(){this.listeners={};let e=(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(!ua[i]&&/^[A-Z]/.test(i))throw new Error(`Unknown event ${i} in ${n.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!ca[i])if(typeof n[i]=="object")for(let r in n[i])r==="*"?e(n,i,n[i][r]):e(n,i+"-"+r.toLowerCase(),n[i][r]);else typeof n[i]=="function"&&e(n,i,n[i])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let e=0;e<this.plugins.length;e++){let n=this.plugins[e],i=this.runOnRoot(n);if(Tt(i))try{await i}catch(r){throw this.handleError(r)}}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[Be];){e[Be]=!0;let n=[Rr(e)];for(;n.length>0;){let i=this.visitTick(n);if(Tt(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(e.type==="document"){let r=e.nodes.map(o=>i(o,this.helpers));await Promise.all(r)}else await i(e,this.helpers)}catch(r){throw this.handleError(r)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if(typeof e=="object"&&e.Once){if(this.result.root.type==="document"){let n=this.result.root.nodes.map(i=>e.Once(i,this.helpers));return Tt(n[0])?Promise.all(n):n}return e.Once(this.result.root,this.helpers)}else if(typeof e=="function")return e(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 e=this.result.opts,n=sa;e.syntax&&(n=e.syntax.stringify),e.stringifier&&(n=e.stringifier),n.stringify&&(n=n.stringify);let i=this.result.root.source;if(e.map===void 0&&!(i&&i.input&&i.input.map)){let s="";return n(this.result.root,c=>{s+=c}),this.result.css=s,this.result}let o=new ia(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 e of this.plugins){let n=this.runOnRoot(e);if(Tt(n))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[Be];)e[Be]=!0,this.walkSync(e);if(this.listeners.OnceExit)if(e.type==="document")for(let n of e.nodes)this.visitSync(this.listeners.OnceExit,n);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,n){return this.async().then(e,n)}toString(){return this.css}visitSync(e,n){for(let[i,r]of e){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(Tt(o))throw this.getAsyncError()}}visitTick(e){let n=e[e.length-1],{node:i,visitors:r}=n;if(i.type!=="root"&&i.type!=="document"&&!i.parent){e.pop();return}if(r.length>0&&n.visitorIndex<r.length){let[s,c]=r[n.visitorIndex];n.visitorIndex+=1,n.visitorIndex===r.length&&(n.visitors=[],n.visitorIndex=0),this.result.lastPlugin=s;try{return c(i.toProxy(),this.helpers)}catch(u){throw this.handleError(u,i)}}if(n.iterator!==0){let s=n.iterator,c;for(;c=i.nodes[i.indexes[s]];)if(i.indexes[s]+=1,!c[Be]){c[Be]=!0,e.push(Rr(c));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===it){i.nodes&&i.nodes.length&&(i[Be]=!0,n.iterator=i.getIterator());return}else if(this.listeners[s]){n.visitors=this.listeners[s];return}}e.pop()}walkSync(e){e[Be]=!0;let n=Br(e);for(let i of n)if(i===it)e.nodes&&e.each(r=>{r[Be]||this.walkSync(r)});else{let r=this.listeners[i];if(r&&this.visitSync(r,e.toProxy()))return}}warnings(){return this.sync().warnings()}};ze.registerPostcss=t=>{Pn=t};Or.exports=ze;ze.default=ze;oa.registerLazyResult(ze);na.registerLazyResult(ze)});var Ir=Y((hc,Pr)=>{"use strict";var da=Ln(),fa=Kt(),ma=Jt(),pa=pt(),pc=Bn(),kt=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 e,n=fa;try{e=n(this._css,this._opts)}catch(i){this.error=i}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}constructor(e,n,i){n=n.toString(),this.stringified=!1,this._processor=e,this._css=n,this._opts=i,this._map=void 0;let r=pa;this.result=new ma(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 da(r,void 0,this._opts,n);if(s.isMap()){let[c,u]=s.generate();c&&(this.result.css=c),u&&(this.result.map=u)}else s.clearAnnotation(),this.result.css=s.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,n){return this.async().then(e,n)}toString(){return this._css}warnings(){return[]}};Pr.exports=kt;kt.default=kt});var Hr=Y((xc,Wr)=>{"use strict";var ha=It(),xa=In(),ga=Ir(),ya=tt(),Qe=class{constructor(e=[]){this.version="8.5.14",this.plugins=this.normalize(e)}normalize(e){let n=[];for(let i of e)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(e,n={}){return!this.plugins.length&&!n.parser&&!n.stringifier&&!n.syntax?new ga(this,e,n):new xa(this,e,n)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};Wr.exports=Qe;Qe.default=Qe;ya.registerProcessor(Qe);ha.registerProcessor(Qe)});var Kr=Y((gc,$r)=>{"use strict";var qr=Pt(),Ur=St(),Sa=qe(),ba=Bt(),zr=At(),jr=It(),Aa=pr(),Ea=Ft(),Fa=In(),wa=vn(),Na=gt(),Ca=Kt(),Wn=Hr(),Ma=Jt(),Gr=tt(),Vr=Ut(),Ta=pt(),ka=Rn();function re(...t){return t.length===1&&Array.isArray(t[0])&&(t=t[0]),new Wn(t)}re.plugin=function(e,n){let i=!1;function r(...s){console&&console.warn&&!i&&(i=!0,console.warn(e+`: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+`: \\u91CC\\u9762 postcss.plugin \\u88AB\\u5F03\\u7528. \\u8FC1\\u79FB\\u6307\\u5357:\nhttps://www.w3ctech.com/topic/2226`));let c=n(...s);return c.postcssPlugin=e,c.postcssVersion=new Wn().version,c}let o;return Object.defineProperty(r,"postcss",{get(){return o||(o=r()),o}}),r.process=function(s,c,u){return re([r(u)]).process(s,c)},r};re.stringify=Ta;re.parse=Ca;re.fromJSON=Aa;re.list=wa;re.comment=t=>new Ur(t);re.atRule=t=>new qr(t);re.decl=t=>new zr(t);re.rule=t=>new Vr(t);re.root=t=>new Gr(t);re.document=t=>new jr(t);re.CssSyntaxError=ba;re.Declaration=zr;re.Container=Sa;re.Processor=Wn;re.Document=jr;re.Comment=Ur;re.Warning=ka;re.AtRule=qr;re.Result=Ma;re.Input=Ea;re.Rule=Vr;re.Root=Gr;re.Node=Na;Fa.registerPostcss(re);$r.exports=re;re.default=re});function R(t,e){if(typeof window>"u")return;let n=window,i=n.__hf?.onSwallowed;if(i)try{i({label:t,error:e})}catch(r){}(n.__hfDebug||n.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${t} swallowed:`,e)}function Ee(t){try{window.parent.postMessage(t,"*")}catch(e){R("bridge.postMessage",e)}}function ri(t){let e=n=>{let i=n.data;if(!i||i.source!=="hf-parent"||i.type!=="control")return;let r=i.action;if(r==="play"){t.onPlay();return}if(r==="pause"){t.onPause();return}if(r==="seek"){t.onSeek(Number(i.frame??0),i.seekMode??"commit");return}if(r==="set-muted"){t.onSetMuted(!!i.muted);return}if(r==="set-volume"){t.onSetVolume(Math.max(0,Math.min(1,Number(i.volume??1))));return}if(r==="set-media-output-muted"){t.onSetMediaOutputMuted(!!i.muted);return}if(r==="set-playback-rate"){t.onSetPlaybackRate(Number(i.playbackRate??1));return}if(r==="enable-pick-mode"){t.onEnablePickMode();return}if(r==="disable-pick-mode"){t.onDisablePickMode();return}if(r==="flash-elements"){let o=i.selectors,s=i.duration||800;o&&zo(o,s)}};return window.addEventListener("message",e),e}function zo(t,e){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 ${e}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 t)try{document.querySelectorAll(n).forEach(r=>{r.classList.add("__hf-flash"),setTimeout(()=>r.classList.remove("__hf-flash"),e)})}catch(i){R("bridge.flashElements.querySelector",i)}}var cn=null;function oi(t){cn=t}function lt(t,e){if(cn)try{cn({source:"hf-preview",type:"analytics",event:t,properties:e??{}})}catch(n){R("runtime.analytics.site1",n)}}function si(t){let e=[],n=c=>{if(typeof c.getAnimations!="function")return[];try{return c.getAnimations()}catch{return[]}},i=(c,u)=>{for(let l of c){try{l.currentTime=u}catch(a){R("runtime.adapters.css.site1",a)}try{l.pause()}catch(a){R("runtime.adapters.css.site2",a)}}},r=c=>{for(let u of c)try{u.play()}catch(l){R("runtime.adapters.css.site3",l)}},o=c=>{for(let u of c)try{u.pause()}catch(l){R("runtime.adapters.css.site4",l)}},s=c=>{c.baseDelay?c.el.style.animationDelay=c.baseDelay:c.el.style.removeProperty("animation-delay"),c.basePlayState?c.el.style.animationPlayState=c.basePlayState:c.el.style.removeProperty("animation-play-state")};return{name:"css",discover:()=>{e=[];let c=document.querySelectorAll("*");for(let u of c){if(!(u instanceof HTMLElement))continue;let l=window.getComputedStyle(u);!l.animationName||l.animationName==="none"||e.push({el:u,baseDelay:u.style.animationDelay||"",basePlayState:u.style.animationPlayState||""})}},seek:c=>{let u=Number(c.time)||0;for(let l of e){if(!l.el.isConnected)continue;let a=t?.resolveStartSeconds?t.resolveStartSeconds(l.el):Number.parseFloat(l.el.getAttribute("data-start")??"0")||0,f=Math.max(0,u-a)*1e3,p=n(l.el);if(p.length>0){i(p,f);continue}l.el.style.animationPlayState="paused",l.el.style.animationDelay=`-${(f/1e3).toFixed(3)}s`}},pause:()=>{for(let c of e){if(!c.el.isConnected)continue;let u=n(c.el);u.length>0&&o(u),s(c)}},play:()=>{for(let c of e)c.el.isConnected&&(s(c),r(n(c.el)))},revert:()=>{e=[]}}}function ai(t){return{name:"gsap",discover:()=>{},seek:e=>{let n=t.getTimeline();if(!n)return;n.pause();let i=Math.max(0,Number(e.time)||0);typeof n.totalTime=="function"?n.totalTime(i,!1):n.seek(i,!1)},pause:()=>{let e=t.getTimeline();e&&e.pause()}}}function li(){return{name:"animejs",discover:()=>{try{let t=window.anime;if(!t||typeof t.running>"u")return;let e=t.running;if(!Array.isArray(e)||e.length===0)return;let n=window.__hfAnime??[],i=new Set(n);for(let r of e)i.has(r)||n.push(r);window.__hfAnime=n}catch(t){R("runtime.adapters.animejs.site1",t)}},seek:t=>{let e=Math.max(0,(Number(t.time)||0)*1e3),n=window.__hfAnime;if(!(!n||n.length===0))for(let i of n)try{typeof i.seek=="function"&&i.seek(e)}catch(r){R("runtime.adapters.animejs.site2",r)}},pause:()=>{let t=window.__hfAnime;if(!(!t||t.length===0))for(let e of t)try{typeof e.pause=="function"&&e.pause()}catch(n){R("runtime.adapters.animejs.site3",n)}},play:()=>{let t=window.__hfAnime;if(!(!t||t.length===0))for(let e of t)try{typeof e.play=="function"&&e.play()}catch(n){R("runtime.adapters.animejs.site4",n)}},revert:()=>{}}}function di(){return{name:"lottie",discover:()=>{try{let t=window.lottie;if(t&&typeof t.getRegisteredAnimations=="function"){let e=t.getRegisteredAnimations();if(Array.isArray(e)&&e.length>0){let n=window.__hfLottie??[],i=new Set(n);for(let r of e)i.has(r)||n.push(r);window.__hfLottie=n}}}catch(t){R("runtime.adapters.lottie.site1",t)}},seek:t=>{let e=Math.max(0,Number(t.time)||0),n=window.__hfLottie;if(!(!n||n.length===0))for(let i of n)try{if(ui(i))i.goToAndStop(e*1e3,!1);else if(ci(i)){if(typeof i.setCurrentRawFrameValue=="function"){let r=i.totalFrames??0,o=i.frameRate??30,s=e*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,e/r*100);i.seek(o)}}}catch(r){R("runtime.adapters.lottie.site2",r)}},pause:()=>{let t=window.__hfLottie;if(!(!t||t.length===0))for(let e of t)try{(ui(e)||ci(e))&&e.pause()}catch(n){R("runtime.adapters.lottie.site3",n)}},revert:()=>{}}}function ui(t){return typeof t=="object"&&t!==null&&typeof t.goToAndStop=="function"}function ci(t){return typeof t=="object"&&t!==null&&typeof t.pause=="function"&&("totalFrames"in t||"duration"in t)}function fi(){let t=null,e=0;return{name:"three",discover:()=>{},seek:n=>{t=Math.max(0,Number(n.time)||0),e=t,window.__hfThreeTime=t;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:t}}))}catch(i){R("runtime.adapters.three.site1",i)}},pause:()=>{t==null&&(t=Math.max(0,e))},play:()=>{t=null},revert:()=>{t=null,e=0}}}function mi(){return{name:"waapi",discover:()=>{},seek:t=>{if(!document.getAnimations)return;let e=Math.max(0,(Number(t.time)||0)*1e3);for(let n of document.getAnimations()){try{n.currentTime=e}catch(i){R("runtime.adapters.waapi.site1",i)}try{n.pause()}catch(i){R("runtime.adapters.waapi.site2",i)}}},pause:()=>{if(document.getAnimations)for(let t of document.getAnimations())try{t.pause()}catch(e){R("runtime.adapters.waapi.site3",e)}}}}function pi(t){let e=Array.from(document.querySelectorAll("video, audio")),n=t?.shouldIncludeElement?e.filter(s=>t.shouldIncludeElement?.(s)):e.filter(s=>s.hasAttribute("data-start")),i=[],r=[],o=0;for(let s of n){let c=t?.resolveStartSeconds?t.resolveStartSeconds(s):Number.parseFloat(s.dataset.start??"0");if(!Number.isFinite(c))continue;let u=Number.parseFloat(s.dataset.playbackStart??s.dataset.mediaStart??"0")||0,l=s.defaultPlaybackRate,a=Number.isFinite(l)&&l>0?Math.max(.1,Math.min(5,l)):1,f=s.loop,p=Number.isFinite(s.duration)&&s.duration>0?s.duration:null,g=t?.resolveDurationSeconds?.(s)??Number.parseFloat(s.dataset.duration??"");(!Number.isFinite(g)||g<=0)&&p!=null&&(g=Math.max(0,(p-u)/a));let C=Number.isFinite(g)&&g>0?c+g:Number.POSITIVE_INFINITY,w=Number.parseFloat(s.dataset.volume??""),S={el:s,start:c,mediaStart:u,duration:Number.isFinite(g)&&g>0?g:Number.POSITIVE_INFINITY,end:C,volume:Number.isFinite(w)?w:null,playbackRate:a,loop:f,sourceDuration:p};i.push(S),s.tagName==="VIDEO"&&r.push(S),Number.isFinite(C)&&(o=Math.max(o,C))}return{timedMediaEls:n,mediaClips:i,videoClips:r,maxMediaEnd:o}}var dn=new WeakMap,ut=new WeakMap,fn=new WeakSet,Ye=new WeakSet;function jo(t){if(Ye.has(t))return;Ye.add(t);let e=()=>Ye.delete(t);t.addEventListener("playing",e,{once:!0}),t.addEventListener("pause",e,{once:!0}),t.addEventListener("error",e,{once:!0})}function hi(t){let e=!!(t.outputMuted||t.userMuted);for(let n of t.clips){let{el:i}=n;if(!i.isConnected)continue;let r=(t.timeSeconds-n.start)*n.playbackRate+n.mediaStart;if(t.timeSeconds>=n.start&&t.timeSeconds<n.end&&r>=0){if(n.loop&&n.sourceDuration!=null&&n.sourceDuration>0){let D=n.sourceDuration-n.mediaStart;D>0&&r>=n.sourceDuration&&(r=n.mediaStart+(r-n.mediaStart)%D)}let s=t.userVolume??1;i.volume=(n.volume??1)*s,e&&(i.muted=!0),i.preload!=="auto"&&(i.preload="auto");try{i.playbackRate=n.playbackRate*t.playbackRate}catch(D){R("runtime.media.site1",D)}let c=.04,u=2,l=i.currentTime||0,a=Math.abs(l-r),f=r-l,p=dn.get(i);dn.set(i,f);let g=p===void 0,C=!g&&Math.abs(f-p)>.5,w=a>3,S=a>.5&&(g||C||w),U=i.tagName==="VIDEO"&&!i.paused,B=p!==void 0&&Math.abs(f-p)<.004,M=!1;if(!U&&!S&&!g&&B&&a>c){let D=(ut.get(i)??0)+1;ut.set(i,D),D>=u&&(M=!0,ut.set(i,0))}else a<=c&&ut.set(i,0);let X=!U&&t.forceSync&&a>.02;if(S||M||X){try{i.currentTime=r}catch(D){R("runtime.media.site2",D)}if(Math.abs(i.currentTime-r)>.5&&!fn.has(i)){fn.add(i),i.load();try{i.currentTime=r}catch(D){R("runtime.media.site3",D)}}Ye.delete(i)}t.playing&&i.paused&&!Ye.has(i)?(jo(i),i.play().catch(D=>{Ye.delete(i),(D&&typeof D=="object"&&"name"in D?String(D.name??""):"")==="NotAllowedError"&&t.onAutoplayBlocked?.()})):!t.playing&&!i.paused&&i.pause();continue}dn.delete(i),ut.delete(i),fn.delete(i),i.paused||i.pause()}}var Go=["[data-hyperframes-ignore]","[data-hyperframes-picker-ignore]","[data-hf-ignore]","[data-no-inspect]","[data-no-pick]","[data-hyper-shader-loading]"].join(","),Vo=["[data-hyperframes-picker-block]","[data-hyper-shader-loading]"].join(",");function xi(t){let e=!1,n=null,i=null,r=null,o=null;function s(x,b){try{window.dispatchEvent(new CustomEvent(x,{detail:b}))}catch(E){R("runtime.picker.site1",E)}}function c(x){r=x,s("hyperframe:picker:hovered",{elementInfo:r,isPickMode:e,timestamp:Date.now()})}function u(x){o=x,s("hyperframe:picker:selected",{elementInfo:o,isPickMode:e,timestamp:Date.now()})}function l(x){let b=x.ownerDocument.defaultView;if(!b)return!1;let E=x;for(;E&&E!==document.body&&E!==document.documentElement;){let N=b.getComputedStyle(E);if(N.display==="none"||N.visibility==="hidden"||N.pointerEvents==="none")return!0;let T=Number.parseFloat(N.opacity);if(Number.isFinite(T)&&T<=.01)return!0;E=E.parentElement}return!1}function a(x){if(!x||x===document.body||x===document.documentElement)return!1;let b=x.tagName.toLowerCase();return!(b==="script"||b==="style"||b==="link"||b==="meta"||x.classList.contains("__hf-pick-highlight")||x.closest(Go)||l(x))}function f(x){return!!x?.closest(Vo)}function p(x){let b=x;if(b.id)return`#${b.id}`;let E=x.getAttribute("data-composition-id");if(E)return`[data-composition-id="${E}"]`;let N=x.getAttribute("data-composition-src");if(N)return`[data-composition-src="${N}"]`;let T=x.getAttribute("data-track-index");if(T)return`[data-track-index="${T}"]`;let _=x.tagName.toLowerCase(),P=x.parentElement;if(!P)return _;let J=P.querySelectorAll(`:scope > ${_}`);if(J.length===1)return _;for(let L=0;L<J.length;L+=1)if(J[L]===x)return`${_}:nth-of-type(${L+1})`;return _}function g(x){let b=x.tagName.toLowerCase(),E=(x.textContent??"").trim().replace(/\\s+/g," "),N=(T,_)=>T.length>_?`${T.slice(0,_-1)}\\u2026`:T;return b==="h1"||b==="h2"||b==="h3"?"Heading":b==="p"||b==="span"||b==="div"?E.length>0?N(E,56):"Text":b==="img"?"Image":b==="video"?"Video":b==="audio"?"Audio":b==="svg"?"Shape":x.getAttribute("data-composition-src")?"Composition":b==="section"?"Section":`${b.charAt(0).toUpperCase()}${b.slice(1)}`}function C(x,b,E){let N=typeof E=="number"&&E>0?E:8,T=[];if(document.elementsFromPoint)T=document.elementsFromPoint(x,b);else if(document.elementFromPoint){let J=document.elementFromPoint(x,b);T=J?[J]:[]}if(f(T[0]??null))return[];let _={},P=[];for(let J=0;J<T.length;J+=1){let L=T[J];if(!a(L))continue;let ce=`${L.tagName}::${L.id||""}::${J}`;if(!_[ce]&&(_[ce]=!0,P.push(L),P.length>=N))break}return P}function w(x){let b=x.getBoundingClientRect(),E={};for(let T=0;T<x.attributes.length;T+=1){let _=x.attributes[T];_.name.startsWith("data-")&&(E[_.name]=_.value)}return{id:x.id||null,tagName:x.tagName.toLowerCase(),selector:p(x),label:g(x),boundingBox:{x:b.left,y:b.top,width:b.width,height:b.height},textContent:x.textContent?x.textContent.trim().slice(0,200):null,src:x.getAttribute("src")||x.getAttribute("data-composition-src")||null,dataAttributes:E}}function S(x,b,E){return C(x,b,E).map(w)}function U(x){if(!e)return;let E=C(x.clientX,x.clientY,1)[0]??(x.target instanceof Element?x.target:null);if(!a(E)||n===E)return;n&&n.classList.remove("__hf-pick-highlight"),n=E,E.classList.add("__hf-pick-highlight");let N=w(E);c(N),t.postMessage({source:"hf-preview",type:"element-hovered",elementInfo:N})}function B(x){if(!e)return;x.preventDefault(),x.stopPropagation(),x.stopImmediatePropagation();let b=S(x.clientX,x.clientY,8);b.length!==0&&(c(b[0]??null),t.postMessage({source:"hf-preview",type:"element-pick-candidates",candidates:b,selectedIndex:0,point:{x:x.clientX,y:x.clientY}}))}function M(x){x.key==="Escape"&&(D(),t.postMessage({source:"hf-preview",type:"pick-mode-cancelled"}))}function X(){e||(e=!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",U,!0),document.addEventListener("click",B,!0),document.addEventListener("keydown",M,!0),s("hyperframe:picker:mode",{isPickMode:!0,timestamp:Date.now()}))}function D(){e&&(e=!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",U,!0),document.removeEventListener("click",B,!0),document.removeEventListener("keydown",M,!0),s("hyperframe:picker:mode",{isPickMode:!1,timestamp:Date.now()}))}function F(){window.__HF_PICKER_API={enable:X,disable:D,isActive:()=>e,getHovered:()=>r,getSelected:()=>o,getCandidatesAtPoint:(x,b,E)=>Number.isFinite(x)&&Number.isFinite(b)?S(x,b,E):[],pickAtPoint:(x,b,E)=>{if(!Number.isFinite(x)||!Number.isFinite(b))return null;let N=S(x,b,8);if(!N.length)return null;let T=Math.max(0,Math.min(N.length-1,Number(E??0))),_=N[T]??null;return _?(u(_),t.postMessage({source:"hf-preview",type:"element-picked",elementInfo:_}),D(),_):null},pickManyAtPoint:(x,b,E)=>{if(!Number.isFinite(x)||!Number.isFinite(b))return[];let N=S(x,b,8);if(!N.length)return[];let T=[],_=Array.isArray(E)?E:[0];for(let P of _){let J=Math.max(0,Math.min(N.length-1,Math.floor(Number(P)))),L=N[J];if(!L)continue;T.some(ge=>ge.selector===L.selector&&ge.tagName===L.tagName)||T.push(L)}return T.length?(u(T[0]??null),t.postMessage({source:"hf-preview",type:"element-picked-many",elementInfos:T}),D(),T):[]}},s("hyperframe:picker:api-ready",{hasApi:!0,timestamp:Date.now()})}return{enablePickMode:X,disablePickMode:D,installPickerApi:F}}function Ze(t,e){let n=Number.isFinite(e)&&e>0?e:30,i=Number.isFinite(t)&&t>0?t:0;return Math.floor(i*n+1e-9)/n}function Rt(t,e,n){if(t){for(let i of Object.values(t))if(!(!i||i===e))try{n(i)}catch(r){R("runtime.player.site1",r)}}}function gi(t,e,n){let i=Ze(e,n);return t.pause(),typeof t.totalTime=="function"?t.totalTime(i,!1):t.seek(i,!1),i}function $o(t,e,n,i){let r=[];Rt(t,e,o=>{o.play(),r.push(o)});try{return gi(e,n,i)}finally{for(let o of r)try{o.pause()}catch(s){R("runtime.player.site2",s)}}}function Ko(t,e){Rt(t,e,n=>{n.play()})}function yi(t){return{_timeline:null,play:()=>{let e=t.getTimeline();if(!e||t.getIsPlaying())return;let n=Math.max(0,Number(t.getSafeDuration?.()??e.duration()??0)||0);n>0&&Math.max(0,Number(e.time())||0)>=n&&(e.pause(),e.seek(0,!1),t.onDeterministicSeek(0),t.setIsPlaying(!1),t.onSyncMedia(0,!1),t.onRenderFrameSeek(0)),typeof e.timeScale=="function"&&e.timeScale(t.getPlaybackRate()),e.play(),Rt(t.getTimelineRegistry?.(),e,i=>{typeof i.timeScale=="function"&&i.timeScale(t.getPlaybackRate()),i.play()}),t.onDeterministicPlay(),t.setIsPlaying(!0),t.onShowNativeVideos(),t.onStatePost(!0)},pause:()=>{let e=t.getTimeline();if(!e)return;e.pause(),Rt(t.getTimelineRegistry?.(),e,i=>{i.pause()});let n=Math.max(0,Number(e.time())||0);t.onDeterministicSeek(n),t.onDeterministicPause(),t.setIsPlaying(!1),t.onSyncMedia(n,!1),t.onRenderFrameSeek(n),t.onStatePost(!0)},seek:e=>{let n=t.getTimeline();if(!n)return;let i=Math.max(0,Number(e)||0),r=$o(t.getTimelineRegistry?.(),n,i,t.getCanonicalFps());t.onDeterministicSeek(r),t.setIsPlaying(!1),t.onSyncMedia(r,!1),t.onRenderFrameSeek(r),t.onStatePost(!0)},renderSeek:e=>{let n=t.getTimeline(),i=t.getCanonicalFps(),r=n?(Ko(t.getTimelineRegistry?.(),n),gi(n,e,i)):Ze(Math.max(0,Number(e)||0),i);t.onDeterministicSeek(r),t.setIsPlaying(!1),t.onSyncMedia(r,!1),t.onRenderFrameSeek(r),t.onStatePost(!0)},getTime:()=>Number(t.getTimeline()?.time()??0),getDuration:()=>Number(t.getTimeline()?.duration()??0),isPlaying:()=>t.getIsPlaying(),setPlaybackRate:e=>t.setPlaybackRate(e),getPlaybackRate:()=>t.getPlaybackRate()}}function Si(){return{capturedTimeline:null,isPlaying:!1,rafId:null,currentTime:0,deterministicAdapters:[],parityModeEnabled:!0,canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,clampDurationLoggedRaw:null,beforeUnloadHandler:null,domReadyHandler:null,injectedCompStyles:[],injectedCompScripts:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,maxTimelineDurationSeconds:1800,nativeVisualWatchdogTick:0,transportClock:null,transportRafId:null}}var Jo="data-hf-authored-duration",Qo="data-hf-authored-end";function $e(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}function Yo(t){return $e(t.getAttribute("data-duration"))}function Zo(t){return $e(t.getAttribute("data-end"))}function Xo(t){return $e(t.getAttribute(Jo))}function es(t){return $e(t.getAttribute(Qo))}function ts(t){let e=(t??"").trim();if(!e)return null;let n=$e(e);if(n!=null)return{kind:"absolute",value:n};let i=e.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",c=Number.parseFloat(s),u=Number.isFinite(c)?Math.max(0,c):0,l=o==="-"?-u:u;return{kind:"reference",refId:r,offset:l}}function Ke(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=new WeakMap,r=new WeakMap,o=new Set,s=a=>{let f=document.getElementById(a);return f||(document.querySelector(`[data-composition-id="${CSS.escape(a)}"]`)??null)},c=a=>{let f=r.get(a);if(f!==void 0)return f;let p=null,g=Yo(a)??(n?Xo(a):null);if(g!=null&&g>0&&(p=g),p==null||p<=0){let C=Zo(a)??(n?es(a):null);if(C!=null){let w=l(a,0),S=C-w;Number.isFinite(S)&&S>0&&(p=S)}}if((p==null||p<=0)&&a instanceof HTMLMediaElement){let C=$e(a.getAttribute("data-playback-start"))??$e(a.getAttribute("data-media-start"))??0;Number.isFinite(a.duration)&&a.duration>C&&(p=a.duration-C)}if(p==null||p<=0){let C=a.getAttribute("data-composition-id");if(C){let w=e[C]??null;if(w&&typeof w.duration=="function")try{let S=Number(w.duration());Number.isFinite(S)&&S>0&&(p=S)}catch(S){R("runtime.startResolver.site1",S)}}}return p!=null&&Number.isFinite(p)&&p>0?(r.set(a,p),p):(r.set(a,null),null)},u=(a,f)=>{if(a.hasAttribute("data-composition-id")){let g=a.parentElement?.closest("[data-composition-id]");return g?l(g,f):0}let p=a.closest("[data-composition-id]");return p?l(p,f):0},l=(a,f)=>{let p=i.get(a);if(p!==void 0)return p??f;if(o.has(a))return f;o.add(a);try{let g=ts(a.getAttribute("data-start"));if(!g){if(a.hasAttribute("data-composition-id")){let B=a.parentElement;if(B&&(B.hasAttribute("data-composition-src")||B.hasAttribute("data-composition-id"))){let M=l(B,f);return i.set(a,M),M}}return i.set(a,f),f}if(g.kind==="absolute"){let B=Math.max(0,g.value),M=Math.max(0,u(a,f)+B);return i.set(a,M),M}let C=s(g.refId);if(!C)return i.set(a,f),f;let w=l(C,0),S=c(C);if(S==null||S<=0){let B=Math.max(0,w+g.offset);return i.set(a,B),B}let U=Math.max(0,w+S+g.offset);return i.set(a,U),U}finally{o.delete(a)}};return{resolveStartForElement:(a,f=0)=>l(a,Math.max(0,f)),resolveDurationForElement:a=>c(a)}}var ns="data-hf-authored-duration",is="data-hf-authored-end";function Fe(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}function mn(t){return Fe(t.getAttribute("data-duration"))??Fe(t.getAttribute(ns))}function bi(t){return Fe(t.getAttribute("data-end"))??Fe(t.getAttribute(is))}function pn(...t){let e=t.filter(n=>Number.isFinite(n??null));return e.length===0?null:Math.max(...e)}var Ai={composition:0,video:1,image:2,element:3,audio:4};function rs(t){if(t.length===0)return;let e=new Map;for(let s of t){let c=e.get(s.track)??new Set;c.add(s.kind),e.set(s.track,c)}if(!Array.from(e.values()).some(s=>s.size>1))return;let i=0,r=new Map,o=[...e.keys()].sort((s,c)=>s-c);for(let s of o){let c=e.get(s);if(c.size===1)r.set(`${s}:${[...c][0]}`,i++);else{let u=[...c].sort((l,a)=>(Ai[l]??99)-(Ai[a]??99));for(let l of u)r.set(`${s}:${l}`,i++)}}for(let s of t){let c=`${s.track}:${s.kind}`,u=r.get(c);u!=null&&(s.track=u)}}function dt(t){let e=String(t??"").trim();if(!e)return null;let n=e.toLowerCase();if(n.startsWith("data:")||n.startsWith("javascript:"))return null;try{return new URL(e,document.baseURI).toString()}catch{return e}}function Ei(t){let e=t.getAttribute("src")??t.getAttribute("data-src");if(e)return dt(e);let n=t.getAttribute("data-composition-src");if(n)return dt(n);let i=t.querySelector("img[src], video[src], audio[src], source[src]");return i?dt(i.getAttribute("src")):null}function os(t){let e=t.className;return typeof e!="string"?null:e.split(/\\s+/).map(n=>n.trim()).find(n=>n&&n!=="clip"&&!n.startsWith("__hf-"))??null}function ss(t){if(!t)return null;try{return new URL(t,document.baseURI).pathname.split("/").filter(Boolean).at(-1)??null}catch{return t.split(/[\\\\/]/).filter(Boolean).at(-1)??null}}function as(t){let e=t.textContent?.replace(/\\s+/g," ").trim();return e?e.length>32?`${e.slice(0,31)}...`:e:null}function ct(t){let e=t.replace(/\\.[^.]+$/i,"").replace(/[-_]+/g," ").replace(/\\s+/g," ").trim();return e?e.replace(/\\b\\w/g,n=>n.toUpperCase()):t}function ls(t,e,n){let i=t.getAttribute("data-timeline-label")??t.getAttribute("data-label")??t.getAttribute("aria-label")??null;if(i?.trim())return i.trim();let r=t.getAttribute("data-composition-id");if(r)return ct(r);let o=t.id;if(o)return ct(o);let s=os(t);if(s)return ct(s);let c=ss(Ei(t));if(c)return ct(c);let u=as(t);return u||`${ct(e)} ${n+1}`}function Fi(t){let n=window.__timelines??{},i=Ke({timelineRegistry:n,includeAuthoredTimingAttrs:!0}),r=W=>{if(!W)return null;let k=n[W]??null;if(!k||typeof k.duration!="function")return null;try{let O=Number(k.duration());return Number.isFinite(O)&&O>0?O:null}catch{return null}},o=W=>{let k=Fe(W.getAttribute("data-duration"));if(k!=null&&k>0)return k;let O=Fe(W.getAttribute("data-playback-start"))??Fe(W.getAttribute("data-media-start"))??0;return Number.isFinite(W.duration)&&W.duration>O?Math.max(0,W.duration-O):null},s=()=>{let W=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(W.length===0)return null;let k=0;for(let O of W){let ie=i.resolveStartForElement(O,0);if(!Number.isFinite(ie))continue;let ee=o(O);ee==null||ee<=0||(k=Math.max(k,Math.max(0,ie)+ee))}return k>0?k:null},c=W=>{let k=W.trim().toLowerCase();return!(!k||k==="main"||k.includes("caption")||k.includes("ambient"))},u=(W,k)=>{let O=[],ie=null,ee=null,z=null,q=W.parentElement;for(;q;){let V=q.getAttribute("data-composition-id");V&&(O.push(V),!z&&q!==k&&(z=V),ie==null&&(ie=i.resolveStartForElement(q,0)),ee==null&&(ee=Fe(q.getAttribute("data-duration"))??r(V)??null)),q=q.parentElement}return{parentCompositionId:z,compositionAncestors:O.reverse(),inheritedStart:ie,inheritedDuration:ee}},l=document.querySelector("[data-composition-id]"),a=Array.from(document.querySelectorAll("[data-composition-id]")),f=l?.getAttribute("data-composition-id")??null,p=l?i.resolveStartForElement(l,0):0,g=s(),C=g!=null?Math.max(0,g-Math.max(0,p)):null,w=r(f),S=mn(l??document.body),U=pn(...a.filter(W=>W!==l).map(W=>{let k=i.resolveStartForElement(W,0),O=i.resolveDurationForElement(W)??r(W.getAttribute("data-composition-id"))??null;return!Number.isFinite(k)||O==null||O<=0?null:Math.max(0,k)+O})),B=U!=null?Math.max(0,U-Math.max(0,p)):null,M=typeof w=="number"&&Number.isFinite(w)&&w>0?w:null,X=typeof S=="number"&&Number.isFinite(S)&&S>0?S:null,D=typeof C=="number"&&Number.isFinite(C)&&C>0?C:null,F=typeof B=="number"&&Number.isFinite(B)&&B>0?B:null,x=pn(D,F),b=M!=null&&x!=null&&M>x+1,E=X??(b?x:pn(M,D,F)),N=E!=null?Math.min(E,t.maxTimelineDurationSeconds):null,_=(N!=null?p+N:null)??(typeof g=="number"&&Number.isFinite(g)&&g>0?g:null),P=(W,k)=>!Number.isFinite(k)||k<=0?0:_==null||!Number.isFinite(_)?k:!Number.isFinite(W)||W>=_?0:Math.max(0,Math.min(k,_-W)),J=[],L=[],ce=Array.from(document.querySelectorAll("[data-start], [data-track-index], [data-composition-id], video, audio, img")),ge=0;for(let W=0;W<ce.length;W+=1){let k=ce[W];if(k===l||["SCRIPT","STYLE","LINK","META","TEMPLATE","NOSCRIPT"].includes(k.tagName))continue;let O=u(k,l),ie=i.resolveStartForElement(k,O.inheritedStart??0),ee=k.getAttribute("data-composition-id"),z=mn(k);if((z==null||z<=0)&&ee&&ee!==f&&(z=r(ee)),(z==null||z<=0)&&k instanceof HTMLMediaElement){let be=Fe(k.getAttribute("data-playback-start"))??Fe(k.getAttribute("data-media-start"))??0;Number.isFinite(k.duration)&&k.duration>0&&(z=Math.max(0,k.duration-be))}if(z==null||z<=0){let be=O.inheritedDuration;if(be!=null&&be>0){let me=(O.inheritedStart??0)+be;z=Math.max(0,me-ie)}}if(z==null||z<=0||(z=P(ie,z),z<=0))continue;let q=ie+z;ge=Math.max(ge,q);let V=k.tagName.toLowerCase(),_e=ee&&ee!==f?"composition":V==="video"?"video":V==="audio"?"audio":V==="img"?"image":"element";J.push({id:k.id||ee||null,label:ls(k,_e,J.length),start:ie,duration:z,track:Number.parseInt(k.getAttribute("data-track-index")??k.getAttribute("data-track")??String(W),10)||0,kind:_e,tagName:V,compositionId:k.getAttribute("data-composition-id"),compositionAncestors:O.compositionAncestors,parentCompositionId:O.parentCompositionId,nodePath:null,compositionSrc:dt(k.getAttribute("data-composition-src")),assetUrl:Ei(k),timelineRole:k.getAttribute("data-timeline-role"),timelineLabel:k.getAttribute("data-timeline-label"),timelineGroup:k.getAttribute("data-timeline-group"),timelinePriority:Fe(k.getAttribute("data-timeline-priority"))})}let $=new Set(J.map(W=>W.id)),G=l?.getAttribute("data-composition-id")??null,I=G?n[G]??null:null;if(I&&l){let W=I;if(typeof W.getChildren=="function")try{let k=W.getChildren(!0,!0,!1)??[],O=new Map;for(let z of l.children){let q=z;if(!q.id)continue;let V=q.tagName.toLowerCase();V==="script"||V==="style"||V==="link"||O.set(q,{id:q.id,start:1/0,end:-1/0})}let ie=z=>{let q=z;for(;q;){if(O.has(q))return q;if(q===l)return null;q=q.parentElement}return null};for(let z of k){if(typeof z.targets!="function"||typeof z.startTime!="function"||typeof z.duration!="function")continue;let q=z.startTime(),V=z.parent;for(;V&&V!==I&&typeof V.startTime=="function";)q+=V.startTime(),V=V.parent;let _e=q+z.duration();if(!(!Number.isFinite(q)||!Number.isFinite(_e)))for(let be of z.targets()){if(!(be instanceof Element))continue;let ke=ie(be);if(!ke)continue;let me=O.get(ke);me&&(me.start=Math.min(me.start,q),me.end=Math.max(me.end,_e))}}let ee=J.length>0?Math.max(...J.map(z=>z.track))+1:0;for(let[z,q]of O){if(q.start===1/0||q.end===-1/0)continue;let V=z;if($.has(V.id))continue;let _e=Math.max(0,q.end-q.start);if(_e<=0)continue;let be=P(q.start,_e);be<=0||(ge=Math.max(ge,q.start+be),J.push({id:V.id,label:V.getAttribute("data-timeline-label")??V.getAttribute("data-label")??V.getAttribute("aria-label")??V.id,start:q.start,duration:be,track:Number.parseInt(V.getAttribute("data-track-index")??V.getAttribute("data-track")??"",10)||ee,kind:"element",tagName:V.tagName.toLowerCase(),compositionId:V.getAttribute("data-composition-id"),compositionAncestors:G?[G]:[],parentCompositionId:G,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:V.getAttribute("data-timeline-role"),timelineLabel:V.getAttribute("data-timeline-label"),timelineGroup:V.getAttribute("data-timeline-group"),timelinePriority:Fe(V.getAttribute("data-timeline-priority"))}),$.add(V.id))}}catch(k){R("runtime.timeline.site1",k)}}if(l&&N!=null&&N>0){let W=J.length>0?Math.max(...J.map(k=>k.track))+1:0;for(let k of l.children){let O=k;if(!O.id||$.has(O.id))continue;let ie=O.getAttribute("data-timeline-role");if(ie!=="overlay"&&ie!=="persistent-overlay")continue;let ee=O.tagName.toLowerCase();if(ee==="script"||ee==="style"||ee==="link"||ee==="meta"||window.getComputedStyle(O).display==="none")continue;let q=P(0,N);q<=0||(ge=Math.max(ge,q),J.push({id:O.id,label:O.getAttribute("data-timeline-label")??O.getAttribute("data-label")??O.getAttribute("aria-label")??O.id,start:0,duration:q,track:Number.parseInt(O.getAttribute("data-track-index")??O.getAttribute("data-track")??"",10)||W,kind:"element",tagName:ee,compositionId:O.getAttribute("data-composition-id"),compositionAncestors:G?[G]:[],parentCompositionId:G,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:ie,timelineLabel:O.getAttribute("data-timeline-label"),timelineGroup:O.getAttribute("data-timeline-group"),timelinePriority:Fe(O.getAttribute("data-timeline-priority"))}),$.add(O.id))}}rs(J);for(let W of a){if(W===l)continue;let k=W.getAttribute("data-composition-id");if(!k||!c(k))continue;let O=i.resolveStartForElement(W,0),ie=mn(W);if((ie==null||ie<=0)&&bi(W)!=null){let V=bi(W);ie=Math.max(0,V-O)}let ee=r(k),z=ie&&ie>0?ie:ee;if(z==null||z<=0)continue;let q=P(O,z);q<=0||L.push({id:k,label:W.getAttribute("data-label")??k,start:O,duration:q,thumbnailUrl:dt(W.getAttribute("data-thumbnail-url")),avatarName:null})}let Z=Math.max(1,Math.min(Math.max(ge||1,N??0),t.maxTimelineDurationSeconds));return{source:"hf-preview",type:"timeline",durationInFrames:b&&X==null?Number.POSITIVE_INFINITY:Math.max(1,Math.round(Z*Math.max(1,t.canonicalFps))),clips:J,scenes:L,compositionWidth:Fe(l?.getAttribute("data-width"))??1920,compositionHeight:Fe(l?.getAttribute("data-height"))??1080}}var ue=Uo(Kr(),1),Jr=ue.default,yc=ue.default.stringify,Sc=ue.default.fromJSON,bc=ue.default.plugin,Ac=ue.default.parse,Ec=ue.default.list,Fc=ue.default.document,wc=ue.default.comment,Nc=ue.default.atRule,Cc=ue.default.rule,Mc=ue.default.decl,Tc=ue.default.root,kc=ue.default.CssSyntaxError,vc=ue.default.Declaration,Dc=ue.default.Container,Lc=ue.default.Processor,_c=ue.default.Document,Rc=ue.default.Comment,Bc=ue.default.Warning,Oc=ue.default.AtRule,Pc=ue.default.Result,Ic=ue.default.Input,Wc=ue.default.Rule,Hc=ue.default.Root,qc=ue.default.Node;function Hn(t){return t.replace(/[.*+?^${}()|[\\]\\\\]/g,"\\\\$&")}function va(t){return t.replace(/\\\\/g,"\\\\\\\\").replace(/"/g,\'\\\\"\')}function Da(t,e,n){let i=La(t,e,n),r=i.trim();if(!r||/^(html|body|:root|\\*)$/i.test(r))return t;let o=new RegExp(`\\\\[\\\\s*data-composition-id\\\\s*=\\\\s*(["\'])${Hn(n)}\\\\1\\\\s*\\\\]`,"g");if(o.test(r))return i.replace(o,e);let s=i.match(/^\\s*/)?.[0]??"",c=i.match(/\\s*$/)?.[0]??"";return`${s}${e} ${r}${c}`}function La(t,e,n){let i=Hn(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 t.replace(new RegExp(`${r}(?:${o})+`,"g"),e).replace(new RegExp(`(?:${o})+${r}`,"g"),e)}var _a=new Set(["keyframes","-webkit-keyframes","font-face"]);function Ra(t){return t?.type==="atrule"}function Ba(t){let e=t.parent;for(;e;){if(Ra(e)&&_a.has(e.name.toLowerCase()))return!0;e=e.parent}return!1}function qn(t,e,n){let i=e.trim();if(!t||!i)return t;let r=n||`[data-composition-id="${va(i)}"]`,o=Jr.parse(t);return o.walkRules(s=>{Ba(s)||(s.selectors=s.selectors.map(c=>Da(c,r,i)))}),o.toResult({map:!1}).css}function Qr(t,e,n="[HyperFrames] composition script error:",i,r=e){let o=JSON.stringify(e),s=JSON.stringify(r),c=JSON.stringify(n),u=Hn(e),l=JSON.stringify(i??null),a=JSON.stringify(String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${u}"|\'${u}\')\\s*\\]`),f=JSON.stringify(String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`);return`(function(){\n var __hfCompId = ${o};\n var __hfTimelineCompId = ${s};\n var __hfErrorLabel = ${c};\n var __hfEscapeAttr = function(value) {\n return (value + "").replace(/\\\\\\\\/g, "\\\\\\\\\\\\\\\\").replace(/"/g, "\\\\\\\\\\\\"");\n };\n var __hfRootSelector = ${l} || (__hfCompId\n ? \'[data-composition-id="\' + __hfEscapeAttr(__hfCompId) + \'"]\'\n : "");\n var __hfRoot = null;\n var __hfRootSelectorPattern = ${a};\n var __hfTimingSelectorPattern = ${f};\n var __hfNormalizeSelector = function(selector) {\n if (!__hfCompId || typeof selector !== "string") return selector;\n return selector\n .replace(new RegExp(__hfRootSelectorPattern + \'(?:\' + __hfTimingSelectorPattern + \')+\', \'g\'), __hfRootSelector)\n .replace(new RegExp(\'(?:\' + __hfTimingSelectorPattern + \')+\' + __hfRootSelectorPattern, \'g\'), __hfRootSelector);\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 (root.id === idValue) return root;\n if (typeof root.querySelector !== "function") return null;\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 var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\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.slice.call(root.querySelectorAll(selector));\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 && __hfCompId ? byComp[__hfCompId] : null;\n return scoped ? Object.assign({}, scoped) : {};\n },\n });\n var __hfRun = function() {\n try {\n (function(document, gsap, window, __hyperframes) {\n${t}\n }).call(window, __hfScopedDocument, __hfScopedGsap, __hfScopedWindow, __hfScopedHyperframes);\n } catch (_err) {\n console.error(__hfErrorLabel, __hfCompId, _err);\n }\n };\n __hfFindRoot();\n __hfRun();\n})();`}function Yr(){if(typeof document>"u")return{};let t=Un(document.documentElement),e=Oa();return{...t,...e}}function Un(t){if(!t)return{};let e=t.getAttribute("data-composition-variables");if(!e)return{};let n;try{n=JSON.parse(e)}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 Oa(){if(typeof window>"u")return{};let t=window.__hfVariables;return!t||typeof t!="object"||Array.isArray(t)?{}:t}var Pa=8e3,Ia=/^(?![a-zA-Z][a-zA-Z\\d+\\-.]*:)(?!\\/\\/)(?!\\/)(?!\\.\\.?\\/).+/,Wa=t=>new Promise(e=>{let n=!1,i=Date.now(),r=null,o=s=>{n||(n=!0,r!=null&&window.clearTimeout(r),e({status:s,elapsedMs:Math.max(0,Date.now()-i)}))};t.addEventListener("load",()=>o("load"),{once:!0}),t.addEventListener("error",()=>o("error"),{once:!0}),r=window.setTimeout(()=>o("timeout"),Pa)});function zn(t){for(;t.firstChild;)t.removeChild(t.firstChild);t.textContent=""}function Zr(t,e){let n=t.trim();if(!n)return t;try{return Ia.test(n)?new URL(n,document.baseURI).toString():e?new URL(n,e).toString():new URL(n,document.baseURI).toString()}catch{return t}}function Ha(t){let e=t.getAttribute("data-variable-values");if(!e)return{};let n;try{n=JSON.parse(e)}catch{return{}}return!n||typeof n!="object"||Array.isArray(n)?{}:n}async function jn(t){let e=null;t.hostCompositionId&&(e=Array.from(t.sourceNode.querySelectorAll("[data-composition-id]")).find(a=>a.getAttribute("data-composition-id")===t.hostCompositionId)??null);let n=e??t.sourceNode,i=e?.getAttribute("data-composition-id")?.trim()||t.hostCompositionId||null;if(t.headStyles)for(let l of t.headStyles){let a=l.cloneNode(!0);a instanceof HTMLStyleElement&&(i&&(a.textContent=qn(a.textContent||"",i)),document.head.appendChild(a),t.injectedStyles.push(a))}let r=Array.from(n.querySelectorAll("style"));for(let l of r){let a=l.cloneNode(!0);a instanceof HTMLStyleElement&&(i&&(a.textContent=qn(a.textContent||"",i)),document.head.appendChild(a),t.injectedStyles.push(a))}let o=[];if(t.headScripts)for(let l of t.headScripts){let a=l.getAttribute("type")?.trim()??"",f=l.getAttribute("src")?.trim()??"";if(f){let p=Zr(f,t.compositionUrl);o.push({kind:"external",src:p,type:a})}else{let p=l.textContent?.trim()??"";p&&o.push({kind:"inline",content:p,type:a,scopeCompositionId:i})}}let s=Array.from(n.querySelectorAll("script")),c=[...o];for(let l of s){let a=l.getAttribute("type")?.trim()??"",f=l.getAttribute("src")?.trim()??"";if(f){let p=Zr(f,t.compositionUrl);c.push({kind:"external",src:p,type:a})}else{let p=l.textContent?.trim()??"";p&&c.push({kind:"inline",content:p,type:a,scopeCompositionId:i})}l.parentNode?.removeChild(l)}let u=Array.from(n.querySelectorAll("style"));for(let l of u)l.parentNode?.removeChild(l);if(e){let l=document.importNode(e,!0),a=e.getAttribute("data-width"),f=e.getAttribute("data-height"),p=t.parseDimensionPx(a),g=t.parseDimensionPx(f);for(a&&t.host.setAttribute("data-width",a),f&&t.host.setAttribute("data-height",f),p&&t.host instanceof HTMLElement&&(t.host.style.width=p),g&&t.host instanceof HTMLElement&&(t.host.style.height=g);l.firstChild;)t.host.appendChild(l.firstChild)}else t.hasTemplate?t.host.appendChild(document.importNode(n,!0)):t.host.innerHTML=t.fallbackBodyInnerHtml;if(i){let l={...t.declaredVariableDefaults??{},...Ha(t.host)};Object.keys(l).length>0&&(window.__hfVariablesByComp||(window.__hfVariablesByComp={}),window.__hfVariablesByComp[i]=l)}for(let l of c){let a=document.createElement("script");if(l.type&&(a.type=l.type),a.async=!1,l.kind==="external"?a.src=l.src:l.type.toLowerCase()==="module"?a.textContent=l.content:l.scopeCompositionId?a.textContent=Qr(l.content,l.scopeCompositionId):a.textContent=`(function(){${l.content}})();`,document.body.appendChild(a),t.injectedScripts.push(a),l.kind==="external"){let f=await Wa(a);f.status!=="load"&&t.onDiagnostic?.({code:"external_composition_script_load_issue",details:{hostCompositionId:t.hostCompositionId,hostCompositionSrc:t.hostCompositionSrc,resolvedScriptSrc:l.src,loadStatus:f.status,elapsedMs:f.elapsedMs}})}}}async function Xr(t){let e=Array.from(document.querySelectorAll("[data-composition-id]:not([data-composition-src])")).filter(n=>{if(n.children.length>0)return!1;let i=n.getAttribute("data-composition-id");return i?!!document.querySelector(`template#${CSS.escape(i)}-template`):!1});if(e.length!==0)for(let n of e){let i=n.getAttribute("data-composition-id"),r=document.querySelector(`template#${CSS.escape(i)}-template`);zn(n),await jn({host:n,hostCompositionId:i,hostCompositionSrc:`template#${i}-template`,sourceNode:r.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:null,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,onDiagnostic:t.onDiagnostic})}}async function eo(t){let e=Array.from(document.querySelectorAll("[data-composition-src]"));e.length!==0&&await Promise.all(e.map(async n=>{let i=n.getAttribute("data-composition-src");if(!i)return;let r=null;try{r=new URL(i,document.baseURI)}catch{r=null}zn(n);try{let o=n.getAttribute("data-composition-id"),s=o!=null?document.querySelector(`template#${CSS.escape(o)}-template`):null;if(s){await jn({host:n,hostCompositionId:o,hostCompositionSrc:i,sourceNode:s.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:r,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,onDiagnostic:t.onDiagnostic});return}let c=await fetch(i);if(!c.ok)throw new Error(`HTTP ${c.status}`);let u=await c.text(),a=new DOMParser().parseFromString(u,"text/html"),f=(o?a.querySelector(`template#${CSS.escape(o)}-template`):null)??a.querySelector("template"),p=f?f.content:a.body,g=f?void 0:Array.from(a.head.querySelectorAll("style")),C=f?void 0:Array.from(a.head.querySelectorAll("script"));await jn({host:n,hostCompositionId:o,hostCompositionSrc:i,sourceNode:p,hasTemplate:!!f,fallbackBodyInnerHtml:a.body.innerHTML,compositionUrl:r,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,headStyles:g,headScripts:C,declaredVariableDefaults:Un(a.documentElement),onDiagnostic:t.onDiagnostic})}catch(o){t.onDiagnostic?.({code:"external_composition_load_failed",details:{hostCompositionId:n.getAttribute("data-composition-id"),hostCompositionSrc:i,errorMessage:o instanceof Error?o.message:"unknown_error"}}),zn(n)}}))}function qa(t){return t instanceof HTMLElement?t.dataset.captionWrapper!=="true"?t:t.querySelector(":scope > span")??null:null}function Ua(){let t=[],e=document.querySelectorAll(".caption-group");for(let n of e)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&&t.push(r)}return t}function za(t){let e=t.parentElement;if(e?.dataset.captionWrapper==="true")return e;let n=document.createElement("span");return n.style.display="inline-block",n.dataset.captionWrapper="true",t.parentNode?.insertBefore(n,t),n.appendChild(t),n}function Gn(){let t=window.gsap;t&&document.querySelectorAll(".caption-group").length!==0&&fetch("caption-overrides.json").then(e=>e.ok?e.json():null).then(e=>{if(!e||!Array.isArray(e)||e.length===0)return;let n=Ua();for(let i of e){let r=null;if(i.wordId&&(r=qa(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 u=t.getTweensOf(r).filter(a=>a.vars.color!==void 0).sort((a,f)=>a.startTime()-f.startTime()),l=u.length>0?String(u[0].vars.color):"";for(let a of u)String(a.vars.color)===l?i.dimColor&&(a.vars.color=i.dimColor):i.activeColor&&(a.vars.color=i.activeColor);i.dimColor&&t.set(r,{color:i.dimColor})}if(Object.keys(s).length>0&&t.set(r,s),Object.keys(o).length>0){let c=za(r);t.set(c,o)}}}).catch(()=>{})}var Qt=class{constructor(e){Se(this,"_baseTime",0);Se(this,"_playStartMs",null);Se(this,"_rate",1);Se(this,"_duration",1/0);Se(this,"_nowMs");Se(this,"_audioSource",null);this._baseTime=e?.initialTime??0,this._rate=e?.rate??1,this._duration=e?.duration??1/0,this._nowMs=e?.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)/this._rate+o)}if(i!==null)return Number.isFinite(this._duration)&&i>=this._duration?this._duration:Math.max(0,i)}let e=(this._nowMs()-this._playStartMs)/1e3,n=this._baseTime+e*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(e){let n=Number.isFinite(this._duration)?Math.max(0,Math.min(e,this._duration)):Math.max(0,e);this._baseTime=n,this._playStartMs!==null&&(this._playStartMs=this._nowMs())}isPlaying(){return this._playStartMs!==null}setRate(e){let n=Number.isFinite(e)&&e>0?Math.max(.1,Math.min(5,e)):1;this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._rate=n}getRate(){return this._rate}setDuration(e){this._duration=Number.isFinite(e)&&e>0?e:1/0,this._baseTime>this._duration&&(this._baseTime=this._duration)}getDuration(){return this._duration}attachAudioSource(e){this._audioSource=e}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:e}=this._audioSource;if(!e.paused&&Number.isFinite(e.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 to(t){return!Number.isFinite(t)||t<=0?1:t}var Yt=class{constructor(){Se(this,"_ctx",null);Se(this,"_bufferCache",new Map);Se(this,"_activeSources",[]);Se(this,"_masterGain",null);Se(this,"_rateAnchorCtx",0);Se(this,"_rateAnchorComp",0);Se(this,"_rate",1);Se(this,"_paused",!0);Se(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(e){let n=e.currentSrc||e.getAttribute("src");if(!n)return null;if(this._bufferCache.has(n))return this._bufferCache.get(n);if(!this._ctx)return null;try{let r=await(await fetch(n)).arrayBuffer(),o=await this._ctx.decodeAudioData(r);return this._bufferCache.set(n,o),o}catch(i){return R("webAudioTransport.decode",i),null}}startGeneration(){return this._playGeneration+=1,this._playGeneration}currentGeneration(){return this._playGeneration}async schedulePlayback(e,n,i,r,o,s,c,u=1){if(!this._ctx||!this._masterGain||c!==this._playGeneration)return null;try{if(this._ctx.state==="suspended"&&await this._ctx.resume(),c!==this._playGeneration)return null;let l=to(u),a=this._ctx.createBufferSource();a.buffer=n,a.playbackRate.value=l;let f=this._ctx.createGain();f.gain.value=s,a.connect(f),f.connect(this._masterGain);let p=o-i,g=this._ctx.currentTime;if(this._rate=l,this._rateAnchorCtx=g,this._rateAnchorComp=o,p>=0)a.start(0,p+r);else{let S=-p/l;a.start(g+S,r)}let C=e.muted;e.muted=!0;let w={el:e,sourceNode:a,gainNode:f,compositionStart:i,mediaStart:r,scheduledAt:g,priorMuted:C};return this._activeSources.push(w),this._paused=!1,w}catch(l){return R("webAudioTransport.schedule",l),null}}setRate(e){let n=to(e);if(n!==this._rate){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){R("webAudioTransport.setRate",r)}}}stopAll(){for(let e of this._activeSources){try{e.sourceNode.stop(),e.sourceNode.disconnect(),e.gainNode.disconnect()}catch{}e.el.muted=e.priorMuted}this._activeSources=[],this._paused=!0}setVolume(e){this._masterGain&&(this._masterGain.gain.value=Math.max(0,Math.min(1,e)))}setMuted(e){this._masterGain&&(this._masterGain.gain.value=e?0:1)}isActive(){return this._activeSources.length>0&&!this._paused}destroy(){if(this.stopAll(),this._bufferCache.clear(),this._ctx)try{this._ctx.close()}catch{}this._ctx=null,this._masterGain=null}};var no="data-hf-authored-duration",io="data-hf-authored-end";function ro(){let t=Si(),e=window,n=null,i=null,r=[],o=new Set,s=null;if(typeof e.__hfRuntimeTeardown=="function")try{e.__hfRuntimeTeardown()}catch(d){R("runtime.init.site1",d)}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 c=d=>{r.push(d)},u=(d,m,h)=>{let y=h??`${d}:${JSON.stringify(m)}`;o.has(y)||(o.add(y),Ee({source:"hf-preview",type:"diagnostic",code:d,details:m}))},l=d=>{let m={scale:1,focusX:960,focusY:540},h=[],y=[],A={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:()=>({...A,time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying()})}},a=1/60,f=.75,p=2,g=.05,C=100,w=240,S=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??"")}},U=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"}},B=d=>{if(d==null||d.trim()==="")return null;let m=Number.parseFloat(d);return!Number.isFinite(m)||m<=0?null:`${m}px`},M=()=>{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.length===0?null:m.find(h=>!h.parentElement?.closest("[data-composition-id]"))??m[0]??null},X=()=>{let d=M();if(!d)return;let m=B(d.getAttribute("data-width")),h=B(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)},D=()=>{let d=M(),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"),A=h.getAttribute("data-end");y!=null&&!h.hasAttribute(no)&&h.setAttribute(no,y),A!=null&&!h.hasAttribute(io)&&h.setAttribute(io,A),h.removeAttribute("data-duration"),h.removeAttribute("data-end")}},F=()=>{let d=M();if(!d)return;d.style.position||(d.style.position="relative"),d.style.overflow="hidden";let m=B(d.getAttribute("data-width")),h=B(d.getAttribute("data-height"));m&&(d.style.width=m),h&&(d.style.height=h);let y=Array.from(d.children);for(let A of y){let v=A.tagName.toLowerCase();if(v==="script"||v==="style"||v==="link"||v==="meta"||!A.hasAttribute("data-start"))continue;let j=(A.style.top==="0px"||A.style.top==="0")&&(A.style.left==="0px"||A.style.left==="0")&&A.style.width==="100%"&&A.style.height==="100%",ne=/translate\\(\\s*-50%\\s*,\\s*-50%\\s*\\)/.test(A.style.transform);if(j&&ne&&!A.hasAttribute("data-width")&&!A.hasAttribute("data-height")){let Re=A.style.top,ae=A.style.left,Pe=A.style.width,oe=A.style.height;A.style.top="",A.style.left="",A.style.width="",A.style.height="";let Q=window.getComputedStyle(A);Q.top!=="auto"||Q.bottom!=="auto"||Q.left!=="auto"||Q.right!=="auto"||Q.width!=="0px"||Q.height!=="0px"||(A.style.top=Re,A.style.left=ae,A.style.width=Pe,A.style.height=oe)}let te=window.getComputedStyle(A),se=te.position;if(se!=="absolute"&&se!=="fixed"&&(A.style.position="absolute"),!!A.style.top||!!A.style.bottom||te.top!=="auto"||te.bottom!=="auto"||(A.style.top="0"),!!A.style.left||!!A.style.right||te.left!=="auto"||te.right!=="auto"||(A.style.left="0"),v!=="audio"){let Re=B(A.getAttribute("data-width")),ae=B(A.getAttribute("data-height")),Pe=te.width!=="0px"&&te.width!=="auto",oe=te.height!=="0px"&&te.height!=="auto";Re?!A.style.width&&!Pe&&(A.style.width=Re):!A.style.width&&te.width==="0px"&&(A.style.width="100%"),ae?!A.style.height&&!oe&&(A.style.height=ae):!A.style.height&&te.height==="0px"&&(A.style.height="100%")}}},x=(d,m=0,h)=>Ke({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:h?.includeAuthoredTimingAttrs??!0}).resolveStartForElement(d,m),b=(d,m)=>Ke({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:m?.includeAuthoredTimingAttrs??!0}).resolveDurationForElement(d),E=!!document.querySelector("[data-composition-src]"),N=!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`)){N=!0;break}}}let T=!E&&!N,_=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}},P=d=>typeof d=="number"&&Number.isFinite(d)&&d>a,J=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},L=()=>{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=x(h,0);if(!Number.isFinite(y))continue;let A=J(h);A==null||A<=a||(m=Math.max(m,Math.max(0,y)+A))}return m>a?m:null},ce=()=>{let d=M();if(!d)return null;let m=window.__timelines??{},h=Ke({timelineRegistry:m,includeAuthoredTimingAttrs:!0}),y=0,A=Array.from(d.querySelectorAll("[data-composition-id][data-start]"));for(let v of A){if(!(v instanceof Element)||v.parentElement?.closest("[data-composition-id]")!==d)continue;let ne=h.resolveStartForElement(v,0),te=h.resolveDurationForElement(v);!Number.isFinite(ne)||te==null||te<=0||(y=Math.max(y,Math.max(0,ne)+te))}return y>a?y:null},ge=()=>{let d=L();return typeof d!="number"||!Number.isFinite(d)||d<=a?null:d},$=d=>P(d)?Math.max(a,d*f):a,G=(d,m=0)=>{let h=_(d),y=ge(),A=ce(),v=Math.max(y??0,A??0),j=Number.isFinite(m)&&m>a?m:0,ne=0;P(h)?ne=Math.max(h,v,j):P(v)?ne=Math.max(v,j):ne=j;let te=Math.max(1,Number(t.maxTimelineDurationSeconds)||1800);return ne>0?Math.max(0,Math.min(ne,te)):0},I=()=>{let d=window.__timelines??{},m=Ke({timelineRegistry:d,includeAuthoredTimingAttrs:!0}),h=ge(),y=ce(),A=Math.max(h??0,y??0)||null,v=$(A),j=oe=>{let Q=document.querySelector(`[data-composition-id="${CSS.escape(oe)}"]`);return Q?m.resolveStartForElement(Q,0):0},ne=oe=>{let Q=window.gsap;if(!Q||typeof Q.timeline!="function")return null;let de=Q.timeline({paused:!0});for(let he of oe)de.add(he.timeline,j(he.compositionId));return de},te=(oe,Q)=>{if(!P(oe))return null;let de=window.gsap;if(!de||typeof de.timeline!="function")return null;let he=de.timeline({paused:!0});if(Q)try{he.add(Q,0)}catch(le){R("runtime.init.site2",le)}let ye=he;if(typeof ye.to=="function")try{ye.to({},{duration:oe})}catch(le){R("runtime.init.site3",le)}return he},se=(oe,Q)=>{let de=oe;if(typeof de.getChildren!="function")return[];try{let he=de.getChildren(!0,!0,!0)??[];if(!Array.isArray(he))return[];let ye=[];for(let le of Q)if(!he.some(ve=>ve===le.timeline))try{let ve=j(le.compositionId);oe.add(le.timeline,ve),ye.push(le.compositionId)}catch(ve){R("runtime.init.site4",ve)}return ye}catch{return[]}},Ne=M(),pe=Ne?.getAttribute("data-composition-id")??null;if(!pe)return{timeline:null};let Ce=d[pe]??null,ae=(()=>{if(!Ne)return[];let oe=new Set,Q=Array.from(Ne.querySelectorAll("[data-composition-id]")),de=[];for(let he of Q){let ye=he.getAttribute("data-composition-id");if(!ye||ye===pe||oe.has(ye))continue;oe.add(ye);let le=d[ye]??null;if(!le||typeof le.play!="function"||typeof le.pause!="function")continue;let Me=_(le);de.push({compositionId:ye,timeline:le,durationSeconds:Me??0})}return de})(),Pe=oe=>{for(let Q of oe){let de=Q.timeline;if(typeof de.paused=="function")try{de.paused(!1)}catch(he){R("runtime.init.site5",he)}}};if(ae.length>0&&Pe(ae),Ce){let oe=ae.length>0?se(Ce,ae):[];if((ae.length>0||!document.querySelector("[data-composition-id]:not([data-composition-id=\'"+pe+"\'])"))&&(Z=!0),oe.length>0)try{let le=Ce.time();Ce.seek(le,!1)}catch{}let Q=_(Ce);if(!P(Q)&&ae.length>0){let le=ae.map(Ro=>Ro.compositionId),Me=ne(ae),ve=_(Me);if(Me&&P(ve))return{timeline:Me,selectedTimelineIds:le,selectedDurationSeconds:ve,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_unusable_fallback",details:{rootCompositionId:pe,rootDurationSeconds:Q,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:v,selectedDurationSeconds:ve,mediaDurationFloorSeconds:h,authoredCompositionDurationFloorSeconds:y,selectedTimelineIds:le,autoNestedChildren:oe}}};let an=te(A??0,Ce),ln=_(an);if(an&&P(ln))return{timeline:an,selectedTimelineIds:[pe],selectedDurationSeconds:ln,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:pe,rootDurationSeconds:Q,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:h,authoredCompositionDurationFloorSeconds:y,selectedDurationSeconds:ln,selectedTimelineIds:[pe],autoNestedChildren:oe}}}}if(!P(Q)&&ae.length===0){let le=te(A??0,Ce),Me=_(le);if(le&&P(Me))return{timeline:le,selectedTimelineIds:[pe],selectedDurationSeconds:Me,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:pe,rootDurationSeconds:Q,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:h,authoredCompositionDurationFloorSeconds:y,selectedDurationSeconds:Me,selectedTimelineIds:[pe]}}}}let de=Ne?.getAttribute("data-duration"),he=de?parseFloat(de):null,ye=Math.max(P(he)?he:0,y??0);if(ye>0&&P(ye)&&P(Q)&&ye>=Q+.5){let le=Ce;if(typeof le.to=="function")try{le.to({},{duration:0},ye)}catch(ve){R("runtime.init.site6",ve)}let Me=_(Ce);if(P(Me))return{timeline:Ce,selectedTimelineIds:[pe],selectedDurationSeconds:Me,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_padded_to_declared_duration",details:{rootCompositionId:pe,rootDurationSeconds:Q,rootDeclaredDur:he,authoredCompositionDurationFloorSeconds:y,newDur:Me}}}}return{timeline:Ce,selectedTimelineIds:[pe],selectedDurationSeconds:Q,mediaDurationFloorSeconds:h,diagnostics:oe.length>0?{code:"root_timeline_auto_nested_children",details:{rootCompositionId:pe,selectedDurationSeconds:Q,autoNestedChildren:oe}}:void 0}}if(ae.length>0){let oe=ae.map(he=>he.compositionId),Q=ne(ae),de=_(Q);if(Q)return{timeline:Q,selectedTimelineIds:oe,selectedDurationSeconds:de,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_missing_fallback",details:{rootCompositionId:pe,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:v,selectedDurationSeconds:de,mediaDurationFloorSeconds:h,selectedTimelineIds:oe}}}}return{timeline:null}},Z=!1,xe=()=>{if(!T)return!1;let d=t.capturedTimeline,m=_(d),h=P(m);if(d&&h&&Z)return!1;let y=I();if(!y.timeline)return!1;if(d&&d===y.timeline)return typeof d.timeScale=="function"&&d.timeScale(t.playbackRate),!1;t.capturedTimeline=y.timeline,typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);let A=G(t.capturedTimeline,0);if(A>0){try{H.setDuration(A)}catch{}t.capturedTimeline.pause()}return y.diagnostics&&Ee({source:"hf-preview",type:"diagnostic",code:y.diagnostics.code,details:y.diagnostics.details}),Ee({source:"hf-preview",type:"diagnostic",code:"timeline_bound",details:{selectedTimelineIds:y.selectedTimelineIds??[],selectedDurationSeconds:y.selectedDurationSeconds??null,mediaDurationFloorSeconds:y.mediaDurationFloorSeconds??null}}),!0},we=()=>{let d=M();if(!(d instanceof HTMLElement))return;let m=d.getBoundingClientRect(),h=Number(d.getAttribute("data-width")),y=Number(d.getAttribute("data-height")),A=window.getComputedStyle(d),v=Number.isFinite(h)&&h>0&&Number.isFinite(y)&&y>0,j=m.width<=0||m.height<=0||d.clientWidth<=0||d.clientHeight<=0;!v||!j||u("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:A.display,visibility:A.visibility,overflow:A.overflow},`root-stage-layout-zero:${d.getAttribute("data-composition-id")??"unknown"}`)},W=()=>{t.tornDown||(s!=null&&window.cancelAnimationFrame(s),s=window.requestAnimationFrame(()=>{s=null,we()}))},k=()=>{n=d=>{let m=S(d.error??d.message).slice(0,w);if(!m)return;let h=U(m);Ee({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}})},i=d=>{let m=S(d.reason).slice(0,w);if(!m)return;let h=U(m);Ee({source:"hf-preview",type:"diagnostic",code:`${h.code}_unhandled_rejection`,details:{category:`${h.category}-unhandled-rejection`,message:m}})},window.addEventListener("error",n),window.addEventListener("unhandledrejection",i)},O=()=>{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 A=h.tagName.toLowerCase(),v=h.getAttribute("src")??h.getAttribute("href")??h.getAttribute("poster")??null,j=A==="link"?"runtime_stylesheet_load_failed":"runtime_asset_load_failed";u(j,{tagName:A,assetUrl:v,currentSrc:(h instanceof HTMLImageElement||h instanceof HTMLMediaElement)&&h.currentSrc||null,readyState:h instanceof HTMLMediaElement?h.readyState:null,networkState:h instanceof HTMLMediaElement?h.networkState:null},`${j}:${A}:${v??"unknown"}`)};h.addEventListener("error",y),c(()=>{h.removeEventListener("error",y)})}let m=document.fonts;m&&m.ready.then(()=>{if(t.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&&u("runtime_font_load_issue",{failedFamilies:h,totalFaces:Array.from(m).length},`runtime-font-load-issue:${h.join("|")}`)}).catch(()=>{})},ie=(d,m)=>{if(!d.timeline)return!1;let h=t.capturedTimeline;if(h&&h===d.timeline)return!1;let y=Math.max(0,t.currentTime||0),A=t.isPlaying;t.capturedTimeline=d.timeline,typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);try{t.capturedTimeline.pause(),t.capturedTimeline.seek(y,!1),A&&t.capturedTimeline.play()}catch(v){R("runtime.init.site7",v)}return Ee({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},ee=null,z=!1,q=new Set,V=()=>{t.tornDown||(ee!=null&&window.clearTimeout(ee),ee=window.setTimeout(()=>{if(t.tornDown)return;ee=null;let d=I();if(!d.timeline||!P(d.mediaDurationFloorSeconds??null))return;if(!t.capturedTimeline){xe()&&(Ve(),me(!0));return}if(z)return;let h=_(t.capturedTimeline),y=d.selectedDurationSeconds??_(d.timeline);P(y)&&(!P(h)||y>=h+g)&&ie(d,"manual")&&(z=!0,Ee({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}}),Ve(),me(!0))},C))},_e=()=>{for(let d of q)d.removeEventListener("loadedmetadata",V),d.removeEventListener("durationchange",V);q.clear()},be=()=>{if(t.tornDown)return;let d=Array.from(document.querySelectorAll("video, audio"));for(let m of d)q.has(m)||(q.add(m),m.addEventListener("loadedmetadata",V),m.addEventListener("durationchange",V),m.preload!=="auto"&&(m.preload="auto"),m.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&m.load())},ke=()=>{let d=v=>{let j=v.closest("[data-composition-id]"),ne=j?x(j,0):null,te=j?b(j,{includeAuthoredTimingAttrs:!0}):null;return{compositionRoot:j,inheritedStart:ne,inheritedDuration:te}},m=pi({shouldIncludeElement:v=>v.hasAttribute("data-start")||!!d(v).compositionRoot,resolveStartSeconds:v=>{let j=d(v);return x(v,j.inheritedStart??0)},resolveDurationSeconds:v=>{let j=d(v),ne=x(v,j.inheritedStart??0),te=Number.parseFloat(v.dataset.playbackStart??v.dataset.mediaStart??"0")||0,se=j.inheritedStart!=null&&j.inheritedDuration!=null&&j.inheritedDuration>0?Math.max(0,j.inheritedStart+j.inheritedDuration-ne):null,Ne=Number.isFinite(v.duration)&&v.duration>te?Math.max(0,v.duration-te):null;return Ne!=null&&se!=null?Math.min(Ne,se):Ne??se}}),h=t.mediaForceSyncNextTick;h&&(t.mediaForceSyncNextTick=!1),hi({clips:m.mediaClips,timeSeconds:t.currentTime,playing:t.isPlaying,playbackRate:t.playbackRate,outputMuted:t.mediaOutputMuted||Ae.isActive(),userMuted:t.bridgeMuted,userVolume:t.bridgeVolume,forceSync:h,onAutoplayBlocked:()=>{t.mediaAutoplayBlockedPosted||(t.mediaAutoplayBlockedPosted=!0,Ee({source:"hf-preview",type:"media-autoplay-blocked"}))}});let y=document.querySelector("[data-composition-id]")?.getAttribute("data-composition-id")??null,A=Array.from(document.querySelectorAll("[data-start]"));for(let v of A){if(!(v instanceof HTMLElement))continue;let j=v.tagName.toLowerCase();if(j==="script"||j==="style"||j==="link"||j==="meta")continue;if(!v.getAttribute("data-composition-id")){let ae=v.closest("[data-composition-id]")?.getAttribute("data-composition-id")??null;if(ae&&ae!==y)continue}let te=x(v,0),se=b(v),Ne=v.getAttribute("data-composition-id");if(Ne){let Re=(window.__timelines??{})[Ne],ae=null;if(Re&&typeof Re.duration=="function"){let Pe=Number(Re.duration());Number.isFinite(Pe)&&Pe>0&&(ae=Pe)}se!=null&&se>0&&ae!=null?se=Math.min(se,ae):(se==null||se<=0)&&ae!=null&&(se=ae)}let pe=se!=null&&se>0?te+se:Number.POSITIVE_INFINITY,Ce=t.currentTime>=te&&(Number.isFinite(pe)?t.currentTime<pe:!0);v.style.visibility=Ce?"visible":"hidden"}},me=d=>{let m=Math.max(0,Math.round((t.currentTime||0)*t.canonicalFps)),h=Date.now();(d||m!==t.bridgeLastPostedFrame||t.isPlaying!==t.bridgeLastPostedPlaying||t.bridgeMuted!==t.bridgeLastPostedMuted||h-t.bridgeLastPostedAt>=t.bridgeMaxPostIntervalMs)&&(t.bridgeLastPostedFrame=m,t.bridgeLastPostedPlaying=t.isPlaying,t.bridgeLastPostedMuted=t.bridgeMuted,t.bridgeLastPostedAt=h,Ee({source:"hf-preview",type:"state",frame:m,isPlaying:t.isPlaying,muted:t.bridgeMuted,playbackRate:t.playbackRate}))},Ve=()=>{D(),X(),F();let d=M();if(d){let h=B(d.getAttribute("data-width")),y=B(d.getAttribute("data-height")),A=h?parseInt(h,10):0,v=y?parseInt(y,10):0;A>0&&v>0&&Ee({source:"hf-preview",type:"stage-size",width:A,height:v})}xe();let m=Fi({canonicalFps:t.canonicalFps,maxTimelineDurationSeconds:t.maxTimelineDurationSeconds});window.__clipManifest=m,Ee(m),W()},Oe=(d,m=0)=>{for(let h of t.deterministicAdapters){try{d==="discover"&&h.discover(),d==="pause"&&h.pause(),d==="play"&&h.play&&h.play()}catch(y){R("runtime.init.site8",y)}if(d==="discover")try{h.seek({time:m})}catch(y){R("runtime.init.site9",y)}}};if(T)Gn();else{let d={injectedStyles:t.injectedCompStyles,injectedScripts:t.injectedCompScripts,parseDimensionPx:B,onDiagnostic:({code:m,details:h})=>{Ee({source:"hf-preview",type:"diagnostic",code:m,details:h})}};eo(d).then(()=>Xr(d)).finally(()=>{T=!0,xe(),Oe("discover",t.currentTime),be(),O(),Gn(),Ve(),me(!0)})}let Lt=xi({postMessage:d=>Ee(d)});Lt.installPickerApi();let rn=d=>{let m=Number(d);!Number.isFinite(m)||m<=0?t.playbackRate=1:t.playbackRate=Math.max(.1,Math.min(5,m)),t.mediaForceSyncNextTick=!0,t.capturedTimeline&&typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);let h=document.querySelectorAll("video, audio");for(let y of h)if(y instanceof HTMLMediaElement)try{y.playbackRate=t.playbackRate}catch(A){R("runtime.init.site10",A)}},fe=yi({getTimeline:()=>t.capturedTimeline,setTimeline:d=>{t.capturedTimeline=d},getTimelineRegistry:()=>window.__timelines??{},getIsPlaying:()=>t.isPlaying,setIsPlaying:d=>{t.isPlaying!==d&&(t.mediaForceSyncNextTick=!0),t.isPlaying=d},getPlaybackRate:()=>t.playbackRate,setPlaybackRate:rn,getCanonicalFps:()=>t.canonicalFps,onSyncMedia:(d,m)=>{t.currentTime=Math.max(0,Number(d)||0),t.isPlaying!==m&&(t.mediaForceSyncNextTick=!0),t.isPlaying=m,ke()},onStatePost:me,onDeterministicSeek:d=>{for(let m of t.deterministicAdapters)try{m.seek({time:Number(d)||0})}catch(h){R("runtime.init.site11",h)}},onDeterministicPause:()=>Oe("pause"),onDeterministicPlay:()=>Oe("play"),onRenderFrameSeek:()=>{},onShowNativeVideos:()=>{},getSafeDuration:()=>G(t.capturedTimeline,0)});window.__player=l(fe),window.__playerReady=!0,window.__renderReady=!0,oi(Ee),lt("composition_loaded",{duration:fe.getDuration(),compositionId:document.querySelector("[data-composition-id]")?.getAttribute("data-composition-id")??null}),t.controlBridgeHandler=ri({onPlay:()=>{fe.play(),lt("composition_played",{time:fe.getTime()})},onPause:()=>{fe.pause(),lt("composition_paused",{time:fe.getTime()})},onSeek:(d,m)=>{let h=Math.max(0,d)/t.canonicalFps;fe.seek(h),lt("composition_seeked",{time:h})},onSetMuted:d=>{t.bridgeMuted=d;let m=d||t.mediaOutputMuted;Ae.setMuted(m);let h=document.querySelectorAll("video, audio");for(let y of h)y instanceof HTMLMediaElement&&(y.muted=m)},onSetVolume:d=>{t.bridgeVolume=d,Ae.setVolume(d);let m=document.querySelectorAll("video, audio");for(let h of m){if(!(h instanceof HTMLMediaElement))continue;let y=parseFloat(h.dataset.volume??""),A=Number.isFinite(y)?y:1;h.volume=A*d}},onSetMediaOutputMuted:d=>{t.mediaOutputMuted=d;let m=d||t.bridgeMuted;Ae.setMuted(m);let h=document.querySelectorAll("video, audio");for(let y of h)y instanceof HTMLMediaElement&&(y.muted=m)},onSetPlaybackRate:d=>{rn(d),t.transportClock&&t.transportClock.setRate(t.playbackRate)},onEnablePickMode:()=>Lt.enablePickMode(),onDisablePickMode:()=>Lt.disablePickMode()}),xe(),t.capturedTimeline&&(fe._timeline=t.capturedTimeline),T&&setTimeout(()=>{let d=t.capturedTimeline;xe()&&t.capturedTimeline!==d&&(fe._timeline=t.capturedTimeline),Oe("discover",t.currentTime),Ve(),me(!0)},0),t.deterministicAdapters=[mi(),si({resolveStartSeconds:d=>x(d,0)}),li(),di(),fi(),ai({getTimeline:()=>t.capturedTimeline})],k(),Oe("discover"),be();let H=new Qt;t.transportClock=H;let Ae=new Yt,ei=!1;Ae.init().then(d=>{ei=d});let _t=0,on=!1,Lo=(d,m,h)=>{try{d.pause(),typeof d.totalTime=="function"?d.totalTime(m,!1):d.seek(m,!1)}catch(y){R(h,y)}},_o=d=>{let m=window.__timelines??{},h=M()?.getAttribute("data-composition-id")??null;for(let[y,A]of Object.entries(m)){if(!A||y===h)continue;let v=document.querySelector(`[data-composition-id="${CSS.escape(y)}"]`);if(!v)continue;let j=x(v,0);if(!Number.isFinite(j))continue;let ne=b(v,{includeAuthoredTimingAttrs:!0}),te=_(A),se=ne!=null&&ne>0?ne:te,Ne=Math.max(0,se!=null&&se>0?Math.min(se,d-j):d-j);Lo(A,Ne,"runtime.init.transport.childTimeline")}},at=d=>{let m=t.capturedTimeline;if(m)try{typeof m.totalTime=="function"?m.totalTime(d,!1):m.seek(d,!1)}catch(h){R("runtime.init.transport.seek",h)}else _o(d);for(let h of t.deterministicAdapters)try{h.seek({time:d})}catch(y){R("runtime.init.transport.adapter",y)}},ti=()=>{if(!(t.tornDown||on)){on=!0;try{if(t.transportRafId=window.requestAnimationFrame(ti),_t+=1,_t%60===0&&!(H.isPlaying()&&t.capturedTimeline!=null&&H.now()<p)){let h=t.capturedTimeline;if(xe()){t.capturedTimeline&&!fe._timeline&&(fe._timeline=t.capturedTimeline),t.capturedTimeline&&t.capturedTimeline!==h&&t.capturedTimeline.pause();let y=G(t.capturedTimeline,0);y>0&&H.setDuration(y),Ve()}}if(_t%20===0&&Ve(),_t%30===0&&be(),t.capturedTimeline){let m=G(t.capturedTimeline,0);m>0&&H.setDuration(m)}if(H.isPlaying()&&!t.mediaOutputMuted)if(Ae.isActive()&&Ae.context){let m=Ae.getTime();m>=0&&H.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 A=Number.parseFloat(y.dataset.start??""),v=Number.parseFloat(y.dataset.duration??""),j=Number.isFinite(v)&&v>0?A+v:1/0,ne=Number.parseFloat(y.dataset.playbackStart??y.dataset.mediaStart??"0")||0;if(Number.isFinite(A)&&t.currentTime>=A&&t.currentTime<j){y.paused?!y.error&&y.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&(H.attachAudioSource({currentTimeSeconds:t.currentTime}),h=!0):(H.attachAudioSource({el:y,compositionStart:A,mediaStart:ne}),h=!0);break}}!h&&H.hasAudioSource()&&H.detachAudioSource()}else H.hasAudioSource()&&H.detachAudioSource();let d=H.now();if(t.currentTime=d,at(d),H.isPlaying()&&H.reachedEnd()){Ae.stopAll(),H.detachAudioSource(),H.pause(),t.isPlaying=!1;let m=H.getDuration();Number.isFinite(m)&&(H.seek(m),t.currentTime=m,at(m)),Oe("pause"),ke(),me(!0);return}H.isPlaying()&&ke(),me(!1)}finally{on=!1}}},ni=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 A=Number.parseFloat(h.dataset.duration??""),v=Number.isFinite(A)&&A>0?y+A:1/0;if(d<y||d>=v)continue;let j=Number.parseFloat(h.dataset.playbackStart??h.dataset.mediaStart??"0")||0,ne=d-y+j;if(ne>=0)try{h.currentTime=ne}catch{}}};if(fe.play=()=>{let d=t.capturedTimeline;if(H.isPlaying())return;let m=G(d,0);if(m>0)H.setDuration(m),H.reachedEnd()&&(H.seek(0),t.currentTime=0,at(0));else{let h=M(),y=Number(h?.getAttribute("data-duration")??0);y>0&&H.setDuration(y)}if(d&&d.pause(),!!H.play()){if(t.isPlaying=!0,t.mediaForceSyncNextTick=!0,ni(H.now()),ei){let h=Ae.startGeneration(),y=document.querySelectorAll("audio[data-start]");for(let A of y){if(!(A instanceof HTMLMediaElement)||!A.isConnected)continue;let v=Number.parseFloat(A.dataset.start??"");if(!Number.isFinite(v))continue;let j=Number.parseFloat(A.dataset.playbackStart??A.dataset.mediaStart??"0")||0,ne=Number.parseFloat(A.dataset.volume??""),te=Number.isFinite(ne)?ne:1;Ae.decodeAudioElement(A).then(se=>{!se||!H.isPlaying()||Ae.schedulePlayback(A,se,v,j,H.now(),te*t.bridgeVolume,h)})}}Oe("play"),ke(),me(!0)}},fe.pause=()=>{if(!H.isPlaying())return;Ae.stopAll(),H.detachAudioSource(),H.pause(),t.isPlaying=!1,t.currentTime=H.now(),t.mediaForceSyncNextTick=!0,ni(t.currentTime);let d=t.capturedTimeline;d&&d.pause(),Oe("pause"),ke(),me(!0)},fe.seek=d=>{let m=Ze(Math.max(0,Number(d)||0),t.canonicalFps);Ae.stopAll(),H.detachAudioSource(),H.isPlaying()&&H.pause(),H.seek(m),t.currentTime=H.now(),t.isPlaying=!1,t.mediaForceSyncNextTick=!0;let y=t.capturedTimeline;y&&y.pause(),at(t.currentTime),Oe("pause"),ke(),me(!0)},fe.renderSeek=d=>{let m=Ze(Math.max(0,Number(d)||0),t.canonicalFps);H.isPlaying()&&H.pause(),H.seek(m),t.currentTime=H.now(),t.isPlaying=!1,t.mediaForceSyncNextTick=!0,at(t.currentTime),ke(),me(!0)},fe.getTime=()=>H.now(),fe.getDuration=()=>{let d=H.getDuration();return Number.isFinite(d)?d:0},fe.isPlaying=()=>H.isPlaying(),fe.setPlaybackRate=d=>{rn(d),H.setRate(t.playbackRate)},t.capturedTimeline){let d=G(t.capturedTimeline,0);d>0&&H.setDuration(d),t.capturedTimeline.pause()}let ii=window.__player;if(ii){let d=["play","pause","seek","renderSeek","getTime","getDuration","isPlaying"];for(let m of d)Object.defineProperty(ii,m,{get:()=>fe[m],set:h=>{fe[m]=h},configurable:!0})}t.transportRafId=window.requestAnimationFrame(ti),Ve(),me(!0);let sn=()=>{if(!t.tornDown){t.tornDown=!0,t.transportRafId!=null&&(window.cancelAnimationFrame(t.transportRafId),t.transportRafId=null),t.transportClock=null,Ae.destroy(),ee!=null&&(window.clearTimeout(ee),ee=null),s!=null&&(window.cancelAnimationFrame(s),s=null),_e(),t.controlBridgeHandler&&(window.removeEventListener("message",t.controlBridgeHandler),t.controlBridgeHandler=null),n&&(window.removeEventListener("error",n),n=null),i&&(window.removeEventListener("unhandledrejection",i),i=null),t.beforeUnloadHandler&&(window.removeEventListener("beforeunload",t.beforeUnloadHandler),t.beforeUnloadHandler=null),Lt.disablePickMode();for(let d of t.deterministicAdapters)if(!(!d||typeof d.revert!="function"))try{d.revert()}catch(m){R("runtime.init.site12",m)}t.deterministicAdapters=[];for(let d of r.splice(0))try{d()}catch(m){R("runtime.init.site13",m)}for(let d of t.injectedCompStyles)try{d.remove()}catch(m){R("runtime.init.site14",m)}t.injectedCompStyles=[];for(let d of t.injectedCompScripts)try{d.remove()}catch(m){R("runtime.init.site15",m)}t.injectedCompScripts=[],t.capturedTimeline=null,e.__hfRuntimeTeardown===sn&&(e.__hfRuntimeTeardown=null)}};e.__hfRuntimeTeardown=sn,t.beforeUnloadHandler=sn,window.addEventListener("beforeunload",t.beforeUnloadHandler)}var oo=["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"],Vn=[[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 ja(t){if(t<=255)return oo[t];let e=0,n=Vn.length-1;for(;e<=n;){let i=e+n>>1,r=Vn[i];if(t<r[0]){n=i-1;continue}if(t>r[1]){e=i+1;continue}return r[2]}return"L"}function Ga(t){let e=t.length;if(e===0)return null;let n=new Array(e),i=!1;for(let l=0;l<e;){let a=t.charCodeAt(l),f=a,p=1;if(a>=55296&&a<=56319&&l+1<e){let C=t.charCodeAt(l+1);C>=56320&&C<=57343&&(f=(a-55296<<10)+(C-56320)+65536,p=2)}let g=ja(f);(g==="R"||g==="AL"||g==="AN")&&(i=!0);for(let C=0;C<p;C++)n[l+C]=g;l+=p}if(!i)return null;let r=0;for(let l=0;l<e;l++){let a=n[l];if(a==="L"){r=0;break}if(a==="R"||a==="AL"){r=1;break}}let o=new Int8Array(e);for(let l=0;l<e;l++)o[l]=r;let s=r&1?"R":"L",c=s,u=c;for(let l=0;l<e;l++)n[l]==="NSM"?n[l]=u:u=n[l];u=c;for(let l=0;l<e;l++){let a=n[l];a==="EN"?n[l]=u==="AL"?"AN":"EN":(a==="R"||a==="L"||a==="AL")&&(u=a)}for(let l=0;l<e;l++)n[l]==="AL"&&(n[l]="R");for(let l=1;l<e-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<e;l++){if(n[l]!=="EN")continue;let a;for(a=l-1;a>=0&&n[a]==="ET";a--)n[a]="EN";for(a=l+1;a<e&&n[a]==="ET";a++)n[a]="EN"}for(let l=0;l<e;l++){let a=n[l];(a==="WS"||a==="ES"||a==="ET"||a==="CS")&&(n[l]="ON")}u=c;for(let l=0;l<e;l++){let a=n[l];a==="EN"?n[l]=u==="L"?"L":"EN":(a==="R"||a==="L")&&(u=a)}for(let l=0;l<e;l++){if(n[l]!=="ON")continue;let a=l+1;for(;a<e&&n[a]==="ON";)a++;let f=l>0?n[l-1]:c,p=a<e?n[a]:c,g=f!=="L"?"R":"L";if(g===(p!=="L"?"R":"L"))for(let w=l;w<a;w++)n[w]=g;l=a-1}for(let l=0;l<e;l++)n[l]==="ON"&&(n[l]=s);for(let l=0;l<e;l++){let a=n[l];(o[l]&1)===0?a==="R"?o[l]++:(a==="AN"||a==="EN")&&(o[l]+=2):(a==="L"||a==="AN"||a==="EN")&&o[l]++}return o}function so(t,e){let n=Ga(t);if(n===null)return null;let i=new Int8Array(e.length);for(let r=0;r<e.length;r++)i[r]=n[e[r]];return i}var Va=/[ \\t\\n\\r\\f]+/g,$a=/[\\t\\n\\r\\f]| {2,}|^ | $/;function Ka(t){let e=t??"normal";return e==="pre-wrap"?{mode:e,preserveOrdinarySpaces:!0,preserveHardBreaks:!0}:{mode:e,preserveOrdinarySpaces:!1,preserveHardBreaks:!1}}function Ja(t){if(!$a.test(t))return t;let e=t.replace(Va," ");return e.charCodeAt(0)===32&&(e=e.slice(1)),e.length>0&&e.charCodeAt(e.length-1)===32&&(e=e.slice(0,-1)),e}function Qa(t){return/[\\r\\f]/.test(t)?t.replace(/\\r\\n/g,`\n`).replace(/[\\r\\f]/g,`\n`):t.replace(/\\r\\n/g,`\n`)}var $n=null,Ya;function Za(){return $n===null&&($n=new Intl.Segmenter(Ya,{granularity:"word"})),$n}var Xa=/\\p{Script=Arabic}/u,Zt=/\\p{M}/u,ho=/\\p{Nd}/u;function ao(t){return Xa.test(t)}function lo(t){return t>=19968&&t<=40959||t>=13312&&t<=19903||t>=131072&&t<=173791||t>=173824&&t<=177983||t>=177984&&t<=178207||t>=178208&&t<=183983||t>=183984&&t<=191471||t>=191472&&t<=192093||t>=194560&&t<=195103||t>=196608&&t<=201551||t>=201552&&t<=205743||t>=205744&&t<=210041||t>=63744&&t<=64255||t>=12288&&t<=12351||t>=12352&&t<=12447||t>=12448&&t<=12543||t>=44032&&t<=55215||t>=65280&&t<=65519}function Le(t){for(let e=0;e<t.length;e++){let n=t.charCodeAt(e);if(!(n<12288)){if(n>=55296&&n<=56319&&e+1<t.length){let i=t.charCodeAt(e+1);if(i>=56320&&i<=57343){let r=(n-55296<<10)+(i-56320)+65536;if(lo(r))return!0;e++;continue}}if(lo(n))return!0}}return!1}function el(t){let e=tn(t);return e!==null&&(en.has(e)||je.has(e))}var tl=new Set(["\\xA0","\\u202F","\\u2060","\\uFEFF"]);function nl(t){return Le(t)}function il(t){let e=tn(t);return e!==null&&tl.has(e)}function Xt(t){return!el(t)&&!il(t)}var en=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"]),Dt=new Set([\'"\',"(","[","{","\\u201C","\\u2018","\\xAB","\\u2039","\\uFF08","\\u3014","\\u3008","\\u300A","\\u300C","\\u300E","\\u3010","\\u3016","\\u3018","\\u301A"]),Jn=new Set(["\'","\\u2019"]),je=new Set([".",",","!","?",":",";","\\u060C","\\u061B","\\u061F","\\u0964","\\u0965","\\u104A","\\u104B","\\u104C","\\u104D","\\u104F",")","]","}","%",\'"\',"\\u201D","\\u2019","\\xBB","\\u203A","\\u2026"]),rl=new Set([":",".","\\u060C","\\u061B"]),ol=new Set(["\\u104F"]),sl=new Set(["\\u201D","\\u2019","\\xBB","\\u203A","\\u300D","\\u300F","\\u3011","\\u300B","\\u3009","\\u3015","\\uFF09"]);function al(t){if(Qn(t))return!0;let e=!1;for(let n of t){if(je.has(n)){e=!0;continue}if(!(e&&Zt.test(n)))return!1}return e}function ll(t){for(let e of t)if(!en.has(e)&&!je.has(e))return!1;return t.length>0}function ul(t){if(Qn(t))return!0;for(let e of t)if(!Dt.has(e)&&!Jn.has(e)&&!Zt.test(e))return!1;return t.length>0}function Qn(t){let e=!1;for(let n of t)if(!(n==="\\\\"||Zt.test(n))){if(Dt.has(n)||je.has(n)||Jn.has(n)){e=!0;continue}return!1}return e}function xo(t,e){let n=e-1;if(n<=0)return Math.max(n,0);let i=t.charCodeAt(n);if(i<56320||i>57343)return n;let r=n-1;if(r<0)return n;let o=t.charCodeAt(r);return o>=55296&&o<=56319?r:n}function tn(t){if(t.length===0)return null;let e=xo(t,t.length);return t.slice(e)}function cl(t){let e=Array.from(t),n=e.length;for(;n>0;){let i=e[n-1];if(Zt.test(i)){n--;continue}if(Dt.has(i)||Jn.has(i)){n--;continue}break}return n<=0||n===e.length?null:{head:e.slice(0,n).join(""),tail:e.slice(n).join("")}}function dl(t,e,n){return n==="text"&&!e&&t.length===1&&t!=="-"&&t!=="\\u2014"?t:null}function uo(t,e,n,i){let r=e[i],o=t[i];if(r==null)return o;let s=n[i];if(o.length===s)return o;let c=r.repeat(s);return t[i]=c,c}function co(t,e){return t&&e!==null&&rl.has(e)}function fl(t){let e=tn(t);return e!==null&&ol.has(e)}function ml(t){if(t.length<2||t[0]!==" ")return null;let e=t.slice(1);return/^\\p{M}+$/u.test(e)?{space:" ",marks:e}:null}function nn(t){let e=t.length;for(;e>0;){let n=xo(t,e),i=t.slice(n,e);if(sl.has(i))return!0;if(!je.has(i))return!1;e=n}return!1}function pl(t,e){if(e.preserveOrdinarySpaces||e.preserveHardBreaks){if(t===" ")return"preserved-space";if(t===" ")return"tab";if(e.preserveHardBreaks&&t===`\n`)return"hard-break"}return t===" "?"space":t==="\\xA0"||t==="\\u202F"||t==="\\u2060"||t==="\\uFEFF"?"glue":t==="\\u200B"?"zero-width-break":t==="\\xAD"?"soft-hyphen":"text"}var hl=/[\\x20\\t\\n\\xA0\\xAD\\u200B\\u202F\\u2060\\uFEFF]/;function Te(t){return t.length===1?t[0]:t.join("")}function xl(t,e){let n=[];for(let i=t.length-1;i>=0;i--)n.push(t[i]);return n.push(e),Te(n)}function gl(t,e,n,i){if(!hl.test(t))return[{text:t,isWordLike:e,kind:"text",start:n}];let r=[],o=null,s=[],c=n,u=!1,l=0;for(let a of t){let f=pl(a,i),p=f==="text"&&e;if(o!==null&&f===o&&p===u){s.push(a),l+=a.length;continue}o!==null&&r.push({text:Te(s),isWordLike:u,kind:o,start:c}),o=f,s=[a],c=n+l,u=p,l+=a.length}return o!==null&&r.push({text:Te(s),isWordLike:u,kind:o,start:c}),r}function Kn(t){return t==="space"||t==="preserved-space"||t==="zero-width-break"||t==="hard-break"}var yl=/^[A-Za-z][A-Za-z0-9+.-]*:$/;function Sl(t,e){let n=t.texts[e];return n.startsWith("www.")?!0:yl.test(n)&&e+1<t.len&&t.kinds[e+1]==="text"&&t.texts[e+1]==="//"}function bl(t){return t.includes("?")&&(t.includes("://")||t.startsWith("www."))}function Al(t){let e=t.texts.slice(),n=t.isWordLike.slice(),i=t.kinds.slice(),r=t.starts.slice();for(let s=0;s<t.len;s++){if(i[s]!=="text"||!Sl(t,s))continue;let c=[e[s]],u=s+1;for(;u<t.len&&!Kn(i[u]);){c.push(e[u]),n[s]=!0;let l=e[u].includes("?");if(i[u]="text",e[u]="",u++,l)break}e[s]=Te(c)}let o=0;for(let s=0;s<e.length;s++){let c=e[s];c.length!==0&&(o!==s&&(e[o]=c,n[o]=n[s],i[o]=i[s],r[o]=r[s]),o++)}return e.length=o,n.length=o,i.length=o,r.length=o,{len:o,texts:e,isWordLike:n,kinds:i,starts:r}}function El(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o];if(e.push(s),n.push(t.isWordLike[o]),i.push(t.kinds[o]),r.push(t.starts[o]),!bl(s))continue;let c=o+1;if(c>=t.len||Kn(t.kinds[c]))continue;let u=[],l=t.starts[c],a=c;for(;a<t.len&&!Kn(t.kinds[a]);)u.push(t.texts[a]),a++;u.length>0&&(e.push(Te(u)),n.push(!0),i.push("text"),r.push(l),o=a-1)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}var Fl=new Set([":","-","/","\\xD7",",",".","+","\\u2013","\\u2014"]),fo=/^[A-Za-z0-9_]+[,:;]*$/,mo=/[,:;]+$/;function go(t){for(let e of t)if(ho.test(e))return!0;return!1}function vt(t){if(t.length===0)return!1;for(let e of t)if(!(ho.test(e)||Fl.has(e)))return!1;return!0}function wl(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o],c=t.kinds[o];if(c==="text"&&vt(s)&&go(s)){let u=[s],l=o+1;for(;l<t.len&&t.kinds[l]==="text"&&vt(t.texts[l]);)u.push(t.texts[l]),l++;e.push(Te(u)),n.push(!0),i.push("text"),r.push(t.starts[o]),o=l-1;continue}e.push(s),n.push(t.isWordLike[o]),i.push(c),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function Nl(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o],c=t.kinds[o],u=t.isWordLike[o];if(c==="text"&&u&&fo.test(s)){let l=[s],a=mo.test(s),f=o+1;for(;a&&f<t.len&&t.kinds[f]==="text"&&t.isWordLike[f]&&fo.test(t.texts[f]);){let p=t.texts[f];l.push(p),a=mo.test(p),f++}e.push(Te(l)),n.push(!0),i.push("text"),r.push(t.starts[o]),o=f-1;continue}e.push(s),n.push(u),i.push(c),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function Cl(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o];if(t.kinds[o]==="text"&&s.includes("-")){let c=s.split("-"),u=c.length>1;for(let l=0;l<c.length;l++){let a=c[l];if(!u)break;(a.length===0||!go(a)||!vt(a))&&(u=!1)}if(u){let l=0;for(let a=0;a<c.length;a++){let f=c[a],p=a<c.length-1?`${f}-`:f;e.push(p),n.push(!0),i.push("text"),r.push(t.starts[o]+l),l+=p.length}continue}}e.push(s),n.push(t.isWordLike[o]),i.push(t.kinds[o]),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function Ml(t){let e=[],n=[],i=[],r=[],o=0;for(;o<t.len;){let s=[t.texts[o]],c=t.isWordLike[o],u=t.kinds[o],l=t.starts[o];if(u==="glue"){let a=[s[0]],f=l;for(o++;o<t.len&&t.kinds[o]==="glue";)a.push(t.texts[o]),o++;let p=Te(a);if(o<t.len&&t.kinds[o]==="text")s[0]=p,s.push(t.texts[o]),c=t.isWordLike[o],u="text",l=f,o++;else{e.push(p),n.push(!1),i.push("glue"),r.push(f);continue}}else o++;if(u==="text")for(;o<t.len&&t.kinds[o]==="glue";){let a=[];for(;o<t.len&&t.kinds[o]==="glue";)a.push(t.texts[o]),o++;let f=Te(a);if(o<t.len&&t.kinds[o]==="text"){s.push(f,t.texts[o]),c=c||t.isWordLike[o],o++;continue}s.push(f)}e.push(Te(s)),n.push(c),i.push(u),r.push(l)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function Tl(t){let e=t.texts.slice(),n=t.isWordLike.slice(),i=t.kinds.slice(),r=t.starts.slice();for(let o=0;o<e.length-1;o++){if(i[o]!=="text"||i[o+1]!=="text"||!Le(e[o])||!Le(e[o+1]))continue;let s=cl(e[o]);s!==null&&(e[o]=s.head,e[o+1]=s.tail+e[o+1],r[o+1]=r[o]+s.head.length)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function po(t,e,n){let i=Za(),r=0,o=[],s=[],c=[],u=[],l=[],a=[],f=[],p=[],g=[],C=[],w=[],S=[];for(let F of i.segment(t))for(let x of gl(F.segment,F.isWordLike??!1,F.index,n)){let ce=function(){a[L]!==null&&(s[L]=[uo(o,a,f,L)],a[L]=null),s[L].push(x.text),c[L]=c[L]||x.isWordLike,p[L]=p[L]||N,g[L]=g[L]||T,C[L]=P,w[L]=J,S[L]=co(g[L],_)},b=x.kind==="text",E=dl(x.text,x.isWordLike,x.kind),N=Le(x.text),T=ao(x.text),_=tn(x.text),P=nn(x.text),J=fl(x.text),L=r-1;e.carryCJKAfterClosingQuote&&b&&r>0&&u[L]==="text"&&N&&p[L]&&C[L]||b&&r>0&&u[L]==="text"&&ll(x.text)&&p[L]||b&&r>0&&u[L]==="text"&&w[L]?ce():b&&r>0&&u[L]==="text"&&x.isWordLike&&T&&S[L]?(ce(),c[L]=!0):E!==null&&r>0&&u[L]==="text"&&a[L]===E?f[L]=(f[L]??1)+1:b&&!x.isWordLike&&r>0&&u[L]==="text"&&(al(x.text)||x.text==="-"&&c[L])?ce():(o[r]=x.text,s[r]=[x.text],c[r]=x.isWordLike,u[r]=x.kind,l[r]=x.start,a[r]=E,f[r]=E===null?0:1,p[r]=N,g[r]=T,C[r]=P,w[r]=J,S[r]=co(T,_),r++)}for(let F=0;F<r;F++){if(a[F]!==null){o[F]=uo(o,a,f,F);continue}o[F]=Te(s[F])}for(let F=1;F<r;F++)u[F]==="text"&&!c[F]&&Qn(o[F])&&u[F-1]==="text"&&(o[F-1]+=o[F],c[F-1]=c[F-1]||c[F],o[F]="");let U=Array.from({length:r},()=>null),B=-1;for(let F=r-1;F>=0;F--){let x=o[F];if(x.length!==0){if(u[F]==="text"&&!c[F]&&ul(x)&&B>=0&&u[B]==="text"){let b=U[B]??[];b.push(x),U[B]=b,l[B]=l[F],o[F]="";continue}B=F}}for(let F=0;F<r;F++){let x=U[F];x!=null&&(o[F]=xl(x,o[F]))}let M=0;for(let F=0;F<r;F++){let x=o[F];x.length!==0&&(M!==F&&(o[M]=x,c[M]=c[F],u[M]=u[F],l[M]=l[F]),M++)}o.length=M,c.length=M,u.length=M,l.length=M;let X=Ml({len:M,texts:o,isWordLike:c,kinds:u,starts:l}),D=Tl(Nl(Cl(wl(El(Al(X))))));for(let F=0;F<D.len-1;F++){let x=ml(D.texts[F]);x!==null&&(D.kinds[F]!=="space"&&D.kinds[F]!=="preserved-space"||D.kinds[F+1]!=="text"||!ao(D.texts[F+1])||(D.texts[F]=x.space,D.isWordLike[F]=!1,D.kinds[F]=D.kinds[F]==="preserved-space"?"preserved-space":"space",D.texts[F+1]=x.marks+D.texts[F+1],D.starts[F+1]=D.starts[F]+x.space.length))}return D}function kl(t,e){if(t.len===0)return[];if(!e.preserveHardBreaks)return[{startSegmentIndex:0,endSegmentIndex:t.len,consumedEndSegmentIndex:t.len}];let n=[],i=0;for(let r=0;r<t.len;r++)t.kinds[r]==="hard-break"&&(n.push({startSegmentIndex:i,endSegmentIndex:r,consumedEndSegmentIndex:r+1}),i=r+1);return i<t.len&&n.push({startSegmentIndex:i,endSegmentIndex:t.len,consumedEndSegmentIndex:t.len}),n}function vl(t){if(t.len<=1)return t;let e=[],n=[],i=[],r=[],o=null,s=!1,c=0,u=!1,l=!1;function a(){o!==null&&(e.push(Te(o)),n.push(s),i.push("text"),r.push(c),o=null)}for(let f=0;f<t.len;f++){let p=t.texts[f],g=t.kinds[f],C=t.isWordLike[f],w=t.starts[f];if(g==="text"){let S=nl(p),U=Xt(p);if(o!==null&&u&&l){o.push(p),s=s||C,u=u||S,l=U;continue}a(),o=[p],s=C,c=w,u=S,l=U;continue}a(),e.push(p),n.push(C),i.push(g),r.push(w)}return a(),{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function yo(t,e,n="normal",i="normal"){let r=Ka(n),o=r.mode==="pre-wrap"?Qa(t):Ja(t);if(o.length===0)return{normalized:o,chunks:[],len:0,texts:[],isWordLike:[],kinds:[],starts:[]};let s=i==="keep-all"?vl(po(o,e,r)):po(o,e,r);return{normalized:o,chunks:kl(s,r),...s}}var rt=null,So=new Map,ot=null,Dl=96,Ll=/\\p{Emoji_Presentation}/u,_l=/[\\p{Emoji_Presentation}\\p{Extended_Pictographic}\\p{Regional_Indicator}\\uFE0F\\u20E3]/u,Yn=null,bo=new Map;function Zn(){if(rt!==null)return rt;if(typeof OffscreenCanvas<"u")return rt=new OffscreenCanvas(1,1).getContext("2d"),rt;if(typeof document<"u")return rt=document.createElement("canvas").getContext("2d"),rt;throw new Error("Text measurement requires OffscreenCanvas or a DOM canvas context.")}function Rl(t){let e=So.get(t);return e||(e=new Map,So.set(t,e)),e}function We(t,e){let n=e.get(t);return n===void 0&&(n={width:Zn().measureText(t).width,containsCJK:Le(t)},e.set(t,n)),n}function st(){if(ot!==null)return ot;if(typeof navigator>"u")return ot={lineFitEpsilon:.005,carryCJKAfterClosingQuote:!1,preferPrefixWidthsForBreakableRuns:!1,preferEarlySoftHyphenBreak:!1},ot;let t=navigator.userAgent,n=navigator.vendor==="Apple Computer, Inc."&&t.includes("Safari/")&&!t.includes("Chrome/")&&!t.includes("Chromium/")&&!t.includes("CriOS/")&&!t.includes("FxiOS/")&&!t.includes("EdgiOS/"),i=t.includes("Chrome/")||t.includes("Chromium/")||t.includes("CriOS/")||t.includes("Edg/");return ot={lineFitEpsilon:n?1/64:.005,carryCJKAfterClosingQuote:i,preferPrefixWidthsForBreakableRuns:n,preferEarlySoftHyphenBreak:n},ot}function Bl(t){let e=t.match(/(\\d+(?:\\.\\d+)?)\\s*px/);return e?parseFloat(e[1]):16}function Ao(){return Yn===null&&(Yn=new Intl.Segmenter(void 0,{granularity:"grapheme"})),Yn}function Ol(t){return Ll.test(t)||t.includes("\\uFE0F")}function Eo(t){return _l.test(t)}function Pl(t,e){let n=bo.get(t);if(n!==void 0)return n;let i=Zn();i.font=t;let r=i.measureText("\\u{1F600}").width;if(n=0,r>e+.5&&typeof document<"u"&&document.body!==null){let o=document.createElement("span");o.style.font=t,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 bo.set(t,n),n}function Il(t){let e=0,n=Ao();for(let i of n.segment(t))Ol(i.segment)&&e++;return e}function Wl(t,e){return e.emojiCount===void 0&&(e.emojiCount=Il(t)),e.emojiCount}function Ge(t,e,n){return n===0?e.width:e.width-Wl(t,e)*n}function Fo(t,e,n,i,r){if(e.breakableFitAdvances!==void 0)return e.breakableFitAdvances;let o=Ao(),s=[];for(let a of o.segment(t))s.push(a.segment);if(s.length<=1)return e.breakableFitAdvances=null,e.breakableFitAdvances;if(r==="sum-graphemes"){let a=[];for(let f of s){let p=We(f,n);a.push(Ge(f,p,i))}return e.breakableFitAdvances=a,e.breakableFitAdvances}if(r==="pair-context"||s.length>Dl){let a=[],f=null,p=0;for(let g of s){let C=We(g,n),w=Ge(g,C,i);if(f===null)a.push(w);else{let S=f+g,U=We(S,n);a.push(Ge(S,U,i)-p)}f=g,p=w}return e.breakableFitAdvances=a,e.breakableFitAdvances}let c=[],u="",l=0;for(let a of s){u+=a;let f=We(u,n),p=Ge(u,f,i);c.push(p-l),l=p}return e.breakableFitAdvances=c,e.breakableFitAdvances}function wo(t,e){let n=Zn();n.font=t;let i=Rl(t),r=Bl(t),o=e?Pl(t,r):0;return{cache:i,fontSize:r,emojiCorrection:o}}function Hl(t,e){for(;e<t.widths.length;){let n=t.kinds[e];if(n!=="space"&&n!=="zero-width-break"&&n!=="soft-hyphen")break;e++}return e}function ql(t,e){if(e<=0)return 0;let n=t%e;return Math.abs(n)<=1e-6?e:e-n}function Ul(t,e,n,i,r){let o=0,s=e;for(;o<t.length;){let c=s+t[o];if((o+1<t.length?c+r:c)>n+i)break;s=c,o++}return{fitCount:o,fittedWidth:s}}function No(t,e){return t.simpleLineWalkFastPath?Co(t,e):Mo(t,e)}function Co(t,e,n){let{widths:i,kinds:r,breakableFitAdvances:o}=t;if(i.length===0)return 0;let c=st().lineFitEpsilon,u=e+c,l=0,a=0,f=!1,p=0,g=0,C=0,w=0,S=-1,U=0;function B(){S=-1,U=0}function M(E=C,N=w,T=a){l++,n?.({startSegmentIndex:p,startGraphemeIndex:g,endSegmentIndex:E,endGraphemeIndex:N,width:T}),a=0,f=!1,B()}function X(E,N){f=!0,p=E,g=0,C=E+1,w=0,a=N}function D(E,N,T){f=!0,p=E,g=N,C=E,w=N+1,a=T}function F(E,N){if(!f){X(E,N);return}a+=N,C=E+1,w=0}function x(E,N){let T=o[E];for(let _=N;_<T.length;_++){let P=T[_];f?a+P>u?(M(),D(E,_,P)):(a+=P,C=E,w=_+1):D(E,_,P)}f&&C===E&&w===T.length&&(C=E+1,w=0)}let b=0;for(;b<i.length&&!(!f&&(b=Hl(t,b),b>=i.length));){let E=i[b],N=r[b],T=N==="space"||N==="preserved-space"||N==="tab"||N==="zero-width-break"||N==="soft-hyphen";if(!f){E>e&&o[b]!==null?x(b,0):X(b,E),T&&(S=b+1,U=a-E),b++;continue}if(a+E>u){if(T){F(b,E),M(b+1,0,a-E),b++;continue}if(S>=0){if(C>S||C===S&&w>0){M();continue}M(S,0,U);continue}if(E>e&&o[b]!==null){M(),x(b,0),b++;continue}M();continue}F(b,E),T&&(S=b+1,U=a-E),b++}return f&&M(),l}function Mo(t,e,n){if(t.simpleLineWalkFastPath)return Co(t,e,n);let{widths:i,lineEndFitAdvances:r,lineEndPaintAdvances:o,kinds:s,breakableFitAdvances:c,discretionaryHyphenWidth:u,tabStopAdvance:l,chunks:a}=t;if(i.length===0||a.length===0)return 0;let f=st(),p=f.lineFitEpsilon,g=e+p,C=0,w=0,S=!1,U=0,B=0,M=0,X=0,D=-1,F=0,x=0,b=null;function E(){D=-1,F=0,x=0,b=null}function N($=M,G=X,I=w){C++,n?.({startSegmentIndex:U,startGraphemeIndex:B,endSegmentIndex:$,endGraphemeIndex:G,width:I}),w=0,S=!1,E()}function T($,G){S=!0,U=$,B=0,M=$+1,X=0,w=G}function _($,G,I){S=!0,U=$,B=G,M=$,X=G+1,w=I}function P($,G){if(!S){T($,G);return}w+=G,M=$+1,X=0}function J($,G,I,Z){if(!G)return;let xe=$==="tab"?0:r[I],we=$==="tab"?Z:o[I];D=I+1,F=w-Z+xe,x=w-Z+we,b=$}function L($,G){let I=c[$];for(let Z=G;Z<I.length;Z++){let xe=I[Z];S?w+xe>g?(N(),_($,Z,xe)):(w+=xe,M=$,X=Z+1):_($,Z,xe)}S&&M===$&&X===I.length&&(M=$+1,X=0)}function ce($){if(b!=="soft-hyphen")return!1;let G=c[$];if(G==null)return!1;let{fitCount:I,fittedWidth:Z}=Ul(G,w,e,p,u);return I===0?!1:(w=Z,M=$,X=I,E(),I===G.length?(M=$+1,X=0,!0):(N($,I,Z+u),L($,I),!0))}function ge($){C++,n?.({startSegmentIndex:$.startSegmentIndex,startGraphemeIndex:0,endSegmentIndex:$.consumedEndSegmentIndex,endGraphemeIndex:0,width:0}),E()}for(let $=0;$<a.length;$++){let G=a[$];if(G.startSegmentIndex===G.endSegmentIndex){ge(G);continue}S=!1,w=0,U=G.startSegmentIndex,B=0,M=G.startSegmentIndex,X=0,E();let I=G.startSegmentIndex;for(;I<G.endSegmentIndex;){let Z=s[I],xe=Z==="space"||Z==="preserved-space"||Z==="tab"||Z==="zero-width-break"||Z==="soft-hyphen",we=Z==="tab"?ql(w,l):i[I];if(Z==="soft-hyphen"){S&&(M=I+1,X=0,D=I+1,F=w+u,x=w+u,b=Z),I++;continue}if(!S){we>e&&c[I]!==null?L(I,0):T(I,we),J(Z,xe,I,we),I++;continue}if(w+we>g){let k=w+(Z==="tab"?0:r[I]),O=w+(Z==="tab"?we:o[I]);if(b==="soft-hyphen"&&f.preferEarlySoftHyphenBreak&&F<=g){N(D,0,x);continue}if(b==="soft-hyphen"&&ce(I)){I++;continue}if(xe&&k<=g){P(I,we),N(I+1,0,O),I++;continue}if(D>=0&&F<=g){if(M>D||M===D&&X>0){N();continue}let ie=D;N(ie,0,x),I=ie;continue}if(we>e&&c[I]!==null){N(),L(I,0),I++;continue}N();continue}P(I,we),J(Z,xe,I,we),I++}if(S){let Z=D===G.consumedEndSegmentIndex?x:w;N(G.consumedEndSegmentIndex,0,Z)}}return C}var Xn=null;function zl(){return Xn===null&&(Xn=new Intl.Segmenter(void 0,{granularity:"grapheme"})),Xn}function jl(t){return t?{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 Gl(t,e){let n=[],i=[],r=0,o=!1,s=!1,c=!1;function u(){i.length!==0&&(n.push({text:i.length===1?i[0]:i.join(""),start:r}),i=[],o=!1,s=!1,c=!1)}function l(f,p,g){i=[f],r=p,o=g,s=nn(f),c=Dt.has(f)}function a(f,p){i.push(f),o=o||p;let g=nn(f);f.length===1&&je.has(f)?s=s||g:s=g,c=!1}for(let f of zl().segment(t)){let p=f.segment,g=Le(p);if(i.length===0){l(p,f.index,g);continue}if(c||en.has(p)||je.has(p)||e.carryCJKAfterClosingQuote&&g&&s){a(p,g);continue}if(!o&&!g){a(p,g);continue}u(),l(p,f.index,g)}return u(),n}function Vl(t){if(t.length<=1)return t;let e=[],n=[t[0].text],i=t[0].start,r=Le(t[0].text),o=Xt(t[0].text);function s(){e.push({text:n.length===1?n[0]:n.join(""),start:i})}for(let c=1;c<t.length;c++){let u=t[c],l=Le(u.text),a=Xt(u.text);if(r&&o){n.push(u.text),r=r||l,o=a;continue}s(),n=[u.text],i=u.start,r=l,o=a}return s(),e}function $l(t,e,n,i){let r=st(),{cache:o,emojiCorrection:s}=wo(e,Eo(t.normalized)),c=Ge("-",We("-",o),s),l=Ge(" ",We(" ",o),s)*8;if(t.len===0)return jl(n);let a=[],f=[],p=[],g=[],C=t.chunks.length<=1,w=n?[]:null,S=[],U=n?[]:null,B=Array.from({length:t.len});function M(x,b,E,N,T,_,P){T!=="text"&&T!=="space"&&T!=="zero-width-break"&&(C=!1),a.push(b),f.push(E),p.push(N),g.push(T),w?.push(_),S.push(P),U!==null&&U.push(x)}function X(x,b,E,N,T){let _=We(x,o),P=Ge(x,_,s),J=b==="space"||b==="preserved-space"||b==="zero-width-break"?0:P,L=b==="space"||b==="zero-width-break"?0:P;if(T&&N&&x.length>1){let ce="sum-graphemes";vt(x)?ce="pair-context":r.preferPrefixWidthsForBreakableRuns&&(ce="segment-prefixes");let ge=Fo(x,_,o,s,ce);M(x,P,J,L,b,E,ge);return}M(x,P,J,L,b,E,null)}for(let x=0;x<t.len;x++){B[x]=a.length;let b=t.texts[x],E=t.isWordLike[x],N=t.kinds[x],T=t.starts[x];if(N==="soft-hyphen"){M(b,0,c,c,N,T,null);continue}if(N==="hard-break"){M(b,0,0,0,N,T,null);continue}if(N==="tab"){M(b,0,0,0,N,T,null);continue}let _=We(b,o);if(N==="text"&&_.containsCJK){let P=Gl(b,r),J=i==="keep-all"?Vl(P):P;for(let L=0;L<J.length;L++){let ce=J[L];X(ce.text,"text",T+ce.start,E,i==="keep-all"||!Le(ce.text))}continue}X(b,N,T,E,!0)}let D=Kl(t.chunks,B,a.length),F=w===null?null:so(t.normalized,w);return U!==null?{widths:a,lineEndFitAdvances:f,lineEndPaintAdvances:p,kinds:g,simpleLineWalkFastPath:C,segLevels:F,breakableFitAdvances:S,discretionaryHyphenWidth:c,tabStopAdvance:l,chunks:D,segments:U}:{widths:a,lineEndFitAdvances:f,lineEndPaintAdvances:p,kinds:g,simpleLineWalkFastPath:C,segLevels:F,breakableFitAdvances:S,discretionaryHyphenWidth:c,tabStopAdvance:l,chunks:D}}function Kl(t,e,n){let i=[];for(let r=0;r<t.length;r++){let o=t[r],s=o.startSegmentIndex<e.length?e[o.startSegmentIndex]:n,c=o.endSegmentIndex<e.length?e[o.endSegmentIndex]:n,u=o.consumedEndSegmentIndex<e.length?e[o.consumedEndSegmentIndex]:n;i.push({startSegmentIndex:s,endSegmentIndex:c,consumedEndSegmentIndex:u})}return i}function Jl(t,e,n,i){let r=i?.wordBreak??"normal",o=yo(t,st(),i?.whiteSpace,r);return $l(o,e,n,r)}function To(t,e,n){return Jl(t,e,!1,n)}function ko(t,e,n){let i=No(t,e);return{lineCount:i,height:i*n}}var Ql={maxWidth:1600,baseFontSize:78,minFontSize:42,fontWeight:900,fontFamily:"Outfit",step:2};function vo(t,e){let n={...Ql,...e},i=1.2;for(let r=n.baseFontSize;r>=n.minFontSize;r-=n.step){let o=`${n.fontWeight} ${r}px ${n.fontFamily}`,s=To(t,o),{lineCount:c}=ko(s,n.maxWidth,r*i);if(c<=1)return{fontSize:r,fits:!0}}return{fontSize:n.minFontSize,fits:!1}}window.__timelines=window.__timelines||{};window.__hyperframes={fitTextFontSize:vo,getVariables:Yr};function Do(){let t=window;t.__hyperframeRuntimeBootstrapped||(t.__hyperframeRuntimeBootstrapped=!0,ro())}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Do,{once:!0}):Do();})();\n';
7360
+ RUNTIME_IIFE = '"use strict";(()=>{var Wo=Object.create;var cn=Object.defineProperty;var Ho=Object.getOwnPropertyDescriptor;var qo=Object.getOwnPropertyNames;var Uo=Object.getPrototypeOf,zo=Object.prototype.hasOwnProperty;var jo=(t,e,n)=>e in t?cn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Y=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Go=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of qo(e))!zo.call(t,r)&&r!==n&&cn(t,r,{get:()=>e[r],enumerable:!(i=Ho(e,r))||i.enumerable});return t};var Vo=(t,e,n)=>(n=t!=null?Wo(Uo(t)):{},Go(e||!t||!t.__esModule?cn(n,"default",{value:t,enumerable:!0}):n,t));var Se=(t,e,n)=>jo(t,typeof e!="symbol"?e+"":e,n);var ki=Y((Hu,xn)=>{var K=String,Ti=function(){return{isColorSupported:!1,reset:K,bold:K,dim:K,italic:K,underline:K,inverse:K,hidden:K,strikethrough:K,black:K,red:K,green:K,yellow:K,blue:K,magenta:K,cyan:K,white:K,gray:K,bgBlack:K,bgRed:K,bgGreen:K,bgYellow:K,bgBlue:K,bgMagenta:K,bgCyan:K,bgWhite:K,blackBright:K,redBright:K,greenBright:K,yellowBright:K,blueBright:K,magentaBright:K,cyanBright:K,whiteBright:K,bgBlackBright:K,bgRedBright:K,bgGreenBright:K,bgYellowBright:K,bgBlueBright:K,bgMagentaBright:K,bgCyanBright:K,bgWhiteBright:K}};xn.exports=Ti();xn.exports.createColors=Ti});var gn=Y(()=>{});var Ot=Y((zu,_i)=>{"use strict";var vi=ki(),Di=gn(),ft=class t extends Error{constructor(e,n,i,r,o,s){super(e),this.name="CssSyntaxError",this.reason=e,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,t)}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(e){if(!this.source)return"";let n=this.source;e==null&&(e=vi.isColorSupported);let i=a=>a,r=a=>a,o=a=>a;if(e){let{bold:a,gray:f,red:p}=vi.createColors(!0);r=g=>a(p(g)),i=g=>f(g),Di&&(o=g=>Di(g))}let s=n.split(/\\r?\\n/),c=Math.max(this.line-3,0),u=Math.min(this.line+2,s.length),l=String(u).length;return s.slice(c,u).map((a,f)=>{let p=c+1+f,g=" "+(" "+p).slice(-l)+" | ";if(p===this.line){if(a.length>160){let w=20,S=Math.max(0,this.column-w),U=Math.max(this.column+w,this.endColumn+w),B=a.slice(S,U),M=i(g.replace(/\\d/g," "))+a.slice(0,Math.min(this.column-1,w-1)).replace(/[^\\t]/g," ");return r(">")+i(g)+o(B)+`\n `+M+r("^")}let C=i(g.replace(/\\d/g," "))+a.slice(0,this.column-1).replace(/[^\\t]/g," ");return r(">")+i(g)+o(a)+`\n `+C+r("^")}return" "+i(g)+o(a)}).join(`\n`)}toString(){let e=this.showSourceCode();return e&&(e=`\n\n`+e+`\n`),this.name+": "+this.message+e}};_i.exports=ft;ft.default=ft});var yn=Y((ju,Li)=>{"use strict";var ms=/(<)(\\/?style\\b)/gi,ps=/(<)(!--)/g;function He(t){return typeof t!="string"||!t.includes("<")?t:t.replace(ms,"\\\\3c $2").replace(ps,"\\\\3c $2")}var Ri={after:`\n`,beforeClose:`\n`,beforeComment:`\n`,beforeDecl:`\n`,beforeOpen:" ",beforeRule:`\n`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};function hs(t){return t[0].toUpperCase()+t.slice(1)}var mt=class{constructor(e){this.builder=e}atrule(e,n){let i=e.raws,r="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(typeof i.afterName<"u"?r+=i.afterName:o&&(r+=" "),e.nodes)this.block(e,r+o);else{let s=(i.between||"")+(n?";":"");this.builder(He(r+o+s),e)}}beforeAfter(e,n){let i;e.type==="decl"?i=this.raw(e,null,"beforeDecl"):e.type==="comment"?i=this.raw(e,null,"beforeComment"):n==="before"?i=this.raw(e,null,"beforeRule"):i=this.raw(e,null,"beforeClose");let r=e.parent,o=0;for(;r&&r.type!=="root";)o+=1,r=r.parent;if(i.includes(`\n`)){let s=this.raw(e,null,"indent");if(s.length)for(let c=0;c<o;c++)i+=s}return i}block(e,n){let i=this.raw(e,"between","beforeOpen");this.builder(He(n+i)+"{",e,"start");let r;e.nodes&&e.nodes.length?(this.body(e),r=this.raw(e,"after")):r=this.raw(e,"after","emptyBody"),r&&this.builder(He(r)),this.builder("}",e,"end")}body(e){let n=e.nodes,i=n.length-1;for(;i>0&&n[i].type==="comment";)i-=1;let r=this.raw(e,"semicolon"),o=e.type==="document";for(let s=0;s<n.length;s++){let c=n[s],u=this.raw(c,"before");u&&this.builder(o?u:He(u)),this.stringify(c,i!==s||r)}}comment(e){let n=this.raw(e,"left","commentLeft"),i=this.raw(e,"right","commentRight");this.builder(He("/*"+n+e.text+i+"*/"),e)}decl(e,n){let i=e.raws,r=this.raw(e,"between","colon"),o=e.prop+r+this.rawValue(e,"value");e.important&&(o+=i.important||" !important"),n&&(o+=";"),this.builder(He(o),e)}document(e){this.body(e)}raw(e,n,i){let r;if(i||(i=n),n&&(r=e.raws[n],typeof r<"u"))return r;let o=e.parent;if(i==="before"&&(!o||o.type==="root"&&o.first===e||o&&o.type==="document"))return"";if(!o)return Ri[i];let s=e.root(),c=s.rawCache||(s.rawCache={});if(typeof c[i]<"u")return c[i];if(i==="before"||i==="after")return this.beforeAfter(e,i);{let u="raw"+hs(i);this[u]?r=this[u](s,e):s.walk(l=>{if(r=l.raws[n],typeof r<"u")return!1})}return typeof r>"u"&&(r=Ri[i]),c[i]=r,r}rawBeforeClose(e){let n;return e.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(e,n){let i;return e.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(e,n){let i;return e.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(e){let n;return e.walk(i=>{if(i.type!=="decl"&&(n=i.raws.between,typeof n<"u"))return!1}),n}rawBeforeRule(e){let n;return e.walk(i=>{if(i.nodes&&(i.parent!==e||e.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(e){let n;return e.walkDecls(i=>{if(typeof i.raws.between<"u")return n=i.raws.between.replace(/[^\\s:]/g,""),!1}),n}rawEmptyBody(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length===0&&(n=i.raws.after,typeof n<"u"))return!1}),n}rawIndent(e){if(e.raws.indent)return e.raws.indent;let n;return e.walk(i=>{let r=i.parent;if(r&&r!==e&&r.parent&&r.parent===e&&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(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length&&i.last.type==="decl"&&(n=i.raws.semicolon,typeof n<"u"))return!1}),n}rawValue(e,n){let i=e[n],r=e.raws[n];return r&&r.value===i?r.raw:i}root(e){if(this.body(e),e.raws.after){let n=e.raws.after,i=e.parent&&e.parent.type==="document";this.builder(i?n:He(n))}}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(He(e.raws.ownSemicolon),e,"end")}stringify(e,n){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,n)}};Li.exports=mt;mt.default=mt});var pt=Y((Gu,Bi)=>{"use strict";var xs=yn();function Sn(t,e){new xs(e).stringify(t)}Bi.exports=Sn;Sn.default=Sn});var Pt=Y((Vu,bn)=>{"use strict";bn.exports.isClean=Symbol("isClean");bn.exports.my=Symbol("my")});var gt=Y(($u,Oi)=>{"use strict";var gs=Ot(),ys=yn(),Ss=pt(),{isClean:ht,my:bs}=Pt();function An(t,e){let n=new t.constructor;for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i)||i==="proxyCache")continue;let r=t[i],o=typeof r;i==="parent"&&o==="object"?e&&(n[i]=e):i==="source"?n[i]=r:Array.isArray(r)?n[i]=r.map(s=>An(s,n)):(o==="object"&&r!==null&&(r=An(r)),n[i]=r)}return n}function Ie(t,e){if(e&&typeof e.offset<"u")return e.offset;let n=1,i=1,r=0;for(let o=0;o<t.length;o++){if(i===e.line&&n===e.column){r=o;break}t[o]===`\n`?(n=1,i+=1):n+=1}return r}var xt=class{get proxyOf(){return this}constructor(e={}){this.raws={},this[ht]=!1,this[bs]=!0;for(let n in e)if(n==="nodes"){this.nodes=[];for(let i of e[n])typeof i.clone=="function"?this.append(i.clone()):this.append(i)}else this[n]=e[n]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\\n\\s{4}at /.test(e.stack)){let n=this.source;e.stack=e.stack.replace(/\\n\\s{4}at /,`$&${n.input.from}:${n.start.line}:${n.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let n in e)this[n]=e[n];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let n=An(this);for(let i in e)n[i]=e[i];return n}cloneAfter(e={}){let n=this.clone(e);return this.parent.insertAfter(this,n),n}cloneBefore(e={}){let n=this.clone(e);return this.parent.insertBefore(this,n),n}error(e,n={}){if(this.source){let{end:i,start:r}=this.rangeBy(n);return this.source.input.error(e,{column:r.column,line:r.line},{column:i.column,line:i.line},n)}return new gs(e)}getProxyProcessor(){return{get(e,n){return n==="proxyOf"?e:n==="root"?()=>e.root().toProxy():e[n]},set(e,n,i){return e[n]===i||(e[n]=i,(n==="prop"||n==="value"||n==="name"||n==="params"||n==="important"||n==="text")&&e.markDirty()),!0}}}markClean(){this[ht]=!0}markDirty(){if(this[ht]){this[ht]=!1;let e=this;for(;e=e.parent;)e[ht]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e={}){let n=this.source.start;if(e.index)n=this.positionInside(e.index);else if(e.word){let i="document"in this.source.input?this.source.input.document:this.source.input.css,o=i.slice(Ie(i,this.source.start),Ie(i,this.source.end)).indexOf(e.word);o!==-1&&(n=this.positionInside(o))}return n}positionInside(e){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=Ie(r,this.source.start),s=o+e;for(let c=o;c<s;c++)r[c]===`\n`?(n=1,i+=1):n+=1;return{column:n,line:i,offset:s}}prev(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e-1]}rangeBy(e={}){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:Ie(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:Ie(n,this.source.end)+1}:{column:i.column+1,line:i.line,offset:i.offset+1};if(e.word){let s=n.slice(Ie(n,this.source.start),Ie(n,this.source.end)).indexOf(e.word);s!==-1&&(i=this.positionInside(s),r=this.positionInside(s+e.word.length))}else e.start?i={column:e.start.column,line:e.start.line,offset:Ie(n,e.start)}:e.index&&(i=this.positionInside(e.index)),e.end?r={column:e.end.column,line:e.end.line,offset:Ie(n,e.end)}:typeof e.endIndex=="number"?r=this.positionInside(e.endIndex):e.index&&(r=this.positionInside(e.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(e,n){return new ys().raw(this,e,n)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}replaceWith(...e){if(this.parent){let n=this,i=!1;for(let r of e)r===this?i=!0:i?(this.parent.insertAfter(n,r),n=r):this.parent.insertBefore(n,r);i||this.remove()}return this}root(){let e=this;for(;e.parent&&e.parent.type!=="document";)e=e.parent;return e}toJSON(e,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 c=this[s];if(Array.isArray(c))i[s]=c.map(u=>typeof u=="object"&&u.toJSON?u.toJSON(null,n):u);else if(typeof c=="object"&&c.toJSON)i[s]=c.toJSON(null,n);else if(s==="source"){if(c==null)continue;let u=n.get(c.input);u==null&&(u=o,n.set(c.input,o),o++),i[s]={end:c.end,inputId:u,start:c.start}}else i[s]=c}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(e=Ss){e.stringify&&(e=e.stringify);let n="";return e(this,i=>{n+=i}),n}warn(e,n,i={}){let r={node:this};for(let o in i)r[o]=i[o];return e.warn(n,r)}};Oi.exports=xt;xt.default=xt});var St=Y((Ku,Pi)=>{"use strict";var As=gt(),yt=class extends As{constructor(e){super(e),this.type="comment"}};Pi.exports=yt;yt.default=yt});var At=Y((Ju,Ii)=>{"use strict";var Es=gt(),bt=class extends Es{get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}constructor(e){e&&typeof e.value<"u"&&typeof e.value!="string"&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}};Ii.exports=bt;bt.default=bt});var qe=Y((Qu,$i)=>{"use strict";var Wi=St(),Hi=At(),Fs=gt(),{isClean:qi,my:Ui}=Pt(),En,zi,ji,Fn;function Gi(t){return t.map(e=>(e.nodes&&(e.nodes=Gi(e.nodes)),delete e.source,e))}function Vi(t){if(t[qi]=!1,t.proxyOf.nodes)for(let e of t.proxyOf.nodes)Vi(e)}var De=class t extends Fs{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(...e){for(let n of e){let i=this.normalize(n,this.last);for(let r of i)this.proxyOf.nodes.push(r)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let n of this.nodes)n.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let n=this.getIterator(),i,r;for(;this.indexes[n]<this.proxyOf.nodes.length&&(i=this.indexes[n],r=e(this.proxyOf.nodes[i],i),r!==!1);)this.indexes[n]+=1;return delete this.indexes[n],r}every(e){return this.nodes.every(e)}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let e=this.lastEach;return this.indexes[e]=0,e}getProxyProcessor(){return{get(e,n){return n==="proxyOf"?e:e[n]?n==="each"||typeof n=="string"&&n.startsWith("walk")?(...i)=>e[n](...i.map(r=>typeof r=="function"?(o,s)=>r(o.toProxy(),s):r)):n==="every"||n==="some"?i=>e[n]((r,...o)=>i(r.toProxy(),...o)):n==="root"?()=>e.root().toProxy():n==="nodes"?e.nodes.map(i=>i.toProxy()):n==="first"||n==="last"?e[n].toProxy():e[n]:e[n]},set(e,n,i){return e[n]===i||(e[n]=i,(n==="name"||n==="params"||n==="selector")&&e.markDirty()),!0}}}index(e){return typeof e=="number"?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,n){let i=this.index(e),r=this.normalize(n,this.proxyOf.nodes[i]).reverse();i=this.index(e);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(e,n){let i=this.index(e),r=i===0?"prepend":!1,o=this.normalize(n,this.proxyOf.nodes[i],r).reverse();i=this.index(e);for(let c of o)this.proxyOf.nodes.splice(i,0,c);let s;for(let c in this.indexes)s=this.indexes[c],i<=s&&(this.indexes[c]=s+o.length);return this.markDirty(),this}normalize(e,n){if(typeof e=="string")e=Gi(zi(e).nodes);else if(typeof e>"u")e=[];else if(Array.isArray(e)){e=e.slice(0);for(let r of e)r.parent&&r.parent.removeChild(r,"ignore")}else if(e.type==="root"&&this.type!=="document"){e=e.nodes.slice(0);for(let r of e)r.parent&&r.parent.removeChild(r,"ignore")}else if(e.type)e=[e];else if(e.prop){if(typeof e.value>"u")throw new Error("Value field is missed in node creation");typeof e.value!="string"&&(e.value=String(e.value)),e=[new Hi(e)]}else if(e.selector||e.selectors)e=[new Fn(e)];else if(e.name)e=[new En(e)];else if(e.text)e=[new Wi(e)];else throw new Error("Unknown node type in node creation");return e.map(r=>(r[Ui]||t.rebuild(r),r=r.proxyOf,r.parent&&r.parent.removeChild(r),r[qi]&&Vi(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(...e){e=e.reverse();for(let n of e){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(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);let n;for(let i in this.indexes)n=this.indexes[i],n>=e&&(this.indexes[i]=n-1);return this.markDirty(),this}replaceValues(e,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(e,i))}),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each((n,i)=>{let r;try{r=e(n,i)}catch(o){throw n.addToError(o)}return r!==!1&&n.walk&&(r=n.walk(e)),r})}walkAtRules(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="atrule"&&e.test(i.name))return n(i,r)}):this.walk((i,r)=>{if(i.type==="atrule"&&i.name===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="atrule")return n(i,r)}))}walkComments(e){return this.walk((n,i)=>{if(n.type==="comment")return e(n,i)})}walkDecls(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="decl"&&e.test(i.prop))return n(i,r)}):this.walk((i,r)=>{if(i.type==="decl"&&i.prop===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="decl")return n(i,r)}))}walkRules(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="rule"&&e.test(i.selector))return n(i,r)}):this.walk((i,r)=>{if(i.type==="rule"&&i.selector===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="rule")return n(i,r)}))}};De.registerParse=t=>{zi=t};De.registerRule=t=>{Fn=t};De.registerAtRule=t=>{En=t};De.registerRoot=t=>{ji=t};$i.exports=De;De.default=De;De.rebuild=t=>{t.type==="atrule"?Object.setPrototypeOf(t,En.prototype):t.type==="rule"?Object.setPrototypeOf(t,Fn.prototype):t.type==="decl"?Object.setPrototypeOf(t,Hi.prototype):t.type==="comment"?Object.setPrototypeOf(t,Wi.prototype):t.type==="root"&&Object.setPrototypeOf(t,ji.prototype),t[Ui]=!0,t.nodes&&t.nodes.forEach(e=>{De.rebuild(e)})}});var It=Y((Yu,Ji)=>{"use strict";var Ki=qe(),Xe=class extends Ki{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};Ji.exports=Xe;Xe.default=Xe;Ki.registerAtRule(Xe)});var Wt=Y((Zu,Zi)=>{"use strict";var ws=qe(),Qi,Yi,Je=class extends ws{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new Qi(new Yi,this,e).stringify()}};Je.registerLazyResult=t=>{Qi=t};Je.registerProcessor=t=>{Yi=t};Zi.exports=Je;Je.default=Je});var er=Y((Xu,Xi)=>{var Ns="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",Cs=(t,e=21)=>(n=e)=>{let i="",r=n|0;for(;r--;)i+=t[Math.random()*t.length|0];return i},Ms=(t=21)=>{let e="",n=t|0;for(;n--;)e+=Ns[Math.random()*64|0];return e};Xi.exports={nanoid:Ms,customAlphabet:Cs}});var Ht=Y(()=>{});var qt=Y(()=>{});var wn=Y(()=>{});var tr=Y(()=>{});var Cn=Y((lc,rr)=>{"use strict";var{existsSync:Ts,readFileSync:ks}=tr(),{dirname:Nn,join:vs}=Ht(),{SourceMapConsumer:nr,SourceMapGenerator:ir}=qt();function Ds(t){return Buffer?Buffer.from(t,"base64").toString():window.atob(t)}var Et=class{constructor(e,n){if(n.map===!1)return;n.unsafeMap&&(this.unsafeMap=!0),this.loadAnnotation(e),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=Nn(this.mapFile)),r&&(this.text=r)}consumer(){return this.consumerCache||(this.consumerCache=new nr(this.json||this.text)),this.consumerCache}decodeInline(e){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=e.match(r)||e.match(o);if(s)return decodeURIComponent(e.substr(s[0].length));let c=e.match(n)||e.match(i);if(c)return Ds(e.substr(c[0].length));let u=e.slice(22);throw u=u.slice(0,u.indexOf(",")),new Error("Unsupported source map encoding "+u)}getAnnotationURL(e){return e.replace(/^\\/\\*\\s*# sourceMappingURL=/,"").trim()}isMap(e){return typeof e!="object"?!1:typeof e.mappings=="string"||typeof e._mappings=="string"||Array.isArray(e.sections)}loadAnnotation(e){let n=e.match(/\\/\\*\\s*# sourceMappingURL=/g);if(!n)return;let i=e.lastIndexOf(n.pop()),r=e.indexOf("*/",i);i>-1&&r>-1&&(this.annotation=this.getAnnotationURL(e.substring(i,r)))}loadFile(e,n,i){if(!(!i&&!this.unsafeMap&&!/\\.map$/i.test(e))&&(this.root=Nn(e),Ts(e)))return this.mapFile=e,ks(e,"utf-8").toString().trim()}loadMap(e,n){if(n===!1)return!1;if(n){if(typeof n=="string")return n;if(typeof n=="function"){let i=n(e);if(i){let r=this.loadFile(i,e,!0);if(!r)throw new Error("Unable to load previous source map: "+i.toString());return r}}else{if(n instanceof nr)return ir.fromSourceMap(n).toString();if(n instanceof ir)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;e&&(i=vs(Nn(e),i));let r=this.loadFile(i,e,!1);if(r)try{this.json=JSON.parse(r.replace(/^\\)]}\'[^\\n]*\\n/,""))}catch{return}return r}}}startWith(e,n){return e?e.substr(0,n.length)===n:!1}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};rr.exports=Et;Et.default=Et});var Ft=Y((uc,ur)=>{"use strict";var{nanoid:_s}=er(),{isAbsolute:kn,resolve:vn}=Ht(),{SourceMapConsumer:Rs,SourceMapGenerator:Ls}=qt(),{fileURLToPath:or,pathToFileURL:Ut}=wn(),sr=Ot(),Bs=Cn(),Mn=gn(),Tn=Symbol("lineToIndexCache"),Os=!!(Rs&&Ls),ar=!!(vn&&kn);function lr(t){if(t[Tn])return t[Tn];let e=t.css.split(`\n`),n=new Array(e.length),i=0;for(let r=0,o=e.length;r<o;r++)n[r]=i,i+=e[r].length+1;return t[Tn]=n,n}var et=class{get from(){return this.file||this.id}constructor(e,n={}){if(e===null||typeof e>"u"||typeof e=="object"&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.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&&(!ar||/^\\w+:\\/\\//.test(n.from)||kn(n.from)?this.file=n.from:this.file=vn(n.from)),ar&&Os){let i=new Bs(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 "+_s(6)+">"),this.map&&(this.map.file=this.from)}error(e,n,i,r={}){let o,s,c,u,l;if(n&&typeof n=="object"){let f=n,p=i;if(typeof f.offset=="number"){u=f.offset;let g=this.fromOffset(u);n=g.line,i=g.col}else n=f.line,i=f.column,u=this.fromLineAndColumn(n,i);if(typeof p.offset=="number"){c=p.offset;let g=this.fromOffset(c);s=g.line,o=g.col}else s=p.line,o=p.column,c=this.fromLineAndColumn(p.line,p.column)}else if(i)u=this.fromLineAndColumn(n,i);else{u=n;let f=this.fromOffset(u);n=f.line,i=f.col}let a=this.origin(n,i,s,o);return a?l=new sr(e,a.endLine===void 0?a.line:{column:a.column,line:a.line},a.endLine===void 0?a.column:{column:a.endColumn,line:a.endLine},a.source,a.file,r.plugin):l=new sr(e,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:c,line:n,offset:u,source:this.css},this.file&&(Ut&&(l.input.url=Ut(this.file).toString()),l.input.file=this.file),l}fromLineAndColumn(e,n){return lr(this)[e-1]+n-1}fromOffset(e){let n=lr(this),i=n[n.length-1],r=0;if(e>=i)r=n.length-1;else{let o=n.length-2,s;for(;r<o;)if(s=r+(o-r>>1),e<n[s])o=s-1;else if(e>=n[s+1])r=s+1;else{r=s;break}}return{col:e-n[r]+1,line:r+1}}mapResolve(e){return/^\\w+:\\/\\//.test(e)?e:vn(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,n,i,r){if(!this.map)return!1;let o=this.map.consumer(),s=o.originalPositionFor({column:n,line:e});if(!s.source)return!1;let c;typeof i=="number"&&(c=o.originalPositionFor({column:r,line:i}));let u;kn(s.source)?u=Ut(s.source):u=new URL(s.source,this.map.consumer().sourceRoot||Ut(this.map.mapFile));let l={column:s.column,endColumn:c&&c.column,endLine:c&&c.line,line:s.line,url:u.toString()};if(u.protocol==="file:")if(or)l.file=or(u);else throw new Error("file: protocol is not available in this PostCSS build");let a=o.sourceContentFor(s.source);return a&&(l.source=a),l}toJSON(){let e={};for(let n of["hasBOM","css","file","id"])this[n]!=null&&(e[n]=this[n]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}};ur.exports=et;et.default=et;Mn&&Mn.registerInput&&Mn.registerInput(et)});var tt=Y((cc,mr)=>{"use strict";var cr=qe(),dr,fr,Ue=class extends cr{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,n,i){let r=super.normalize(e);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(e,n){let i=this.index(e);return!n&&i===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[i].raws.before),super.removeChild(e)}toResult(e={}){return new dr(new fr,this,e).stringify()}};Ue.registerLazyResult=t=>{dr=t};Ue.registerProcessor=t=>{fr=t};mr.exports=Ue;Ue.default=Ue;cr.registerRoot(Ue)});var Dn=Y((dc,pr)=>{"use strict";var wt={comma(t){return wt.split(t,[","],!0)},space(t){let e=[" ",`\n`," "];return wt.split(t,e)},split(t,e,n){let i=[],r="",o=!1,s=0,c=!1,u="",l=!1;for(let a of t)l?l=!1:a==="\\\\"?l=!0:c?a===u&&(c=!1):a===\'"\'||a==="\'"?(c=!0,u=a):a==="("?s+=1:a===")"?s>0&&(s-=1):s===0&&e.includes(a)&&(o=!0),o?(r!==""&&i.push(r.trim()),r="",o=!1):r+=a;return(n||r!=="")&&i.push(r.trim()),i}};pr.exports=wt;wt.default=wt});var zt=Y((fc,xr)=>{"use strict";var hr=qe(),Ps=Dn(),nt=class extends hr{get selectors(){return Ps.comma(this.selector)}set selectors(e){let n=this.selector?this.selector.match(/,\\s*/):null,i=n?n[0]:","+this.raw("between","beforeOpen");this.selector=e.join(i)}constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}};xr.exports=nt;nt.default=nt;hr.registerRule(nt)});var yr=Y((mc,gr)=>{"use strict";var Is=It(),Ws=St(),Hs=At(),qs=Ft(),Us=Cn(),zs=tt(),js=zt();function Nt(t,e){if(Array.isArray(t))return t.map(r=>Nt(r));let{inputs:n,...i}=t;if(n){e=[];for(let r of n){let o={...r,__proto__:qs.prototype};o.map&&(o.map={...o.map,__proto__:Us.prototype}),e.push(o)}}if(i.nodes&&(i.nodes=t.nodes.map(r=>Nt(r,e))),i.source){let{inputId:r,...o}=i.source;i.source=o,r!=null&&(i.source.input=e[r])}if(i.type==="root")return new zs(i);if(i.type==="decl")return new Hs(i);if(i.type==="rule")return new js(i);if(i.type==="comment")return new Ws(i);if(i.type==="atrule")return new Is(i);throw new Error("Unknown node type: "+t.type)}gr.exports=Nt;Nt.default=Nt});var Rn=Y((pc,wr)=>{"use strict";var{dirname:jt,relative:br,resolve:Ar,sep:Er}=Ht(),{SourceMapConsumer:Fr,SourceMapGenerator:Gt}=qt(),{pathToFileURL:Sr}=wn(),Gs=Ft(),Vs=!!(Fr&&Gt),$s=!!(jt&&Ar&&br&&Er),_n=class{constructor(e,n,i,r){this.stringify=e,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 e;this.isInline()?e="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?e=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?e=this.mapOpts.annotation(this.opts.to,this.root):e=this.outputFile()+".map";let n=`\n`;this.css.includes(`\\r\n`)&&(n=`\\r\n`),this.css+=n+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let n=this.toUrl(this.path(e.file)),i=e.root||jt(e.file),r;this.mapOpts.sourcesContent===!1?(r=new Fr(e.text),r.sourcesContent&&(r.sourcesContent=null)):r=e.consumer(),this.map.applySourceMap(r,n,this.toUrl(this.path(i)))}}clearAnnotation(){if(this.mapOpts.annotation!==!1){if(this.root){let e;for(let n=this.root.nodes.length-1;n>=0;n--)e=this.root.nodes[n],e.type==="comment"&&e.text.startsWith("# sourceMappingURL=")&&this.root.removeChild(n)}else if(this.css){let e;for(;(e=this.css.lastIndexOf("/*#"))!==-1;){let n=this.css.indexOf("*/",e+3);if(n===-1)break;for(;e>0&&this.css[e-1]===`\n`;)e--;this.css=this.css.slice(0,e)+this.css.slice(n+2)}}}}generate(){if(this.clearAnnotation(),$s&&Vs&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,n=>{e+=n}),[e]}}generateMap(){if(this.root)this.generateString();else if(this.previous().length===1){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Gt.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Gt({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 Gt({file:this.outputFile(),ignoreInvalidMapping:!0});let e=1,n=1,i="<no source>",r={generated:{column:0,line:0},original:{column:0,line:0},source:""},o,s;this.stringify(this.root,(c,u,l)=>{if(this.css+=c,u&&l!=="end"&&(r.generated.line=e,r.generated.column=n-1,u.source&&u.source.start?(r.source=this.sourcePath(u),r.original.line=u.source.start.line,r.original.column=u.source.start.column-1,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,this.map.addMapping(r))),s=c.match(/\\n/g),s?(e+=s.length,o=c.lastIndexOf(`\n`),n=c.length-o):n+=c.length,u&&l!=="start"){let a=u.parent||{raws:{}};(!(u.type==="decl"||u.type==="atrule"&&!u.nodes)||u!==a.last||a.raws.semicolon)&&(u.source&&u.source.end?(r.source=this.sourcePath(u),r.original.line=u.source.end.line,r.original.column=u.source.end.column-1,r.generated.line=e,r.generated.column=n-2,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,r.generated.line=e,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(e=>e.annotation):!0}isInline(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;let e=this.mapOpts.annotation;return typeof e<"u"&&e!==!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(e=>e.withContent()):!0}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute||e.charCodeAt(0)===60||/^\\w+:\\/\\//.test(e))return e;let n=this.memoizedPaths.get(e);if(n)return n;let i=this.opts.to?jt(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(i=jt(Ar(i,this.mapOpts.annotation)));let r=br(i,e);return this.memoizedPaths.set(e,r),r}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(e=>{if(e.source&&e.source.input.map){let n=e.source.input.map;this.previousMaps.includes(n)||this.previousMaps.push(n)}});else{let e=new Gs(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk(n=>{if(n.source){let i=n.source.input.from;if(i&&!e[i]){e[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(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let n=this.memoizedFileURLs.get(e);if(n)return n;if(Sr){let i=Sr(e).toString();return this.memoizedFileURLs.set(e,i),i}else throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let n=this.memoizedURLs.get(e);if(n)return n;Er==="\\\\"&&(e=e.replace(/\\\\/g,"/"));let i=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,i),i}};wr.exports=_n});var Mr=Y((hc,Cr)=>{"use strict";var Vt=/[\\t\\n\\f\\r "#\'()/;[\\\\\\]{}]/g,$t=/[\\t\\n\\f\\r !"#\'():;@[\\\\\\]{}]|\\/(?=\\*)/g,Ks=/.[\\r\\n"\'(/\\\\]/,Nr=/[\\da-f]/i;Cr.exports=function(e,n={}){let i=e.css.valueOf(),r=n.ignoreErrors,o,s,c,u,l,a,f,p,g,C,w=i.length,S=0,U=[],B=[],M=-1;function X(){return S}function D(E){throw e.error("Unclosed "+E,S)}function F(){return B.length===0&&S>=w}function x(E){if(B.length)return B.pop();if(S>=w)return;let N=E?E.ignoreUnclosed:!1;switch(o=i.charCodeAt(S),o){case 10:case 32:case 9:case 13:case 12:{u=S;do u+=1,o=i.charCodeAt(u);while(o===32||o===10||o===9||o===13||o===12);a=["space",i.slice(S,u)],S=u-1;break}case 91:case 93:case 123:case 125:case 58:case 59:case 41:{let T=String.fromCharCode(o);a=[T,T,S];break}case 40:{if(C=U.length?U.pop()[1]:"",g=i.charCodeAt(S+1),C==="url"&&g!==39&&g!==34&&g!==32&&g!==10&&g!==9&&g!==12&&g!==13){u=S;do{if(f=!1,u=i.indexOf(")",u+1),u===-1)if(r||N){u=S;break}else D("bracket");for(p=u;i.charCodeAt(p-1)===92;)p-=1,f=!f}while(f);a=["brackets",i.slice(S,u+1),S,u],S=u}else S<=M?a=["(","(",S]:(u=i.indexOf(")",S+1),s=i.slice(S,u+1),u===-1||Ks.test(s)?(M=u===-1?w:u,a=["(","(",S]):(a=["brackets",s,S,u],S=u));break}case 39:case 34:{l=o===39?"\'":\'"\',u=S;do{if(f=!1,u=i.indexOf(l,u+1),u===-1)if(r||N){u=S+1;break}else D("string");for(p=u;i.charCodeAt(p-1)===92;)p-=1,f=!f}while(f);a=["string",i.slice(S,u+1),S,u],S=u;break}case 64:{Vt.lastIndex=S+1,Vt.test(i),Vt.lastIndex===0?u=i.length-1:u=Vt.lastIndex-2,a=["at-word",i.slice(S,u+1),S,u],S=u;break}case 92:{for(u=S,c=!0;i.charCodeAt(u+1)===92;)u+=1,c=!c;if(o=i.charCodeAt(u+1),c&&o!==47&&o!==32&&o!==10&&o!==9&&o!==13&&o!==12&&(u+=1,Nr.test(i.charAt(u)))){for(;Nr.test(i.charAt(u+1));)u+=1;i.charCodeAt(u+1)===32&&(u+=1)}a=["word",i.slice(S,u+1),S,u],S=u;break}default:{o===47&&i.charCodeAt(S+1)===42?(u=i.indexOf("*/",S+2)+1,u===0&&(r||N?u=i.length:D("comment")),a=["comment",i.slice(S,u+1),S,u],S=u):($t.lastIndex=S+1,$t.test(i),$t.lastIndex===0?u=i.length-1:u=$t.lastIndex-2,a=["word",i.slice(S,u+1),S,u],U.push(a),S=u);break}}return S++,a}function b(E){B.push(E)}return{back:b,endOfFile:F,nextToken:x,position:X}}});var Dr=Y((xc,vr)=>{"use strict";var Js=It(),Qs=St(),Ys=At(),Zs=tt(),Tr=zt(),Xs=Mr(),kr={empty:!0,space:!0};function ea(t){for(let e=t.length-1;e>=0;e--){let n=t[e],i=n[3]||n[2];if(i)return i}}var Ln=class{constructor(e){this.input=e,this.root=new Zs,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let n=new Js;n.name=e[1].slice(1),n.name===""&&this.unnamedAtrule(n,e),this.init(n,e[2]);let i,r,o,s=!1,c=!1,u=[],l=[];for(;!this.tokenizer.endOfFile();){if(e=this.tokenizer.nextToken(),i=e[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(e[2]),n.source.end.offset++,this.semicolon=!0;break}else if(i==="{"){c=!0;break}else if(i==="}"){if(u.length>0){for(o=u.length-1,r=u[o];r&&r[0]==="space";)r=u[--o];r&&(n.source.end=this.getPosition(r[3]||r[2]),n.source.end.offset++)}this.end(e);break}else u.push(e);else u.push(e);if(this.tokenizer.endOfFile()){s=!0;break}}n.raws.between=this.spacesAndCommentsFromEnd(u),u.length?(n.raws.afterName=this.spacesAndCommentsFromStart(u),this.raw(n,"params",u),s&&(e=u[u.length-1],n.source.end=this.getPosition(e[3]||e[2]),n.source.end.offset++,this.spaces=n.raws.between,n.raws.between="")):(n.raws.afterName="",n.params=""),c&&(n.nodes=[],this.current=n)}checkMissedSemicolon(e){let n=this.colon(e);if(n===!1)return;let i=0,r;for(let o=n-1;o>=0&&(r=e[o],!(r[0]!=="space"&&(i+=1,i===2)));o--);throw this.input.error("Missed semicolon",r[0]==="word"?r[3]+1:r[2])}colon(e){let n=0,i,r,o;for(let[s,c]of e.entries()){if(r=c,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(e){let n=new Qs;this.init(n,e[2]),n.source.end=this.getPosition(e[3]||e[2]),n.source.end.offset++;let i=e[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=Xs(this.input)}decl(e,n){let i=new Ys;this.init(i,e[0][2]);let r=e[e.length-1];for(r[0]===";"&&(this.semicolon=!0,e.pop()),i.source.end=this.getPosition(r[3]||r[2]||ea(e)),i.source.end.offset++;e[0][0]!=="word";)e.length===1&&this.unknownWord(e),i.raws.before+=e.shift()[1];for(i.source.start=this.getPosition(e[0][2]),i.prop="";e.length;){let l=e[0][0];if(l===":"||l==="space"||l==="comment")break;i.prop+=e.shift()[1]}i.raws.between="";let o;for(;e.length;)if(o=e.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=[],c;for(;e.length&&(c=e[0][0],!(c!=="space"&&c!=="comment"));)s.push(e.shift());this.precheckMissedSemicolon(e);for(let l=e.length-1;l>=0;l--){if(o=e[l],o[1].toLowerCase()==="!important"){i.important=!0;let a=this.stringFrom(e,l);a=this.spacesFromEnd(e)+a,a!==" !important"&&(i.raws.important=a);break}else if(o[1].toLowerCase()==="important"){let a=e.slice(0),f="";for(let p=l;p>0;p--){let g=a[p][0];if(f.trim().startsWith("!")&&g!=="space")break;f=a.pop()[1]+f}f.trim().startsWith("!")&&(i.important=!0,i.raws.important=f,e=a)}if(o[0]!=="space"&&o[0]!=="comment")break}e.some(l=>l[0]!=="space"&&l[0]!=="comment")&&(i.raws.between+=s.map(l=>l[1]).join(""),s=[]),this.raw(i,"value",s.concat(e),n),i.value.includes(":")&&!n&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let n=new Tr;this.init(n,e[2]),n.selector="",n.raws.between="",this.current=n}end(e){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(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}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(e){if(this.spaces+=e[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(e[2]),n.source.end.offset+=n.raws.ownSemicolon.length)}}getPosition(e){let n=this.input.fromOffset(e);return{column:n.col,line:n.line,offset:e}}init(e,n){this.current.push(e),e.source={input:this.input,start:this.getPosition(n)},e.raws.before=this.spaces,this.spaces="",e.type!=="comment"&&(this.semicolon=!1)}other(e){let n=!1,i=null,r=!1,o=null,s=[],c=e[1].startsWith("--"),u=[],l=e;for(;l;){if(i=l[0],u.push(l),i==="("||i==="[")o||(o=l),s.push(i==="("?")":"]");else if(c&&r&&i==="{")o||(o=l),s.push("}");else if(s.length===0)if(i===";")if(r){this.decl(u,c);return}else break;else if(i==="{"){this.rule(u);return}else if(i==="}"){this.tokenizer.back(u.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(!c)for(;u.length&&(l=u[u.length-1][0],!(l!=="space"&&l!=="comment"));)this.tokenizer.back(u.pop());this.decl(u,c)}else this.unknownWord(u)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e);break}this.endFile()}precheckMissedSemicolon(){}raw(e,n,i,r){let o,s,c=i.length,u="",l=!0,a,f;for(let p=0;p<c;p+=1)o=i[p],s=o[0],s==="space"&&p===c-1&&!r?l=!1:s==="comment"?(f=i[p-1]?i[p-1][0]:"empty",a=i[p+1]?i[p+1][0]:"empty",!kr[f]&&!kr[a]?u.slice(-1)===","?l=!1:u+=o[1]:l=!1):u+=o[1];if(!l){let p=i.reduce((g,C)=>g+C[1],"");e.raws[n]={raw:p,value:u}}e[n]=u}rule(e){e.pop();let n=new Tr;this.init(n,e[0][2]),n.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(n,"selector",e),this.current=n}spacesAndCommentsFromEnd(e){let n,i="";for(;e.length&&(n=e[e.length-1][0],!(n!=="space"&&n!=="comment"));)i=e.pop()[1]+i;return i}spacesAndCommentsFromStart(e){let n,i="";for(;e.length&&(n=e[0][0],!(n!=="space"&&n!=="comment"));)i+=e.shift()[1];return i}spacesFromEnd(e){let n,i="";for(;e.length&&(n=e[e.length-1][0],n==="space");)i=e.pop()[1]+i;return i}stringFrom(e,n){let i="";for(let r=n;r<e.length;r++)i+=e[r][1];return e.splice(n,e.length-n),i}unclosedBlock(){let e=this.current.source.start;throw this.input.error("Unclosed block",e.line,e.column)}unclosedBracket(e){throw this.input.error("Unclosed bracket",{offset:e[2]},{offset:e[2]+1})}unexpectedClose(e){throw this.input.error("Unexpected }",{offset:e[2]},{offset:e[2]+1})}unknownWord(e){throw this.input.error("Unknown word "+e[0][1],{offset:e[0][2]},{offset:e[0][2]+e[0][1].length})}unnamedAtrule(e,n){throw this.input.error("At-rule without name",{offset:n[2]},{offset:n[2]+n[1].length})}};vr.exports=Ln});var Jt=Y((gc,_r)=>{"use strict";var ta=qe(),na=Ft(),ia=Dr();function Kt(t,e){let n=new na(t,e),i=new ia(n);try{i.parse()}catch(r){throw r}return i.root}_r.exports=Kt;Kt.default=Kt;ta.registerParse(Kt)});var Bn=Y((yc,Rr)=>{"use strict";var Ct=class{constructor(e,n={}){if(this.type="warning",this.text=e,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}};Rr.exports=Ct;Ct.default=Ct});var Qt=Y((Sc,Lr)=>{"use strict";var ra=Bn(),Mt=class{get content(){return this.css}constructor(e,n,i){this.processor=e,this.messages=[],this.root=n,this.opts=i,this.css="",this.map=void 0}toString(){return this.css}warn(e,n={}){n.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(n.plugin=this.lastPlugin.postcssPlugin);let i=new ra(e,n);return this.messages.push(i),i}warnings(){return this.messages.filter(e=>e.type==="warning")}};Lr.exports=Mt;Mt.default=Mt});var On=Y((bc,Or)=>{"use strict";var Br={};Or.exports=function(e){Br[e]||(Br[e]=!0,typeof console<"u"&&console.warn&&console.warn(e))}});var Wn=Y((Ec,Hr)=>{"use strict";var oa=qe(),sa=Wt(),aa=Rn(),la=Jt(),Pr=Qt(),ua=tt(),ca=pt(),{isClean:Be,my:da}=Pt(),Ac=On(),fa={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},ma={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},pa={Once:!0,postcssPlugin:!0,prepare:!0},it=0;function Tt(t){return typeof t=="object"&&typeof t.then=="function"}function Wr(t){let e=!1,n=fa[t.type];return t.type==="decl"?e=t.prop.toLowerCase():t.type==="atrule"&&(e=t.name.toLowerCase()),e&&t.append?[n,n+"-"+e,it,n+"Exit",n+"Exit-"+e]:e?[n,n+"-"+e,n+"Exit",n+"Exit-"+e]:t.append?[n,it,n+"Exit"]:[n,n+"Exit"]}function Ir(t){let e;return t.type==="document"?e=["Document",it,"DocumentExit"]:t.type==="root"?e=["Root",it,"RootExit"]:e=Wr(t),{eventIndex:0,events:e,iterator:0,node:t,visitorIndex:0,visitors:[]}}function Pn(t){return t[Be]=!1,t.nodes&&t.nodes.forEach(e=>Pn(e)),t}var In={},ze=class t{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(e,n,i){this.stringified=!1,this.processed=!1;let r;if(typeof n=="object"&&n!==null&&(n.type==="root"||n.type==="document"))r=Pn(n);else if(n instanceof t||n instanceof Pr)r=Pn(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=la;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[da]&&oa.rebuild(r)}this.result=new Pr(e,r,i),this.helpers={...In,postcss:In,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(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,n){let i=this.result.lastPlugin;try{n&&n.addToError(e),this.error=e,e.name==="CssSyntaxError"&&!e.plugin?(e.plugin=i.postcssPlugin,e.setMessage()):i.postcssVersion}catch(r){console&&console.error&&console.error(r)}return e}prepareVisitors(){this.listeners={};let e=(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(!ma[i]&&/^[A-Z]/.test(i))throw new Error(`Unknown event ${i} in ${n.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!pa[i])if(typeof n[i]=="object")for(let r in n[i])r==="*"?e(n,i,n[i][r]):e(n,i+"-"+r.toLowerCase(),n[i][r]);else typeof n[i]=="function"&&e(n,i,n[i])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let e=0;e<this.plugins.length;e++){let n=this.plugins[e],i=this.runOnRoot(n);if(Tt(i))try{await i}catch(r){throw this.handleError(r)}}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[Be];){e[Be]=!0;let n=[Ir(e)];for(;n.length>0;){let i=this.visitTick(n);if(Tt(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(e.type==="document"){let r=e.nodes.map(o=>i(o,this.helpers));await Promise.all(r)}else await i(e,this.helpers)}catch(r){throw this.handleError(r)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if(typeof e=="object"&&e.Once){if(this.result.root.type==="document"){let n=this.result.root.nodes.map(i=>e.Once(i,this.helpers));return Tt(n[0])?Promise.all(n):n}return e.Once(this.result.root,this.helpers)}else if(typeof e=="function")return e(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 e=this.result.opts,n=ca;e.syntax&&(n=e.syntax.stringify),e.stringifier&&(n=e.stringifier),n.stringify&&(n=n.stringify);let i=this.result.root.source;if(e.map===void 0&&!(i&&i.input&&i.input.map)){let s="";return n(this.result.root,c=>{s+=c}),this.result.css=s,this.result}let o=new aa(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 e of this.plugins){let n=this.runOnRoot(e);if(Tt(n))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[Be];)e[Be]=!0,this.walkSync(e);if(this.listeners.OnceExit)if(e.type==="document")for(let n of e.nodes)this.visitSync(this.listeners.OnceExit,n);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,n){return this.async().then(e,n)}toString(){return this.css}visitSync(e,n){for(let[i,r]of e){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(Tt(o))throw this.getAsyncError()}}visitTick(e){let n=e[e.length-1],{node:i,visitors:r}=n;if(i.type!=="root"&&i.type!=="document"&&!i.parent){e.pop();return}if(r.length>0&&n.visitorIndex<r.length){let[s,c]=r[n.visitorIndex];n.visitorIndex+=1,n.visitorIndex===r.length&&(n.visitors=[],n.visitorIndex=0),this.result.lastPlugin=s;try{return c(i.toProxy(),this.helpers)}catch(u){throw this.handleError(u,i)}}if(n.iterator!==0){let s=n.iterator,c;for(;c=i.nodes[i.indexes[s]];)if(i.indexes[s]+=1,!c[Be]){c[Be]=!0,e.push(Ir(c));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===it){i.nodes&&i.nodes.length&&(i[Be]=!0,n.iterator=i.getIterator());return}else if(this.listeners[s]){n.visitors=this.listeners[s];return}}e.pop()}walkSync(e){e[Be]=!0;let n=Wr(e);for(let i of n)if(i===it)e.nodes&&e.each(r=>{r[Be]||this.walkSync(r)});else{let r=this.listeners[i];if(r&&this.visitSync(r,e.toProxy()))return}}warnings(){return this.sync().warnings()}};ze.registerPostcss=t=>{In=t};Hr.exports=ze;ze.default=ze;ua.registerLazyResult(ze);sa.registerLazyResult(ze)});var Ur=Y((wc,qr)=>{"use strict";var ha=Rn(),xa=Jt(),ga=Qt(),ya=pt(),Fc=On(),kt=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 e,n=xa;try{e=n(this._css,this._opts)}catch(i){this.error=i}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}constructor(e,n,i){n=n.toString(),this.stringified=!1,this._processor=e,this._css=n,this._opts=i,this._map=void 0;let r=ya;this.result=new ga(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 ha(r,void 0,this._opts,n);if(s.isMap()){let[c,u]=s.generate();c&&(this.result.css=c),u&&(this.result.map=u)}else s.clearAnnotation(),this.result.css=s.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,n){return this.async().then(e,n)}toString(){return this._css}warnings(){return[]}};qr.exports=kt;kt.default=kt});var jr=Y((Nc,zr)=>{"use strict";var Sa=Wt(),ba=Wn(),Aa=Ur(),Ea=tt(),Qe=class{constructor(e=[]){this.version="8.5.14",this.plugins=this.normalize(e)}normalize(e){let n=[];for(let i of e)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(e,n={}){return!this.plugins.length&&!n.parser&&!n.stringifier&&!n.syntax?new Aa(this,e,n):new ba(this,e,n)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};zr.exports=Qe;Qe.default=Qe;Ea.registerProcessor(Qe);Sa.registerProcessor(Qe)});var Zr=Y((Cc,Yr)=>{"use strict";var Gr=It(),Vr=St(),Fa=qe(),wa=Ot(),$r=At(),Kr=Wt(),Na=yr(),Ca=Ft(),Ma=Wn(),Ta=Dn(),ka=gt(),va=Jt(),Hn=jr(),Da=Qt(),Jr=tt(),Qr=zt(),_a=pt(),Ra=Bn();function re(...t){return t.length===1&&Array.isArray(t[0])&&(t=t[0]),new Hn(t)}re.plugin=function(e,n){let i=!1;function r(...s){console&&console.warn&&!i&&(i=!0,console.warn(e+`: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+`: \\u91CC\\u9762 postcss.plugin \\u88AB\\u5F03\\u7528. \\u8FC1\\u79FB\\u6307\\u5357:\nhttps://www.w3ctech.com/topic/2226`));let c=n(...s);return c.postcssPlugin=e,c.postcssVersion=new Hn().version,c}let o;return Object.defineProperty(r,"postcss",{get(){return o||(o=r()),o}}),r.process=function(s,c,u){return re([r(u)]).process(s,c)},r};re.stringify=_a;re.parse=va;re.fromJSON=Na;re.list=Ta;re.comment=t=>new Vr(t);re.atRule=t=>new Gr(t);re.decl=t=>new $r(t);re.rule=t=>new Qr(t);re.root=t=>new Jr(t);re.document=t=>new Kr(t);re.CssSyntaxError=wa;re.Declaration=$r;re.Container=Fa;re.Processor=Hn;re.Document=Kr;re.Comment=Vr;re.Warning=Ra;re.AtRule=Gr;re.Result=Da;re.Input=Ca;re.Rule=Qr;re.Root=Jr;re.Node=ka;Ma.registerPostcss(re);Yr.exports=re;re.default=re});function L(t,e){if(typeof window>"u")return;let n=window,i=n.__hf?.onSwallowed;if(i)try{i({label:t,error:e})}catch(r){}(n.__hfDebug||n.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${t} swallowed:`,e)}function Ee(t){try{window.parent.postMessage(t,"*")}catch(e){L("bridge.postMessage",e)}}function oi(t){let e=n=>{let i=n.data;if(!i||i.source!=="hf-parent"||i.type!=="control")return;let r=i.action;if(r==="play"){t.onPlay();return}if(r==="pause"){t.onPause();return}if(r==="seek"){t.onSeek(Number(i.frame??0),i.seekMode??"commit");return}if(r==="set-muted"){t.onSetMuted(!!i.muted);return}if(r==="set-volume"){t.onSetVolume(Math.max(0,Math.min(1,Number(i.volume??1))));return}if(r==="set-media-output-muted"){t.onSetMediaOutputMuted(!!i.muted);return}if(r==="set-playback-rate"){t.onSetPlaybackRate(Number(i.playbackRate??1));return}if(r==="enable-pick-mode"){t.onEnablePickMode();return}if(r==="disable-pick-mode"){t.onDisablePickMode();return}if(r==="flash-elements"){let o=i.selectors,s=i.duration||800;o&&$o(o,s)}};return window.addEventListener("message",e),e}function $o(t,e){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 ${e}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 t)try{document.querySelectorAll(n).forEach(r=>{r.classList.add("__hf-flash"),setTimeout(()=>r.classList.remove("__hf-flash"),e)})}catch(i){L("bridge.flashElements.querySelector",i)}}var dn=null;function si(t){dn=t}function lt(t,e){if(dn)try{dn({source:"hf-preview",type:"analytics",event:t,properties:e??{}})}catch(n){L("runtime.analytics.site1",n)}}function ai(t){let e=[],n=c=>{if(typeof c.getAnimations!="function")return[];try{return c.getAnimations()}catch{return[]}},i=(c,u)=>{for(let l of c){try{l.currentTime=u}catch(a){L("runtime.adapters.css.site1",a)}try{l.pause()}catch(a){L("runtime.adapters.css.site2",a)}}},r=c=>{for(let u of c)try{u.play()}catch(l){L("runtime.adapters.css.site3",l)}},o=c=>{for(let u of c)try{u.pause()}catch(l){L("runtime.adapters.css.site4",l)}},s=c=>{c.baseDelay?c.el.style.animationDelay=c.baseDelay:c.el.style.removeProperty("animation-delay"),c.basePlayState?c.el.style.animationPlayState=c.basePlayState:c.el.style.removeProperty("animation-play-state")};return{name:"css",discover:()=>{e=[];let c=document.querySelectorAll("*");for(let u of c){if(!(u instanceof HTMLElement))continue;let l=window.getComputedStyle(u);!l.animationName||l.animationName==="none"||e.push({el:u,baseDelay:u.style.animationDelay||"",basePlayState:u.style.animationPlayState||""})}},seek:c=>{let u=Number(c.time)||0;for(let l of e){if(!l.el.isConnected)continue;let a=t?.resolveStartSeconds?t.resolveStartSeconds(l.el):Number.parseFloat(l.el.getAttribute("data-start")??"0")||0,f=Math.max(0,u-a)*1e3,p=n(l.el);if(p.length>0){i(p,f);continue}l.el.style.animationPlayState="paused",l.el.style.animationDelay=`-${(f/1e3).toFixed(3)}s`}},pause:()=>{for(let c of e){if(!c.el.isConnected)continue;let u=n(c.el);u.length>0&&o(u),s(c)}},play:()=>{for(let c of e)c.el.isConnected&&(s(c),r(n(c.el)))},revert:()=>{e=[]}}}function li(t){return{name:"gsap",discover:()=>{},seek:e=>{let n=t.getTimeline();if(!n)return;n.pause();let i=Math.max(0,Number(e.time)||0);typeof n.totalTime=="function"?n.totalTime(i,!1):n.seek(i,!1)},pause:()=>{let e=t.getTimeline();e&&e.pause()}}}function ui(){return{name:"animejs",discover:()=>{try{let t=window.anime;if(!t||typeof t.running>"u")return;let e=t.running;if(!Array.isArray(e)||e.length===0)return;let n=window.__hfAnime??[],i=new Set(n);for(let r of e)i.has(r)||n.push(r);window.__hfAnime=n}catch(t){L("runtime.adapters.animejs.site1",t)}},seek:t=>{let e=Math.max(0,(Number(t.time)||0)*1e3),n=window.__hfAnime;if(!(!n||n.length===0))for(let i of n)try{typeof i.seek=="function"&&i.seek(e)}catch(r){L("runtime.adapters.animejs.site2",r)}},pause:()=>{let t=window.__hfAnime;if(!(!t||t.length===0))for(let e of t)try{typeof e.pause=="function"&&e.pause()}catch(n){L("runtime.adapters.animejs.site3",n)}},play:()=>{let t=window.__hfAnime;if(!(!t||t.length===0))for(let e of t)try{typeof e.play=="function"&&e.play()}catch(n){L("runtime.adapters.animejs.site4",n)}},revert:()=>{}}}function fi(){return{name:"lottie",discover:()=>{try{let t=window.lottie;if(t&&typeof t.getRegisteredAnimations=="function"){let e=t.getRegisteredAnimations();if(Array.isArray(e)&&e.length>0){let n=window.__hfLottie??[],i=new Set(n);for(let r of e)i.has(r)||n.push(r);window.__hfLottie=n}}}catch(t){L("runtime.adapters.lottie.site1",t)}},seek:t=>{let e=Math.max(0,Number(t.time)||0),n=window.__hfLottie;if(!(!n||n.length===0))for(let i of n)try{if(ci(i))i.goToAndStop(e*1e3,!1);else if(di(i)){if(typeof i.setCurrentRawFrameValue=="function"){let r=i.totalFrames??0,o=i.frameRate??30,s=e*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,e/r*100);i.seek(o)}}}catch(r){L("runtime.adapters.lottie.site2",r)}},pause:()=>{let t=window.__hfLottie;if(!(!t||t.length===0))for(let e of t)try{(ci(e)||di(e))&&e.pause()}catch(n){L("runtime.adapters.lottie.site3",n)}},revert:()=>{}}}function ci(t){return typeof t=="object"&&t!==null&&typeof t.goToAndStop=="function"}function di(t){return typeof t=="object"&&t!==null&&typeof t.pause=="function"&&("totalFrames"in t||"duration"in t)}var mi=-1;function Lt(t){if(t!==mi){mi=t;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:t}}))}catch(e){L("runtime.adapters.seek-dispatch.site1",e)}}}function pi(){let t=null,e=0;return{name:"three",discover:()=>{},seek:n=>{t=Math.max(0,Number(n.time)||0),e=t,window.__hfThreeTime=t,Lt(t)},pause:()=>{t==null&&(t=Math.max(0,e))},play:()=>{t=null},revert:()=>{t=null,e=0}}}function hi(){let t=null,e=0;return{name:"typegpu",discover:()=>{},seek:n=>{t=Math.max(0,Number(n.time)||0),e=t,window.__hfTypegpuTime=t,Lt(t)},pause:()=>{t==null&&(t=Math.max(0,e))},play:()=>{t=null},revert:()=>{t=null,e=0}}}function xi(){let t=globalThis.GPUQueue;if(!t?.prototype?.copyExternalImageToTexture)return;let e=t.prototype.copyExternalImageToTexture;t.prototype.copyExternalImageToTexture=function(n,i,r){if(n?.source instanceof HTMLVideoElement){let o=n.source.nextElementSibling;if(o instanceof HTMLImageElement&&o.classList.contains("__render_frame__")&&o.complete&&o.naturalWidth>0)return e.call(this,{...n,source:o},i,r)}return e.call(this,n,i,r)}}function gi(){return{name:"waapi",discover:()=>{},seek:t=>{if(!document.getAnimations)return;let e=Math.max(0,(Number(t.time)||0)*1e3);for(let n of document.getAnimations()){try{n.currentTime=e}catch(i){L("runtime.adapters.waapi.site1",i)}try{n.pause()}catch(i){L("runtime.adapters.waapi.site2",i)}}},pause:()=>{if(document.getAnimations)for(let t of document.getAnimations())try{t.pause()}catch(e){L("runtime.adapters.waapi.site3",e)}}}}function yi(t){let e=Array.from(document.querySelectorAll("video, audio")),n=t?.shouldIncludeElement?e.filter(s=>t.shouldIncludeElement?.(s)):e.filter(s=>s.hasAttribute("data-start")),i=[],r=[],o=0;for(let s of n){let c=t?.resolveStartSeconds?t.resolveStartSeconds(s):Number.parseFloat(s.dataset.start??"0");if(!Number.isFinite(c))continue;let u=Number.parseFloat(s.dataset.playbackStart??s.dataset.mediaStart??"0")||0,l=s.defaultPlaybackRate,a=Number.isFinite(l)&&l>0?Math.max(.1,Math.min(5,l)):1,f=s.loop,p=Number.isFinite(s.duration)&&s.duration>0?s.duration:null,g=t?.resolveDurationSeconds?.(s)??Number.parseFloat(s.dataset.duration??"");(!Number.isFinite(g)||g<=0)&&p!=null&&(g=Math.max(0,(p-u)/a));let C=Number.isFinite(g)&&g>0?c+g:Number.POSITIVE_INFINITY,w=Number.parseFloat(s.dataset.volume??""),S={el:s,start:c,mediaStart:u,duration:Number.isFinite(g)&&g>0?g:Number.POSITIVE_INFINITY,end:C,volume:Number.isFinite(w)?w:null,playbackRate:a,loop:f,sourceDuration:p};i.push(S),s.tagName==="VIDEO"&&r.push(S),Number.isFinite(C)&&(o=Math.max(o,C))}return{timedMediaEls:n,mediaClips:i,videoClips:r,maxMediaEnd:o}}var fn=new WeakMap,ut=new WeakMap,mn=new WeakSet,Ye=new WeakSet;function Ko(t){if(Ye.has(t))return;Ye.add(t);let e=()=>Ye.delete(t);t.addEventListener("playing",e,{once:!0}),t.addEventListener("pause",e,{once:!0}),t.addEventListener("error",e,{once:!0})}function Si(t){let e=!!(t.outputMuted||t.userMuted);for(let n of t.clips){let{el:i}=n;if(!i.isConnected)continue;let r=(t.timeSeconds-n.start)*n.playbackRate+n.mediaStart;if(t.timeSeconds>=n.start&&t.timeSeconds<n.end&&r>=0){if(n.loop&&n.sourceDuration!=null&&n.sourceDuration>0){let D=n.sourceDuration-n.mediaStart;D>0&&r>=n.sourceDuration&&(r=n.mediaStart+(r-n.mediaStart)%D)}let s=t.userVolume??1;i.volume=(n.volume??1)*s,e&&(i.muted=!0),i.preload!=="auto"&&(i.preload="auto");try{i.playbackRate=n.playbackRate*t.playbackRate}catch(D){L("runtime.media.site1",D)}let c=.04,u=2,l=i.currentTime||0,a=Math.abs(l-r),f=r-l,p=fn.get(i);fn.set(i,f);let g=p===void 0,C=!g&&Math.abs(f-p)>.5,w=a>3,S=a>.5&&(g||C||w),U=i.tagName==="VIDEO"&&!i.paused,B=p!==void 0&&Math.abs(f-p)<.004,M=!1;if(!U&&!S&&!g&&B&&a>c){let D=(ut.get(i)??0)+1;ut.set(i,D),D>=u&&(M=!0,ut.set(i,0))}else a<=c&&ut.set(i,0);let X=!U&&t.forceSync&&a>.02;if(S||M||X){try{i.currentTime=r}catch(D){L("runtime.media.site2",D)}if(Math.abs(i.currentTime-r)>.5&&!mn.has(i)){mn.add(i),i.load();try{i.currentTime=r}catch(D){L("runtime.media.site3",D)}}Ye.delete(i)}t.playing&&i.paused&&!Ye.has(i)?(Ko(i),i.play().catch(D=>{Ye.delete(i),(D&&typeof D=="object"&&"name"in D?String(D.name??""):"")==="NotAllowedError"&&t.onAutoplayBlocked?.()})):!t.playing&&!i.paused&&i.pause();continue}fn.delete(i),ut.delete(i),mn.delete(i),i.paused||i.pause()}}var Jo=["[data-hyperframes-ignore]","[data-hyperframes-picker-ignore]","[data-hf-ignore]","[data-no-inspect]","[data-no-pick]","[data-hyper-shader-loading]"].join(","),Qo=["[data-hyperframes-picker-block]","[data-hyper-shader-loading]"].join(",");function bi(t){let e=!1,n=null,i=null,r=null,o=null;function s(x,b){try{window.dispatchEvent(new CustomEvent(x,{detail:b}))}catch(E){L("runtime.picker.site1",E)}}function c(x){r=x,s("hyperframe:picker:hovered",{elementInfo:r,isPickMode:e,timestamp:Date.now()})}function u(x){o=x,s("hyperframe:picker:selected",{elementInfo:o,isPickMode:e,timestamp:Date.now()})}function l(x){let b=x.ownerDocument.defaultView;if(!b)return!1;let E=x;for(;E&&E!==document.body&&E!==document.documentElement;){let N=b.getComputedStyle(E);if(N.display==="none"||N.visibility==="hidden"||N.pointerEvents==="none")return!0;let T=Number.parseFloat(N.opacity);if(Number.isFinite(T)&&T<=.01)return!0;E=E.parentElement}return!1}function a(x){if(!x||x===document.body||x===document.documentElement)return!1;let b=x.tagName.toLowerCase();return!(b==="script"||b==="style"||b==="link"||b==="meta"||x.classList.contains("__hf-pick-highlight")||x.closest(Jo)||l(x))}function f(x){return!!x?.closest(Qo)}function p(x){let b=x;if(b.id)return`#${b.id}`;let E=x.getAttribute("data-composition-id");if(E)return`[data-composition-id="${E}"]`;let N=x.getAttribute("data-composition-src");if(N)return`[data-composition-src="${N}"]`;let T=x.getAttribute("data-track-index");if(T)return`[data-track-index="${T}"]`;let R=x.tagName.toLowerCase(),P=x.parentElement;if(!P)return R;let J=P.querySelectorAll(`:scope > ${R}`);if(J.length===1)return R;for(let _=0;_<J.length;_+=1)if(J[_]===x)return`${R}:nth-of-type(${_+1})`;return R}function g(x){let b=x.tagName.toLowerCase(),E=(x.textContent??"").trim().replace(/\\s+/g," "),N=(T,R)=>T.length>R?`${T.slice(0,R-1)}\\u2026`:T;return b==="h1"||b==="h2"||b==="h3"?"Heading":b==="p"||b==="span"||b==="div"?E.length>0?N(E,56):"Text":b==="img"?"Image":b==="video"?"Video":b==="audio"?"Audio":b==="svg"?"Shape":x.getAttribute("data-composition-src")?"Composition":b==="section"?"Section":`${b.charAt(0).toUpperCase()}${b.slice(1)}`}function C(x,b,E){let N=typeof E=="number"&&E>0?E:8,T=[];if(document.elementsFromPoint)T=document.elementsFromPoint(x,b);else if(document.elementFromPoint){let J=document.elementFromPoint(x,b);T=J?[J]:[]}if(f(T[0]??null))return[];let R={},P=[];for(let J=0;J<T.length;J+=1){let _=T[J];if(!a(_))continue;let ce=`${_.tagName}::${_.id||""}::${J}`;if(!R[ce]&&(R[ce]=!0,P.push(_),P.length>=N))break}return P}function w(x){let b=x.getBoundingClientRect(),E={};for(let T=0;T<x.attributes.length;T+=1){let R=x.attributes[T];R.name.startsWith("data-")&&(E[R.name]=R.value)}return{id:x.id||null,tagName:x.tagName.toLowerCase(),selector:p(x),label:g(x),boundingBox:{x:b.left,y:b.top,width:b.width,height:b.height},textContent:x.textContent?x.textContent.trim().slice(0,200):null,src:x.getAttribute("src")||x.getAttribute("data-composition-src")||null,dataAttributes:E}}function S(x,b,E){return C(x,b,E).map(w)}function U(x){if(!e)return;let E=C(x.clientX,x.clientY,1)[0]??(x.target instanceof Element?x.target:null);if(!a(E)||n===E)return;n&&n.classList.remove("__hf-pick-highlight"),n=E,E.classList.add("__hf-pick-highlight");let N=w(E);c(N),t.postMessage({source:"hf-preview",type:"element-hovered",elementInfo:N})}function B(x){if(!e)return;x.preventDefault(),x.stopPropagation(),x.stopImmediatePropagation();let b=S(x.clientX,x.clientY,8);b.length!==0&&(c(b[0]??null),t.postMessage({source:"hf-preview",type:"element-pick-candidates",candidates:b,selectedIndex:0,point:{x:x.clientX,y:x.clientY}}))}function M(x){x.key==="Escape"&&(D(),t.postMessage({source:"hf-preview",type:"pick-mode-cancelled"}))}function X(){e||(e=!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",U,!0),document.addEventListener("click",B,!0),document.addEventListener("keydown",M,!0),s("hyperframe:picker:mode",{isPickMode:!0,timestamp:Date.now()}))}function D(){e&&(e=!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",U,!0),document.removeEventListener("click",B,!0),document.removeEventListener("keydown",M,!0),s("hyperframe:picker:mode",{isPickMode:!1,timestamp:Date.now()}))}function F(){window.__HF_PICKER_API={enable:X,disable:D,isActive:()=>e,getHovered:()=>r,getSelected:()=>o,getCandidatesAtPoint:(x,b,E)=>Number.isFinite(x)&&Number.isFinite(b)?S(x,b,E):[],pickAtPoint:(x,b,E)=>{if(!Number.isFinite(x)||!Number.isFinite(b))return null;let N=S(x,b,8);if(!N.length)return null;let T=Math.max(0,Math.min(N.length-1,Number(E??0))),R=N[T]??null;return R?(u(R),t.postMessage({source:"hf-preview",type:"element-picked",elementInfo:R}),D(),R):null},pickManyAtPoint:(x,b,E)=>{if(!Number.isFinite(x)||!Number.isFinite(b))return[];let N=S(x,b,8);if(!N.length)return[];let T=[],R=Array.isArray(E)?E:[0];for(let P of R){let J=Math.max(0,Math.min(N.length-1,Math.floor(Number(P)))),_=N[J];if(!_)continue;T.some(ge=>ge.selector===_.selector&&ge.tagName===_.tagName)||T.push(_)}return T.length?(u(T[0]??null),t.postMessage({source:"hf-preview",type:"element-picked-many",elementInfos:T}),D(),T):[]}},s("hyperframe:picker:api-ready",{hasApi:!0,timestamp:Date.now()})}return{enablePickMode:X,disablePickMode:D,installPickerApi:F}}function Ze(t,e){let n=Number.isFinite(e)&&e>0?e:30,i=Number.isFinite(t)&&t>0?t:0;return Math.floor(i*n+1e-9)/n}function Bt(t,e,n){if(t){for(let i of Object.values(t))if(!(!i||i===e))try{n(i)}catch(r){L("runtime.player.site1",r)}}}function Ai(t,e,n){let i=Ze(e,n);return t.pause(),typeof t.totalTime=="function"?t.totalTime(i,!1):t.seek(i,!1),i}function Yo(t,e,n,i){let r=[];Bt(t,e,o=>{o.play(),r.push(o)});try{return Ai(e,n,i)}finally{for(let o of r)try{o.pause()}catch(s){L("runtime.player.site2",s)}}}function Zo(t,e){Bt(t,e,n=>{n.play()})}function Ei(t){return{_timeline:null,play:()=>{let e=t.getTimeline();if(!e||t.getIsPlaying())return;let n=Math.max(0,Number(t.getSafeDuration?.()??e.duration()??0)||0);n>0&&Math.max(0,Number(e.time())||0)>=n&&(e.pause(),e.seek(0,!1),t.onDeterministicSeek(0),t.setIsPlaying(!1),t.onSyncMedia(0,!1),t.onRenderFrameSeek(0)),typeof e.timeScale=="function"&&e.timeScale(t.getPlaybackRate()),e.play(),Bt(t.getTimelineRegistry?.(),e,i=>{typeof i.timeScale=="function"&&i.timeScale(t.getPlaybackRate()),i.play()}),t.onDeterministicPlay(),t.setIsPlaying(!0),t.onShowNativeVideos(),t.onStatePost(!0)},pause:()=>{let e=t.getTimeline();if(!e)return;e.pause(),Bt(t.getTimelineRegistry?.(),e,i=>{i.pause()});let n=Math.max(0,Number(e.time())||0);t.onDeterministicSeek(n),t.onDeterministicPause(),t.setIsPlaying(!1),t.onSyncMedia(n,!1),t.onRenderFrameSeek(n),t.onStatePost(!0)},seek:e=>{let n=t.getTimeline();if(!n)return;let i=Math.max(0,Number(e)||0),r=Yo(t.getTimelineRegistry?.(),n,i,t.getCanonicalFps());t.onDeterministicSeek(r),t.setIsPlaying(!1),t.onSyncMedia(r,!1),t.onRenderFrameSeek(r),t.onStatePost(!0)},renderSeek:e=>{let n=t.getTimeline(),i=t.getCanonicalFps(),r=n?(Zo(t.getTimelineRegistry?.(),n),Ai(n,e,i)):Ze(Math.max(0,Number(e)||0),i);t.onDeterministicSeek(r),t.setIsPlaying(!1),t.onSyncMedia(r,!1),t.onRenderFrameSeek(r),t.onStatePost(!0)},getTime:()=>Number(t.getTimeline()?.time()??0),getDuration:()=>Number(t.getTimeline()?.duration()??0),isPlaying:()=>t.getIsPlaying(),setPlaybackRate:e=>t.setPlaybackRate(e),getPlaybackRate:()=>t.getPlaybackRate()}}function Fi(){return{capturedTimeline:null,isPlaying:!1,rafId:null,currentTime:0,deterministicAdapters:[],parityModeEnabled:!0,canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,clampDurationLoggedRaw:null,beforeUnloadHandler:null,domReadyHandler:null,injectedCompStyles:[],injectedCompScripts:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,maxTimelineDurationSeconds:1800,nativeVisualWatchdogTick:0,transportClock:null,transportRafId:null}}var Xo="data-hf-authored-duration",es="data-hf-authored-end";function $e(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}function ts(t){return $e(t.getAttribute("data-duration"))}function ns(t){return $e(t.getAttribute("data-end"))}function is(t){return $e(t.getAttribute(Xo))}function rs(t){return $e(t.getAttribute(es))}function os(t){let e=(t??"").trim();if(!e)return null;let n=$e(e);if(n!=null)return{kind:"absolute",value:n};let i=e.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",c=Number.parseFloat(s),u=Number.isFinite(c)?Math.max(0,c):0,l=o==="-"?-u:u;return{kind:"reference",refId:r,offset:l}}function Ke(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=new WeakMap,r=new WeakMap,o=new Set,s=a=>{let f=document.getElementById(a);return f||(document.querySelector(`[data-composition-id="${CSS.escape(a)}"]`)??null)},c=a=>{let f=r.get(a);if(f!==void 0)return f;let p=null,g=ts(a)??(n?is(a):null);if(g!=null&&g>0&&(p=g),p==null||p<=0){let C=ns(a)??(n?rs(a):null);if(C!=null){let w=l(a,0),S=C-w;Number.isFinite(S)&&S>0&&(p=S)}}if((p==null||p<=0)&&a instanceof HTMLMediaElement){let C=$e(a.getAttribute("data-playback-start"))??$e(a.getAttribute("data-media-start"))??0;Number.isFinite(a.duration)&&a.duration>C&&(p=a.duration-C)}if(p==null||p<=0){let C=a.getAttribute("data-composition-id");if(C){let w=e[C]??null;if(w&&typeof w.duration=="function")try{let S=Number(w.duration());Number.isFinite(S)&&S>0&&(p=S)}catch(S){L("runtime.startResolver.site1",S)}}}return p!=null&&Number.isFinite(p)&&p>0?(r.set(a,p),p):(r.set(a,null),null)},u=(a,f)=>{if(a.hasAttribute("data-composition-id")){let g=a.parentElement?.closest("[data-composition-id]");return g?l(g,f):0}let p=a.closest("[data-composition-id]");return p?l(p,f):0},l=(a,f)=>{let p=i.get(a);if(p!==void 0)return p??f;if(o.has(a))return f;o.add(a);try{let g=os(a.getAttribute("data-start"));if(!g){if(a.hasAttribute("data-composition-id")){let B=a.parentElement;if(B&&(B.hasAttribute("data-composition-src")||B.hasAttribute("data-composition-id"))){let M=l(B,f);return i.set(a,M),M}}return i.set(a,f),f}if(g.kind==="absolute"){let B=Math.max(0,g.value),M=Math.max(0,u(a,f)+B);return i.set(a,M),M}let C=s(g.refId);if(!C)return i.set(a,f),f;let w=l(C,0),S=c(C);if(S==null||S<=0){let B=Math.max(0,w+g.offset);return i.set(a,B),B}let U=Math.max(0,w+S+g.offset);return i.set(a,U),U}finally{o.delete(a)}};return{resolveStartForElement:(a,f=0)=>l(a,Math.max(0,f)),resolveDurationForElement:a=>c(a)}}var ss="data-hf-authored-duration",as="data-hf-authored-end";function Fe(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}function pn(t){return Fe(t.getAttribute("data-duration"))??Fe(t.getAttribute(ss))}function wi(t){return Fe(t.getAttribute("data-end"))??Fe(t.getAttribute(as))}function hn(...t){let e=t.filter(n=>Number.isFinite(n??null));return e.length===0?null:Math.max(...e)}var Ni={composition:0,video:1,image:2,element:3,audio:4};function ls(t){if(t.length===0)return;let e=new Map;for(let s of t){let c=e.get(s.track)??new Set;c.add(s.kind),e.set(s.track,c)}if(!Array.from(e.values()).some(s=>s.size>1))return;let i=0,r=new Map,o=[...e.keys()].sort((s,c)=>s-c);for(let s of o){let c=e.get(s);if(c.size===1)r.set(`${s}:${[...c][0]}`,i++);else{let u=[...c].sort((l,a)=>(Ni[l]??99)-(Ni[a]??99));for(let l of u)r.set(`${s}:${l}`,i++)}}for(let s of t){let c=`${s.track}:${s.kind}`,u=r.get(c);u!=null&&(s.track=u)}}function dt(t){let e=String(t??"").trim();if(!e)return null;let n=e.toLowerCase();if(n.startsWith("data:")||n.startsWith("javascript:"))return null;try{return new URL(e,document.baseURI).toString()}catch{return e}}function Ci(t){let e=t.getAttribute("src")??t.getAttribute("data-src");if(e)return dt(e);let n=t.getAttribute("data-composition-src");if(n)return dt(n);let i=t.querySelector("img[src], video[src], audio[src], source[src]");return i?dt(i.getAttribute("src")):null}function us(t){let e=t.className;return typeof e!="string"?null:e.split(/\\s+/).map(n=>n.trim()).find(n=>n&&n!=="clip"&&!n.startsWith("__hf-"))??null}function cs(t){if(!t)return null;try{return new URL(t,document.baseURI).pathname.split("/").filter(Boolean).at(-1)??null}catch{return t.split(/[\\\\/]/).filter(Boolean).at(-1)??null}}function ds(t){let e=t.textContent?.replace(/\\s+/g," ").trim();return e?e.length>32?`${e.slice(0,31)}...`:e:null}function ct(t){let e=t.replace(/\\.[^.]+$/i,"").replace(/[-_]+/g," ").replace(/\\s+/g," ").trim();return e?e.replace(/\\b\\w/g,n=>n.toUpperCase()):t}function fs(t,e,n){let i=t.getAttribute("data-timeline-label")??t.getAttribute("data-label")??t.getAttribute("aria-label")??null;if(i?.trim())return i.trim();let r=t.getAttribute("data-composition-id");if(r)return ct(r);let o=t.id;if(o)return ct(o);let s=us(t);if(s)return ct(s);let c=cs(Ci(t));if(c)return ct(c);let u=ds(t);return u||`${ct(e)} ${n+1}`}function Mi(t){let n=window.__timelines??{},i=Ke({timelineRegistry:n,includeAuthoredTimingAttrs:!0}),r=W=>{if(!W)return null;let k=n[W]??null;if(!k||typeof k.duration!="function")return null;try{let O=Number(k.duration());return Number.isFinite(O)&&O>0?O:null}catch{return null}},o=W=>{let k=Fe(W.getAttribute("data-duration"));if(k!=null&&k>0)return k;let O=Fe(W.getAttribute("data-playback-start"))??Fe(W.getAttribute("data-media-start"))??0;return Number.isFinite(W.duration)&&W.duration>O?Math.max(0,W.duration-O):null},s=()=>{let W=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(W.length===0)return null;let k=0;for(let O of W){let ie=i.resolveStartForElement(O,0);if(!Number.isFinite(ie))continue;let ee=o(O);ee==null||ee<=0||(k=Math.max(k,Math.max(0,ie)+ee))}return k>0?k:null},c=W=>{let k=W.trim().toLowerCase();return!(!k||k==="main"||k.includes("caption")||k.includes("ambient"))},u=(W,k)=>{let O=[],ie=null,ee=null,z=null,q=W.parentElement;for(;q;){let V=q.getAttribute("data-composition-id");V&&(O.push(V),!z&&q!==k&&(z=V),ie==null&&(ie=i.resolveStartForElement(q,0)),ee==null&&(ee=Fe(q.getAttribute("data-duration"))??r(V)??null)),q=q.parentElement}return{parentCompositionId:z,compositionAncestors:O.reverse(),inheritedStart:ie,inheritedDuration:ee}},l=document.querySelector("[data-composition-id]"),a=Array.from(document.querySelectorAll("[data-composition-id]")),f=l?.getAttribute("data-composition-id")??null,p=l?i.resolveStartForElement(l,0):0,g=s(),C=g!=null?Math.max(0,g-Math.max(0,p)):null,w=r(f),S=pn(l??document.body),U=hn(...a.filter(W=>W!==l).map(W=>{let k=i.resolveStartForElement(W,0),O=i.resolveDurationForElement(W)??r(W.getAttribute("data-composition-id"))??null;return!Number.isFinite(k)||O==null||O<=0?null:Math.max(0,k)+O})),B=U!=null?Math.max(0,U-Math.max(0,p)):null,M=typeof w=="number"&&Number.isFinite(w)&&w>0?w:null,X=typeof S=="number"&&Number.isFinite(S)&&S>0?S:null,D=typeof C=="number"&&Number.isFinite(C)&&C>0?C:null,F=typeof B=="number"&&Number.isFinite(B)&&B>0?B:null,x=hn(D,F),b=M!=null&&x!=null&&M>x+1,E=X??(b?x:hn(M,D,F)),N=E!=null?Math.min(E,t.maxTimelineDurationSeconds):null,R=(N!=null?p+N:null)??(typeof g=="number"&&Number.isFinite(g)&&g>0?g:null),P=(W,k)=>!Number.isFinite(k)||k<=0?0:R==null||!Number.isFinite(R)?k:!Number.isFinite(W)||W>=R?0:Math.max(0,Math.min(k,R-W)),J=[],_=[],ce=Array.from(document.querySelectorAll("[data-start], [data-track-index], [data-composition-id], video, audio, img")),ge=0;for(let W=0;W<ce.length;W+=1){let k=ce[W];if(k===l||["SCRIPT","STYLE","LINK","META","TEMPLATE","NOSCRIPT"].includes(k.tagName))continue;let O=u(k,l),ie=i.resolveStartForElement(k,O.inheritedStart??0),ee=k.getAttribute("data-composition-id"),z=pn(k);if((z==null||z<=0)&&ee&&ee!==f&&(z=r(ee)),(z==null||z<=0)&&k instanceof HTMLMediaElement){let be=Fe(k.getAttribute("data-playback-start"))??Fe(k.getAttribute("data-media-start"))??0;Number.isFinite(k.duration)&&k.duration>0&&(z=Math.max(0,k.duration-be))}if(z==null||z<=0){let be=O.inheritedDuration;if(be!=null&&be>0){let me=(O.inheritedStart??0)+be;z=Math.max(0,me-ie)}}if(z==null||z<=0||(z=P(ie,z),z<=0))continue;let q=ie+z;ge=Math.max(ge,q);let V=k.tagName.toLowerCase(),Re=ee&&ee!==f?"composition":V==="video"?"video":V==="audio"?"audio":V==="img"?"image":"element";J.push({id:k.id||ee||null,label:fs(k,Re,J.length),start:ie,duration:z,track:Number.parseInt(k.getAttribute("data-track-index")??k.getAttribute("data-track")??String(W),10)||0,kind:Re,tagName:V,compositionId:k.getAttribute("data-composition-id"),compositionAncestors:O.compositionAncestors,parentCompositionId:O.parentCompositionId,nodePath:null,compositionSrc:dt(k.getAttribute("data-composition-src")),assetUrl:Ci(k),timelineRole:k.getAttribute("data-timeline-role"),timelineLabel:k.getAttribute("data-timeline-label"),timelineGroup:k.getAttribute("data-timeline-group"),timelinePriority:Fe(k.getAttribute("data-timeline-priority"))})}let $=new Set(J.map(W=>W.id)),G=l?.getAttribute("data-composition-id")??null,I=G?n[G]??null:null;if(I&&l){let W=I;if(typeof W.getChildren=="function")try{let k=W.getChildren(!0,!0,!1)??[],O=new Map;for(let z of l.children){let q=z;if(!q.id)continue;let V=q.tagName.toLowerCase();V==="script"||V==="style"||V==="link"||O.set(q,{id:q.id,start:1/0,end:-1/0})}let ie=z=>{let q=z;for(;q;){if(O.has(q))return q;if(q===l)return null;q=q.parentElement}return null};for(let z of k){if(typeof z.targets!="function"||typeof z.startTime!="function"||typeof z.duration!="function")continue;let q=z.startTime(),V=z.parent;for(;V&&V!==I&&typeof V.startTime=="function";)q+=V.startTime(),V=V.parent;let Re=q+z.duration();if(!(!Number.isFinite(q)||!Number.isFinite(Re)))for(let be of z.targets()){if(!(be instanceof Element))continue;let ke=ie(be);if(!ke)continue;let me=O.get(ke);me&&(me.start=Math.min(me.start,q),me.end=Math.max(me.end,Re))}}let ee=J.length>0?Math.max(...J.map(z=>z.track))+1:0;for(let[z,q]of O){if(q.start===1/0||q.end===-1/0)continue;let V=z;if($.has(V.id))continue;let Re=Math.max(0,q.end-q.start);if(Re<=0)continue;let be=P(q.start,Re);be<=0||(ge=Math.max(ge,q.start+be),J.push({id:V.id,label:V.getAttribute("data-timeline-label")??V.getAttribute("data-label")??V.getAttribute("aria-label")??V.id,start:q.start,duration:be,track:Number.parseInt(V.getAttribute("data-track-index")??V.getAttribute("data-track")??"",10)||ee,kind:"element",tagName:V.tagName.toLowerCase(),compositionId:V.getAttribute("data-composition-id"),compositionAncestors:G?[G]:[],parentCompositionId:G,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:V.getAttribute("data-timeline-role"),timelineLabel:V.getAttribute("data-timeline-label"),timelineGroup:V.getAttribute("data-timeline-group"),timelinePriority:Fe(V.getAttribute("data-timeline-priority"))}),$.add(V.id))}}catch(k){L("runtime.timeline.site1",k)}}if(l&&N!=null&&N>0){let W=J.length>0?Math.max(...J.map(k=>k.track))+1:0;for(let k of l.children){let O=k;if(!O.id||$.has(O.id))continue;let ie=O.getAttribute("data-timeline-role");if(ie!=="overlay"&&ie!=="persistent-overlay")continue;let ee=O.tagName.toLowerCase();if(ee==="script"||ee==="style"||ee==="link"||ee==="meta"||window.getComputedStyle(O).display==="none")continue;let q=P(0,N);q<=0||(ge=Math.max(ge,q),J.push({id:O.id,label:O.getAttribute("data-timeline-label")??O.getAttribute("data-label")??O.getAttribute("aria-label")??O.id,start:0,duration:q,track:Number.parseInt(O.getAttribute("data-track-index")??O.getAttribute("data-track")??"",10)||W,kind:"element",tagName:ee,compositionId:O.getAttribute("data-composition-id"),compositionAncestors:G?[G]:[],parentCompositionId:G,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:ie,timelineLabel:O.getAttribute("data-timeline-label"),timelineGroup:O.getAttribute("data-timeline-group"),timelinePriority:Fe(O.getAttribute("data-timeline-priority"))}),$.add(O.id))}}ls(J);for(let W of a){if(W===l)continue;let k=W.getAttribute("data-composition-id");if(!k||!c(k))continue;let O=i.resolveStartForElement(W,0),ie=pn(W);if((ie==null||ie<=0)&&wi(W)!=null){let V=wi(W);ie=Math.max(0,V-O)}let ee=r(k),z=ie&&ie>0?ie:ee;if(z==null||z<=0)continue;let q=P(O,z);q<=0||_.push({id:k,label:W.getAttribute("data-label")??k,start:O,duration:q,thumbnailUrl:dt(W.getAttribute("data-thumbnail-url")),avatarName:null})}let Z=Math.max(1,Math.min(Math.max(ge||1,N??0),t.maxTimelineDurationSeconds));return{source:"hf-preview",type:"timeline",durationInFrames:b&&X==null?Number.POSITIVE_INFINITY:Math.max(1,Math.round(Z*Math.max(1,t.canonicalFps))),clips:J,scenes:_,compositionWidth:Fe(l?.getAttribute("data-width"))??1920,compositionHeight:Fe(l?.getAttribute("data-height"))??1080}}var ue=Vo(Zr(),1),Xr=ue.default,Mc=ue.default.stringify,Tc=ue.default.fromJSON,kc=ue.default.plugin,vc=ue.default.parse,Dc=ue.default.list,_c=ue.default.document,Rc=ue.default.comment,Lc=ue.default.atRule,Bc=ue.default.rule,Oc=ue.default.decl,Pc=ue.default.root,Ic=ue.default.CssSyntaxError,Wc=ue.default.Declaration,Hc=ue.default.Container,qc=ue.default.Processor,Uc=ue.default.Document,zc=ue.default.Comment,jc=ue.default.Warning,Gc=ue.default.AtRule,Vc=ue.default.Result,$c=ue.default.Input,Kc=ue.default.Rule,Jc=ue.default.Root,Qc=ue.default.Node;function qn(t){return t.replace(/[.*+?^${}()|[\\]\\\\]/g,"\\\\$&")}function La(t){return t.replace(/\\\\/g,"\\\\\\\\").replace(/"/g,\'\\\\"\')}function Ba(t,e,n){let i=Oa(t,e,n),r=i.trim();if(!r||/^(html|body|:root|\\*)$/i.test(r))return t;let o=new RegExp(`\\\\[\\\\s*data-composition-id\\\\s*=\\\\s*(["\'])${qn(n)}\\\\1\\\\s*\\\\]`,"g");if(o.test(r))return i.replace(o,e);let s=i.match(/^\\s*/)?.[0]??"",c=i.match(/\\s*$/)?.[0]??"";return`${s}${e} ${r}${c}`}function Oa(t,e,n){let i=qn(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 t.replace(new RegExp(`${r}(?:${o})+`,"g"),e).replace(new RegExp(`(?:${o})+${r}`,"g"),e)}var Pa=new Set(["keyframes","-webkit-keyframes","font-face"]);function Ia(t){return t?.type==="atrule"}function Wa(t){let e=t.parent;for(;e;){if(Ia(e)&&Pa.has(e.name.toLowerCase()))return!0;e=e.parent}return!1}function Un(t,e,n){let i=e.trim();if(!t||!i)return t;let r=n||`[data-composition-id="${La(i)}"]`,o=Xr.parse(t);return o.walkRules(s=>{Wa(s)||(s.selectors=s.selectors.map(c=>Ba(c,r,i)))}),o.toResult({map:!1}).css}function eo(t,e,n="[HyperFrames] composition script error:",i,r=e){let o=JSON.stringify(e),s=JSON.stringify(r),c=JSON.stringify(n),u=qn(e),l=JSON.stringify(i??null),a=JSON.stringify(String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${u}"|\'${u}\')\\s*\\]`),f=JSON.stringify(String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`);return`(function(){\n var __hfCompId = ${o};\n var __hfTimelineCompId = ${s};\n var __hfErrorLabel = ${c};\n var __hfEscapeAttr = function(value) {\n return (value + "").replace(/\\\\\\\\/g, "\\\\\\\\\\\\\\\\").replace(/"/g, "\\\\\\\\\\\\"");\n };\n var __hfRootSelector = ${l} || (__hfCompId\n ? \'[data-composition-id="\' + __hfEscapeAttr(__hfCompId) + \'"]\'\n : "");\n var __hfRoot = null;\n var __hfRootSelectorPattern = ${a};\n var __hfTimingSelectorPattern = ${f};\n var __hfNormalizeSelector = function(selector) {\n if (!__hfCompId || typeof selector !== "string") return selector;\n return selector\n .replace(new RegExp(__hfRootSelectorPattern + \'(?:\' + __hfTimingSelectorPattern + \')+\', \'g\'), __hfRootSelector)\n .replace(new RegExp(\'(?:\' + __hfTimingSelectorPattern + \')+\' + __hfRootSelectorPattern, \'g\'), __hfRootSelector);\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 (root.id === idValue) return root;\n if (typeof root.querySelector !== "function") return null;\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 var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\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.slice.call(root.querySelectorAll(selector));\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 && __hfCompId ? byComp[__hfCompId] : null;\n return scoped ? Object.assign({}, scoped) : {};\n },\n });\n var __hfRun = function() {\n try {\n (function(document, gsap, window, __hyperframes) {\n${t}\n }).call(window, __hfScopedDocument, __hfScopedGsap, __hfScopedWindow, __hfScopedHyperframes);\n } catch (_err) {\n console.error(__hfErrorLabel, __hfCompId, _err);\n }\n };\n __hfFindRoot();\n __hfRun();\n})();`}function to(){if(typeof document>"u")return{};let t=zn(document.documentElement),e=Ha();return{...t,...e}}function zn(t){if(!t)return{};let e=t.getAttribute("data-composition-variables");if(!e)return{};let n;try{n=JSON.parse(e)}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 Ha(){if(typeof window>"u")return{};let t=window.__hfVariables;return!t||typeof t!="object"||Array.isArray(t)?{}:t}var qa=8e3,Ua=/^(?![a-zA-Z][a-zA-Z\\d+\\-.]*:)(?!\\/\\/)(?!\\/)(?!\\.\\.?\\/).+/,za=t=>new Promise(e=>{let n=!1,i=Date.now(),r=null,o=s=>{n||(n=!0,r!=null&&window.clearTimeout(r),e({status:s,elapsedMs:Math.max(0,Date.now()-i)}))};t.addEventListener("load",()=>o("load"),{once:!0}),t.addEventListener("error",()=>o("error"),{once:!0}),r=window.setTimeout(()=>o("timeout"),qa)});function jn(t){for(;t.firstChild;)t.removeChild(t.firstChild);t.textContent=""}function no(t,e){let n=t.trim();if(!n)return t;try{return Ua.test(n)?new URL(n,document.baseURI).toString():e?new URL(n,e).toString():new URL(n,document.baseURI).toString()}catch{return t}}function ja(t){let e=t.getAttribute("data-variable-values");if(!e)return{};let n;try{n=JSON.parse(e)}catch{return{}}return!n||typeof n!="object"||Array.isArray(n)?{}:n}async function Gn(t){let e=null;t.hostCompositionId&&(e=Array.from(t.sourceNode.querySelectorAll("[data-composition-id]")).find(a=>a.getAttribute("data-composition-id")===t.hostCompositionId)??null);let n=e??t.sourceNode,i=e?.getAttribute("data-composition-id")?.trim()||t.hostCompositionId||null;if(t.headStyles)for(let l of t.headStyles){let a=l.cloneNode(!0);a instanceof HTMLStyleElement&&(i&&(a.textContent=Un(a.textContent||"",i)),document.head.appendChild(a),t.injectedStyles.push(a))}let r=Array.from(n.querySelectorAll("style"));for(let l of r){let a=l.cloneNode(!0);a instanceof HTMLStyleElement&&(i&&(a.textContent=Un(a.textContent||"",i)),document.head.appendChild(a),t.injectedStyles.push(a))}let o=[];if(t.headScripts)for(let l of t.headScripts){let a=l.getAttribute("type")?.trim()??"",f=l.getAttribute("src")?.trim()??"";if(f){let p=no(f,t.compositionUrl);o.push({kind:"external",src:p,type:a})}else{let p=l.textContent?.trim()??"";p&&o.push({kind:"inline",content:p,type:a,scopeCompositionId:i})}}let s=Array.from(n.querySelectorAll("script")),c=[...o];for(let l of s){let a=l.getAttribute("type")?.trim()??"",f=l.getAttribute("src")?.trim()??"";if(f){let p=no(f,t.compositionUrl);c.push({kind:"external",src:p,type:a})}else{let p=l.textContent?.trim()??"";p&&c.push({kind:"inline",content:p,type:a,scopeCompositionId:i})}l.parentNode?.removeChild(l)}let u=Array.from(n.querySelectorAll("style"));for(let l of u)l.parentNode?.removeChild(l);if(e){let l=document.importNode(e,!0),a=e.getAttribute("data-width"),f=e.getAttribute("data-height"),p=t.parseDimensionPx(a),g=t.parseDimensionPx(f);for(a&&t.host.setAttribute("data-width",a),f&&t.host.setAttribute("data-height",f),p&&t.host instanceof HTMLElement&&(t.host.style.width=p),g&&t.host instanceof HTMLElement&&(t.host.style.height=g);l.firstChild;)t.host.appendChild(l.firstChild)}else t.hasTemplate?t.host.appendChild(document.importNode(n,!0)):t.host.innerHTML=t.fallbackBodyInnerHtml;if(i){let l={...t.declaredVariableDefaults??{},...ja(t.host)};Object.keys(l).length>0&&(window.__hfVariablesByComp||(window.__hfVariablesByComp={}),window.__hfVariablesByComp[i]=l)}for(let l of c){let a=document.createElement("script");if(l.type&&(a.type=l.type),a.async=!1,l.kind==="external"?a.src=l.src:l.type.toLowerCase()==="module"?a.textContent=l.content:l.scopeCompositionId?a.textContent=eo(l.content,l.scopeCompositionId):a.textContent=`(function(){${l.content}})();`,document.body.appendChild(a),t.injectedScripts.push(a),l.kind==="external"){let f=await za(a);f.status!=="load"&&t.onDiagnostic?.({code:"external_composition_script_load_issue",details:{hostCompositionId:t.hostCompositionId,hostCompositionSrc:t.hostCompositionSrc,resolvedScriptSrc:l.src,loadStatus:f.status,elapsedMs:f.elapsedMs}})}}}async function io(t){let e=Array.from(document.querySelectorAll("[data-composition-id]:not([data-composition-src])")).filter(n=>{if(n.children.length>0)return!1;let i=n.getAttribute("data-composition-id");return i?!!document.querySelector(`template#${CSS.escape(i)}-template`):!1});if(e.length!==0)for(let n of e){let i=n.getAttribute("data-composition-id"),r=document.querySelector(`template#${CSS.escape(i)}-template`);jn(n),await Gn({host:n,hostCompositionId:i,hostCompositionSrc:`template#${i}-template`,sourceNode:r.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:null,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,onDiagnostic:t.onDiagnostic})}}async function ro(t){let e=Array.from(document.querySelectorAll("[data-composition-src]"));e.length!==0&&await Promise.all(e.map(async n=>{let i=n.getAttribute("data-composition-src");if(!i)return;let r=null;try{r=new URL(i,document.baseURI)}catch{r=null}jn(n);try{let o=n.getAttribute("data-composition-id"),s=o!=null?document.querySelector(`template#${CSS.escape(o)}-template`):null;if(s){await Gn({host:n,hostCompositionId:o,hostCompositionSrc:i,sourceNode:s.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:r,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,onDiagnostic:t.onDiagnostic});return}let c=await fetch(i);if(!c.ok)throw new Error(`HTTP ${c.status}`);let u=await c.text(),a=new DOMParser().parseFromString(u,"text/html"),f=(o?a.querySelector(`template#${CSS.escape(o)}-template`):null)??a.querySelector("template"),p=f?f.content:a.body,g=f?void 0:Array.from(a.head.querySelectorAll("style")),C=f?void 0:Array.from(a.head.querySelectorAll("script"));await Gn({host:n,hostCompositionId:o,hostCompositionSrc:i,sourceNode:p,hasTemplate:!!f,fallbackBodyInnerHtml:a.body.innerHTML,compositionUrl:r,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,headStyles:g,headScripts:C,declaredVariableDefaults:zn(a.documentElement),onDiagnostic:t.onDiagnostic})}catch(o){t.onDiagnostic?.({code:"external_composition_load_failed",details:{hostCompositionId:n.getAttribute("data-composition-id"),hostCompositionSrc:i,errorMessage:o instanceof Error?o.message:"unknown_error"}}),jn(n)}}))}function Ga(t){return t instanceof HTMLElement?t.dataset.captionWrapper!=="true"?t:t.querySelector(":scope > span")??null:null}function Va(){let t=[],e=document.querySelectorAll(".caption-group");for(let n of e)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&&t.push(r)}return t}function $a(t){let e=t.parentElement;if(e?.dataset.captionWrapper==="true")return e;let n=document.createElement("span");return n.style.display="inline-block",n.dataset.captionWrapper="true",t.parentNode?.insertBefore(n,t),n.appendChild(t),n}function Vn(){let t=window.gsap;t&&document.querySelectorAll(".caption-group").length!==0&&fetch("caption-overrides.json").then(e=>e.ok?e.json():null).then(e=>{if(!e||!Array.isArray(e)||e.length===0)return;let n=Va();for(let i of e){let r=null;if(i.wordId&&(r=Ga(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 u=t.getTweensOf(r).filter(a=>a.vars.color!==void 0).sort((a,f)=>a.startTime()-f.startTime()),l=u.length>0?String(u[0].vars.color):"";for(let a of u)String(a.vars.color)===l?i.dimColor&&(a.vars.color=i.dimColor):i.activeColor&&(a.vars.color=i.activeColor);i.dimColor&&t.set(r,{color:i.dimColor})}if(Object.keys(s).length>0&&t.set(r,s),Object.keys(o).length>0){let c=$a(r);t.set(c,o)}}}).catch(()=>{})}var Yt=class{constructor(e){Se(this,"_baseTime",0);Se(this,"_playStartMs",null);Se(this,"_rate",1);Se(this,"_duration",1/0);Se(this,"_nowMs");Se(this,"_audioSource",null);this._baseTime=e?.initialTime??0,this._rate=e?.rate??1,this._duration=e?.duration??1/0,this._nowMs=e?.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)/this._rate+o)}if(i!==null)return Number.isFinite(this._duration)&&i>=this._duration?this._duration:Math.max(0,i)}let e=(this._nowMs()-this._playStartMs)/1e3,n=this._baseTime+e*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(e){let n=Number.isFinite(this._duration)?Math.max(0,Math.min(e,this._duration)):Math.max(0,e);this._baseTime=n,this._playStartMs!==null&&(this._playStartMs=this._nowMs())}isPlaying(){return this._playStartMs!==null}setRate(e){let n=Number.isFinite(e)&&e>0?Math.max(.1,Math.min(5,e)):1;this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._rate=n}getRate(){return this._rate}setDuration(e){this._duration=Number.isFinite(e)&&e>0?e:1/0,this._baseTime>this._duration&&(this._baseTime=this._duration)}getDuration(){return this._duration}attachAudioSource(e){this._audioSource=e}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:e}=this._audioSource;if(!e.paused&&Number.isFinite(e.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 oo(t){return!Number.isFinite(t)||t<=0?1:t}var Zt=class{constructor(){Se(this,"_ctx",null);Se(this,"_bufferCache",new Map);Se(this,"_activeSources",[]);Se(this,"_masterGain",null);Se(this,"_rateAnchorCtx",0);Se(this,"_rateAnchorComp",0);Se(this,"_rate",1);Se(this,"_paused",!0);Se(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(e){let n=e.currentSrc||e.getAttribute("src");if(!n)return null;if(this._bufferCache.has(n))return this._bufferCache.get(n);if(!this._ctx)return null;try{let r=await(await fetch(n)).arrayBuffer(),o=await this._ctx.decodeAudioData(r);return this._bufferCache.set(n,o),o}catch(i){return L("webAudioTransport.decode",i),null}}startGeneration(){return this._playGeneration+=1,this._playGeneration}currentGeneration(){return this._playGeneration}async schedulePlayback(e,n,i,r,o,s,c,u=1){if(!this._ctx||!this._masterGain||c!==this._playGeneration)return null;try{if(this._ctx.state==="suspended"&&await this._ctx.resume(),c!==this._playGeneration)return null;let l=oo(u),a=this._ctx.createBufferSource();a.buffer=n,a.playbackRate.value=l;let f=this._ctx.createGain();f.gain.value=s,a.connect(f),f.connect(this._masterGain);let p=o-i,g=this._ctx.currentTime;if(this._rate=l,this._rateAnchorCtx=g,this._rateAnchorComp=o,p>=0)a.start(0,p+r);else{let S=-p/l;a.start(g+S,r)}let C=e.muted;e.muted=!0;let w={el:e,sourceNode:a,gainNode:f,compositionStart:i,mediaStart:r,scheduledAt:g,priorMuted:C};return this._activeSources.push(w),this._paused=!1,w}catch(l){return L("webAudioTransport.schedule",l),null}}setRate(e){let n=oo(e);if(n!==this._rate){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)}}}stopAll(){for(let e of this._activeSources){try{e.sourceNode.stop(),e.sourceNode.disconnect(),e.gainNode.disconnect()}catch{}e.el.muted=e.priorMuted}this._activeSources=[],this._paused=!0}setVolume(e){this._masterGain&&(this._masterGain.gain.value=Math.max(0,Math.min(1,e)))}setMuted(e){this._masterGain&&(this._masterGain.gain.value=e?0:1)}isActive(){return this._activeSources.length>0&&!this._paused}destroy(){if(this.stopAll(),this._bufferCache.clear(),this._ctx)try{this._ctx.close()}catch{}this._ctx=null,this._masterGain=null}};var so="data-hf-authored-duration",ao="data-hf-authored-end";function lo(){let t=Fi(),e=window,n=null,i=null,r=[],o=new Set,s=null;if(typeof e.__hfRuntimeTeardown=="function")try{e.__hfRuntimeTeardown()}catch(d){L("runtime.init.site1",d)}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 c=d=>{r.push(d)},u=(d,m,h)=>{let y=h??`${d}:${JSON.stringify(m)}`;o.has(y)||(o.add(y),Ee({source:"hf-preview",type:"diagnostic",code:d,details:m}))},l=d=>{let m={scale:1,focusX:960,focusY:540},h=[],y=[],A={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:()=>({...A,time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying()})}},a=1/60,f=.75,p=2,g=.05,C=100,w=240,S=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??"")}},U=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"}},B=d=>{if(d==null||d.trim()==="")return null;let m=Number.parseFloat(d);return!Number.isFinite(m)||m<=0?null:`${m}px`},M=()=>{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.length===0?null:m.find(h=>!h.parentElement?.closest("[data-composition-id]"))??m[0]??null},X=()=>{let d=M();if(!d)return;let m=B(d.getAttribute("data-width")),h=B(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)},D=()=>{let d=M(),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"),A=h.getAttribute("data-end");y!=null&&!h.hasAttribute(so)&&h.setAttribute(so,y),A!=null&&!h.hasAttribute(ao)&&h.setAttribute(ao,A),h.removeAttribute("data-duration"),h.removeAttribute("data-end")}},F=()=>{let d=M();if(!d)return;d.style.position||(d.style.position="relative"),d.style.overflow="hidden";let m=B(d.getAttribute("data-width")),h=B(d.getAttribute("data-height"));m&&(d.style.width=m),h&&(d.style.height=h);let y=Array.from(d.children);for(let A of y){let v=A.tagName.toLowerCase();if(v==="script"||v==="style"||v==="link"||v==="meta"||!A.hasAttribute("data-start"))continue;let j=(A.style.top==="0px"||A.style.top==="0")&&(A.style.left==="0px"||A.style.left==="0")&&A.style.width==="100%"&&A.style.height==="100%",ne=/translate\\(\\s*-50%\\s*,\\s*-50%\\s*\\)/.test(A.style.transform);if(j&&ne&&!A.hasAttribute("data-width")&&!A.hasAttribute("data-height")){let Le=A.style.top,ae=A.style.left,Pe=A.style.width,oe=A.style.height;A.style.top="",A.style.left="",A.style.width="",A.style.height="";let Q=window.getComputedStyle(A);Q.top!=="auto"||Q.bottom!=="auto"||Q.left!=="auto"||Q.right!=="auto"||Q.width!=="0px"||Q.height!=="0px"||(A.style.top=Le,A.style.left=ae,A.style.width=Pe,A.style.height=oe)}let te=window.getComputedStyle(A),se=te.position;if(se!=="absolute"&&se!=="fixed"&&(A.style.position="absolute"),!!A.style.top||!!A.style.bottom||te.top!=="auto"||te.bottom!=="auto"||(A.style.top="0"),!!A.style.left||!!A.style.right||te.left!=="auto"||te.right!=="auto"||(A.style.left="0"),v!=="audio"){let Le=B(A.getAttribute("data-width")),ae=B(A.getAttribute("data-height")),Pe=te.width!=="0px"&&te.width!=="auto",oe=te.height!=="0px"&&te.height!=="auto";Le?!A.style.width&&!Pe&&(A.style.width=Le):!A.style.width&&te.width==="0px"&&(A.style.width="100%"),ae?!A.style.height&&!oe&&(A.style.height=ae):!A.style.height&&te.height==="0px"&&(A.style.height="100%")}}},x=(d,m=0,h)=>Ke({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:h?.includeAuthoredTimingAttrs??!0}).resolveStartForElement(d,m),b=(d,m)=>Ke({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:m?.includeAuthoredTimingAttrs??!0}).resolveDurationForElement(d),E=!!document.querySelector("[data-composition-src]"),N=!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`)){N=!0;break}}}let T=!E&&!N,R=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}},P=d=>typeof d=="number"&&Number.isFinite(d)&&d>a,J=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},_=()=>{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=x(h,0);if(!Number.isFinite(y))continue;let A=J(h);A==null||A<=a||(m=Math.max(m,Math.max(0,y)+A))}return m>a?m:null},ce=()=>{let d=M();if(!d)return null;let m=window.__timelines??{},h=Ke({timelineRegistry:m,includeAuthoredTimingAttrs:!0}),y=0,A=Array.from(d.querySelectorAll("[data-composition-id][data-start]"));for(let v of A){if(!(v instanceof Element)||v.parentElement?.closest("[data-composition-id]")!==d)continue;let ne=h.resolveStartForElement(v,0),te=h.resolveDurationForElement(v);!Number.isFinite(ne)||te==null||te<=0||(y=Math.max(y,Math.max(0,ne)+te))}return y>a?y:null},ge=()=>{let d=_();return typeof d!="number"||!Number.isFinite(d)||d<=a?null:d},$=d=>P(d)?Math.max(a,d*f):a,G=(d,m=0)=>{let h=R(d),y=ge(),A=ce(),v=Math.max(y??0,A??0),j=Number.isFinite(m)&&m>a?m:0,ne=0;P(h)?ne=Math.max(h,v,j):P(v)?ne=Math.max(v,j):ne=j;let te=Math.max(1,Number(t.maxTimelineDurationSeconds)||1800);return ne>0?Math.max(0,Math.min(ne,te)):0},I=()=>{let d=window.__timelines??{},m=Ke({timelineRegistry:d,includeAuthoredTimingAttrs:!0}),h=ge(),y=ce(),A=Math.max(h??0,y??0)||null,v=$(A),j=oe=>{let Q=document.querySelector(`[data-composition-id="${CSS.escape(oe)}"]`);return Q?m.resolveStartForElement(Q,0):0},ne=oe=>{let Q=window.gsap;if(!Q||typeof Q.timeline!="function")return null;let de=Q.timeline({paused:!0});for(let he of oe)de.add(he.timeline,j(he.compositionId));return de},te=(oe,Q)=>{if(!P(oe))return null;let de=window.gsap;if(!de||typeof de.timeline!="function")return null;let he=de.timeline({paused:!0});if(Q)try{he.add(Q,0)}catch(le){L("runtime.init.site2",le)}let ye=he;if(typeof ye.to=="function")try{ye.to({},{duration:oe})}catch(le){L("runtime.init.site3",le)}return he},se=(oe,Q)=>{let de=oe;if(typeof de.getChildren!="function")return[];try{let he=de.getChildren(!0,!0,!0)??[];if(!Array.isArray(he))return[];let ye=[];for(let le of Q)if(!he.some(ve=>ve===le.timeline))try{let ve=j(le.compositionId);oe.add(le.timeline,ve),ye.push(le.compositionId)}catch(ve){L("runtime.init.site4",ve)}return ye}catch{return[]}},Ne=M(),pe=Ne?.getAttribute("data-composition-id")??null;if(!pe)return{timeline:null};let Ce=d[pe]??null,ae=(()=>{if(!Ne)return[];let oe=new Set,Q=Array.from(Ne.querySelectorAll("[data-composition-id]")),de=[];for(let he of Q){let ye=he.getAttribute("data-composition-id");if(!ye||ye===pe||oe.has(ye))continue;oe.add(ye);let le=d[ye]??null;if(!le||typeof le.play!="function"||typeof le.pause!="function")continue;let Me=R(le);de.push({compositionId:ye,timeline:le,durationSeconds:Me??0})}return de})(),Pe=oe=>{for(let Q of oe){let de=Q.timeline;if(typeof de.paused=="function")try{de.paused(!1)}catch(he){L("runtime.init.site5",he)}}};if(ae.length>0&&Pe(ae),Ce){let oe=ae.length>0?se(Ce,ae):[];if((ae.length>0||!document.querySelector("[data-composition-id]:not([data-composition-id=\'"+pe+"\'])"))&&(Z=!0),oe.length>0)try{let le=Ce.time();Ce.seek(le,!1)}catch{}let Q=R(Ce);if(!P(Q)&&ae.length>0){let le=ae.map(Io=>Io.compositionId),Me=ne(ae),ve=R(Me);if(Me&&P(ve))return{timeline:Me,selectedTimelineIds:le,selectedDurationSeconds:ve,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_unusable_fallback",details:{rootCompositionId:pe,rootDurationSeconds:Q,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:v,selectedDurationSeconds:ve,mediaDurationFloorSeconds:h,authoredCompositionDurationFloorSeconds:y,selectedTimelineIds:le,autoNestedChildren:oe}}};let ln=te(A??0,Ce),un=R(ln);if(ln&&P(un))return{timeline:ln,selectedTimelineIds:[pe],selectedDurationSeconds:un,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:pe,rootDurationSeconds:Q,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:h,authoredCompositionDurationFloorSeconds:y,selectedDurationSeconds:un,selectedTimelineIds:[pe],autoNestedChildren:oe}}}}if(!P(Q)&&ae.length===0){let le=te(A??0,Ce),Me=R(le);if(le&&P(Me))return{timeline:le,selectedTimelineIds:[pe],selectedDurationSeconds:Me,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:pe,rootDurationSeconds:Q,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:h,authoredCompositionDurationFloorSeconds:y,selectedDurationSeconds:Me,selectedTimelineIds:[pe]}}}}let de=Ne?.getAttribute("data-duration"),he=de?parseFloat(de):null,ye=Math.max(P(he)?he:0,y??0);if(ye>0&&P(ye)&&P(Q)&&ye>=Q+.5){let le=Ce;if(typeof le.to=="function")try{le.to({},{duration:0},ye)}catch(ve){L("runtime.init.site6",ve)}let Me=R(Ce);if(P(Me))return{timeline:Ce,selectedTimelineIds:[pe],selectedDurationSeconds:Me,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_padded_to_declared_duration",details:{rootCompositionId:pe,rootDurationSeconds:Q,rootDeclaredDur:he,authoredCompositionDurationFloorSeconds:y,newDur:Me}}}}return{timeline:Ce,selectedTimelineIds:[pe],selectedDurationSeconds:Q,mediaDurationFloorSeconds:h,diagnostics:oe.length>0?{code:"root_timeline_auto_nested_children",details:{rootCompositionId:pe,selectedDurationSeconds:Q,autoNestedChildren:oe}}:void 0}}if(ae.length>0){let oe=ae.map(he=>he.compositionId),Q=ne(ae),de=R(Q);if(Q)return{timeline:Q,selectedTimelineIds:oe,selectedDurationSeconds:de,mediaDurationFloorSeconds:h,diagnostics:{code:"root_timeline_missing_fallback",details:{rootCompositionId:pe,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:v,selectedDurationSeconds:de,mediaDurationFloorSeconds:h,selectedTimelineIds:oe}}}}return{timeline:null}},Z=!1,xe=()=>{if(!T)return!1;let d=t.capturedTimeline,m=R(d),h=P(m);if(d&&h&&Z)return!1;let y=I();if(!y.timeline)return!1;if(d&&d===y.timeline)return typeof d.timeScale=="function"&&d.timeScale(t.playbackRate),!1;t.capturedTimeline=y.timeline,typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);let A=G(t.capturedTimeline,0);if(A>0){try{H.setDuration(A)}catch{}t.capturedTimeline.pause()}return y.diagnostics&&Ee({source:"hf-preview",type:"diagnostic",code:y.diagnostics.code,details:y.diagnostics.details}),Ee({source:"hf-preview",type:"diagnostic",code:"timeline_bound",details:{selectedTimelineIds:y.selectedTimelineIds??[],selectedDurationSeconds:y.selectedDurationSeconds??null,mediaDurationFloorSeconds:y.mediaDurationFloorSeconds??null}}),!0},we=()=>{let d=M();if(!(d instanceof HTMLElement))return;let m=d.getBoundingClientRect(),h=Number(d.getAttribute("data-width")),y=Number(d.getAttribute("data-height")),A=window.getComputedStyle(d),v=Number.isFinite(h)&&h>0&&Number.isFinite(y)&&y>0,j=m.width<=0||m.height<=0||d.clientWidth<=0||d.clientHeight<=0;!v||!j||u("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:A.display,visibility:A.visibility,overflow:A.overflow},`root-stage-layout-zero:${d.getAttribute("data-composition-id")??"unknown"}`)},W=()=>{t.tornDown||(s!=null&&window.cancelAnimationFrame(s),s=window.requestAnimationFrame(()=>{s=null,we()}))},k=()=>{n=d=>{let m=S(d.error??d.message).slice(0,w);if(!m)return;let h=U(m);Ee({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}})},i=d=>{let m=S(d.reason).slice(0,w);if(!m)return;let h=U(m);Ee({source:"hf-preview",type:"diagnostic",code:`${h.code}_unhandled_rejection`,details:{category:`${h.category}-unhandled-rejection`,message:m}})},window.addEventListener("error",n),window.addEventListener("unhandledrejection",i)},O=()=>{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 A=h.tagName.toLowerCase(),v=h.getAttribute("src")??h.getAttribute("href")??h.getAttribute("poster")??null,j=A==="link"?"runtime_stylesheet_load_failed":"runtime_asset_load_failed";u(j,{tagName:A,assetUrl:v,currentSrc:(h instanceof HTMLImageElement||h instanceof HTMLMediaElement)&&h.currentSrc||null,readyState:h instanceof HTMLMediaElement?h.readyState:null,networkState:h instanceof HTMLMediaElement?h.networkState:null},`${j}:${A}:${v??"unknown"}`)};h.addEventListener("error",y),c(()=>{h.removeEventListener("error",y)})}let m=document.fonts;m&&m.ready.then(()=>{if(t.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&&u("runtime_font_load_issue",{failedFamilies:h,totalFaces:Array.from(m).length},`runtime-font-load-issue:${h.join("|")}`)}).catch(()=>{})},ie=(d,m)=>{if(!d.timeline)return!1;let h=t.capturedTimeline;if(h&&h===d.timeline)return!1;let y=Math.max(0,t.currentTime||0),A=t.isPlaying;t.capturedTimeline=d.timeline,typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);try{t.capturedTimeline.pause(),t.capturedTimeline.seek(y,!1),A&&t.capturedTimeline.play()}catch(v){L("runtime.init.site7",v)}return Ee({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},ee=null,z=!1,q=new Set,V=()=>{t.tornDown||(ee!=null&&window.clearTimeout(ee),ee=window.setTimeout(()=>{if(t.tornDown)return;ee=null;let d=I();if(!d.timeline||!P(d.mediaDurationFloorSeconds??null))return;if(!t.capturedTimeline){xe()&&(Ve(),me(!0));return}if(z)return;let h=R(t.capturedTimeline),y=d.selectedDurationSeconds??R(d.timeline);P(y)&&(!P(h)||y>=h+g)&&ie(d,"manual")&&(z=!0,Ee({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}}),Ve(),me(!0))},C))},Re=()=>{for(let d of q)d.removeEventListener("loadedmetadata",V),d.removeEventListener("durationchange",V);q.clear()},be=()=>{if(t.tornDown)return;let d=Array.from(document.querySelectorAll("video, audio"));for(let m of d)q.has(m)||(q.add(m),m.addEventListener("loadedmetadata",V),m.addEventListener("durationchange",V),m.preload!=="auto"&&(m.preload="auto"),m.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&m.load())},ke=()=>{let d=v=>{let j=v.closest("[data-composition-id]"),ne=j?x(j,0):null,te=j?b(j,{includeAuthoredTimingAttrs:!0}):null;return{compositionRoot:j,inheritedStart:ne,inheritedDuration:te}},m=yi({shouldIncludeElement:v=>v.hasAttribute("data-start")||!!d(v).compositionRoot,resolveStartSeconds:v=>{let j=d(v);return x(v,j.inheritedStart??0)},resolveDurationSeconds:v=>{let j=d(v),ne=x(v,j.inheritedStart??0),te=Number.parseFloat(v.dataset.playbackStart??v.dataset.mediaStart??"0")||0,se=j.inheritedStart!=null&&j.inheritedDuration!=null&&j.inheritedDuration>0?Math.max(0,j.inheritedStart+j.inheritedDuration-ne):null,Ne=Number.isFinite(v.duration)&&v.duration>te?Math.max(0,v.duration-te):null;return Ne!=null&&se!=null?Math.min(Ne,se):Ne??se}}),h=t.mediaForceSyncNextTick;h&&(t.mediaForceSyncNextTick=!1),Si({clips:m.mediaClips,timeSeconds:t.currentTime,playing:t.isPlaying,playbackRate:t.playbackRate,outputMuted:t.mediaOutputMuted||Ae.isActive(),userMuted:t.bridgeMuted,userVolume:t.bridgeVolume,forceSync:h,onAutoplayBlocked:()=>{t.mediaAutoplayBlockedPosted||(t.mediaAutoplayBlockedPosted=!0,Ee({source:"hf-preview",type:"media-autoplay-blocked"}))}});let y=document.querySelector("[data-composition-id]")?.getAttribute("data-composition-id")??null,A=Array.from(document.querySelectorAll("[data-start]"));for(let v of A){if(!(v instanceof HTMLElement))continue;let j=v.tagName.toLowerCase();if(j==="script"||j==="style"||j==="link"||j==="meta")continue;if(!v.getAttribute("data-composition-id")){let ae=v.closest("[data-composition-id]")?.getAttribute("data-composition-id")??null;if(ae&&ae!==y)continue}let te=x(v,0),se=b(v),Ne=v.getAttribute("data-composition-id");if(Ne){let Le=(window.__timelines??{})[Ne],ae=null;if(Le&&typeof Le.duration=="function"){let Pe=Number(Le.duration());Number.isFinite(Pe)&&Pe>0&&(ae=Pe)}se!=null&&se>0&&ae!=null?se=Math.min(se,ae):(se==null||se<=0)&&ae!=null&&(se=ae)}let pe=se!=null&&se>0?te+se:Number.POSITIVE_INFINITY,Ce=t.currentTime>=te&&(Number.isFinite(pe)?t.currentTime<pe:!0);v.style.visibility=Ce?"visible":"hidden"}},me=d=>{let m=Math.max(0,Math.round((t.currentTime||0)*t.canonicalFps)),h=Date.now();(d||m!==t.bridgeLastPostedFrame||t.isPlaying!==t.bridgeLastPostedPlaying||t.bridgeMuted!==t.bridgeLastPostedMuted||h-t.bridgeLastPostedAt>=t.bridgeMaxPostIntervalMs)&&(t.bridgeLastPostedFrame=m,t.bridgeLastPostedPlaying=t.isPlaying,t.bridgeLastPostedMuted=t.bridgeMuted,t.bridgeLastPostedAt=h,Ee({source:"hf-preview",type:"state",frame:m,isPlaying:t.isPlaying,muted:t.bridgeMuted,playbackRate:t.playbackRate}))},Ve=()=>{D(),X(),F();let d=M();if(d){let h=B(d.getAttribute("data-width")),y=B(d.getAttribute("data-height")),A=h?parseInt(h,10):0,v=y?parseInt(y,10):0;A>0&&v>0&&Ee({source:"hf-preview",type:"stage-size",width:A,height:v})}xe();let m=Mi({canonicalFps:t.canonicalFps,maxTimelineDurationSeconds:t.maxTimelineDurationSeconds});window.__clipManifest=m,Ee(m),W()},Oe=(d,m=0)=>{for(let h of t.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)}}};if(T)Vn();else{let d={injectedStyles:t.injectedCompStyles,injectedScripts:t.injectedCompScripts,parseDimensionPx:B,onDiagnostic:({code:m,details:h})=>{Ee({source:"hf-preview",type:"diagnostic",code:m,details:h})}};ro(d).then(()=>io(d)).finally(()=>{T=!0,xe(),Oe("discover",t.currentTime),be(),O(),Vn(),Ve(),me(!0)})}let _t=bi({postMessage:d=>Ee(d)});_t.installPickerApi();let on=d=>{let m=Number(d);!Number.isFinite(m)||m<=0?t.playbackRate=1:t.playbackRate=Math.max(.1,Math.min(5,m)),t.mediaForceSyncNextTick=!0,t.capturedTimeline&&typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);let h=document.querySelectorAll("video, audio");for(let y of h)if(y instanceof HTMLMediaElement)try{y.playbackRate=t.playbackRate}catch(A){L("runtime.init.site10",A)}},fe=Ei({getTimeline:()=>t.capturedTimeline,setTimeline:d=>{t.capturedTimeline=d},getTimelineRegistry:()=>window.__timelines??{},getIsPlaying:()=>t.isPlaying,setIsPlaying:d=>{t.isPlaying!==d&&(t.mediaForceSyncNextTick=!0),t.isPlaying=d},getPlaybackRate:()=>t.playbackRate,setPlaybackRate:on,getCanonicalFps:()=>t.canonicalFps,onSyncMedia:(d,m)=>{t.currentTime=Math.max(0,Number(d)||0),t.isPlaying!==m&&(t.mediaForceSyncNextTick=!0),t.isPlaying=m,ke()},onStatePost:me,onDeterministicSeek:d=>{for(let m of t.deterministicAdapters)try{m.seek({time:Number(d)||0})}catch(h){L("runtime.init.site11",h)}},onDeterministicPause:()=>Oe("pause"),onDeterministicPlay:()=>Oe("play"),onRenderFrameSeek:()=>{},onShowNativeVideos:()=>{},getSafeDuration:()=>G(t.capturedTimeline,0)});window.__player=l(fe),window.__playerReady=!0,window.__renderReady=!0,si(Ee),lt("composition_loaded",{duration:fe.getDuration(),compositionId:document.querySelector("[data-composition-id]")?.getAttribute("data-composition-id")??null}),t.controlBridgeHandler=oi({onPlay:()=>{fe.play(),lt("composition_played",{time:fe.getTime()})},onPause:()=>{fe.pause(),lt("composition_paused",{time:fe.getTime()})},onSeek:(d,m)=>{let h=Math.max(0,d)/t.canonicalFps;fe.seek(h),lt("composition_seeked",{time:h})},onSetMuted:d=>{t.bridgeMuted=d;let m=d||t.mediaOutputMuted;Ae.setMuted(m);let h=document.querySelectorAll("video, audio");for(let y of h)y instanceof HTMLMediaElement&&(y.muted=m)},onSetVolume:d=>{t.bridgeVolume=d,Ae.setVolume(d);let m=document.querySelectorAll("video, audio");for(let h of m){if(!(h instanceof HTMLMediaElement))continue;let y=parseFloat(h.dataset.volume??""),A=Number.isFinite(y)?y:1;h.volume=A*d}},onSetMediaOutputMuted:d=>{t.mediaOutputMuted=d;let m=d||t.bridgeMuted;Ae.setMuted(m);let h=document.querySelectorAll("video, audio");for(let y of h)y instanceof HTMLMediaElement&&(y.muted=m)},onSetPlaybackRate:d=>{on(d),t.transportClock&&t.transportClock.setRate(t.playbackRate)},onEnablePickMode:()=>_t.enablePickMode(),onDisablePickMode:()=>_t.disablePickMode()}),xe(),t.capturedTimeline&&(fe._timeline=t.capturedTimeline),T&&setTimeout(()=>{let d=t.capturedTimeline;xe()&&t.capturedTimeline!==d&&(fe._timeline=t.capturedTimeline),Oe("discover",t.currentTime),Ve(),me(!0)},0),t.deterministicAdapters=[gi(),ai({resolveStartSeconds:d=>x(d,0)}),ui(),fi(),pi(),hi(),li({getTimeline:()=>t.capturedTimeline})],xi(),k(),Oe("discover"),be();let H=new Yt;t.transportClock=H;let Ae=new Zt,ti=!1;Ae.init().then(d=>{ti=d});let Rt=0,sn=!1,Oo=(d,m,h)=>{try{d.pause(),typeof d.totalTime=="function"?d.totalTime(m,!1):d.seek(m,!1)}catch(y){L(h,y)}},Po=d=>{let m=window.__timelines??{},h=M()?.getAttribute("data-composition-id")??null;for(let[y,A]of Object.entries(m)){if(!A||y===h)continue;let v=document.querySelector(`[data-composition-id="${CSS.escape(y)}"]`);if(!v)continue;let j=x(v,0);if(!Number.isFinite(j))continue;let ne=b(v,{includeAuthoredTimingAttrs:!0}),te=R(A),se=ne!=null&&ne>0?ne:te,Ne=Math.max(0,se!=null&&se>0?Math.min(se,d-j):d-j);Oo(A,Ne,"runtime.init.transport.childTimeline")}},at=d=>{let m=t.capturedTimeline;if(m)try{typeof m.totalTime=="function"?m.totalTime(d,!1):m.seek(d,!1)}catch(h){L("runtime.init.transport.seek",h)}else Po(d);for(let h of t.deterministicAdapters)try{h.seek({time:d})}catch(y){L("runtime.init.transport.adapter",y)}},ni=()=>{if(!(t.tornDown||sn)){sn=!0;try{if(t.transportRafId=window.requestAnimationFrame(ni),Rt+=1,Rt%60===0&&!(H.isPlaying()&&t.capturedTimeline!=null&&H.now()<p)){let h=t.capturedTimeline;if(xe()){t.capturedTimeline&&!fe._timeline&&(fe._timeline=t.capturedTimeline),t.capturedTimeline&&t.capturedTimeline!==h&&t.capturedTimeline.pause();let y=G(t.capturedTimeline,0);y>0&&H.setDuration(y),Ve()}}if(Rt%20===0&&Ve(),Rt%30===0&&be(),t.capturedTimeline){let m=G(t.capturedTimeline,0);m>0&&H.setDuration(m)}if(H.isPlaying()&&!t.mediaOutputMuted)if(Ae.isActive()&&Ae.context){let m=Ae.getTime();m>=0&&H.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 A=Number.parseFloat(y.dataset.start??""),v=Number.parseFloat(y.dataset.duration??""),j=Number.isFinite(v)&&v>0?A+v:1/0,ne=Number.parseFloat(y.dataset.playbackStart??y.dataset.mediaStart??"0")||0;if(Number.isFinite(A)&&t.currentTime>=A&&t.currentTime<j){y.paused?!y.error&&y.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&(H.attachAudioSource({currentTimeSeconds:t.currentTime}),h=!0):(H.attachAudioSource({el:y,compositionStart:A,mediaStart:ne}),h=!0);break}}!h&&H.hasAudioSource()&&H.detachAudioSource()}else H.hasAudioSource()&&H.detachAudioSource();let d=H.now();if(t.currentTime=d,at(d),H.isPlaying()&&H.reachedEnd()){Ae.stopAll(),H.detachAudioSource(),H.pause(),t.isPlaying=!1;let m=H.getDuration();Number.isFinite(m)&&(H.seek(m),t.currentTime=m,at(m)),Oe("pause"),ke(),me(!0);return}H.isPlaying()&&ke(),me(!1)}finally{sn=!1}}},ii=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 A=Number.parseFloat(h.dataset.duration??""),v=Number.isFinite(A)&&A>0?y+A:1/0;if(d<y||d>=v)continue;let j=Number.parseFloat(h.dataset.playbackStart??h.dataset.mediaStart??"0")||0,ne=d-y+j;if(ne>=0)try{h.currentTime=ne}catch{}}};if(fe.play=()=>{let d=t.capturedTimeline;if(H.isPlaying())return;let m=G(d,0);if(m>0)H.setDuration(m),H.reachedEnd()&&(H.seek(0),t.currentTime=0,at(0));else{let h=M(),y=Number(h?.getAttribute("data-duration")??0);y>0&&H.setDuration(y)}if(d&&d.pause(),!!H.play()){if(t.isPlaying=!0,t.mediaForceSyncNextTick=!0,ii(H.now()),ti){let h=Ae.startGeneration(),y=document.querySelectorAll("audio[data-start]");for(let A of y){if(!(A instanceof HTMLMediaElement)||!A.isConnected)continue;let v=Number.parseFloat(A.dataset.start??"");if(!Number.isFinite(v))continue;let j=Number.parseFloat(A.dataset.playbackStart??A.dataset.mediaStart??"0")||0,ne=Number.parseFloat(A.dataset.volume??""),te=Number.isFinite(ne)?ne:1;Ae.decodeAudioElement(A).then(se=>{!se||!H.isPlaying()||Ae.schedulePlayback(A,se,v,j,H.now(),te*t.bridgeVolume,h)})}}Oe("play"),ke(),me(!0)}},fe.pause=()=>{if(!H.isPlaying())return;Ae.stopAll(),H.detachAudioSource(),H.pause(),t.isPlaying=!1,t.currentTime=H.now(),t.mediaForceSyncNextTick=!0,ii(t.currentTime);let d=t.capturedTimeline;d&&d.pause(),Oe("pause"),ke(),me(!0)},fe.seek=d=>{let m=Ze(Math.max(0,Number(d)||0),t.canonicalFps);Ae.stopAll(),H.detachAudioSource(),H.isPlaying()&&H.pause(),H.seek(m),t.currentTime=H.now(),t.isPlaying=!1,t.mediaForceSyncNextTick=!0;let y=t.capturedTimeline;y&&y.pause(),at(t.currentTime),Oe("pause"),ke(),me(!0)},fe.renderSeek=d=>{let m=Ze(Math.max(0,Number(d)||0),t.canonicalFps);H.isPlaying()&&H.pause(),H.seek(m),t.currentTime=H.now(),t.isPlaying=!1,t.mediaForceSyncNextTick=!0,at(t.currentTime),ke(),me(!0)},fe.getTime=()=>H.now(),fe.getDuration=()=>{let d=H.getDuration();return Number.isFinite(d)?d:0},fe.isPlaying=()=>H.isPlaying(),fe.setPlaybackRate=d=>{on(d),H.setRate(t.playbackRate)},t.capturedTimeline){let d=G(t.capturedTimeline,0);d>0&&H.setDuration(d),t.capturedTimeline.pause()}let ri=window.__player;if(ri){let d=["play","pause","seek","renderSeek","getTime","getDuration","isPlaying"];for(let m of d)Object.defineProperty(ri,m,{get:()=>fe[m],set:h=>{fe[m]=h},configurable:!0})}t.transportRafId=window.requestAnimationFrame(ni),Ve(),me(!0);let an=()=>{if(!t.tornDown){t.tornDown=!0,t.transportRafId!=null&&(window.cancelAnimationFrame(t.transportRafId),t.transportRafId=null),t.transportClock=null,Ae.destroy(),ee!=null&&(window.clearTimeout(ee),ee=null),s!=null&&(window.cancelAnimationFrame(s),s=null),Re(),t.controlBridgeHandler&&(window.removeEventListener("message",t.controlBridgeHandler),t.controlBridgeHandler=null),n&&(window.removeEventListener("error",n),n=null),i&&(window.removeEventListener("unhandledrejection",i),i=null),t.beforeUnloadHandler&&(window.removeEventListener("beforeunload",t.beforeUnloadHandler),t.beforeUnloadHandler=null),_t.disablePickMode();for(let d of t.deterministicAdapters)if(!(!d||typeof d.revert!="function"))try{d.revert()}catch(m){L("runtime.init.site12",m)}t.deterministicAdapters=[];for(let d of r.splice(0))try{d()}catch(m){L("runtime.init.site13",m)}for(let d of t.injectedCompStyles)try{d.remove()}catch(m){L("runtime.init.site14",m)}t.injectedCompStyles=[];for(let d of t.injectedCompScripts)try{d.remove()}catch(m){L("runtime.init.site15",m)}t.injectedCompScripts=[],t.capturedTimeline=null,e.__hfRuntimeTeardown===an&&(e.__hfRuntimeTeardown=null)}};e.__hfRuntimeTeardown=an,t.beforeUnloadHandler=an,window.addEventListener("beforeunload",t.beforeUnloadHandler)}var uo=["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"],$n=[[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 Ka(t){if(t<=255)return uo[t];let e=0,n=$n.length-1;for(;e<=n;){let i=e+n>>1,r=$n[i];if(t<r[0]){n=i-1;continue}if(t>r[1]){e=i+1;continue}return r[2]}return"L"}function Ja(t){let e=t.length;if(e===0)return null;let n=new Array(e),i=!1;for(let l=0;l<e;){let a=t.charCodeAt(l),f=a,p=1;if(a>=55296&&a<=56319&&l+1<e){let C=t.charCodeAt(l+1);C>=56320&&C<=57343&&(f=(a-55296<<10)+(C-56320)+65536,p=2)}let g=Ka(f);(g==="R"||g==="AL"||g==="AN")&&(i=!0);for(let C=0;C<p;C++)n[l+C]=g;l+=p}if(!i)return null;let r=0;for(let l=0;l<e;l++){let a=n[l];if(a==="L"){r=0;break}if(a==="R"||a==="AL"){r=1;break}}let o=new Int8Array(e);for(let l=0;l<e;l++)o[l]=r;let s=r&1?"R":"L",c=s,u=c;for(let l=0;l<e;l++)n[l]==="NSM"?n[l]=u:u=n[l];u=c;for(let l=0;l<e;l++){let a=n[l];a==="EN"?n[l]=u==="AL"?"AN":"EN":(a==="R"||a==="L"||a==="AL")&&(u=a)}for(let l=0;l<e;l++)n[l]==="AL"&&(n[l]="R");for(let l=1;l<e-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<e;l++){if(n[l]!=="EN")continue;let a;for(a=l-1;a>=0&&n[a]==="ET";a--)n[a]="EN";for(a=l+1;a<e&&n[a]==="ET";a++)n[a]="EN"}for(let l=0;l<e;l++){let a=n[l];(a==="WS"||a==="ES"||a==="ET"||a==="CS")&&(n[l]="ON")}u=c;for(let l=0;l<e;l++){let a=n[l];a==="EN"?n[l]=u==="L"?"L":"EN":(a==="R"||a==="L")&&(u=a)}for(let l=0;l<e;l++){if(n[l]!=="ON")continue;let a=l+1;for(;a<e&&n[a]==="ON";)a++;let f=l>0?n[l-1]:c,p=a<e?n[a]:c,g=f!=="L"?"R":"L";if(g===(p!=="L"?"R":"L"))for(let w=l;w<a;w++)n[w]=g;l=a-1}for(let l=0;l<e;l++)n[l]==="ON"&&(n[l]=s);for(let l=0;l<e;l++){let a=n[l];(o[l]&1)===0?a==="R"?o[l]++:(a==="AN"||a==="EN")&&(o[l]+=2):(a==="L"||a==="AN"||a==="EN")&&o[l]++}return o}function co(t,e){let n=Ja(t);if(n===null)return null;let i=new Int8Array(e.length);for(let r=0;r<e.length;r++)i[r]=n[e[r]];return i}var Qa=/[ \\t\\n\\r\\f]+/g,Ya=/[\\t\\n\\r\\f]| {2,}|^ | $/;function Za(t){let e=t??"normal";return e==="pre-wrap"?{mode:e,preserveOrdinarySpaces:!0,preserveHardBreaks:!0}:{mode:e,preserveOrdinarySpaces:!1,preserveHardBreaks:!1}}function Xa(t){if(!Ya.test(t))return t;let e=t.replace(Qa," ");return e.charCodeAt(0)===32&&(e=e.slice(1)),e.length>0&&e.charCodeAt(e.length-1)===32&&(e=e.slice(0,-1)),e}function el(t){return/[\\r\\f]/.test(t)?t.replace(/\\r\\n/g,`\n`).replace(/[\\r\\f]/g,`\n`):t.replace(/\\r\\n/g,`\n`)}var Kn=null,tl;function nl(){return Kn===null&&(Kn=new Intl.Segmenter(tl,{granularity:"word"})),Kn}var il=/\\p{Script=Arabic}/u,Xt=/\\p{M}/u,So=/\\p{Nd}/u;function fo(t){return il.test(t)}function mo(t){return t>=19968&&t<=40959||t>=13312&&t<=19903||t>=131072&&t<=173791||t>=173824&&t<=177983||t>=177984&&t<=178207||t>=178208&&t<=183983||t>=183984&&t<=191471||t>=191472&&t<=192093||t>=194560&&t<=195103||t>=196608&&t<=201551||t>=201552&&t<=205743||t>=205744&&t<=210041||t>=63744&&t<=64255||t>=12288&&t<=12351||t>=12352&&t<=12447||t>=12448&&t<=12543||t>=44032&&t<=55215||t>=65280&&t<=65519}function _e(t){for(let e=0;e<t.length;e++){let n=t.charCodeAt(e);if(!(n<12288)){if(n>=55296&&n<=56319&&e+1<t.length){let i=t.charCodeAt(e+1);if(i>=56320&&i<=57343){let r=(n-55296<<10)+(i-56320)+65536;if(mo(r))return!0;e++;continue}}if(mo(n))return!0}}return!1}function rl(t){let e=nn(t);return e!==null&&(tn.has(e)||je.has(e))}var ol=new Set(["\\xA0","\\u202F","\\u2060","\\uFEFF"]);function sl(t){return _e(t)}function al(t){let e=nn(t);return e!==null&&ol.has(e)}function en(t){return!rl(t)&&!al(t)}var tn=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"]),Dt=new Set([\'"\',"(","[","{","\\u201C","\\u2018","\\xAB","\\u2039","\\uFF08","\\u3014","\\u3008","\\u300A","\\u300C","\\u300E","\\u3010","\\u3016","\\u3018","\\u301A"]),Qn=new Set(["\'","\\u2019"]),je=new Set([".",",","!","?",":",";","\\u060C","\\u061B","\\u061F","\\u0964","\\u0965","\\u104A","\\u104B","\\u104C","\\u104D","\\u104F",")","]","}","%",\'"\',"\\u201D","\\u2019","\\xBB","\\u203A","\\u2026"]),ll=new Set([":",".","\\u060C","\\u061B"]),ul=new Set(["\\u104F"]),cl=new Set(["\\u201D","\\u2019","\\xBB","\\u203A","\\u300D","\\u300F","\\u3011","\\u300B","\\u3009","\\u3015","\\uFF09"]);function dl(t){if(Yn(t))return!0;let e=!1;for(let n of t){if(je.has(n)){e=!0;continue}if(!(e&&Xt.test(n)))return!1}return e}function fl(t){for(let e of t)if(!tn.has(e)&&!je.has(e))return!1;return t.length>0}function ml(t){if(Yn(t))return!0;for(let e of t)if(!Dt.has(e)&&!Qn.has(e)&&!Xt.test(e))return!1;return t.length>0}function Yn(t){let e=!1;for(let n of t)if(!(n==="\\\\"||Xt.test(n))){if(Dt.has(n)||je.has(n)||Qn.has(n)){e=!0;continue}return!1}return e}function bo(t,e){let n=e-1;if(n<=0)return Math.max(n,0);let i=t.charCodeAt(n);if(i<56320||i>57343)return n;let r=n-1;if(r<0)return n;let o=t.charCodeAt(r);return o>=55296&&o<=56319?r:n}function nn(t){if(t.length===0)return null;let e=bo(t,t.length);return t.slice(e)}function pl(t){let e=Array.from(t),n=e.length;for(;n>0;){let i=e[n-1];if(Xt.test(i)){n--;continue}if(Dt.has(i)||Qn.has(i)){n--;continue}break}return n<=0||n===e.length?null:{head:e.slice(0,n).join(""),tail:e.slice(n).join("")}}function hl(t,e,n){return n==="text"&&!e&&t.length===1&&t!=="-"&&t!=="\\u2014"?t:null}function po(t,e,n,i){let r=e[i],o=t[i];if(r==null)return o;let s=n[i];if(o.length===s)return o;let c=r.repeat(s);return t[i]=c,c}function ho(t,e){return t&&e!==null&&ll.has(e)}function xl(t){let e=nn(t);return e!==null&&ul.has(e)}function gl(t){if(t.length<2||t[0]!==" ")return null;let e=t.slice(1);return/^\\p{M}+$/u.test(e)?{space:" ",marks:e}:null}function rn(t){let e=t.length;for(;e>0;){let n=bo(t,e),i=t.slice(n,e);if(cl.has(i))return!0;if(!je.has(i))return!1;e=n}return!1}function yl(t,e){if(e.preserveOrdinarySpaces||e.preserveHardBreaks){if(t===" ")return"preserved-space";if(t===" ")return"tab";if(e.preserveHardBreaks&&t===`\n`)return"hard-break"}return t===" "?"space":t==="\\xA0"||t==="\\u202F"||t==="\\u2060"||t==="\\uFEFF"?"glue":t==="\\u200B"?"zero-width-break":t==="\\xAD"?"soft-hyphen":"text"}var Sl=/[\\x20\\t\\n\\xA0\\xAD\\u200B\\u202F\\u2060\\uFEFF]/;function Te(t){return t.length===1?t[0]:t.join("")}function bl(t,e){let n=[];for(let i=t.length-1;i>=0;i--)n.push(t[i]);return n.push(e),Te(n)}function Al(t,e,n,i){if(!Sl.test(t))return[{text:t,isWordLike:e,kind:"text",start:n}];let r=[],o=null,s=[],c=n,u=!1,l=0;for(let a of t){let f=yl(a,i),p=f==="text"&&e;if(o!==null&&f===o&&p===u){s.push(a),l+=a.length;continue}o!==null&&r.push({text:Te(s),isWordLike:u,kind:o,start:c}),o=f,s=[a],c=n+l,u=p,l+=a.length}return o!==null&&r.push({text:Te(s),isWordLike:u,kind:o,start:c}),r}function Jn(t){return t==="space"||t==="preserved-space"||t==="zero-width-break"||t==="hard-break"}var El=/^[A-Za-z][A-Za-z0-9+.-]*:$/;function Fl(t,e){let n=t.texts[e];return n.startsWith("www.")?!0:El.test(n)&&e+1<t.len&&t.kinds[e+1]==="text"&&t.texts[e+1]==="//"}function wl(t){return t.includes("?")&&(t.includes("://")||t.startsWith("www."))}function Nl(t){let e=t.texts.slice(),n=t.isWordLike.slice(),i=t.kinds.slice(),r=t.starts.slice();for(let s=0;s<t.len;s++){if(i[s]!=="text"||!Fl(t,s))continue;let c=[e[s]],u=s+1;for(;u<t.len&&!Jn(i[u]);){c.push(e[u]),n[s]=!0;let l=e[u].includes("?");if(i[u]="text",e[u]="",u++,l)break}e[s]=Te(c)}let o=0;for(let s=0;s<e.length;s++){let c=e[s];c.length!==0&&(o!==s&&(e[o]=c,n[o]=n[s],i[o]=i[s],r[o]=r[s]),o++)}return e.length=o,n.length=o,i.length=o,r.length=o,{len:o,texts:e,isWordLike:n,kinds:i,starts:r}}function Cl(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o];if(e.push(s),n.push(t.isWordLike[o]),i.push(t.kinds[o]),r.push(t.starts[o]),!wl(s))continue;let c=o+1;if(c>=t.len||Jn(t.kinds[c]))continue;let u=[],l=t.starts[c],a=c;for(;a<t.len&&!Jn(t.kinds[a]);)u.push(t.texts[a]),a++;u.length>0&&(e.push(Te(u)),n.push(!0),i.push("text"),r.push(l),o=a-1)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}var Ml=new Set([":","-","/","\\xD7",",",".","+","\\u2013","\\u2014"]),xo=/^[A-Za-z0-9_]+[,:;]*$/,go=/[,:;]+$/;function Ao(t){for(let e of t)if(So.test(e))return!0;return!1}function vt(t){if(t.length===0)return!1;for(let e of t)if(!(So.test(e)||Ml.has(e)))return!1;return!0}function Tl(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o],c=t.kinds[o];if(c==="text"&&vt(s)&&Ao(s)){let u=[s],l=o+1;for(;l<t.len&&t.kinds[l]==="text"&&vt(t.texts[l]);)u.push(t.texts[l]),l++;e.push(Te(u)),n.push(!0),i.push("text"),r.push(t.starts[o]),o=l-1;continue}e.push(s),n.push(t.isWordLike[o]),i.push(c),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function kl(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o],c=t.kinds[o],u=t.isWordLike[o];if(c==="text"&&u&&xo.test(s)){let l=[s],a=go.test(s),f=o+1;for(;a&&f<t.len&&t.kinds[f]==="text"&&t.isWordLike[f]&&xo.test(t.texts[f]);){let p=t.texts[f];l.push(p),a=go.test(p),f++}e.push(Te(l)),n.push(!0),i.push("text"),r.push(t.starts[o]),o=f-1;continue}e.push(s),n.push(u),i.push(c),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function vl(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o];if(t.kinds[o]==="text"&&s.includes("-")){let c=s.split("-"),u=c.length>1;for(let l=0;l<c.length;l++){let a=c[l];if(!u)break;(a.length===0||!Ao(a)||!vt(a))&&(u=!1)}if(u){let l=0;for(let a=0;a<c.length;a++){let f=c[a],p=a<c.length-1?`${f}-`:f;e.push(p),n.push(!0),i.push("text"),r.push(t.starts[o]+l),l+=p.length}continue}}e.push(s),n.push(t.isWordLike[o]),i.push(t.kinds[o]),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function Dl(t){let e=[],n=[],i=[],r=[],o=0;for(;o<t.len;){let s=[t.texts[o]],c=t.isWordLike[o],u=t.kinds[o],l=t.starts[o];if(u==="glue"){let a=[s[0]],f=l;for(o++;o<t.len&&t.kinds[o]==="glue";)a.push(t.texts[o]),o++;let p=Te(a);if(o<t.len&&t.kinds[o]==="text")s[0]=p,s.push(t.texts[o]),c=t.isWordLike[o],u="text",l=f,o++;else{e.push(p),n.push(!1),i.push("glue"),r.push(f);continue}}else o++;if(u==="text")for(;o<t.len&&t.kinds[o]==="glue";){let a=[];for(;o<t.len&&t.kinds[o]==="glue";)a.push(t.texts[o]),o++;let f=Te(a);if(o<t.len&&t.kinds[o]==="text"){s.push(f,t.texts[o]),c=c||t.isWordLike[o],o++;continue}s.push(f)}e.push(Te(s)),n.push(c),i.push(u),r.push(l)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function _l(t){let e=t.texts.slice(),n=t.isWordLike.slice(),i=t.kinds.slice(),r=t.starts.slice();for(let o=0;o<e.length-1;o++){if(i[o]!=="text"||i[o+1]!=="text"||!_e(e[o])||!_e(e[o+1]))continue;let s=pl(e[o]);s!==null&&(e[o]=s.head,e[o+1]=s.tail+e[o+1],r[o+1]=r[o]+s.head.length)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function yo(t,e,n){let i=nl(),r=0,o=[],s=[],c=[],u=[],l=[],a=[],f=[],p=[],g=[],C=[],w=[],S=[];for(let F of i.segment(t))for(let x of Al(F.segment,F.isWordLike??!1,F.index,n)){let ce=function(){a[_]!==null&&(s[_]=[po(o,a,f,_)],a[_]=null),s[_].push(x.text),c[_]=c[_]||x.isWordLike,p[_]=p[_]||N,g[_]=g[_]||T,C[_]=P,w[_]=J,S[_]=ho(g[_],R)},b=x.kind==="text",E=hl(x.text,x.isWordLike,x.kind),N=_e(x.text),T=fo(x.text),R=nn(x.text),P=rn(x.text),J=xl(x.text),_=r-1;e.carryCJKAfterClosingQuote&&b&&r>0&&u[_]==="text"&&N&&p[_]&&C[_]||b&&r>0&&u[_]==="text"&&fl(x.text)&&p[_]||b&&r>0&&u[_]==="text"&&w[_]?ce():b&&r>0&&u[_]==="text"&&x.isWordLike&&T&&S[_]?(ce(),c[_]=!0):E!==null&&r>0&&u[_]==="text"&&a[_]===E?f[_]=(f[_]??1)+1:b&&!x.isWordLike&&r>0&&u[_]==="text"&&(dl(x.text)||x.text==="-"&&c[_])?ce():(o[r]=x.text,s[r]=[x.text],c[r]=x.isWordLike,u[r]=x.kind,l[r]=x.start,a[r]=E,f[r]=E===null?0:1,p[r]=N,g[r]=T,C[r]=P,w[r]=J,S[r]=ho(T,R),r++)}for(let F=0;F<r;F++){if(a[F]!==null){o[F]=po(o,a,f,F);continue}o[F]=Te(s[F])}for(let F=1;F<r;F++)u[F]==="text"&&!c[F]&&Yn(o[F])&&u[F-1]==="text"&&(o[F-1]+=o[F],c[F-1]=c[F-1]||c[F],o[F]="");let U=Array.from({length:r},()=>null),B=-1;for(let F=r-1;F>=0;F--){let x=o[F];if(x.length!==0){if(u[F]==="text"&&!c[F]&&ml(x)&&B>=0&&u[B]==="text"){let b=U[B]??[];b.push(x),U[B]=b,l[B]=l[F],o[F]="";continue}B=F}}for(let F=0;F<r;F++){let x=U[F];x!=null&&(o[F]=bl(x,o[F]))}let M=0;for(let F=0;F<r;F++){let x=o[F];x.length!==0&&(M!==F&&(o[M]=x,c[M]=c[F],u[M]=u[F],l[M]=l[F]),M++)}o.length=M,c.length=M,u.length=M,l.length=M;let X=Dl({len:M,texts:o,isWordLike:c,kinds:u,starts:l}),D=_l(kl(vl(Tl(Cl(Nl(X))))));for(let F=0;F<D.len-1;F++){let x=gl(D.texts[F]);x!==null&&(D.kinds[F]!=="space"&&D.kinds[F]!=="preserved-space"||D.kinds[F+1]!=="text"||!fo(D.texts[F+1])||(D.texts[F]=x.space,D.isWordLike[F]=!1,D.kinds[F]=D.kinds[F]==="preserved-space"?"preserved-space":"space",D.texts[F+1]=x.marks+D.texts[F+1],D.starts[F+1]=D.starts[F]+x.space.length))}return D}function Rl(t,e){if(t.len===0)return[];if(!e.preserveHardBreaks)return[{startSegmentIndex:0,endSegmentIndex:t.len,consumedEndSegmentIndex:t.len}];let n=[],i=0;for(let r=0;r<t.len;r++)t.kinds[r]==="hard-break"&&(n.push({startSegmentIndex:i,endSegmentIndex:r,consumedEndSegmentIndex:r+1}),i=r+1);return i<t.len&&n.push({startSegmentIndex:i,endSegmentIndex:t.len,consumedEndSegmentIndex:t.len}),n}function Ll(t){if(t.len<=1)return t;let e=[],n=[],i=[],r=[],o=null,s=!1,c=0,u=!1,l=!1;function a(){o!==null&&(e.push(Te(o)),n.push(s),i.push("text"),r.push(c),o=null)}for(let f=0;f<t.len;f++){let p=t.texts[f],g=t.kinds[f],C=t.isWordLike[f],w=t.starts[f];if(g==="text"){let S=sl(p),U=en(p);if(o!==null&&u&&l){o.push(p),s=s||C,u=u||S,l=U;continue}a(),o=[p],s=C,c=w,u=S,l=U;continue}a(),e.push(p),n.push(C),i.push(g),r.push(w)}return a(),{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function Eo(t,e,n="normal",i="normal"){let r=Za(n),o=r.mode==="pre-wrap"?el(t):Xa(t);if(o.length===0)return{normalized:o,chunks:[],len:0,texts:[],isWordLike:[],kinds:[],starts:[]};let s=i==="keep-all"?Ll(yo(o,e,r)):yo(o,e,r);return{normalized:o,chunks:Rl(s,r),...s}}var rt=null,Fo=new Map,ot=null,Bl=96,Ol=/\\p{Emoji_Presentation}/u,Pl=/[\\p{Emoji_Presentation}\\p{Extended_Pictographic}\\p{Regional_Indicator}\\uFE0F\\u20E3]/u,Zn=null,wo=new Map;function Xn(){if(rt!==null)return rt;if(typeof OffscreenCanvas<"u")return rt=new OffscreenCanvas(1,1).getContext("2d"),rt;if(typeof document<"u")return rt=document.createElement("canvas").getContext("2d"),rt;throw new Error("Text measurement requires OffscreenCanvas or a DOM canvas context.")}function Il(t){let e=Fo.get(t);return e||(e=new Map,Fo.set(t,e)),e}function We(t,e){let n=e.get(t);return n===void 0&&(n={width:Xn().measureText(t).width,containsCJK:_e(t)},e.set(t,n)),n}function st(){if(ot!==null)return ot;if(typeof navigator>"u")return ot={lineFitEpsilon:.005,carryCJKAfterClosingQuote:!1,preferPrefixWidthsForBreakableRuns:!1,preferEarlySoftHyphenBreak:!1},ot;let t=navigator.userAgent,n=navigator.vendor==="Apple Computer, Inc."&&t.includes("Safari/")&&!t.includes("Chrome/")&&!t.includes("Chromium/")&&!t.includes("CriOS/")&&!t.includes("FxiOS/")&&!t.includes("EdgiOS/"),i=t.includes("Chrome/")||t.includes("Chromium/")||t.includes("CriOS/")||t.includes("Edg/");return ot={lineFitEpsilon:n?1/64:.005,carryCJKAfterClosingQuote:i,preferPrefixWidthsForBreakableRuns:n,preferEarlySoftHyphenBreak:n},ot}function Wl(t){let e=t.match(/(\\d+(?:\\.\\d+)?)\\s*px/);return e?parseFloat(e[1]):16}function No(){return Zn===null&&(Zn=new Intl.Segmenter(void 0,{granularity:"grapheme"})),Zn}function Hl(t){return Ol.test(t)||t.includes("\\uFE0F")}function Co(t){return Pl.test(t)}function ql(t,e){let n=wo.get(t);if(n!==void 0)return n;let i=Xn();i.font=t;let r=i.measureText("\\u{1F600}").width;if(n=0,r>e+.5&&typeof document<"u"&&document.body!==null){let o=document.createElement("span");o.style.font=t,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 wo.set(t,n),n}function Ul(t){let e=0,n=No();for(let i of n.segment(t))Hl(i.segment)&&e++;return e}function zl(t,e){return e.emojiCount===void 0&&(e.emojiCount=Ul(t)),e.emojiCount}function Ge(t,e,n){return n===0?e.width:e.width-zl(t,e)*n}function Mo(t,e,n,i,r){if(e.breakableFitAdvances!==void 0)return e.breakableFitAdvances;let o=No(),s=[];for(let a of o.segment(t))s.push(a.segment);if(s.length<=1)return e.breakableFitAdvances=null,e.breakableFitAdvances;if(r==="sum-graphemes"){let a=[];for(let f of s){let p=We(f,n);a.push(Ge(f,p,i))}return e.breakableFitAdvances=a,e.breakableFitAdvances}if(r==="pair-context"||s.length>Bl){let a=[],f=null,p=0;for(let g of s){let C=We(g,n),w=Ge(g,C,i);if(f===null)a.push(w);else{let S=f+g,U=We(S,n);a.push(Ge(S,U,i)-p)}f=g,p=w}return e.breakableFitAdvances=a,e.breakableFitAdvances}let c=[],u="",l=0;for(let a of s){u+=a;let f=We(u,n),p=Ge(u,f,i);c.push(p-l),l=p}return e.breakableFitAdvances=c,e.breakableFitAdvances}function To(t,e){let n=Xn();n.font=t;let i=Il(t),r=Wl(t),o=e?ql(t,r):0;return{cache:i,fontSize:r,emojiCorrection:o}}function jl(t,e){for(;e<t.widths.length;){let n=t.kinds[e];if(n!=="space"&&n!=="zero-width-break"&&n!=="soft-hyphen")break;e++}return e}function Gl(t,e){if(e<=0)return 0;let n=t%e;return Math.abs(n)<=1e-6?e:e-n}function Vl(t,e,n,i,r){let o=0,s=e;for(;o<t.length;){let c=s+t[o];if((o+1<t.length?c+r:c)>n+i)break;s=c,o++}return{fitCount:o,fittedWidth:s}}function ko(t,e){return t.simpleLineWalkFastPath?vo(t,e):Do(t,e)}function vo(t,e,n){let{widths:i,kinds:r,breakableFitAdvances:o}=t;if(i.length===0)return 0;let c=st().lineFitEpsilon,u=e+c,l=0,a=0,f=!1,p=0,g=0,C=0,w=0,S=-1,U=0;function B(){S=-1,U=0}function M(E=C,N=w,T=a){l++,n?.({startSegmentIndex:p,startGraphemeIndex:g,endSegmentIndex:E,endGraphemeIndex:N,width:T}),a=0,f=!1,B()}function X(E,N){f=!0,p=E,g=0,C=E+1,w=0,a=N}function D(E,N,T){f=!0,p=E,g=N,C=E,w=N+1,a=T}function F(E,N){if(!f){X(E,N);return}a+=N,C=E+1,w=0}function x(E,N){let T=o[E];for(let R=N;R<T.length;R++){let P=T[R];f?a+P>u?(M(),D(E,R,P)):(a+=P,C=E,w=R+1):D(E,R,P)}f&&C===E&&w===T.length&&(C=E+1,w=0)}let b=0;for(;b<i.length&&!(!f&&(b=jl(t,b),b>=i.length));){let E=i[b],N=r[b],T=N==="space"||N==="preserved-space"||N==="tab"||N==="zero-width-break"||N==="soft-hyphen";if(!f){E>e&&o[b]!==null?x(b,0):X(b,E),T&&(S=b+1,U=a-E),b++;continue}if(a+E>u){if(T){F(b,E),M(b+1,0,a-E),b++;continue}if(S>=0){if(C>S||C===S&&w>0){M();continue}M(S,0,U);continue}if(E>e&&o[b]!==null){M(),x(b,0),b++;continue}M();continue}F(b,E),T&&(S=b+1,U=a-E),b++}return f&&M(),l}function Do(t,e,n){if(t.simpleLineWalkFastPath)return vo(t,e,n);let{widths:i,lineEndFitAdvances:r,lineEndPaintAdvances:o,kinds:s,breakableFitAdvances:c,discretionaryHyphenWidth:u,tabStopAdvance:l,chunks:a}=t;if(i.length===0||a.length===0)return 0;let f=st(),p=f.lineFitEpsilon,g=e+p,C=0,w=0,S=!1,U=0,B=0,M=0,X=0,D=-1,F=0,x=0,b=null;function E(){D=-1,F=0,x=0,b=null}function N($=M,G=X,I=w){C++,n?.({startSegmentIndex:U,startGraphemeIndex:B,endSegmentIndex:$,endGraphemeIndex:G,width:I}),w=0,S=!1,E()}function T($,G){S=!0,U=$,B=0,M=$+1,X=0,w=G}function R($,G,I){S=!0,U=$,B=G,M=$,X=G+1,w=I}function P($,G){if(!S){T($,G);return}w+=G,M=$+1,X=0}function J($,G,I,Z){if(!G)return;let xe=$==="tab"?0:r[I],we=$==="tab"?Z:o[I];D=I+1,F=w-Z+xe,x=w-Z+we,b=$}function _($,G){let I=c[$];for(let Z=G;Z<I.length;Z++){let xe=I[Z];S?w+xe>g?(N(),R($,Z,xe)):(w+=xe,M=$,X=Z+1):R($,Z,xe)}S&&M===$&&X===I.length&&(M=$+1,X=0)}function ce($){if(b!=="soft-hyphen")return!1;let G=c[$];if(G==null)return!1;let{fitCount:I,fittedWidth:Z}=Vl(G,w,e,p,u);return I===0?!1:(w=Z,M=$,X=I,E(),I===G.length?(M=$+1,X=0,!0):(N($,I,Z+u),_($,I),!0))}function ge($){C++,n?.({startSegmentIndex:$.startSegmentIndex,startGraphemeIndex:0,endSegmentIndex:$.consumedEndSegmentIndex,endGraphemeIndex:0,width:0}),E()}for(let $=0;$<a.length;$++){let G=a[$];if(G.startSegmentIndex===G.endSegmentIndex){ge(G);continue}S=!1,w=0,U=G.startSegmentIndex,B=0,M=G.startSegmentIndex,X=0,E();let I=G.startSegmentIndex;for(;I<G.endSegmentIndex;){let Z=s[I],xe=Z==="space"||Z==="preserved-space"||Z==="tab"||Z==="zero-width-break"||Z==="soft-hyphen",we=Z==="tab"?Gl(w,l):i[I];if(Z==="soft-hyphen"){S&&(M=I+1,X=0,D=I+1,F=w+u,x=w+u,b=Z),I++;continue}if(!S){we>e&&c[I]!==null?_(I,0):T(I,we),J(Z,xe,I,we),I++;continue}if(w+we>g){let k=w+(Z==="tab"?0:r[I]),O=w+(Z==="tab"?we:o[I]);if(b==="soft-hyphen"&&f.preferEarlySoftHyphenBreak&&F<=g){N(D,0,x);continue}if(b==="soft-hyphen"&&ce(I)){I++;continue}if(xe&&k<=g){P(I,we),N(I+1,0,O),I++;continue}if(D>=0&&F<=g){if(M>D||M===D&&X>0){N();continue}let ie=D;N(ie,0,x),I=ie;continue}if(we>e&&c[I]!==null){N(),_(I,0),I++;continue}N();continue}P(I,we),J(Z,xe,I,we),I++}if(S){let Z=D===G.consumedEndSegmentIndex?x:w;N(G.consumedEndSegmentIndex,0,Z)}}return C}var ei=null;function $l(){return ei===null&&(ei=new Intl.Segmenter(void 0,{granularity:"grapheme"})),ei}function Kl(t){return t?{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 Jl(t,e){let n=[],i=[],r=0,o=!1,s=!1,c=!1;function u(){i.length!==0&&(n.push({text:i.length===1?i[0]:i.join(""),start:r}),i=[],o=!1,s=!1,c=!1)}function l(f,p,g){i=[f],r=p,o=g,s=rn(f),c=Dt.has(f)}function a(f,p){i.push(f),o=o||p;let g=rn(f);f.length===1&&je.has(f)?s=s||g:s=g,c=!1}for(let f of $l().segment(t)){let p=f.segment,g=_e(p);if(i.length===0){l(p,f.index,g);continue}if(c||tn.has(p)||je.has(p)||e.carryCJKAfterClosingQuote&&g&&s){a(p,g);continue}if(!o&&!g){a(p,g);continue}u(),l(p,f.index,g)}return u(),n}function Ql(t){if(t.length<=1)return t;let e=[],n=[t[0].text],i=t[0].start,r=_e(t[0].text),o=en(t[0].text);function s(){e.push({text:n.length===1?n[0]:n.join(""),start:i})}for(let c=1;c<t.length;c++){let u=t[c],l=_e(u.text),a=en(u.text);if(r&&o){n.push(u.text),r=r||l,o=a;continue}s(),n=[u.text],i=u.start,r=l,o=a}return s(),e}function Yl(t,e,n,i){let r=st(),{cache:o,emojiCorrection:s}=To(e,Co(t.normalized)),c=Ge("-",We("-",o),s),l=Ge(" ",We(" ",o),s)*8;if(t.len===0)return Kl(n);let a=[],f=[],p=[],g=[],C=t.chunks.length<=1,w=n?[]:null,S=[],U=n?[]:null,B=Array.from({length:t.len});function M(x,b,E,N,T,R,P){T!=="text"&&T!=="space"&&T!=="zero-width-break"&&(C=!1),a.push(b),f.push(E),p.push(N),g.push(T),w?.push(R),S.push(P),U!==null&&U.push(x)}function X(x,b,E,N,T){let R=We(x,o),P=Ge(x,R,s),J=b==="space"||b==="preserved-space"||b==="zero-width-break"?0:P,_=b==="space"||b==="zero-width-break"?0:P;if(T&&N&&x.length>1){let ce="sum-graphemes";vt(x)?ce="pair-context":r.preferPrefixWidthsForBreakableRuns&&(ce="segment-prefixes");let ge=Mo(x,R,o,s,ce);M(x,P,J,_,b,E,ge);return}M(x,P,J,_,b,E,null)}for(let x=0;x<t.len;x++){B[x]=a.length;let b=t.texts[x],E=t.isWordLike[x],N=t.kinds[x],T=t.starts[x];if(N==="soft-hyphen"){M(b,0,c,c,N,T,null);continue}if(N==="hard-break"){M(b,0,0,0,N,T,null);continue}if(N==="tab"){M(b,0,0,0,N,T,null);continue}let R=We(b,o);if(N==="text"&&R.containsCJK){let P=Jl(b,r),J=i==="keep-all"?Ql(P):P;for(let _=0;_<J.length;_++){let ce=J[_];X(ce.text,"text",T+ce.start,E,i==="keep-all"||!_e(ce.text))}continue}X(b,N,T,E,!0)}let D=Zl(t.chunks,B,a.length),F=w===null?null:co(t.normalized,w);return U!==null?{widths:a,lineEndFitAdvances:f,lineEndPaintAdvances:p,kinds:g,simpleLineWalkFastPath:C,segLevels:F,breakableFitAdvances:S,discretionaryHyphenWidth:c,tabStopAdvance:l,chunks:D,segments:U}:{widths:a,lineEndFitAdvances:f,lineEndPaintAdvances:p,kinds:g,simpleLineWalkFastPath:C,segLevels:F,breakableFitAdvances:S,discretionaryHyphenWidth:c,tabStopAdvance:l,chunks:D}}function Zl(t,e,n){let i=[];for(let r=0;r<t.length;r++){let o=t[r],s=o.startSegmentIndex<e.length?e[o.startSegmentIndex]:n,c=o.endSegmentIndex<e.length?e[o.endSegmentIndex]:n,u=o.consumedEndSegmentIndex<e.length?e[o.consumedEndSegmentIndex]:n;i.push({startSegmentIndex:s,endSegmentIndex:c,consumedEndSegmentIndex:u})}return i}function Xl(t,e,n,i){let r=i?.wordBreak??"normal",o=Eo(t,st(),i?.whiteSpace,r);return Yl(o,e,n,r)}function _o(t,e,n){return Xl(t,e,!1,n)}function Ro(t,e,n){let i=ko(t,e);return{lineCount:i,height:i*n}}var eu={maxWidth:1600,baseFontSize:78,minFontSize:42,fontWeight:900,fontFamily:"Outfit",step:2};function Lo(t,e){let n={...eu,...e},i=1.2;for(let r=n.baseFontSize;r>=n.minFontSize;r-=n.step){let o=`${n.fontWeight} ${r}px ${n.fontFamily}`,s=_o(t,o),{lineCount:c}=Ro(s,n.maxWidth,r*i);if(c<=1)return{fontSize:r,fits:!0}}return{fontSize:n.minFontSize,fits:!1}}window.__timelines=window.__timelines||{};window.__hyperframes={fitTextFontSize:Lo,getVariables:to};function Bo(){let t=window;t.__hyperframeRuntimeBootstrapped||(t.__hyperframeRuntimeBootstrapped=!0,lo())}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Bo,{once:!0}):Bo();})();\n';
7361
7361
  }
7362
7362
  });
7363
7363
 
@@ -27864,9 +27864,10 @@ __export(manager_exports2, {
27864
27864
  clearBrowser: () => clearBrowser,
27865
27865
  ensureBrowser: () => ensureBrowser,
27866
27866
  findBrowser: () => findBrowser,
27867
+ isLinuxArm: () => isLinuxArm,
27867
27868
  setBrowserPath: () => setBrowserPath
27868
27869
  });
27869
- import { execSync } from "child_process";
27870
+ import { execSync, spawnSync as spawnSync2 } from "child_process";
27870
27871
  import { existsSync as existsSync17, rmSync as rmSync4 } from "fs";
27871
27872
  import { homedir as homedir5 } from "os";
27872
27873
  import { join as join21 } from "path";
@@ -27928,6 +27929,45 @@ async function findBrowser() {
27928
27929
  if (fromCache) return fromCache;
27929
27930
  return findFromSystem2();
27930
27931
  }
27932
+ async function ensureLinuxArmBrowser(options) {
27933
+ void options;
27934
+ const existing = await findBrowser();
27935
+ if (existing) return existing;
27936
+ const hasApt = existsSync17("/usr/bin/apt-get");
27937
+ if (hasApt) {
27938
+ console.error(
27939
+ "\n\u{1F50D} Linux ARM64 detected \u2014 Chrome Headless Shell is not available for this platform."
27940
+ );
27941
+ console.error("\u{1F4E6} Auto-installing system Chromium via apt-get (this only happens once)...\n");
27942
+ const result = spawnSync2("apt-get", ["install", "-y", "chromium-browser"], {
27943
+ stdio: "inherit",
27944
+ timeout: 12e4
27945
+ });
27946
+ if (result.status === 0) {
27947
+ const afterInstall = await findBrowser();
27948
+ if (afterInstall) {
27949
+ console.error(`
27950
+ \u2705 Chromium installed at ${afterInstall.executablePath}
27951
+ `);
27952
+ return afterInstall;
27953
+ }
27954
+ } else {
27955
+ console.error("\n\u26A0\uFE0F apt-get exited with errors. Trying anyway...\n");
27956
+ const afterAttempt = await findBrowser();
27957
+ if (afterAttempt) return afterAttempt;
27958
+ }
27959
+ }
27960
+ throw new Error(
27961
+ `Chrome Headless Shell is not available for Linux ARM64 (DGX Spark, GB10, Jetson).
27962
+
27963
+ Install Chromium manually and point hyperframes to it:
27964
+
27965
+ sudo apt-get install -y chromium-browser
27966
+ export HYPERFRAMES_BROWSER_PATH=$(which chromium-browser)
27967
+
27968
+ Then re-run your command. The HYPERFRAMES_BROWSER_PATH env var persists for the session.`
27969
+ );
27970
+ }
27931
27971
  async function ensureBrowser(options) {
27932
27972
  const existing = await findBrowser();
27933
27973
  if (existing) return existing;
@@ -27935,6 +27975,9 @@ async function ensureBrowser(options) {
27935
27975
  if (!platform7) {
27936
27976
  throw new Error(`Unsupported platform: ${process.platform} ${process.arch}`);
27937
27977
  }
27978
+ if (isLinuxArm()) {
27979
+ return ensureLinuxArmBrowser(options);
27980
+ }
27938
27981
  const installed = await install({
27939
27982
  cacheDir: CACHE_DIR2,
27940
27983
  browser: Browser.CHROMEHEADLESSSHELL,
@@ -27951,6 +27994,9 @@ function clearBrowser() {
27951
27994
  rmSync4(CACHE_DIR2, { recursive: true, force: true });
27952
27995
  return true;
27953
27996
  }
27997
+ function isLinuxArm() {
27998
+ return detectBrowserPlatform() === "linux_arm";
27999
+ }
27954
28000
  var CHROME_VERSION, CACHE_DIR2, _browserPathOverride, SYSTEM_CHROME_PATHS;
27955
28001
  var init_manager2 = __esm({
27956
28002
  "src/browser/manager.ts"() {
@@ -35321,8 +35367,8 @@ var init_paths = __esm({
35321
35367
  });
35322
35368
 
35323
35369
  // ../producer/src/services/render/shared.ts
35324
- import { copyFileSync as copyFileSync2, mkdirSync as mkdirSync18, writeFileSync as writeFileSync14 } from "fs";
35325
- import { dirname as dirname11, join as join35, resolve as resolve17 } from "path";
35370
+ import { copyFileSync as copyFileSync2, cpSync, existsSync as existsSync32, mkdirSync as mkdirSync18, symlinkSync, writeFileSync as writeFileSync14 } from "fs";
35371
+ import { basename as basename3, dirname as dirname11, isAbsolute as isAbsolute6, join as join35, relative as relative3, resolve as resolve17 } from "path";
35326
35372
  function projectBrowserEndToCompositionTimeline(existingStart, browserStart, browserEnd) {
35327
35373
  return browserEnd + (existingStart - browserStart);
35328
35374
  }
@@ -35401,13 +35447,15 @@ function writeCompiledArtifacts(compiled, workDir, includeSummary) {
35401
35447
  writeFileSync14(join35(compileDir, "summary.json"), JSON.stringify(summary, null, 2), "utf-8");
35402
35448
  }
35403
35449
  }
35404
- function applyRenderModeHints(cfg, compiled, log2 = defaultLogger) {
35405
- if (cfg.forceScreenshot || !compiled.renderModeHints.recommendScreenshot) return;
35406
- cfg.forceScreenshot = true;
35450
+ function applyRenderModeHints(alreadyForced, compiled, log2 = defaultLogger) {
35451
+ if (alreadyForced || !compiled.renderModeHints.recommendScreenshot) {
35452
+ return { forceScreenshot: alreadyForced, autoSelected: false };
35453
+ }
35407
35454
  log2.warn("Auto-selected screenshot capture mode for render compatibility", {
35408
35455
  reasonCodes: compiled.renderModeHints.reasons.map((reason) => reason.code),
35409
35456
  reasons: compiled.renderModeHints.reasons.map((reason) => reason.message)
35410
35457
  });
35458
+ return { forceScreenshot: true, autoSelected: true };
35411
35459
  }
35412
35460
  function updateJobStatus(job, status, stage, progress, onProgress) {
35413
35461
  job.status = status;
@@ -35416,7 +35464,80 @@ function updateJobStatus(job, status, stage, progress, onProgress) {
35416
35464
  if (status === "failed" || status === "complete") job.completedAt = /* @__PURE__ */ new Date();
35417
35465
  if (onProgress) onProgress(job, stage);
35418
35466
  }
35419
- var BROWSER_MEDIA_EPSILON;
35467
+ function createCompiledFrameSrcResolver(compiledDir) {
35468
+ const compiledRoot = resolve17(compiledDir);
35469
+ return (framePath) => {
35470
+ const resolvedFramePath = resolve17(framePath);
35471
+ if (!isPathInside2(resolvedFramePath, compiledRoot)) return null;
35472
+ const relativePath = relative3(compiledRoot, resolvedFramePath);
35473
+ if (!relativePath || relativePath.startsWith("..") || isAbsolute6(relativePath)) {
35474
+ return null;
35475
+ }
35476
+ return `/${relativePath.split(/[\\/]+/).map((segment) => encodeURIComponent(segment)).join("/")}`;
35477
+ };
35478
+ }
35479
+ function createMemorySampler(intervalMs = 250) {
35480
+ let peakRss = 0;
35481
+ let peakHeap = 0;
35482
+ const sample = () => {
35483
+ try {
35484
+ const m2 = process.memoryUsage();
35485
+ if (m2.rss > peakRss) peakRss = m2.rss;
35486
+ if (m2.heapUsed > peakHeap) peakHeap = m2.heapUsed;
35487
+ } catch {
35488
+ }
35489
+ };
35490
+ sample();
35491
+ const interval = setInterval(sample, intervalMs);
35492
+ interval.unref();
35493
+ let stopped = false;
35494
+ return {
35495
+ // Resampling at read time means callers see the value at the
35496
+ // moment of inspection, not the last 250ms tick — important for
35497
+ // the success-path perf summary which captures peaks just before
35498
+ // returning.
35499
+ peakRssBytes: () => {
35500
+ sample();
35501
+ return peakRss;
35502
+ },
35503
+ peakHeapUsedBytes: () => {
35504
+ sample();
35505
+ return peakHeap;
35506
+ },
35507
+ stop: () => {
35508
+ if (stopped) return;
35509
+ stopped = true;
35510
+ sample();
35511
+ clearInterval(interval);
35512
+ }
35513
+ };
35514
+ }
35515
+ function materializeExtractedFramesForCompiledDir(extracted, compiledDir, options = {}) {
35516
+ const pathModule = options.pathModule ?? materializePathModule;
35517
+ const fileSystem = options.fileSystem ?? materializeFileSystem;
35518
+ const resolvedCompiledDir = pathModule.resolve(compiledDir);
35519
+ const compiledFrameRoot = pathModule.join(resolvedCompiledDir, "__hyperframes_video_frames");
35520
+ for (const ext of extracted) {
35521
+ const resolvedOut = pathModule.resolve(ext.outputDir);
35522
+ if (isPathInside2(resolvedOut, resolvedCompiledDir, { pathModule })) continue;
35523
+ const linkPath = pathModule.join(compiledFrameRoot, ext.videoId);
35524
+ if (!fileSystem.existsSync(linkPath)) {
35525
+ fileSystem.mkdirSync(pathModule.dirname(linkPath), { recursive: true });
35526
+ if (options.materializeSymlinks) {
35527
+ fileSystem.cpSync(resolvedOut, linkPath, { recursive: true });
35528
+ } else {
35529
+ fileSystem.symlinkSync(resolvedOut, linkPath);
35530
+ }
35531
+ }
35532
+ const remapped = /* @__PURE__ */ new Map();
35533
+ for (const [idx, framePath] of ext.framePaths) {
35534
+ remapped.set(idx, pathModule.join(linkPath, pathModule.basename(framePath)));
35535
+ }
35536
+ ext.framePaths = remapped;
35537
+ ext.outputDir = linkPath;
35538
+ }
35539
+ }
35540
+ var BROWSER_MEDIA_EPSILON, materializePathModule, materializeFileSystem;
35420
35541
  var init_shared = __esm({
35421
35542
  "../producer/src/services/render/shared.ts"() {
35422
35543
  "use strict";
@@ -35424,6 +35545,531 @@ var init_shared = __esm({
35424
35545
  init_logger();
35425
35546
  init_paths();
35426
35547
  BROWSER_MEDIA_EPSILON = 1e-4;
35548
+ materializePathModule = {
35549
+ resolve: resolve17,
35550
+ join: join35,
35551
+ dirname: dirname11,
35552
+ basename: basename3,
35553
+ relative: relative3,
35554
+ isAbsolute: isAbsolute6
35555
+ };
35556
+ materializeFileSystem = {
35557
+ existsSync: existsSync32,
35558
+ mkdirSync: mkdirSync18,
35559
+ symlinkSync,
35560
+ cpSync
35561
+ };
35562
+ }
35563
+ });
35564
+
35565
+ // ../producer/src/services/render/cleanup.ts
35566
+ import { rmSync as rmSync7 } from "fs";
35567
+ import { freemem as freemem2 } from "os";
35568
+ async function safeCleanup(label2, fn, log2 = defaultLogger) {
35569
+ try {
35570
+ await fn();
35571
+ } catch (err) {
35572
+ log2.debug(`Cleanup failed (${label2})`, {
35573
+ error: err instanceof Error ? err.message : String(err)
35574
+ });
35575
+ }
35576
+ }
35577
+ async function cleanupRenderResources(input) {
35578
+ const { fileServer, probeSession, workDir, debug, log: log2, label: label2 } = input;
35579
+ if (fileServer) {
35580
+ const fs4 = fileServer;
35581
+ await safeCleanup(
35582
+ `close file server (${label2})`,
35583
+ () => {
35584
+ fs4.close();
35585
+ },
35586
+ log2
35587
+ );
35588
+ }
35589
+ if (probeSession) {
35590
+ const session = probeSession;
35591
+ await safeCleanup(`close probe session (${label2})`, () => closeCaptureSession(session), log2);
35592
+ }
35593
+ if (!debug) {
35594
+ await safeCleanup(
35595
+ `remove workDir (${label2})`,
35596
+ () => rmSync7(workDir, { recursive: true, force: true }),
35597
+ log2
35598
+ );
35599
+ }
35600
+ }
35601
+ function buildRenderErrorDetails(input) {
35602
+ const errorMessage = input.error instanceof Error ? input.error.message : String(input.error);
35603
+ const errorStack = input.error instanceof Error ? input.error.stack : void 0;
35604
+ return {
35605
+ message: errorMessage,
35606
+ stack: errorStack,
35607
+ elapsedMs: Date.now() - input.pipelineStartMs,
35608
+ freeMemoryMB: Math.round(freemem2() / (1024 * 1024)),
35609
+ browserConsoleTail: input.lastBrowserConsole.length > 0 ? input.lastBrowserConsole.slice(-30) : void 0,
35610
+ perfStages: Object.keys(input.perfStages).length > 0 ? { ...input.perfStages } : void 0,
35611
+ hdrDiagnostics: input.hdrDiagnostics.videoExtractionFailures > 0 || input.hdrDiagnostics.imageDecodeFailures > 0 ? { ...input.hdrDiagnostics } : void 0
35612
+ };
35613
+ }
35614
+ var init_cleanup = __esm({
35615
+ "../producer/src/services/render/cleanup.ts"() {
35616
+ "use strict";
35617
+ init_src2();
35618
+ init_logger();
35619
+ }
35620
+ });
35621
+
35622
+ // ../producer/src/services/render/hdrMode.ts
35623
+ function resolveEffectiveHdrMode(input) {
35624
+ const hdrMode = input.hdrMode ?? "auto";
35625
+ const videoColorSpaces = (input.extractionResult?.extracted ?? []).map(
35626
+ (ext) => ext.metadata.colorSpace
35627
+ );
35628
+ const allColorSpaces = [...videoColorSpaces, ...input.imageColorSpaces];
35629
+ const info = allColorSpaces.length > 0 ? analyzeCompositionHdr(allColorSpaces) : null;
35630
+ let effectiveHdr;
35631
+ let forcedHdrWithoutSources = false;
35632
+ if (hdrMode === "force-sdr") {
35633
+ effectiveHdr = void 0;
35634
+ } else if (hdrMode === "force-hdr") {
35635
+ if (info?.hasHdr && info.dominantTransfer) {
35636
+ effectiveHdr = { transfer: info.dominantTransfer };
35637
+ } else {
35638
+ effectiveHdr = { transfer: "hlg" };
35639
+ forcedHdrWithoutSources = true;
35640
+ }
35641
+ } else if (info?.hasHdr && info.dominantTransfer) {
35642
+ effectiveHdr = { transfer: info.dominantTransfer };
35643
+ }
35644
+ if (effectiveHdr && input.outputFormat !== "mp4") {
35645
+ const hdrSourceReason = forcedHdrWithoutSources ? "HDR was forced without detected HDR sources" : "HDR source detected";
35646
+ input.log.warn(
35647
+ `[Render] ${hdrSourceReason}, but format is "${input.outputFormat}" \u2014 falling back to SDR. HDR + alpha is not supported. Use --format mp4 for HDR10 output.`
35648
+ );
35649
+ effectiveHdr = void 0;
35650
+ }
35651
+ if (forcedHdrWithoutSources) {
35652
+ input.log.warn(
35653
+ "[Render] HDR forced by --hdr flag, but no HDR sources were detected \u2014 defaulting to HLG. SDR-only compositions may look perceptually wrong on HDR displays."
35654
+ );
35655
+ }
35656
+ if (effectiveHdr) {
35657
+ let reason;
35658
+ if (hdrMode === "force-hdr") {
35659
+ reason = forcedHdrWithoutSources ? "forced by --hdr flag (no HDR sources detected \u2014 defaulting to HLG)" : "forced by --hdr flag";
35660
+ } else {
35661
+ reason = "auto-detected from source(s)";
35662
+ }
35663
+ input.log.info(
35664
+ `[Render] HDR ${reason} \u2014 output: ${effectiveHdr.transfer.toUpperCase()} (BT.2020, 10-bit H.265)`
35665
+ );
35666
+ } else if (hdrMode === "force-sdr") {
35667
+ input.log.info("[Render] SDR forced by --sdr flag");
35668
+ } else {
35669
+ input.log.info("[Render] No HDR sources detected \u2014 rendering SDR");
35670
+ }
35671
+ return effectiveHdr;
35672
+ }
35673
+ var init_hdrMode = __esm({
35674
+ "../producer/src/services/render/hdrMode.ts"() {
35675
+ "use strict";
35676
+ init_src2();
35677
+ }
35678
+ });
35679
+
35680
+ // ../producer/src/services/render/hdrPerf.ts
35681
+ function createHdrPerfCollector() {
35682
+ return {
35683
+ frames: 0,
35684
+ normalFrames: 0,
35685
+ transitionFrames: 0,
35686
+ domLayerCaptures: 0,
35687
+ hdrVideoLayerBlits: 0,
35688
+ hdrImageLayerBlits: 0,
35689
+ timings: {
35690
+ frameSeekMs: 0,
35691
+ frameInjectMs: 0,
35692
+ stackingQueryMs: 0,
35693
+ canvasClearMs: 0,
35694
+ normalCompositeMs: 0,
35695
+ transitionCompositeMs: 0,
35696
+ encoderWriteMs: 0,
35697
+ hdrVideoReadDecodeMs: 0,
35698
+ hdrVideoTransferMs: 0,
35699
+ hdrVideoBlitMs: 0,
35700
+ hdrImageTransferMs: 0,
35701
+ hdrImageBlitMs: 0,
35702
+ domLayerSeekMs: 0,
35703
+ domLayerInjectMs: 0,
35704
+ domMaskApplyMs: 0,
35705
+ domScreenshotMs: 0,
35706
+ domMaskRemoveMs: 0,
35707
+ domPngDecodeMs: 0,
35708
+ domBlitMs: 0
35709
+ }
35710
+ };
35711
+ }
35712
+ function addHdrTiming(perf, key2, startMs) {
35713
+ if (!perf) return;
35714
+ perf.timings[key2] += Date.now() - startMs;
35715
+ }
35716
+ function averageTiming(totalMs, count) {
35717
+ return count > 0 ? Math.round(totalMs / count * 100) / 100 : 0;
35718
+ }
35719
+ function finalizeHdrPerf(perf) {
35720
+ const avgMs = {};
35721
+ const perFrameKeys = [
35722
+ "frameSeekMs",
35723
+ "frameInjectMs",
35724
+ "stackingQueryMs",
35725
+ "canvasClearMs",
35726
+ "encoderWriteMs"
35727
+ ];
35728
+ for (const key2 of perFrameKeys) avgMs[key2] = averageTiming(perf.timings[key2], perf.frames);
35729
+ avgMs.normalCompositeMs = averageTiming(perf.timings.normalCompositeMs, perf.normalFrames);
35730
+ avgMs.transitionCompositeMs = averageTiming(
35731
+ perf.timings.transitionCompositeMs,
35732
+ perf.transitionFrames
35733
+ );
35734
+ const perDomLayerKeys = [
35735
+ "domLayerSeekMs",
35736
+ "domLayerInjectMs",
35737
+ "domMaskApplyMs",
35738
+ "domScreenshotMs",
35739
+ "domMaskRemoveMs",
35740
+ "domPngDecodeMs",
35741
+ "domBlitMs"
35742
+ ];
35743
+ for (const key2 of perDomLayerKeys) {
35744
+ avgMs[key2] = averageTiming(perf.timings[key2], perf.domLayerCaptures);
35745
+ }
35746
+ const perHdrVideoKeys = [
35747
+ "hdrVideoReadDecodeMs",
35748
+ "hdrVideoTransferMs",
35749
+ "hdrVideoBlitMs"
35750
+ ];
35751
+ for (const key2 of perHdrVideoKeys) {
35752
+ avgMs[key2] = averageTiming(perf.timings[key2], perf.hdrVideoLayerBlits);
35753
+ }
35754
+ const perHdrImageKeys = ["hdrImageTransferMs", "hdrImageBlitMs"];
35755
+ for (const key2 of perHdrImageKeys) {
35756
+ avgMs[key2] = averageTiming(perf.timings[key2], perf.hdrImageLayerBlits);
35757
+ }
35758
+ return {
35759
+ frames: perf.frames,
35760
+ normalFrames: perf.normalFrames,
35761
+ transitionFrames: perf.transitionFrames,
35762
+ domLayerCaptures: perf.domLayerCaptures,
35763
+ hdrVideoLayerBlits: perf.hdrVideoLayerBlits,
35764
+ hdrImageLayerBlits: perf.hdrImageLayerBlits,
35765
+ timings: { ...perf.timings },
35766
+ avgMs
35767
+ };
35768
+ }
35769
+ var init_hdrPerf = __esm({
35770
+ "../producer/src/services/render/hdrPerf.ts"() {
35771
+ "use strict";
35772
+ }
35773
+ });
35774
+
35775
+ // ../producer/src/services/render/perfSummary.ts
35776
+ function buildRenderPerfSummary(input) {
35777
+ return {
35778
+ renderId: input.job.id,
35779
+ totalElapsedMs: input.totalElapsedMs,
35780
+ // RenderPerfSummary surfaces fps as a decimal because it lands in JSON
35781
+ // payloads (CLI telemetry, regression-harness reports) where a single
35782
+ // number is friendlier than `{num,den}`. Callers needing the rational
35783
+ // back can read `job.config.fps`.
35784
+ fps: fpsToNumber(input.job.config.fps),
35785
+ quality: input.job.config.quality,
35786
+ workers: input.workerCount,
35787
+ chunkedEncode: input.enableChunkedEncode,
35788
+ chunkSizeFrames: input.enableChunkedEncode ? input.chunkedEncodeSize : null,
35789
+ compositionDurationSeconds: input.compositionDurationSeconds,
35790
+ totalFrames: input.totalFrames,
35791
+ resolution: { width: input.outputWidth, height: input.outputHeight },
35792
+ videoCount: input.videoCount,
35793
+ audioCount: input.audioCount,
35794
+ stages: input.perfStages,
35795
+ videoExtractBreakdown: input.videoExtractBreakdown,
35796
+ tmpPeakBytes: input.tmpPeakBytes,
35797
+ captureCalibration: input.captureCalibration ? {
35798
+ sampledFrames: input.captureCalibration.samples.map((sample) => sample.frameIndex),
35799
+ p95Ms: input.captureCalibration.estimate.p95Ms,
35800
+ multiplier: input.captureCalibration.estimate.multiplier,
35801
+ reasons: input.captureCalibration.estimate.reasons
35802
+ } : void 0,
35803
+ captureAttempts: input.captureAttempts.length > 0 ? input.captureAttempts : void 0,
35804
+ hdrDiagnostics: input.hdrDiagnostics.videoExtractionFailures > 0 || input.hdrDiagnostics.imageDecodeFailures > 0 ? { ...input.hdrDiagnostics } : void 0,
35805
+ hdrPerf: input.hdrPerf ? finalizeHdrPerf(input.hdrPerf) : void 0,
35806
+ captureAvgMs: input.totalFrames > 0 ? Math.round((input.perfStages.captureMs ?? 0) / input.totalFrames) : void 0,
35807
+ peakRssMb: Math.round(input.peakRssBytes / (1024 * 1024)),
35808
+ peakHeapUsedMb: Math.round(input.peakHeapUsedBytes / (1024 * 1024))
35809
+ };
35810
+ }
35811
+ var init_perfSummary = __esm({
35812
+ "../producer/src/services/render/perfSummary.ts"() {
35813
+ "use strict";
35814
+ init_src();
35815
+ init_hdrPerf();
35816
+ }
35817
+ });
35818
+
35819
+ // ../producer/src/services/render/captureCost.ts
35820
+ import { join as join36 } from "path";
35821
+ function estimateCaptureCostMultiplier(compiled) {
35822
+ let multiplier = 1;
35823
+ const reasons = [];
35824
+ if (compiled.hasShaderTransitions) {
35825
+ multiplier += 2;
35826
+ reasons.push("shader-transitions");
35827
+ }
35828
+ const reasonCodes = new Set(compiled.renderModeHints.reasons.map((reason) => reason.code));
35829
+ if (reasonCodes.has("requestAnimationFrame")) {
35830
+ multiplier += 1;
35831
+ reasons.push("requestAnimationFrame");
35832
+ }
35833
+ if (reasonCodes.has("iframe")) {
35834
+ multiplier += 0.5;
35835
+ reasons.push("iframe");
35836
+ }
35837
+ return {
35838
+ multiplier: Math.round(multiplier * 100) / 100,
35839
+ reasons
35840
+ };
35841
+ }
35842
+ function combineCaptureCostEstimates(staticCost, measuredCost) {
35843
+ if (!measuredCost || measuredCost.multiplier <= 1) return staticCost;
35844
+ if (staticCost.multiplier >= measuredCost.multiplier) {
35845
+ return {
35846
+ multiplier: staticCost.multiplier,
35847
+ reasons: [...staticCost.reasons, ...measuredCost.reasons],
35848
+ p95Ms: measuredCost.p95Ms
35849
+ };
35850
+ }
35851
+ return {
35852
+ multiplier: measuredCost.multiplier,
35853
+ reasons: [...measuredCost.reasons, ...staticCost.reasons],
35854
+ p95Ms: measuredCost.p95Ms
35855
+ };
35856
+ }
35857
+ function resolveRenderWorkerCount(totalFrames, requestedWorkers, cfg, compiled, log2 = defaultLogger, measuredCaptureCost) {
35858
+ const captureCost = combineCaptureCostEstimates(
35859
+ estimateCaptureCostMultiplier(compiled),
35860
+ measuredCaptureCost
35861
+ );
35862
+ const workerCount = calculateOptimalWorkers(totalFrames, requestedWorkers, {
35863
+ ...cfg,
35864
+ captureCostMultiplier: captureCost.multiplier
35865
+ });
35866
+ if (requestedWorkers !== void 0 || captureCost.multiplier <= 1) {
35867
+ return workerCount;
35868
+ }
35869
+ const baselineWorkers = calculateOptimalWorkers(totalFrames, void 0, cfg);
35870
+ if (workerCount < baselineWorkers) {
35871
+ log2.warn(
35872
+ "[Render] Reduced auto worker count for high-cost capture workload to avoid Chrome compositor starvation.",
35873
+ {
35874
+ from: baselineWorkers,
35875
+ to: workerCount,
35876
+ costMultiplier: captureCost.multiplier,
35877
+ reasons: captureCost.reasons
35878
+ }
35879
+ );
35880
+ }
35881
+ return workerCount;
35882
+ }
35883
+ function createCaptureCalibrationConfig(cfg) {
35884
+ return {
35885
+ ...cfg,
35886
+ protocolTimeout: Math.min(cfg.protocolTimeout, CAPTURE_CALIBRATION_PROTOCOL_TIMEOUT_MS)
35887
+ };
35888
+ }
35889
+ function estimateMeasuredCaptureCostMultiplier(samples) {
35890
+ if (samples.length === 0) {
35891
+ return { multiplier: 1, reasons: [] };
35892
+ }
35893
+ const sorted = [...samples].sort((a, b2) => a.captureTimeMs - b2.captureTimeMs);
35894
+ const p95Index = Math.max(0, Math.ceil(sorted.length * 0.95) - 1);
35895
+ const p95Sample = sorted[p95Index] ?? sorted[sorted.length - 1];
35896
+ if (!p95Sample) {
35897
+ return { multiplier: 1, reasons: [] };
35898
+ }
35899
+ const p95Ms = Math.round(p95Sample.captureTimeMs);
35900
+ const multiplier = Math.min(
35901
+ MAX_MEASURED_CAPTURE_COST_MULTIPLIER,
35902
+ Math.max(1, Math.round(p95Ms / CAPTURE_CALIBRATION_TARGET_MS * 100) / 100)
35903
+ );
35904
+ return {
35905
+ multiplier,
35906
+ reasons: multiplier > 1 ? [`calibration-p95=${p95Ms}ms`] : [],
35907
+ p95Ms
35908
+ };
35909
+ }
35910
+ function selectCaptureCalibrationFrames(totalFrames) {
35911
+ if (totalFrames <= 0) return [];
35912
+ const lastFrame = totalFrames - 1;
35913
+ const candidates = [
35914
+ 0,
35915
+ Math.floor(totalFrames * 0.25),
35916
+ Math.floor(totalFrames * 0.5),
35917
+ Math.floor(totalFrames * 0.75),
35918
+ lastFrame
35919
+ ];
35920
+ return Array.from(
35921
+ new Set(candidates.map((frame) => Math.max(0, Math.min(lastFrame, frame))))
35922
+ ).sort((a, b2) => a - b2);
35923
+ }
35924
+ async function measureCaptureCostFromSession(session, totalFrames, fps) {
35925
+ const sampledFrames = selectCaptureCalibrationFrames(totalFrames);
35926
+ const samples = [];
35927
+ for (const frameIndex of sampledFrames) {
35928
+ const time = frameIndex / fps;
35929
+ const startedAt = Date.now();
35930
+ const result = await captureFrameToBuffer(session, frameIndex, time);
35931
+ samples.push({
35932
+ frameIndex,
35933
+ captureTimeMs: result.captureTimeMs || Date.now() - startedAt
35934
+ });
35935
+ }
35936
+ return {
35937
+ estimate: estimateMeasuredCaptureCostMultiplier(samples),
35938
+ samples
35939
+ };
35940
+ }
35941
+ function logCaptureCalibrationResult(calibration, log2) {
35942
+ if (calibration.estimate.multiplier > 1) {
35943
+ log2.warn("[Render] Measured slow frame capture during auto-worker calibration.", {
35944
+ multiplier: calibration.estimate.multiplier,
35945
+ p95Ms: calibration.estimate.p95Ms,
35946
+ sampledFrames: calibration.samples.map((sample) => sample.frameIndex)
35947
+ });
35948
+ } else {
35949
+ log2.debug("[Render] Auto-worker calibration kept baseline capture cost.", {
35950
+ p95Ms: calibration.estimate.p95Ms,
35951
+ sampledFrames: calibration.samples.map((sample) => sample.frameIndex)
35952
+ });
35953
+ }
35954
+ }
35955
+ function createFailedCaptureCalibrationEstimate(reason) {
35956
+ return {
35957
+ estimate: {
35958
+ multiplier: MAX_MEASURED_CAPTURE_COST_MULTIPLIER,
35959
+ reasons: [reason]
35960
+ },
35961
+ samples: []
35962
+ };
35963
+ }
35964
+ async function runCaptureCalibration(input) {
35965
+ const {
35966
+ cfg,
35967
+ fileServer,
35968
+ workDir,
35969
+ log: log2,
35970
+ job,
35971
+ totalFrames,
35972
+ buildCaptureOptions,
35973
+ createRenderVideoFrameInjector,
35974
+ assertNotAborted
35975
+ } = input;
35976
+ let probeSession = input.probeSession;
35977
+ let forceScreenshot = input.forceScreenshot;
35978
+ let lastBrowserConsole = [];
35979
+ const fps = fpsToNumber(job.config.fps);
35980
+ const sessionRef = { current: null };
35981
+ const runOneCalibration = async (sessionDir, sessionCfg) => {
35982
+ const session = await createCaptureSession(
35983
+ fileServer.url,
35984
+ sessionDir,
35985
+ buildCaptureOptions(),
35986
+ createRenderVideoFrameInjector(),
35987
+ sessionCfg
35988
+ );
35989
+ sessionRef.current = session;
35990
+ if (!session.isInitialized) {
35991
+ await initializeSession(session);
35992
+ }
35993
+ assertNotAborted();
35994
+ const result = await measureCaptureCostFromSession(session, totalFrames, fps);
35995
+ logCaptureCalibrationResult(result, log2);
35996
+ return result;
35997
+ };
35998
+ const calibrationCfg = createCaptureCalibrationConfig({ ...cfg, forceScreenshot });
35999
+ let calibration;
36000
+ try {
36001
+ calibration = await runOneCalibration(join36(workDir, "capture-calibration"), calibrationCfg);
36002
+ } catch (error) {
36003
+ const shouldFallback = !forceScreenshot && shouldFallbackToScreenshotAfterCalibrationError(error);
36004
+ if (!shouldFallback) {
36005
+ calibration = createFailedCaptureCalibrationEstimate("calibration-failed");
36006
+ log2.warn("[Render] Auto-worker calibration failed; using conservative worker budget.", {
36007
+ protocolTimeout: calibrationCfg.protocolTimeout,
36008
+ error: error instanceof Error ? error.message : String(error)
36009
+ });
36010
+ } else {
36011
+ forceScreenshot = true;
36012
+ if (probeSession) {
36013
+ lastBrowserConsole = probeSession.browserConsoleBuffer;
36014
+ await closeCaptureSession(probeSession).catch(() => {
36015
+ });
36016
+ probeSession = null;
36017
+ }
36018
+ if (sessionRef.current) {
36019
+ lastBrowserConsole = sessionRef.current.browserConsoleBuffer;
36020
+ await closeCaptureSession(sessionRef.current).catch(() => {
36021
+ });
36022
+ sessionRef.current = null;
36023
+ }
36024
+ log2.warn(
36025
+ "[Render] BeginFrame auto-worker calibration timed out; retrying calibration in screenshot capture mode.",
36026
+ {
36027
+ protocolTimeout: calibrationCfg.protocolTimeout,
36028
+ error: error instanceof Error ? error.message : String(error)
36029
+ }
36030
+ );
36031
+ const screenshotCfg = createCaptureCalibrationConfig({ ...cfg, forceScreenshot: true });
36032
+ try {
36033
+ calibration = await runOneCalibration(
36034
+ join36(workDir, "capture-calibration-screenshot"),
36035
+ screenshotCfg
36036
+ );
36037
+ } catch (fallbackError) {
36038
+ calibration = createFailedCaptureCalibrationEstimate("calibration-screenshot-failed");
36039
+ log2.warn(
36040
+ "[Render] Screenshot auto-worker calibration failed after BeginFrame fallback; using conservative worker budget.",
36041
+ {
36042
+ protocolTimeout: screenshotCfg.protocolTimeout,
36043
+ error: fallbackError instanceof Error ? fallbackError.message : String(fallbackError)
36044
+ }
36045
+ );
36046
+ }
36047
+ }
36048
+ } finally {
36049
+ if (sessionRef.current) {
36050
+ lastBrowserConsole = sessionRef.current.browserConsoleBuffer;
36051
+ await closeCaptureSession(sessionRef.current).catch(() => {
36052
+ });
36053
+ }
36054
+ }
36055
+ return { calibration, forceScreenshot, probeSession, lastBrowserConsole };
36056
+ }
36057
+ function shouldFallbackToScreenshotAfterCalibrationError(error) {
36058
+ const message = error instanceof Error ? error.message : String(error);
36059
+ return /HeadlessExperimental\.beginFrame timed out|beginFrame probe timeout|Another frame is pending|Frame still pending|Protocol error.*HeadlessExperimental\.beginFrame|Runtime\.callFunctionOn timed out|Runtime\.evaluate timed out/i.test(
36060
+ message
36061
+ );
36062
+ }
36063
+ var CAPTURE_CALIBRATION_TARGET_MS, MAX_MEASURED_CAPTURE_COST_MULTIPLIER, CAPTURE_CALIBRATION_PROTOCOL_TIMEOUT_MS;
36064
+ var init_captureCost = __esm({
36065
+ "../producer/src/services/render/captureCost.ts"() {
36066
+ "use strict";
36067
+ init_src();
36068
+ init_src2();
36069
+ init_logger();
36070
+ CAPTURE_CALIBRATION_TARGET_MS = 600;
36071
+ MAX_MEASURED_CAPTURE_COST_MULTIPLIER = 8;
36072
+ CAPTURE_CALIBRATION_PROTOCOL_TIMEOUT_MS = 3e4;
35427
36073
  }
35428
36074
  });
35429
36075
 
@@ -35496,9 +36142,9 @@ var init_fontData_generated = __esm({
35496
36142
  });
35497
36143
 
35498
36144
  // ../producer/src/services/deterministicFonts.ts
35499
- import { existsSync as existsSync32, mkdirSync as mkdirSync19, readFileSync as readFileSync23, writeFileSync as writeFileSync15 } from "fs";
36145
+ import { existsSync as existsSync33, mkdirSync as mkdirSync19, readFileSync as readFileSync23, writeFileSync as writeFileSync15 } from "fs";
35500
36146
  import { homedir as homedir8 } from "os";
35501
- import { join as join36 } from "path";
36147
+ import { join as join37 } from "path";
35502
36148
  function normalizeFamilyName(family) {
35503
36149
  return family.trim().replace(/^['"]|['"]$/g, "").trim().toLowerCase();
35504
36150
  }
@@ -35609,14 +36255,14 @@ function fontSlug(familyName) {
35609
36255
  return familyName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
35610
36256
  }
35611
36257
  function fontCacheDir(slug) {
35612
- const dir = join36(GOOGLE_FONTS_CACHE_DIR, slug);
35613
- if (!existsSync32(dir)) {
36258
+ const dir = join37(GOOGLE_FONTS_CACHE_DIR, slug);
36259
+ if (!existsSync33(dir)) {
35614
36260
  mkdirSync19(dir, { recursive: true });
35615
36261
  }
35616
36262
  return dir;
35617
36263
  }
35618
36264
  function cachedWoff2Path(slug, weight, style) {
35619
- return join36(fontCacheDir(slug), `${weight}-${style}.woff2`);
36265
+ return join37(fontCacheDir(slug), `${weight}-${style}.woff2`);
35620
36266
  }
35621
36267
  async function fetchGoogleFont(familyName) {
35622
36268
  const slug = fontSlug(familyName);
@@ -35642,7 +36288,7 @@ async function fetchGoogleFont(familyName) {
35642
36288
  const woff2Url = match[3] || "";
35643
36289
  if (!woff2Url) continue;
35644
36290
  const cachePath2 = cachedWoff2Path(slug, weight, style);
35645
- if (!existsSync32(cachePath2)) {
36291
+ if (!existsSync33(cachePath2)) {
35646
36292
  try {
35647
36293
  const fontRes = await fetch(woff2Url);
35648
36294
  if (!fontRes.ok) continue;
@@ -35828,14 +36474,14 @@ var init_deterministicFonts = __esm({
35828
36474
  poppins: "poppins",
35829
36475
  "segoe ui": "roboto"
35830
36476
  };
35831
- GOOGLE_FONTS_CACHE_DIR = join36(homedir8(), ".cache", "hyperframes", "fonts");
36477
+ GOOGLE_FONTS_CACHE_DIR = join37(homedir8(), ".cache", "hyperframes", "fonts");
35832
36478
  WOFF2_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36";
35833
36479
  }
35834
36480
  });
35835
36481
 
35836
36482
  // ../producer/src/services/htmlCompiler.ts
35837
- import { readFileSync as readFileSync24, existsSync as existsSync33, mkdirSync as mkdirSync20 } from "fs";
35838
- import { join as join37, dirname as dirname12, resolve as resolve18 } from "path";
36483
+ import { readFileSync as readFileSync24, existsSync as existsSync34, mkdirSync as mkdirSync20 } from "fs";
36484
+ import { join as join38, dirname as dirname12, resolve as resolve18 } from "path";
35839
36485
  function dedupeElementsById(elements) {
35840
36486
  const deduped = /* @__PURE__ */ new Map();
35841
36487
  for (const element of elements) {
@@ -35896,16 +36542,16 @@ function detectShaderTransitionUsage(html) {
35896
36542
  async function resolveMediaDuration(src, mediaStart, baseDir, downloadDir, tagName19) {
35897
36543
  let filePath = src;
35898
36544
  if (isHttpUrl(src)) {
35899
- if (!existsSync33(downloadDir)) mkdirSync20(downloadDir, { recursive: true });
36545
+ if (!existsSync34(downloadDir)) mkdirSync20(downloadDir, { recursive: true });
35900
36546
  try {
35901
36547
  filePath = await downloadToTemp(src, downloadDir);
35902
36548
  } catch {
35903
36549
  return { duration: 0, resolvedPath: src };
35904
36550
  }
35905
36551
  } else if (!filePath.startsWith("/")) {
35906
- filePath = join37(baseDir, filePath);
36552
+ filePath = join38(baseDir, filePath);
35907
36553
  }
35908
- if (!existsSync33(filePath)) {
36554
+ if (!existsSync34(filePath)) {
35909
36555
  return { duration: 0, resolvedPath: filePath };
35910
36556
  }
35911
36557
  let metadata;
@@ -35983,7 +36629,7 @@ async function parseSubCompositions(html, projectDir, downloadDir, parentOffset
35983
36629
  if (visited.has(filePath)) {
35984
36630
  continue;
35985
36631
  }
35986
- if (!existsSync33(filePath)) {
36632
+ if (!existsSync34(filePath)) {
35987
36633
  continue;
35988
36634
  }
35989
36635
  const rawSubHtml = readFileSync24(filePath, "utf-8");
@@ -36172,7 +36818,7 @@ function inlineSubCompositions(html, subCompositions, projectDir) {
36172
36818
  let compHtml = subCompositions.get(srcPath) || null;
36173
36819
  if (!compHtml) {
36174
36820
  const filePath = resolve18(projectDir, srcPath);
36175
- if (existsSync33(filePath)) {
36821
+ if (existsSync34(filePath)) {
36176
36822
  compHtml = readFileSync24(filePath, "utf-8");
36177
36823
  }
36178
36824
  }
@@ -36374,7 +37020,7 @@ function collectExternalAssets(html, projectDir) {
36374
37020
  if (isPathInside2(absPath, absProjectDir)) {
36375
37021
  return null;
36376
37022
  }
36377
- if (!existsSync33(absPath)) return null;
37023
+ if (!existsSync34(absPath)) return null;
36378
37024
  const safeKey = toExternalAssetKey(absPath);
36379
37025
  externalAssets.set(safeKey, absPath);
36380
37026
  return safeKey;
@@ -36613,14 +37259,16 @@ var init_htmlCompiler2 = __esm({
36613
37259
  });
36614
37260
 
36615
37261
  // ../producer/src/services/render/stages/compileStage.ts
36616
- import { join as join38 } from "path";
37262
+ import { join as join39 } from "path";
36617
37263
  async function runCompileStage(input) {
36618
37264
  const { projectDir, workDir, htmlPath, entryFile, job, cfg, needsAlpha, log: log2, assertNotAborted } = input;
36619
37265
  const compileStart = Date.now();
36620
- const compiled = await compileForRender(projectDir, htmlPath, join38(workDir, "downloads"));
37266
+ const compiled = await compileForRender(projectDir, htmlPath, join39(workDir, "downloads"));
36621
37267
  assertNotAborted();
36622
37268
  const compileOnlyMs = Date.now() - compileStart;
36623
- applyRenderModeHints(cfg, compiled, log2);
37269
+ const callerForced = cfg.forceScreenshot || needsAlpha;
37270
+ const { forceScreenshot } = applyRenderModeHints(callerForced, compiled, log2);
37271
+ cfg.forceScreenshot = forceScreenshot;
36624
37272
  writeCompiledArtifacts(compiled, workDir, Boolean(job.config.debug));
36625
37273
  log2.info("Compiled composition metadata", {
36626
37274
  entryFile,
@@ -36659,7 +37307,15 @@ async function runCompileStage(input) {
36659
37307
  deviceScaleFactor
36660
37308
  });
36661
37309
  }
36662
- return { compiled, composition, deviceScaleFactor, outputWidth, outputHeight, compileOnlyMs };
37310
+ return {
37311
+ compiled,
37312
+ composition,
37313
+ deviceScaleFactor,
37314
+ outputWidth,
37315
+ outputHeight,
37316
+ compileOnlyMs,
37317
+ forceScreenshot
37318
+ };
36663
37319
  }
36664
37320
  var init_compileStage = __esm({
36665
37321
  "../producer/src/services/render/stages/compileStage.ts"() {
@@ -36670,7 +37326,7 @@ var init_compileStage = __esm({
36670
37326
  });
36671
37327
 
36672
37328
  // ../producer/src/services/render/stages/probeStage.ts
36673
- import { join as join39 } from "path";
37329
+ import { join as join40 } from "path";
36674
37330
  async function runProbeStage(input) {
36675
37331
  const {
36676
37332
  projectDir,
@@ -36698,7 +37354,7 @@ async function runProbeStage(input) {
36698
37354
  reasons.push(`${compiled.unresolvedCompositions.length} unresolved composition(s)`);
36699
37355
  fileServer = await createFileServer2({
36700
37356
  projectDir,
36701
- compiledDir: join39(workDir, "compiled"),
37357
+ compiledDir: join40(workDir, "compiled"),
36702
37358
  port: 0,
36703
37359
  preHeadScripts: [VIRTUAL_TIME_SHIM]
36704
37360
  });
@@ -36713,7 +37369,7 @@ async function runProbeStage(input) {
36713
37369
  };
36714
37370
  probeSession = await createCaptureSession(
36715
37371
  fileServer.url,
36716
- join39(workDir, "probe"),
37372
+ join40(workDir, "probe"),
36717
37373
  captureOpts,
36718
37374
  null,
36719
37375
  cfg
@@ -36745,7 +37401,7 @@ async function runProbeStage(input) {
36745
37401
  compiled,
36746
37402
  resolutions,
36747
37403
  projectDir,
36748
- join39(workDir, "downloads")
37404
+ join40(workDir, "downloads")
36749
37405
  );
36750
37406
  assertNotAborted();
36751
37407
  composition.videos = compiled.videos;
@@ -36916,8 +37572,8 @@ var init_probeStage = __esm({
36916
37572
  });
36917
37573
 
36918
37574
  // ../producer/src/services/render/stages/extractVideosStage.ts
36919
- import { existsSync as existsSync34 } from "fs";
36920
- import { isAbsolute as isAbsolute6, join as join40 } from "path";
37575
+ import { existsSync as existsSync35 } from "fs";
37576
+ import { isAbsolute as isAbsolute7, join as join41 } from "path";
36921
37577
  async function runExtractVideosStage(input) {
36922
37578
  const {
36923
37579
  projectDir,
@@ -36939,8 +37595,8 @@ async function runExtractVideosStage(input) {
36939
37595
  if (job.config.hdrMode !== "force-sdr" && composition.videos.length > 0) {
36940
37596
  await Promise.all(
36941
37597
  composition.videos.map(async (v2) => {
36942
- const videoPath = isAbsolute6(v2.src) ? v2.src : resolveProjectRelativeSrc(v2.src, projectDir, compiledDir);
36943
- if (!existsSync34(videoPath)) return;
37598
+ const videoPath = isAbsolute7(v2.src) ? v2.src : resolveProjectRelativeSrc(v2.src, projectDir, compiledDir);
37599
+ if (!existsSync35(videoPath)) return;
36944
37600
  const meta = await extractMediaMetadata(videoPath);
36945
37601
  if (isHdrColorSpace(meta.colorSpace)) {
36946
37602
  nativeHdrVideoIds.add(v2.id);
@@ -36958,10 +37614,10 @@ async function runExtractVideosStage(input) {
36958
37614
  composition.images.map(async (img) => {
36959
37615
  let imgPath = img.src;
36960
37616
  if (!imgPath.startsWith("/")) {
36961
- const fromCompiled = existsSync34(join40(compiledDir, imgPath)) ? join40(compiledDir, imgPath) : join40(projectDir, imgPath);
37617
+ const fromCompiled = existsSync35(join41(compiledDir, imgPath)) ? join41(compiledDir, imgPath) : join41(projectDir, imgPath);
36962
37618
  imgPath = fromCompiled;
36963
37619
  }
36964
- if (!existsSync34(imgPath)) return null;
37620
+ if (!existsSync35(imgPath)) return null;
36965
37621
  const meta = await extractMediaMetadata(imgPath);
36966
37622
  if (isHdrColorSpace(meta.colorSpace)) {
36967
37623
  nativeHdrImageIds.add(img.id);
@@ -36983,7 +37639,7 @@ async function runExtractVideosStage(input) {
36983
37639
  // output framerate exact.
36984
37640
  {
36985
37641
  fps: fpsToNumber(job.config.fps),
36986
- outputDir: join40(compiledDir, "__hyperframes_video_frames")
37642
+ outputDir: join41(compiledDir, "__hyperframes_video_frames")
36987
37643
  },
36988
37644
  abortSignal,
36989
37645
  { extractCacheDir: cfg.extractCacheDir },
@@ -37046,17 +37702,17 @@ var init_extractVideosStage = __esm({
37046
37702
  });
37047
37703
 
37048
37704
  // ../producer/src/services/render/stages/audioStage.ts
37049
- import { join as join41 } from "path";
37705
+ import { join as join42 } from "path";
37050
37706
  async function runAudioStage(input) {
37051
37707
  const { projectDir, workDir, compiledDir, duration, audios, abortSignal, assertNotAborted } = input;
37052
37708
  const stage3Start = Date.now();
37053
- const audioOutputPath = join41(workDir, "audio.aac");
37709
+ const audioOutputPath = join42(workDir, "audio.aac");
37054
37710
  let hasAudio = false;
37055
37711
  if (audios.length > 0) {
37056
37712
  const audioResult = await processCompositionAudio(
37057
37713
  audios,
37058
37714
  projectDir,
37059
- join41(workDir, "audio-work"),
37715
+ join42(workDir, "audio-work"),
37060
37716
  audioOutputPath,
37061
37717
  duration,
37062
37718
  abortSignal,
@@ -37085,6 +37741,7 @@ async function runCaptureStage(input) {
37085
37741
  job,
37086
37742
  totalFrames,
37087
37743
  cfg,
37744
+ forceScreenshot,
37088
37745
  log: log2,
37089
37746
  captureAttempts,
37090
37747
  buildCaptureOptions,
@@ -37096,6 +37753,7 @@ async function runCaptureStage(input) {
37096
37753
  } = input;
37097
37754
  let { workerCount, probeSession } = input;
37098
37755
  let lastBrowserConsole = [];
37756
+ const captureCfg = cfg.forceScreenshot === forceScreenshot ? cfg : { ...cfg, forceScreenshot };
37099
37757
  if (workerCount > 1) {
37100
37758
  const attempts = await executeDiskCaptureWithAdaptiveRetry({
37101
37759
  serverUrl: fileServer.url,
@@ -37122,7 +37780,7 @@ async function runCaptureStage(input) {
37122
37780
  );
37123
37781
  }
37124
37782
  },
37125
- cfg,
37783
+ cfg: captureCfg,
37126
37784
  log: log2
37127
37785
  });
37128
37786
  captureAttempts.push(...attempts);
@@ -37142,7 +37800,7 @@ async function runCaptureStage(input) {
37142
37800
  framesDir,
37143
37801
  buildCaptureOptions(),
37144
37802
  videoInjector,
37145
- cfg
37803
+ captureCfg
37146
37804
  );
37147
37805
  if (probeSession) {
37148
37806
  prepareCaptureSessionForReuse(session, framesDir, videoInjector);
@@ -37195,6 +37853,7 @@ async function runCaptureStreamingStage(input) {
37195
37853
  job,
37196
37854
  totalFrames,
37197
37855
  cfg,
37856
+ forceScreenshot,
37198
37857
  log: log2,
37199
37858
  outputFormat,
37200
37859
  streamingEncoderOptions,
@@ -37206,6 +37865,7 @@ async function runCaptureStreamingStage(input) {
37206
37865
  } = input;
37207
37866
  let { workerCount, probeSession } = input;
37208
37867
  let lastBrowserConsole = [];
37868
+ const captureCfg = cfg.forceScreenshot === forceScreenshot ? cfg : { ...cfg, forceScreenshot };
37209
37869
  let streamingEncoder = null;
37210
37870
  let streamingEncoderClosed = false;
37211
37871
  try {
@@ -37264,7 +37924,7 @@ async function runCaptureStreamingStage(input) {
37264
37924
  }
37265
37925
  },
37266
37926
  onFrameBuffer,
37267
- cfg
37927
+ captureCfg
37268
37928
  );
37269
37929
  if (probeSession) {
37270
37930
  lastBrowserConsole = probeSession.browserConsoleBuffer;
@@ -37278,7 +37938,7 @@ async function runCaptureStreamingStage(input) {
37278
37938
  framesDir,
37279
37939
  buildCaptureOptions(),
37280
37940
  videoInjector,
37281
- cfg
37941
+ captureCfg
37282
37942
  );
37283
37943
  if (probeSession) {
37284
37944
  prepareCaptureSessionForReuse(session, framesDir, videoInjector);
@@ -37414,19 +38074,20 @@ var init_hdrImageTransferCache = __esm({
37414
38074
 
37415
38075
  // ../producer/src/services/render/stages/captureHdrStage.ts
37416
38076
  import {
37417
- existsSync as existsSync35,
38077
+ existsSync as existsSync36,
37418
38078
  mkdirSync as mkdirSync21,
37419
38079
  openSync,
37420
38080
  readFileSync as readFileSync25,
37421
- rmSync as rmSync7,
38081
+ rmSync as rmSync8,
37422
38082
  statSync as statSync11,
37423
38083
  writeFileSync as writeFileSync16
37424
38084
  } from "fs";
37425
- import { join as join42 } from "path";
38085
+ import { join as join43 } from "path";
37426
38086
  async function runCaptureHdrStage(input) {
37427
38087
  const {
37428
38088
  job,
37429
38089
  cfg,
38090
+ forceScreenshot,
37430
38091
  log: log2,
37431
38092
  projectDir,
37432
38093
  compiledDir,
@@ -37454,6 +38115,11 @@ async function runCaptureHdrStage(input) {
37454
38115
  assertNotAborted,
37455
38116
  onProgress
37456
38117
  } = input;
38118
+ if (!forceScreenshot) {
38119
+ throw new Error(
38120
+ "captureHdrStage requires forceScreenshot=true; the layered composite path uses captureAlphaPng which hangs under --enable-begin-frame-control."
38121
+ );
38122
+ }
37457
38123
  const stageStart = Date.now();
37458
38124
  let lastBrowserConsole = [];
37459
38125
  let hdrPerf;
@@ -37464,15 +38130,15 @@ async function runCaptureHdrStage(input) {
37464
38130
  hasHdrContent ? "[Render] HDR layered composite: z-ordered DOM + native HDR video/image layers" : "[Render] Shader transition composite: z-ordered SDR DOM layers"
37465
38131
  );
37466
38132
  hdrPerf = createHdrPerfCollector();
37467
- cfg.forceScreenshot = true;
38133
+ const hdrCfg = { ...cfg, forceScreenshot: true };
37468
38134
  const hdrVideoIds = composition.videos.filter((v2) => nativeHdrVideoIds.has(v2.id)).map((v2) => v2.id);
37469
38135
  const hdrVideoSrcPaths = /* @__PURE__ */ new Map();
37470
38136
  for (const v2 of composition.videos) {
37471
38137
  if (!hdrVideoIds.includes(v2.id)) continue;
37472
38138
  let srcPath = v2.src;
37473
38139
  if (!srcPath.startsWith("/")) {
37474
- const fromCompiled = join42(compiledDir, srcPath);
37475
- srcPath = existsSync35(fromCompiled) ? fromCompiled : join42(projectDir, srcPath);
38140
+ const fromCompiled = join43(compiledDir, srcPath);
38141
+ srcPath = existsSync36(fromCompiled) ? fromCompiled : join43(projectDir, srcPath);
37476
38142
  }
37477
38143
  hdrVideoSrcPaths.set(v2.id, srcPath);
37478
38144
  }
@@ -37482,7 +38148,7 @@ async function runCaptureHdrStage(input) {
37482
38148
  framesDir,
37483
38149
  buildCaptureOptions(),
37484
38150
  createRenderVideoFrameInjector(),
37485
- cfg
38151
+ hdrCfg
37486
38152
  );
37487
38153
  let hdrEncoder = null;
37488
38154
  let hdrEncoderClosed = false;
@@ -37608,11 +38274,11 @@ async function runCaptureHdrStage(input) {
37608
38274
  for (const [videoId, srcPath] of hdrVideoSrcPaths) {
37609
38275
  const video = composition.videos.find((v2) => v2.id === videoId);
37610
38276
  if (!video) continue;
37611
- const frameDir = join42(framesDir, `hdr_${videoId}`);
38277
+ const frameDir = join43(framesDir, `hdr_${videoId}`);
37612
38278
  mkdirSync21(frameDir, { recursive: true });
37613
38279
  const duration = video.end - video.start;
37614
38280
  const dims = hdrExtractionDims.get(videoId) ?? { width, height };
37615
- const rawPath = join42(frameDir, "frames.rgb48le");
38281
+ const rawPath = join43(frameDir, "frames.rgb48le");
37616
38282
  const ffmpegArgs = [
37617
38283
  "-ss",
37618
38284
  String(video.mediaStart),
@@ -37715,8 +38381,8 @@ async function runCaptureHdrStage(input) {
37715
38381
  }
37716
38382
  }
37717
38383
  const debugDumpEnabled = process.env.KEEP_TEMP === "1";
37718
- const debugDumpDir = debugDumpEnabled ? join42(framesDir, "debug-composite") : null;
37719
- if (debugDumpDir && !existsSync35(debugDumpDir)) {
38384
+ const debugDumpDir = debugDumpEnabled ? join43(framesDir, "debug-composite") : null;
38385
+ if (debugDumpDir && !existsSync36(debugDumpDir)) {
37720
38386
  mkdirSync21(debugDumpDir, { recursive: true });
37721
38387
  }
37722
38388
  const compositeTransfer = resolveCompositeTransfer(hasHdrContent, effectiveHdr);
@@ -37877,7 +38543,7 @@ async function runCaptureHdrStage(input) {
37877
38543
  await compositeHdrFrame(hdrCompositeCtx, normalCanvas, time, stackingInfo, void 0, i2);
37878
38544
  addHdrTiming(hdrPerf, "normalCompositeMs", timingStart);
37879
38545
  if (debugDumpEnabled && debugDumpDir && i2 % 30 === 0) {
37880
- const previewPath = join42(
38546
+ const previewPath = join43(
37881
38547
  debugDumpDir,
37882
38548
  `frame_${String(i2).padStart(4, "0")}_final_rgb48le.bin`
37883
38549
  );
@@ -37896,7 +38562,7 @@ async function runCaptureHdrStage(input) {
37896
38562
  if (frameSource) {
37897
38563
  closeHdrVideoFrameSource(frameSource, log2);
37898
38564
  try {
37899
- rmSync7(frameSource.dir, { recursive: true, force: true });
38565
+ rmSync8(frameSource.dir, { recursive: true, force: true });
37900
38566
  } catch (err) {
37901
38567
  log2.warn("Failed to clean up HDR raw frame directory", {
37902
38568
  videoId,
@@ -37978,8 +38644,8 @@ var init_captureHdrStage = __esm({
37978
38644
  });
37979
38645
 
37980
38646
  // ../producer/src/services/render/stages/encodeStage.ts
37981
- import { copyFileSync as copyFileSync3, existsSync as existsSync36, mkdirSync as mkdirSync22, readdirSync as readdirSync14 } from "fs";
37982
- import { join as join43 } from "path";
38647
+ import { copyFileSync as copyFileSync3, existsSync as existsSync37, mkdirSync as mkdirSync22, readdirSync as readdirSync14 } from "fs";
38648
+ import { join as join44 } from "path";
37983
38649
  async function runEncodeStage(input) {
37984
38650
  const {
37985
38651
  job,
@@ -38005,7 +38671,7 @@ async function runEncodeStage(input) {
38005
38671
  const stage5Start = Date.now();
38006
38672
  if (isPngSequence) {
38007
38673
  updateJobStatus(job, "encoding", "Writing PNG sequence", 75, onProgress);
38008
- if (!existsSync36(outputPath)) mkdirSync22(outputPath, { recursive: true });
38674
+ if (!existsSync37(outputPath)) mkdirSync22(outputPath, { recursive: true });
38009
38675
  const captured = readdirSync14(framesDir).filter((name) => name.endsWith(".png")).sort();
38010
38676
  if (captured.length === 0) {
38011
38677
  throw new Error(
@@ -38013,11 +38679,11 @@ async function runEncodeStage(input) {
38013
38679
  );
38014
38680
  }
38015
38681
  captured.forEach((name, i2) => {
38016
- const dst = join43(outputPath, `frame_${String(i2 + 1).padStart(6, "0")}.png`);
38017
- copyFileSync3(join43(framesDir, name), dst);
38682
+ const dst = join44(outputPath, `frame_${String(i2 + 1).padStart(6, "0")}.png`);
38683
+ copyFileSync3(join44(framesDir, name), dst);
38018
38684
  });
38019
- if (hasAudio && existsSync36(audioOutputPath)) {
38020
- copyFileSync3(audioOutputPath, join43(outputPath, "audio.aac"));
38685
+ if (hasAudio && existsSync37(audioOutputPath)) {
38686
+ copyFileSync3(audioOutputPath, join44(outputPath, "audio.aac"));
38021
38687
  log2.info(`[Render] png-sequence: audio.aac sidecar written to ${outputPath}/audio.aac`);
38022
38688
  }
38023
38689
  return { encodeMs: Date.now() - stage5Start };
@@ -38103,33 +38769,21 @@ var init_assembleStage = __esm({
38103
38769
 
38104
38770
  // ../producer/src/services/renderOrchestrator.ts
38105
38771
  import {
38106
- existsSync as existsSync37,
38772
+ existsSync as existsSync38,
38107
38773
  mkdirSync as mkdirSync23,
38108
- rmSync as rmSync8,
38109
38774
  readFileSync as readFileSync26,
38110
38775
  readSync,
38111
38776
  closeSync,
38112
38777
  readdirSync as readdirSync15,
38778
+ rmSync as rmSync9,
38113
38779
  statSync as statSync12,
38114
38780
  writeFileSync as writeFileSync17,
38115
38781
  copyFileSync as copyFileSync4,
38116
- appendFileSync,
38117
- symlinkSync,
38118
- cpSync
38782
+ appendFileSync
38119
38783
  } from "fs";
38120
- import { join as join44, dirname as dirname13, resolve as resolve19, relative as relative3, isAbsolute as isAbsolute7, basename as basename3 } from "path";
38784
+ import { join as join45, dirname as dirname13, resolve as resolve19 } from "path";
38121
38785
  import { randomUUID as randomUUID2 } from "crypto";
38122
- import { freemem as freemem2 } from "os";
38123
38786
  import { fileURLToPath as fileURLToPath3 } from "url";
38124
- async function safeCleanup(label2, fn, log2 = defaultLogger) {
38125
- try {
38126
- await fn();
38127
- } catch (err) {
38128
- log2.debug(`Cleanup failed (${label2})`, {
38129
- error: err instanceof Error ? err.message : String(err)
38130
- });
38131
- }
38132
- }
38133
38787
  function sampleDirectoryBytes(dir) {
38134
38788
  let total = 0;
38135
38789
  const stack = [dir];
@@ -38143,7 +38797,7 @@ function sampleDirectoryBytes(dir) {
38143
38797
  continue;
38144
38798
  }
38145
38799
  for (const name of entries2) {
38146
- const full = join44(current, name);
38800
+ const full = join45(current, name);
38147
38801
  try {
38148
38802
  const st3 = statSync12(full);
38149
38803
  if (st3.isDirectory()) {
@@ -38172,94 +38826,6 @@ function countNonZeroRgb48(buf) {
38172
38826
  }
38173
38827
  return n;
38174
38828
  }
38175
- function createHdrPerfCollector() {
38176
- return {
38177
- frames: 0,
38178
- normalFrames: 0,
38179
- transitionFrames: 0,
38180
- domLayerCaptures: 0,
38181
- hdrVideoLayerBlits: 0,
38182
- hdrImageLayerBlits: 0,
38183
- timings: {
38184
- frameSeekMs: 0,
38185
- frameInjectMs: 0,
38186
- stackingQueryMs: 0,
38187
- canvasClearMs: 0,
38188
- normalCompositeMs: 0,
38189
- transitionCompositeMs: 0,
38190
- encoderWriteMs: 0,
38191
- hdrVideoReadDecodeMs: 0,
38192
- hdrVideoTransferMs: 0,
38193
- hdrVideoBlitMs: 0,
38194
- hdrImageTransferMs: 0,
38195
- hdrImageBlitMs: 0,
38196
- domLayerSeekMs: 0,
38197
- domLayerInjectMs: 0,
38198
- domMaskApplyMs: 0,
38199
- domScreenshotMs: 0,
38200
- domMaskRemoveMs: 0,
38201
- domPngDecodeMs: 0,
38202
- domBlitMs: 0
38203
- }
38204
- };
38205
- }
38206
- function addHdrTiming(perf, key2, startMs) {
38207
- if (!perf) return;
38208
- perf.timings[key2] += Date.now() - startMs;
38209
- }
38210
- function averageTiming(totalMs, count) {
38211
- return count > 0 ? Math.round(totalMs / count * 100) / 100 : 0;
38212
- }
38213
- function finalizeHdrPerf(perf) {
38214
- const avgMs = {};
38215
- const perFrameKeys = [
38216
- "frameSeekMs",
38217
- "frameInjectMs",
38218
- "stackingQueryMs",
38219
- "canvasClearMs",
38220
- "encoderWriteMs"
38221
- ];
38222
- for (const key2 of perFrameKeys) avgMs[key2] = averageTiming(perf.timings[key2], perf.frames);
38223
- avgMs.normalCompositeMs = averageTiming(perf.timings.normalCompositeMs, perf.normalFrames);
38224
- avgMs.transitionCompositeMs = averageTiming(
38225
- perf.timings.transitionCompositeMs,
38226
- perf.transitionFrames
38227
- );
38228
- const perDomLayerKeys = [
38229
- "domLayerSeekMs",
38230
- "domLayerInjectMs",
38231
- "domMaskApplyMs",
38232
- "domScreenshotMs",
38233
- "domMaskRemoveMs",
38234
- "domPngDecodeMs",
38235
- "domBlitMs"
38236
- ];
38237
- for (const key2 of perDomLayerKeys) {
38238
- avgMs[key2] = averageTiming(perf.timings[key2], perf.domLayerCaptures);
38239
- }
38240
- const perHdrVideoKeys = [
38241
- "hdrVideoReadDecodeMs",
38242
- "hdrVideoTransferMs",
38243
- "hdrVideoBlitMs"
38244
- ];
38245
- for (const key2 of perHdrVideoKeys) {
38246
- avgMs[key2] = averageTiming(perf.timings[key2], perf.hdrVideoLayerBlits);
38247
- }
38248
- const perHdrImageKeys = ["hdrImageTransferMs", "hdrImageBlitMs"];
38249
- for (const key2 of perHdrImageKeys) {
38250
- avgMs[key2] = averageTiming(perf.timings[key2], perf.hdrImageLayerBlits);
38251
- }
38252
- return {
38253
- frames: perf.frames,
38254
- normalFrames: perf.normalFrames,
38255
- transitionFrames: perf.transitionFrames,
38256
- domLayerCaptures: perf.domLayerCaptures,
38257
- hdrVideoLayerBlits: perf.hdrVideoLayerBlits,
38258
- hdrImageLayerBlits: perf.hdrImageLayerBlits,
38259
- timings: { ...perf.timings },
38260
- avgMs
38261
- };
38262
- }
38263
38829
  function installDebugLogger(logPath, log2 = defaultLogger) {
38264
38830
  const origLog = console.log;
38265
38831
  const origError = console.error;
@@ -38295,43 +38861,6 @@ function installDebugLogger(logPath, log2 = defaultLogger) {
38295
38861
  console.warn = origWarn;
38296
38862
  };
38297
38863
  }
38298
- function createCompiledFrameSrcResolver(compiledDir) {
38299
- const compiledRoot = resolve19(compiledDir);
38300
- return (framePath) => {
38301
- const resolvedFramePath = resolve19(framePath);
38302
- if (!isPathInside2(resolvedFramePath, compiledRoot)) return null;
38303
- const relativePath = relative3(compiledRoot, resolvedFramePath);
38304
- if (!relativePath || relativePath.startsWith("..") || isAbsolute7(relativePath)) {
38305
- return null;
38306
- }
38307
- return `/${relativePath.split(/[\\/]+/).map((segment) => encodeURIComponent(segment)).join("/")}`;
38308
- };
38309
- }
38310
- function materializeExtractedFramesForCompiledDir(extracted, compiledDir, options = {}) {
38311
- const pathModule = options.pathModule ?? materializePathModule;
38312
- const fileSystem = options.fileSystem ?? materializeFileSystem;
38313
- const resolvedCompiledDir = pathModule.resolve(compiledDir);
38314
- const compiledFrameRoot = pathModule.join(resolvedCompiledDir, "__hyperframes_video_frames");
38315
- for (const ext of extracted) {
38316
- const resolvedOut = pathModule.resolve(ext.outputDir);
38317
- if (isPathInside2(resolvedOut, resolvedCompiledDir, { pathModule })) continue;
38318
- const linkPath = pathModule.join(compiledFrameRoot, ext.videoId);
38319
- if (!fileSystem.existsSync(linkPath)) {
38320
- fileSystem.mkdirSync(pathModule.dirname(linkPath), { recursive: true });
38321
- if (options.materializeSymlinks) {
38322
- fileSystem.cpSync(resolvedOut, linkPath, { recursive: true });
38323
- } else {
38324
- fileSystem.symlinkSync(resolvedOut, linkPath);
38325
- }
38326
- }
38327
- const remapped = /* @__PURE__ */ new Map();
38328
- for (const [idx, framePath] of ext.framePaths) {
38329
- remapped.set(idx, pathModule.join(linkPath, pathModule.basename(framePath)));
38330
- }
38331
- ext.framePaths = remapped;
38332
- ext.outputDir = linkPath;
38333
- }
38334
- }
38335
38864
  function collectVideoReadinessSkipIds(nativeHdrVideoIds, extractedVideos) {
38336
38865
  return Array.from(
38337
38866
  /* @__PURE__ */ new Set([
@@ -38350,115 +38879,12 @@ function collectVideoMetadataHints(extractedVideos) {
38350
38879
  height: video.metadata.height
38351
38880
  })).sort((a, b2) => a.id.localeCompare(b2.id));
38352
38881
  }
38353
- function resolveRenderWorkerCount(totalFrames, requestedWorkers, cfg, compiled, log2 = defaultLogger, measuredCaptureCost) {
38354
- const captureCost = combineCaptureCostEstimates(
38355
- estimateCaptureCostMultiplier(compiled),
38356
- measuredCaptureCost
38357
- );
38358
- const workerCount = calculateOptimalWorkers(totalFrames, requestedWorkers, {
38359
- ...cfg,
38360
- captureCostMultiplier: captureCost.multiplier
38361
- });
38362
- if (requestedWorkers !== void 0 || captureCost.multiplier <= 1) {
38363
- return workerCount;
38364
- }
38365
- const baselineWorkers = calculateOptimalWorkers(totalFrames, void 0, cfg);
38366
- if (workerCount < baselineWorkers) {
38367
- log2.warn(
38368
- "[Render] Reduced auto worker count for high-cost capture workload to avoid Chrome compositor starvation.",
38369
- {
38370
- from: baselineWorkers,
38371
- to: workerCount,
38372
- costMultiplier: captureCost.multiplier,
38373
- reasons: captureCost.reasons
38374
- }
38375
- );
38376
- }
38377
- return workerCount;
38378
- }
38379
- function estimateCaptureCostMultiplier(compiled) {
38380
- let multiplier = 1;
38381
- const reasons = [];
38382
- if (compiled.hasShaderTransitions) {
38383
- multiplier += 2;
38384
- reasons.push("shader-transitions");
38385
- }
38386
- const reasonCodes = new Set(compiled.renderModeHints.reasons.map((reason) => reason.code));
38387
- if (reasonCodes.has("requestAnimationFrame")) {
38388
- multiplier += 1;
38389
- reasons.push("requestAnimationFrame");
38390
- }
38391
- if (reasonCodes.has("iframe")) {
38392
- multiplier += 0.5;
38393
- reasons.push("iframe");
38394
- }
38395
- return {
38396
- multiplier: Math.round(multiplier * 100) / 100,
38397
- reasons
38398
- };
38399
- }
38400
- function combineCaptureCostEstimates(staticCost, measuredCost) {
38401
- if (!measuredCost || measuredCost.multiplier <= 1) return staticCost;
38402
- if (staticCost.multiplier >= measuredCost.multiplier) {
38403
- return {
38404
- multiplier: staticCost.multiplier,
38405
- reasons: [...staticCost.reasons, ...measuredCost.reasons],
38406
- p95Ms: measuredCost.p95Ms
38407
- };
38408
- }
38409
- return {
38410
- multiplier: measuredCost.multiplier,
38411
- reasons: [...measuredCost.reasons, ...staticCost.reasons],
38412
- p95Ms: measuredCost.p95Ms
38413
- };
38414
- }
38415
- function createCaptureCalibrationConfig(cfg) {
38416
- return {
38417
- ...cfg,
38418
- protocolTimeout: Math.min(cfg.protocolTimeout, CAPTURE_CALIBRATION_PROTOCOL_TIMEOUT_MS)
38419
- };
38420
- }
38421
- function estimateMeasuredCaptureCostMultiplier(samples) {
38422
- if (samples.length === 0) {
38423
- return { multiplier: 1, reasons: [] };
38424
- }
38425
- const sorted = [...samples].sort((a, b2) => a.captureTimeMs - b2.captureTimeMs);
38426
- const p95Index = Math.max(0, Math.ceil(sorted.length * 0.95) - 1);
38427
- const p95Sample = sorted[p95Index] ?? sorted[sorted.length - 1];
38428
- if (!p95Sample) {
38429
- return { multiplier: 1, reasons: [] };
38430
- }
38431
- const p95Ms = Math.round(p95Sample.captureTimeMs);
38432
- const multiplier = Math.min(
38433
- MAX_MEASURED_CAPTURE_COST_MULTIPLIER,
38434
- Math.max(1, Math.round(p95Ms / CAPTURE_CALIBRATION_TARGET_MS * 100) / 100)
38435
- );
38436
- return {
38437
- multiplier,
38438
- reasons: multiplier > 1 ? [`calibration-p95=${p95Ms}ms`] : [],
38439
- p95Ms
38440
- };
38441
- }
38442
- function selectCaptureCalibrationFrames(totalFrames) {
38443
- if (totalFrames <= 0) return [];
38444
- const lastFrame = totalFrames - 1;
38445
- const candidates = [
38446
- 0,
38447
- Math.floor(totalFrames * 0.25),
38448
- Math.floor(totalFrames * 0.5),
38449
- Math.floor(totalFrames * 0.75),
38450
- lastFrame
38451
- ];
38452
- return Array.from(
38453
- new Set(candidates.map((frame) => Math.max(0, Math.min(lastFrame, frame))))
38454
- ).sort((a, b2) => a - b2);
38455
- }
38456
38882
  function findMissingFrameRanges(totalFrames, framesDir, frameExt) {
38457
38883
  const ranges = [];
38458
38884
  let rangeStart = null;
38459
38885
  for (let frameIndex = 0; frameIndex < totalFrames; frameIndex++) {
38460
- const framePath = join44(framesDir, `frame_${String(frameIndex).padStart(6, "0")}.${frameExt}`);
38461
- const missing = !existsSync37(framePath);
38886
+ const framePath = join45(framesDir, `frame_${String(frameIndex).padStart(6, "0")}.${frameExt}`);
38887
+ const missing = !existsSync38(framePath);
38462
38888
  if (missing && rangeStart === null) {
38463
38889
  rangeStart = frameIndex;
38464
38890
  } else if (!missing && rangeStart !== null) {
@@ -38480,7 +38906,7 @@ function buildMissingFrameRetryBatches(ranges, maxWorkers, workDir, attempt) {
38480
38906
  workerId,
38481
38907
  startFrame: range.startFrame,
38482
38908
  endFrame: range.endFrame,
38483
- outputDir: join44(workDir, `retry-${attempt}-batch-${batchIndex}-worker-${workerId}`)
38909
+ outputDir: join45(workDir, `retry-${attempt}-batch-${batchIndex}-worker-${workerId}`)
38484
38910
  }));
38485
38911
  batches.push(batch);
38486
38912
  }
@@ -38495,63 +38921,17 @@ function isRecoverableParallelCaptureError(error) {
38495
38921
  message
38496
38922
  );
38497
38923
  }
38498
- function shouldFallbackToScreenshotAfterCalibrationError(error) {
38499
- const message = error instanceof Error ? error.message : String(error);
38500
- return /HeadlessExperimental\.beginFrame timed out|beginFrame probe timeout|Another frame is pending|Frame still pending|Protocol error.*HeadlessExperimental\.beginFrame|Runtime\.callFunctionOn timed out|Runtime\.evaluate timed out/i.test(
38501
- message
38502
- );
38503
- }
38504
38924
  function countCapturedFrames(totalFrames, framesDir, frameExt) {
38505
38925
  let captured = 0;
38506
38926
  for (let frameIndex = 0; frameIndex < totalFrames; frameIndex++) {
38507
- const framePath = join44(framesDir, `frame_${String(frameIndex).padStart(6, "0")}.${frameExt}`);
38508
- if (existsSync37(framePath)) captured++;
38927
+ const framePath = join45(framesDir, `frame_${String(frameIndex).padStart(6, "0")}.${frameExt}`);
38928
+ if (existsSync38(framePath)) captured++;
38509
38929
  }
38510
38930
  return captured;
38511
38931
  }
38512
38932
  function countFrameRanges(ranges) {
38513
38933
  return ranges.reduce((sum, range) => sum + (range.endFrame - range.startFrame), 0);
38514
38934
  }
38515
- async function measureCaptureCostFromSession(session, totalFrames, fps) {
38516
- const sampledFrames = selectCaptureCalibrationFrames(totalFrames);
38517
- const samples = [];
38518
- for (const frameIndex of sampledFrames) {
38519
- const time = frameIndex / fps;
38520
- const startedAt = Date.now();
38521
- const result = await captureFrameToBuffer(session, frameIndex, time);
38522
- samples.push({
38523
- frameIndex,
38524
- captureTimeMs: result.captureTimeMs || Date.now() - startedAt
38525
- });
38526
- }
38527
- return {
38528
- estimate: estimateMeasuredCaptureCostMultiplier(samples),
38529
- samples
38530
- };
38531
- }
38532
- function logCaptureCalibrationResult(calibration, log2) {
38533
- if (calibration.estimate.multiplier > 1) {
38534
- log2.warn("[Render] Measured slow frame capture during auto-worker calibration.", {
38535
- multiplier: calibration.estimate.multiplier,
38536
- p95Ms: calibration.estimate.p95Ms,
38537
- sampledFrames: calibration.samples.map((sample) => sample.frameIndex)
38538
- });
38539
- } else {
38540
- log2.debug("[Render] Auto-worker calibration kept baseline capture cost.", {
38541
- p95Ms: calibration.estimate.p95Ms,
38542
- sampledFrames: calibration.samples.map((sample) => sample.frameIndex)
38543
- });
38544
- }
38545
- }
38546
- function createFailedCaptureCalibrationEstimate(reason) {
38547
- return {
38548
- estimate: {
38549
- multiplier: MAX_MEASURED_CAPTURE_COST_MULTIPLIER,
38550
- reasons: [reason]
38551
- },
38552
- samples: []
38553
- };
38554
- }
38555
38935
  async function executeDiskCaptureWithAdaptiveRetry(options) {
38556
38936
  const attempts = [];
38557
38937
  let currentWorkers = options.initialWorkerCount;
@@ -38565,7 +38945,7 @@ async function executeDiskCaptureWithAdaptiveRetry(options) {
38565
38945
  frameCount,
38566
38946
  reason: attempt === 0 ? "initial" : "retry"
38567
38947
  });
38568
- const attemptWorkDir = join44(options.workDir, `capture-attempt-${attempt}`);
38948
+ const attemptWorkDir = join45(options.workDir, `capture-attempt-${attempt}`);
38569
38949
  const batches = missingRanges ? buildMissingFrameRetryBatches(missingRanges, currentWorkers, attemptWorkDir, attempt) : [distributeFrames(options.totalFrames, currentWorkers, attemptWorkDir)];
38570
38950
  try {
38571
38951
  for (const tasks of batches) {
@@ -38989,7 +39369,7 @@ async function compositeHdrFrame(ctx, canvas, time, fullStacking, elementFilter,
38989
39369
  if (shouldLog && debugDumpDir) {
38990
39370
  const after2 = countNonZeroRgb48(canvas);
38991
39371
  const dumpName = `frame_${String(debugFrameIndex).padStart(4, "0")}_layer_${String(layerIdx).padStart(2, "0")}_dom.png`;
38992
- const dumpPath = join44(debugDumpDir, dumpName);
39372
+ const dumpPath = join45(debugDumpDir, dumpName);
38993
39373
  writeFileSync17(dumpPath, domPng);
38994
39374
  log2.info("[diag] dom layer blit", {
38995
39375
  frame: debugFrameIndex,
@@ -39076,8 +39456,8 @@ function extractStandaloneEntryFromIndex(indexHtml, entryFile) {
39076
39456
  async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSignal) {
39077
39457
  const moduleDir = dirname13(fileURLToPath3(import.meta.url));
39078
39458
  const producerRoot = process.env.PRODUCER_RENDERS_DIR ? resolve19(process.env.PRODUCER_RENDERS_DIR, "..") : resolve19(moduleDir, "../..");
39079
- const debugDir = join44(producerRoot, ".debug");
39080
- const workDir = job.config.debug ? join44(debugDir, job.id) : join44(dirname13(outputPath), `work-${job.id}`);
39459
+ const debugDir = join45(producerRoot, ".debug");
39460
+ const workDir = job.config.debug ? join45(debugDir, job.id) : join45(dirname13(outputPath), `work-${job.id}`);
39081
39461
  const pipelineStart = Date.now();
39082
39462
  const log2 = job.config.logger ?? defaultLogger;
39083
39463
  let fileServer = null;
@@ -39090,32 +39470,18 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39090
39470
  imageDecodeFailures: 0
39091
39471
  };
39092
39472
  let hdrPerf;
39093
- const perfOutputPath = join44(workDir, "perf-summary.json");
39473
+ const perfOutputPath = join45(workDir, "perf-summary.json");
39094
39474
  const cfg = { ...job.config.producerConfig ?? resolveConfig() };
39095
39475
  const outputFormat = job.config.format ?? "mp4";
39096
39476
  const isWebm = outputFormat === "webm";
39097
39477
  const isMov = outputFormat === "mov";
39098
39478
  const isPngSequence = outputFormat === "png-sequence";
39099
39479
  const needsAlpha = isWebm || isMov || isPngSequence;
39100
- if (needsAlpha) {
39101
- cfg.forceScreenshot = true;
39102
- }
39103
39480
  const enableChunkedEncode = cfg.enableChunkedEncode;
39104
39481
  const chunkedEncodeSize = cfg.chunkSizeFrames;
39105
- let peakRssBytes = 0;
39106
- let peakHeapUsedBytes = 0;
39107
- const sampleMemory = () => {
39108
- try {
39109
- const m2 = process.memoryUsage();
39110
- if (m2.rss > peakRssBytes) peakRssBytes = m2.rss;
39111
- if (m2.heapUsed > peakHeapUsedBytes) peakHeapUsedBytes = m2.heapUsed;
39112
- } catch {
39113
- }
39114
- };
39115
- sampleMemory();
39116
- const memSamplerInterval = setInterval(sampleMemory, 250);
39117
- memSamplerInterval.unref?.();
39482
+ let memSampler = null;
39118
39483
  try {
39484
+ memSampler = createMemorySampler();
39119
39485
  const assertNotAborted = () => {
39120
39486
  if (abortSignal?.aborted) {
39121
39487
  throw new RenderCancelledError("render_cancelled");
@@ -39123,22 +39489,22 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39123
39489
  };
39124
39490
  job.startedAt = /* @__PURE__ */ new Date();
39125
39491
  assertNotAborted();
39126
- if (!existsSync37(workDir)) mkdirSync23(workDir, { recursive: true });
39492
+ if (!existsSync38(workDir)) mkdirSync23(workDir, { recursive: true });
39127
39493
  if (job.config.debug) {
39128
- const logPath = join44(workDir, "render.log");
39494
+ const logPath = join45(workDir, "render.log");
39129
39495
  restoreLogger = installDebugLogger(logPath, log2);
39130
39496
  }
39131
39497
  const entryFile = job.config.entryFile || "index.html";
39132
- let htmlPath = join44(projectDir, entryFile);
39133
- if (!existsSync37(htmlPath)) {
39498
+ let htmlPath = join45(projectDir, entryFile);
39499
+ if (!existsSync38(htmlPath)) {
39134
39500
  throw new Error(`Entry file not found: ${htmlPath}`);
39135
39501
  }
39136
39502
  assertNotAborted();
39137
39503
  const rawEntry = readFileSync26(htmlPath, "utf-8");
39138
39504
  if (entryFile !== "index.html" && rawEntry.trimStart().startsWith("<template")) {
39139
- const wrapperPath = join44(workDir, "standalone-entry.html");
39140
- const projectIndexPath = join44(projectDir, "index.html");
39141
- if (!existsSync37(projectIndexPath)) {
39505
+ const wrapperPath = join45(workDir, "standalone-entry.html");
39506
+ const projectIndexPath = join45(projectDir, "index.html");
39507
+ if (!existsSync38(projectIndexPath)) {
39142
39508
  throw new Error(
39143
39509
  `Template entry file "${entryFile}" requires a project index.html to extract its render shell.`
39144
39510
  );
@@ -39176,6 +39542,7 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39176
39542
  const { deviceScaleFactor, outputWidth, outputHeight } = compileResult;
39177
39543
  const { width, height } = composition;
39178
39544
  perfStages.compileOnlyMs = compileResult.compileOnlyMs;
39545
+ let captureForceScreenshot = compileResult.forceScreenshot;
39179
39546
  const probeResult = await runProbeStage({
39180
39547
  projectDir,
39181
39548
  workDir,
@@ -39200,7 +39567,7 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39200
39567
  perfStages.browserProbeMs = probeResult.browserProbeMs;
39201
39568
  perfStages.compileMs = Date.now() - stage1Start;
39202
39569
  updateJobStatus(job, "preprocessing", "Extracting video frames", 10, onProgress);
39203
- const compiledDir = join44(workDir, "compiled");
39570
+ const compiledDir = join45(workDir, "compiled");
39204
39571
  const extractResult = await runExtractVideosStage({
39205
39572
  projectDir,
39206
39573
  compiledDir,
@@ -39223,55 +39590,13 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39223
39590
  imageColorSpaces
39224
39591
  } = extractResult;
39225
39592
  perfStages.videoExtractMs = extractResult.videoExtractMs;
39226
- let effectiveHdr;
39227
- let forcedHdrWithoutSources = false;
39228
- {
39229
- const hdrMode = job.config.hdrMode ?? "auto";
39230
- const videoColorSpaces = (extractionResult?.extracted ?? []).map(
39231
- (ext) => ext.metadata.colorSpace
39232
- );
39233
- const allColorSpaces = [...videoColorSpaces, ...imageColorSpaces];
39234
- const info = allColorSpaces.length > 0 ? analyzeCompositionHdr(allColorSpaces) : null;
39235
- if (hdrMode === "force-sdr") {
39236
- effectiveHdr = void 0;
39237
- } else if (hdrMode === "force-hdr") {
39238
- if (info?.hasHdr && info.dominantTransfer) {
39239
- effectiveHdr = { transfer: info.dominantTransfer };
39240
- } else {
39241
- effectiveHdr = { transfer: "hlg" };
39242
- forcedHdrWithoutSources = true;
39243
- }
39244
- } else {
39245
- if (info?.hasHdr && info.dominantTransfer) {
39246
- effectiveHdr = { transfer: info.dominantTransfer };
39247
- }
39248
- }
39249
- }
39250
- if (effectiveHdr && outputFormat !== "mp4") {
39251
- const hdrSourceReason = forcedHdrWithoutSources ? "HDR was forced without detected HDR sources" : "HDR source detected";
39252
- log2.warn(
39253
- `[Render] ${hdrSourceReason}, but format is "${outputFormat}" \u2014 falling back to SDR. HDR + alpha is not supported. Use --format mp4 for HDR10 output.`
39254
- );
39255
- effectiveHdr = void 0;
39256
- }
39257
- {
39258
- const hdrMode = job.config.hdrMode ?? "auto";
39259
- if (forcedHdrWithoutSources) {
39260
- log2.warn(
39261
- "[Render] HDR forced by --hdr flag, but no HDR sources were detected \u2014 defaulting to HLG. SDR-only compositions may look perceptually wrong on HDR displays."
39262
- );
39263
- }
39264
- if (effectiveHdr) {
39265
- const reason = hdrMode === "force-hdr" ? forcedHdrWithoutSources ? "forced by --hdr flag (no HDR sources detected \u2014 defaulting to HLG)" : "forced by --hdr flag" : "auto-detected from source(s)";
39266
- log2.info(
39267
- `[Render] HDR ${reason} \u2014 output: ${effectiveHdr.transfer.toUpperCase()} (BT.2020, 10-bit H.265)`
39268
- );
39269
- } else if (hdrMode === "force-sdr") {
39270
- log2.info("[Render] SDR forced by --sdr flag");
39271
- } else {
39272
- log2.info("[Render] No HDR sources detected \u2014 rendering SDR");
39273
- }
39274
- }
39593
+ const effectiveHdr = resolveEffectiveHdrMode({
39594
+ hdrMode: job.config.hdrMode,
39595
+ outputFormat,
39596
+ extractionResult,
39597
+ imageColorSpaces,
39598
+ log: log2
39599
+ });
39275
39600
  updateJobStatus(job, "preprocessing", "Processing audio tracks", 20, onProgress);
39276
39601
  const audioResult = await runAudioStage({
39277
39602
  projectDir,
@@ -39289,14 +39614,14 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39289
39614
  if (!fileServer) {
39290
39615
  fileServer = await createFileServer2({
39291
39616
  projectDir,
39292
- compiledDir: join44(workDir, "compiled"),
39617
+ compiledDir: join45(workDir, "compiled"),
39293
39618
  port: 0,
39294
39619
  preHeadScripts: [VIRTUAL_TIME_SHIM]
39295
39620
  });
39296
39621
  assertNotAborted();
39297
39622
  }
39298
- const framesDir = join44(workDir, "captured-frames");
39299
- if (!existsSync37(framesDir)) mkdirSync23(framesDir, { recursive: true });
39623
+ const framesDir = join45(workDir, "captured-frames");
39624
+ if (!existsSync38(framesDir)) mkdirSync23(framesDir, { recursive: true });
39300
39625
  const captureOptions = {
39301
39626
  width,
39302
39627
  height,
@@ -39319,95 +39644,24 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39319
39644
  });
39320
39645
  let captureCalibration;
39321
39646
  if (job.config.workers === void 0 && totalFrames >= 60) {
39322
- const calibrationDir = join44(workDir, "capture-calibration");
39323
- const calibrationCfg = createCaptureCalibrationConfig(cfg);
39324
- const videoInjector = createRenderVideoFrameInjector();
39325
- let calibrationSession = null;
39326
- try {
39327
- calibrationSession = await createCaptureSession(
39328
- fileServer.url,
39329
- calibrationDir,
39330
- buildCaptureOptions(),
39331
- videoInjector,
39332
- calibrationCfg
39333
- );
39334
- if (!calibrationSession.isInitialized) {
39335
- await initializeSession(calibrationSession);
39336
- }
39337
- assertNotAborted();
39338
- captureCalibration = await measureCaptureCostFromSession(
39339
- calibrationSession,
39340
- totalFrames,
39341
- fpsToNumber(job.config.fps)
39342
- );
39343
- logCaptureCalibrationResult(captureCalibration, log2);
39344
- } catch (error) {
39345
- const shouldFallbackToScreenshot = !cfg.forceScreenshot && shouldFallbackToScreenshotAfterCalibrationError(error);
39346
- if (shouldFallbackToScreenshot) {
39347
- cfg.forceScreenshot = true;
39348
- if (probeSession) {
39349
- lastBrowserConsole = probeSession.browserConsoleBuffer;
39350
- await closeCaptureSession(probeSession).catch(() => {
39351
- });
39352
- probeSession = null;
39353
- }
39354
- if (calibrationSession) {
39355
- lastBrowserConsole = calibrationSession.browserConsoleBuffer;
39356
- await closeCaptureSession(calibrationSession).catch(() => {
39357
- });
39358
- calibrationSession = null;
39359
- }
39360
- log2.warn(
39361
- "[Render] BeginFrame auto-worker calibration timed out; retrying calibration in screenshot capture mode.",
39362
- {
39363
- protocolTimeout: calibrationCfg.protocolTimeout,
39364
- error: error instanceof Error ? error.message : String(error)
39365
- }
39366
- );
39367
- const screenshotCalibrationCfg = createCaptureCalibrationConfig(cfg);
39368
- try {
39369
- calibrationSession = await createCaptureSession(
39370
- fileServer.url,
39371
- join44(workDir, "capture-calibration-screenshot"),
39372
- buildCaptureOptions(),
39373
- createRenderVideoFrameInjector(),
39374
- screenshotCalibrationCfg
39375
- );
39376
- if (!calibrationSession.isInitialized) {
39377
- await initializeSession(calibrationSession);
39378
- }
39379
- assertNotAborted();
39380
- captureCalibration = await measureCaptureCostFromSession(
39381
- calibrationSession,
39382
- totalFrames,
39383
- fpsToNumber(job.config.fps)
39384
- );
39385
- logCaptureCalibrationResult(captureCalibration, log2);
39386
- } catch (fallbackError) {
39387
- captureCalibration = createFailedCaptureCalibrationEstimate(
39388
- "calibration-screenshot-failed"
39389
- );
39390
- log2.warn(
39391
- "[Render] Screenshot auto-worker calibration failed after BeginFrame fallback; using conservative worker budget.",
39392
- {
39393
- protocolTimeout: screenshotCalibrationCfg.protocolTimeout,
39394
- error: fallbackError instanceof Error ? fallbackError.message : String(fallbackError)
39395
- }
39396
- );
39397
- }
39398
- } else {
39399
- captureCalibration = createFailedCaptureCalibrationEstimate("calibration-failed");
39400
- log2.warn("[Render] Auto-worker calibration failed; using conservative worker budget.", {
39401
- protocolTimeout: calibrationCfg.protocolTimeout,
39402
- error: error instanceof Error ? error.message : String(error)
39403
- });
39404
- }
39405
- } finally {
39406
- if (calibrationSession) {
39407
- lastBrowserConsole = calibrationSession.browserConsoleBuffer;
39408
- await closeCaptureSession(calibrationSession).catch(() => {
39409
- });
39410
- }
39647
+ const outcome = await runCaptureCalibration({
39648
+ cfg,
39649
+ fileServer,
39650
+ workDir,
39651
+ log: log2,
39652
+ job,
39653
+ totalFrames,
39654
+ forceScreenshot: captureForceScreenshot,
39655
+ probeSession,
39656
+ buildCaptureOptions,
39657
+ createRenderVideoFrameInjector,
39658
+ assertNotAborted
39659
+ });
39660
+ captureCalibration = outcome.calibration;
39661
+ captureForceScreenshot = outcome.forceScreenshot;
39662
+ probeSession = outcome.probeSession;
39663
+ if (outcome.lastBrowserConsole.length > 0) {
39664
+ lastBrowserConsole = outcome.lastBrowserConsole;
39411
39665
  }
39412
39666
  }
39413
39667
  let workerCount = resolveRenderWorkerCount(
@@ -39440,7 +39694,7 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39440
39694
  "png-sequence": ""
39441
39695
  };
39442
39696
  const videoExt = FORMAT_EXT2[outputFormat] ?? ".mp4";
39443
- const videoOnlyPath = join44(workDir, `video-only${videoExt}`);
39697
+ const videoOnlyPath = join45(workDir, `video-only${videoExt}`);
39444
39698
  const nativeHdrIds = /* @__PURE__ */ new Set([...nativeHdrVideoIds, ...nativeHdrImageIds]);
39445
39699
  const hasHdrContent = Boolean(effectiveHdr && nativeHdrIds.size > 0);
39446
39700
  const useLayeredComposite = shouldUseLayeredComposite({
@@ -39460,9 +39714,11 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39460
39714
  const effectiveBitrate = job.config.crf != null ? void 0 : job.config.videoBitrate;
39461
39715
  job.framesRendered = 0;
39462
39716
  if (useLayeredComposite) {
39717
+ captureForceScreenshot = true;
39463
39718
  const hdrRes = await runCaptureHdrStage({
39464
39719
  job,
39465
39720
  cfg,
39721
+ forceScreenshot: captureForceScreenshot,
39466
39722
  log: log2,
39467
39723
  projectDir,
39468
39724
  compiledDir,
@@ -39505,6 +39761,7 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39505
39761
  job,
39506
39762
  totalFrames,
39507
39763
  cfg,
39764
+ forceScreenshot: captureForceScreenshot,
39508
39765
  log: log2,
39509
39766
  workerCount,
39510
39767
  probeSession,
@@ -39547,6 +39804,7 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39547
39804
  job,
39548
39805
  totalFrames,
39549
39806
  cfg,
39807
+ forceScreenshot: captureForceScreenshot,
39550
39808
  log: log2,
39551
39809
  workerCount,
39552
39810
  probeSession,
@@ -39611,41 +39869,29 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39611
39869
  job.outputPath = outputPath;
39612
39870
  updateJobStatus(job, "complete", "Render complete", 100, onProgress);
39613
39871
  const totalElapsed = Date.now() - pipelineStart;
39614
- sampleMemory();
39615
- const tmpPeakBytes = existsSync37(workDir) ? sampleDirectoryBytes(workDir) : 0;
39616
- const perfSummary = {
39617
- renderId: job.id,
39618
- totalElapsedMs: totalElapsed,
39619
- // RenderPerfSummary surfaces fps as a decimal because it lands in JSON
39620
- // payloads (CLI telemetry, regression-harness reports) where a single
39621
- // number is friendlier than `{num,den}`. Callers needing the rational
39622
- // back can read `job.config.fps`.
39623
- fps: fpsToNumber(job.config.fps),
39624
- quality: job.config.quality,
39625
- workers: workerCount,
39626
- chunkedEncode: enableChunkedEncode,
39627
- chunkSizeFrames: enableChunkedEncode ? chunkedEncodeSize : null,
39872
+ const tmpPeakBytes = existsSync38(workDir) ? sampleDirectoryBytes(workDir) : 0;
39873
+ const perfSummary = buildRenderPerfSummary({
39874
+ job,
39875
+ workerCount,
39876
+ enableChunkedEncode,
39877
+ chunkedEncodeSize,
39628
39878
  compositionDurationSeconds: composition.duration,
39629
39879
  totalFrames,
39630
- resolution: { width: outputWidth, height: outputHeight },
39880
+ outputWidth,
39881
+ outputHeight,
39631
39882
  videoCount: composition.videos.length,
39632
39883
  audioCount: composition.audios.length,
39633
- stages: perfStages,
39884
+ totalElapsedMs: totalElapsed,
39885
+ perfStages,
39634
39886
  videoExtractBreakdown: extractionResult?.phaseBreakdown,
39635
39887
  tmpPeakBytes,
39636
- captureCalibration: captureCalibration ? {
39637
- sampledFrames: captureCalibration.samples.map((sample) => sample.frameIndex),
39638
- p95Ms: captureCalibration.estimate.p95Ms,
39639
- multiplier: captureCalibration.estimate.multiplier,
39640
- reasons: captureCalibration.estimate.reasons
39641
- } : void 0,
39642
- captureAttempts: captureAttempts.length > 0 ? captureAttempts : void 0,
39643
- hdrDiagnostics: hdrDiagnostics.videoExtractionFailures > 0 || hdrDiagnostics.imageDecodeFailures > 0 ? { ...hdrDiagnostics } : void 0,
39644
- hdrPerf: hdrPerf ? finalizeHdrPerf(hdrPerf) : void 0,
39645
- captureAvgMs: totalFrames > 0 ? Math.round((perfStages.captureMs ?? 0) / totalFrames) : void 0,
39646
- peakRssMb: Math.round(peakRssBytes / (1024 * 1024)),
39647
- peakHeapUsedMb: Math.round(peakHeapUsedBytes / (1024 * 1024))
39648
- };
39888
+ captureCalibration,
39889
+ captureAttempts,
39890
+ hdrDiagnostics,
39891
+ hdrPerf,
39892
+ peakRssBytes: memSampler.peakRssBytes(),
39893
+ peakHeapUsedBytes: memSampler.peakHeapUsedBytes()
39894
+ });
39649
39895
  job.perfSummary = perfSummary;
39650
39896
  if (job.config.debug) {
39651
39897
  try {
@@ -39658,8 +39904,8 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39658
39904
  }
39659
39905
  }
39660
39906
  if (job.config.debug) {
39661
- if (!isPngSequence && existsSync37(outputPath)) {
39662
- const debugOutput = join44(workDir, `output${videoExt}`);
39907
+ if (!isPngSequence && existsSync38(outputPath)) {
39908
+ const debugOutput = join45(workDir, `output${videoExt}`);
39663
39909
  copyFileSync4(outputPath, debugOutput);
39664
39910
  }
39665
39911
  } else if (process.env.KEEP_TEMP === "1") {
@@ -39668,7 +39914,7 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39668
39914
  await safeCleanup(
39669
39915
  "remove workDir",
39670
39916
  () => {
39671
- rmSync8(workDir, { recursive: true, force: true });
39917
+ rmSync9(workDir, { recursive: true, force: true });
39672
39918
  },
39673
39919
  log2
39674
39920
  );
@@ -39678,34 +39924,18 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39678
39924
  if (error instanceof RenderCancelledError || abortSignal?.aborted) {
39679
39925
  job.error = error instanceof Error ? error.message : "render_cancelled";
39680
39926
  updateJobStatus(job, "cancelled", "Render cancelled", job.progress, onProgress);
39681
- if (fileServer) {
39682
- const fs4 = fileServer;
39683
- await safeCleanup(
39684
- "close file server (cancel)",
39685
- () => {
39686
- fs4.close();
39687
- },
39688
- log2
39689
- );
39690
- }
39691
- if (probeSession) {
39692
- const session = probeSession;
39693
- await safeCleanup("close probe session (cancel)", () => closeCaptureSession(session), log2);
39694
- }
39695
- if (!job.config.debug) {
39696
- await safeCleanup(
39697
- "remove workDir (cancel)",
39698
- () => {
39699
- rmSync8(workDir, { recursive: true, force: true });
39700
- },
39701
- log2
39702
- );
39703
- }
39927
+ await cleanupRenderResources({
39928
+ fileServer,
39929
+ probeSession,
39930
+ workDir,
39931
+ debug: Boolean(job.config.debug),
39932
+ log: log2,
39933
+ label: "cancel"
39934
+ });
39704
39935
  if (restoreLogger) restoreLogger();
39705
39936
  throw error instanceof RenderCancelledError ? error : new RenderCancelledError("render_cancelled");
39706
39937
  }
39707
39938
  const errorMessage = error instanceof Error ? error.message : String(error);
39708
- const errorStack = error instanceof Error ? error.stack : void 0;
39709
39939
  const isTimeoutError = errorMessage.includes("Waiting failed") || errorMessage.includes("timeout exceeded") || errorMessage.includes("Navigation timeout");
39710
39940
  const wasParallel = job.config.workers !== 1;
39711
39941
  if (isTimeoutError && wasParallel) {
@@ -39715,58 +39945,42 @@ async function executeRenderJob(job, projectDir, outputPath, onProgress, abortSi
39715
39945
  }
39716
39946
  job.error = errorMessage;
39717
39947
  updateJobStatus(job, "failed", `Failed: ${errorMessage}`, job.progress, onProgress);
39718
- const elapsed = Date.now() - pipelineStart;
39719
- const freeMemMB = Math.round(freemem2() / (1024 * 1024));
39720
39948
  job.failedStage = job.currentStage;
39721
- job.errorDetails = {
39722
- message: errorMessage,
39723
- stack: errorStack,
39724
- elapsedMs: elapsed,
39725
- freeMemoryMB: freeMemMB,
39726
- browserConsoleTail: lastBrowserConsole.length > 0 ? lastBrowserConsole.slice(-30) : void 0,
39727
- perfStages: Object.keys(perfStages).length > 0 ? { ...perfStages } : void 0,
39728
- hdrDiagnostics: hdrDiagnostics.videoExtractionFailures > 0 || hdrDiagnostics.imageDecodeFailures > 0 ? { ...hdrDiagnostics } : void 0
39729
- };
39730
- if (fileServer) {
39731
- const fs4 = fileServer;
39732
- await safeCleanup(
39733
- "close file server (error)",
39734
- () => {
39735
- fs4.close();
39736
- },
39737
- log2
39738
- );
39739
- }
39740
- if (probeSession) {
39741
- const session = probeSession;
39742
- await safeCleanup("close probe session (error)", () => closeCaptureSession(session), log2);
39743
- }
39744
- if (!job.config.debug) {
39745
- await safeCleanup(
39746
- "remove workDir (error)",
39747
- () => {
39748
- if (existsSync37(workDir)) rmSync8(workDir, { recursive: true, force: true });
39749
- },
39750
- log2
39751
- );
39752
- }
39949
+ job.errorDetails = buildRenderErrorDetails({
39950
+ error,
39951
+ pipelineStartMs: pipelineStart,
39952
+ lastBrowserConsole,
39953
+ perfStages,
39954
+ hdrDiagnostics
39955
+ });
39956
+ await cleanupRenderResources({
39957
+ fileServer,
39958
+ probeSession,
39959
+ workDir,
39960
+ debug: Boolean(job.config.debug),
39961
+ log: log2,
39962
+ label: "error"
39963
+ });
39753
39964
  if (restoreLogger) restoreLogger();
39754
39965
  throw error;
39755
39966
  } finally {
39756
- clearInterval(memSamplerInterval);
39967
+ memSampler?.stop();
39757
39968
  }
39758
39969
  }
39759
- var RenderCancelledError, materializePathModule, materializeFileSystem, CAPTURE_CALIBRATION_TARGET_MS, MAX_MEASURED_CAPTURE_COST_MULTIPLIER, CAPTURE_CALIBRATION_PROTOCOL_TIMEOUT_MS;
39970
+ var RenderCancelledError;
39760
39971
  var init_renderOrchestrator = __esm({
39761
39972
  "../producer/src/services/renderOrchestrator.ts"() {
39762
39973
  "use strict";
39763
39974
  init_esm10();
39764
- init_src();
39765
39975
  init_src2();
39766
39976
  init_fileServer2();
39767
39977
  init_logger();
39768
- init_paths();
39769
39978
  init_shared();
39979
+ init_cleanup();
39980
+ init_hdrMode();
39981
+ init_perfSummary();
39982
+ init_captureCost();
39983
+ init_hdrPerf();
39770
39984
  init_compileStage();
39771
39985
  init_probeStage();
39772
39986
  init_extractVideosStage();
@@ -39776,6 +39990,10 @@ var init_renderOrchestrator = __esm({
39776
39990
  init_captureHdrStage();
39777
39991
  init_encodeStage();
39778
39992
  init_assembleStage();
39993
+ init_hdrPerf();
39994
+ init_captureCost();
39995
+ init_shared();
39996
+ init_captureCost();
39779
39997
  RenderCancelledError = class extends Error {
39780
39998
  reason;
39781
39999
  constructor(message = "render_cancelled", reason = "aborted") {
@@ -39784,23 +40002,6 @@ var init_renderOrchestrator = __esm({
39784
40002
  this.reason = reason;
39785
40003
  }
39786
40004
  };
39787
- materializePathModule = {
39788
- resolve: resolve19,
39789
- join: join44,
39790
- dirname: dirname13,
39791
- basename: basename3,
39792
- relative: relative3,
39793
- isAbsolute: isAbsolute7
39794
- };
39795
- materializeFileSystem = {
39796
- existsSync: existsSync37,
39797
- mkdirSync: mkdirSync23,
39798
- symlinkSync,
39799
- cpSync
39800
- };
39801
- CAPTURE_CALIBRATION_TARGET_MS = 600;
39802
- MAX_MEASURED_CAPTURE_COST_MULTIPLIER = 8;
39803
- CAPTURE_CALIBRATION_PROTOCOL_TIMEOUT_MS = 3e4;
39804
40005
  }
39805
40006
  });
39806
40007
 
@@ -39829,8 +40030,8 @@ var init_config3 = __esm({
39829
40030
  });
39830
40031
 
39831
40032
  // ../producer/src/services/hyperframeLint.ts
39832
- import { existsSync as existsSync38, readFileSync as readFileSync27, statSync as statSync13 } from "fs";
39833
- import { resolve as resolve20, join as join45 } from "path";
40033
+ import { existsSync as existsSync39, readFileSync as readFileSync27, statSync as statSync13 } from "fs";
40034
+ import { resolve as resolve20, join as join46 } from "path";
39834
40035
  function isStringRecord(value) {
39835
40036
  if (!value || typeof value !== "object" || Array.isArray(value)) {
39836
40037
  return false;
@@ -39858,7 +40059,7 @@ function pickEntryFile(files, preferredEntryFile) {
39858
40059
  }
39859
40060
  function readProjectEntryFile(projectDir, preferredEntryFile) {
39860
40061
  const absProjectDir = resolve20(projectDir);
39861
- if (!existsSync38(absProjectDir) || !statSync13(absProjectDir).isDirectory()) {
40062
+ if (!existsSync39(absProjectDir) || !statSync13(absProjectDir).isDirectory()) {
39862
40063
  return { error: `Project directory not found: ${absProjectDir}` };
39863
40064
  }
39864
40065
  const entryCandidates = [preferredEntryFile, "index.html", "src/index.html"].filter(
@@ -39869,7 +40070,7 @@ function readProjectEntryFile(projectDir, preferredEntryFile) {
39869
40070
  if (!absoluteEntryPath.startsWith(absProjectDir)) {
39870
40071
  return { error: `Entry file must stay inside project directory: ${entryFile}` };
39871
40072
  }
39872
- if (existsSync38(absoluteEntryPath) && statSync13(absoluteEntryPath).isFile()) {
40073
+ if (existsSync39(absoluteEntryPath) && statSync13(absoluteEntryPath).isFile()) {
39873
40074
  return {
39874
40075
  entryFile,
39875
40076
  html: readFileSync27(absoluteEntryPath, "utf-8"),
@@ -39878,7 +40079,7 @@ function readProjectEntryFile(projectDir, preferredEntryFile) {
39878
40079
  }
39879
40080
  }
39880
40081
  return {
39881
- error: `No HTML entry file found in project directory: ${join45(absProjectDir, preferredEntryFile || "index.html")}`
40082
+ error: `No HTML entry file found in project directory: ${join46(absProjectDir, preferredEntryFile || "index.html")}`
39882
40083
  };
39883
40084
  }
39884
40085
  function prepareHyperframeLintBody(body) {
@@ -39967,15 +40168,15 @@ var init_semaphore = __esm({
39967
40168
 
39968
40169
  // ../producer/src/server.ts
39969
40170
  import {
39970
- existsSync as existsSync39,
40171
+ existsSync as existsSync40,
39971
40172
  mkdirSync as mkdirSync24,
39972
40173
  statSync as statSync14,
39973
40174
  mkdtempSync as mkdtempSync2,
39974
40175
  writeFileSync as writeFileSync18,
39975
- rmSync as rmSync9,
40176
+ rmSync as rmSync10,
39976
40177
  createReadStream
39977
40178
  } from "fs";
39978
- import { resolve as resolve21, dirname as dirname14, join as join46 } from "path";
40179
+ import { resolve as resolve21, dirname as dirname14, join as join47 } from "path";
39979
40180
  import { tmpdir as tmpdir3 } from "os";
39980
40181
  import { parseArgs as parseArgs2 } from "util";
39981
40182
  import crypto2 from "crypto";
@@ -40000,11 +40201,11 @@ async function prepareRenderBody(body) {
40000
40201
  const projectDir = typeof body.projectDir === "string" ? body.projectDir : void 0;
40001
40202
  if (projectDir) {
40002
40203
  const absProjectDir = resolve21(projectDir);
40003
- if (!existsSync39(absProjectDir) || !statSync14(absProjectDir).isDirectory()) {
40204
+ if (!existsSync40(absProjectDir) || !statSync14(absProjectDir).isDirectory()) {
40004
40205
  return { error: `Project directory not found: ${absProjectDir}` };
40005
40206
  }
40006
40207
  const entry = options.entryFile || "index.html";
40007
- if (!existsSync39(resolve21(absProjectDir, entry))) {
40208
+ if (!existsSync40(resolve21(absProjectDir, entry))) {
40008
40209
  return { error: `Entry file "${entry}" not found in project directory: ${absProjectDir}` };
40009
40210
  }
40010
40211
  return { prepared: { input: { projectDir: absProjectDir, ...options } } };
@@ -40029,8 +40230,8 @@ async function prepareRenderBody(body) {
40029
40230
  }
40030
40231
  }
40031
40232
  const tempRoot = process.env.PRODUCER_TMP_PROJECT_DIR || tmpdir3();
40032
- const tempProjectDir = mkdtempSync2(join46(tempRoot, "producer-project-"));
40033
- writeFileSync18(join46(tempProjectDir, "index.html"), htmlContent, "utf-8");
40233
+ const tempProjectDir = mkdtempSync2(join47(tempRoot, "producer-project-"));
40234
+ writeFileSync18(join47(tempProjectDir, "index.html"), htmlContent, "utf-8");
40034
40235
  return {
40035
40236
  prepared: {
40036
40237
  input: {
@@ -40081,7 +40282,7 @@ function createArtifactStore(ttlMs) {
40081
40282
  function cleanupTempDir(dir, log2) {
40082
40283
  if (!dir) return;
40083
40284
  try {
40084
- rmSync9(dir, { recursive: true, force: true });
40285
+ rmSync10(dir, { recursive: true, force: true });
40085
40286
  } catch (error) {
40086
40287
  log2.warn("Failed to cleanup temp project dir", {
40087
40288
  cleanupProjectDir: dir,
@@ -40153,7 +40354,7 @@ function createRenderHandlers(options = {}) {
40153
40354
  log2
40154
40355
  );
40155
40356
  const outputDir = dirname14(absoluteOutputPath);
40156
- if (!existsSync39(outputDir)) mkdirSync24(outputDir, { recursive: true });
40357
+ if (!existsSync40(outputDir)) mkdirSync24(outputDir, { recursive: true });
40157
40358
  const release2 = await renderSemaphore.acquire();
40158
40359
  log2.info("render started", {
40159
40360
  requestId,
@@ -40180,7 +40381,7 @@ function createRenderHandlers(options = {}) {
40180
40381
  log2.info(`render progress ${pct}%`, { requestId, stage: j3.currentStage, message });
40181
40382
  }
40182
40383
  });
40183
- const fileSize = existsSync39(absoluteOutputPath) ? statSync14(absoluteOutputPath).size : 0;
40384
+ const fileSize = existsSync40(absoluteOutputPath) ? statSync14(absoluteOutputPath).size : 0;
40184
40385
  const durationMs = Date.now() - t0;
40185
40386
  const outputToken = store.register(absoluteOutputPath);
40186
40387
  const outputUrl = `${outputUrlPrefix}/${outputToken}`;
@@ -40264,7 +40465,7 @@ function createRenderHandlers(options = {}) {
40264
40465
  log2
40265
40466
  );
40266
40467
  const outputDir = dirname14(absoluteOutputPath);
40267
- if (!existsSync39(outputDir)) mkdirSync24(outputDir, { recursive: true });
40468
+ if (!existsSync40(outputDir)) mkdirSync24(outputDir, { recursive: true });
40268
40469
  log2.info("render-stream started", { requestId, projectDir: input.projectDir });
40269
40470
  const job = createRenderJob({
40270
40471
  fps: input.fps,
@@ -40309,7 +40510,7 @@ function createRenderHandlers(options = {}) {
40309
40510
  },
40310
40511
  abortController.signal
40311
40512
  );
40312
- const fileSize = existsSync39(absoluteOutputPath) ? statSync14(absoluteOutputPath).size : 0;
40513
+ const fileSize = existsSync40(absoluteOutputPath) ? statSync14(absoluteOutputPath).size : 0;
40313
40514
  const outputToken = store.register(absoluteOutputPath);
40314
40515
  const outputUrl = `${outputUrlPrefix}/${outputToken}`;
40315
40516
  log2.info("render-stream completed", { requestId, fileSize, perf: job.perfSummary ?? null });
@@ -40368,7 +40569,7 @@ function createRenderHandlers(options = {}) {
40368
40569
  if (!artifact) {
40369
40570
  return c3.json({ success: false, error: "Output artifact not found or expired" }, 404);
40370
40571
  }
40371
- if (!existsSync39(artifact.path)) {
40572
+ if (!existsSync40(artifact.path)) {
40372
40573
  store.delete(token);
40373
40574
  return c3.json({ success: false, error: "Output artifact file missing" }, 404);
40374
40575
  }
@@ -40507,20 +40708,20 @@ __export(studioServer_exports, {
40507
40708
  });
40508
40709
  import { Hono as Hono5 } from "hono";
40509
40710
  import { streamSSE as streamSSE3 } from "hono/streaming";
40510
- import { existsSync as existsSync40, readFileSync as readFileSync28, writeFileSync as writeFileSync19, statSync as statSync15 } from "fs";
40511
- import { resolve as resolve22, join as join47, basename as basename4 } from "path";
40711
+ import { existsSync as existsSync41, readFileSync as readFileSync28, writeFileSync as writeFileSync19, statSync as statSync15 } from "fs";
40712
+ import { resolve as resolve22, join as join48, basename as basename4 } from "path";
40512
40713
  function resolveDistDir() {
40513
40714
  return resolveStudioBundle().dir;
40514
40715
  }
40515
40716
  function resolveStudioBundle() {
40516
40717
  const builtPath = resolve22(__dirname, "studio");
40517
40718
  const builtIndex = resolve22(builtPath, "index.html");
40518
- if (existsSync40(builtIndex)) {
40719
+ if (existsSync41(builtIndex)) {
40519
40720
  return { dir: builtPath, indexPath: builtIndex, available: true, checkedPaths: [builtIndex] };
40520
40721
  }
40521
40722
  const devPath = resolve22(__dirname, "..", "..", "..", "studio", "dist");
40522
40723
  const devIndex = resolve22(devPath, "index.html");
40523
- if (existsSync40(devIndex)) {
40724
+ if (existsSync41(devIndex)) {
40524
40725
  return {
40525
40726
  dir: devPath,
40526
40727
  indexPath: devIndex,
@@ -40537,9 +40738,9 @@ function resolveStudioBundle() {
40537
40738
  }
40538
40739
  function resolveRuntimePath() {
40539
40740
  const builtPath = resolve22(__dirname, "hyperframe-runtime.js");
40540
- if (existsSync40(builtPath)) return builtPath;
40741
+ if (existsSync41(builtPath)) return builtPath;
40541
40742
  const iifePath = resolve22(__dirname, "hyperframe.runtime.iife.js");
40542
- if (existsSync40(iifePath)) return iifePath;
40743
+ if (existsSync41(iifePath)) return iifePath;
40543
40744
  const devPath = resolve22(
40544
40745
  __dirname,
40545
40746
  "..",
@@ -40549,12 +40750,12 @@ function resolveRuntimePath() {
40549
40750
  "dist",
40550
40751
  "hyperframe.runtime.iife.js"
40551
40752
  );
40552
- if (existsSync40(devPath)) return devPath;
40753
+ if (existsSync41(devPath)) return devPath;
40553
40754
  return builtPath;
40554
40755
  }
40555
40756
  function readStudioManualEditManifestContent(projectDir) {
40556
- const manifestPath = join47(projectDir, STUDIO_MANUAL_EDITS_PATH2);
40557
- if (!existsSync40(manifestPath)) return "";
40757
+ const manifestPath = join48(projectDir, STUDIO_MANUAL_EDITS_PATH2);
40758
+ if (!existsSync41(manifestPath)) return "";
40558
40759
  try {
40559
40760
  return readFileSync28(manifestPath, "utf-8");
40560
40761
  } catch {
@@ -40642,7 +40843,7 @@ function createStudioServer(options) {
40642
40843
  return lintHyperframeHtml2(html, opts);
40643
40844
  },
40644
40845
  runtimeUrl: "/api/runtime.js",
40645
- rendersDir: () => join47(projectDir, "renders"),
40846
+ rendersDir: () => join48(projectDir, "renders"),
40646
40847
  startRender(opts) {
40647
40848
  const state = {
40648
40849
  id: opts.jobId,
@@ -40755,7 +40956,7 @@ function createStudioServer(options) {
40755
40956
  });
40756
40957
  app.get("/api/runtime.js", (c3) => {
40757
40958
  const serve4 = async () => {
40758
- const runtimeSource = await loadRuntimeSource() ?? (existsSync40(runtimePath) ? readFileSync28(runtimePath, "utf-8") : null);
40959
+ const runtimeSource = await loadRuntimeSource() ?? (existsSync41(runtimePath) ? readFileSync28(runtimePath, "utf-8") : null);
40759
40960
  if (!runtimeSource) return c3.text("runtime not available", 404);
40760
40961
  return c3.body(runtimeSource, 200, {
40761
40962
  "Content-Type": "text/javascript",
@@ -40791,7 +40992,7 @@ function createStudioServer(options) {
40791
40992
  });
40792
40993
  const serveStudioStaticFile = (c3) => {
40793
40994
  const filePath = resolve22(studioDir, c3.req.path.slice(1));
40794
- if (!existsSync40(filePath) || !statSync15(filePath).isFile()) return c3.text("not found", 404);
40995
+ if (!existsSync41(filePath) || !statSync15(filePath).isFile()) return c3.text("not found", 404);
40795
40996
  const content = readFileSync28(filePath);
40796
40997
  return new Response(content, {
40797
40998
  headers: { "Content-Type": getMimeType(filePath), "Cache-Control": "no-store" }
@@ -40801,7 +41002,7 @@ function createStudioServer(options) {
40801
41002
  app.get("/icons/*", serveStudioStaticFile);
40802
41003
  app.get("*", (c3) => {
40803
41004
  const indexPath = resolve22(studioDir, "index.html");
40804
- if (!existsSync40(indexPath)) {
41005
+ if (!existsSync41(indexPath)) {
40805
41006
  return c3.html(
40806
41007
  `<!doctype html>
40807
41008
  <html>
@@ -40883,20 +41084,20 @@ __export(preview_exports, {
40883
41084
  examples: () => examples
40884
41085
  });
40885
41086
  import { spawn as spawn9 } from "child_process";
40886
- import { existsSync as existsSync41, lstatSync as lstatSync2, symlinkSync as symlinkSync2, unlinkSync as unlinkSync5, readlinkSync, mkdirSync as mkdirSync25 } from "fs";
40887
- import { resolve as resolve23, dirname as dirname15, basename as basename5, join as join48 } from "path";
41087
+ import { existsSync as existsSync42, lstatSync as lstatSync2, symlinkSync as symlinkSync2, unlinkSync as unlinkSync5, readlinkSync, mkdirSync as mkdirSync25 } from "fs";
41088
+ import { resolve as resolve23, dirname as dirname15, basename as basename5, join as join49 } from "path";
40888
41089
  import { fileURLToPath as fileURLToPath4 } from "url";
40889
41090
  import { createRequire } from "module";
40890
41091
  async function runDevMode(dir, projectName) {
40891
41092
  const thisFile = fileURLToPath4(import.meta.url);
40892
41093
  const repoRoot = resolve23(dirname15(thisFile), "..", "..", "..", "..");
40893
- const projectsDir = join48(repoRoot, "packages", "studio", "data", "projects");
41094
+ const projectsDir = join49(repoRoot, "packages", "studio", "data", "projects");
40894
41095
  const pName = projectName ?? basename5(dir);
40895
- const symlinkPath = join48(projectsDir, pName);
41096
+ const symlinkPath = join49(projectsDir, pName);
40896
41097
  mkdirSync25(projectsDir, { recursive: true });
40897
41098
  let createdSymlink = false;
40898
41099
  if (dir !== symlinkPath) {
40899
- if (existsSync41(symlinkPath)) {
41100
+ if (existsSync42(symlinkPath)) {
40900
41101
  try {
40901
41102
  const stat3 = lstatSync2(symlinkPath);
40902
41103
  if (stat3.isSymbolicLink()) {
@@ -40908,7 +41109,7 @@ async function runDevMode(dir, projectName) {
40908
41109
  } catch {
40909
41110
  }
40910
41111
  }
40911
- if (!existsSync41(symlinkPath)) {
41112
+ if (!existsSync42(symlinkPath)) {
40912
41113
  symlinkSync2(dir, symlinkPath, "dir");
40913
41114
  createdSymlink = true;
40914
41115
  }
@@ -40916,7 +41117,7 @@ async function runDevMode(dir, projectName) {
40916
41117
  ge(c2.bold("hyperframes preview"));
40917
41118
  const s2 = ft();
40918
41119
  s2.start("Starting studio...");
40919
- const studioPkgDir = join48(repoRoot, "packages", "studio");
41120
+ const studioPkgDir = join49(repoRoot, "packages", "studio");
40920
41121
  const child = spawn9("bun", ["run", "dev"], {
40921
41122
  cwd: studioPkgDir,
40922
41123
  stdio: ["ignore", "pipe", "pipe"]
@@ -40950,7 +41151,7 @@ async function runDevMode(dir, projectName) {
40950
41151
  if (createdSymlink) {
40951
41152
  process.on("exit", () => {
40952
41153
  try {
40953
- if (existsSync41(symlinkPath)) unlinkSync5(symlinkPath);
41154
+ if (existsSync42(symlinkPath)) unlinkSync5(symlinkPath);
40954
41155
  } catch {
40955
41156
  }
40956
41157
  });
@@ -40961,7 +41162,7 @@ async function runDevMode(dir, projectName) {
40961
41162
  }
40962
41163
  function hasLocalStudio(dir) {
40963
41164
  try {
40964
- const req = createRequire(join48(dir, "package.json"));
41165
+ const req = createRequire(join49(dir, "package.json"));
40965
41166
  req.resolve("@hyperframes/studio/package.json");
40966
41167
  return true;
40967
41168
  } catch {
@@ -40969,20 +41170,20 @@ function hasLocalStudio(dir) {
40969
41170
  }
40970
41171
  }
40971
41172
  async function runLocalStudioMode(dir, projectName) {
40972
- const req = createRequire(join48(dir, "package.json"));
41173
+ const req = createRequire(join49(dir, "package.json"));
40973
41174
  const studioPkgPath = dirname15(req.resolve("@hyperframes/studio/package.json"));
40974
41175
  const pName = projectName ?? basename5(dir);
40975
- const projectsDir = join48(studioPkgPath, "data", "projects");
40976
- const symlinkPath = join48(projectsDir, pName);
41176
+ const projectsDir = join49(studioPkgPath, "data", "projects");
41177
+ const symlinkPath = join49(projectsDir, pName);
40977
41178
  mkdirSync25(projectsDir, { recursive: true });
40978
41179
  let createdSymlink = false;
40979
41180
  if (dir !== symlinkPath) {
40980
- if (existsSync41(symlinkPath) && lstatSync2(symlinkPath).isSymbolicLink()) {
41181
+ if (existsSync42(symlinkPath) && lstatSync2(symlinkPath).isSymbolicLink()) {
40981
41182
  if (resolve23(readlinkSync(symlinkPath)) !== resolve23(dir)) {
40982
41183
  unlinkSync5(symlinkPath);
40983
41184
  }
40984
41185
  }
40985
- if (!existsSync41(symlinkPath)) {
41186
+ if (!existsSync42(symlinkPath)) {
40986
41187
  symlinkSync2(dir, symlinkPath, "dir");
40987
41188
  createdSymlink = true;
40988
41189
  }
@@ -41021,7 +41222,7 @@ async function runLocalStudioMode(dir, projectName) {
41021
41222
  if (createdSymlink) {
41022
41223
  process.on("exit", () => {
41023
41224
  try {
41024
- if (existsSync41(symlinkPath)) unlinkSync5(symlinkPath);
41225
+ if (existsSync42(symlinkPath)) unlinkSync5(symlinkPath);
41025
41226
  } catch {
41026
41227
  }
41027
41228
  });
@@ -41197,8 +41398,8 @@ var init_preview2 = __esm({
41197
41398
  const dir = resolve23(rawArg ?? ".");
41198
41399
  const isImplicitCwd = !rawArg || rawArg === "." || rawArg === "./";
41199
41400
  const projectName = isImplicitCwd ? basename5(process.env.PWD ?? dir) : basename5(dir);
41200
- const indexPath = join48(dir, "index.html");
41201
- if (existsSync41(indexPath)) {
41401
+ const indexPath = join49(dir, "index.html");
41402
+ if (existsSync42(indexPath)) {
41202
41403
  const project = { dir, name: projectName, indexPath };
41203
41404
  const lintResult = lintProject(project);
41204
41405
  if (lintResult.totalErrors > 0 || lintResult.totalWarnings > 0) {
@@ -41229,7 +41430,7 @@ __export(init_exports, {
41229
41430
  injectTailwindBrowserScript: () => injectTailwindBrowserScript
41230
41431
  });
41231
41432
  import {
41232
- existsSync as existsSync42,
41433
+ existsSync as existsSync43,
41233
41434
  mkdirSync as mkdirSync26,
41234
41435
  copyFileSync as copyFileSync5,
41235
41436
  cpSync as cpSync2,
@@ -41237,7 +41438,7 @@ import {
41237
41438
  readFileSync as readFileSync29,
41238
41439
  readdirSync as readdirSync16
41239
41440
  } from "fs";
41240
- import { resolve as resolve24, basename as basename6, join as join49, dirname as dirname16 } from "path";
41441
+ import { resolve as resolve24, basename as basename6, join as join50, dirname as dirname16 } from "path";
41241
41442
  import { fileURLToPath as fileURLToPath5 } from "url";
41242
41443
  import { execFileSync as execFileSync5, spawn as spawn10 } from "child_process";
41243
41444
  function probeVideo(filePath) {
@@ -41309,7 +41510,7 @@ function resolveAssetDir(devSegments, builtSegments) {
41309
41510
  const base = dirname16(fileURLToPath5(import.meta.url));
41310
41511
  const devPath = resolve24(base, ...devSegments);
41311
41512
  const builtPath = resolve24(base, ...builtSegments);
41312
- return existsSync42(devPath) ? devPath : builtPath;
41513
+ return existsSync43(devPath) ? devPath : builtPath;
41313
41514
  }
41314
41515
  function getStaticTemplateDir(templateId) {
41315
41516
  return resolveAssetDir(["..", "templates", templateId], ["templates", templateId]);
@@ -41337,7 +41538,7 @@ function buildPackageScripts() {
41337
41538
  }
41338
41539
  function writeDefaultPackageJson(destDir, projectName) {
41339
41540
  const packageJsonPath = resolve24(destDir, "package.json");
41340
- if (existsSync42(packageJsonPath)) return;
41541
+ if (existsSync43(packageJsonPath)) return;
41341
41542
  writeFileSync20(
41342
41543
  packageJsonPath,
41343
41544
  `${JSON.stringify(
@@ -41359,7 +41560,7 @@ function listHtmlFiles(dir) {
41359
41560
  const ignoredDirs = /* @__PURE__ */ new Set([".git", "dist", "node_modules"]);
41360
41561
  function walk(currentDir) {
41361
41562
  for (const entry of readdirSync16(currentDir, { withFileTypes: true })) {
41362
- const entryPath = join49(currentDir, entry.name);
41563
+ const entryPath = join50(currentDir, entry.name);
41363
41564
  if (entry.isDirectory()) {
41364
41565
  if (!ignoredDirs.has(entry.name)) walk(entryPath);
41365
41566
  continue;
@@ -41404,7 +41605,7 @@ function writeTailwindSupport(destDir) {
41404
41605
  }
41405
41606
  }
41406
41607
  function patchVideoSrc(dir, videoFilename, durationSeconds) {
41407
- const htmlFiles = readdirSync16(dir, { withFileTypes: true, recursive: true }).filter((e3) => e3.isFile() && e3.name.endsWith(".html")).map((e3) => join49(e3.parentPath ?? e3.path, e3.name));
41608
+ const htmlFiles = readdirSync16(dir, { withFileTypes: true, recursive: true }).filter((e3) => e3.isFile() && e3.name.endsWith(".html")).map((e3) => join50(e3.parentPath ?? e3.path, e3.name));
41408
41609
  for (const file of htmlFiles) {
41409
41610
  let content = readFileSync29(file, "utf-8");
41410
41611
  if (videoFilename) {
@@ -41559,7 +41760,7 @@ function applyResolutionPreset(destDir, resolution) {
41559
41760
  async function scaffoldProject(destDir, name, templateId, localVideoName, durationSeconds, tailwind = false, resolution) {
41560
41761
  mkdirSync26(destDir, { recursive: true });
41561
41762
  const templateDir = getStaticTemplateDir(templateId);
41562
- if (existsSync42(join49(templateDir, "index.html"))) {
41763
+ if (existsSync43(join50(templateDir, "index.html"))) {
41563
41764
  cpSync2(templateDir, destDir, { recursive: true });
41564
41765
  } else {
41565
41766
  await fetchRemoteTemplate(templateId, destDir);
@@ -41580,15 +41781,15 @@ async function scaffoldProject(destDir, name, templateId, localVideoName, durati
41580
41781
  ),
41581
41782
  "utf-8"
41582
41783
  );
41583
- if (!existsSync42(resolve24(destDir, "hyperframes.json"))) {
41784
+ if (!existsSync43(resolve24(destDir, "hyperframes.json"))) {
41584
41785
  const { writeProjectConfig: writeProjectConfig2, DEFAULT_PROJECT_CONFIG: DEFAULT_PROJECT_CONFIG2 } = await Promise.resolve().then(() => (init_projectConfig(), projectConfig_exports));
41585
41786
  writeProjectConfig2(destDir, DEFAULT_PROJECT_CONFIG2);
41586
41787
  }
41587
41788
  writeDefaultPackageJson(destDir, name);
41588
41789
  const sharedDir = getSharedTemplateDir();
41589
- if (existsSync42(sharedDir)) {
41790
+ if (existsSync43(sharedDir)) {
41590
41791
  for (const entry of readdirSync16(sharedDir, { withFileTypes: true })) {
41591
- const src = join49(sharedDir, entry.name);
41792
+ const src = join50(sharedDir, entry.name);
41592
41793
  const dest = resolve24(destDir, entry.name);
41593
41794
  if (entry.isFile() || entry.isSymbolicLink()) {
41594
41795
  copyFileSync5(src, dest);
@@ -41746,7 +41947,7 @@ var init_init = __esm({
41746
41947
  const templateId2 = exampleFlag ?? "blank";
41747
41948
  const name2 = args.name ?? "my-video";
41748
41949
  const destDir2 = resolve24(name2);
41749
- if (existsSync42(destDir2) && readdirSync16(destDir2).length > 0) {
41950
+ if (existsSync43(destDir2) && readdirSync16(destDir2).length > 0) {
41750
41951
  console.error(c2.error(`Directory already exists and is not empty: ${name2}`));
41751
41952
  process.exit(1);
41752
41953
  }
@@ -41760,7 +41961,7 @@ var init_init = __esm({
41760
41961
  }
41761
41962
  if (videoFlag) {
41762
41963
  const videoPath = resolve24(videoFlag);
41763
- if (!existsSync42(videoPath)) {
41964
+ if (!existsSync43(videoPath)) {
41764
41965
  console.error(c2.error(`Video file not found: ${videoFlag}`));
41765
41966
  process.exit(1);
41766
41967
  }
@@ -41774,7 +41975,7 @@ var init_init = __esm({
41774
41975
  }
41775
41976
  if (audioFlag) {
41776
41977
  const audioPath = resolve24(audioFlag);
41777
- if (!existsSync42(audioPath)) {
41978
+ if (!existsSync43(audioPath)) {
41778
41979
  console.error(c2.error(`Audio file not found: ${audioFlag}`));
41779
41980
  process.exit(1);
41780
41981
  }
@@ -41822,7 +42023,7 @@ var init_init = __esm({
41822
42023
  }
41823
42024
  trackInitTemplate(templateId2, { tailwind });
41824
42025
  const transcriptFile2 = resolve24(destDir2, "transcript.json");
41825
- if (existsSync42(transcriptFile2)) {
42026
+ if (existsSync43(transcriptFile2)) {
41826
42027
  await patchTranscript(destDir2, transcriptFile2);
41827
42028
  }
41828
42029
  console.log(c2.success(`Created ${c2.accent(name2 + "/")}`));
@@ -41877,7 +42078,7 @@ var init_init = __esm({
41877
42078
  name = nameResult;
41878
42079
  }
41879
42080
  const destDir = resolve24(name);
41880
- if (existsSync42(destDir) && readdirSync16(destDir).length > 0) {
42081
+ if (existsSync43(destDir) && readdirSync16(destDir).length > 0) {
41881
42082
  const overwrite = await ue({
41882
42083
  message: `Directory ${c2.accent(name)} already exists and is not empty. Overwrite?`,
41883
42084
  initialValue: false
@@ -41892,7 +42093,7 @@ var init_init = __esm({
41892
42093
  let videoDuration;
41893
42094
  if (videoFlag) {
41894
42095
  const videoPath = resolve24(videoFlag);
41895
- if (!existsSync42(videoPath)) {
42096
+ if (!existsSync43(videoPath)) {
41896
42097
  R2.error(`File not found: ${videoFlag}`);
41897
42098
  me("Setup cancelled.");
41898
42099
  process.exit(1);
@@ -41904,7 +42105,7 @@ var init_init = __esm({
41904
42105
  videoDuration = result.meta.durationSeconds;
41905
42106
  } else if (audioFlag) {
41906
42107
  const audioPath = resolve24(audioFlag);
41907
- if (!existsSync42(audioPath)) {
42108
+ if (!existsSync43(audioPath)) {
41908
42109
  R2.error(`File not found: ${audioFlag}`);
41909
42110
  me("Setup cancelled.");
41910
42111
  process.exit(1);
@@ -42005,7 +42206,7 @@ ${c2.dim("Use --example blank for offline use.")}`
42005
42206
  }
42006
42207
  trackInitTemplate(templateId, { tailwind });
42007
42208
  const transcriptFile = resolve24(destDir, "transcript.json");
42008
- if (existsSync42(transcriptFile)) {
42209
+ if (existsSync43(transcriptFile)) {
42009
42210
  await patchTranscript(destDir, transcriptFile);
42010
42211
  }
42011
42212
  const files = readdirSync16(destDir);
@@ -42036,7 +42237,7 @@ ${c2.dim("Use --example blank for offline use.")}`
42036
42237
  });
42037
42238
 
42038
42239
  // src/utils/clipboard.ts
42039
- import { spawnSync as spawnSync2 } from "child_process";
42240
+ import { spawnSync as spawnSync3 } from "child_process";
42040
42241
  import { platform as platform4 } from "os";
42041
42242
  function detectProvider() {
42042
42243
  const os = platform4();
@@ -42054,7 +42255,7 @@ function detectProvider() {
42054
42255
  ];
42055
42256
  const cmd = process.platform === "win32" ? "where" : "which";
42056
42257
  for (const p2 of candidates) {
42057
- const result = spawnSync2(cmd, [p2.cmd], { stdio: "ignore" });
42258
+ const result = spawnSync3(cmd, [p2.cmd], { stdio: "ignore" });
42058
42259
  if (result.status === 0) return p2;
42059
42260
  }
42060
42261
  return void 0;
@@ -42064,7 +42265,7 @@ function copyToClipboard(text) {
42064
42265
  const provider = cachedProvider;
42065
42266
  if (!provider) return false;
42066
42267
  try {
42067
- const res = spawnSync2(provider.cmd, provider.args, {
42268
+ const res = spawnSync3(provider.cmd, provider.args, {
42068
42269
  input: text,
42069
42270
  encoding: "utf-8"
42070
42271
  });
@@ -42091,7 +42292,7 @@ __export(add_exports, {
42091
42292
  remapTarget: () => remapTarget,
42092
42293
  runAdd: () => runAdd
42093
42294
  });
42094
- import { existsSync as existsSync43 } from "fs";
42295
+ import { existsSync as existsSync44 } from "fs";
42095
42296
  import { resolve as resolve25, relative as relative4 } from "path";
42096
42297
  function remapTarget(item, originalTarget, paths) {
42097
42298
  if (item.type === "hyperframes:block") {
@@ -42117,8 +42318,8 @@ function buildSnippet(item, relativeTarget) {
42117
42318
  async function runAdd(opts) {
42118
42319
  const projectDir = resolve25(opts.projectDir);
42119
42320
  let config = loadProjectConfig(projectDir);
42120
- const hasConfig = existsSync43(projectConfigPath(projectDir));
42121
- if (!hasConfig && existsSync43(resolve25(projectDir, "index.html"))) {
42321
+ const hasConfig = existsSync44(projectConfigPath(projectDir));
42322
+ if (!hasConfig && existsSync44(resolve25(projectDir, "index.html"))) {
42122
42323
  writeProjectConfig(projectDir, DEFAULT_PROJECT_CONFIG);
42123
42324
  config = DEFAULT_PROJECT_CONFIG;
42124
42325
  }
@@ -42220,10 +42421,10 @@ var init_add = __esm({
42220
42421
  const projectDir = resolve25(args.dir ?? process.cwd());
42221
42422
  const json = args.json === true;
42222
42423
  const skipClipboard = args["no-clipboard"] === true;
42223
- const hasConfigBefore = existsSync43(projectConfigPath(projectDir));
42424
+ const hasConfigBefore = existsSync44(projectConfigPath(projectDir));
42224
42425
  try {
42225
42426
  const result = await runAdd({ name: args.name, projectDir, skipClipboard });
42226
- const wroteConfig = !hasConfigBefore && existsSync43(projectConfigPath(projectDir));
42427
+ const wroteConfig = !hasConfigBefore && existsSync44(projectConfigPath(projectDir));
42227
42428
  if (json) {
42228
42429
  console.log(JSON.stringify(result));
42229
42430
  return;
@@ -42253,7 +42454,7 @@ var init_add = __esm({
42253
42454
  process.exit(1);
42254
42455
  }
42255
42456
  let config = loadProjectConfig(projectDir);
42256
- if (!existsSync43(projectConfigPath(projectDir)) && existsSync43(resolve25(projectDir, "index.html"))) {
42457
+ if (!existsSync44(projectConfigPath(projectDir)) && existsSync44(resolve25(projectDir, "index.html"))) {
42257
42458
  writeProjectConfig(projectDir, DEFAULT_PROJECT_CONFIG);
42258
42459
  config = DEFAULT_PROJECT_CONFIG;
42259
42460
  }
@@ -42473,17 +42674,17 @@ var init_format = __esm({
42473
42674
  });
42474
42675
 
42475
42676
  // src/utils/project.ts
42476
- import { existsSync as existsSync44, statSync as statSync16 } from "fs";
42677
+ import { existsSync as existsSync45, statSync as statSync16 } from "fs";
42477
42678
  import { resolve as resolve27, basename as basename7 } from "path";
42478
42679
  function resolveProject(dirArg) {
42479
42680
  const dir = resolve27(dirArg ?? ".");
42480
42681
  const name = basename7(dir);
42481
42682
  const indexPath = resolve27(dir, "index.html");
42482
- if (!existsSync44(dir) || !statSync16(dir).isDirectory()) {
42683
+ if (!existsSync45(dir) || !statSync16(dir).isDirectory()) {
42483
42684
  errorBox("Not a directory: " + dir);
42484
42685
  process.exit(1);
42485
42686
  }
42486
- if (!existsSync44(indexPath)) {
42687
+ if (!existsSync45(indexPath)) {
42487
42688
  errorBox(
42488
42689
  "No composition found in " + dir,
42489
42690
  "No index.html file found.",
@@ -42506,7 +42707,7 @@ __export(play_exports, {
42506
42707
  default: () => play_default,
42507
42708
  examples: () => examples5
42508
42709
  });
42509
- import { existsSync as existsSync45, readFileSync as readFileSync30 } from "fs";
42710
+ import { existsSync as existsSync46, readFileSync as readFileSync30 } from "fs";
42510
42711
  import { resolve as resolve28, dirname as dirname17 } from "path";
42511
42712
  function commandDir() {
42512
42713
  return dirname17(new URL(import.meta.url).pathname);
@@ -42521,7 +42722,7 @@ function resolveRuntimePath2() {
42521
42722
  resolve28(d2, "..", "..", "..", "core", "dist", "hyperframe.runtime.iife.js")
42522
42723
  ];
42523
42724
  for (const p2 of candidates) {
42524
- if (existsSync45(p2)) return p2;
42725
+ if (existsSync46(p2)) return p2;
42525
42726
  }
42526
42727
  return null;
42527
42728
  }
@@ -42535,7 +42736,7 @@ function resolvePlayerPath() {
42535
42736
  resolve28(d2, "..", "hyperframes-player.global.js")
42536
42737
  ];
42537
42738
  for (const p2 of candidates) {
42538
- if (existsSync45(p2)) return p2;
42739
+ if (existsSync46(p2)) return p2;
42539
42740
  }
42540
42741
  return null;
42541
42742
  }
@@ -42639,7 +42840,7 @@ var init_play = __esm({
42639
42840
  const reqPath = ctx.req.path.replace("/composition/", "");
42640
42841
  const filePath = resolve28(project.dir, reqPath);
42641
42842
  if (!filePath.startsWith(project.dir)) return ctx.text("Forbidden", 403);
42642
- if (!existsSync45(filePath)) return ctx.text("Not found", 404);
42843
+ if (!existsSync46(filePath)) return ctx.text("Not found", 404);
42643
42844
  const content = readFileSync30(filePath, "utf-8");
42644
42845
  if (filePath.endsWith(".html")) {
42645
42846
  const injected = injectRuntime(content);
@@ -42715,7 +42916,7 @@ var init_play = __esm({
42715
42916
  });
42716
42917
 
42717
42918
  // src/utils/publishProject.ts
42718
- import { basename as basename8, join as join50, relative as relative5 } from "path";
42919
+ import { basename as basename8, join as join51, relative as relative5 } from "path";
42719
42920
  import { readdirSync as readdirSync17, readFileSync as readFileSync31, statSync as statSync17 } from "fs";
42720
42921
  import AdmZip from "adm-zip";
42721
42922
  function isRecord2(value) {
@@ -42816,7 +43017,7 @@ function shouldIgnoreSegment(segment) {
42816
43017
  function collectProjectFiles(rootDir, currentDir, paths) {
42817
43018
  for (const entry of readdirSync17(currentDir, { withFileTypes: true })) {
42818
43019
  if (shouldIgnoreSegment(entry.name)) continue;
42819
- const absolutePath = join50(currentDir, entry.name);
43020
+ const absolutePath = join51(currentDir, entry.name);
42820
43021
  const relativePath = relative5(rootDir, absolutePath).replaceAll("\\", "/");
42821
43022
  if (!relativePath) continue;
42822
43023
  if (entry.isDirectory()) {
@@ -42835,7 +43036,7 @@ function createPublishArchive(projectDir) {
42835
43036
  }
42836
43037
  const archive = new AdmZip();
42837
43038
  for (const filePath of filePaths) {
42838
- archive.addFile(filePath, readFileSync31(join50(projectDir, filePath)));
43039
+ archive.addFile(filePath, readFileSync31(join51(projectDir, filePath)));
42839
43040
  }
42840
43041
  return {
42841
43042
  buffer: archive.toBuffer(),
@@ -42956,8 +43157,8 @@ __export(publish_exports, {
42956
43157
  examples: () => examples6
42957
43158
  });
42958
43159
  import { basename as basename9, resolve as resolve29 } from "path";
42959
- import { existsSync as existsSync46 } from "fs";
42960
- import { join as join51 } from "path";
43160
+ import { existsSync as existsSync47 } from "fs";
43161
+ import { join as join52 } from "path";
42961
43162
  var examples6, publish_default;
42962
43163
  var init_publish = __esm({
42963
43164
  "src/commands/publish.ts"() {
@@ -42992,8 +43193,8 @@ var init_publish = __esm({
42992
43193
  const dir = resolve29(rawArg ?? ".");
42993
43194
  const isImplicitCwd = !rawArg || rawArg === "." || rawArg === "./";
42994
43195
  const projectName = isImplicitCwd ? basename9(process.env["PWD"] ?? dir) : basename9(dir);
42995
- const indexPath = join51(dir, "index.html");
42996
- if (existsSync46(indexPath)) {
43196
+ const indexPath = join52(dir, "index.html");
43197
+ if (existsSync47(indexPath)) {
42997
43198
  const lintResult = lintProject({ dir, name: projectName, indexPath });
42998
43199
  if (lintResult.totalErrors > 0 || lintResult.totalWarnings > 0) {
42999
43200
  console.log();
@@ -43187,9 +43388,9 @@ __export(render_exports, {
43187
43388
  resolveVariablesArg: () => resolveVariablesArg,
43188
43389
  validateVariablesAgainstProject: () => validateVariablesAgainstProject
43189
43390
  });
43190
- import { mkdirSync as mkdirSync27, readdirSync as readdirSync18, readFileSync as readFileSync32, statSync as statSync18, writeFileSync as writeFileSync21, rmSync as rmSync10 } from "fs";
43391
+ import { mkdirSync as mkdirSync27, readdirSync as readdirSync18, readFileSync as readFileSync32, statSync as statSync18, writeFileSync as writeFileSync21, rmSync as rmSync11 } from "fs";
43191
43392
  import { cpus as cpus3, freemem as freemem3, tmpdir as tmpdir4 } from "os";
43192
- import { resolve as resolve30, dirname as dirname18, join as join52, basename as basename10 } from "path";
43393
+ import { resolve as resolve30, dirname as dirname18, join as join53, basename as basename10 } from "path";
43193
43394
  import { execFileSync as execFileSync6, spawn as spawn11 } from "child_process";
43194
43395
  function formatFpsParseError(input, reason) {
43195
43396
  switch (reason) {
@@ -43334,9 +43535,9 @@ function ensureDockerImage(version, quiet) {
43334
43535
  }
43335
43536
  if (!quiet) console.log(c2.dim(` Building Docker image: ${tag}...`));
43336
43537
  const dockerfilePath = resolveDockerfilePath();
43337
- const tmpDir = join52(tmpdir4(), `hyperframes-docker-${Date.now()}`);
43538
+ const tmpDir = join53(tmpdir4(), `hyperframes-docker-${Date.now()}`);
43338
43539
  mkdirSync27(tmpDir, { recursive: true });
43339
- writeFileSync21(join52(tmpDir, "Dockerfile"), readFileSync32(dockerfilePath));
43540
+ writeFileSync21(join53(tmpDir, "Dockerfile"), readFileSync32(dockerfilePath));
43340
43541
  try {
43341
43542
  execFileSync6(
43342
43543
  "docker",
@@ -43356,7 +43557,7 @@ function ensureDockerImage(version, quiet) {
43356
43557
  const message = error instanceof Error ? error.message : String(error);
43357
43558
  throw new Error(`Failed to build Docker image: ${message}`);
43358
43559
  } finally {
43359
- rmSync10(tmpDir, { recursive: true, force: true });
43560
+ rmSync11(tmpDir, { recursive: true, force: true });
43360
43561
  }
43361
43562
  if (!quiet) console.log(c2.dim(` Docker image: ${tag} (built)`));
43362
43563
  return tag;
@@ -43548,7 +43749,7 @@ function printRenderComplete(outputPath, elapsedMs, quiet) {
43548
43749
  for (const entry of readdirSync18(outputPath, { withFileTypes: true })) {
43549
43750
  if (!entry.isFile()) continue;
43550
43751
  try {
43551
- total += statSync18(join52(outputPath, entry.name)).size;
43752
+ total += statSync18(join53(outputPath, entry.name)).size;
43552
43753
  } catch {
43553
43754
  }
43554
43755
  }
@@ -43790,7 +43991,7 @@ var init_render2 = __esm({
43790
43991
  const now = /* @__PURE__ */ new Date();
43791
43992
  const datePart = now.toISOString().slice(0, 10);
43792
43993
  const timePart = now.toTimeString().slice(0, 8).replace(/:/g, "-");
43793
- const outputPath = args.output ? resolve30(args.output) : join52(rendersDir, `${project.name}_${datePart}_${timePart}${ext}`);
43994
+ const outputPath = args.output ? resolve30(args.output) : join53(rendersDir, `${project.name}_${datePart}_${timePart}${ext}`);
43794
43995
  mkdirSync27(dirname18(outputPath), { recursive: true });
43795
43996
  const useDocker = args.docker ?? false;
43796
43997
  const useGpu = args.gpu ?? false;
@@ -44205,7 +44406,7 @@ var init_lint3 = __esm({
44205
44406
 
44206
44407
  // src/utils/staticProjectServer.ts
44207
44408
  import { createServer } from "http";
44208
- import { existsSync as existsSync47, readFileSync as readFileSync33 } from "fs";
44409
+ import { existsSync as existsSync48, readFileSync as readFileSync33 } from "fs";
44209
44410
  import { isAbsolute as isAbsolute8, relative as relative6, resolve as resolve31 } from "path";
44210
44411
  async function serveStaticProjectHtml(projectDir, html, bindErrorMessage = "Failed to bind local HTTP server") {
44211
44412
  const server = createServer((req, res) => {
@@ -44222,7 +44423,7 @@ async function serveStaticProjectHtml(projectDir, html, bindErrorMessage = "Fail
44222
44423
  res.end();
44223
44424
  return;
44224
44425
  }
44225
- if (existsSync47(filePath)) {
44426
+ if (existsSync48(filePath)) {
44226
44427
  res.writeHead(200, { "Content-Type": getMimeType(filePath) });
44227
44428
  res.end(readFileSync33(filePath));
44228
44429
  return;
@@ -44400,8 +44601,8 @@ __export(layout_exports, {
44400
44601
  default: () => layout_default,
44401
44602
  examples: () => examples9
44402
44603
  });
44403
- import { existsSync as existsSync48, readFileSync as readFileSync34 } from "fs";
44404
- import { dirname as dirname19, join as join53 } from "path";
44604
+ import { existsSync as existsSync49, readFileSync as readFileSync34 } from "fs";
44605
+ import { dirname as dirname19, join as join54 } from "path";
44405
44606
  import { fileURLToPath as fileURLToPath6 } from "url";
44406
44607
  async function getCompositionDuration2(page) {
44407
44608
  return page.evaluate(() => {
@@ -44547,11 +44748,11 @@ async function runLayoutAudit(projectDir, opts) {
44547
44748
  }
44548
44749
  function loadLayoutAuditScript() {
44549
44750
  const candidates = [
44550
- join53(__dirname2, "layout-audit.browser.js"),
44551
- join53(__dirname2, "commands", "layout-audit.browser.js")
44751
+ join54(__dirname2, "layout-audit.browser.js"),
44752
+ join54(__dirname2, "commands", "layout-audit.browser.js")
44552
44753
  ];
44553
44754
  for (const candidate of candidates) {
44554
- if (existsSync48(candidate)) return readFileSync34(candidate, "utf-8");
44755
+ if (existsSync49(candidate)) return readFileSync34(candidate, "utf-8");
44555
44756
  }
44556
44757
  throw new Error("Missing layout audit browser script");
44557
44758
  }
@@ -44760,11 +44961,11 @@ __export(info_exports, {
44760
44961
  examples: () => examples11
44761
44962
  });
44762
44963
  import { readFileSync as readFileSync35, readdirSync as readdirSync19, statSync as statSync19 } from "fs";
44763
- import { join as join54 } from "path";
44964
+ import { join as join55 } from "path";
44764
44965
  function totalSize(dir) {
44765
44966
  let total = 0;
44766
44967
  for (const entry of readdirSync19(dir, { withFileTypes: true })) {
44767
- const path2 = join54(dir, entry.name);
44968
+ const path2 = join55(dir, entry.name);
44768
44969
  if (entry.isDirectory()) {
44769
44970
  total += totalSize(path2);
44770
44971
  } else {
@@ -44855,7 +45056,7 @@ __export(compositions_exports, {
44855
45056
  parseCompositions: () => parseCompositions,
44856
45057
  parseSubComposition: () => parseSubComposition
44857
45058
  });
44858
- import { existsSync as existsSync49, readFileSync as readFileSync36 } from "fs";
45059
+ import { existsSync as existsSync50, readFileSync as readFileSync36 } from "fs";
44859
45060
  import { resolve as resolve32, dirname as dirname20 } from "path";
44860
45061
  function countRenderableDescendants(root) {
44861
45062
  return Array.from(root.querySelectorAll("*")).filter(
@@ -44889,7 +45090,7 @@ function parseCompositions(html, baseDir) {
44889
45090
  const compositionSrc = div.getAttribute("data-composition-src");
44890
45091
  if (compositionSrc) {
44891
45092
  const subPath = resolve32(baseDir, compositionSrc);
44892
- if (existsSync49(subPath)) {
45093
+ if (existsSync50(subPath)) {
44893
45094
  const subHtml = readFileSync36(subPath, "utf-8");
44894
45095
  const subInfo = parseSubComposition(subHtml, id, width, height);
44895
45096
  compositions.push({ ...subInfo, source: compositionSrc });
@@ -45031,8 +45232,8 @@ __export(benchmark_exports, {
45031
45232
  default: () => benchmark_default,
45032
45233
  examples: () => examples13
45033
45234
  });
45034
- import { existsSync as existsSync50, statSync as statSync20 } from "fs";
45035
- import { resolve as resolve33, join as join55 } from "path";
45235
+ import { existsSync as existsSync51, statSync as statSync20 } from "fs";
45236
+ import { resolve as resolve33, join as join56 } from "path";
45036
45237
  var examples13, FPS_30, FPS_60, DEFAULT_CONFIGS, benchmark_default;
45037
45238
  var init_benchmark = __esm({
45038
45239
  "src/commands/benchmark.ts"() {
@@ -45110,7 +45311,7 @@ var init_benchmark = __esm({
45110
45311
  s2?.start(`Benchmarking ${config.label}...`);
45111
45312
  for (let i2 = 0; i2 < runsPerConfig; i2++) {
45112
45313
  s2?.message(`${config.label} \u2014 run ${i2 + 1}/${runsPerConfig}`);
45113
- const outputPath = join55(
45314
+ const outputPath = join56(
45114
45315
  benchDir,
45115
45316
  `${config.label.replace(/[^a-zA-Z0-9]/g, "_")}_run${i2}.mp4`
45116
45317
  );
@@ -45124,7 +45325,7 @@ var init_benchmark = __esm({
45124
45325
  await producer.executeRenderJob(job, project.dir, outputPath);
45125
45326
  const elapsedMs = Date.now() - startTime;
45126
45327
  let fileSize = null;
45127
- if (existsSync50(outputPath)) {
45328
+ if (existsSync51(outputPath)) {
45128
45329
  const stat3 = statSync20(outputPath);
45129
45330
  fileSize = stat3.size;
45130
45331
  }
@@ -45214,6 +45415,34 @@ __export(browser_exports, {
45214
45415
  });
45215
45416
  async function runEnsure() {
45216
45417
  ge(c2.bold("hyperframes browser ensure"));
45418
+ if (isLinuxArm()) {
45419
+ const s3 = ft();
45420
+ s3.start("Linux ARM64 detected \u2014 looking for system Chromium...");
45421
+ const existing2 = await findBrowser();
45422
+ if (existing2) {
45423
+ s3.stop(c2.success("System Chromium found"));
45424
+ console.log();
45425
+ console.log(` ${c2.dim("Source:")} ${c2.bold(existing2.source)}`);
45426
+ console.log(` ${c2.dim("Path:")} ${c2.bold(existing2.executablePath)}`);
45427
+ console.log();
45428
+ ye(c2.success("Ready to render."));
45429
+ return;
45430
+ }
45431
+ s3.stop(c2.warn("No Chromium found \u2014 attempting auto-install via apt-get..."));
45432
+ console.log();
45433
+ try {
45434
+ const result2 = await ensureBrowser();
45435
+ console.log();
45436
+ console.log(` ${c2.dim("Source:")} ${c2.bold(result2.source)}`);
45437
+ console.log(` ${c2.dim("Path:")} ${c2.bold(result2.executablePath)}`);
45438
+ console.log();
45439
+ ye(c2.success("Chromium ready. You can now render on ARM64."));
45440
+ } catch (err) {
45441
+ R2.error(err instanceof Error ? err.message : String(err));
45442
+ ye(c2.warn("Manual setup required (see instructions above)."));
45443
+ }
45444
+ return;
45445
+ }
45217
45446
  const s2 = ft();
45218
45447
  s2.start("Looking for an existing browser...");
45219
45448
  const existing = await findBrowser();
@@ -45350,9 +45579,9 @@ __export(manager_exports3, {
45350
45579
  modelPath: () => modelPath,
45351
45580
  selectProviders: () => selectProviders
45352
45581
  });
45353
- import { existsSync as existsSync51, mkdirSync as mkdirSync28 } from "fs";
45582
+ import { existsSync as existsSync52, mkdirSync as mkdirSync28 } from "fs";
45354
45583
  import { homedir as homedir9, platform as platform5, arch } from "os";
45355
- import { join as join56 } from "path";
45584
+ import { join as join57 } from "path";
45356
45585
  function isDevice(value) {
45357
45586
  return typeof value === "string" && DEVICES.includes(value);
45358
45587
  }
@@ -45392,15 +45621,15 @@ function listAvailableProviders() {
45392
45621
  return out;
45393
45622
  }
45394
45623
  function modelPath(model = DEFAULT_MODEL2) {
45395
- return join56(MODELS_DIR2, `${model}.onnx`);
45624
+ return join57(MODELS_DIR2, `${model}.onnx`);
45396
45625
  }
45397
45626
  async function ensureModel2(model = DEFAULT_MODEL2, options) {
45398
45627
  const dest = modelPath(model);
45399
- if (existsSync51(dest)) return dest;
45628
+ if (existsSync52(dest)) return dest;
45400
45629
  mkdirSync28(MODELS_DIR2, { recursive: true });
45401
45630
  options?.onProgress?.(`Downloading ${model} weights (~168 MB)...`);
45402
45631
  await downloadFile(MODEL_URLS[model], dest);
45403
- if (!existsSync51(dest)) {
45632
+ if (!existsSync52(dest)) {
45404
45633
  throw new Error(`Model download failed: ${model}`);
45405
45634
  }
45406
45635
  return dest;
@@ -45410,7 +45639,7 @@ var init_manager3 = __esm({
45410
45639
  "src/background-removal/manager.ts"() {
45411
45640
  "use strict";
45412
45641
  init_download();
45413
- MODELS_DIR2 = join56(homedir9(), ".cache", "hyperframes", "background-removal", "models");
45642
+ MODELS_DIR2 = join57(homedir9(), ".cache", "hyperframes", "background-removal", "models");
45414
45643
  DEFAULT_MODEL2 = "u2net_human_seg";
45415
45644
  MODEL_URLS = {
45416
45645
  u2net_human_seg: "https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net_human_seg.onnx"
@@ -45882,12 +46111,12 @@ __export(remove_background_exports, {
45882
46111
  examples: () => examples15
45883
46112
  });
45884
46113
  import { resolve as resolve34 } from "path";
45885
- import { existsSync as existsSync52 } from "fs";
46114
+ import { existsSync as existsSync53 } from "fs";
45886
46115
  async function showInfo(json) {
45887
46116
  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));
45888
46117
  const providers = listAvailableProviders2();
45889
46118
  const auto = selectProviders2("auto");
45890
- const cached2 = existsSync52(modelPath2());
46119
+ const cached2 = existsSync53(modelPath2());
45891
46120
  if (json) {
45892
46121
  console.log(
45893
46122
  JSON.stringify({
@@ -46094,8 +46323,8 @@ __export(transcribe_exports2, {
46094
46323
  default: () => transcribe_default,
46095
46324
  examples: () => examples16
46096
46325
  });
46097
- import { existsSync as existsSync53, writeFileSync as writeFileSync22 } from "fs";
46098
- import { resolve as resolve35, join as join57, extname as extname10 } from "path";
46326
+ import { existsSync as existsSync54, writeFileSync as writeFileSync22 } from "fs";
46327
+ import { resolve as resolve35, join as join58, extname as extname10 } from "path";
46099
46328
  async function importTranscript(inputPath, dir, json) {
46100
46329
  const { loadTranscript: loadTranscript2, patchCaptionHtml: patchCaptionHtml2 } = await Promise.resolve().then(() => (init_normalize(), normalize_exports));
46101
46330
  const { words, format } = loadTranscript2(inputPath);
@@ -46103,7 +46332,7 @@ async function importTranscript(inputPath, dir, json) {
46103
46332
  console.error(c2.error("No words found in transcript."));
46104
46333
  process.exit(1);
46105
46334
  }
46106
- const outPath = join57(dir, "transcript.json");
46335
+ const outPath = join58(dir, "transcript.json");
46107
46336
  writeFileSync22(outPath, JSON.stringify(words, null, 2));
46108
46337
  patchCaptionHtml2(dir, words);
46109
46338
  if (json) {
@@ -46220,7 +46449,7 @@ var init_transcribe2 = __esm({
46220
46449
  },
46221
46450
  async run({ args }) {
46222
46451
  const inputPath = resolve35(args.input);
46223
- if (!existsSync53(inputPath)) {
46452
+ if (!existsSync54(inputPath)) {
46224
46453
  console.error(c2.error(`File not found: ${args.input}`));
46225
46454
  process.exit(1);
46226
46455
  }
@@ -46241,9 +46470,9 @@ var init_transcribe2 = __esm({
46241
46470
  });
46242
46471
 
46243
46472
  // src/tts/manager.ts
46244
- import { existsSync as existsSync54, mkdirSync as mkdirSync29 } from "fs";
46473
+ import { existsSync as existsSync55, mkdirSync as mkdirSync29 } from "fs";
46245
46474
  import { homedir as homedir10 } from "os";
46246
- import { join as join58 } from "path";
46475
+ import { join as join59 } from "path";
46247
46476
  function inferLangFromVoiceId(voiceId) {
46248
46477
  const first = voiceId.charAt(0).toLowerCase();
46249
46478
  return VOICE_PREFIX_LANG[first] ?? "en-us";
@@ -46252,8 +46481,8 @@ function isSupportedLang(value) {
46252
46481
  return SUPPORTED_LANGS.includes(value);
46253
46482
  }
46254
46483
  async function ensureModel3(model = DEFAULT_MODEL3, options) {
46255
- const modelPath2 = join58(MODELS_DIR3, `${model}.onnx`);
46256
- if (existsSync54(modelPath2)) return modelPath2;
46484
+ const modelPath2 = join59(MODELS_DIR3, `${model}.onnx`);
46485
+ if (existsSync55(modelPath2)) return modelPath2;
46257
46486
  const url = MODEL_URLS2[model];
46258
46487
  if (!url) {
46259
46488
  throw new Error(
@@ -46263,18 +46492,18 @@ async function ensureModel3(model = DEFAULT_MODEL3, options) {
46263
46492
  mkdirSync29(MODELS_DIR3, { recursive: true });
46264
46493
  options?.onProgress?.(`Downloading TTS model ${model} (~311 MB)...`);
46265
46494
  await downloadFile(url, modelPath2);
46266
- if (!existsSync54(modelPath2)) {
46495
+ if (!existsSync55(modelPath2)) {
46267
46496
  throw new Error(`Model download failed: ${model}`);
46268
46497
  }
46269
46498
  return modelPath2;
46270
46499
  }
46271
46500
  async function ensureVoices(options) {
46272
- const voicesPath = join58(VOICES_DIR, "voices-v1.0.bin");
46273
- if (existsSync54(voicesPath)) return voicesPath;
46501
+ const voicesPath = join59(VOICES_DIR, "voices-v1.0.bin");
46502
+ if (existsSync55(voicesPath)) return voicesPath;
46274
46503
  mkdirSync29(VOICES_DIR, { recursive: true });
46275
46504
  options?.onProgress?.("Downloading voice data (~27 MB)...");
46276
46505
  await downloadFile(VOICES_URL, voicesPath);
46277
- if (!existsSync54(voicesPath)) {
46506
+ if (!existsSync55(voicesPath)) {
46278
46507
  throw new Error("Voice data download failed");
46279
46508
  }
46280
46509
  return voicesPath;
@@ -46284,9 +46513,9 @@ var init_manager4 = __esm({
46284
46513
  "src/tts/manager.ts"() {
46285
46514
  "use strict";
46286
46515
  init_download();
46287
- CACHE_DIR3 = join58(homedir10(), ".cache", "hyperframes", "tts");
46288
- MODELS_DIR3 = join58(CACHE_DIR3, "models");
46289
- VOICES_DIR = join58(CACHE_DIR3, "voices");
46516
+ CACHE_DIR3 = join59(homedir10(), ".cache", "hyperframes", "tts");
46517
+ MODELS_DIR3 = join59(CACHE_DIR3, "models");
46518
+ VOICES_DIR = join59(CACHE_DIR3, "voices");
46290
46519
  DEFAULT_MODEL3 = "kokoro-v1.0";
46291
46520
  MODEL_URLS2 = {
46292
46521
  "kokoro-v1.0": "https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0/kokoro-v1.0.onnx"
@@ -46347,8 +46576,8 @@ __export(synthesize_exports, {
46347
46576
  synthesize: () => synthesize
46348
46577
  });
46349
46578
  import { execFileSync as execFileSync7 } from "child_process";
46350
- import { existsSync as existsSync55, writeFileSync as writeFileSync23, mkdirSync as mkdirSync30, readdirSync as readdirSync20, unlinkSync as unlinkSync6 } from "fs";
46351
- import { join as join59, dirname as dirname21, basename as basename11 } from "path";
46579
+ import { existsSync as existsSync56, writeFileSync as writeFileSync23, mkdirSync as mkdirSync30, readdirSync as readdirSync20, unlinkSync as unlinkSync6 } from "fs";
46580
+ import { join as join60, dirname as dirname21, basename as basename11 } from "path";
46352
46581
  import { homedir as homedir11 } from "os";
46353
46582
  function findPython() {
46354
46583
  for (const name of ["python3", "python"]) {
@@ -46384,7 +46613,7 @@ function hasPythonPackage(python, pkg) {
46384
46613
  }
46385
46614
  }
46386
46615
  function ensureSynthScript() {
46387
- if (!existsSync55(SCRIPT_PATH)) {
46616
+ if (!existsSync56(SCRIPT_PATH)) {
46388
46617
  mkdirSync30(SCRIPT_DIR, { recursive: true });
46389
46618
  writeFileSync23(SCRIPT_PATH, SYNTH_SCRIPT);
46390
46619
  const currentName = basename11(SCRIPT_PATH);
@@ -46392,7 +46621,7 @@ function ensureSynthScript() {
46392
46621
  for (const entry of readdirSync20(SCRIPT_DIR)) {
46393
46622
  if (entry !== currentName && /^synth(-v\d+)?\.py$/.test(entry)) {
46394
46623
  try {
46395
- unlinkSync6(join59(SCRIPT_DIR, entry));
46624
+ unlinkSync6(join60(SCRIPT_DIR, entry));
46396
46625
  } catch {
46397
46626
  }
46398
46627
  }
@@ -46438,7 +46667,7 @@ async function synthesize(text, outputPath, options) {
46438
46667
  stdio: ["pipe", "pipe", "pipe"]
46439
46668
  }
46440
46669
  );
46441
- if (!existsSync55(outputPath)) {
46670
+ if (!existsSync56(outputPath)) {
46442
46671
  throw new Error("Synthesis completed but no output file was created");
46443
46672
  }
46444
46673
  const lines = stdout2.trim().split("\n");
@@ -46451,7 +46680,7 @@ async function synthesize(text, outputPath, options) {
46451
46680
  langApplied: result.langApplied
46452
46681
  };
46453
46682
  } catch (err) {
46454
- if (err instanceof SyntaxError && existsSync55(outputPath)) {
46683
+ if (err instanceof SyntaxError && existsSync56(outputPath)) {
46455
46684
  throw new Error(
46456
46685
  "Speech was generated but metadata could not be read. Check the output file manually."
46457
46686
  );
@@ -46502,8 +46731,8 @@ print(json.dumps({
46502
46731
  "langApplied": bool(lang and supports_lang),
46503
46732
  }))
46504
46733
  `;
46505
- SCRIPT_DIR = join59(homedir11(), ".cache", "hyperframes", "tts");
46506
- SCRIPT_PATH = join59(SCRIPT_DIR, "synth-v2.py");
46734
+ SCRIPT_DIR = join60(homedir11(), ".cache", "hyperframes", "tts");
46735
+ SCRIPT_PATH = join60(SCRIPT_DIR, "synth-v2.py");
46507
46736
  }
46508
46737
  });
46509
46738
 
@@ -46513,7 +46742,7 @@ __export(tts_exports, {
46513
46742
  default: () => tts_default,
46514
46743
  examples: () => examples17
46515
46744
  });
46516
- import { existsSync as existsSync56, readFileSync as readFileSync37 } from "fs";
46745
+ import { existsSync as existsSync57, readFileSync as readFileSync37 } from "fs";
46517
46746
  import { resolve as resolve36, extname as extname11 } from "path";
46518
46747
  function listVoices(json) {
46519
46748
  const rows = BUNDLED_VOICES.map((v2) => ({ ...v2, defaultLang: inferLangFromVoiceId(v2.id) }));
@@ -46623,7 +46852,7 @@ var init_tts = __esm({
46623
46852
  }
46624
46853
  let text;
46625
46854
  const maybeFile = resolve36(args.input);
46626
- if (existsSync56(maybeFile) && extname11(maybeFile).toLowerCase() === ".txt") {
46855
+ if (existsSync57(maybeFile) && extname11(maybeFile).toLowerCase() === ".txt") {
46627
46856
  text = readFileSync37(maybeFile, "utf-8").trim();
46628
46857
  if (!text) {
46629
46858
  console.error(c2.error("File is empty."));
@@ -46716,15 +46945,15 @@ __export(docs_exports, {
46716
46945
  default: () => docs_default,
46717
46946
  examples: () => examples18
46718
46947
  });
46719
- import { readFileSync as readFileSync38, existsSync as existsSync57 } from "fs";
46720
- import { resolve as resolve37, dirname as dirname22, join as join60 } from "path";
46948
+ import { readFileSync as readFileSync38, existsSync as existsSync58 } from "fs";
46949
+ import { resolve as resolve37, dirname as dirname22, join as join61 } from "path";
46721
46950
  import { fileURLToPath as fileURLToPath7 } from "url";
46722
46951
  function docsDir() {
46723
46952
  const thisFile = fileURLToPath7(import.meta.url);
46724
46953
  const dir = dirname22(thisFile);
46725
46954
  const devPath = resolve37(dir, "..", "docs");
46726
46955
  const builtPath = resolve37(dir, "docs");
46727
- return existsSync57(devPath) ? devPath : builtPath;
46956
+ return existsSync58(devPath) ? devPath : builtPath;
46728
46957
  }
46729
46958
  function formatInlineCode(line) {
46730
46959
  return line.replace(/`([^`]+)`/g, (_match, code) => c2.accent(code));
@@ -46821,8 +47050,8 @@ var init_docs = __esm({
46821
47050
  }
46822
47051
  process.exit(1);
46823
47052
  }
46824
- const filePath = join60(docsDir(), entry.file);
46825
- if (!existsSync57(filePath)) {
47053
+ const filePath = join61(docsDir(), entry.file);
47054
+ if (!existsSync58(filePath)) {
46826
47055
  console.error(c2.error(`Doc file not found: ${filePath}`));
46827
47056
  process.exit(1);
46828
47057
  }
@@ -47310,8 +47539,8 @@ __export(validate_exports, {
47310
47539
  default: () => validate_default,
47311
47540
  shouldIgnoreRequestFailure: () => shouldIgnoreRequestFailure
47312
47541
  });
47313
- import { existsSync as existsSync58, readFileSync as readFileSync39 } from "fs";
47314
- import { join as join61, dirname as dirname23 } from "path";
47542
+ import { existsSync as existsSync59, readFileSync as readFileSync39 } from "fs";
47543
+ import { join as join62, dirname as dirname23 } from "path";
47315
47544
  import { fileURLToPath as fileURLToPath8 } from "url";
47316
47545
  function shouldIgnoreRequestFailure(url, errorText) {
47317
47546
  if (errorText !== "net::ERR_ABORTED") return false;
@@ -47363,11 +47592,11 @@ async function runContrastAudit(page) {
47363
47592
  }
47364
47593
  function loadContrastAuditScript() {
47365
47594
  const candidates = [
47366
- join61(__dirname3, "contrast-audit.browser.js"),
47367
- join61(__dirname3, "commands", "contrast-audit.browser.js")
47595
+ join62(__dirname3, "contrast-audit.browser.js"),
47596
+ join62(__dirname3, "commands", "contrast-audit.browser.js")
47368
47597
  ];
47369
47598
  for (const candidate of candidates) {
47370
- if (existsSync58(candidate)) return readFileSync39(candidate, "utf-8");
47599
+ if (existsSync59(candidate)) return readFileSync39(candidate, "utf-8");
47371
47600
  }
47372
47601
  throw new Error("Missing contrast audit browser script");
47373
47602
  }
@@ -47384,8 +47613,8 @@ async function validateInBrowser(projectDir, opts) {
47384
47613
  res.end(html);
47385
47614
  return;
47386
47615
  }
47387
- const filePath = join61(projectDir, decodeURIComponent(url));
47388
- if (existsSync58(filePath)) {
47616
+ const filePath = join62(projectDir, decodeURIComponent(url));
47617
+ if (existsSync59(filePath)) {
47389
47618
  res.writeHead(200, { "Content-Type": getMimeType2(filePath) });
47390
47619
  res.end(readFileSync39(filePath));
47391
47620
  return;
@@ -47586,12 +47815,12 @@ __export(snapshot_exports, {
47586
47815
  examples: () => examples22
47587
47816
  });
47588
47817
  import { spawn as spawn13 } from "child_process";
47589
- import { existsSync as existsSync59, mkdtempSync as mkdtempSync3, readFileSync as readFileSync40, mkdirSync as mkdirSync31, rmSync as rmSync11 } from "fs";
47818
+ import { existsSync as existsSync60, mkdtempSync as mkdtempSync3, readFileSync as readFileSync40, mkdirSync as mkdirSync31, rmSync as rmSync12 } from "fs";
47590
47819
  import { tmpdir as tmpdir5 } from "os";
47591
- import { resolve as resolve38, join as join62, relative as relative7, isAbsolute as isAbsolute9 } from "path";
47820
+ import { resolve as resolve38, join as join63, relative as relative7, isAbsolute as isAbsolute9 } from "path";
47592
47821
  async function extractVideoFrameToBuffer(videoPath, timeSeconds, useVp9AlphaDecoder = false) {
47593
- const tmp = mkdtempSync3(join62(tmpdir5(), "hf-snapshot-frame-"));
47594
- const outPath = join62(tmp, "frame.png");
47822
+ const tmp = mkdtempSync3(join63(tmpdir5(), "hf-snapshot-frame-"));
47823
+ const outPath = join63(tmp, "frame.png");
47595
47824
  try {
47596
47825
  const result = await new Promise(
47597
47826
  (resolvePromise) => {
@@ -47631,11 +47860,11 @@ async function extractVideoFrameToBuffer(videoPath, timeSeconds, useVp9AlphaDeco
47631
47860
  });
47632
47861
  }
47633
47862
  );
47634
- if (result.code !== 0 || result.timedOut || !existsSync59(outPath)) return null;
47863
+ if (result.code !== 0 || result.timedOut || !existsSync60(outPath)) return null;
47635
47864
  return readFileSync40(outPath);
47636
47865
  } finally {
47637
47866
  try {
47638
- rmSync11(tmp, { recursive: true, force: true });
47867
+ rmSync12(tmp, { recursive: true, force: true });
47639
47868
  } catch {
47640
47869
  }
47641
47870
  }
@@ -47704,7 +47933,7 @@ async function captureSnapshots(projectDir, opts) {
47704
47933
  return [];
47705
47934
  }
47706
47935
  const positions = opts.at?.length ? opts.at : numFrames === 1 ? [duration / 2] : Array.from({ length: numFrames }, (_, i2) => i2 / (numFrames - 1) * duration);
47707
- const snapshotDir = join62(projectDir, "snapshots");
47936
+ const snapshotDir = join63(projectDir, "snapshots");
47708
47937
  mkdirSync31(snapshotDir, { recursive: true });
47709
47938
  let injectVideoFramesBatch2 = null;
47710
47939
  let syncVideoFrameVisibility2 = null;
@@ -47779,7 +48008,7 @@ async function captureSnapshots(projectDir, opts) {
47779
48008
  const decodedPath = decodeURIComponent(url.pathname).replace(/^\//, "");
47780
48009
  const candidate = resolve38(projectDir, decodedPath);
47781
48010
  const rel = relative7(projectDir, candidate);
47782
- if (!rel.startsWith("..") && !isAbsolute9(rel) && existsSync59(candidate)) {
48011
+ if (!rel.startsWith("..") && !isAbsolute9(rel) && existsSync60(candidate)) {
47783
48012
  filePath = candidate;
47784
48013
  }
47785
48014
  } catch {
@@ -47809,7 +48038,7 @@ async function captureSnapshots(projectDir, opts) {
47809
48038
  }
47810
48039
  const timeLabel = opts.at?.length ? `${time.toFixed(1)}s` : `${Math.round(time / duration * 100)}pct`;
47811
48040
  const filename = `frame-${String(i2).padStart(2, "0")}-at-${timeLabel}.png`;
47812
- const framePath = join62(snapshotDir, filename);
48041
+ const framePath = join63(snapshotDir, filename);
47813
48042
  await page.screenshot({ path: framePath, type: "png" });
47814
48043
  savedPaths.push(`snapshots/${filename}`);
47815
48044
  }
@@ -47895,13 +48124,13 @@ ${c2.error("\u2717")} Snapshot failed: ${msg}`);
47895
48124
 
47896
48125
  // src/capture/assetDownloader.ts
47897
48126
  import { writeFileSync as writeFileSync24, mkdirSync as mkdirSync32 } from "fs";
47898
- import { join as join63, extname as extname12 } from "path";
48127
+ import { join as join64, extname as extname12 } from "path";
47899
48128
  async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks) {
47900
- const assetsDir = join63(outputDir, "assets");
48129
+ const assetsDir = join64(outputDir, "assets");
47901
48130
  mkdirSync32(assetsDir, { recursive: true });
47902
48131
  const assets = [];
47903
48132
  const downloadedUrls = /* @__PURE__ */ new Set();
47904
- mkdirSync32(join63(outputDir, "assets", "svgs"), { recursive: true });
48133
+ mkdirSync32(join64(outputDir, "assets", "svgs"), { recursive: true });
47905
48134
  for (let i2 = 0; i2 < tokens.svgs.length && i2 < 30; i2++) {
47906
48135
  const svg = tokens.svgs[i2];
47907
48136
  if (!svg.outerHTML || svg.outerHTML.length < 50) continue;
@@ -47909,7 +48138,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
47909
48138
  const name = label2 ? slugify(label2) + ".svg" : svg.isLogo ? `logo-${i2}.svg` : `icon-${i2}.svg`;
47910
48139
  const localPath = `assets/svgs/${name}`;
47911
48140
  try {
47912
- writeFileSync24(join63(outputDir, localPath), svg.outerHTML, "utf-8");
48141
+ writeFileSync24(join64(outputDir, localPath), svg.outerHTML, "utf-8");
47913
48142
  assets.push({ url: "", localPath, type: "svg" });
47914
48143
  } catch {
47915
48144
  }
@@ -47922,7 +48151,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
47922
48151
  const localPath = `assets/${name}`;
47923
48152
  const buffer = await fetchBuffer(icon.href);
47924
48153
  if (buffer) {
47925
- writeFileSync24(join63(outputDir, localPath), buffer);
48154
+ writeFileSync24(join64(outputDir, localPath), buffer);
47926
48155
  assets.push({ url: icon.href, localPath, type: "favicon" });
47927
48156
  break;
47928
48157
  }
@@ -47979,7 +48208,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
47979
48208
  const slug = isMeaningful ? slugify(rawName) : `${prefix}-${imgIdx}`;
47980
48209
  const name = `${slug}${ext}`;
47981
48210
  const localPath = `assets/${name}`;
47982
- writeFileSync24(join63(outputDir, localPath), buffer);
48211
+ writeFileSync24(join64(outputDir, localPath), buffer);
47983
48212
  assets.push({ url, localPath, type: "image" });
47984
48213
  imgIdx++;
47985
48214
  } catch {
@@ -47992,7 +48221,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
47992
48221
  const localPath = `assets/og-image${ext}`;
47993
48222
  const buffer = await fetchBuffer(tokens.ogImage);
47994
48223
  if (buffer && buffer.length > 5e3) {
47995
- writeFileSync24(join63(outputDir, localPath), buffer);
48224
+ writeFileSync24(join64(outputDir, localPath), buffer);
47996
48225
  assets.push({ url: tokens.ogImage, localPath, type: "image" });
47997
48226
  }
47998
48227
  } catch {
@@ -48015,7 +48244,7 @@ function normalizeUrl(u) {
48015
48244
  }
48016
48245
  }
48017
48246
  async function downloadAndRewriteFonts(css, outputDir) {
48018
- const assetsDir = join63(outputDir, "assets", "fonts");
48247
+ const assetsDir = join64(outputDir, "assets", "fonts");
48019
48248
  mkdirSync32(assetsDir, { recursive: true });
48020
48249
  const fontUrlRegex = /url\(['"]?(https?:\/\/[^'")\s]+\.(?:woff2?|ttf|otf)[^'")\s]*?)['"]?\)/g;
48021
48250
  const fontUrls = /* @__PURE__ */ new Set();
@@ -48051,7 +48280,7 @@ async function downloadAndRewriteFonts(css, outputDir) {
48051
48280
  try {
48052
48281
  const urlObj = new URL(fontUrl);
48053
48282
  const filename = urlObj.pathname.split("/").pop() || `font-${count}.woff2`;
48054
- const localPath = join63(assetsDir, filename);
48283
+ const localPath = join64(assetsDir, filename);
48055
48284
  const relativePath = `assets/fonts/${filename}`;
48056
48285
  const buffer = await fetchBuffer(fontUrl);
48057
48286
  if (buffer) {
@@ -48849,7 +49078,7 @@ var init_animationCataloger = __esm({
48849
49078
 
48850
49079
  // src/capture/mediaCapture.ts
48851
49080
  import { mkdirSync as mkdirSync33, writeFileSync as writeFileSync25, readdirSync as readdirSync21, readFileSync as readFileSync41, statSync as statSync21 } from "fs";
48852
- import { join as join64 } from "path";
49081
+ import { join as join65 } from "path";
48853
49082
  async function saveLottieAnimations(discoveredLotties, lottieDir) {
48854
49083
  let savedCount = 0;
48855
49084
  const savedHashes = /* @__PURE__ */ new Set();
@@ -48882,7 +49111,7 @@ async function saveLottieAnimations(discoveredLotties, lottieDir) {
48882
49111
  const hash2 = buf.toString("base64").slice(0, 100);
48883
49112
  if (savedHashes.has(hash2)) continue;
48884
49113
  savedHashes.add(hash2);
48885
- writeFileSync25(join64(lottieDir, `animation-${savedCount}.lottie`), buf);
49114
+ writeFileSync25(join65(lottieDir, `animation-${savedCount}.lottie`), buf);
48886
49115
  savedCount++;
48887
49116
  continue;
48888
49117
  }
@@ -48900,7 +49129,7 @@ async function saveLottieAnimations(discoveredLotties, lottieDir) {
48900
49129
  } catch {
48901
49130
  continue;
48902
49131
  }
48903
- writeFileSync25(join64(lottieDir, `animation-${savedCount}.json`), jsonData, "utf-8");
49132
+ writeFileSync25(join65(lottieDir, `animation-${savedCount}.json`), jsonData, "utf-8");
48904
49133
  savedCount++;
48905
49134
  }
48906
49135
  } catch {
@@ -48910,22 +49139,22 @@ async function saveLottieAnimations(discoveredLotties, lottieDir) {
48910
49139
  }
48911
49140
  async function renderLottiePreviews(chromeBrowser, lottieDir, outputDir) {
48912
49141
  const manifest = [];
48913
- const previewDir = join64(lottieDir, "previews");
49142
+ const previewDir = join65(lottieDir, "previews");
48914
49143
  mkdirSync33(previewDir, { recursive: true });
48915
49144
  for (const file of readdirSync21(lottieDir)) {
48916
49145
  if (!file.endsWith(".json")) continue;
48917
49146
  try {
48918
- const raw = JSON.parse(readFileSync41(join64(lottieDir, file), "utf-8"));
49147
+ const raw = JSON.parse(readFileSync41(join65(lottieDir, file), "utf-8"));
48919
49148
  const fr = raw.fr || 30;
48920
49149
  const dur = ((raw.op || 0) - (raw.ip || 0)) / fr;
48921
49150
  const previewName = file.replace(".json", "-preview.png");
48922
- const fileSize = statSync21(join64(lottieDir, file)).size;
49151
+ const fileSize = statSync21(join65(lottieDir, file)).size;
48923
49152
  if (fileSize > 2e6) continue;
48924
49153
  let previewPage;
48925
49154
  try {
48926
49155
  previewPage = await chromeBrowser.newPage();
48927
49156
  await previewPage.setViewport({ width: 400, height: 400 });
48928
- const animData = JSON.parse(readFileSync41(join64(lottieDir, file), "utf-8"));
49157
+ const animData = JSON.parse(readFileSync41(join65(lottieDir, file), "utf-8"));
48929
49158
  const midFrame = Math.floor(((raw.op || 0) - (raw.ip || 0)) * 0.3);
48930
49159
  await previewPage.setContent(
48931
49160
  `<!DOCTYPE html>
@@ -48955,7 +49184,7 @@ async function renderLottiePreviews(chromeBrowser, lottieDir, outputDir) {
48955
49184
  await previewPage.waitForFunction(() => window.__READY === true, { timeout: 5e3 }).catch(() => {
48956
49185
  });
48957
49186
  await previewPage.screenshot({
48958
- path: join64(previewDir, previewName),
49187
+ path: join65(previewDir, previewName),
48959
49188
  type: "png",
48960
49189
  omitBackground: true
48961
49190
  });
@@ -48979,7 +49208,7 @@ async function renderLottiePreviews(chromeBrowser, lottieDir, outputDir) {
48979
49208
  }
48980
49209
  if (manifest.length > 0) {
48981
49210
  writeFileSync25(
48982
- join64(outputDir, "extracted", "lottie-manifest.json"),
49211
+ join65(outputDir, "extracted", "lottie-manifest.json"),
48983
49212
  JSON.stringify(manifest, null, 2),
48984
49213
  "utf-8"
48985
49214
  );
@@ -49041,15 +49270,15 @@ async function captureVideoManifest(page, outputDir, progress) {
49041
49270
  return true;
49042
49271
  });
49043
49272
  if (uniqueVideos.length > 0) {
49044
- const videoManifestDir = join64(outputDir, "assets", "videos");
49273
+ const videoManifestDir = join65(outputDir, "assets", "videos");
49045
49274
  mkdirSync33(videoManifestDir, { recursive: true });
49046
- const previewDir = join64(videoManifestDir, "previews");
49275
+ const previewDir = join65(videoManifestDir, "previews");
49047
49276
  mkdirSync33(previewDir, { recursive: true });
49048
49277
  const videoManifest = [];
49049
49278
  for (let vi = 0; vi < uniqueVideos.length && vi < 20; vi++) {
49050
49279
  const v2 = uniqueVideos[vi];
49051
49280
  const previewName = `video-${vi}-preview.png`;
49052
- const previewPath = join64(previewDir, previewName);
49281
+ const previewPath = join65(previewDir, previewName);
49053
49282
  try {
49054
49283
  await page.evaluate(`window.scrollTo(0, ${Math.max(0, v2.top - 100)})`);
49055
49284
  await new Promise((r2) => setTimeout(r2, 300));
@@ -49088,7 +49317,7 @@ async function captureVideoManifest(page, outputDir, progress) {
49088
49317
  }
49089
49318
  if (videoManifest.length > 0) {
49090
49319
  writeFileSync25(
49091
- join64(outputDir, "extracted", "video-manifest.json"),
49320
+ join65(outputDir, "extracted", "video-manifest.json"),
49092
49321
  JSON.stringify(videoManifest, null, 2),
49093
49322
  "utf-8"
49094
49323
  );
@@ -89615,7 +89844,7 @@ ${underline2}`);
89615
89844
 
89616
89845
  // src/capture/contentExtractor.ts
89617
89846
  import { readdirSync as readdirSync22, statSync as statSync23, readFileSync as readFileSync42 } from "fs";
89618
- import { join as join65 } from "path";
89847
+ import { join as join66 } from "path";
89619
89848
  async function detectLibraries(page, capturedShaders) {
89620
89849
  let detectedLibraries = [];
89621
89850
  try {
@@ -89735,7 +89964,7 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
89735
89964
  try {
89736
89965
  const { GoogleGenAI: GoogleGenAI2 } = await Promise.resolve().then(() => (init_node4(), node_exports));
89737
89966
  const ai = new GoogleGenAI2({ apiKey: geminiKey });
89738
- const imageFiles = readdirSync22(join65(outputDir, "assets")).filter(
89967
+ const imageFiles = readdirSync22(join66(outputDir, "assets")).filter(
89739
89968
  (f3) => /\.(png|jpg|jpeg|webp|gif)$/i.test(f3)
89740
89969
  );
89741
89970
  const model = process.env.HYPERFRAMES_GEMINI_MODEL || "gemini-3.1-flash-lite-preview";
@@ -89744,7 +89973,7 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
89744
89973
  const batch = imageFiles.slice(i2, i2 + BATCH_SIZE);
89745
89974
  const results = await Promise.allSettled(
89746
89975
  batch.map(async (file) => {
89747
- const filePath = join65(outputDir, "assets", file);
89976
+ const filePath = join66(outputDir, "assets", file);
89748
89977
  const stat3 = statSync23(filePath);
89749
89978
  if (stat3.size > 4e6) return { file, caption: "" };
89750
89979
  const buffer = readFileSync42(filePath);
@@ -89793,11 +90022,11 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
89793
90022
  const uncaptionedLines = [];
89794
90023
  const svgLines = [];
89795
90024
  const fontLines = [];
89796
- const assetsPath = join65(outputDir, "assets");
90025
+ const assetsPath = join66(outputDir, "assets");
89797
90026
  try {
89798
90027
  for (const file of readdirSync22(assetsPath)) {
89799
90028
  if (file === "svgs" || file === "fonts" || file === "lottie" || file === "videos") continue;
89800
- const filePath = join65(assetsPath, file);
90029
+ const filePath = join66(assetsPath, file);
89801
90030
  const stat3 = statSync23(filePath);
89802
90031
  if (!stat3.isFile()) continue;
89803
90032
  const sizeKb = Math.round(stat3.size / 1024);
@@ -89826,7 +90055,7 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
89826
90055
  } catch {
89827
90056
  }
89828
90057
  try {
89829
- const svgsPath = join65(assetsPath, "svgs");
90058
+ const svgsPath = join66(assetsPath, "svgs");
89830
90059
  for (const file of readdirSync22(svgsPath)) {
89831
90060
  if (!file.endsWith(".svg")) continue;
89832
90061
  const svgMatch = tokens.svgs.find(
@@ -89841,7 +90070,7 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
89841
90070
  } catch {
89842
90071
  }
89843
90072
  try {
89844
- const fontsPath = join65(assetsPath, "fonts");
90073
+ const fontsPath = join66(assetsPath, "fonts");
89845
90074
  for (const file of readdirSync22(fontsPath)) {
89846
90075
  fontLines.push(`fonts/${file} \u2014 font file`);
89847
90076
  }
@@ -89861,12 +90090,12 @@ __export(agentPromptGenerator_exports, {
89861
90090
  generateAgentPrompt: () => generateAgentPrompt
89862
90091
  });
89863
90092
  import { writeFileSync as writeFileSync26 } from "fs";
89864
- import { join as join66 } from "path";
90093
+ import { join as join67 } from "path";
89865
90094
  function generateAgentPrompt(outputDir, url, tokens, _animations, hasScreenshot, hasLottie, hasShaders, _catalogedAssets, detectedLibraries) {
89866
90095
  const prompt = buildPrompt(url, tokens, hasScreenshot, hasLottie, hasShaders, detectedLibraries);
89867
- writeFileSync26(join66(outputDir, "AGENTS.md"), prompt, "utf-8");
89868
- writeFileSync26(join66(outputDir, "CLAUDE.md"), prompt, "utf-8");
89869
- writeFileSync26(join66(outputDir, ".cursorrules"), prompt, "utf-8");
90096
+ writeFileSync26(join67(outputDir, "AGENTS.md"), prompt, "utf-8");
90097
+ writeFileSync26(join67(outputDir, "CLAUDE.md"), prompt, "utf-8");
90098
+ writeFileSync26(join67(outputDir, ".cursorrules"), prompt, "utf-8");
89870
90099
  }
89871
90100
  function buildPrompt(url, tokens, hasScreenshot, hasLottie, hasShaders, detectedLibraries) {
89872
90101
  const title = tokens.title || new URL(url).hostname.replace(/^www\./, "");
@@ -89933,8 +90162,8 @@ var init_agentPromptGenerator = __esm({
89933
90162
  });
89934
90163
 
89935
90164
  // src/capture/scaffolding.ts
89936
- import { existsSync as existsSync60, writeFileSync as writeFileSync27, readFileSync as readFileSync43 } from "fs";
89937
- import { join as join67, resolve as resolve39 } from "path";
90165
+ import { existsSync as existsSync61, writeFileSync as writeFileSync27, readFileSync as readFileSync43 } from "fs";
90166
+ import { join as join68, resolve as resolve39 } from "path";
89938
90167
  function loadEnvFile(startDir) {
89939
90168
  try {
89940
90169
  let dir = resolve39(startDir);
@@ -89960,8 +90189,8 @@ function loadEnvFile(startDir) {
89960
90189
  }
89961
90190
  }
89962
90191
  async function generateProjectScaffold(outputDir, url, tokens, animationCatalog, hasScreenshots, hasLotties, hasShaders, catalogedAssets, progress, warnings, detectedLibraries) {
89963
- const metaPath = join67(outputDir, "meta.json");
89964
- if (!existsSync60(metaPath)) {
90192
+ const metaPath = join68(outputDir, "meta.json");
90193
+ if (!existsSync61(metaPath)) {
89965
90194
  const hostname = new URL(url).hostname.replace(/^www\./, "");
89966
90195
  writeFileSync27(
89967
90196
  metaPath,
@@ -89999,9 +90228,9 @@ __export(screenshotCapture_exports, {
89999
90228
  captureScrollScreenshots: () => captureScrollScreenshots
90000
90229
  });
90001
90230
  import { writeFileSync as writeFileSync28, mkdirSync as mkdirSync34 } from "fs";
90002
- import { join as join68 } from "path";
90231
+ import { join as join69 } from "path";
90003
90232
  async function captureScrollScreenshots(page, outputDir) {
90004
- const screenshotsDir = join68(outputDir, "screenshots");
90233
+ const screenshotsDir = join69(outputDir, "screenshots");
90005
90234
  mkdirSync34(screenshotsDir, { recursive: true });
90006
90235
  const MAX_SCREENSHOTS = 20;
90007
90236
  const filePaths = [];
@@ -90035,7 +90264,7 @@ async function captureScrollScreenshots(page, outputDir) {
90035
90264
  finalPositions[i2] / Math.max(1, scrollHeight - viewportHeight) * 100
90036
90265
  );
90037
90266
  const filename = `scroll-${String(Math.min(pct, 100)).padStart(3, "0")}.png`;
90038
- const filePath = join68(screenshotsDir, filename);
90267
+ const filePath = join69(screenshotsDir, filename);
90039
90268
  const buffer = await page.screenshot({ type: "png" });
90040
90269
  writeFileSync28(filePath, buffer);
90041
90270
  filePaths.push(`screenshots/${filename}`);
@@ -90348,8 +90577,8 @@ var capture_exports = {};
90348
90577
  __export(capture_exports, {
90349
90578
  captureWebsite: () => captureWebsite
90350
90579
  });
90351
- import { mkdirSync as mkdirSync35, writeFileSync as writeFileSync29, existsSync as existsSync61 } from "fs";
90352
- import { join as join69 } from "path";
90580
+ import { mkdirSync as mkdirSync35, writeFileSync as writeFileSync29, existsSync as existsSync62 } from "fs";
90581
+ import { join as join70 } from "path";
90353
90582
  async function captureWebsite(opts, onProgress) {
90354
90583
  const {
90355
90584
  url,
@@ -90366,9 +90595,9 @@ async function captureWebsite(opts, onProgress) {
90366
90595
  onProgress?.(stage, detail);
90367
90596
  };
90368
90597
  loadEnvFile(outputDir);
90369
- mkdirSync35(join69(outputDir, "extracted"), { recursive: true });
90370
- mkdirSync35(join69(outputDir, "screenshots"), { recursive: true });
90371
- mkdirSync35(join69(outputDir, "assets"), { recursive: true });
90598
+ mkdirSync35(join70(outputDir, "extracted"), { recursive: true });
90599
+ mkdirSync35(join70(outputDir, "screenshots"), { recursive: true });
90600
+ mkdirSync35(join70(outputDir, "assets"), { recursive: true });
90372
90601
  progress("browser", "Launching headless Chrome...");
90373
90602
  const { ensureBrowser: ensureBrowser2 } = await Promise.resolve().then(() => (init_manager2(), manager_exports2));
90374
90603
  const browser = await ensureBrowser2();
@@ -90524,7 +90753,7 @@ async function captureWebsite(opts, onProgress) {
90524
90753
  } catch {
90525
90754
  }
90526
90755
  if (discoveredLotties.length > 0) {
90527
- const lottieDir = join69(outputDir, "assets", "lottie");
90756
+ const lottieDir = join70(outputDir, "assets", "lottie");
90528
90757
  mkdirSync35(lottieDir, { recursive: true });
90529
90758
  const savedCount = await saveLottieAnimations(discoveredLotties, lottieDir);
90530
90759
  if (savedCount > 0) {
@@ -90544,7 +90773,7 @@ async function captureWebsite(opts, onProgress) {
90544
90773
  });
90545
90774
  capturedShaders = unique;
90546
90775
  writeFileSync29(
90547
- join69(outputDir, "extracted", "shaders.json"),
90776
+ join70(outputDir, "extracted", "shaders.json"),
90548
90777
  JSON.stringify(unique, null, 2),
90549
90778
  "utf-8"
90550
90779
  );
@@ -90555,7 +90784,7 @@ async function captureWebsite(opts, onProgress) {
90555
90784
  progress("tokens", "Extracting design tokens...");
90556
90785
  const tokens = await extractTokens(page1);
90557
90786
  writeFileSync29(
90558
- join69(outputDir, "extracted", "tokens.json"),
90787
+ join70(outputDir, "extracted", "tokens.json"),
90559
90788
  JSON.stringify(tokens, null, 2),
90560
90789
  "utf-8"
90561
90790
  );
@@ -90629,7 +90858,7 @@ async function captureWebsite(opts, onProgress) {
90629
90858
  representativeAnimations: representativeAnims
90630
90859
  };
90631
90860
  writeFileSync29(
90632
- join69(outputDir, "extracted", "animations.json"),
90861
+ join70(outputDir, "extracted", "animations.json"),
90633
90862
  JSON.stringify(leanCatalog, null, 2),
90634
90863
  "utf-8"
90635
90864
  );
@@ -90640,18 +90869,18 @@ async function captureWebsite(opts, onProgress) {
90640
90869
  assets = await downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks);
90641
90870
  }
90642
90871
  if (visibleTextContent) {
90643
- writeFileSync29(join69(outputDir, "extracted", "visible-text.txt"), visibleTextContent, "utf-8");
90872
+ writeFileSync29(join70(outputDir, "extracted", "visible-text.txt"), visibleTextContent, "utf-8");
90644
90873
  }
90645
90874
  if (catalogedAssets.length > 0) {
90646
90875
  writeFileSync29(
90647
- join69(outputDir, "extracted", "assets-catalog.json"),
90876
+ join70(outputDir, "extracted", "assets-catalog.json"),
90648
90877
  JSON.stringify(catalogedAssets, null, 2),
90649
90878
  "utf-8"
90650
90879
  );
90651
90880
  }
90652
90881
  if (detectedLibraries.length > 0) {
90653
90882
  writeFileSync29(
90654
- join69(outputDir, "extracted", "detected-libraries.json"),
90883
+ join70(outputDir, "extracted", "detected-libraries.json"),
90655
90884
  JSON.stringify(detectedLibraries, null, 2),
90656
90885
  "utf-8"
90657
90886
  );
@@ -90662,7 +90891,7 @@ async function captureWebsite(opts, onProgress) {
90662
90891
  const lines = generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCaptions);
90663
90892
  if (lines.length > 0) {
90664
90893
  writeFileSync29(
90665
- join69(outputDir, "extracted", "asset-descriptions.md"),
90894
+ join70(outputDir, "extracted", "asset-descriptions.md"),
90666
90895
  "# Asset Descriptions\n\nOne line per file. Read this instead of opening every image individually.\n\n" + lines.map((l) => "- " + l).join("\n") + "\n",
90667
90896
  "utf-8"
90668
90897
  );
@@ -90678,7 +90907,7 @@ async function captureWebsite(opts, onProgress) {
90678
90907
  animationCatalog,
90679
90908
  screenshots.length > 0,
90680
90909
  discoveredLotties.length > 0,
90681
- existsSync61(join69(outputDir, "extracted", "shaders.json")),
90910
+ existsSync62(join70(outputDir, "extracted", "shaders.json")),
90682
90911
  catalogedAssets,
90683
90912
  progress,
90684
90913
  warnings,
@@ -91027,7 +91256,7 @@ __export(autoUpdate_exports, {
91027
91256
  import { spawn as spawn14 } from "child_process";
91028
91257
  import { appendFileSync as appendFileSync2, mkdirSync as mkdirSync36, openSync as openSync2 } from "fs";
91029
91258
  import { homedir as homedir12 } from "os";
91030
- import { join as join70 } from "path";
91259
+ import { join as join71 } from "path";
91031
91260
  import { compareVersions as compareVersions2 } from "compare-versions";
91032
91261
  function isAutoInstallDisabled() {
91033
91262
  if (isDevMode()) return true;
@@ -91050,7 +91279,7 @@ function log(line) {
91050
91279
  }
91051
91280
  function launchDetachedInstall(installCommand, version) {
91052
91281
  mkdirSync36(CONFIG_DIR2, { recursive: true, mode: 448 });
91053
- const configFile = join70(CONFIG_DIR2, "config.json");
91282
+ const configFile = join71(CONFIG_DIR2, "config.json");
91054
91283
  const nodeScript = `
91055
91284
  const { exec } = require("node:child_process");
91056
91285
  const { readFileSync, renameSync, writeFileSync } = require("node:fs");
@@ -91169,8 +91398,8 @@ var init_autoUpdate = __esm({
91169
91398
  init_config();
91170
91399
  init_env();
91171
91400
  init_installerDetection();
91172
- CONFIG_DIR2 = join70(homedir12(), ".hyperframes");
91173
- LOG_FILE = join70(CONFIG_DIR2, "auto-update.log");
91401
+ CONFIG_DIR2 = join71(homedir12(), ".hyperframes");
91402
+ LOG_FILE = join71(CONFIG_DIR2, "auto-update.log");
91174
91403
  PENDING_TIMEOUT_MS = 10 * 60 * 1e3;
91175
91404
  }
91176
91405
  });